MOM6
mom_vert_friction::vertvisc_cs Type Reference

Detailed Description

The control structure with parameters and memory for the MOM_vert_friction module.

Definition at line 39 of file MOM_vert_friction.F90.

Collaboration diagram for mom_vert_friction::vertvisc_cs:
[legend]

Public variables and constants

real hmix
 The mixed layer thickness in thickness units [H ~> m or kg m-2]. More...
 
real hmix_stress
 The mixed layer thickness over which the wind stress is applied with direct_stress [H ~> m or kg m-2]. More...
 
real kvml
 The mixed layer vertical viscosity [Z2 T-1 ~> m2 s-1]. More...
 
real kv
 The interior vertical viscosity [Z2 T-1 ~> m2 s-1]. More...
 
real hbbl
 The static bottom boundary layer thickness [H ~> m or kg m-2]. More...
 
real kvbbl
 The vertical viscosity in the bottom boundary layer [Z2 T-1 ~> m2 s-1]. More...
 
real maxvel
 Velocity components greater than maxvel are truncated [L T-1 ~> m s-1]. More...
 
real vel_underflow
 Velocity components smaller than vel_underflow are set to 0 [L T-1 ~> m s-1]. More...
 
logical cfl_based_trunc
 If true, base truncations on CFL numbers, not absolute velocities. More...
 
real cfl_trunc
 Velocity components will be truncated when they are large enough that the corresponding CFL number exceeds this value, nondim. More...
 
real cfl_report
 The value of the CFL number that will cause the accelerations to be reported, nondim. CFL_report will often equal CFL_trunc. More...
 
real truncramptime
 The time-scale over which to ramp up the value of CFL_trunc from CFL_truncS to CFL_truncE. More...
 
real cfl_truncs
 The start value of CFL_trunc. More...
 
real cfl_trunce
 The end/target value of CFL_trunc. More...
 
logical cflrampingisactivated = .false.
 True if the ramping has been initialized. More...
 
type(time_type) rampstarttime
 The time at which the ramping of CFL_trunc starts. More...
 
real, dimension(:, :, :), allocatable a_u
 The u-drag coefficient across an interface [Z T-1 ~> m s-1]. More...
 
real, dimension(:, :, :), allocatable h_u
 The effective layer thickness at u-points [H ~> m or kg m-2]. More...
 
real, dimension(:, :, :), allocatable a_v
 The v-drag coefficient across an interface [Z T-1 ~> m s-1]. More...
 
real, dimension(:, :, :), allocatable h_v
 The effective layer thickness at v-points [H ~> m or kg m-2]. More...
 
real, dimension(:,:), pointer a1_shelf_u => NULL()
 The u-momentum coupling coefficient under ice shelves [Z T-1 ~> m s-1]. Retained to determine stress under shelves. More...
 
real, dimension(:,:), pointer a1_shelf_v => NULL()
 The v-momentum coupling coefficient under ice shelves [Z T-1 ~> m s-1]. Retained to determine stress under shelves. More...
 
logical split
 If true, use the split time stepping scheme. More...
 
logical bottomdraglaw
 If true, the bottom stress is calculated with a drag law c_drag*|u|*u. The velocity magnitude may be an assumed value or it may be based on the actual velocity in the bottommost HBBL, depending on whether linear_drag is true. More...
 
logical channel_drag
 If true, the drag is exerted directly on each layer according to what fraction of the bottom they overlie. More...
 
logical harmonic_visc
 If true, the harmonic mean thicknesses are used to calculate the viscous coupling between layers except near the bottom. Otherwise the arithmetic mean thickness is used except near the bottom. More...
 
real harm_bl_val
 A scale to determine when water is in the boundary layers based solely on harmonic mean thicknesses for the purpose of determining the extent to which the thicknesses used in the viscosities are upwinded. More...
 
logical direct_stress
 If true, the wind stress is distributed over the topmost Hmix_stress of fluid and KVML may be very small. More...
 
logical dynamic_viscous_ml
 If true, use the results from a dynamic calculation, perhaps based on a bulk Richardson number criterion, to determine the mixed layer thickness for viscosity. More...
 
logical answers_2018
 If true, use the order of arithmetic and expressions that recover the answers from the end of 2018. Otherwise, use expressions that do not use an arbitary and hard-coded maximum viscous coupling coefficient between layers. More...
 
logical debug
 If true, write verbose checksums for debugging purposes. More...
 
integer nkml
 The number of layers in the mixed layer. More...
 
integer, pointer ntrunc
 The number of times the velocity has been truncated since the last call to write_energy. More...
 
