Skip to content

Add EquatorialLatitudeLongitudeGrid#5707

Draft
francispoulin wants to merge 7 commits into
mainfrom
fjp/equatorial-lat-lon-grid
Draft

Add EquatorialLatitudeLongitudeGrid#5707
francispoulin wants to merge 7 commits into
mainfrom
fjp/equatorial-lat-lon-grid

Conversation

@francispoulin

Copy link
Copy Markdown
Collaborator

Summary

This PR introduces an EquatorialLatitudeLongitudeGrid
for Oceananigans.

The coordinate singularities are relocated to the tropics
while preserving an orthogonal spherical coordinate system.

Current Status

Completed

  • Grid construction
  • Metric implementation
  • Tracer initialization
  • Uniform x-advection validation
  • Uniform y-advection validation
  • Combined x-y advection validation
  • Resolution studies (64², 128², 256²)

Remaining Work

Physics

  • Coriolis operator
  • Momentum equations
  • Pressure-gradient terms
  • Geostrophic balance

Validation

  • GPU validation
  • Solid-body rotation
  • Vortex transport tests

Validation Results

Grid N Peak
LLC 64 1.164
LLC 128 1.168
LLC 256 1.169
ELLC 64 0.997
ELLC 128 1.000
ELLC 256 1.000

Initial Profiles

initial_llc_ellc

Final Profiles

final_llc_ellc

Reviewer Feedback Requested

  • Any of your thoughts and/or suggestions are welcome.

@glwagner

Copy link
Copy Markdown
Member

We don't need a new grid for this. Instead, you can use RotatedLatitudeLongitudeGrid, which builds OrthogonalSphericalShellGrid. Importantly, OrthogonalSphericalShellGrid is a fully general grid, so there is fundamentally no need for any more than this.

@navidcy

navidcy commented Jun 20, 2026

Copy link
Copy Markdown
Member

You can get a grid with the singularities on the equator e.g. via

julia> using Oceananigans

julia> grid = RotatedLatitudeLongitudeGrid(; size = (24, 6, 5), latitude = (-90, 90), longitude=(0, 360), z=(-100, 0), north_pole = (0, 0))
24×6×5 OrthogonalSphericalShellGrid{Float64, Periodic, Bounded, Bounded} on CPU with 3×3×3 halo
├── centered at: North Pole, (λ, φ) = (116.565, 90.0)
├── longitude: Periodic  extent 360.0 degrees variably spaced with min(Δλ)=9.18485e-16, max(Δλ)=15.0
├── latitude:  Bounded  extent 180.0 degrees  variably spaced with min(Δφ)=30.0, max(Δφ)=30.0
└── z:         Bounded  z  [-100.0, 0.0]     regularly spaced with Δz=20.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants