Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
159 commits
Select commit Hold shift + click to select a range
3f1d8e3
Use accessor functions to get state variables
mwarusz Feb 10, 2026
df74703
Require valid time index in state getters
mwarusz Feb 12, 2026
82b0e7d
Require valid time index in tracer getters
mwarusz Feb 13, 2026
ae37c58
Update OceanState and Tracers documentation to reflect new getter API
Copilot Feb 13, 2026
95a4781
Refactor Tracer::getByIndex and Tracers::getByName
mwarusz Feb 12, 2026
015c2a4
Update Tracers dev docs
mwarusz Feb 20, 2026
91df52a
Fix whitespace
mwarusz Feb 20, 2026
b0d37f8
Fix incorrect $\rho_0$ multipliers up to (37)
xylar Dec 11, 2025
5037c73
More fixes to the momentum derivation
xylar Dec 11, 2025
32dfeaf
Clarify the horizontal gradient of Phi
xylar Dec 11, 2025
4d2feb2
Fix more in Layer Equations and Discrete Equations
xylar Dec 11, 2025
3a32261
Merge pull request #326 from xylar/omega/docs/fix-omega-v1-equations
xylar Feb 23, 2026
dbe9dcf
Exchange tracer halos at every RK stage
mwarusz Feb 9, 2026
4f7b6a9
Merge pull request #341 from mwarusz/omega/fix-time-level
mark-petersen Feb 25, 2026
59b1666
Cleanup branch starting with new commit.
overfelt Nov 9, 2025
aec0440
Rename flag used to trigger higher order advection.
overfelt Nov 18, 2025
9f07fd9
Rename flag used to trigger higher order advection.
overfelt Nov 18, 2025
fc80b1b
Rename flag used to trigger higher order advection.
overfelt Nov 18, 2025
b73ed2e
Rename flag used to trigger higher order advection.
overfelt Nov 18, 2025
2da7e1d
Clang format.
overfelt Nov 18, 2025
9bd0099
Clang format with newer version.
overfelt Nov 18, 2025
84caf50
Add documentation for the higher order horizontal flux calculation.
overfelt Dec 2, 2025
de4fcf1
Remove whitespace the linter disapproves of.
overfelt Dec 2, 2025
01659de
Fix off-by-one array size in unit test.
overfelt Dec 9, 2025
58781e7
Fix a couple of signed/unsigned int comparison compiler warnings.
overfelt Dec 9, 2025
24358e6
Fix Kokkos View host/device incompatibility errors.
overfelt Dec 9, 2025
530f89f
Fix up use of VCoord after rebase from develop.
overfelt Dec 9, 2025
1312bac
Clang format
overfelt Dec 9, 2025
f4081c2
Clang Format.
overfelt Jan 3, 2026
c9870a5
Fix compiler errors after merge from develop.
overfelt Jan 3, 2026
afe0652
Forgot to zero out tendecies before summing into values.
overfelt Jan 16, 2026
27517c9
Fix for parallel: NCellsOwned -> NCellsAll/
overfelt Jan 27, 2026
565206d
Fix conservation issue in high order advection
mwarusz Feb 10, 2026
ad8f892
Clang format.
overfelt Feb 19, 2026
a776bc0
Fix for unit test. Use actual earth radius: REarth.
overfelt Feb 20, 2026
8b39eb8
Fix setting of TracerHorzAdvTendencyEnable flag based on code review.
overfelt Feb 20, 2026
8f19d72
Clang format.
overfelt Feb 21, 2026
9c1830b
Change parameter name from TracerHorzAdvTendencyOrder to HorzTracerFl…
overfelt Feb 24, 2026
06fab60
Changing the variable names to PascalCase to follow Omega’s naming co…
overfelt Feb 25, 2026
6a361f2
Add ForceLowOrder option to high-order tracer advection class
mwarusz Feb 25, 2026
faba875
Use high-order tracer adv class in tendency terms test
mwarusz Feb 25, 2026
4b869b7
Only use high-order tracer adv in tendencies
mwarusz Feb 25, 2026
8f99187
Rip out old tracer advection
mwarusz Feb 25, 2026
f75d949
Rename: TracerHighOrderHorzAdv -> TracerHorzAdv
mwarusz Feb 25, 2026
595bca4
Move some options to the advection section
mwarusz Feb 25, 2026
a5bd1cf
Fix size of HighOrderFlxHorz
mwarusz Feb 25, 2026
39e88c7
Merge pull request #2 from mwarusz/mwarusz/omega/high-order-adv-for-j…
overfelt Feb 26, 2026
97d71f3
Merge pull request #354 from mwarusz/omega/tracer-halo-exchng
mark-petersen Feb 27, 2026
dc15698
Rewrite PGF throughout sections 9 and 10
xylar Dec 12, 2025
34de80f
Updates related to turbulence quantities
vanroekel Feb 25, 2026
95317c0
Merge pull request #316 from overfelt/overfelt/HigherOrderTendency_Cl…
sbrus89 Mar 9, 2026
348ec17
VertAdv module definition; creation, destruction, retrieval methods
brian-oneill Dec 27, 2025
9ddddce
Add optional per-team scratch space to parallelForOuter
brian-oneill Dec 27, 2025
a70b3af
Add computeVerticalVelocity
brian-oneill Dec 27, 2025
cfa28fd
Add computeThicknessVAdvTend
brian-oneill Dec 29, 2025
2671b0b
Add computeVelocityVAdvTend
brian-oneill Dec 29, 2025
fe72127
Add computeTracerVAdvTend dispatch function
brian-oneill Dec 29, 2025
554fffb
Add computeVerticalFluxes
brian-oneill Jan 1, 2026
a91a479
Add computeStdVAdvTend
brian-oneill Jan 1, 2026
2e47453
Add computeFCTVAdvTend
brian-oneill Jan 2, 2026
686640c
Add ProvThickness to auxvars (follow-up restructuring needed)
brian-oneill Jan 6, 2026
cc92f70
Add new config variables to default config
brian-oneill Jan 8, 2026
5587339
Add VertAdv unit tests
brian-oneill Jan 8, 2026
fd0ea9f
Init some previously missed pointers and add Field for ProvThickness
brian-oneill Jan 9, 2026
fd3fc35
Comments, bug fix, and add Fields for VertAdv arrays
brian-oneill Jan 9, 2026
17da3e4
Some bug fixes for running on GPU
brian-oneill Jan 9, 2026
becd4f2
Bug fixes: BottomDepth no longer in HorzMesh and typo fixes
brian-oneill Jan 10, 2026
0516858
Make host copies of VertAdv arrays
brian-oneill Jan 11, 2026
ece1a8c
Linting fix
brian-oneill Jan 11, 2026
e4d7484
Resize flux arrays in VertAdvTest
brian-oneill Feb 3, 2026
116f9d3
Rename config option from Enabled to Enable
brian-oneill Feb 5, 2026
6904333
Remove unnecessary header
brian-oneill Feb 5, 2026
c32fc97
Skip vertical tracer advection when not enabled
brian-oneill Feb 5, 2026
39b8783
Add TimeStep to AuxState for ProvThickness
brian-oneill Feb 10, 2026
e97befa
Remove commented out ssh calculation
brian-oneill Feb 11, 2026
1372e29
Add LayerThicknessAux.computeVarsOnCells to AuxState::computeAll
brian-oneill Feb 11, 2026
da4107d
Add VertAdv to Tendencies
brian-oneill Feb 11, 2026
16597a2
Disable VertAdv tends in TimeStepperTest
brian-oneill Feb 11, 2026
a8853d1
Add VertAdv to AuxState
brian-oneill Feb 11, 2026
d27bc79
Add computeVerticalVelocity to computeMomAux
brian-oneill Feb 11, 2026
7584bfb
Add VertAdv init and clear to OceanDriver methods
brian-oneill Feb 11, 2026
4828a49
Add computeThicknessVAdvTend to computeThicknessTendenciesOnly
brian-oneill Feb 11, 2026
005b96f
Add computeVelocityVAdvTend to computeVelocityTendenciesOnly
brian-oneill Feb 11, 2026
a92f9a6
Add computeTracerVAdvTend to computeTracerTendenciesOnly
brian-oneill Feb 11, 2026
36ec792
Make TimeStep nonoptional for computeTracerVAdvTend
brian-oneill Feb 12, 2026
6fa3aa0
Add VertAdv devGuide and userGuide
brian-oneill Feb 12, 2026
0a01a4c
Add early return to VertAdv methods when NVertLayers == 1
brian-oneill Feb 14, 2026
9461d88
Fix typos in comments and docs
brian-oneill Feb 19, 2026
578a35f
Update HorzMesh user doc
brian-oneill Feb 20, 2026
ad15ca6
Add sanity check for bottom depth
brian-oneill Feb 20, 2026
f9485b4
Fix linting fail
brian-oneill Feb 20, 2026
5c2be5e
Rename TracerTend to LocTracerTend in function call
brian-oneill Feb 20, 2026
9b49bf7
Remove commented-out line
brian-oneill Feb 24, 2026
5759e27
Rebase: remove TracerAux computeVarsOnEdge
brian-oneill Mar 10, 2026
520bdf8
Rebase: fix variable name passed to computeVelocityVAdvTend
brian-oneill Mar 10, 2026
b7fc515
Rebase: fix getLayerThickness usage
brian-oneill Mar 10, 2026
bd5b2fb
Fixes links and updates tracer SGS terms
vanroekel Mar 11, 2026
ee8edf2
Clarify the choice of reference density for compatibility with E3SM.
xylar Mar 11, 2026
4a3ee6a
Merge pull request #351 from xylar/omega/docs/fix-omega-v1-momentum-d…
xylar Mar 11, 2026
1815dba
Exchange halo for BottomDepth
brian-oneill Mar 11, 2026
09b2f44
Merge pull request #328 from brian-oneill/omega/add-vertical-advection
sbrus89 Mar 12, 2026
c870d36
Add centered pressure gradient implimentation
sbrus89 Dec 1, 2025
5806963
Udpate pressure gradient
sbrus89 Nov 4, 2025
eae3812
Add test driver
sbrus89 Nov 4, 2025
43dd27a
Add PressureGrad section to Default.yml
sbrus89 Nov 20, 2025
acaf474
Convert Pa to dbar in Teos10Eos functor
sbrus89 Dec 1, 2025
5197b96
Updates to PGradTest
sbrus89 Nov 20, 2025
177c917
Add tilt factor to PGradTest
sbrus89 Nov 21, 2025
582d618
Test for pressure gradient convergence in PGradTest
sbrus89 Nov 24, 2025
0127a95
Update interface product averaging
sbrus89 Nov 25, 2025
6f1b9df
Remove SpecVolInterface calculation
sbrus89 Dec 1, 2025
3dcad10
Increase number of refinements in convergence test loop
sbrus89 Dec 1, 2025
55c69de
Remove debug comments
sbrus89 Dec 1, 2025
19698f2
Run PGrad test in serial
sbrus89 Dec 1, 2025
9657476
Fix error calculation to exclude top and bottom levels
sbrus89 Dec 2, 2025
7bebc86
Convert pressure to Pa in EosTest
sbrus89 Dec 2, 2025
730be5b
Switch to hierarchical parallelism
sbrus89 Dec 2, 2025
75bea52
Fix bounds for bottom interface product
sbrus89 Dec 4, 2025
cb8ae86
Remove debug comments and cleanup
sbrus89 Dec 4, 2025
315e9aa
Clean up
sbrus89 Dec 5, 2025
11114f7
Fix for gradient in interface term
sbrus89 Dec 8, 2025
de7a550
Add Liebnez terms for geopotential gradient
sbrus89 Dec 15, 2025
98dcd61
Montgomery potential implementation
sbrus89 Dec 15, 2025
757298e
Work toward outputing PGrad tendencies (need to fix unit tests)
sbrus89 Dec 23, 2025
73966d0
Fix Driver and Timestepper ctests
sbrus89 Jan 6, 2026
eb07a55
Fix Tendencies ctest
sbrus89 Jan 8, 2026
7b4fad6
Fix some rebase issues
sbrus89 Jan 8, 2026
8860b31
Compute BruntVaisalaFreqSq with input pressure in Pa
sbrus89 Jan 8, 2026
ba64492
Fix EosTest, pressure dbar -> Pa conversion
sbrus89 Jan 8, 2026
2ab7c8a
Fix Tendencies ctest
sbrus89 Jan 8, 2026
e07dade
Add computation of SpecVol to Tendencies
sbrus89 Feb 10, 2026
ee875b6
Read PressureGradTendencyEnable and set PGrad enable flag
sbrus89 Feb 10, 2026
91c6a74
Lintng of Tendencies.cpp
xylar Feb 17, 2026
2f9bb86
Add temporary call to computeZHeight() in pgrad tendency
xylar Feb 17, 2026
ad892fa
Compute geometric z after specific volume
xylar Feb 17, 2026
f541d5d
Lint pressure-gradient code
xylar Feb 17, 2026
52d7f76
Use Gravity from GlobalConstants in PGrad
xylar Feb 17, 2026
4dbbc50
Initialize/clear Tendencies in IOStreamTest
sbrus89 Feb 19, 2026
188ee35
Add gradient of tidal potential and SAL
sbrus89 Feb 23, 2026
2fb9994
Fix creation of tendency fields with same name
sbrus89 Feb 23, 2026
b9b3179
Initialize pressure gradient in state ctest
sbrus89 Feb 23, 2026
bf37ee5
Fix IOStreamTest
sbrus89 Feb 23, 2026
ebf9999
Fix PGradTest for GPU
sbrus89 Feb 23, 2026
1421f7a
Add pass/fail criteria to PGradTest
sbrus89 Feb 23, 2026
e5acfee
Lint files
sbrus89 Feb 24, 2026
2558656
Remove commented out code for debugging
sbrus89 Feb 26, 2026
70ae706
Remove unsed member variables
sbrus89 Feb 26, 2026
5864ca3
Fix for updated accessor state/tracer functions following rebase
sbrus89 Feb 26, 2026
e29cf6f
Add user and dev documentation
sbrus89 Feb 26, 2026
491b75c
Fix compiler warnings from unsed variables
sbrus89 Mar 5, 2026
9f02c7e
Fix linting issues
sbrus89 Mar 5, 2026
ee4be1a
Fix linting issues after rebase
sbrus89 Mar 17, 2026
e58f596
Fix vertRange -> vertRangeChunked
sbrus89 Mar 19, 2026
45b90e5
Fix converence criteria in CTest
sbrus89 Mar 19, 2026
f016d0f
Fix variable naming convention in PGradTest.cpp
sbrus89 Mar 26, 2026
bb0e1be
Incorporate review feedback
sbrus89 Mar 26, 2026
6f2b1a5
Fix linting issues
sbrus89 Mar 26, 2026
afd6126
Use provis tracers for RK4
sbrus89 Mar 31, 2026
bd19daa
Fix clang-format issues
sbrus89 Mar 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions components/omega/configs/Default.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,19 @@ Omega:
State:
NTimeLevels: 2
Advection:
Coef3rdOrder: 0.25
FluxThicknessType: Center
HorzTracerFluxOrder: 2
FluxTracerType: Center
VerticalTracerFluxLimiterEnable: true
VerticalTracerFluxOrder: 3
WindStress:
InterpType: Isotropic
VertCoord:
Density0: 1026.0
MovementWeightType: Uniform
PressureGrad:
PressureGradType: Centered
Tendencies:
ThicknessFluxTendencyEnable: true
PVTendencyEnable: true
Expand All @@ -50,6 +56,10 @@ Omega:
EddyDiff4: 0.0
UseCustomTendency: false
ManufacturedSolutionTendency: false
ThicknessVertAdvTendencyEnable: true
VelocityVertAdvTendencyEnable: true
TracerVertAdvTendencyEnable: true
PressureGradTendencyEnable: true
Tracers:
Base: [Temperature, Salinity]
Debug: [Debug1, Debug2, Debug3]
Expand Down
382 changes: 224 additions & 158 deletions components/omega/doc/design/OmegaV1GoverningEqns.md