character(len=200) u_trunc_file
 The complete path to a file in which a column of u-accelerations are written if velocity truncations occur. More...
 
character(len=200) v_trunc_file
 The complete path to a file in which a column of v-accelerations are written if velocity truncations occur. More...
 
logical stokesmixing
 If true, do Stokes drift mixing via the Lagrangian current (Eulerian plus Stokes drift). False by default and set via STOKES_MIXING_COMBINED. More...
 
type(diag_ctrl), pointer diag
 A structure that is used to regulate the timing of diagnostic output. More...
 
type(pointaccel_cs), pointer pointaccel_csp => NULL()
 A pointer to the control structure for recording accelerations leading to velocity truncations. More...
 
integer id_du_dt_visc = -1
 Diagnostic identifiers. More...
 
integer id_dv_dt_visc = -1
 Diagnostic identifiers. More...
 
integer id_au_vv = -1
 Diagnostic identifiers. More...
 
integer id_av_vv = -1
 Diagnostic identifiers. More...
 
integer id_h_u = -1
 Diagnostic identifiers. More...
 
integer id_h_v = -1
 Diagnostic identifiers. More...
 
integer id_hml_u = -1
 Diagnostic identifiers. More...
 
integer id_hml_v = -1
 Diagnostic identifiers. More...
 
integer id_ray_u = -1
 Diagnostic identifiers. More...
 
integer id_ray_v = -1
 Diagnostic identifiers. More...
 
integer id_taux_bot = -1
 Diagnostic identifiers. More...
 
integer id_tauy_bot = -1
 Diagnostic identifiers. More...
 
integer id_kv_slow = -1
 Diagnostic identifiers. More...
 
integer id_kv_u = -1
 Diagnostic identifiers. More...
 
integer id_kv_v = -1
 Diagnostic identifiers. More...
 

Variables and constants

◆ a1_shelf_u

real, dimension(:,:), pointer mom_vert_friction::vertvisc_cs::a1_shelf_u => NULL()

The u-momentum coupling coefficient under ice shelves [Z T-1 ~> m s-1]. Retained to determine stress under shelves.

Definition at line 75 of file MOM_vert_friction.F90.

75  real, pointer, dimension(:,:) :: a1_shelf_u => null() !< The u-momentum coupling coefficient under

◆ a1_shelf_v

real, dimension(:,:), pointer mom_vert_friction::vertvisc_cs::a1_shelf_v => NULL()

The v-momentum coupling coefficient under ice shelves [Z T-1 ~> m s-1]. Retained to determine stress under shelves.

Definition at line 77 of file MOM_vert_friction.F90.

77  real, pointer, dimension(:,:) :: a1_shelf_v => null() !< The v-momentum coupling coefficient under

◆ a_u

real, dimension( : , : , : ), allocatable mom_vert_friction::vertvisc_cs::a_u

The u-drag coefficient across an interface [Z T-1 ~> m s-1].

Definition at line 67 of file MOM_vert_friction.F90.

67  real ALLOCABLE_, dimension(NIMEMB_PTR_,NJMEM_,NK_INTERFACE_) :: &
68  a_u !< The u-drag coefficient across an interface [Z T-1 ~> m s-1].

◆ a_v

real, dimension( : , : , : ), allocatable mom_vert_friction::vertvisc_cs::a_v

The v-drag coefficient across an interface [Z T-1 ~> m s-1].

Definition at line 71 of file MOM_vert_friction.F90.

71  real ALLOCABLE_, dimension(NIMEM_,NJMEMB_PTR_,NK_INTERFACE_) :: &
72  a_v !< The v-drag coefficient across an interface [Z T-1 ~> m s-1].

◆ answers_2018

logical mom_vert_friction::vertvisc_cs::answers_2018

If true, use the order of arithmetic and expressions that recover the answers from the end of 2018. Otherwise, use expressions that do not use an arbitary and hard-coded maximum viscous coupling coefficient between layers.

Definition at line 103 of file MOM_vert_friction.F90.

103  logical :: answers_2018 !< If true, use the order of arithmetic and expressions that recover the

◆ bottomdraglaw

logical mom_vert_friction::vertvisc_cs::bottomdraglaw

If true, the bottom stress is calculated with a drag law c_drag*|u|*u. The velocity magnitude may be an assumed value or it may be based on the actual velocity in the bottommost HBBL, depending on whether linear_drag is true.

Definition at line 81 of file MOM_vert_friction.F90.

81  logical :: bottomdraglaw !< If true, the bottom stress is calculated with a

◆ cfl_based_trunc

