user_change_diffusivity module reference
Increments the diapycnal diffusivity in a specified band of latitudes and densities.
Data Types
Control structure for |
Functions/Subroutines
This subroutine provides an interface for a user to use to modify the main code to alter the diffusivities as needed. |
|
This subroutine checks whether the 4 values of range are in ascending order. |
|
This subroutine returns a value that goes smoothly from 0 to 1, stays at 1, and then goes smoothly back to 0 at the four values of range. |
|
Set up the module control structure. |
|
Clean up the module control structure. |
Detailed Description
Increments the diapycnal diffusivity in a specified band of latitudes and densities.
Type Documentation
- type user_change_diffusivity/user_change_diff_cs
Control structure for
user_change_diffusivity(). .- Type fields:
% initialized ::
logicalTrue if this control structure has been initialized.% kd_add ::
realThe scale of a diffusivity that is added everywhere without any filtering or scaling [H Z T-1 ~> m2 s-1 or kg m-1 s-1].% lat_range ::
real, dimension(4)4 values that define the latitude range over which a diffusivity scaled by Kd_add is added [degrees_N].% rho_range ::
real, dimension(4)4 values that define the coordinate potential density range over which a diffusivity scaled by Kd_add is added [R ~> kg m-3].% use_abs_lat ::
logicalIf true, use the absolute value of latitude when setting lat_range.% diag ::
type(diag_ctrl), pointerA structure that is used to regulate the timing of diagnostic output.
Function/Subroutine Documentation
- subroutine user_change_diffusivity/user_change_diff(h, tv, G, GV, US, CS, Kd_lay, Kd_int, T_f, S_f, Kd_int_add)
This subroutine provides an interface for a user to use to modify the main code to alter the diffusivities as needed. The specific example implemented here augments the diffusivity for a specified range of latitude and coordinate potential density.
- Parameters:
g :: [in] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure
h ::
h[in] Layer thickness [H ~> m or kg m-2].tv ::
tv[in] A structure containing pointers to any available thermodynamic fields. Absent fields have NULL ptrs.us :: [in] A dimensional unit scaling type
cs :: This module’s control structure.
kd_lay :: [inout] The diapycnal diffusivity of each layer [H Z T-1 ~> m2 s-1 or kg m-1 s-1]
kd_int :: [inout] The diapycnal diffusivity at each interface [H Z T-1 ~> m2 s-1 or kg m-1 s-1]
t_f :: [in] Temperature with massless layers filled in vertically [C ~> degC].
s_f :: [in] Salinity with massless layers filled in vertically [S ~> ppt].
kd_int_add :: The diapycnal diffusivity that is being added at each interface [H Z T-1 ~> m2 s-1 or kg m-1 s-1]
- Call to:
mom_eos::eos_domainmom_error_handler::mom_errorrange_okval_weights
- function user_change_diffusivity/range_ok(range)
This subroutine checks whether the 4 values of range are in ascending order.
- Parameters:
range ::
range[in] Four values to check [arbitrary]- Return:
undefined :: Return value.
- Called from:
- function user_change_diffusivity/val_weights(val, range)
This subroutine returns a value that goes smoothly from 0 to 1, stays at 1, and then goes smoothly back to 0 at the four values of range. The transitions are cubic, and have zero first derivatives where the curves hit 0 and 1. The values in range must be in ascending order, as can be checked by calling range_OK.
- Parameters:
val ::
val[in] Value for which we need an answer [arbitrary units].range ::
range[in] Range over which the answer is non-zero [arbitrary units].
- Return:
undefined :: Return value [nondim].
- Called from:
- subroutine user_change_diffusivity/user_change_diff_init(Time, G, GV, US, param_file, diag, CS)
Set up the module control structure.
- Parameters:
time :: [in] The current model time.
g :: [in] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure
us :: [in] A dimensional unit scaling type
param_file ::
param_file[in] A structure indicating the open file to parse for model parameter values.diag ::
diag[inout] A structure that is used to regulate diagnostic output.cs :: A pointer that is set to point to the control structure for this module.
- Call to:
- subroutine user_change_diffusivity/user_change_diff_end(CS)
Clean up the module control structure.
- Parameters:
cs :: A pointer that is set to point to the control structure for this module.
- Called from: