Inertial modes in a rotating full sphere

226 views
Skip to first unread message

Stefano Maffei

unread,
Mar 28, 2023, 8:02:33 AM3/28/23
to Dedalus Users
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
3D_inertial_modes_sphere.py
3D_inertial_modes_shell.py

Geoffrey Vasil

unread,
Mar 28, 2023, 9:10:33 AM3/28/23
to dedalu...@googlegroups.com
Hi Stefano,

It seems you’ve bumped up against our development threshold. I.e., the Coriolis terms couple spherical harmonic degree. While we have theses kinds of couplings implemented in the spherical shell, alas they are not yet working in the full ball. 

We absolutely know *how* to do it. But it’s a lot more subtle on the details that the shell, hence doing that first. There’s a tentative plan to sort this all out sometime in the next few months. But, of course, predictions are hard; especially about the future. 

In the meantime, it is possible to time-step linear inertial waves in the full ball. In fact. It’s one of the very first test problems we did when developing the ball machinery. It’s laborious, but it’s possible to get quite a few mode at the same time. 

Sorry we can’t be of more help right away. 

Cheers,
Geoff 

--
You received this message because you are subscribed to the Google Groups "Dedalus Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dedalus-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dedalus-users/3c6275b0-b6fe-4754-bef0-7c7af0402214n%40googlegroups.com.
<3D_inertial_modes_sphere.py><3D_inertial_modes_shell.py>

Suprabha Mukhopadhyay

unread,
Nov 20, 2023, 5:59:28 AM11/20/23
to Dedalus Users
Hello,

Has this issue been solved? Can we somehow find the intertial modes of a full rotating sphere using dedalus?

Any leads are appreciated.
Best regards,
Suprabha

Daniel Lecoanet

unread,
Nov 22, 2023, 11:41:02 AM11/22/23
to Dedalus Users
Hi,

No, we have not yet implemented this feature in Dedalus.

Daniel

Reply all
Reply to author
Forward
0 new messages