logical mom_vert_friction::vertvisc_cs::cfl_based_trunc

If true, base truncations on CFL numbers, not absolute velocities.

Definition at line 52 of file MOM_vert_friction.F90.

52  logical :: CFL_based_trunc !< If true, base truncations on CFL numbers, not

◆ cfl_report

real mom_vert_friction::vertvisc_cs::cfl_report

The value of the CFL number that will cause the accelerations to be reported, nondim. CFL_report will often equal CFL_trunc.

Definition at line 57 of file MOM_vert_friction.F90.

57  real :: CFL_report !< The value of the CFL number that will cause the

◆ cfl_trunc

real mom_vert_friction::vertvisc_cs::cfl_trunc

Velocity components will be truncated when they are large enough that the corresponding CFL number exceeds this value, nondim.

Definition at line 54 of file MOM_vert_friction.F90.

54  real :: CFL_trunc !< Velocity components will be truncated when they

◆ cfl_trunce

real mom_vert_friction::vertvisc_cs::cfl_trunce

The end/target value of CFL_trunc.

Definition at line 63 of file MOM_vert_friction.F90.

63  real :: CFL_truncE !< The end/target value of CFL_trunc

◆ cfl_truncs

real mom_vert_friction::vertvisc_cs::cfl_truncs

The start value of CFL_trunc.

Definition at line 62 of file MOM_vert_friction.F90.

62  real :: CFL_truncS !< The start value of CFL_trunc

◆ cflrampingisactivated

logical mom_vert_friction::vertvisc_cs::cflrampingisactivated = .false.

True if the ramping has been initialized.

Definition at line 64 of file MOM_vert_friction.F90.

64  logical :: CFLrampingIsActivated = .false. !< True if the ramping has been initialized

◆ channel_drag

logical mom_vert_friction::vertvisc_cs::channel_drag

If true, the drag is exerted directly on each layer according to what fraction of the bottom they overlie.

Definition at line 86 of file MOM_vert_friction.F90.

86  logical :: Channel_drag !< If true, the drag is exerted directly on each

◆ debug

logical mom_vert_friction::vertvisc_cs::debug

If true, write verbose checksums for debugging purposes.

Definition at line 107 of file MOM_vert_friction.F90.

107  logical :: debug !< If true, write verbose checksums for debugging purposes.

◆ diag

type(diag_ctrl), pointer mom_vert_friction::vertvisc_cs::diag

A structure that is used to regulate the timing of diagnostic output.

Definition at line 119 of file MOM_vert_friction.F90.

119  type(diag_ctrl), pointer :: diag !< A structure that is used to regulate the

◆ direct_stress

logical mom_vert_friction::vertvisc_cs::direct_stress

If true, the wind stress is distributed over the topmost Hmix_stress of fluid and KVML may be very small.

Definition at line 97 of file MOM_vert_friction.F90.

97  logical :: direct_stress !< If true, the wind stress is distributed over the

◆ dynamic_viscous_ml

logical mom_vert_friction::vertvisc_cs::dynamic_viscous_ml

If true, use the results from a dynamic calculation, perhaps based on a bulk Richardson number criterion, to determine the mixed layer thickness for viscosity.

Definition at line 99 of file MOM_vert_friction.F90.

99  logical :: dynamic_viscous_ML !< If true, use the results from a dynamic

◆ h_u

real, dimension( : , : , : ), allocatable mom_vert_friction::vertvisc_cs::h_u

The effective layer thickness at u-points [H ~> m or kg m-2].

Definition at line 69 of file MOM_vert_friction.F90.

69  real ALLOCABLE_, dimension(NIMEMB_PTR_,NJMEM_,NKMEM_) :: &
70  h_u !< The effective layer thickness at u-points [H ~> m or kg m-2].

◆ h_v

real, dimension( : , : , : ), allocatable mom_vert_friction::vertvisc_cs::h_v

The effective layer thickness at v-points [H ~> m or kg m-2].

Definition at line 73 of file MOM_vert_friction.F90.

73  real ALLOCABLE_, dimension(NIMEM_,NJMEMB_PTR_,NKMEM_) :: &
74  h_v !< The effective layer thickness at v-points [H ~> m or kg m-2].

◆ harm_bl_val

real mom_vert_friction::vertvisc_cs::harm_bl_val

A scale to determine when water is in the boundary layers based solely on harmonic mean thicknesses for the purpose of determining the extent to which the thicknesses used in the viscosities are upwinded.

Definition at line 93 of file MOM_vert_friction.F90.

93  real :: harm_BL_val !< A scale to determine when water is in the boundary