Large diffs are not rendered by default.

25 changes: 17 additions & 8 deletions components/omega/doc/design/Tendencies.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,23 @@ retrieval.
```c++
class Tendencies{
public:
// Arrays for accumulating tendencies
Array2DReal LayerThicknessTend;
Array2DReal NormalVelocityTend;
Array3DReal TracerTend;
// Instances of tendency terms
ThicknessFluxDivOnCell ThicknessFluxDiv;
PotentialVortHAdvOnEdge PotientialVortHAdv;
KEGradOnEdge KEGrad;
SSHGradOnEdge SSHGrad;
VelocityDiffusionOnEdge VelocityDiffusion;
VelocityHyperDiffOnEdge VelocityHyperDiff;
WindForcingOnEdge WindForcing;
BottomDragOnEdge BottomDrag;
TracerDiffOnCell TracerDiffusion;
TracerHyperDiffOnCell TracerHyperDiff;
TracerHorzAdvOnCell TracerHorzAdv;
TracerHighOrderHorzAdvOnCell TracerHighOrderHorzAdv;
private:
static Tendencies *DefaultTendencies;
static std::map<std::string, std::unique_ptr<Tendencies>> AllTendencies;
Expand Down Expand Up @@ -79,29 +88,29 @@ Tendencies* Tendencies::create(const std::string &Name, const HorzMesh *Mesh, in
#### 4.2.2 Initialization
The init method will create the default tendencies and return an error code:
```c++
int Tendencies::init();
static void Tendencies::init();
```

#### 4.2.3 Retrieval
There will be methods for getting the default and non-default tendencies instances:
```c++
Tendencies *Tendencies::getDefault();
Tendencies *Tendencies::get(const std::string &Name);
static Tendencies *Tendencies::getDefault();
static Tendencies *Tendencies::get(const std::string &Name);
```

#### 4.2.4 Computation
The 'computeAll' method will compute and accumulate all layer thickness and normal velocity tendencies using the ocean
state and auxiliary state from a given time level:
```c++
void Tendencies::computeAllTendencies(const OceanState *State, const AuxilaryState *AuxState, int TimeLevel);
void Tendencies::computeAllTendencies(const OceanState *State, const AuxilaryState *AuxState, const Array3DReal &TracerArray, int TimeLevel, int VelTimeLevel, TimeInstant Time);
```
The layer thickness tendencies will be computed with a method:
```c++
void Tendencies::computeThicknessTendencies(const OceanState *State, const AuxilaryState *AuxState, int TimeLevel);
void Tendencies::computeThicknessTendencies(const OceanState *State, const AuxilaryState *AuxState, int TimeLevel, int VelTimeLevel, TimeInstant Time);
```
The normal velocity tendencies will be computed with a method:
```c++
void Tendencies::computeVelocityTendencies(const OceanState *State, const AuxilaryState *AuxState, int TimeLevel);
void Tendencies::computeVelocityTendencies(const OceanState *State, const AuxilaryState *AuxState, int TimeLevel, int VelTimeLevel, TimeInstant Time);
```


Expand All @@ -111,8 +120,8 @@ when they are no longer in scope. The erase method
will remove a named tendencies instance, whereas the clear method will remove all of
them. Both will call the destructor in the process.
```c++
void Tendencies::erase(const std::string &Name);
void Tendencies::clear();
static void Tendencies::erase(const std::string &Name);
static void Tendencies::clear();
```

## 5 Verification and Testing
Expand Down
52 changes: 30 additions & 22 deletions components/omega/doc/design/Tendency.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,24 +39,25 @@ The class contains private member variables for any constant data that are defin
Each tendency term will have a `bool` variable which can be set to enable/disable the computation of the tendency.

```c++
class ThicknessFluxDivergenceOnCell {
class ThicknessFluxDivOnCell {
public:

bool enabled = false;

ThicknessFluxDivergenceOnCell(const HorzMesh *Mesh, Config *Options);
ThicknessFluxDivOnCell(const HorzMesh *Mesh, Config *Options);

KOKKOS_FUNCTION void operator()(Array2DReal &Tend
int ICell,
int KChunk,
const Array2DReal &ThicknessFlux);
const Array2DReal &ThicknessFlux,
const Array2DReal &NormalVelEdge);

private:
Array1DI4 NEdgesOnCell;
Array2DI4 EdgesOnCell;
Array1DR8 DvEdge;
Array1DR8 AreaCell;
Array2DR8 EdgeSignOnCell;
Array1DReal DvEdge;
Array1DReal AreaCell;
Array2DReal EdgeSignOnCell;
};
```

Expand All @@ -66,31 +67,38 @@ class ThicknessFluxDivergenceOnCell {
Tendency functor constructors are responsible for initializing the private member variables:

```c++
ThicknessFluxDivergenceOnCell::ThicknessFluxDivergenceOnCell(HorzMesh const *Mesh, Config *Options)
ThicknessFluxDivOnCell::ThicknessFluxDivOnCell(HorzMesh const *Mesh)
: NEdgesOnCell(Mesh->NEdgesOnCell), EdgesOnCell(Mesh->EdgesOnCell),
DvEdge(Mesh->DvEdge), AreaCell(Mesh->AreaCell),
EdgeSignOnCell(Mesh->EdgeSignOnCell) {

enabled = Options->get("ThicknessFluxTendencyEnable")
}
EdgeSignOnCell(Mesh->EdgeSignOnCell) { }
```

#### 4.2.2 operator
The operator method implements the tendency computation for a chunk of vertical layers at a given horizontal mesh location.
The inner loop over a chunk of vertical layers enables CPU vectorization.

```c++
KOKKOS_FUNCTION void ThicknessFluxDivergenceOnCell::operator()(Array2DReal &Tend
int ICell,
int KChunk,
const Array2DReal &ThicknessFlux) const {
const Real InvAreaCell = 1. / AreaCell(iCell);
for (int J = 0; J < NEdgesOnCell(ICell); ++J) {
const int JEdge = EdgesOnCell(ICell, J);
for (int K = KChunk * VecLength; K < (KChunk + 1) * VecLength; ++K) {
Tend(ICell, K) -= DvEdge(JEdge) * EdgeSignOnCell(ICell, J) * ThicknessFlux(JEdge, K) * InvAreaCell;
}
}
KOKKOS_FUNCTION void ThicknessFluxDivOnCell::operator()(Array2DReal &Tend
int ICell,
int KChunk,
const Array2DReal &ThicknessFlux,
const Array2DReal &NormalVelEdge) const {
const I4 KStart = KChunk * VecLength;
const Real InvAreaCell = 1._Real / AreaCell(ICell);
Real DivTmp[VecLength] = {0};
for (int J = 0; J < NEdgesOnCell(ICell); ++J) {
const I4 JEdge = EdgesOnCell(ICell, J);
for (int KVec = 0; KVec < VecLength; ++KVec) {
const I4 K = KStart + KVec;
DivTmp[KVec] -= DvEdge(JEdge) * EdgeSignOnCell(ICell, J) *
ThicknessFlux(JEdge, K) * NormalVelEdge(JEdge, K) *
InvAreaCell;
}
}
for (int KVec = 0; KVec < VecLength; ++KVec) {
const I4 K = KStart + KVec;
Tend(ICell, K) -= DivTmp[KVec];
}
}
```

Expand Down
24 changes: 12 additions & 12 deletions components/omega/doc/devGuide/OceanState.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,38 +40,38 @@ For now, member variables that are host arrays have variable names are appended
`H`. Array variable names not ending in `H` are device arrays. For a given time level,
host to device array is performed via:
```c++
Err = State->copyToDevice(TimeLevel);
State->copyToDevice(TimeLevel);
```
and a copy from device to host is performed by:
```c++
Err = State->copyToHost(TimeLevel);
State->copyToHost(TimeLevel);
```
These functions validate the `TimeLevel` via `OMEGA_REQUIRE` and will abort if invalid.
Eventually, the host arrays will be eliminated when `IO` and `Halo` are extended to
handle host <-> device transfers.

A time level update to advance the solution at the end of a model timestep is done by:
```c++
Err = State->updateTimeLevels();
State->updateTimeLevels();
```
This shifts the time level indices within the `State` instance. A halo exchange is
also performed on these arrays and the IOFields data pointer is attached
to the current time level.

The arrays associated with a given time level can be accessed with the functions:
```c++
Array2DReal LayerThick;
Err = State->getLayerThickness(LayerThick, TimeLevel);
Array2DReal NormVel;
Err = State->getNormalVelocity(NormVel, TimeLevel);
Array2DReal LayerThick = State->getLayerThickness(TimeLevel);
Array2DReal NormVel = State->getNormalVelocity(TimeLevel);
```
for the device arrays and
```c++
HostArray2DReal LayerThickH;
Err = State->getLayerThicknessH(LayerThickH, TimeLevel);
HostArray2DReal NormVelH;
Err = State->getNormalVelocityH(NormVelH, TimeLevel);
HostArray2DReal LayerThickH = State->getLayerThicknessH(TimeLevel);
HostArray2DReal NormVelH = State->getNormalVelocityH(TimeLevel);
```
for the host arrays. The time level convention is:
for the host arrays. These functions return the arrays directly and will abort
via `OMEGA_REQUIRE` if an invalid `TimeLevel` is provided.

The time level convention is:
| time level | `TimeLevel` |
|------------|-------------|
| New | 1 |
Expand Down
Loading