mom_ale_sponge module reference
This module contains the routines used to apply sponge layers when using the ALE mode.
Data Types
A structure for creating arrays of pointers to 3D arrays with extra gridding information. |
|
A structure for creating arrays of pointers to 2D arrays with extra gridding information. |
|
ALE sponge control structure. |
Detailed Description
Applying sponges requires the following: #. initialize_ALE_sponge
set_up_ALE_sponge_field (tracers) and set_up_ALE_sponge_vel_field (vel)
apply_ALE_sponge
init_ALE_sponge_diags (not being used for now)
ALE_sponge_end (not being used for now)
Type Documentation
- type mom_ale_sponge/p3d
A structure for creating arrays of pointers to 3D arrays with extra gridding information.
- Type fields:
% nz_data ::
integer, privateThe number of vertical levels in the input field.% num_tlevs ::
integer, privateThe number of time records contained in the file.% p ::
real, dimension(:,:,:), pointer, privatepointer to the data [various]% dz ::
real, dimension(:,:,:), pointer, privatepointer to the data grid spacing [Z ~> m]
- type mom_ale_sponge/p2d
A structure for creating arrays of pointers to 2D arrays with extra gridding information.
- Type fields:
% field ::
type(external_field), privateTime interpolator field handle.% nz_data ::
integer, privateThe number of vertical levels in the input field.% num_tlevs ::
integer, privateThe number of time records contained in the file.% scale ::
real, privateA multiplicative factor by which to rescale input data [various].% p ::
real, dimension(:,:), pointer, privatepointer to the data [various]% dz ::
real, dimension(:,:), pointer, privatepointer to the data grid spacing [Z ~> m]% name ::
character(len=:), allocatable, privateThe name of the input field.% long_name ::
character(len=:), allocatable, privateThe long name of the input field.% unit ::
character(len=:), allocatable, privateThe unit of the input field.% axes_data ::
type(axis_info), dimension(:), allocatable, privateAxis types for the input field.
- type mom_ale_sponge/ale_sponge_cs
ALE sponge control structure.
- Type fields:
% id_sp_tendency ::
integer, dimension(50)Diagnostic IDs.% id_sp_u_tendency ::
integerDiagnostic id for zonal momentum tendency due to Rayleigh damping.% id_sp_v_tendency ::
integerDiagnostic id for meridional momentum tendency due to Rayleigh damping.% nz ::
integerThe total number of layers.% nz_data ::
integerThe total number of arbitrary layers (used by older code).% num_col ::
integerThe number of sponge tracer points within the computational domain.% num_col_u ::
integerThe number of sponge u-points within the computational domain.% num_col_v ::
integerThe number of sponge v-points within the computational domain.% fldno ::
integerThe number of fields which have already been registered by calls to set_up_sponge_field.% sponge_uv ::
logicalControl whether u and v are included in sponge.% col_i ::
integer, dimension(:), allocatableArray of the i-indices of each tracer column being damped.% col_j ::
integer, dimension(:), allocatableArray of the j-indices of each tracer column being damped.% col_i_u ::
integer, dimension(:), allocatableArray of the i-indices of each u-column being damped.% col_j_u ::
integer, dimension(:), allocatableArray of the j-indices of each u-column being damped.% col_i_v ::
integer, dimension(:), allocatableArray of the i-indices of each v-column being damped.% col_j_v ::
integer, dimension(:), allocatableArray of the j-indices of each v-column being damped.% iresttime_col ::
real, dimension(:), allocatableThe inverse restoring time of each tracer column [T-1 ~> s-1].% iresttime_col_u ::
real, dimension(:), allocatableThe inverse restoring time of each u-column [T-1 ~> s-1].% iresttime_col_v ::
real, dimension(:), allocatableThe inverse restoring time of each v-column [T-1 ~> s-1].% var ::
type(p3d), dimension(50)Pointers to the fields that are being damped.% ref_val ::
type(p2d), dimension(50)The values to which the fields are damped.% ref_val_u ::
type(p2d)The values to which the u-velocities are damped.% ref_val_v ::
type(p2d)The values to which the v-velocities are damped.% var_u ::
type(p3d)Pointer to the u velocities that are being damped.% var_v ::
type(p3d)Pointer to the v velocities that are being damped.% ref_dz ::
type(p2d)Grid on which reference data is provided (older code).% ref_dzu ::
type(p2d)u-point grid on which reference data is provided (older code).% ref_dzv ::
type(p2d)v-point grid on which reference data is provided (older code).% diag ::
type(diag_ctrl), pointerA structure that is used to regulate the timing of diagnostic output.% remap_cs ::
type(remapping_cs)Remapping parameters and work arrays.% remap_answer_date ::
integerThe vintage of the order of arithmetic and expressions to use for remapping. Values below 20190101 recover the remapping answers from 2018, while higher values use more robust forms of the same remapping expressions.% hor_regrid_answer_date ::
integerThe vintage of the order of arithmetic and expressions to use for horizontal regridding. Values below 20190101 recover the answers from 2018, while higher values use expressions that have been rearranged for rotational invariance.% time_varying_sponges ::
logicalTrue if using newer sponge code.% spongedataongrid ::
logicalTrue if the sponge data are on the model horizontal grid.% varying_input_dz_mask ::
realAn input file thickness below which the target values with time-varying sponges are replaced by the value above [Z ~> m]. It is not clear why this needs to be greater than 0.