◆ harmonic_visc

logical mom_vert_friction::vertvisc_cs::harmonic_visc

If true, the harmonic mean thicknesses are used to calculate the viscous coupling between layers except near the bottom. Otherwise the arithmetic mean thickness is used except near the bottom.

Definition at line 89 of file MOM_vert_friction.F90.

89  logical :: harmonic_visc !< If true, the harmonic mean thicknesses are used

◆ hbbl

real mom_vert_friction::vertvisc_cs::hbbl

The static bottom boundary layer thickness [H ~> m or kg m-2].

Definition at line 45 of file MOM_vert_friction.F90.

45  real :: Hbbl !< The static bottom boundary layer thickness [H ~> m or kg m-2].

◆ hmix

real mom_vert_friction::vertvisc_cs::hmix

The mixed layer thickness in thickness units [H ~> m or kg m-2].

Definition at line 40 of file MOM_vert_friction.F90.

40  real :: Hmix !< The mixed layer thickness in thickness units [H ~> m or kg m-2].

◆ hmix_stress

real mom_vert_friction::vertvisc_cs::hmix_stress

The mixed layer thickness over which the wind stress is applied with direct_stress [H ~> m or kg m-2].

Definition at line 41 of file MOM_vert_friction.F90.

41  real :: Hmix_stress !< The mixed layer thickness over which the wind

◆ id_au_vv

integer mom_vert_friction::vertvisc_cs::id_au_vv = -1

Diagnostic identifiers.

Definition at line 123 of file MOM_vert_friction.F90.

◆ id_av_vv

integer mom_vert_friction::vertvisc_cs::id_av_vv = -1

Diagnostic identifiers.

Definition at line 123 of file MOM_vert_friction.F90.

◆ id_du_dt_visc

integer mom_vert_friction::vertvisc_cs::id_du_dt_visc = -1

Diagnostic identifiers.

Definition at line 123 of file MOM_vert_friction.F90.

123  integer :: id_du_dt_visc = -1, id_dv_dt_visc = -1, id_au_vv = -1, id_av_vv = -1

◆ id_dv_dt_visc

integer mom_vert_friction::vertvisc_cs::id_dv_dt_visc = -1

Diagnostic identifiers.

Definition at line 123 of file MOM_vert_friction.F90.

◆ id_h_u

integer mom_vert_friction::vertvisc_cs::id_h_u = -1

Diagnostic identifiers.

Definition at line 124 of file MOM_vert_friction.F90.

124  integer :: id_h_u = -1, id_h_v = -1, id_hml_u = -1 , id_hml_v = -1

◆ id_h_v

integer mom_vert_friction::vertvisc_cs::id_h_v = -1

Diagnostic identifiers.

Definition at line 124 of file MOM_vert_friction.F90.

◆ id_hml_u

integer mom_vert_friction::vertvisc_cs::id_hml_u = -1

Diagnostic identifiers.

Definition at line 124 of file MOM_vert_friction.F90.

◆ id_hml_v

integer mom_vert_friction::vertvisc_cs::id_hml_v = -1

Diagnostic identifiers.

Definition at line 124 of file MOM_vert_friction.F90.

◆ id_kv_slow

integer mom_vert_friction::vertvisc_cs::id_kv_slow = -1

Diagnostic identifiers.

Definition at line 126 of file MOM_vert_friction.F90.

126  integer :: id_Kv_slow = -1, id_kv_u = -1, id_kv_v = -1

◆ id_kv_u

integer mom_vert_friction::vertvisc_cs::id_kv_u = -1

Diagnostic identifiers.

Definition at line 126 of file MOM_vert_friction.F90.

◆ id_kv_v

integer mom_vert_friction::vertvisc_cs::id_kv_v = -1

Diagnostic identifiers.

Definition at line 126 of file MOM_vert_friction.F90.

◆ id_ray_u

integer mom_vert_friction::vertvisc_cs::id_ray_u = -1

Diagnostic identifiers.

Definition at line 125 of file MOM_vert_friction.F90.

125  integer :: id_Ray_u = -1, id_ray_v = -1, id_taux_bot = -1, id_tauy_bot = -1

◆ id_ray_v

integer mom_vert_friction::vertvisc_cs::id_ray_v = -1

Diagnostic identifiers.

Definition at line 125 of file MOM_vert_friction.F90.

◆ id_taux_bot

integer mom_vert_friction::vertvisc_cs::id_taux_bot = -1

Diagnostic identifiers.

Definition at line 125 of file MOM_vert_friction.F90.

◆ id_tauy_bot

