MOM6
MOM_neutral_diffusion.F90 File Reference
#include <MOM_memory.h>
#include "version_variable.h"
Include dependency graph for MOM_neutral_diffusion.F90:

Go to the source code of this file.

Data Types

type  mom_neutral_diffusion::neutral_diffusion_cs
 

Modules

module  mom_neutral_diffusion
 A column-wise toolbox for implementing neutral diffusion.
 

Functions/Subroutines

logical function, public mom_neutral_diffusion::neutral_diffusion_init (Time, G, param_file, diag, CS)
 Read parameters and allocate control structure for neutral_diffusion module. More...
 
subroutine, public mom_neutral_diffusion::neutral_diffusion_diag_init (Time, G, diag, C_p, Reg, CS)
 Diagnostic handles for neutral diffusion tendencies. More...
 
subroutine, public mom_neutral_diffusion::neutral_diffusion_calc_coeffs (G, GV, h, T, S, EOS, CS)
 Calculate remapping factors for u/v columns used to map adjoining columns to a shared coordinate space. More...
 
subroutine, public mom_neutral_diffusion::neutral_diffusion (G, GV, h, Coef_x, Coef_y, Tracer, m, dt, name, CS)
 Update tracer concentration due to neutral diffusion; layer thickness unchanged by this update. More...
 
subroutine mom_neutral_diffusion::interface_scalar (nk, h, S, Si, i_method)
 Returns interface scalar, Si, for a column of layer values, S. More...
 
real function mom_neutral_diffusion::ppm_edge (hkm1, hk, hkp1, hkp2, Ak, Akp1, Pk, Pkp1)
 Returns the PPM quasi-fourth order edge value at k+1/2 following equation 1.6 in Colella & Woodward, 1984: JCP 54, 174-201. More...
 
real function mom_neutral_diffusion::ppm_ave (xL, xR, aL, aR, aMean)
 Returns the average of a PPM reconstruction between two fractional positions. More...
 
real function mom_neutral_diffusion::signum (a, x)
 A true signum function that returns either -abs(a), when x<0; or abs(a) when x>0; or 0 when x=0. More...
 
subroutine mom_neutral_diffusion::plm_diff (nk, h, S, c_method, b_method, diff)
 Returns PLM slopes for a column where the slopes are the difference in value across each cell. The limiting follows equation 1.8 in Colella & Woodward, 1984: JCP 54, 174-201. More...
 
real function mom_neutral_diffusion::fv_diff (hkm1, hk, hkp1, Skm1, Sk, Skp1)
 Returns the cell-centered second-order finite volume (unlimited PLM) slope using three consecutive cell widths and average values. Slope is returned as a difference across the central cell (i.e. units of scalar S). Discretization follows equation 1.7 in Colella & Woodward, 1984: JCP 54, 174-201. More...
 
real function mom_neutral_diffusion::fvlsq_slope (hkm1, hk, hkp1, Skm1, Sk, Skp1)
 Returns the cell-centered second-order weighted least squares slope using three consecutive cell widths and average values. Slope is returned as a gradient (i.e. units of scalar S over width units). More...
 
subroutine mom_neutral_diffusion::find_neutral_surface_positions (nk, Pl, Tl, Sl, dRdTl, dRdSl, Pr, Tr, Sr, dRdTr, dRdSr, PoL, PoR, KoL, KoR, hEff)
 Returns positions within left/right columns of combined interfaces. More...
 
real function mom_neutral_diffusion::absolute_position (n, Pint, Karr, NParr, k_surface)
 Converts non-dimensional position within a layer to absolute position (for debugging) More...
 
real function, dimension(2 *n+2) mom_neutral_diffusion::absolute_positions (n, Pint, Karr, NParr)
 Converts non-dimensional positions within layers to absolute positions (for debugging) More...
 
real function mom_neutral_diffusion::interpolate_for_nondim_position (dRhoNeg, Pneg, dRhoPos, Ppos)
 Returns the non-dimensional position between Pneg and Ppos where the interpolated density difference equals zero. The result is always bounded to be between 0 and 1. More...
 
subroutine mom_neutral_diffusion::neutral_surface_flux (nk, hl, hr, Tl, Tr, PiL, PiR, KoL, KoR, hEff, Flx)
 Returns a single column of neutral diffusion fluxes of a tracer. More...
 
logical function, public mom_neutral_diffusion::neutral_diffusion_unit_tests (verbose)
 Returns true if unit tests of neutral_diffusion functions fail. Otherwise returns false. More...
 
logical function mom_neutral_diffusion::test_fv_diff (verbose, hkm1, hk, hkp1, Skm1, Sk, Skp1, Ptrue, title)
 Returns true if a test of fv_diff() fails, and conditionally writes results to stream. More...
 
logical function mom_neutral_diffusion::test_fvlsq_slope (verbose, hkm1, hk, hkp1, Skm1, Sk, Skp1, Ptrue, title)
 Returns true if a test of fvlsq_slope() fails, and conditionally writes results to stream. More...
 
logical function mom_neutral_diffusion::test_ifndp (verbose, rhoNeg, Pneg, rhoPos, Ppos, Ptrue, title)
 Returns true if a test of interpolate_for_nondim_position() fails, and conditionally writes results to stream. More...
 
logical function mom_neutral_diffusion::test_data1d (verbose, nk, Po, Ptrue, title)
 Returns true if comparison of Po and Ptrue fails, and conditionally writes results to stream. More...
 
logical function mom_neutral_diffusion::test_data1di (verbose, nk, Po, Ptrue, title)
 Returns true if comparison of Po and Ptrue fails, and conditionally writes results to stream. More...
 
logical function mom_neutral_diffusion::test_nsp (verbose, nk, KoL, KoR, pL, pR, hEff, KoL0, KoR0, pL0, pR0, hEff0, title)
 Returns true if output of find_neutral_surface_positions() does not match correct values, and conditionally writes results to stream. More...
 
logical function mom_neutral_diffusion::compare_nsp_row (KoL, KoR, pL, pR, KoL0, KoR0, pL0, pR0)
 Compares a single row, k, of output from find_neutral_surface_positions() More...
 
subroutine, public mom_neutral_diffusion::neutral_diffusion_end (CS)
 Deallocates neutral_diffusion control structure. More...
 

Variables

character(len=40) mom_neutral_diffusion::mdl = "MOM_neutral_diffusion"
 
logical, parameter mom_neutral_diffusion::debug_this_module = .false.