Hi all,
I want to solve the eigenvalue problem for inertial modes in a rotating full sphere. The governing equation for this problem is simply:
dt(u) + cross(ez, u) + grad(p) - Ekman*div(grad_u) = 0
where ez is the vertical unit vector and u satisfies no-slip or stress-free bcs.
What I achieved
Modifying the example script evp_shell_rotating_convection I got a code that calcualtes inertial modes in a rotating shell. I attach it for reference. I am not yet sure if the results are fully correct, but a few test calculations seem to give realistic output.
The full spphere
I tried either modifying the shell script or the ivp_ball_internally_heated_convection to obtain the same for a full sphere but I have been unsuccessfull in doing so. I attach an example of such script.
Currently the error I got is:
File ~/opt/anaconda3/envs/dedalus3/lib/python3.11/site-packages/spyder_kernels/py3compat.py:356 in compat_exec
exec(code, globals, locals)
File ~/Documents/Papers/2017_PG_convection/Dedalus/3D_inertial_modes_sphere.py:78
subproblem = solver.subproblems_by_group[(13, None, None)]
KeyError: (13, None, None)
which is not very informative. The error is triggered by the line:
subproblem = solver.subproblems_by_group[(13, None, None)]
which should simply isolate the m=13 problem and it seems to work in the shell case. What is wrong?
I am also not sure that the rest of the problem is set up properly. Namely the Coriolis force and the definition of ez, which is the following in my script:
ez = dist.VectorField(coords, bases=ball)
ez['g'][1] = -np.sin(theta)
ez['g'][2] = np.cos(theta)
This does not produce an explicit error, but in the shell case ez is defined via shell.meridional_basis which is not an attribute that exists in the BallBasis.
Thanks for the help
Stefano