integer mom_vert_friction::vertvisc_cs::id_tauy_bot = -1

Diagnostic identifiers.

Definition at line 125 of file MOM_vert_friction.F90.

◆ kv

real mom_vert_friction::vertvisc_cs::kv

The interior vertical viscosity [Z2 T-1 ~> m2 s-1].

Definition at line 44 of file MOM_vert_friction.F90.

44  real :: Kv !< The interior vertical viscosity [Z2 T-1 ~> m2 s-1].

◆ kvbbl

real mom_vert_friction::vertvisc_cs::kvbbl

The vertical viscosity in the bottom boundary layer [Z2 T-1 ~> m2 s-1].

Definition at line 46 of file MOM_vert_friction.F90.

46  real :: Kvbbl !< The vertical viscosity in the bottom boundary

◆ kvml

real mom_vert_friction::vertvisc_cs::kvml

The mixed layer vertical viscosity [Z2 T-1 ~> m2 s-1].

Definition at line 43 of file MOM_vert_friction.F90.

43  real :: Kvml !< The mixed layer vertical viscosity [Z2 T-1 ~> m2 s-1].

◆ maxvel

real mom_vert_friction::vertvisc_cs::maxvel

Velocity components greater than maxvel are truncated [L T-1 ~> m s-1].

Definition at line 49 of file MOM_vert_friction.F90.

49  real :: maxvel !< Velocity components greater than maxvel are truncated [L T-1 ~> m s-1].

◆ nkml

integer mom_vert_friction::vertvisc_cs::nkml

The number of layers in the mixed layer.

Definition at line 108 of file MOM_vert_friction.F90.

108  integer :: nkml !< The number of layers in the mixed layer.

◆ ntrunc

integer, pointer mom_vert_friction::vertvisc_cs::ntrunc

The number of times the velocity has been truncated since the last call to write_energy.

Definition at line 109 of file MOM_vert_friction.F90.

109  integer, pointer :: ntrunc !< The number of times the velocity has been

◆ pointaccel_csp

type(pointaccel_cs), pointer mom_vert_friction::vertvisc_cs::pointaccel_csp => NULL()

A pointer to the control structure for recording accelerations leading to velocity truncations.

Definition at line 129 of file MOM_vert_friction.F90.

129  type(PointAccel_CS), pointer :: PointAccel_CSp => null() !< A pointer to the control structure

◆ rampstarttime

type(time_type) mom_vert_friction::vertvisc_cs::rampstarttime

The time at which the ramping of CFL_trunc starts.

Definition at line 65 of file MOM_vert_friction.F90.

65  type(time_type) :: rampStartTime !< The time at which the ramping of CFL_trunc starts

◆ split

logical mom_vert_friction::vertvisc_cs::split

If true, use the split time stepping scheme.

Definition at line 80 of file MOM_vert_friction.F90.

80  logical :: split !< If true, use the split time stepping scheme.

◆ stokesmixing

logical mom_vert_friction::vertvisc_cs::stokesmixing

If true, do Stokes drift mixing via the Lagrangian current (Eulerian plus Stokes drift). False by default and set via STOKES_MIXING_COMBINED.

Definition at line 115 of file MOM_vert_friction.F90.

115  logical :: StokesMixing !< If true, do Stokes drift mixing via the Lagrangian current

◆ truncramptime

real mom_vert_friction::vertvisc_cs::truncramptime

The time-scale over which to ramp up the value of CFL_trunc from CFL_truncS to CFL_truncE.

Definition at line 60 of file MOM_vert_friction.F90.

60  real :: truncRampTime !< The time-scale over which to ramp up the value of

◆ u_trunc_file

character(len=200) mom_vert_friction::vertvisc_cs::u_trunc_file

The complete path to a file in which a column of u-accelerations are written if velocity truncations occur.

Definition at line 111 of file MOM_vert_friction.F90.

111  character(len=200) :: u_trunc_file !< The complete path to a file in which a column of

◆ v_trunc_file

character(len=200) mom_vert_friction::vertvisc_cs::v_trunc_file

The complete path to a file in which a column of v-accelerations are written if velocity truncations occur.

Definition at line 113 of file MOM_vert_friction.F90.

113  character(len=200) :: v_trunc_file !< The complete path to a file in which a column of

◆ vel_underflow

real mom_vert_friction::vertvisc_cs::vel_underflow

Velocity components smaller than vel_underflow are set to 0 [L T-1 ~> m s-1].

Definition at line 50 of file MOM_vert_friction.F90.

50  real :: vel_underflow !< Velocity components smaller than vel_underflow

The documentation for this type was generated from the following file: