Computing streamfunctions
Computing the barotropic streamfunction
The function mpas_tools.ocean.compute_barotropic_streamfunction()
computes the barotropic streamfunction at vertices on the MPAS-Ocean grid.
The function takes a dataset containing an MPAS-Ocean mesh and another with
normalVelocity and layerThickness variables (possibly with a
timeMonthly_avg_ prefix). The streamfunction is computed only over the
range of (positive-down) depths provided and at the given time index.
Optionally, the Gent-McWilliams bolus velocity (normalGMBolusVelocity) and
the submesoscale velocity (normalMLEvelocity) can be included in the
vertically integrated velocity calculation by setting the corresponding
arguments include_bolus and include_submesoscale to True.
For large meshes, performance and memory usage can be improved by specifying
the horiz_chunk argument to control the number of edges processed at once,
and by providing a tmp_dir argument to use a temporary directory for
intermediate files.
Shifting the barotropic streamfunction
The function mpas_tools.ocean.shift_barotropic_streamfunction()
can be used to shift the barotropic streamfunction so that its mean value is
zero on the boundary within a specified latitude range. This is useful for
setting a consistent reference for the streamfunction, especially when
comparing results across different regions or simulations.
The function takes as input the barotropic streamfunction on vertices,
a latitude range (in degrees), the cellsOnVertex and latVertex
arrays from the mesh, and optionally a logger. It returns a shifted
streamfunction with the mean value on the boundary (within the latitude
range) subtracted.