MOM6
|
This module contains the routines used to apply sponge layers when using the ALE mode.
Applying sponges requires the following:
Data Types | |
type | ale_sponge_cs |
ALE sponge control structure. More... | |
interface | initialize_ale_sponge |
Ddetermine the number of points which are within sponges in this computational domain. More... | |
type | p2d |
A structure for creating arrays of pointers to 2D arrays with extra gridding information. More... | |
type | p3d |
A structure for creating arrays of pointers to 3D arrays with extra gridding information. More... | |
interface | set_up_ale_sponge_field |
Store the reference profile at h points for a variable. More... | |
interface | set_up_ale_sponge_vel_field |
This subroutine stores the reference profile at u and v points for a vector. More... | |
Functions/Subroutines | |
subroutine | initialize_ale_sponge_fixed (Iresttime, G, param_file, CS, data_h, nz_data) |
This subroutine determines the number of points which are within sponges in this computational domain. Only points that have positive values of Iresttime and which mask2dT indicates are ocean points are included in the sponges. It also stores the target interface heights. More... | |
integer function, public | get_ale_sponge_nz_data (CS) |
Return the number of layers in the data with a fixed ALE sponge, or 0 if there are no sponge columns on this PE. More... | |
subroutine, public | get_ale_sponge_thicknesses (G, data_h, sponge_mask, CS) |
Return the thicknesses used for the data with a fixed ALE sponge. More... | |
subroutine | initialize_ale_sponge_varying (Iresttime, G, param_file, CS) |
This subroutine determines the number of points which are to be restoref in the computational domain. Only points that have positive values of Iresttime and which mask2dT indicates are ocean points are included in the sponges. More... | |
subroutine, public | init_ale_sponge_diags (Time, G, diag, CS) |
Initialize diagnostics for the ALE_sponge module. More... | |
subroutine | set_up_ale_sponge_field_fixed (sp_val, G, f_ptr, CS) |
This subroutine stores the reference profile at h points for the variable whose address is given by f_ptr. More... | |
subroutine | set_up_ale_sponge_field_varying (filename, fieldname, Time, G, GV, US, f_ptr, CS) |
This subroutine stores the reference profile at h points for the variable whose address is given by filename and fieldname. More... | |
subroutine | set_up_ale_sponge_vel_field_fixed (u_val, v_val, G, u_ptr, v_ptr, CS) |
This subroutine stores the reference profile at u and v points for the variable whose address is given by u_ptr and v_ptr. More... | |
subroutine | set_up_ale_sponge_vel_field_varying (filename_u, fieldname_u, filename_v, fieldname_v, Time, G, US, CS, u_ptr, v_ptr) |
This subroutine stores the reference profile at uand v points for the variable whose address is given by u_ptr and v_ptr. More... | |
subroutine, public | apply_ale_sponge (h, dt, G, GV, US, CS, Time) |
This subroutine applies damping to the layers thicknesses, temp, salt and a variety of tracers for every column where there is damping. More... | |
subroutine, public | ale_sponge_end (CS) |
This subroutine deallocates any memory associated with the ALE_sponge module. More... | |
subroutine, public mom_ale_sponge::ale_sponge_end | ( | type(ale_sponge_cs), pointer | CS | ) |
This subroutine deallocates any memory associated with the ALE_sponge module.
cs | A pointer to the control structure that is set by a previous call to initialize_sponge. |
Definition at line 970 of file MOM_ALE_sponge.F90.
subroutine, public mom_ale_sponge::apply_ale_sponge | ( | real, dimension(szi_(g),szj_(g),szk_(g)), intent(inout) | h, |
real, intent(in) | dt, | ||
type(ocean_grid_type), intent(inout) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(ale_sponge_cs), pointer | CS, | ||
type(time_type), intent(in), optional | Time | ||
) |
This subroutine applies damping to the layers thicknesses, temp, salt and a variety of tracers for every column where there is damping.
[in,out] | g | The ocean's grid structure (in). |
[in] | gv | ocean vertical grid structure |
[in] | us | A dimensional unit scaling type |
[in,out] | h | Layer thickness [H ~> m or kg m-2] (in) |
[in] | dt | The amount of time covered by this call [T ~> s]. |
cs | A pointer to the control structure for this module that is set by a previous call to initialize_sponge (in). | |
[in] | time | The current model date |
Definition at line 756 of file MOM_ALE_sponge.F90.
References mom_error_handler::mom_error(), and mom_remapping::remapping_core_h().
Referenced by mom_diabatic_driver::diabatic_ale(), and mom_diabatic_driver::diabatic_ale_legacy().
integer function, public mom_ale_sponge::get_ale_sponge_nz_data | ( | type(ale_sponge_cs), pointer | CS | ) |
Return the number of layers in the data with a fixed ALE sponge, or 0 if there are no sponge columns on this PE.
cs | A pointer that is set to point to the control structure for the ALE_sponge module. |
Definition at line 326 of file MOM_ALE_sponge.F90.
Referenced by rgc_tracer::initialize_rgc_tracer().
subroutine, public mom_ale_sponge::get_ale_sponge_thicknesses | ( | type(ocean_grid_type), intent(in) | G, |
real, dimension(:,:,:), intent(inout), allocatable | data_h, | ||
logical, dimension(szi_(g),szj_(g)), intent(out) | sponge_mask, | ||
type(ale_sponge_cs), pointer | CS | ||
) |
Return the thicknesses used for the data with a fixed ALE sponge.
[in] | g | The ocean's grid structure (in). |
[in,out] | data_h | The thicknesses of the sponge input layers [H ~> m or kg m-2]. |
[out] | sponge_mask | A logical mask that is true where |
cs | A pointer that is set to point to the control structure for the ALE_sponge module. |
Definition at line 339 of file MOM_ALE_sponge.F90.
References mom_error_handler::mom_error().
subroutine, public mom_ale_sponge::init_ale_sponge_diags | ( | type(time_type), intent(in), target | Time, |
type(ocean_grid_type), intent(in) | G, | ||
type(diag_ctrl), intent(inout), target | diag, | ||
type(ale_sponge_cs), pointer | CS | ||
) |
Initialize diagnostics for the ALE_sponge module.
[in] | time | The current model time |
[in] | g | The ocean's grid structure |
[in,out] | diag | A structure that is used to regulate diagnostic output. |
cs | ALE sponge control structure |
Definition at line 519 of file MOM_ALE_sponge.F90.
Referenced by mom::initialize_mom().
subroutine mom_ale_sponge::initialize_ale_sponge_fixed | ( | real, dimension(szi_(g),szj_(g)), intent(in) | Iresttime, |
type(ocean_grid_type), intent(in) | G, | ||
type(param_file_type), intent(in) | param_file, | ||
type(ale_sponge_cs), pointer | CS, | ||
real, dimension(szi_(g),szj_(g),nz_data), intent(in) | data_h, | ||
integer, intent(in) | nz_data | ||
) |
This subroutine determines the number of points which are within sponges in this computational domain. Only points that have positive values of Iresttime and which mask2dT indicates are ocean points are included in the sponges. It also stores the target interface heights.
[in] | g | The ocean's grid structure. |
[in] | nz_data | The total number of sponge input layers. |
[in] | iresttime | The inverse of the restoring time [s-1]. |
[in] | param_file | A structure indicating the open file to parse for model parameter values. |
cs | A pointer that is set to point to the control structure for this module (in/out). | |
[in] | data_h | The thicknesses of the sponge input layers [H ~> m or kg m-2]. |
Definition at line 141 of file MOM_ALE_sponge.F90.
References mom_remapping::initialize_remapping(), and mom_error_handler::mom_error().
|
private |
This subroutine determines the number of points which are to be restoref in the computational domain. Only points that have positive values of Iresttime and which mask2dT indicates are ocean points are included in the sponges.
[in] | g | The ocean's grid structure. |
[in] | iresttime | The inverse of the restoring time [s-1]. |
[in] | param_file | A structure indicating the open file to parse for model parameter values. |
cs | A pointer that is set to point to the control structure for this module (in/out). |
Definition at line 376 of file MOM_ALE_sponge.F90.
References mom_remapping::initialize_remapping(), and mom_error_handler::mom_error().
|
private |
This subroutine stores the reference profile at h points for the variable whose address is given by f_ptr.
[in] | g | Grid structure |
cs | ALE sponge control structure (in/out). | |
[in] | sp_val | Field to be used in the sponge, it has arbitrary number of layers. |
[in] | f_ptr | Pointer to the field to be damped |
Definition at line 534 of file MOM_ALE_sponge.F90.
References mom_error_handler::mom_error().
|
private |
This subroutine stores the reference profile at h points for the variable whose address is given by filename and fieldname.
[in] | filename | The name of the file with the time varying field data |
[in] | fieldname | The name of the field in the file with the time varying field data |
[in] | time | The current model time |
[in] | g | Grid structure (in). |
[in] | gv | ocean vertical grid structure |
[in] | us | A dimensional unit scaling type |
[in] | f_ptr | Pointer to the field to be damped (in). |
cs | Sponge control structure (in/out). |
Definition at line 571 of file MOM_ALE_sponge.F90.
References mom_error_handler::mom_error().
|
private |
This subroutine stores the reference profile at u and v points for the variable whose address is given by u_ptr and v_ptr.
[in] | g | Grid structure (in). |
cs | Sponge structure (in/out). | |
[in] | u_val | u field to be used in the sponge, it has arbritary number of layers. |
[in] | v_val | v field to be used in the sponge, it has arbritary number of layers. |
[in] | u_ptr | u pointer to the field to be damped |
[in] | v_ptr | v pointer to the field to be damped |
Definition at line 636 of file MOM_ALE_sponge.F90.
|
private |
This subroutine stores the reference profile at uand v points for the variable whose address is given by u_ptr and v_ptr.
[in] | filename_u | File name for u field |
[in] | fieldname_u | Name of u variable in file |
[in] | filename_v | File name for v field |
[in] | fieldname_v | Name of v variable in file |
[in] | time | Model time |
[in,out] | g | Ocean grid (in) |
[in] | us | A dimensional unit scaling type |
cs | Sponge structure (in/out). | |
[in] | u_ptr | u pointer to the field to be damped (in). |
[in] | v_ptr | v pointer to the field to be damped (in). |
Definition at line 674 of file MOM_ALE_sponge.F90.