-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add extended cubed-sphere dual halo with a correct alpha-beta projection. #90
Add extended cubed-sphere dual halo with a correct alpha-beta projection. #90
Conversation
Codecov Report
@@ Coverage Diff @@
## develop #90 +/- ##
===========================================
- Coverage 77.62% 77.08% -0.55%
===========================================
Files 756 749 -7
Lines 51176 44935 -6241
===========================================
- Hits 39727 34637 -5090
+ Misses 11449 10298 -1151
Continue to review full report at Codecov.
|
Thanks @odlomax I will have look very soon |
@wdeconinck, after our chat the other day, I removed I also learned (the hard way) that |
Hi @wdeconinck , I can't make sense of these linker errors when I try and build without Eigen:
Is it anything you've come across before? |
It's also worth mentioning that |
My bad. Fixed it! |
This is PRs 86 and 87 from JCSCA-internal, merged into one. The functionality added is as follows:
PR 86
This PR add functionality to the dual mesh halo. Now, the halo size can be set to any value < N-1, where N is the grid-size of a cubed sphere tile. This allows arbitrary-sized stencil operations to work on the cubed-sphere dual mesh.
An example of a cubed sphere dual mesh partition (8 PEs, default partitioner) with a halo of 3 is shown below.
xy projection of an N48 partition with a halo of 3.
xyz projection of an N48 partition with a halo of 3.
I've updated several of the existing cubed sphere dual mesh tests to use larger halo sizes.
PR 87
This PR predominantly adds an
(x, y)
to(alpha, beta)
projection for tilet
. Here,(alpha, beta)
is defined strictly as the angular coordinates described by Ronchi et al., (1996).In practice, the transform is a simple shift and rotate for
xy
coordinates internal to tilet
. A non-linear stretch is applied for external points (i.e. haloxy
coordinates).The following example considers tile
t=0
of the LFRic cubed sphere dual mesh, withhalo = 3
. The first image shows thexy
projection. The second image gives the(alpha, beta)
projection.This required changes to several classes, summarised as follows:
tileCenter
andtileJacobian
which return thexy
centre andd_xy/d_alphabeta
Jacobian for each tile.util
namespace.Tiles
methods. This minor refactoring therefore serves as a test for the changes.CubedSphereProjectionBase
rank <= 3
constraint. Not related to projection, but it was an easy fix.This transform is currently only implemented for the equiangular cubedsphere projection. It is also likely that I've introduced some unnecessary redundancy to the
CubedSphereProjectionBase
andTiles
classes. However, given that we intend to refactor the cubed sphere grid at some point, we'll eventually need to refactor these classes too.