diff --git a/config_src/coupled_driver/MOM_surface_forcing.F90 b/config_src/coupled_driver/MOM_surface_forcing.F90 index fc646a4f56..e10d0fb9ca 100644 --- a/config_src/coupled_driver/MOM_surface_forcing.F90 +++ b/config_src/coupled_driver/MOM_surface_forcing.F90 @@ -802,10 +802,10 @@ subroutine extract_IOB_stresses(IOB, index_bounds, Time, G, US, CS, taux, tauy, real, dimension(SZI_(G),SZJB_(G)), & optional, intent(inout) :: tauy !< The meridional wind stresses on a C-grid, in Pa. real, dimension(SZI_(G),SZJ_(G)), & - optional, intent(inout) :: ustar !< The surface friction velocity, in Z s-1. + optional, intent(inout) :: ustar !< The surface friction velocity, in Z s-1 ~> m s-1. real, dimension(SZI_(G),SZJ_(G)), & optional, intent(out) :: gustless_ustar !< The surface friction velocity without - !! any contributions from gustiness, in Z s-1. + !! any contributions from gustiness, in Z s-1 ~> m s-1. integer, optional, intent(in) :: tau_halo !< The halo size of wind stresses to set, 0 by default. ! Local variables diff --git a/config_src/ice_solo_driver/user_surface_forcing.F90 b/config_src/ice_solo_driver/user_surface_forcing.F90 index 22ea1d08fb..06ba823d9c 100644 --- a/config_src/ice_solo_driver/user_surface_forcing.F90 +++ b/config_src/ice_solo_driver/user_surface_forcing.F90 @@ -103,7 +103,7 @@ subroutine USER_wind_forcing(sfc_state, forces, day, G, US, CS) ! These are the stresses in the direction of the model grid (i.e. the same ! direction as the u- and v- velocities.) They are both in Pa. ! In addition, this subroutine can be used to set the surface friction -! velocity, forces%ustar, in Z s-1. This is needed with a bulk mixed layer. +! velocity, forces%ustar, in Z s-1 ~> m s-1. This is needed with a bulk mixed layer. ! ! Arguments: state - A structure containing fields that describe the ! surface state of the ocean. diff --git a/src/ALE/MOM_ALE.F90 b/src/ALE/MOM_ALE.F90 index 6f81466685..607753cfac 100644 --- a/src/ALE/MOM_ALE.F90 +++ b/src/ALE/MOM_ALE.F90 @@ -130,7 +130,7 @@ subroutine ALE_init( param_file, GV, US, max_depth, CS) type(param_file_type), intent(in) :: param_file !< Parameter file type(verticalGrid_type), intent(in) :: GV !< Ocean vertical grid structure type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type - real, intent(in) :: max_depth !< The maximum depth of the ocean, in Z. + real, intent(in) :: max_depth !< The maximum depth of the ocean, in Z ~> m. type(ALE_CS), pointer :: CS !< Module control structure ! Local variables @@ -1102,7 +1102,7 @@ end subroutine pressure_gradient_ppm subroutine ALE_initRegridding(GV, US, max_depth, param_file, mdl, regridCS) type(verticalGrid_type), intent(in) :: GV !< Ocean vertical grid structure type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type - real, intent(in) :: max_depth !< The maximum depth of the ocean, in Z. + real, intent(in) :: max_depth !< The maximum depth of the ocean, in Z ~> m. type(param_file_type), intent(in) :: param_file !< parameter file character(len=*), intent(in) :: mdl !< Name of calling module type(regridding_CS), intent(out) :: regridCS !< Regridding parameters and work arrays diff --git a/src/ALE/MOM_regridding.F90 b/src/ALE/MOM_regridding.F90 index f7dcaa2648..5da749a8d0 100644 --- a/src/ALE/MOM_regridding.F90 +++ b/src/ALE/MOM_regridding.F90 @@ -172,7 +172,7 @@ subroutine initialize_regridding(CS, GV, US, max_depth, param_file, mdl, coord_m type(regridding_CS), intent(inout) :: CS !< Regridding control structure type(verticalGrid_type), intent(in) :: GV !< Ocean vertical grid structure type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type - real, intent(in) :: max_depth !< The maximum depth of the ocean, in Z. + real, intent(in) :: max_depth !< The maximum depth of the ocean, in Z ~> m. type(param_file_type), intent(in) :: param_file !< Parameter file character(len=*), intent(in) :: mdl !< Name of calling module. character(len=*), intent(in) :: coord_mode !< Coordinate mode diff --git a/src/core/MOM.F90 b/src/core/MOM.F90 index b2d211796f..79eed5a912 100644 --- a/src/core/MOM.F90 +++ b/src/core/MOM.F90 @@ -2707,10 +2707,10 @@ subroutine extract_surface_state(CS, sfc_state) u => NULL(), & !< u : zonal velocity component (m/s) v => NULL(), & !< v : meridional velocity component (m/s) h => NULL() !< h : layer thickness (meter (Bouss) or kg/m2 (non-Bouss)) - real :: depth(SZI_(CS%G)) !< Distance from the surface in depth units (Z) + real :: depth(SZI_(CS%G)) !< Distance from the surface in depth units (Z ~> m) real :: depth_ml !< Depth over which to average to determine mixed - !! layer properties (Z) - real :: dh !< Thickness of a layer within the mixed layer (Z) + !! layer properties (Z ~> m) + real :: dh !< Thickness of a layer within the mixed layer (Z ~> m) real :: mass !< Mass per unit area of a layer (kg/m2) real :: bathy_m !< The depth of bathymetry in m (not Z), used for error checking. real :: T_freeze !< freezing temperature (oC) diff --git a/src/core/MOM_PressureForce_Montgomery.F90 b/src/core/MOM_PressureForce_Montgomery.F90 index 164229f894..d2c533a34c 100644 --- a/src/core/MOM_PressureForce_Montgomery.F90 +++ b/src/core/MOM_PressureForce_Montgomery.F90 @@ -98,9 +98,9 @@ subroutine PressureForce_Mont_nonBouss(h, tv, PFu, PFv, G, GV, US, CS, p_atm, pb ! enable the use of a reduced gravity form of the equations, ! in m2 s-2. dp_star, & ! Layer thickness after compensation for compressibility, in Pa. - SSH, & ! The sea surface height anomaly, in depth units (Z). + SSH, & ! The sea surface height anomaly, in depth units (Z ~> m). e_tidal, & ! Bottom geopotential anomaly due to tidal forces from - ! astronomical sources and self-attraction and loading, in Z. + ! astronomical sources and self-attraction and loading, in Z ~> m. geopot_bot ! Bottom geopotential relative to time-mean sea level, ! including any tidal contributions, in units of m2 s-2. real :: p_ref(SZI_(G)) ! The pressure used to calculate the coordinate @@ -390,10 +390,10 @@ subroutine PressureForce_Mont_Bouss(h, tv, PFu, PFv, G, GV, US, CS, p_atm, pbce, real :: Rho_cv_BL(SZI_(G)) ! The coordinate potential density in ! the deepest variable density near-surface layer, in kg m-3. real :: h_star(SZI_(G),SZJ_(G)) ! Layer thickness after compensation - ! for compressibility, in m. + ! for compressibility, in Z ~> m. real :: e_tidal(SZI_(G),SZJ_(G)) ! Bottom geopotential anomaly due to tidal ! forces from astronomical sources and self- - ! attraction and loading, in depth units (Z). + ! attraction and loading, in depth units (Z ~> m). real :: p_ref(SZI_(G)) ! The pressure used to calculate the coordinate ! density, in Pa (usually 2e7 Pa = 2000 dbar). real :: I_Rho0 ! 1/Rho0, in m3 kg-1. @@ -402,7 +402,7 @@ subroutine PressureForce_Mont_Bouss(h, tv, PFu, PFv, G, GV, US, CS, p_atm, pbce, ! compensated density gradients, in m s-2. real :: dr ! Temporary variables. real :: h_neglect ! A thickness that is so small it is usually lost - ! in roundoff and can be neglected, in m. + ! in roundoff and can be neglected, in Z ~> m. logical :: use_p_atm ! If true, use the atmospheric pressure. logical :: use_EOS ! If true, density is calculated from T & S using ! an equation of state. @@ -603,7 +603,7 @@ end subroutine PressureForce_Mont_Bouss subroutine Set_pbce_Bouss(e, tv, G, GV, Rho0, GFS_scale, pbce, rho_star) type(ocean_grid_type), intent(in) :: G !< Ocean grid structure type(verticalGrid_type), intent(in) :: GV !< Vertical grid structure - real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1), intent(in) :: e !< Interface height, in Z. + real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1), intent(in) :: e !< Interface height, in Z ~> m. type(thermo_var_ptrs), intent(in) :: tv !< Thermodynamic variables real, intent(in) :: Rho0 !< The "Boussinesq" ocean density, in kg m-3. real, intent(in) :: GFS_scale !< Ratio between gravity applied to top interface @@ -614,7 +614,7 @@ subroutine Set_pbce_Bouss(e, tv, G, GV, Rho0, GFS_scale, pbce, rho_star) !! to free surface height anomalies, in m2 H-1 s-2. real, dimension(SZI_(G),SZJ_(G),SZK_(G)), & optional, intent(in) :: rho_star !< The layer densities (maybe compressibility - !! compensated), times g/rho_0, in m2 Z-1 s-2. + !! compensated), times g/rho_0, in m2 Z-1 s-2 ~> m s-2. ! Local variables real :: Ihtot(SZI_(G)) ! The inverse of the sum of the layer thicknesses, in H-1. @@ -624,12 +624,12 @@ subroutine Set_pbce_Bouss(e, tv, G, GV, Rho0, GFS_scale, pbce, rho_star) real :: dR_dT(SZI_(G)) ! Partial derivatives of density with temperature real :: dR_dS(SZI_(G)) ! and salinity in kg m-3 K-1 and kg m-3 PSU-1. real :: rho_in_situ(SZI_(G)) !In-situ density at the top of a layer. - real :: G_Rho0 ! G_Earth / Rho0 in m5 Z-1 s-2 kg-1. - real :: Rho0xG ! g_Earth * Rho0 in kg s-2 m-1 Z-1. + real :: G_Rho0 ! G_Earth / Rho0 in m5 Z-1 s-2 kg-1 ~> m4 s-2 kg-1. + real :: Rho0xG ! g_Earth * Rho0 in kg s-2 m-1 Z-1 ~> kg m-2 m-2. logical :: use_EOS ! If true, density is calculated from T & S using ! an equation of state. real :: z_neglect ! A thickness that is so small it is usually lost - ! in roundoff and can be neglected, in Z. + ! in roundoff and can be neglected, in Z ~> m. integer :: Isq, Ieq, Jsq, Jeq, nz, i, j, k Isq = G%IscB ; Ieq = G%IecB ; Jsq = G%JscB ; Jeq = G%JecB ; nz = G%ke diff --git a/src/core/MOM_PressureForce_analytic_FV.F90 b/src/core/MOM_PressureForce_analytic_FV.F90 index a674a43731..e49f77d054 100644 --- a/src/core/MOM_PressureForce_analytic_FV.F90 +++ b/src/core/MOM_PressureForce_analytic_FV.F90 @@ -130,9 +130,9 @@ subroutine PressureForce_AFV_nonBouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p ! the pressure anomaly at the top of the layer, in Pa m2 s-2. real, dimension(SZI_(G),SZJ_(G)) :: & dp, & ! The (positive) change in pressure across a layer, in Pa. - SSH, & ! The sea surface height anomaly, in depth units (Z). + SSH, & ! The sea surface height anomaly, in depth units (Z ~> m). e_tidal, & ! The bottom geopotential anomaly due to tidal forces from - ! astronomical sources and self-attraction and loading, in Z. + ! astronomical sources and self-attraction and loading, in Z ~> m. dM, & ! The barotropic adjustment to the Montgomery potential to ! account for a reduced gravity model, in m2 s-2. za ! The geopotential anomaly (i.e. g*e + alpha_0*pressure) at the @@ -155,7 +155,7 @@ subroutine PressureForce_AFV_nonBouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p real :: dp_neglect ! A thickness that is so small it is usually lost ! in roundoff and can be neglected, in Pa. - real :: g_Earth_z ! A scaled version of g_Earth, in m2 Z-1 s-2. + real :: g_Earth_z ! A scaled version of g_Earth, in m2 Z-1 s-2 ~> m s-2. real :: I_gEarth ! The inverse of g_Earth_z, in s2 Z m-2 real :: alpha_anom ! The in-situ specific volume, averaged over a ! layer, less alpha_ref, in m3 kg-1. @@ -456,10 +456,10 @@ subroutine PressureForce_AFV_Bouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p_at !! calculate PFu and PFv, in H, with any tidal !! contributions or compressibility compensation. ! Local variables - real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1) :: e ! Interface height in depth units (Z). + real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1) :: e ! Interface height in depth units (Z ~> m). real, dimension(SZI_(G),SZJ_(G)) :: & e_tidal, & ! The bottom geopotential anomaly due to tidal forces from - ! astronomical sources and self-attraction and loading, in Z. + ! astronomical sources and self-attraction and loading, in Z ~> m. dM ! The barotropic adjustment to the Montgomery potential to ! account for a reduced gravity model, in m2 s-2. real, dimension(SZI_(G)) :: & @@ -496,11 +496,11 @@ subroutine PressureForce_AFV_Bouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p_at real :: p0(SZI_(G)) ! An array of zeros to use for pressure in Pa. real :: h_neglect ! A thickness that is so small it is usually lost ! in roundoff and can be neglected, in m. - real :: g_Earth_z ! A scaled version of g_Earth, in m2 Z-1 s-2. + real :: g_Earth_z ! A scaled version of g_Earth, in m2 Z-1 s-2 ~> m s-2. real :: I_Rho0 ! 1/Rho0. real :: G_Rho0 ! G_Earth / Rho0 in m5 Z-1 s-2 kg-1. real :: Rho_ref ! The reference density in kg m-3. - real :: dz_neglect ! A minimal thickness in Z, like e. + real :: dz_neglect ! A minimal thickness in Z ~> m, like e. logical :: use_p_atm ! If true, use the atmospheric pressure. logical :: use_ALE ! If true, use an ALE pressure reconstruction. logical :: use_EOS ! If true, density is calculated from T & S using an equation of state. diff --git a/src/core/MOM_PressureForce_blocked_AFV.F90 b/src/core/MOM_PressureForce_blocked_AFV.F90 index 74e29e0f69..affaa40012 100644 --- a/src/core/MOM_PressureForce_blocked_AFV.F90 +++ b/src/core/MOM_PressureForce_blocked_AFV.F90 @@ -126,9 +126,9 @@ subroutine PressureForce_blk_AFV_nonBouss(h, tv, PFu, PFv, G, GV, US, CS, p_atm, ! the pressure anomaly at the top of the layer, in Pa m2 s-2. real, dimension(SZI_(G),SZJ_(G)) :: & dp, & ! The (positive) change in pressure across a layer, in Pa. - SSH, & ! The sea surface height anomaly, in depth units (Z). + SSH, & ! The sea surface height anomaly, in depth units (Z ~> m). e_tidal, & ! The bottom geopotential anomaly due to tidal forces from - ! astronomical sources and self-attraction and loading, in Z. + ! astronomical sources and self-attraction and loading, in Z ~> m. dM, & ! The barotropic adjustment to the Montgomery potential to ! account for a reduced gravity model, in m2 s-2. za ! The geopotential anomaly (i.e. g*e + alpha_0*pressure) at the @@ -155,8 +155,8 @@ subroutine PressureForce_blk_AFV_nonBouss(h, tv, PFu, PFv, G, GV, US, CS, p_atm, real :: dp_neglect ! A thickness that is so small it is usually lost ! in roundoff and can be neglected, in Pa. - real :: g_Earth_z ! A scaled version of g_Earth, in m2 Z-1 s-2. - real :: I_gEarth ! The inverse of g_Earth_z, in s2 Z m-2 + real :: g_Earth_z ! A scaled version of g_Earth, in m2 Z-1 s-2 ~> m s-2. + real :: I_gEarth ! The inverse of g_Earth_z, in s2 Z m-2 ~> s2 m-1. real :: alpha_anom ! The in-situ specific volume, averaged over a ! layer, less alpha_ref, in m3 kg-1. logical :: use_p_atm ! If true, use the atmospheric pressure. @@ -439,10 +439,10 @@ subroutine PressureForce_blk_AFV_Bouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, !! calculate PFu and PFv, in H, with any tidal !! contributions or compressibility compensation. ! Local variables - real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1) :: e ! Interface height in depth units (Z). + real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1) :: e ! Interface height in depth units (Z ~> m). real, dimension(SZI_(G),SZJ_(G)) :: & e_tidal, & ! The bottom geopotential anomaly due to tidal forces from - ! astronomical sources and self-attraction and loading, in depth units (Z). + ! astronomical sources and self-attraction and loading, in depth units (Z ~> m). dM ! The barotropic adjustment to the Montgomery potential to ! account for a reduced gravity model, in m2 s-2. real, dimension(SZI_(G)) :: & @@ -480,10 +480,10 @@ subroutine PressureForce_blk_AFV_Bouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, real :: h_neglect ! A thickness that is so small it is usually lost ! in roundoff and can be neglected, in H. real :: I_Rho0 ! 1/Rho0. - real :: g_Earth_z ! A scaled version of g_Earth, in m2 Z-1 s-2. + real :: g_Earth_z ! A scaled version of g_Earth, in m2 Z-1 s-2 ~> m s-2. real :: G_Rho0 ! G_Earth / Rho0 in m5 Z-1 s-2 kg-1. real :: Rho_ref ! The reference density in kg m-3. - real :: dz_neglect ! A minimal thickness in Z, like e. + real :: dz_neglect ! A minimal thickness in Z ~> m, like e. logical :: use_p_atm ! If true, use the atmospheric pressure. logical :: use_ALE ! If true, use an ALE pressure reconstruction. logical :: use_EOS ! If true, density is calculated from T & S using an diff --git a/src/core/MOM_barotropic.F90 b/src/core/MOM_barotropic.F90 index 7095d370b6..9a652e23a3 100644 --- a/src/core/MOM_barotropic.F90 +++ b/src/core/MOM_barotropic.F90 @@ -98,7 +98,7 @@ module MOM_barotropic real ALLOCABLE_, dimension(NIMEM_,NJMEMB_PTR_,NKMEM_) :: frhatv !< The fraction of the total column thickness interpolated to v grid points in each layer, nondim. real ALLOCABLE_, dimension(NIMEMB_PTR_,NJMEM_) :: IDatu - !< Inverse of the basin depth at u grid points, in Z-1. + !< Inverse of the basin depth at u grid points, in Z-1 ~> m-1. real ALLOCABLE_, dimension(NIMEMB_PTR_,NJMEM_) :: lin_drag_u !< A spatially varying linear drag coefficient acting on the zonal barotropic flow, in H s-1. real ALLOCABLE_, dimension(NIMEMB_PTR_,NJMEM_) :: uhbt_IC @@ -110,7 +110,7 @@ module MOM_barotropic real ALLOCABLE_, dimension(NIMEMB_PTR_,NJMEM_) :: ubtav !< The barotropic zonal velocity averaged over the baroclinic time step, m s-1. real ALLOCABLE_, dimension(NIMEM_,NJMEMB_PTR_) :: IDatv - !< Inverse of the basin depth at v grid points, in Z-1. + !< Inverse of the basin depth at v grid points, in Z-1 ~> m-1. real ALLOCABLE_, dimension(NIMEM_,NJMEMB_PTR_) :: lin_drag_v !< A spatially varying linear drag coefficient acting on the zonal barotropic flow, in H s-1. real ALLOCABLE_, dimension(NIMEM_,NJMEMB_PTR_) :: vhbt_IC @@ -136,15 +136,15 @@ module MOM_barotropic !< This is a copy of G%IareaT with wide halos, but will !! still utilize the macro IareaT when referenced, m-2. real ALLOCABLE_, dimension(NIMEMBW_,NJMEMW_) :: & - D_u_Cor, & !< A simply averaged depth at u points, in Z. + D_u_Cor, & !< A simply averaged depth at u points, in Z ~> m. dy_Cu, & !< A copy of G%dy_Cu with wide halos, in m. IdxCu !< A copy of G%IdxCu with wide halos, in m-1. real ALLOCABLE_, dimension(NIMEMW_,NJMEMBW_) :: & - D_v_Cor, & !< A simply averaged depth at v points, in Z. + D_v_Cor, & !< A simply averaged depth at v points, in Z ~> m. dx_Cv, & !< A copy of G%dx_Cv with wide halos, in m. IdyCv !< A copy of G%IdyCv with wide halos, in m-1. real ALLOCABLE_, dimension(NIMEMBW_,NJMEMBW_) :: & - q_D !< f / D at PV points, in Z-1 s-1. + q_D !< f / D at PV points, in Z-1 s-1 ~> m-1 s-1. real, dimension(:,:,:), pointer :: frhatu1 => NULL() !< Predictor step values of frhatu stored for diagnostics. real, dimension(:,:,:), pointer :: frhatv1 => NULL() !< Predictor step values of frhatv stored for diagnostics. @@ -498,7 +498,7 @@ subroutine btstep(U_in, V_in, eta_in, dt, bc_accel_u, bc_accel_v, forces, pbce, Rayleigh_u, & ! A Rayleigh drag timescale operating at u-points, in s-1. PFu_bt_sum, & ! The summed zonal barotropic pressure gradient force, in m s-2. Coru_bt_sum, & ! The summed zonal barotropic Coriolis acceleration, in m s-2. - DCor_u, & ! A simply averaged depth at u points, in Z. + DCor_u, & ! A simply averaged depth at u points, in Z ~> m. Datu ! Basin depth at u-velocity grid points times the y-grid ! spacing, in H m. real, dimension(SZIW_(CS),SZJBW_(CS)) :: & @@ -529,7 +529,7 @@ subroutine btstep(U_in, V_in, eta_in, dt, bc_accel_u, bc_accel_v, forces, pbce, ! in m s-2. Corv_bt_sum, & ! The summed meridional barotropic Coriolis acceleration, ! in m s-2. - DCor_v, & ! A simply averaged depth at v points, in Z. + DCor_v, & ! A simply averaged depth at v points, in Z ~> m. Datv ! Basin depth at v-velocity grid points times the x-grid ! spacing, in H m. real, target, dimension(SZIW_(CS),SZJW_(CS)) :: & @@ -2272,10 +2272,10 @@ subroutine set_dtbt(G, GV, US, CS, eta, pbce, BT_cont, gtot_est, SSH_add) !! the effective open face areas as a !! function of barotropic flow. real, optional, intent(in) :: gtot_est !< An estimate of the total gravitational - !! acceleration, in m2 Z-1 s-2. + !! acceleration, in m2 Z-1 s-2 ~> m s-2. real, optional, intent(in) :: SSH_add !< An additional contribution to SSH to !! provide a margin of error when - !! calculating the external wave speed, in Z. + !! calculating the external wave speed, in Z ~> m. ! Local variables real, dimension(SZI_(G),SZJ_(G)) :: & @@ -2299,7 +2299,7 @@ subroutine set_dtbt(G, GV, US, CS, eta, pbce, BT_cont, gtot_est, SSH_add) ! order 1. For stability, this may be made larger ! than physical problem would suggest. real :: add_SSH ! An additional contribution to SSH to provide a margin of error - ! when calculating the external wave speed, in Z. + ! when calculating the external wave speed, in Z ~> m. real :: min_max_dt2, Idt_max2, dtbt_max logical :: use_BT_cont type(memory_size_type) :: MS @@ -3537,7 +3537,7 @@ subroutine find_face_areas(Datu, Datv, G, GV, CS, MS, eta, halo, add_max) !! or column mass anomaly, in H (m or kg m-2). integer, optional, intent(in) :: halo !< The halo size to use, default = 1. real, optional, intent(in) :: add_max !< A value to add to the maximum depth (used - !! to overestimate the external wave speed) in Z. + !! to overestimate the external wave speed) in Z ~> m. ! Local variables real :: H1, H2 ! Temporary total thicknesses, in m or kg m-2. @@ -3693,7 +3693,7 @@ subroutine barotropic_init(u, v, h, eta, Time, G, GV, US, param_file, diag, CS, intent(in) :: h !< Layer thicknesses, in H (usually m or kg m-2). real, dimension(SZI_(G),SZJ_(G)), & intent(in) :: eta !< Free surface height or column mass anomaly, in - !! m or kg m-2. + !! Z ~> m or H ~> kg m-2. type(time_type), target, intent(in) :: Time !< The current model time. type(param_file_type), intent(in) :: param_file !< A structure to parse for run-time parameters. type(diag_ctrl), target, intent(inout) :: diag !< A structure that is used to regulate diagnostic @@ -3717,9 +3717,9 @@ subroutine barotropic_init(u, v, h, eta, Time, G, GV, US, param_file, diag, CS, character(len=40) :: mdl = "MOM_barotropic" ! This module's name. real :: Datu(SZIBS_(G),SZJ_(G)) ! Zonal open face area in H m. real :: Datv(SZI_(G),SZJBS_(G)) ! Meridional open face area in H m. - real :: gtot_estimate ! Summed GV%g_prime in m2 Z-1 s-2, to give an upper-bound estimate for pbce. + real :: gtot_estimate ! Summed GV%g_prime, in m2 Z-1 s-2 ~> m s-2, to give an upper-bound estimate for pbce. real :: SSH_extra ! An estimate of how much higher SSH might get, for use - ! in calculating the safe external wave speed, in Z. + ! in calculating the safe external wave speed, in Z ~> m. real :: dtbt_input, dtbt_tmp real :: wave_drag_scale ! A scaling factor for the barotropic linear wave drag ! piston velocities. diff --git a/src/core/MOM_forcing_type.F90 b/src/core/MOM_forcing_type.F90 index 69f39c7ddb..ac72bafe32 100644 --- a/src/core/MOM_forcing_type.F90 +++ b/src/core/MOM_forcing_type.F90 @@ -45,9 +45,9 @@ module MOM_forcing_type ! surface stress components and turbulent velocity scale real, pointer, dimension(:,:) :: & - ustar => NULL(), & !< surface friction velocity scale (Z/s) + ustar => NULL(), & !< surface friction velocity scale, in Z s-1 ~> m s-1. ustar_gustless => NULL() !< surface friction velocity scale without any - !! any augmentation for gustiness (Z/s) + !! any augmentation for gustiness, in Z s-1 ~> m s-1. ! surface buoyancy force, used when temperature is not a state variable real, pointer, dimension(:,:) :: & @@ -129,12 +129,12 @@ module MOM_forcing_type ! iceberg related inputs real, pointer, dimension(:,:) :: & - ustar_berg => NULL(), & !< iceberg contribution to top ustar (Z/s) + ustar_berg => NULL(), & !< iceberg contribution to top ustar, in Z s-1 ~> m s-1. area_berg => NULL(), & !< area of ocean surface covered by icebergs (m2/m2) mass_berg => NULL() !< mass of icebergs (kg/m2) ! land ice-shelf related inputs - real, pointer, dimension(:,:) :: ustar_shelf => NULL() !< Friction velocity under ice-shelves (in Z/s) + real, pointer, dimension(:,:) :: ustar_shelf => NULL() !< Friction velocity under ice-shelves, in Z s-1 ~> m s-1. !! as computed by the ocean at the previous time step. real, pointer, dimension(:,:) :: frac_shelf_h => NULL() !< Fractional ice shelf coverage of h-cells, nondimensional !! cells, nondimensional from 0 to 1. This is only @@ -181,7 +181,7 @@ module MOM_forcing_type real, pointer, dimension(:,:) :: & taux => NULL(), & !< zonal wind stress (Pa) tauy => NULL(), & !< meridional wind stress (Pa) - ustar => NULL(), & !< surface friction velocity scale (Z/s) + ustar => NULL(), & !< surface friction velocity scale, in Z s-1 ~> m s-1. net_mass_src => NULL() !< The net mass source to the ocean, in kg m-2 s-1. ! applied surface pressure from other component models (e.g., atmos, sea ice, land ice) @@ -1970,7 +1970,7 @@ subroutine set_derived_forcing_fields(forces, fluxes, G, US, Rho0) !! as used to calculate ustar. real :: taux2, tauy2 ! Squared wind stress components, in Pa^2. - real :: Irho0 ! Inverse of the mean density rescaled to (Z2 m / kg) + real :: Irho0 ! Inverse of the mean density rescaled to (Z2 m / kg ~> m3 kg-1) integer :: i, j, is, ie, js, je is = G%isc ; ie = G%iec ; js = G%jsc ; je = G%jec diff --git a/src/core/MOM_grid.F90 b/src/core/MOM_grid.F90 index e226598b7f..11fe7813cd 100644 --- a/src/core/MOM_grid.F90 +++ b/src/core/MOM_grid.F90 @@ -164,7 +164,7 @@ module MOM_grid real :: len_lat = 0. !< The latitudinal (or y-coord) extent of physical domain real :: len_lon = 0. !< The longitudinal (or x-coord) extent of physical domain real :: Rad_Earth = 6.378e6 !< The radius of the planet in meters. - real :: max_depth !< The maximum depth of the ocean in depth units (Z). + real :: max_depth !< The maximum depth of the ocean in depth units (Z ~> m). end type ocean_grid_type contains diff --git a/src/core/MOM_isopycnal_slopes.F90 b/src/core/MOM_isopycnal_slopes.F90 index c6bbff50fd..2c394c8ddc 100644 --- a/src/core/MOM_isopycnal_slopes.F90 +++ b/src/core/MOM_isopycnal_slopes.F90 @@ -24,12 +24,12 @@ subroutine calc_isoneutral_slopes(G, GV, US, h, e, tv, dt_kappa_smooth, & type(verticalGrid_type), intent(in) :: GV !< The ocean's vertical grid structure type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(in) :: h !< Layer thicknesses, in H (usually m or kg m-2) - real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1), intent(in) :: e !< Interface heights (in Z or units + real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1), intent(in) :: e !< Interface heights (in Z ~> m or units !! given by 1/eta_to_m) type(thermo_var_ptrs), intent(in) :: tv !< A structure pointing to various !! thermodynamic variables real, intent(in) :: dt_kappa_smooth !< A smoothing vertical diffusivity - !! times a smoothing timescale, in Z2. + !! times a smoothing timescale, in Z2 ~> m2. real, dimension(SZIB_(G),SZJ_(G),SZK_(G)+1), intent(inout) :: slope_x !< Isopycnal slope in i-direction (nondim) real, dimension(SZI_(G),SZJB_(G),SZK_(G)+1), intent(inout) :: slope_y !< Isopycnal slope in j-direction (nondim) real, dimension(SZIB_(G),SZJ_(G),SZK_(G)+1), & @@ -332,7 +332,7 @@ subroutine vert_fill_TS(h, T_in, S_in, kappa_dt, T_f, S_f, G, GV, halo_here) real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(in) :: T_in !< Temperature (deg C) real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(in) :: S_in !< Salinity (psu) real, intent(in) :: kappa_dt !< A vertical diffusivity to use for smoothing - !! times a smoothing timescale, in Z2. + !! times a smoothing timescale, in Z2 ~> m2. real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(out) :: T_f !< Filled temperature (deg C) real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(out) :: S_f !< Filed salinity (psu) integer, optional, intent(in) :: halo_here !< Halo width over which to compute diff --git a/src/core/MOM_variables.F90 b/src/core/MOM_variables.F90 index 4aa14cb082..246b5f764e 100644 --- a/src/core/MOM_variables.F90 +++ b/src/core/MOM_variables.F90 @@ -195,11 +195,11 @@ module MOM_variables real :: Prandtl_turb !< The Prandtl number for the turbulent diffusion !! that is captured in Kd_shear. real, pointer, dimension(:,:) :: & - bbl_thick_u => NULL(), & !< The bottom boundary layer thickness at the u-points, in Z. - bbl_thick_v => NULL(), & !< The bottom boundary layer thickness at the v-points, in Z. - kv_bbl_u => NULL(), & !< The bottom boundary layer viscosity at the u-points, in Z2 s-1. - kv_bbl_v => NULL(), & !< The bottom boundary layer viscosity at the v-points, in Z2 s-1. - ustar_BBL => NULL() !< The turbulence velocity in the bottom boundary layer at h points, in Z s-1. + bbl_thick_u => NULL(), & !< The bottom boundary layer thickness at the u-points, in Z ~> m. + bbl_thick_v => NULL(), & !< The bottom boundary layer thickness at the v-points, in Z ~> m. + kv_bbl_u => NULL(), & !< The bottom boundary layer viscosity at the u-points, in Z2 s-1 ~> m2 s-1. + kv_bbl_v => NULL(), & !< The bottom boundary layer viscosity at the v-points, in Z2 s-1 ~> m2 s-1. + ustar_BBL => NULL() !< The turbulence velocity in the bottom boundary layer at h points, in Z s-1 ~> m s-1. real, pointer, dimension(:,:) :: TKE_BBL => NULL() !< A term related to the bottom boundary layer source of turbulent kinetic !! energy, currently in units of m3 s-3, but will later be changed to W m-2. @@ -207,13 +207,13 @@ module MOM_variables taux_shelf => NULL(), & !< The zonal stresses on the ocean under shelves, in Pa. tauy_shelf => NULL() !< The meridional stresses on the ocean under shelves, in Pa. real, pointer, dimension(:,:) :: tbl_thick_shelf_u => NULL() - !< Thickness of the viscous top boundary layer under ice shelves at u-points, in Z. + !< Thickness of the viscous top boundary layer under ice shelves at u-points, in Z ~> m. real, pointer, dimension(:,:) :: tbl_thick_shelf_v => NULL() - !< Thickness of the viscous top boundary layer under ice shelves at v-points, in Z. + !< Thickness of the viscous top boundary layer under ice shelves at v-points, in Z ~> m. real, pointer, dimension(:,:) :: kv_tbl_shelf_u => NULL() - !< Viscosity in the viscous top boundary layer under ice shelves at u-points, in Z2 s-1. + !< Viscosity in the viscous top boundary layer under ice shelves at u-points, in Z2 s-1 ~> m2 s-1. real, pointer, dimension(:,:) :: kv_tbl_shelf_v => NULL() - !< Viscosity in the viscous top boundary layer under ice shelves at v-points, in Z2 s-1. + !< Viscosity in the viscous top boundary layer under ice shelves at v-points, in Z2 s-1 ~> m2 s-1. real, pointer, dimension(:,:) :: nkml_visc_u => NULL() !< The number of layers in the viscous surface mixed layer at u-points (nondimensional). !! This is not an integer because there may be fractional layers, and it is stored in @@ -224,29 +224,29 @@ module MOM_variables real, pointer, dimension(:,:) :: & MLD => NULL() !< Instantaneous active mixing layer depth (H units). real, pointer, dimension(:,:,:) :: & - Ray_u => NULL(), & !< The Rayleigh drag velocity to be applied to each layer at u-points, in Z s-1. - Ray_v => NULL() !< The Rayleigh drag velocity to be applied to each layer at v-points, in Z s-1. + Ray_u => NULL(), & !< The Rayleigh drag velocity to be applied to each layer at u-points, in Z s-1 ~> m s-1. + Ray_v => NULL() !< The Rayleigh drag velocity to be applied to each layer at v-points, in Z s-1 ~> m s-1. real, pointer, dimension(:,:,:) :: Kd_extra_T => NULL() !< The extra diffusivity of temperature due to double diffusion relative to the - !! diffusivity of density, in Z2 s-1. + !! diffusivity of density, in Z2 s-1 ~> m2 s-1. real, pointer, dimension(:,:,:) :: Kd_extra_S => NULL() !< The extra diffusivity of salinity due to double diffusion relative to the - !! diffusivity of density, in Z2 s-1. + !! diffusivity of density, in Z2 s-1 ~> m2 s-1. ! One of Kd_extra_T and Kd_extra_S is always 0. Kd_extra_S is positive for salt fingering; ! Kd_extra_T is positive for double diffusive convection. They are only allocated if ! DOUBLE_DIFFUSION is true. real, pointer, dimension(:,:,:) :: Kd_shear => NULL() !< The shear-driven turbulent diapycnal diffusivity at the interfaces between layers - !! in tracer columns, in Z2 s-1. + !! in tracer columns, in Z2 s-1 ~> m2 s-1. real, pointer, dimension(:,:,:) :: Kv_shear => NULL() !< The shear-driven turbulent vertical viscosity at the interfaces between layers - !! in tracer columns, in Z2 s-1. + !! in tracer columns, in Z2 s-1 ~> m2 s-1. real, pointer, dimension(:,:,:) :: Kv_shear_Bu => NULL() !< The shear-driven turbulent vertical viscosity at the interfaces between layers in - !! corner columns, in Z2 s-1. + !! corner columns, in Z2 s-1 ~> m2 s-1. real, pointer, dimension(:,:,:) :: Kv_slow => NULL() !< The turbulent vertical viscosity component due to "slow" processes (e.g., tidal, - !! background, convection etc), in Z2 s-1. + !! background, convection etc), in Z2 s-1 ~> m2 s-1. real, pointer, dimension(:,:,:) :: TKE_turb => NULL() !< The turbulent kinetic energy per unit mass at the interfaces, in m2 s-2. !! This may be at the tracer or corner points diff --git a/src/core/MOM_verticalGrid.F90 b/src/core/MOM_verticalGrid.F90 index 92f303e12b..3d5d6db936 100644 --- a/src/core/MOM_verticalGrid.F90 +++ b/src/core/MOM_verticalGrid.F90 @@ -21,7 +21,7 @@ module MOM_verticalGrid ! Commonly used parameters integer :: ke !< The number of layers/levels in the vertical real :: max_depth !< The maximum depth of the ocean in Z (often m). - real :: g_Earth !< The gravitational acceleration in m2 Z-1 s-2. + real :: g_Earth !< The gravitational acceleration in m2 Z-1 s-2 ~> m s-2. real :: Rho0 !< The density used in the Boussinesq approximation or nominal !! density used to convert depths into mass units, in kg m-3. @@ -42,7 +42,7 @@ module MOM_verticalGrid !! Angstrom or larger without changing it at the bit level, in thickness units. !! If Angstrom is 0 or exceedingly small, this is negligible compared to 1e-17 m. real, allocatable, dimension(:) :: & - g_prime, & !< The reduced gravity at each interface, in m2 Z-1 s-2. + g_prime, & !< The reduced gravity at each interface, in m2 Z-1 s-2 ~> m s-2. Rlay !< The target coordinate value (potential density) in each layer in kg m-3. integer :: nkml = 0 !< The number of layers at the top that should be treated !! as parts of a homogenous region. diff --git a/src/diagnostics/MOM_diag_to_Z.F90 b/src/diagnostics/MOM_diag_to_Z.F90 index 424b241c46..d02f4f5fbb 100644 --- a/src/diagnostics/MOM_diag_to_Z.F90 +++ b/src/diagnostics/MOM_diag_to_Z.F90 @@ -67,7 +67,7 @@ module MOM_diag_to_Z integer :: num_tr_used = 0 !< Th enumber of tracers in use. integer :: nk_zspace = -1 !< The number of levels in the z-space output - real, pointer :: Z_int(:) => NULL() !< interface depths of the z-space file, in Z + real, pointer :: Z_int(:) => NULL() !< interface depths of the z-space file, in Z ~> m. !>@{ Axis groups for z-space diagnostic output type(axes_grp) :: axesBz, axesTz, axesCuz, axesCvz @@ -159,7 +159,7 @@ subroutine calculate_Z_diag_fields(u, v, h, ssh_in, frac_shelf_h, G, GV, US, CS) ! Local variables ! Note the deliberately reversed axes in h_f, u_f, v_f, and tr_f. real :: ssh(SZI_(G),SZJ_(G)) ! copy of ssh_in whose halos can be updated (meter or kg/m2) - real :: e(SZK_(G)+2) ! z-star interface heights in Z + real :: e(SZK_(G)+2) ! z-star interface heights in Z ~> m. real :: h_f(SZK_(G)+1,SZI_(G)) ! thicknesses of massive layers (meter or kg/m2) real :: u_f(SZK_(G)+1,SZIB_(G))! zonal velocity component in any massive layer real :: v_f(SZK_(G)+1,SZI_(G)) ! meridional velocity component in any massive layer @@ -167,8 +167,8 @@ subroutine calculate_Z_diag_fields(u, v, h, ssh_in, frac_shelf_h, G, GV, US, CS) real :: tr_f(SZK_(G),max(CS%num_tr_used,1),SZI_(G)) ! tracer concentration in massive layers integer :: nk_valid(SZIB_(G)) ! number of massive layers in a column - real :: D_pt(SZIB_(G)) ! bottom depth in Z - real :: shelf_depth(SZIB_(G)) ! ice shelf depth in Z + real :: D_pt(SZIB_(G)) ! bottom depth in Z ~> m. + real :: shelf_depth(SZIB_(G)) ! ice shelf depth in Z ~> m. real :: htot ! summed layer thicknesses (meter or kg/m2) real :: dilate ! proportion by which to dilate every layer real :: wt(SZK_(G)+1) ! fractional weight for each layer in the @@ -515,7 +515,7 @@ subroutine calculate_Z_transport(uh_int, vh_int, h, dt, G, GV, CS) real, dimension(SZI_(G), SZJ_(G)) :: & htot, & ! total layer thickness, in H dilate ! Factor by which to dilate layers to convert them - ! into z* space, in Z H-1. (-G%D < z* < 0) + ! into z* space, in Z H-1 ~> 1 or m3 kg-1. (-G%D < z* < 0) real, dimension(SZI_(G), max(CS%nk_zspace,1)) :: & uh_Z ! uh_int interpolated into depth space (m3 or kg) @@ -523,15 +523,15 @@ subroutine calculate_Z_transport(uh_int, vh_int, h, dt, G, GV, CS) vh_Z ! vh_int interpolated into depth space (m3 or kg) real :: h_rem ! dilated thickness of a layer that has yet to be mapped - ! into depth space (in Z) + ! into depth space (in Z ~> m) real :: uh_rem ! integrated zonal transport of a layer that has yet to be ! mapped into depth space (m3 or kg) real :: vh_rem ! integrated meridional transport of a layer that has yet ! to be mapped into depth space (m3 or kg) real :: h_here ! thickness of a layer that is within the range of the - ! current depth level (in Z) + ! current depth level (in Z ~> m) real :: h_above ! thickness of a layer that is above the current depth - ! level (in Z) + ! level (in Z ~> m) real :: uh_here ! zonal transport of a layer that is attributed to the ! current depth level (m3 or kg) real :: vh_here ! meridional transport of a layer that is attributed to diff --git a/src/diagnostics/MOM_diagnostics.F90 b/src/diagnostics/MOM_diagnostics.F90 index 3ea4e65506..d1dd451616 100644 --- a/src/diagnostics/MOM_diagnostics.F90 +++ b/src/diagnostics/MOM_diagnostics.F90 @@ -775,9 +775,9 @@ subroutine calculate_vertical_integrals(h, tv, p_surf, G, GV, US, CS) !! previous call to diagnostics_init. real, dimension(SZI_(G), SZJ_(G)) :: & - z_top, & ! Height of the top of a layer or the ocean, in Z. + z_top, & ! Height of the top of a layer or the ocean, in Z ~> m. z_bot, & ! Height of the bottom of a layer (for id_mass) or the - ! (positive) depth of the ocean (for id_col_ht), in Z. + ! (positive) depth of the ocean (for id_col_ht), in Z ~> m. mass, & ! integrated mass of the water column, in kg m-2. For ! non-Boussinesq models this is rho*dz. For Boussinesq ! models, this is either the integral of in-situ density diff --git a/src/diagnostics/MOM_sum_output.F90 b/src/diagnostics/MOM_sum_output.F90 index 92028dabf4..2f526fc98e 100644 --- a/src/diagnostics/MOM_sum_output.F90 +++ b/src/diagnostics/MOM_sum_output.F90 @@ -57,7 +57,7 @@ module MOM_sum_output logical :: read_depth_list !< Read the depth list from a file if it exists !! and write it if it doesn't. character(len=200) :: depth_list_file !< The name of the depth list file. - real :: D_list_min_inc !< The minimum increment, in Z, between the depths of the + real :: D_list_min_inc !< The minimum increment, in Z ~> m, between the depths of the !! entries in the depth-list file, 0 by default. logical :: use_temperature !< If true, temperature and salinity are state variables. real :: fresh_water_input !< The total mass of fresh water added by surface fluxes @@ -291,21 +291,21 @@ subroutine write_energy(u, v, h, tv, day, n, G, GV, US, CS, tracer_CSp, OBC, dt_ optional, pointer :: OBC !< Open boundaries control structure. type(time_type), optional, intent(in) :: dt_forcing !< The forcing time step ! Local variables - real :: eta(SZI_(G),SZJ_(G),SZK_(G)+1) ! The height of interfaces, in Z. + real :: eta(SZI_(G),SZJ_(G),SZK_(G)+1) ! The height of interfaces, in Z ~> m. real :: areaTm(SZI_(G),SZJ_(G)) ! A masked version of areaT, in m2. real :: KE(SZK_(G)) ! The total kinetic energy of a layer, in J. real :: PE(SZK_(G)+1)! The available potential energy of an interface, in J. real :: KE_tot ! The total kinetic energy, in J. real :: PE_tot ! The total available potential energy, in J. real :: Z_0APE(SZK_(G)+1) ! The uniform depth which overlies the same - ! volume as is below an interface, in Z. + ! volume as is below an interface, in Z ~> m. real :: H_0APE(SZK_(G)+1) ! A version of Z_0APE, converted to m, usually positive. real :: toten ! The total kinetic & potential energies of ! all layers, in Joules (i.e. kg m2 s-2). real :: En_mass ! The total kinetic and potential energies divided by ! the total mass of the ocean, in m2 s-2. - real :: vol_lay(SZK_(G)) ! The volume of fluid in a layer, in Z m2. - real :: volbelow ! The volume of all layers beneath an interface in Z m2. + real :: vol_lay(SZK_(G)) ! The volume of fluid in a layer, in Z m2 ~> m3. + real :: volbelow ! The volume of all layers beneath an interface in Z m2 ~> m3. real :: mass_lay(SZK_(G)) ! The mass of fluid in a layer, in kg. real :: mass_tot ! The total mass of the ocean in kg. real :: vol_tot ! The total ocean volume in m3. @@ -335,11 +335,11 @@ subroutine write_energy(u, v, h, tv, day, n, G, GV, US, CS, tracer_CSp, OBC, dt_ real :: temp_anom ! The change in total heat that cannot be accounted for ! by the surface fluxes, divided by the total heat ! capacity of the ocean, in C. - real :: hint ! The deviation of an interface from H, in Z. + real :: hint ! The deviation of an interface from H, in Z ~> m. real :: hbot ! 0 if the basin is deeper than H, or the ! height of the basin depth over H otherwise, - ! in Z. This makes PE only include real fluid. - real :: hbelow ! The depth of fluid in all layers beneath an interface, in Z. + ! in Z ~> m. This makes PE only include real fluid. + real :: hbelow ! The depth of fluid in all layers beneath an interface, in Z ~> m. type(EFP_type) :: & mass_EFP, & ! Extended fixed point sums of total mass, etc. salt_EFP, heat_EFP, salt_chg_EFP, heat_chg_EFP, mass_chg_EFP, & @@ -1060,15 +1060,15 @@ subroutine create_depth_list(G, CS) !! in which the ordered depth list is stored. ! Local variables real, dimension(G%Domain%niglobal*G%Domain%njglobal + 1) :: & - Dlist, & !< The global list of bottom depths, in Z. + Dlist, & !< The global list of bottom depths, in Z ~> m. AreaList !< The global list of cell areas, in m2. integer, dimension(G%Domain%niglobal*G%Domain%njglobal+1) :: & indx2 !< The position of an element in the original unsorted list. - real :: Dnow !< The depth now being considered for sorting, in Z. - real :: Dprev !< The most recent depth that was considered, in Z. - real :: vol !< The running sum of open volume below a deptn, in Z m2. + real :: Dnow !< The depth now being considered for sorting, in Z ~> m. + real :: Dprev !< The most recent depth that was considered, in Z ~> m. + real :: vol !< The running sum of open volume below a deptn, in Z m2 ~> m3. real :: area !< The open area at the current depth, in m2. - real :: D_list_prev !< The most recent depth added to the list, in Z. + real :: D_list_prev !< The most recent depth added to the list, in Z ~> m. logical :: add_to_list !< This depth should be included as an entry on the list. integer :: ir, indxt diff --git a/src/diagnostics/MOM_wave_speed.F90 b/src/diagnostics/MOM_wave_speed.F90 index 3a136bcd9b..2681314b36 100644 --- a/src/diagnostics/MOM_wave_speed.F90 +++ b/src/diagnostics/MOM_wave_speed.F90 @@ -30,7 +30,7 @@ module MOM_wave_speed !! wave speed. This parameter controls the default behavior of !! wave_speed() which can be overridden by optional arguments. real :: mono_N2_depth = -1. !< The depth below which N2 is limited as monotonic for the purposes of - !! calculating the equivalent barotropic wave speed. (Z) + !! calculating the equivalent barotropic wave speed, in Z ~> m. !! This parameter controls the default behavior of wave_speed() which !! can be overridden by optional arguments. type(remapping_CS) :: remapping_CS !< Used for vertical remapping when calculating equivalent barotropic @@ -68,7 +68,7 @@ subroutine wave_speed(h, tv, G, GV, US, cg1, CS, full_halos, use_ebt_mode, & real, dimension(SZK_(G)+1) :: & dRho_dT, dRho_dS, & pres, T_int, S_int, & - gprime ! The reduced gravity across each interface, in m2 Z-1 s-2. + gprime ! The reduced gravity across each interface, in m2 Z-1 s-2 ~> m s-2. real, dimension(SZK_(G)) :: & Igl, Igu ! The inverse of the reduced gravity across an interface times ! the thickness of the layer below (Igl) or above (Igu) it, @@ -82,11 +82,11 @@ subroutine wave_speed(h, tv, G, GV, US, cg1, CS, full_halos, use_ebt_mode, & real :: min_h_frac real :: Z_to_Pa ! A conversion factor from thickesses (in Z) to pressure (in Pa) real, dimension(SZI_(G)) :: & - htot, hmin, & ! Thicknesses in Z. + htot, hmin, & ! Thicknesses in Z ~> m. H_here, HxT_here, HxS_here, HxR_here real :: speed2_tot real :: I_Hnew, drxh_sum - real :: L2_to_Z2 ! A scaling factor squared from units of lateral distances to depths, in Z2 m-2. + real :: L2_to_Z2 ! A scaling factor squared from units of lateral distances to depths, in Z2 m-2 ~> 1. real, parameter :: tol1 = 0.0001, tol2 = 0.001 real, pointer, dimension(:,:,:) :: T => NULL(), S => NULL() real :: g_Rho0 ! G_Earth/Rho0 in m4 s-2 kg-1. @@ -561,7 +561,7 @@ subroutine wave_speeds(h, tv, G, GV, US, nmodes, cn, CS, full_halos) real :: min_h_frac real :: Z_to_Pa ! A conversion factor from thickesses (in Z) to pressure (in Pa) real, dimension(SZI_(G)) :: & - htot, hmin, & ! Thicknesses in Z. + htot, hmin, & ! Thicknesses in Z ~> m. H_here, HxT_here, HxS_here, HxR_here real :: speed2_tot ! overestimate of the mode-1 speed squared, m2 s-2 real :: speed2_min ! minimum mode speed (squared) to consider in root searching diff --git a/src/diagnostics/MOM_wave_structure.F90 b/src/diagnostics/MOM_wave_structure.F90 index 7e82c02ec8..fbec51196c 100644 --- a/src/diagnostics/MOM_wave_structure.F90 +++ b/src/diagnostics/MOM_wave_structure.F90 @@ -109,7 +109,7 @@ subroutine wave_structure(h, tv, G, GV, US, cn, ModeNum, freq, CS, En, full_halo real, dimension(SZK_(G)+1) :: & dRho_dT, dRho_dS, & pres, T_int, S_int, & - gprime ! The reduced gravity across each interface, in m2 Z-1 s-2. + gprime ! The reduced gravity across each interface, in m2 Z-1 s-2 ~> m s-2. real, dimension(SZK_(G)) :: & Igl, Igu ! The inverse of the reduced gravity across an interface times ! the thickness of the layer below (Igl) or above (Igu) it, @@ -125,7 +125,7 @@ subroutine wave_structure(h, tv, G, GV, US, cn, ModeNum, freq, CS, En, full_halo real :: min_h_frac real :: H_to_pres real, dimension(SZI_(G)) :: & - hmin, & ! Thicknesses in Z. + hmin, & ! Thicknesses in Z ~> m. H_here, HxT_here, HxS_here, HxR_here real :: speed2_tot real :: I_Hnew, drxh_sum diff --git a/src/equation_of_state/MOM_EOS.F90 b/src/equation_of_state/MOM_EOS.F90 index 9a823d23eb..3cd23a9b04 100644 --- a/src/equation_of_state/MOM_EOS.F90 +++ b/src/equation_of_state/MOM_EOS.F90 @@ -625,14 +625,14 @@ subroutine int_density_dz(T, S, z_t, z_b, rho_ref, rho_0, G_e, HII, HIO, EOS, & real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & intent(in) :: S !< Salinity (PSU) real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & - intent(in) :: z_t !< Height at the top of the layer in depth units (Z). + intent(in) :: z_t !< Height at the top of the layer in depth units (Z ~> m). real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & - intent(in) :: z_b !< Height at the bottom of the layer in Z. + intent(in) :: z_b !< Height at the bottom of the layer, in Z ~> m. real, intent(in) :: rho_ref !< A mean density, in kg m-3, that is subtracted out to !! reduce the magnitude of each of the integrals. real, intent(in) :: rho_0 !< A density, in kg m-3, that is used to calculate the !! pressure (as p~=-z*rho_0*G_e) used in the equation of state. - real, intent(in) :: G_e !< The Earth's gravitational acceleration, in m2 Z-1 s-2. + real, intent(in) :: G_e !< The Earth's gravitational acceleration, in m2 Z-1 s-2 ~> m s-2. type(EOS_type), pointer :: EOS !< Equation of state structure real, dimension(HIO%isd:HIO%ied,HIO%jsd:HIO%jed), & intent(out) :: dpa !< The change in the pressure anomaly across the layer, in Pa. @@ -650,7 +650,7 @@ subroutine int_density_dz(T, S, z_t, z_b, rho_ref, rho_0, G_e, HII, HIO, EOS, & !! divided by the y grid spacing, in Pa. real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & optional, intent(in) :: bathyT !< The depth of the bathymetry in units of Z. - real, optional, intent(in) :: dz_neglect !< A miniscule thickness change, in Z. + real, optional, intent(in) :: dz_neglect !< A miniscule thickness change, in Z ~> m. logical, optional, intent(in) :: useMassWghtInterp !< If true, uses mass weighting to !! interpolate T/S for top and bottom integrals. @@ -876,16 +876,16 @@ subroutine int_density_dz_generic(T, S, z_t, z_b, rho_ref, rho_0, G_e, HII, HIO, real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & intent(in) :: S !< Salinity of the layer in PSU. real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & - intent(in) :: z_t !< Height at the top of the layer in depth units (Z). + intent(in) :: z_t !< Height at the top of the layer in depth units (Z ~> m). real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & - intent(in) :: z_b !< Height at the bottom of the layer in Z. + intent(in) :: z_b !< Height at the bottom of the layer in Z ~> m. real, intent(in) :: rho_ref !< A mean density, in kg m-3, that is !! subtracted out to reduce the magnitude !! of each of the integrals. real, intent(in) :: rho_0 !< A density, in kg m-3, that is used !! to calculate the pressure (as p~=-z*rho_0*G_e) !! used in the equation of state. - real, intent(in) :: G_e !< The Earth's gravitational acceleration, in m2 Z-1 s-2. + real, intent(in) :: G_e !< The Earth's gravitational acceleration, in m2 Z-1 s-2 ~> m s-2. type(EOS_type), pointer :: EOS !< Equation of state structure real, dimension(HIO%isd:HIO%ied,HIO%jsd:HIO%jed), & intent(out) :: dpa !< The change in the pressure anomaly @@ -904,7 +904,7 @@ subroutine int_density_dz_generic(T, S, z_t, z_b, rho_ref, rho_0, G_e, HII, HIO, !! layer divided by the y grid spacing, in Pa. real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & optional, intent(in) :: bathyT !< The depth of the bathymetry in units of Z. - real, optional, intent(in) :: dz_neglect !< A miniscule thickness change, in Z. + real, optional, intent(in) :: dz_neglect !< A miniscule thickness change, in Z ~> m. logical, optional, intent(in) :: useMassWghtInterp !< If true, uses mass weighting to !! interpolate T/S for top and bottom integrals. real :: T5(5), S5(5), p5(5), r5(5) @@ -912,10 +912,10 @@ subroutine int_density_dz_generic(T, S, z_t, z_b, rho_ref, rho_0, G_e, HII, HIO, real :: w_left, w_right real, parameter :: C1_90 = 1.0/90.0 ! Rational constants. real :: GxRho, I_Rho - real :: dz ! The layer thickness, in Z. - real :: hWght ! A pressure-thickness below topography, in Z. - real :: hL, hR ! Pressure-thicknesses of the columns to the left and right, in Z. - real :: iDenom ! The inverse of the denominator in the weights, in Z-2. + real :: dz ! The layer thickness, in Z ~> m. + real :: hWght ! A pressure-thickness below topography, in Z ~> m. + real :: hL, hR ! Pressure-thicknesses of the columns to the left and right, in Z ~> m. + real :: iDenom ! The inverse of the denominator in the weights, in Z-2 ~> m-2. real :: hWt_LL, hWt_LR ! hWt_LA is the weighted influence of A on the left column, nonDim. real :: hWt_RL, hWt_RR ! hWt_RA is the weighted influence of A on the right column, nonDim. real :: wt_L, wt_R ! The linear weights of the left and right columns, nonDim. @@ -1068,14 +1068,14 @@ subroutine int_density_dz_generic_plm (T_t, T_b, S_t, S_b, z_t, z_b, rho_ref, & intent(in) :: S_b !< Salinity at the cell bottom (ppt) real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & intent(in) :: z_t !< The geometric height at the top of the layer, - !! in depth units (Z), usually m. + !! in depth units (Z ~> m). real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & - intent(in) :: z_b !< The geometric height at the bottom of the layer in Z. + intent(in) :: z_b !< The geometric height at the bottom of the layer in Z ~> m. real, intent(in) :: rho_ref !< A mean density, in kg m-3, that is subtracted out to !! reduce the magnitude of each of the integrals. real, intent(in) :: rho_0 !< A density, in kg m-3, that is used to calculate the !! pressure (as p~=-z*rho_0*G_e) used in the equation of state. - real, intent(in) :: G_e !< The Earth's gravitational acceleration, in m2 Z-1 s-2. + real, intent(in) :: G_e !< The Earth's gravitational acceleration, in m2 Z-1 s-2 ~> m s-2. real, intent(in) :: dz_subroundoff !< A miniscule thickness !! change with the same units as z_t real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & @@ -1125,16 +1125,16 @@ subroutine int_density_dz_generic_plm (T_t, T_b, S_t, S_b, z_t, z_b, rho_ref, & real, parameter :: C1_90 = 1.0/90.0 ! A rational constant, ND. real :: GxRho ! Gravitational acceleration times density, in kg m-1 Z-1 s-2. real :: I_Rho ! The inverse of the reference density, in m3 kg-1. - real :: dz(HIO%iscB:HIO%iecB+1) ! Layer thicknesses at tracer points in Z. - real :: dz_x(5,HIO%iscB:HIO%iecB) ! Layer thicknesses along an x-line of subrid locations, in Z. - real :: dz_y(5,HIO%isc:HIO%iec) ! Layer thicknesses along a y-line of subrid locations, in Z. + real :: dz(HIO%iscB:HIO%iecB+1) ! Layer thicknesses at tracer points in Z ~> m. + real :: dz_x(5,HIO%iscB:HIO%iecB) ! Layer thicknesses along an x-line of subrid locations, in Z ~> m. + real :: dz_y(5,HIO%isc:HIO%iec) ! Layer thicknesses along a y-line of subrid locations, in Z ~> m. real :: weight_t, weight_b ! Nondimensional wieghts of the top and bottom. real :: massWeightToggle ! A nondimensional toggle factor (0 or 1). real :: Ttl, Tbl, Ttr, Tbr ! Temperatures at the velocity cell corners, in degC. real :: Stl, Sbl, Str, Sbr ! Salinities at the velocity cell corners, in ppt. - real :: hWght ! A topographically limited thicknes weight, in Z. - real :: hL, hR ! Thicknesses to the left and right, in Z. - real :: iDenom ! The denominator of the thickness weight expressions, in Z-2. + real :: hWght ! A topographically limited thicknes weight, in Z ~> m. + real :: hL, hR ! Thicknesses to the left and right, in Z ~> m. + real :: iDenom ! The denominator of the thickness weight expressions, in Z-2 ~> m-2. integer :: Isq, Ieq, Jsq, Jeq, i, j, m, n integer :: iin, jin, ioff, joff integer :: pos @@ -1360,16 +1360,16 @@ subroutine find_depth_of_pressure_in_cell(T_t, T_b, S_t, S_b, z_t, z_b, P_t, P_t real, intent(in) :: T_b !< Potential temperatue at the cell bottom (degC) real, intent(in) :: S_t !< Salinity at the cell top (ppt) real, intent(in) :: S_b !< Salinity at the cell bottom (ppt) - real, intent(in) :: z_t !< Absolute height of top of cell (Z) (Boussinesq ????) - real, intent(in) :: z_b !< Absolute height of bottom of cell (Z) + real, intent(in) :: z_t !< Absolute height of top of cell, in Z ~> m. (Boussinesq ????) + real, intent(in) :: z_b !< Absolute height of bottom of cell, in Z ~> m. real, intent(in) :: P_t !< Anomalous pressure of top of cell, relative to g*rho_ref*z_t (Pa) real, intent(in) :: P_tgt !< Target pressure at height z_out, relative to g*rho_ref*z_out (Pa) real, intent(in) :: rho_ref !< Reference density with which calculation are anomalous to real, intent(in) :: G_e !< Gravitational acceleration (m2 Z-1 s-2) type(EOS_type), pointer :: EOS !< Equation of state structure real, intent(out) :: P_b !< Pressure at the bottom of the cell (Pa) - real, intent(out) :: z_out !< Absolute depth at which anomalous pressure = p_tgt (Z) - real, optional, intent(in) :: z_tol !< The tolerance in finding z_out, in Z. + real, intent(out) :: z_out !< Absolute depth at which anomalous pressure = p_tgt, in Z ~> m. + real, optional, intent(in) :: z_tol !< The tolerance in finding z_out, in Z ~> m. ! Local variables real :: top_weight, bottom_weight, rho_anom, w_left, w_right, GxRho, dz, dp, F_guess, F_l, F_r real :: Pa, Pa_left, Pa_right, Pa_tol ! Pressure anomalies, P = integral of g*(rho-rho_ref) dz diff --git a/src/equation_of_state/MOM_EOS_Wright.F90 b/src/equation_of_state/MOM_EOS_Wright.F90 index a4535ec961..51ffe4b9f0 100644 --- a/src/equation_of_state/MOM_EOS_Wright.F90 +++ b/src/equation_of_state/MOM_EOS_Wright.F90 @@ -402,16 +402,16 @@ subroutine int_density_dz_wright(T, S, z_t, z_b, rho_ref, rho_0, G_e, HII, HIO, real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & intent(in) :: S !< Salinity in PSU. real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & - intent(in) :: z_t !< Height at the top of the layer in depth units (Z). + intent(in) :: z_t !< Height at the top of the layer in depth units (Z ~> m). real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & - intent(in) :: z_b !< Height at the top of the layer in Z. + intent(in) :: z_b !< Height at the top of the layer in Z ~> m. real, intent(in) :: rho_ref !< A mean density, in kg m-3, that is subtracted out !! to reduce the magnitude of each of the integrals. !! (The pressure is calucated as p~=-z*rho_0*G_e.) real, intent(in) :: rho_0 !< Density, in kg m-3, that is used to calculate the !! pressure (as p~=-z*rho_0*G_e) used in the !! equation of state. - real, intent(in) :: G_e !< The Earth's gravitational acceleration, in m2 Z-1 s-2. + real, intent(in) :: G_e !< The Earth's gravitational acceleration, in m2 Z-1 s-2 ~> m s-2. real, dimension(HIO%isd:HIO%ied,HIO%jsd:HIO%jed), & intent(out) :: dpa !< The change in the pressure anomaly across the !! layer, in Pa. @@ -429,7 +429,7 @@ subroutine int_density_dz_wright(T, S, z_t, z_b, rho_ref, rho_0, G_e, HII, HIO, !! layer divided by the y grid spacing, in Pa. real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & optional, intent(in) :: bathyT !< The depth of the bathymetry in units of Z. - real, optional, intent(in) :: dz_neglect !< A miniscule thickness change in Z. + real, optional, intent(in) :: dz_neglect !< A miniscule thickness change in Z ~> m. logical, optional, intent(in) :: useMassWghtInterp !< If true, uses mass weighting to !! interpolate T/S for top and bottom integrals. @@ -440,9 +440,9 @@ subroutine int_density_dz_wright(T, S, z_t, z_b, rho_ref, rho_0, G_e, HII, HIO, real :: eps, eps2, rem real :: GxRho, I_Rho real :: p_ave, I_al0, I_Lzz - real :: dz ! The layer thickness, in Z. - real :: hWght ! A pressure-thickness below topography, in Z. - real :: hL, hR ! Pressure-thicknesses of the columns to the left and right, in Z. + real :: dz ! The layer thickness, in Z ~> m. + real :: hWght ! A pressure-thickness below topography, in Z ~> m. + real :: hL, hR ! Pressure-thicknesses of the columns to the left and right, in Z ~> m. real :: iDenom ! The inverse of the denominator in the weights, in m-Z. real :: hWt_LL, hWt_LR ! hWt_LA is the weighted influence of A on the left column, nonDim. real :: hWt_RL, hWt_RR ! hWt_RA is the weighted influence of A on the right column, nonDim. diff --git a/src/equation_of_state/MOM_EOS_linear.F90 b/src/equation_of_state/MOM_EOS_linear.F90 index d63929bd62..af961f4c43 100644 --- a/src/equation_of_state/MOM_EOS_linear.F90 +++ b/src/equation_of_state/MOM_EOS_linear.F90 @@ -323,9 +323,9 @@ subroutine int_density_dz_linear(T, S, z_t, z_b, rho_ref, rho_0_pres, G_e, HII, real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & intent(in) :: S !< Salinity in PSU. real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & - intent(in) :: z_t !< Height at the top of the layer in depth units (Z). + intent(in) :: z_t !< Height at the top of the layer in depth units (Z ~> m). real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & - intent(in) :: z_b !< Height at the top of the layer in Z. + intent(in) :: z_b !< Height at the top of the layer in Z ~> m. real, intent(in) :: rho_ref !< A mean density, in kg m-3, that is subtracted !! out to reduce the magnitude of each of the !! integrals. @@ -333,7 +333,7 @@ subroutine int_density_dz_linear(T, S, z_t, z_b, rho_ref, rho_0_pres, G_e, HII, !! the pressure (as p~=-z*rho_0_pres*G_e) used in !! the equation of state. rho_0_pres is not used !! here. - real, intent(in) :: G_e !< The Earth's gravitational acceleration, in m2 Z-1 s-2. + real, intent(in) :: G_e !< The Earth's gravitational acceleration, in m2 Z-1 s-2 ~> m s-2. real, intent(in) :: Rho_T0_S0 !< The density at T=0, S=0, in kg m-3. real, intent(in) :: dRho_dT !< The derivative of density with temperature, !! in kg m-3 C-1. @@ -356,16 +356,16 @@ subroutine int_density_dz_linear(T, S, z_t, z_b, rho_ref, rho_0_pres, G_e, HII, !! layer divided by the y grid spacing, in Pa. real, dimension(HII%isd:HII%ied,HII%jsd:HII%jed), & optional, intent(in) :: bathyT !< The depth of the bathymetry in units of Z. - real, optional, intent(in) :: dz_neglect !< A miniscule thickness change in Z. + real, optional, intent(in) :: dz_neglect !< A miniscule thickness change in Z ~> m. logical, optional, intent(in) :: useMassWghtInterp !< If true, uses mass weighting to !! interpolate T/S for top and bottom integrals. ! Local variables real :: rho_anom ! The density anomaly from rho_ref, in kg m-3. real :: raL, raR ! rho_anom to the left and right, in kg m-3. - real :: dz, dzL, dzR ! Layer thicknesses in Z. - real :: hWght ! A pressure-thickness below topography, in Z. - real :: hL, hR ! Pressure-thicknesses of the columns to the left and right, in Z. - real :: iDenom ! The inverse of the denominator in the weights, in Z-2. + real :: dz, dzL, dzR ! Layer thicknesses in Z ~> m. + real :: hWght ! A pressure-thickness below topography, in Z ~> m. + real :: hL, hR ! Pressure-thicknesses of the columns to the left and right, in Z ~> m. + real :: iDenom ! The inverse of the denominator in the weights, in Z-2 ~> m-2. real :: hWt_LL, hWt_LR ! hWt_LA is the weighted influence of A on the left column, nonDim. real :: hWt_RL, hWt_RR ! hWt_RA is the weighted influence of A on the right column, nonDim. real :: wt_L, wt_R ! The linear weights of the left and right columns, nonDim. diff --git a/src/framework/MOM_dyn_horgrid.F90 b/src/framework/MOM_dyn_horgrid.F90 index 51c45bc1b9..754af0cb8f 100644 --- a/src/framework/MOM_dyn_horgrid.F90 +++ b/src/framework/MOM_dyn_horgrid.F90 @@ -137,11 +137,11 @@ module MOM_dyn_horgrid !! basin depths at velocity points. Otherwise the effects of !! of topography are entirely determined from thickness points. real, allocatable, dimension(:,:) :: & - Dblock_u, & !< Topographic depths at u-points at which the flow is blocked, in Z. - Dopen_u !< Topographic depths at u-points at which the flow is open at width dy_Cu, in Z. + Dblock_u, & !< Topographic depths at u-points at which the flow is blocked, in Z ~> m. + Dopen_u !< Topographic depths at u-points at which the flow is open at width dy_Cu, in Z ~> m. real, allocatable, dimension(:,:) :: & - Dblock_v, & !< Topographic depths at v-points at which the flow is blocked, in Z. - Dopen_v !< Topographic depths at v-points at which the flow is open at width dx_Cv, in Z. + Dblock_v, & !< Topographic depths at v-points at which the flow is blocked, in Z ~> m. + Dopen_v !< Topographic depths at v-points at which the flow is open at width dx_Cv, in Z ~> m. real, allocatable, dimension(:,:) :: & CoriolisBu !< The Coriolis parameter at corner points, in s-1. real, allocatable, dimension(:,:) :: & @@ -159,7 +159,7 @@ module MOM_dyn_horgrid real :: len_lat = 0. !< The latitudinal (or y-coord) extent of physical domain real :: len_lon = 0. !< The longitudinal (or x-coord) extent of physical domain real :: Rad_Earth = 6.378e6 !< The radius of the planet in meters. - real :: max_depth !< The maximum depth of the ocean in Z. + real :: max_depth !< The maximum depth of the ocean in Z ~> m. end type dyn_horgrid_type contains diff --git a/src/ice_shelf/MOM_ice_shelf.F90 b/src/ice_shelf/MOM_ice_shelf.F90 index 82ae988f4f..995192830e 100644 --- a/src/ice_shelf/MOM_ice_shelf.F90 +++ b/src/ice_shelf/MOM_ice_shelf.F90 @@ -83,7 +83,7 @@ module MOM_ice_shelf real, pointer, dimension(:,:) :: & utide => NULL() !< tidal velocity, in m/s - real :: ustar_bg !< A minimum value for ustar under ice shelves, in Z s-1. + real :: ustar_bg !< A minimum value for ustar under ice shelves, in Z s-1 ~> m s-1. real :: cdrag !< drag coefficient under ice shelves , non-dimensional. real :: g_Earth !< The gravitational acceleration in m s-2. real :: Cp !< The heat capacity of sea water, in J kg-1 K-1. @@ -125,7 +125,7 @@ module MOM_ice_shelf !! shelf front(until we think of a better way to do it- !! but any difference will be negligible) logical :: calve_to_mask !< If true, calve any ice that passes outside of a masked area - real :: min_thickness_simple_calve !< min. ice shelf thickness criteria for calving, in Z + real :: min_thickness_simple_calve !< min. ice shelf thickness criteria for calving, in Z ~> m. real :: T0 !< temperature at ocean surface in the restoring region, in degC real :: S0 !< Salinity at ocean surface in the restoring region, in ppt. real :: input_flux !< Ice volume flux at an upstream open boundary, in m3 s-1. @@ -875,7 +875,7 @@ subroutine add_shelf_flux(G, CS, state, fluxes) type(time_type) :: Time0!< The previous time (Time-dt) real, dimension(SZDI_(G),SZDJ_(G)) :: last_mass_shelf !< Ice shelf mass !! at at previous time (Time-dt), in kg/m^2 - real, dimension(SZDI_(G),SZDJ_(G)) :: last_h_shelf !< Ice shelf thickness in Z + real, dimension(SZDI_(G),SZDJ_(G)) :: last_h_shelf !< Ice shelf thickness in Z ~> m. !! at at previous time (Time-dt), in m real, dimension(SZDI_(G),SZDJ_(G)) :: last_hmask !< Ice shelf mask !! at at previous time (Time-dt) diff --git a/src/ice_shelf/MOM_ice_shelf_dynamics.F90 b/src/ice_shelf/MOM_ice_shelf_dynamics.F90 index 050fad5089..90ab481722 100644 --- a/src/ice_shelf/MOM_ice_shelf_dynamics.F90 +++ b/src/ice_shelf/MOM_ice_shelf_dynamics.F90 @@ -52,9 +52,9 @@ module MOM_ice_shelf_dynamics real, pointer, dimension(:,:) :: u_face_mask_bdry => NULL() !< A duplicate copy of u_face_mask? real, pointer, dimension(:,:) :: v_face_mask_bdry => NULL() !< A duplicate copy of v_face_mask? real, pointer, dimension(:,:) :: u_flux_bdry_val => NULL() !< The ice volume flux into the cell through open boundary - !! u-faces (where u_face_mask=4), in Z m2 s-1??? + !! u-faces (where u_face_mask=4), in Z m2 s-1 ~> m3 s-1??? real, pointer, dimension(:,:) :: v_flux_bdry_val => NULL() !< The ice volume flux into the cell through open boundary - !! v-faces (where v_face_mask=4), in Z m2 s-1??? + !! v-faces (where v_face_mask=4), in Z m2 s-1 ~> m3 s-1??? ! needed where u_face_mask is equal to 4, similary for v_face_mask real, pointer, dimension(:,:) :: umask => NULL() !< u-mask on the actual degrees of freedom (B grid) !! 1=normal node, 3=inhomogeneous boundary node, @@ -68,7 +68,7 @@ module MOM_ice_shelf_dynamics !! in degC on corner-points (B grid) real, pointer, dimension(:,:) :: tmask => NULL() !< A mask on tracer points that is 1 where there is ice. real, pointer, dimension(:,:) :: ice_visc => NULL() !< Glen's law ice viscosity, perhaps in m. - real, pointer, dimension(:,:) :: thickness_bdry_val => NULL() !< The ice thickness at an inflowing boundary, in Z. + real, pointer, dimension(:,:) :: thickness_bdry_val => NULL() !< The ice thickness at an inflowing boundary in Z ~> m. real, pointer, dimension(:,:) :: u_bdry_val => NULL() !< The zonal ice velocity at inflowing boundaries in m/s??? real, pointer, dimension(:,:) :: v_bdry_val => NULL() !< The meridional ice velocity at inflowing boundaries in m/s??? real, pointer, dimension(:,:) :: h_bdry_val => NULL() !< The ice thickness at inflowing boundaries, in m. @@ -79,7 +79,7 @@ module MOM_ice_shelf_dynamics real, pointer, dimension(:,:) :: OD_rt => NULL() !< A running total for calculating OD_av. real, pointer, dimension(:,:) :: float_frac_rt => NULL() !< A running total for calculating float_frac. - real, pointer, dimension(:,:) :: OD_av => NULL() !< The time average open ocean depth, in Z. + real, pointer, dimension(:,:) :: OD_av => NULL() !< The time average open ocean depth, in Z ~> m. real, pointer, dimension(:,:) :: float_frac => NULL() !< Fraction of the time a cell is "exposed", i.e. the column !! thickness is below a threshold. !### [if float_frac = 1 ==> grounded; obviously counterintuitive; might fix] @@ -124,7 +124,7 @@ module MOM_ice_shelf_dynamics real :: thresh_float_col_depth !< The water column depth over which the shelf if considered to be floating logical :: moving_shelf_front !< Specify whether to advance shelf front (and calve). logical :: calve_to_mask !< If true, calve off the ice shelf when it passes the edge of a mask. - real :: min_thickness_simple_calve !< min. ice shelf thickness criteria for calving, in Z + real :: min_thickness_simple_calve !< min. ice shelf thickness criteria for calving, in Z ~> m. real :: cg_tolerance !< The tolerance in the CG solver, relative to initial residual, that !! deterimnes when to stop the conguage gradient iterations. @@ -704,7 +704,7 @@ subroutine ice_shelf_advect(CS, ISS, G, time_step, Time) ! o--- (3) ---o ! - real, dimension(SZDI_(G),SZDJ_(G)) :: h_after_uflux, h_after_vflux ! Ice thicknesses in Z. + real, dimension(SZDI_(G),SZDJ_(G)) :: h_after_uflux, h_after_vflux ! Ice thicknesses in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G),4) :: flux_enter integer :: isd, ied, jsd, jed, i, j, isc, iec, jsc, jec real :: rho, spy @@ -781,7 +781,7 @@ subroutine ice_shelf_solve_outer(CS, ISS, G, US, u, v, iters, time) real, dimension(SZDIB_(G),SZDJB_(G)) :: TAUDX, TAUDY, u_prev_iterate, v_prev_iterate, & u_bdry_cont, v_bdry_cont, Au, Av, err_u, err_v, & u_last, v_last - real, dimension(SZDIB_(G),SZDJB_(G)) :: H_node ! Ice shelf thickness at corners, in Z. + real, dimension(SZDIB_(G),SZDJB_(G)) :: H_node ! Ice shelf thickness at corners, in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G)) :: float_cond ! An array indicating where the ice ! shelf is floating: 0 if floating, 1 if not. character(len=160) :: mesg ! The text of an error message @@ -1043,7 +1043,7 @@ subroutine ice_shelf_solve_inner(CS, ISS, G, u, v, taudx, taudy, H_node, float_c intent(in) :: taudy !< The y-direction driving stress, in ??? real, dimension(SZDIB_(G),SZDJB_(G)), & intent(in) :: H_node !< The ice shelf thickness at nodal (corner) - !! points, in Z. + !! points, in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G)), & intent(in) :: float_cond !< An array indicating where the ice !! shelf is floating: 0 if floating, 1 if not. @@ -1421,13 +1421,13 @@ subroutine ice_shelf_advect_thickness_x(CS, G, time_step, hmask, h0, h_after_ufl intent(inout) :: hmask !< A mask indicating which tracer points are !! partly or fully covered by an ice-shelf real, dimension(SZDI_(G),SZDJ_(G)), & - intent(in) :: h0 !< The initial ice shelf thicknesses in Z. + intent(in) :: h0 !< The initial ice shelf thicknesses in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G)), & intent(inout) :: h_after_uflux !< The ice shelf thicknesses after - !! the zonal mass fluxes, in Z. + !! the zonal mass fluxes, in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G),4), & intent(inout) :: flux_enter !< The ice volume flux into the cell - !! through the 4 cell boundaries, in Z m2 + !! through the 4 cell boundaries, in Z m2 ~> m3. ! use will be made of ISS%hmask here - its value at the boundary will be zero, just like uncovered cells @@ -1450,7 +1450,7 @@ subroutine ice_shelf_advect_thickness_x(CS, G, time_step, hmask, h0, h_after_ufl integer :: i, j, is, ie, js, je, isd, ied, jsd, jed, gjed, gied integer :: i_off, j_off logical :: at_east_bdry, at_west_bdry, one_off_west_bdry, one_off_east_bdry - real, dimension(-2:2) :: stencil ! Thicknesses in Z. + real, dimension(-2:2) :: stencil ! Thicknesses in Z ~> m. real :: u_face, & ! positive if out flux_diff_cell, phi, dxh, dyh, dxdyh character (len=1) :: debug_str @@ -1652,13 +1652,13 @@ subroutine ice_shelf_advect_thickness_y(CS, G, time_step, hmask, h_after_uflux, !! partly or fully covered by an ice-shelf real, dimension(SZDI_(G),SZDJ_(G)), & intent(in) :: h_after_uflux !< The ice shelf thicknesses after - !! the zonal mass fluxes, in Z. + !! the zonal mass fluxes, in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G)), & intent(inout) :: h_after_vflux !< The ice shelf thicknesses after - !! the meridional mass fluxes, in Z. + !! the meridional mass fluxes, in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G),4), & intent(inout) :: flux_enter !< The ice volume flux into the cell - !! through the 4 cell boundaries, in Z m2 + !! through the 4 cell boundaries, in Z m2 ~> m3. ! use will be made of ISS%hmask here - its value at the boundary will be zero, just like uncovered cells @@ -1681,7 +1681,7 @@ subroutine ice_shelf_advect_thickness_y(CS, G, time_step, hmask, h_after_uflux, integer :: i, j, is, ie, js, je, isd, ied, jsd, jed, gjed, gied integer :: i_off, j_off logical :: at_north_bdry, at_south_bdry, one_off_west_bdry, one_off_east_bdry - real, dimension(-2:2) :: stencil ! Thicknesses in Z + real, dimension(-2:2) :: stencil ! Thicknesses in Z ~> m. real :: v_face, & ! positive if out flux_diff_cell, phi, dxh, dyh, dxdyh character(len=1) :: debug_str @@ -1859,7 +1859,7 @@ subroutine shelf_advance_front(CS, ISS, G, flux_enter) type(ocean_grid_type), intent(in) :: G !< The grid structure used by the ice shelf. real, dimension(SZDI_(G),SZDJ_(G),4), & intent(inout) :: flux_enter !< The ice volume flux into the cell - !! through the 4 cell boundaries, in Z m2 + !! through the 4 cell boundaries, in Z m2 ~> m3. ! in this subroutine we go through the computational cells only and, if they are empty or partial cells, ! we find the reference thickness and update the shelf mass and partial area fraction and the hmask if necessary @@ -2034,13 +2034,13 @@ end subroutine shelf_advance_front subroutine ice_shelf_min_thickness_calve(G, h_shelf, area_shelf_h, hmask, thickness_calve) type(ocean_grid_type), intent(in) :: G !< The grid structure used by the ice shelf. real, dimension(SZDI_(G),SZDJ_(G)), & - intent(inout) :: h_shelf !< The ice shelf thickness, in Z. + intent(inout) :: h_shelf !< The ice shelf thickness, in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G)), & intent(inout) :: area_shelf_h !< The area per cell covered by the ice shelf, in m2. real, dimension(SZDI_(G),SZDJ_(G)), & intent(inout) :: hmask !< A mask indicating which tracer points are !! partly or fully covered by an ice-shelf - real, intent(in) :: thickness_calve !< The thickness at which to trigger calving, in Z. + real, intent(in) :: thickness_calve !< The thickness at which to trigger calving, in Z ~> m. integer :: i,j @@ -2061,7 +2061,7 @@ end subroutine ice_shelf_min_thickness_calve subroutine calve_to_mask(G, h_shelf, area_shelf_h, hmask, calve_mask) type(ocean_grid_type), intent(in) :: G !< The grid structure used by the ice shelf. real, dimension(SZDI_(G),SZDJ_(G)), & - intent(inout) :: h_shelf !< The ice shelf thickness, in Z. + intent(inout) :: h_shelf !< The ice shelf thickness, in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G)), & intent(inout) :: area_shelf_h !< The area per cell covered by the ice shelf, in m2. real, dimension(SZDI_(G),SZDJ_(G)), & @@ -2090,7 +2090,7 @@ subroutine calc_shelf_driving_stress(CS, ISS, G, US, TAUD_X, TAUD_Y, OD) type(ocean_grid_type), intent(inout) :: G !< The grid structure used by the ice shelf. type(unit_scale_type), intent(in) :: US !< Pointer to a structure containing unit conversion factors real, dimension(SZDI_(G),SZDJ_(G)), & - intent(in) :: OD !< ocean floor depth at tracer points, in Z + intent(in) :: OD !< ocean floor depth at tracer points, in Z ~> m. real, dimension(SZDIB_(G),SZDJB_(G)), & intent(inout) :: TAUD_X !< X-direction driving stress at q-points real, dimension(SZDIB_(G),SZDJB_(G)), & @@ -2107,8 +2107,8 @@ subroutine calc_shelf_driving_stress(CS, ISS, G, US, TAUD_X, TAUD_Y, OD) ! "average" ocean depth -- and is needed to find surface elevation ! (it is assumed that base_ice = bed + OD) - real, dimension(SIZE(OD,1),SIZE(OD,2)) :: S, & ! surface elevation, in Z - BASE ! basal elevation of shelf/stream, in Z + real, dimension(SIZE(OD,1),SIZE(OD,2)) :: S, & ! surface elevation, in Z ~> m. + BASE ! basal elevation of shelf/stream, in Z ~> m. real :: rho, rhow, sx, sy, neumann_val, dxh, dyh, dxdyh, grav @@ -2283,8 +2283,8 @@ subroutine init_boundary_values(CS, G, time, hmask, input_flux, input_thick, new real, dimension(SZDI_(G),SZDJ_(G)), & intent(in) :: hmask !< A mask indicating which tracer points are !! partly or fully covered by an ice-shelf - real, intent(in) :: input_flux !< The integrated inward ice thickness flux in Z m2 s-1. - real, intent(in) :: input_thick !< The ice thickness at boundaries, in Z. + real, intent(in) :: input_flux !< The integrated inward ice thickness flux in Z m2 s-1 ~> m3 s-1. + real, intent(in) :: input_thick !< The ice thickness at boundaries, in Z ~> m. logical, optional, intent(in) :: new_sim !< If present and false, this run is being restarted ! this will be a per-setup function. the boundary values of thickness and velocity @@ -2372,7 +2372,7 @@ subroutine CG_action(uret, vret, u, v, Phi, Phisub, umask, vmask, hmask, H_node, !! meridional flow at the corner point real, dimension(SZDIB_(G),SZDJB_(G)), & intent(in) :: H_node !< The ice shelf thickness at nodal (corner) - !! points, in Z. + !! points, in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G)), & intent(in) :: hmask !< A mask indicating which tracer points are !! partly or fully covered by an ice-shelf @@ -2384,7 +2384,7 @@ subroutine CG_action(uret, vret, u, v, Phi, Phisub, umask, vmask, hmask, H_node, intent(in) :: float_cond !< An array indicating where the ice !! shelf is floating: 0 if floating, 1 if not. real, dimension(SZDI_(G),SZDJ_(G)), & - intent(in) :: bathyT !< The depth of ocean bathymetry at tracer points, in Z. + intent(in) :: bathyT !< The depth of ocean bathymetry at tracer points, in Z ~> m. real, dimension(SZDIB_(G),SZDJB_(G)), & intent(in) :: beta !< A field related to the nonlinear part of the !! "linearized" basal stress. The exact form and @@ -2561,11 +2561,11 @@ subroutine CG_action_subgrid_basal(Phisub, H, U, V, DXDYH, bathyT, dens_ratio, U real, dimension(:,:,:,:,:,:), & intent(in) :: Phisub !< Quadrature structure weights at subgridscale !! locations for finite element calculations - real, dimension(2,2), intent(in) :: H !< The ice shelf thickness at nodal (corner) points, in Z. + real, dimension(2,2), intent(in) :: H !< The ice shelf thickness at nodal (corner) points, in Z ~> m. real, dimension(2,2), intent(in) :: U !< The zonal ice shelf velocity at vertices, in m/year real, dimension(2,2), intent(in) :: V !< The meridional ice shelf velocity at vertices, in m/year real, intent(in) :: DXDYH !< The tracer cell area, in m2 - real, intent(in) :: bathyT !< The depth of ocean bathymetry at tracer points, in Z. + real, intent(in) :: bathyT !< The depth of ocean bathymetry at tracer points, in Z ~> m. real, intent(in) :: dens_ratio !< The density of ice divided by the density !! of seawater, nondimensional real, dimension(2,2), intent(inout) :: Ucontr !< A field related to the subgridscale contributions to @@ -2625,7 +2625,7 @@ subroutine matrix_diagonal(CS, G, float_cond, H_node, nu, beta, hmask, dens_rati !! shelf is floating: 0 if floating, 1 if not. real, dimension(SZDIB_(G),SZDJB_(G)), & intent(in) :: H_node !< The ice shelf thickness at nodal - !! (corner) points, in Z. + !! (corner) points, in Z ~> m. real, dimension(SZDIB_(G),SZDJB_(G)), & intent(in) :: nu !< A field related to the ice viscosity from Glen's !! flow law. The exact form and units depend on the @@ -2767,9 +2767,9 @@ subroutine CG_diagonal_subgrid_basal (Phisub, H_node, DXDYH, bathyT, dens_ratio, intent(in) :: Phisub !< Quadrature structure weights at subgridscale !! locations for finite element calculations real, dimension(2,2), intent(in) :: H_node !< The ice shelf thickness at nodal (corner) - !! points, in Z + !! points, in Z ~> m. real, intent(in) :: DXDYH !< The tracer cell area, in m2 - real, intent(in) :: bathyT !< The depth of ocean bathymetry at tracer points, in Z + real, intent(in) :: bathyT !< The depth of ocean bathymetry at tracer points, in Z ~> m. real, intent(in) :: dens_ratio !< The density of ice divided by the density !! of seawater, nondimensional real, dimension(2,2), intent(inout) :: Ucontr !< A field related to the subgridscale contributions to @@ -2813,7 +2813,7 @@ subroutine apply_boundary_values(CS, ISS, G, time, Phisub, H_node, nu, beta, flo !! locations for finite element calculations real, dimension(SZDIB_(G),SZDJB_(G)), & intent(in) :: H_node !< The ice shelf thickness at nodal - !! (corner) points, in Z. + !! (corner) points, in Z ~> m. real, dimension(SZDIB_(G),SZDJB_(G)), & intent(in) :: nu !< A field related to the ice viscosity from Glen's !! flow law. The exact form and units depend on the @@ -3089,7 +3089,7 @@ subroutine update_OD_ffrac_uncoupled(CS, G, h_shelf) type(ice_shelf_dyn_CS), intent(inout) :: CS !< A pointer to the ice shelf control structure type(ocean_grid_type), intent(in) :: G !< The grid structure used by the ice shelf. real, dimension(SZDI_(G),SZDJ_(G)), & - intent(in) :: h_shelf !< the thickness of the ice shelf in Z + intent(in) :: h_shelf !< the thickness of the ice shelf in Z ~> m. integer :: i, j, iters, isd, ied, jsd, jed real :: rhoi_rhow, OD @@ -3408,13 +3408,13 @@ end subroutine update_velocity_masks subroutine interpolate_H_to_B(G, h_shelf, hmask, H_node) type(ocean_grid_type), intent(inout) :: G !< The grid structure used by the ice shelf. real, dimension(SZDI_(G),SZDJ_(G)), & - intent(in) :: h_shelf !< The ice shelf thickness at tracer points, in Z. + intent(in) :: h_shelf !< The ice shelf thickness at tracer points, in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G)), & intent(in) :: hmask !< A mask indicating which tracer points are !! partly or fully covered by an ice-shelf real, dimension(SZDIB_(G),SZDJB_(G)), & intent(inout) :: H_node !< The ice shelf thickness at nodal (corner) - !! points, in Z. + !! points, in Z ~> m. integer :: i, j, isc, iec, jsc, jec, num_h, k, l real :: summ @@ -3625,7 +3625,7 @@ subroutine ice_shelf_advect_temp_x(CS, G, time_step, hmask, h0, h_after_uflux, f intent(in) :: hmask !< A mask indicating which tracer points are !! partly or fully covered by an ice-shelf real, dimension(SZDI_(G),SZDJ_(G)), & - intent(in) :: h0 !< The initial ice shelf thicknesses in Z. + intent(in) :: h0 !< The initial ice shelf thicknesses in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G)), & intent(inout) :: h_after_uflux !< The ice shelf thicknesses after !! the zonal mass fluxes, in m. @@ -3857,10 +3857,10 @@ subroutine ice_shelf_advect_temp_y(CS, G, time_step, hmask, h_after_uflux, h_aft !! partly or fully covered by an ice-shelf real, dimension(SZDI_(G),SZDJ_(G)), & intent(in) :: h_after_uflux !< The ice shelf thicknesses after - !! the zonal mass fluxes, in Z. + !! the zonal mass fluxes, in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G)), & intent(inout) :: h_after_vflux !< The ice shelf thicknesses after - !! the meridional mass fluxes, in Z. + !! the meridional mass fluxes, in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G),4), & intent(inout) :: flux_enter !< The integrated temperature flux into !! the cell through the 4 cell boundaries, in degC Z m2 diff --git a/src/ice_shelf/MOM_ice_shelf_initialize.F90 b/src/ice_shelf/MOM_ice_shelf_initialize.F90 index efbc22f64d..f39d58cd17 100644 --- a/src/ice_shelf/MOM_ice_shelf_initialize.F90 +++ b/src/ice_shelf/MOM_ice_shelf_initialize.F90 @@ -23,7 +23,7 @@ module MOM_ice_shelf_initialize subroutine initialize_ice_thickness(h_shelf, area_shelf_h, hmask, G, US, PF) type(ocean_grid_type), intent(in) :: G !< The ocean's grid structure real, dimension(SZDI_(G),SZDJ_(G)), & - intent(inout) :: h_shelf !< The ice shelf thickness, in Z. + intent(inout) :: h_shelf !< The ice shelf thickness, in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G)), & intent(inout) :: area_shelf_h !< The area per cell covered by the ice shelf, in m2. real, dimension(SZDI_(G),SZDJ_(G)), & @@ -142,7 +142,7 @@ end subroutine initialize_ice_thickness_from_file subroutine initialize_ice_thickness_channel(h_shelf, area_shelf_h, hmask, G, US, PF) type(ocean_grid_type), intent(in) :: G !< The ocean's grid structure real, dimension(SZDI_(G),SZDJ_(G)), & - intent(inout) :: h_shelf !< The ice shelf thickness, in Z. + intent(inout) :: h_shelf !< The ice shelf thickness, in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G)), & intent(inout) :: area_shelf_h !< The area per cell covered by the ice shelf, in m2. real, dimension(SZDI_(G),SZDJ_(G)), & diff --git a/src/ice_shelf/user_shelf_init.F90 b/src/ice_shelf/user_shelf_init.F90 index 60dd6ec18f..77cc175634 100644 --- a/src/ice_shelf/user_shelf_init.F90 +++ b/src/ice_shelf/user_shelf_init.F90 @@ -23,8 +23,8 @@ module user_shelf_init !> The control structure for the user_ice_shelf module type, public :: user_ice_shelf_CS ; private real :: Rho_ocean !< The ocean's typical density, in kg m-2 Z-1. - real :: max_draft !< The maximum ocean draft of the ice shelf, in Z. - real :: min_draft !< The minimum ocean draft of the ice shelf, in Z. + real :: max_draft !< The maximum ocean draft of the ice shelf, in Z ~> m. + real :: min_draft !< The minimum ocean draft of the ice shelf, in Z ~> m. real :: flat_shelf_width !< The range over which the shelf is min_draft thick. real :: shelf_slope_scale !< The range over which the shelf slopes. real :: pos_shelf_edge_0 !< The x-position of the shelf edge at time 0, in km. @@ -134,7 +134,7 @@ subroutine USER_update_shelf_mass(mass_shelf, area_shelf_h, h_shelf, hmask, G, C real, dimension(SZDI_(G),SZDJ_(G)), & intent(inout) :: area_shelf_h !< The area per cell covered by the ice shelf, in m2. real, dimension(SZDI_(G),SZDJ_(G)), & - intent(inout) :: h_shelf !< The ice shelf thickness, in Z. + intent(inout) :: h_shelf !< The ice shelf thickness, in Z ~> m. real, dimension(SZDI_(G),SZDJ_(G)), & intent(inout) :: hmask !< A mask indicating which tracer points are !! partly or fully covered by an ice-shelf diff --git a/src/initialization/MOM_coord_initialization.F90 b/src/initialization/MOM_coord_initialization.F90 index ad66762fef..a649cf222e 100644 --- a/src/initialization/MOM_coord_initialization.F90 +++ b/src/initialization/MOM_coord_initialization.F90 @@ -39,7 +39,7 @@ subroutine MOM_initialize_coord(GV, US, PF, write_geom, output_dir, tv, max_dept logical, intent(in) :: write_geom !< If true, write grid geometry files. character(len=*), intent(in) :: output_dir !< The directory into which to write files. type(thermo_var_ptrs), intent(inout) :: tv !< The thermodynamic variable structure. - real, intent(in) :: max_depth !< The ocean's maximum depth, in Z. + real, intent(in) :: max_depth !< The ocean's maximum depth, in Z ~> m. ! Local character(len=200) :: config logical :: debug @@ -121,7 +121,7 @@ subroutine set_coord_from_gprime(Rlay, g_prime, GV, US, param_file) real, dimension(:), intent(out) :: Rlay !< The layers' target coordinate values !! (potential density). real, dimension(:), intent(out) :: g_prime !< The reduced gravity across the interfaces - !! in m2 Z-1 s-2. + !! in m2 Z-1 s-2 ~> m s-2. type(verticalGrid_type), intent(in) :: GV !< The ocean's vertical grid structure. type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type type(param_file_type), intent(in) :: param_file !< A structure to parse for run-time parameters @@ -155,7 +155,7 @@ subroutine set_coord_from_layer_density(Rlay, g_prime, GV, US, param_file) real, dimension(:), intent(out) :: Rlay !< The layers' target coordinate values !! (potential density). real, dimension(:), intent(out) :: g_prime !< The reduced gravity across the interfaces - !! in m2 Z-1 s-2. + !! in m2 Z-1 s-2 ~> m s-2. type(verticalGrid_type), intent(in) :: GV !< The ocean's vertical grid structure type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type type(param_file_type), intent(in) :: param_file !< A structure to parse for run-time parameters @@ -198,7 +198,7 @@ subroutine set_coord_from_TS_ref(Rlay, g_prime, GV, US, param_file, eqn_of_state real, dimension(:), intent(out) :: Rlay !< The layers' target coordinate values !! (potential density). real, dimension(:), intent(out) :: g_prime !< The reduced gravity across the interfaces - !! in m2 Z-1 s-2. + !! in m2 Z-1 s-2 ~> m s-2. type(verticalGrid_type), intent(in) :: GV !< The ocean's vertical grid structure. type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type type(param_file_type), intent(in) :: param_file !< A structure to parse for run-time @@ -250,7 +250,7 @@ subroutine set_coord_from_TS_profile(Rlay, g_prime, GV, US, param_file, & real, dimension(:), intent(out) :: Rlay !< The layers' target coordinate values !! (potential density). real, dimension(:), intent(out) :: g_prime !< The reduced gravity across the interfaces - !! in m2 Z-1 s-2. + !! in m2 Z-1 s-2 ~> m s-2. type(verticalGrid_type), intent(in) :: GV !< The ocean's vertical grid structure. type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type type(param_file_type), intent(in) :: param_file !< A structure to parse for run-time @@ -299,7 +299,7 @@ subroutine set_coord_from_TS_range(Rlay, g_prime, GV, US, param_file, & real, dimension(:), intent(out) :: Rlay !< The layers' target coordinate values !! (potential density). real, dimension(:), intent(out) :: g_prime !< The reduced gravity across the interfaces - !! in m2 Z-1 s-2. + !! in m2 Z-1 s-2 ~> m s-2. type(verticalGrid_type), intent(in) :: GV !< The ocean's vertical grid structure. type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type type(param_file_type), intent(in) :: param_file !< A structure to parse for run-time @@ -381,7 +381,7 @@ subroutine set_coord_from_file(Rlay, g_prime, GV, US, param_file) real, dimension(:), intent(out) :: Rlay !< The layers' target coordinate values !! (potential density). real, dimension(:), intent(out) :: g_prime !< The reduced gravity across the interfaces - !! in m2 Z-1 s-2. + !! in m2 Z-1 s-2 ~> m s-2. type(verticalGrid_type), intent(in) :: GV !< The ocean's vertical grid structure. type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type type(param_file_type), intent(in) :: param_file !< A structure to parse for run-time parameters @@ -432,7 +432,7 @@ subroutine set_coord_linear(Rlay, g_prime, GV, US, param_file) real, dimension(:), intent(out) :: Rlay !< The layers' target coordinate values !! (potential density). real, dimension(:), intent(out) :: g_prime !< The reduced gravity across the interfaces - !! in m2 Z-1 s-2. + !! in m2 Z-1 s-2 ~> m s-2. type(verticalGrid_type), intent(in) :: GV !< The ocean's vertical grid structure. type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type type(param_file_type), intent(in) :: param_file !< A structure to parse for run-time parameters diff --git a/src/initialization/MOM_grid_initialize.F90 b/src/initialization/MOM_grid_initialize.F90 index a0a354858f..7136965b2d 100644 --- a/src/initialization/MOM_grid_initialize.F90 +++ b/src/initialization/MOM_grid_initialize.F90 @@ -1222,9 +1222,9 @@ subroutine initialize_masks(G, PF, US) type(unit_scale_type), optional, intent(in) :: US !< A dimensional unit scaling type ! Local variables real :: m_to_Z_scale ! A unit conversion factor from m to Z. - real :: Dmin ! The depth for masking in the same units as G%bathyT (Z). - real :: min_depth ! The minimum ocean depth in the same units as G%bathyT (Z). - real :: mask_depth ! The depth shallower than which to mask a point as land, in Z. + real :: Dmin ! The depth for masking in the same units as G%bathyT (Z ~> m). + real :: min_depth ! The minimum ocean depth in the same units as G%bathyT (Z ~> m). + real :: mask_depth ! The depth shallower than which to mask a point as land, in Z ~> m. character(len=40) :: mdl = "MOM_grid_init initialize_masks" integer :: i, j diff --git a/src/initialization/MOM_shared_initialization.F90 b/src/initialization/MOM_shared_initialization.F90 index 113c3b3a85..3681e86dd1 100644 --- a/src/initialization/MOM_shared_initialization.F90 +++ b/src/initialization/MOM_shared_initialization.F90 @@ -303,11 +303,11 @@ subroutine initialize_topography_named(D, G, param_file, topog_config, max_depth ! Local variables real :: m_to_Z ! A dimensional rescaling factor. - real :: min_depth ! The minimum depth in Z. + real :: min_depth ! The minimum depth in Z ~> m. real :: PI ! 3.1415926... calculated as 4*atan(1) real :: D0 ! A constant to make the maximum basin depth MAXIMUM_DEPTH. real :: expdecay ! A decay scale of associated with the sloping boundaries, in m. - real :: Dedge ! The depth in Z at the basin edge + real :: Dedge ! The depth, in Z ~> m, at the basin edge ! real :: south_lat, west_lon, len_lon, len_lat, Rad_earth integer :: i, j, is, ie, js, je, isd, ied, jsd, jed character(len=40) :: mdl = "initialize_topography_named" ! This subroutine's name. diff --git a/src/initialization/MOM_state_initialization.F90 b/src/initialization/MOM_state_initialization.F90 index 83347d2089..a4b49395ad 100644 --- a/src/initialization/MOM_state_initialization.F90 +++ b/src/initialization/MOM_state_initialization.F90 @@ -700,7 +700,7 @@ subroutine adjustEtaToFitBathymetry(G, GV, US, eta, h) type(ocean_grid_type), intent(in) :: G !< The ocean's grid structure type(verticalGrid_type), intent(in) :: GV !< The ocean's vertical grid structure type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type - real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1), intent(inout) :: eta !< Interface heights, in Z + real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1), intent(inout) :: eta !< Interface heights, in Z ~> m. real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(inout) :: h !< Layer thicknesses, in H ! Local variables integer :: i, j, k, is, ie, js, je, nz, contractions, dilations @@ -837,10 +837,10 @@ subroutine initialize_thickness_list(h, G, GV, US, param_file, just_read_params) !! only read parameters without changing h. ! Local variables character(len=40) :: mdl = "initialize_thickness_list" ! This subroutine's name. - real :: e0(SZK_(G)+1) ! The resting interface heights, in depth units (Z), + real :: e0(SZK_(G)+1) ! The resting interface heights, in depth units (Z ~> m), ! usually negative because it is positive upward. real :: eta1D(SZK_(G)+1)! Interface height relative to the sea surface - ! positive upward, in depth units (Z). + ! positive upward, in depth units (Z ~> m). logical :: just_read ! If true, just read parameters but set nothing. character(len=200) :: filename, eta_file, inputdir ! Strings for file/path character(len=72) :: eta_var @@ -1153,8 +1153,8 @@ subroutine cut_off_column_top(nk, tv, GV, G_earth, depth, min_thickness, & type(thermo_var_ptrs), intent(in) :: tv !< Thermodynamics structure type(verticalGrid_type), intent(in) :: GV !< The ocean's vertical grid structure. real, intent(in) :: G_earth !< Gravitational acceleration (m2 Z-1 s-2) - real, intent(in) :: depth !< Depth of ocean column (Z) - real, intent(in) :: min_thickness !< Smallest thickness allowed (Z) + real, intent(in) :: depth !< Depth of ocean column, in Z ~> m. + real, intent(in) :: min_thickness !< Smallest thickness allowed, in Z ~> m. real, dimension(nk), intent(inout) :: T !< Layer mean temperature real, dimension(nk), intent(in) :: T_t !< Temperature at top of layer real, dimension(nk), intent(in) :: T_b !< Temperature at bottom of layer @@ -1166,7 +1166,7 @@ subroutine cut_off_column_top(nk, tv, GV, G_earth, depth, min_thickness, & type(remapping_CS), pointer :: remap_CS !< Remapping structure for remapping T and S, !! if associated real, optional, intent(in) :: z_tol !< The tolerance with which to find the depth - !! matching the specified pressure, in Z. + !! matching the specified pressure, in Z ~> m. ! Local variables real, dimension(nk+1) :: e ! Top and bottom edge values for reconstructions @@ -1936,11 +1936,11 @@ subroutine MOM_temp_salt_initialize_from_Z(h, tv, G, GV, US, PF, just_read_param integer :: kd, inconsistent integer :: nkd ! number of levels to use for regridding input arrays - real :: eps_Z ! A negligibly thin layer thickness, in Z. + real :: eps_Z ! A negligibly thin layer thickness, in Z ~> m. real :: PI_180 ! for conversion from degrees to radians real, dimension(:,:), pointer :: shelf_area => NULL() - real :: min_depth ! The minimum depth in Z. + real :: min_depth ! The minimum depth in Z ~> m. real :: dilate real :: missing_value_temp, missing_value_salt logical :: correct_thickness @@ -1959,19 +1959,19 @@ subroutine MOM_temp_salt_initialize_from_Z(h, tv, G, GV, US, PF, just_read_param real, dimension(:), allocatable :: z_edges_in, z_in, Rb real, dimension(:,:,:), allocatable, target :: temp_z, salt_z, mask_z real, dimension(:,:,:), allocatable :: rho_z - real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1) :: zi ! Interface heights in Z. + real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1) :: zi ! Interface heights in Z ~> m. real, dimension(SZI_(G),SZJ_(G)) :: nlevs real, dimension(SZI_(G)) :: press ! Pressures in Pa. ! Local variables for ALE remapping - real, dimension(:), allocatable :: hTarget ! Target thicknesses in Z. + real, dimension(:), allocatable :: hTarget ! Target thicknesses in Z ~> m. real, dimension(:,:), allocatable :: area_shelf_h real, dimension(:,:), allocatable, target :: frac_shelf_h real, dimension(:,:,:), allocatable, target :: tmpT1dIn, tmpS1dIn real, dimension(:,:,:), allocatable :: tmp_mask_in real, dimension(:,:,:), allocatable :: h1 ! Thicknesses in H. real, dimension(:,:,:), allocatable :: dz_interface ! Change in position of interface due to regridding - real :: zTopOfCell, zBottomOfCell ! Heights in Z units + real :: zTopOfCell, zBottomOfCell ! Heights in Z units, Z ~> m. type(regridding_CS) :: regridCS ! Regridding parameters and work arrays type(remapping_CS) :: remapCS ! Remapping parameters and work arrays diff --git a/src/initialization/MOM_tracer_initialization_from_Z.F90 b/src/initialization/MOM_tracer_initialization_from_Z.F90 index 1baf30fcc3..9c04b8ca39 100644 --- a/src/initialization/MOM_tracer_initialization_from_Z.F90 +++ b/src/initialization/MOM_tracer_initialization_from_Z.F90 @@ -78,8 +78,8 @@ subroutine MOM_initialize_tracer_from_Z(h, tr, G, GV, US, PF, src_file, src_var_ ! Local variables for ALE remapping real, dimension(:,:,:), allocatable :: hSrc ! Source thicknesses in H units. - real, dimension(:), allocatable :: h1 ! A 1-d column of source thicknesses in Z. - real :: zTopOfCell, zBottomOfCell, z_bathy ! Heights in Z. + real, dimension(:), allocatable :: h1 ! A 1-d column of source thicknesses in Z ~> m. + real :: zTopOfCell, zBottomOfCell, z_bathy ! Heights in Z ~> m. type(remapping_CS) :: remapCS ! Remapping parameters and work arrays real :: missing_value diff --git a/src/initialization/midas_vertmap.F90 b/src/initialization/midas_vertmap.F90 index 23bda0fce0..b7d1b43152 100644 --- a/src/initialization/midas_vertmap.F90 +++ b/src/initialization/midas_vertmap.F90 @@ -171,7 +171,7 @@ function tracer_z_init(tr_in, z_edges, e, nkml, nkbl, land_fill, wet, nlay, nlev integer :: n,i,j,k,l,nx,ny,nz,nt,kz integer :: k_top,k_bot,k_bot_prev,kk,kstart real :: sl_tr ! The tracer concentration slope times the layer thickess, in tracer units. - real :: epsln_Z ! A negligibly thin layer thickness, in Z. + real :: epsln_Z ! A negligibly thin layer thickness, in Z ~> m. real, dimension(size(tr_in,3)) :: wt !< The fractional weight for each layer in the range between z1 and z2 real, dimension(size(tr_in,3)) :: z1, z2 ! z1 and z2 are the fractional depths of the top and bottom ! limits of the part of a z-cell that contributes to a layer, relative @@ -560,13 +560,13 @@ function find_interfaces(rho, zin, Rb, depth, nlevs, nkml, nkbl, hml, debug, eps intent(in) :: zin !< Input data levels, in Z (often m). real, dimension(:), intent(in) :: Rb !< target interface densities (kg m-3) real, dimension(size(rho,1),size(rho,2)), & - intent(in) :: depth !< ocean depth in Z + intent(in) :: depth !< ocean depth in Z ~> m. real, dimension(size(rho,1),size(rho,2)), & optional, intent(in) :: nlevs !< number of valid points in each column logical, optional, intent(in) :: debug !< optional debug flag integer, optional, intent(in) :: nkml !< number of mixed layer pieces integer, optional, intent(in) :: nkbl !< number of buffer layer pieces - real, optional, intent(in) :: hml !< mixed layer depth, in Z + real, optional, intent(in) :: hml !< mixed layer depth, in Z ~> m. real, optional, intent(in) :: eps_z !< A negligibly small layer thickness in the units of Z. real, dimension(size(rho,1),size(rho,2),size(Rb,1)) :: zi !< The returned interface, in the same units az zin. @@ -583,7 +583,7 @@ function find_interfaces(rho, zin, Rb, depth, nlevs, nkml, nkbl, hml, debug, eps integer :: n,i,j,k,l,nx,ny,nz,nt integer :: nlay,kk,nkml_,nkbl_ logical :: debug_ = .false. - real :: epsln_Z ! A negligibly thin layer thickness, in Z. + real :: epsln_Z ! A negligibly thin layer thickness, in Z ~> m. real :: epsln_rho ! A negligibly small density change, in kg m-3. real, parameter :: zoff=0.999 diff --git a/src/parameterizations/lateral/MOM_mixed_layer_restrat.F90 b/src/parameterizations/lateral/MOM_mixed_layer_restrat.F90 index 55c906ae26..2754ad06c0 100644 --- a/src/parameterizations/lateral/MOM_mixed_layer_restrat.F90 +++ b/src/parameterizations/lateral/MOM_mixed_layer_restrat.F90 @@ -141,17 +141,17 @@ subroutine mixedlayer_restrat_general(h, uhtr, vhtr, tv, forces, dt, MLD_in, Var MLD_slow, & ! Mixed layer depth actually used in MLE restratification parameterization (H units) htot_slow, & ! The sum of the thicknesses of layers in the mixed layer (H units) Rml_av_slow ! g_Rho0 times the average mixed layer density (m s-2) - real :: g_Rho0 ! G_Earth/Rho0 (m5 Z-1 s-2 kg-1) + real :: g_Rho0 ! G_Earth/Rho0 (m5 Z-1 s-2 kg-1 ~> m4 s-2 kg-1) real :: rho_ml(SZI_(G)) ! Potential density relative to the surface (kg m-3) real :: p0(SZI_(G)) ! A pressure of 0 (Pa) - real :: h_vel ! htot interpolated onto velocity points in Z (not H). + real :: h_vel ! htot interpolated onto velocity points, in Z ~> m (not H). real :: absf ! absolute value of f, interpolated to velocity points (s-1) - real :: u_star ! surface friction velocity, interpolated to velocity points (Z s-1) + real :: u_star ! surface friction velocity, interpolated to velocity points, in Z s-1 ~> m s-1. real :: mom_mixrate ! rate at which momentum is homogenized within mixed layer (s-1) real :: timescale ! mixing growth timescale (sec) real :: h_neglect ! tiny thickness usually lost in roundoff so can be neglected (H units) - real :: dz_neglect ! A tiny thickness (in Z) that is usually lost in roundoff so can be neglected + real :: dz_neglect ! A tiny thickness (in Z ~> m) that is usually lost in roundoff so can be neglected real :: I4dt ! 1/(4 dt) (sec-1) real :: Ihtot,Ihtot_slow! total mixed layer thickness real :: a(SZK_(G)) ! A non-dimensional value relating the overall flux @@ -563,17 +563,17 @@ subroutine mixedlayer_restrat_BML(h, uhtr, vhtr, tv, forces, dt, G, GV, US, CS) real, dimension(SZI_(G),SZJ_(G)) :: & htot, & ! The sum of the thicknesses of layers in the mixed layer (H units) Rml_av ! g_Rho0 times the average mixed layer density (m s-2) - real :: g_Rho0 ! G_Earth/Rho0 (m5 Z-1 s-2 kg-1) + real :: g_Rho0 ! G_Earth/Rho0 (m5 Z-1 s-2 kg-1 ~> m4 s-2 kg-1) real :: Rho0(SZI_(G)) ! Potential density relative to the surface (kg m-3) real :: p0(SZI_(G)) ! A pressure of 0 (Pa) - real :: h_vel ! htot interpolated onto velocity points (Z; not H) + real :: h_vel ! htot interpolated onto velocity points (in Z ~> m; not H) real :: absf ! absolute value of f, interpolated to velocity points (s-1) - real :: u_star ! surface friction velocity, interpolated to velocity points (Z s-1) + real :: u_star ! surface friction velocity, interpolated to velocity points, in Z s-1 ~> m s-1. real :: mom_mixrate ! rate at which momentum is homogenized within mixed layer (s-1) real :: timescale ! mixing growth timescale (sec) real :: h_neglect ! tiny thickness usually lost in roundoff and can be neglected (H units) - real :: dz_neglect ! tiny thickness (in Z) that usually lost in roundoff and can be neglected (meter) + real :: dz_neglect ! tiny thickness (in Z ~> m) that usually lost in roundoff and can be neglected (meter) real :: I4dt ! 1/(4 dt) real :: I2htot ! Twice the total mixed layer thickness at velocity points (H units) real :: z_topx2 ! depth of the top of a layer at velocity points (H units) diff --git a/src/parameterizations/lateral/MOM_thickness_diffuse.F90 b/src/parameterizations/lateral/MOM_thickness_diffuse.F90 index f4e95bbb17..9a7d7078df 100644 --- a/src/parameterizations/lateral/MOM_thickness_diffuse.F90 +++ b/src/parameterizations/lateral/MOM_thickness_diffuse.F90 @@ -88,7 +88,7 @@ subroutine thickness_diffuse(h, uhtr, vhtr, tv, dt, G, GV, US, MEKE, VarMix, CDp type(thickness_diffuse_CS), pointer :: CS !< Control structure for thickness diffusion ! Local variables real :: e(SZI_(G), SZJ_(G), SZK_(G)+1) ! heights of interfaces, relative to mean - ! sea level, in Z, positive up. + ! sea level, in Z ~> m, positive up. real :: uhD(SZIB_(G), SZJ_(G), SZK_(G)) ! uhD & vhD are the diffusive u*h & real :: vhD(SZI_(G), SZJB_(G), SZK_(G)) ! v*h fluxes (m2 H s-1) @@ -466,28 +466,30 @@ subroutine thickness_diffuse_full(h, e, Kh_u, Kh_v, tv, uhD, vhD, cg1, dt, G, GV real :: drdkL, drdkR ! Vertical density differences across an interface, in kg m-3. real :: drdi_u(SZIB_(G), SZK_(G)+1) ! Copy of drdi at u-points in kg m-3. real :: drdj_v(SZI_(G), SZK_(G)+1) ! Copy of drdj at v-points in kg m-3. - real :: drdkDe_u(SZIB_(G), SZK_(G)+1) ! Lateral difference of product of drdk and e at u-points, in Z kg m-3. - real :: drdkDe_v(SZI_(G), SZK_(G)+1) ! Lateral difference of product of drdk and e at v-points, in Z kg m-3. + real :: drdkDe_u(SZIB_(G),SZK_(G)+1) ! Lateral difference of product of drdk and e at u-points, + ! in Z kg m-3 ~> kg m-2. + real :: drdkDe_v(SZI_(G),SZK_(G)+1) ! Lateral difference of product of drdk and e at v-points, + ! in Z kg m-3 ~> kg m-2. real :: hg2A, hg2B, hg2L, hg2R ! Squares of geometric mean thicknesses, in H2. real :: haA, haB, haL, haR ! Arithmetic mean thicknesses in H. - real :: dzaL, dzaR ! Temporary thicknesses in Z. + real :: dzaL, dzaR ! Temporary thicknesses in Z ~> m. real :: wtA, wtB, wtL, wtR ! Unscaled weights, with various units. real :: drdx, drdy ! Zonal and meridional density gradients, in kg m-4. - real :: drdz ! Vertical density gradient, in units of kg m-3 Z-1. + real :: drdz ! Vertical density gradient, in units of kg m-3 Z-1 ~> kg m-4. real :: h_harm ! Harmonic mean layer thickness, in H. - real :: c2_h_u(SZIB_(G), SZK_(G)+1) ! Wave speed squared divided by h at u-points, m2 Z-1 s-2. - real :: c2_h_v(SZI_(G), SZK_(G)+1) ! Wave speed squared divided by h at v-points, m2 Z-1 s-2. - real :: hN2_u(SZIB_(G), SZK_(G)+1) ! Thickness in m times N2 at interfaces above u-points, m2 Z-1 s-2. - real :: hN2_v(SZI_(G), SZK_(G)+1) ! Thickness in m times N2 at interfaces above v-points, m2 Z-1 s-2. + real :: c2_h_u(SZIB_(G), SZK_(G)+1) ! Wave speed squared divided by h at u-points, in m2 Z-1 s-2 ~> m s-2. + real :: c2_h_v(SZI_(G), SZK_(G)+1) ! Wave speed squared divided by h at v-points, in m2 Z-1 s-2 ~> m s-2. + real :: hN2_u(SZIB_(G), SZK_(G)+1) ! Thickness in m times N2 at interfaces above u-points, in m2 Z-1 s-2. + real :: hN2_v(SZI_(G), SZK_(G)+1) ! Thickness in m times N2 at interfaces above v-points, in m2 Z-1 s-2. real :: Sfn_est ! Two preliminary estimates (before limiting) of the - ! overturning streamfunction, both in Z m2 s-1. - real :: Sfn_unlim_u(SZIB_(G), SZK_(G)+1) ! Streamfunction for u-points (Z m2 s-1) - real :: Sfn_unlim_v(SZI_(G), SZK_(G)+1) ! Streamfunction for v-points (Z m2 s-1) + ! overturning streamfunction, both in Z m2 s-1 ~> m3 s-1. + real :: Sfn_unlim_u(SZIB_(G), SZK_(G)+1) ! Streamfunction for u-points, in Z m2 s-1 ~> m3 s-1. + real :: Sfn_unlim_v(SZI_(G), SZK_(G)+1) ! Streamfunction for v-points, in Z m2 s-1 ~> m3 s-1. real :: slope2_Ratio_u(SZIB_(G), SZK_(G)+1) ! The ratio of the slope squared to slope_max squared. real :: slope2_Ratio_v(SZI_(G), SZK_(G)+1) ! The ratio of the slope squared to slope_max squared. real :: Sfn_in_h ! The overturning streamfunction, in H m2 s-1 (note units different from other Sfn vars). real :: Sfn_safe ! The streamfunction that goes linearly back to 0 at the surface. This is a - ! good thing to use when the slope is so large as to be meaningless (Z m2 s-1). + ! good thing to use when the slope is so large as to be meaningless (Z m2 s-1 ~> m3 s-1). real :: Slope ! The slope of density surfaces, calculated in a way ! that is always between -1 and 1, nondimensional. real :: mag_grad2 ! The squared magnitude of the 3-d density gradient, in kg2 m-8. @@ -495,16 +497,16 @@ subroutine thickness_diffuse_full(h, e, Kh_u, Kh_v, tv, uhD, vhD, cg1, dt, G, GV real :: h_neglect ! A thickness that is so small it is usually lost ! in roundoff and can be neglected, in H. real :: h_neglect2 ! h_neglect^2, in H2. - real :: dz_neglect ! A thickness in Z that is so small it is usually lost - ! in roundoff and can be neglected, in Z. + real :: dz_neglect ! A thickness, in Z ~> m, that is so small it is usually lost + ! in roundoff and can be neglected, in Z ~> m. real :: G_scale ! The gravitational acceleration times some unit conversion - ! factors, in m3 Z-1 H-1 s-2. + ! factors, in m3 Z-1 H-1 s-2 ~> m s-2 or m4 kg-1 s-2. logical :: use_EOS ! If true, density is calculated from T & S using an ! equation of state. logical :: find_work ! If true, find the change in energy due to the fluxes. integer :: nk_linear ! The number of layers over which the streamfunction ! goes to 0. - real :: G_rho0 ! g/Rho0 in m5 Z-1 s-2 + real :: G_rho0 ! g/Rho0, in m5 Z-1 s-2 ~> m4 s-2. real :: N2_floor ! A floor for N2 to avoid degeneracy in the elliptic solver ! times unit conversion factors (s-2 m2 Z-2) real, dimension(SZIB_(G), SZJ_(G), SZK_(G)+1) :: diag_sfn_x, diag_sfn_unlim_x ! Diagnostics diff --git a/src/parameterizations/vertical/MOM_ALE_sponge.F90 b/src/parameterizations/vertical/MOM_ALE_sponge.F90 index b08e77e213..8fe7267953 100644 --- a/src/parameterizations/vertical/MOM_ALE_sponge.F90 +++ b/src/parameterizations/vertical/MOM_ALE_sponge.F90 @@ -597,7 +597,7 @@ subroutine set_up_ALE_sponge_field_varying(filename, fieldname, Time, G, GV, f_p ! Local variables real, allocatable, dimension(:,:,:) :: sp_val !< Field to be used in the sponge real, allocatable, dimension(:,:,:) :: mask_z !< Field mask for the sponge data - real, allocatable, dimension(:), target :: z_in, z_edges_in ! Heights in Z. + real, allocatable, dimension(:), target :: z_in, z_edges_in ! Heights in Z ~> m. real :: missing_value integer :: j, k, col integer :: isd,ied,jsd,jed @@ -607,9 +607,9 @@ subroutine set_up_ALE_sponge_field_varying(filename, fieldname, Time, G, GV, f_p character(len=256) :: mesg ! String for error messages ! Local variables for ALE remapping - real, dimension(:), allocatable :: hsrc ! Source thicknesses in Z + real, dimension(:), allocatable :: hsrc ! Source thicknesses in Z ~> m. real, dimension(:), allocatable :: tmpT1d - real :: zTopOfCell, zBottomOfCell ! Heights in Z + real :: zTopOfCell, zBottomOfCell ! Heights in Z ~> m. type(remapping_CS) :: remapCS ! Remapping parameters and work arrays if (.not.associated(CS)) return diff --git a/src/parameterizations/vertical/MOM_CVMix_shear.F90 b/src/parameterizations/vertical/MOM_CVMix_shear.F90 index 9b33e7dd8e..f53b8a6934 100644 --- a/src/parameterizations/vertical/MOM_CVMix_shear.F90 +++ b/src/parameterizations/vertical/MOM_CVMix_shear.F90 @@ -60,9 +60,9 @@ subroutine calculate_CVMix_shear(u_H, v_H, h, tv, kd, kv, G, GV, US, CS ) real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(in) :: h !< Layer thickness, in m or kg m-2. type(thermo_var_ptrs), intent(in) :: tv !< Thermodynamics structure. real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1), intent(out) :: kd !< The vertical diffusivity at each interface - !! (not layer!) in Z2 s-1. + !! (not layer!) in Z2 s-1 ~> m2 s-1. real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1), intent(out) :: kv !< The vertical viscosity at each interface - !! (not layer!) in Z2 s-1. + !! (not layer!) in Z2 s-1 ~> m2 s-1. type(CVMix_shear_cs), pointer :: CS !< The control structure returned by a previous call to !! CVMix_shear_init. ! Local variables diff --git a/src/parameterizations/vertical/MOM_bkgnd_mixing.F90 b/src/parameterizations/vertical/MOM_bkgnd_mixing.F90 index 4aea0b8d5d..e1e86b9e1a 100644 --- a/src/parameterizations/vertical/MOM_bkgnd_mixing.F90 +++ b/src/parameterizations/vertical/MOM_bkgnd_mixing.F90 @@ -384,9 +384,10 @@ subroutine calculate_bkgnd_mixing(h, tv, N2_lay, kd_lay, Kv, j, G, GV, US, CS) type(thermo_var_ptrs), intent(in) :: tv !< Thermodynamics structure. real, dimension(SZI_(G),SZK_(G)), intent(in) :: N2_lay !< squared buoyancy frequency associated !! with layers (1/s2) - real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(inout) :: kd_lay !< Diapycnal diffusivity of each layer Z2 s-1. + real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(inout) :: kd_lay !< Diapycnal diffusivity of each layer, + !! in Z2 s-1 ~> m2 s-1. real, dimension(:,:,:), pointer :: Kv !< The "slow" vertical viscosity at each interface - !! (not layer!) in Z2 s-1 + !! (not layer!) in Z2 s-1 ~> m2 s-1 integer, intent(in) :: j !< Meridional grid index type(bkgnd_mixing_cs), pointer :: CS !< The control structure returned by !! a previous call to bkgnd_mixing_init. diff --git a/src/parameterizations/vertical/MOM_bulk_mixed_layer.F90 b/src/parameterizations/vertical/MOM_bulk_mixed_layer.F90 index 5d74f0d4d2..858ad04189 100644 --- a/src/parameterizations/vertical/MOM_bulk_mixed_layer.F90 +++ b/src/parameterizations/vertical/MOM_bulk_mixed_layer.F90 @@ -48,7 +48,7 @@ module MOM_bulk_mixed_layer !! value, in H, scale away all surface forcing to !! avoid boiling the ocean. real :: ustar_min !< A minimum value of ustar to avoid numerical problems, - !! in Z s-1. If the value is small enough, this should + !! in Z s-1 ~> m s-1. If the value is small enough, this should !! not affect the solution. real :: omega !< The Earth's rotation rate, in s-1. real :: dT_dS_wt !< When forced to extrapolate T & S to match the @@ -83,7 +83,7 @@ module MOM_bulk_mixed_layer logical :: TKE_diagnostics = .false. !< If true, calculate extensive diagnostics of the TKE budget logical :: do_rivermix = .false. !< Provide additional TKE to mix river runoff !! at the river mouths to rivermix_depth - real :: rivermix_depth = 0.0 !< The depth of mixing if do_rivermix is true, in Z. + real :: rivermix_depth = 0.0 !< The depth of mixing if do_rivermix is true, in Z ~> m. logical :: limit_det !< If true, limit the extent of buffer layer !! detrainment to be consistent with neighbors. real :: lim_det_dH_sfc !< The fractional limit in the change between grid @@ -106,7 +106,7 @@ module MOM_bulk_mixed_layer real :: Allowed_S_chg !< The amount by which salinity is allowed !! to exceed previous values during detrainment, PSU. - ! These are terms in the mixed layer TKE budget, all in Z m2 s-3. + ! These are terms in the mixed layer TKE budget, all in Z m2 s-3 ~> m3 s-3. real, allocatable, dimension(:,:) :: & ML_depth, & !< The mixed layer depth in H. diag_TKE_wind, & !< The wind source of TKE. @@ -249,12 +249,12 @@ subroutine bulkmixedlayer(h_3d, u_3d, v_3d, tv, fluxes, dt, ea, eb, G, GV, US, C integer, dimension(SZI_(G),SZK_(GV)) :: & ksort ! The sorted k-index that each original layer goes to. real, dimension(SZI_(G),SZJ_(G)) :: & - h_miss ! The summed absolute mismatch, in Z. + h_miss ! The summed absolute mismatch, in Z ~> m. real, dimension(SZI_(G)) :: & TKE, & ! The turbulent kinetic energy available for mixing over a - ! time step, in Z m2 s-2. + ! time step, in Z m2 s-2 ~> m3 s-2. Conv_En, & ! The turbulent kinetic energy source due to mixing down to - ! the depth of free convection, in Z m2 s-2. + ! the depth of free convection, in Z m2 s-2 ~> m3 s-2. htot, & ! The total depth of the layers being considered for ! entrainment, in H. R0_tot, & ! The integrated potential density referenced to the surface @@ -290,7 +290,7 @@ subroutine bulkmixedlayer(h_3d, u_3d, v_3d, tv, fluxes, dt, ea, eb, G, GV, US, C dRcv_dS, & ! Partial derivative of the coordinate variable potential ! density in the mixed layer with salinity, in kg m-3 psu-1. TKE_river ! The turbulent kinetic energy available for mixing at rivermouths over a - ! time step, in Z m2 s-2. + ! time step, in Z m2 s-2 ~> m3 s-2. real, dimension(max(CS%nsw,1),SZI_(G)) :: & Pen_SW_bnd ! The penetrating fraction of the shortwave heating integrated @@ -309,21 +309,21 @@ subroutine bulkmixedlayer(h_3d, u_3d, v_3d, tv, fluxes, dt, ea, eb, G, GV, US, C real, dimension(SZI_(G)) :: & dKE_FC, & ! The change in mean kinetic energy due to free convection, - ! in Z m2 s-2. + ! in Z m2 s-2 ~> m3 s-2. h_CA ! The depth to which convective adjustment has gone in H. real, dimension(SZI_(G),SZK_(GV)) :: & dKE_CA, & ! The change in mean kinetic energy due to convective - ! adjustment, in Z m2 s-2. + ! adjustment, in Z m2 s-2 ~> m3 s-2. cTKE ! The turbulent kinetic energy source due to convective ! adjustment, Z m2 s-2. real, dimension(SZI_(G),SZJ_(G)) :: & Hsfc_max, & ! The thickness of the surface region (mixed and buffer layers) - ! after entrainment but before any buffer layer detrainment, in Z. + ! after entrainment but before any buffer layer detrainment, in Z ~> m. Hsfc_used, & ! The thickness of the surface region after buffer layer ! detrainment, in units of Z. Hsfc_min, & ! The minimum thickness of the surface region based on the ! new mixed layer depth and the previous thickness of the - ! neighboring water columns, in Z. + ! neighboring water columns, in Z ~> m. h_sum, & ! The total thickness of the water column, in H. hmbl_prev ! The previous thickness of the mixed and buffer layers, in H. real, dimension(SZI_(G)) :: & @@ -336,7 +336,7 @@ subroutine bulkmixedlayer(h_3d, u_3d, v_3d, tv, fluxes, dt, ea, eb, G, GV, US, C real :: absf_x_H ! The absolute value of f times the mixed layer thickness, ! in units of Z s-1. - real :: kU_star ! Ustar times the Von Karmen constant, in Z s-1. + real :: kU_star ! Ustar times the Von Karmen constant, in Z s-1 ~> m s-1. real :: dt__diag ! A copy of dt_diag (if present) or dt, in s. logical :: write_diags ! If true, write out diagnostics with this step. logical :: reset_diags ! If true, zero out the accumulated diagnostics. @@ -816,10 +816,10 @@ subroutine convective_adjustment(h, u, v, R0, Rcv, T, S, eps, d_eb, & !! that will be left in each layer, in H. real, dimension(SZI_(G),SZK_(GV)), intent(out) :: dKE_CA !< The vertically integrated change in !! kinetic energy due to convective - !! adjustment, in Z m2 s-2. + !! adjustment, in Z m2 s-2 ~> m3 s-2. real, dimension(SZI_(G),SZK_(GV)), intent(out) :: cTKE !< The buoyant turbulent kinetic energy !! source due to convective adjustment, - !! in Z m2 s-2. + !! in Z m2 s-2 ~> m3 s-2. integer, intent(in) :: j !< The j-index to work on. type(bulkmixedlayer_CS), pointer :: CS !< The control structure for this module. integer, optional, intent(in) :: nz_conv !< If present, the number of layers @@ -997,9 +997,9 @@ subroutine mixedlayer_convection(h, d_eb, htot, Ttot, Stot, uhtot, vhtot, & !! shortwave radiation, in H-1. !! The indicies of opacity_band are band, i, k. real, dimension(SZI_(G)), intent(out) :: Conv_en !< The buoyant turbulent kinetic energy source - !! due to free convection, in Z m2 s-2. + !! due to free convection, in Z m2 s-2 ~> m3 s-2. real, dimension(SZI_(G)), intent(out) :: dKE_FC !< The vertically integrated change in kinetic - !! energy due to free convection, in Z m2 s-2. + !! energy due to free convection, in Z m2 s-2 ~> m3 s-2. integer, intent(in) :: j !< The j-index to work on. integer, dimension(SZI_(G),SZK_(GV)), & intent(in) :: ksort !< The density-sorted k-indices. @@ -1309,25 +1309,25 @@ subroutine find_starting_TKE(htot, h_CA, fluxes, Conv_En, cTKE, dKE_FC, dKE_CA, !! possible forcing fields. Unused fields !! have NULL ptrs. real, dimension(SZI_(G)), intent(inout) :: Conv_En !< The buoyant turbulent kinetic energy source - !! due to free convection, in Z m2 s-2. + !! due to free convection, in Z m2 s-2 ~> m3 s-2. real, dimension(SZI_(G)), intent(in) :: dKE_FC !< The vertically integrated change in !! kinetic energy due to free convection, - !! in Z m2 s-2. + !! in Z m2 s-2 ~> m3 s-2. real, dimension(SZI_(G),SZK_(GV)), & intent(in) :: cTKE !< The buoyant turbulent kinetic energy !! source due to convective adjustment, - !! in Z m2 s-2. + !! in Z m2 s-2 ~> m3 s-2. real, dimension(SZI_(G),SZK_(GV)), & intent(in) :: dKE_CA !< The vertically integrated change in !! kinetic energy due to convective - !! adjustment, in Z m2 s-2. + !! adjustment, in Z m2 s-2 ~> m3 s-2. real, dimension(SZI_(G)), intent(out) :: TKE !< The turbulent kinetic energy available for - !! mixing over a time step, in Z m2 s-2. + !! mixing over a time step, in Z m2 s-2 ~> m3 s-2. real, dimension(SZI_(G)), intent(out) :: Idecay_len_TKE !< The inverse of the vertical decay !! scale for TKE, in H-1. real, dimension(SZI_(G)), intent(in) :: TKE_river !< The turbulent kinetic energy available !! for driving mixing at river mouths - !! integrated over a time step, in Z m2 s-2. + !! integrated over a time step, in Z m2 s-2 ~> m3 s-2. real, dimension(2,SZI_(G)), intent(out) :: cMKE !< Coefficients of HpE and HpE^2 in !! calculating the denominator of MKE_rate, !! in H-1 and H-2. @@ -1343,22 +1343,22 @@ subroutine find_starting_TKE(htot, h_CA, fluxes, Conv_En, cTKE, dKE_FC, dKE_CA, ! convection to drive mechanical entrainment. ! Local variables - real :: dKE_conv ! The change in mean kinetic energy due to all convection, in Z m2 s-2. + real :: dKE_conv ! The change in mean kinetic energy due to all convection, in Z m2 s-2 ~> m3 s-2. real :: nstar_FC ! The effective efficiency with which the energy released by ! free convection is converted to TKE, often ~0.2, ND. real :: nstar_CA ! The effective efficiency with which the energy released by ! convective adjustment is converted to TKE, often ~0.2, ND. real :: TKE_CA ! The potential energy released by convective adjustment if - ! that release is positive, in Z m2 s2. + ! that release is positive, in Z m2 s-2 ~> m3 s-2. real :: MKE_rate_CA ! MKE_rate for convective adjustment, ND, 0 to 1. real :: MKE_rate_FC ! MKE_rate for free convection, ND, 0 to 1. real :: totEn_Z ! The total potential energy released by convection, Z3 s-2. real :: Ih ! The inverse of a thickness, in H-1. real :: exp_kh ! The nondimensional decay of TKE across a layer, ND. real :: absf ! The absolute value of f averaged to thickness points, s-1. - real :: U_star ! The friction velocity in Z s-1. - real :: absf_Ustar ! The absolute value of f divided by U_star, in Z-1. - real :: wind_TKE_src ! The surface wind source of TKE, in Z m2 s-3. + real :: U_star ! The friction velocity in Z s-1 ~> m s-1. + real :: absf_Ustar ! The absolute value of f divided by U_star, in Z-1 ~> m-1. + real :: wind_TKE_src ! The surface wind source of TKE, in Z m2 s-3 ~> m3 s-3. real :: diag_wt ! The ratio of the current timestep to the diagnostic ! timestep (which may include 2 calls), ND. integer :: is, ie, nz, i @@ -1544,7 +1544,7 @@ subroutine mechanical_entrainment(h, d_eb, htot, Ttot, Stot, uhtot, vhtot, & !! The indicies of opacity_band are band, i, k. real, dimension(SZI_(G)), intent(inout) :: TKE !< The turbulent kinetic energy !! available for mixing over a time - !! step, in Z m2 s-2. + !! step, in Z m2 s-2 ~> m3 s-2. real, dimension(SZI_(G)), intent(inout) :: Idecay_len_TKE !< The vertical TKE decay rate, in H-1. integer, intent(in) :: j !< The j-index to work on. integer, dimension(SZI_(G),SZK_(GV)), & @@ -1579,10 +1579,10 @@ subroutine mechanical_entrainment(h, d_eb, htot, Ttot, Stot, uhtot, vhtot, & real :: C1 ! A temporary variable in units of m2 s-2. real :: dMKE ! A temporary variable related to the release of mean ! kinetic energy, with units of H Z m2 s-2. - real :: TKE_ent ! The TKE that remains if h_ent were entrained, in Z m2 s-2. + real :: TKE_ent ! The TKE that remains if h_ent were entrained, in Z m2 s-2 ~> m3 s-2. real :: TKE_ent1 ! The TKE that would remain, without considering the - ! release of mean kinetic energy, in Z m2 s2. - real :: dTKE_dh ! The partial derivative of TKE with h_ent, in Z m2 s-2 H-1. + ! release of mean kinetic energy, in Z m2 s-2 ~> m3 s-2. + real :: dTKE_dh ! The partial derivative of TKE with h_ent, in Z m2 s-2 H-1 ~> m2 s-2 or m5 s-2 kg-1. real :: Pen_dTKE_dh_Contrib ! The penetrating shortwave contribution to ! dTKE_dh, in m2 s-2. real :: EF4_val ! The result of EF4() (see later), in H-1. @@ -2293,33 +2293,7 @@ subroutine mixedlayer_detrain_2(h, T, S, R0, Rcv, RcvTgt, dt, dt_diag, d_ea, j, ! two buffer layers and may also move buffer layer water into the interior ! isopycnal layers. -! Arguments: h - Layer thickness, in m or kg m-2. (Intent in/out) The units of -! h are referred to as H below. Layer 0 is the new mixed layer. -! (in/out) T - Potential temperature, in C. -! (in/out) S - Salinity, in psu. -! (in/out) R0 - Potential density referenced to surface pressure, in kg m-3. -! (in/out) Rcv - The coordinate defining potential density, in kg m-3. -! (in) RcvTgt - The target value of Rcv for each layer, in kg m-3. -! (in) dt - Time increment, in s. -! (in) dt_diag - The diagnostic time step, in s. -! (in/out) d_ea - The upward increase across a layer in the entrainment from -! above, in m or kg m-2 (H). Positive d_ea goes with layer -! thickness increases. -! (in) j - The meridional row to work on. -! (in) G - The ocean's grid structure. -! (in) GV - The ocean's vertical grid structure. -! (in) CS - The control structure returned by a previous call to -! mixedlayer_init. -! (in) max_BL_det - If non-negative, the maximum detrainment permitted -! from the buffer layers, in H. -! (in) dR0_dT - The partial derivative of potential density referenced -! to the surface with potential temperature, in kg m-3 K-1. -! (in) dR0_dS - The partial derivative of cpotential density referenced -! to the surface with salinity, in kg m-3 psu-1. -! (in) dRcv_dT - The partial derivative of coordinate defining potential -! density with potential temperature, in kg m-3 K-1. -! (in) dRcv_dS - The partial derivative of coordinate defining potential -! density with salinity, in kg m-3 psu-1. + ! Local variables real :: h_to_bl ! The total thickness detrained to the buffer ! layers, in H (the units of h). real :: R0_to_bl, Rcv_to_bl ! The depth integrated amount of R0, Rcv, T @@ -2404,11 +2378,11 @@ subroutine mixedlayer_detrain_2(h, T, S, R0, Rcv, RcvTgt, dt, dt_diag, d_ea, j, ! K psu-1 and psu K-1. real :: I_denom ! A work variable with units of psu2 m6 kg-2. - real :: G_2 ! 1/2 G_Earth, in m2 Z-1 s-2. - real :: Rho0xG ! Rho0 times G_Earth, in kg m-1 Z-1 s-2. + real :: G_2 ! 1/2 G_Earth, in m2 Z-1 s-2 ~> m s-2. + real :: Rho0xG ! Rho0 times G_Earth, in kg m-1 Z-1 s-2 ~> kg m-2 s-2. real :: I2Rho0 ! 1 / (2 Rho0), in m3 kg-1. - real :: Idt_H2 ! The square of the conversion from thickness - ! to Z divided by the time step in Z2 H-2 s-1. + real :: Idt_H2 ! The square of the conversion from thickness to Z + ! divided by the time step, in Z2 H-2 s-1 ~> s-1 or m6 kg-2 s-1. logical :: stable_Rcv ! If true, the buffer layers are stable with ! respect to the coordinate potential density. real :: h_neglect ! A thickness that is so small it is usually lost diff --git a/src/parameterizations/vertical/MOM_diabatic_aux.F90 b/src/parameterizations/vertical/MOM_diabatic_aux.F90 index 161967c59a..0e7363e2aa 100644 --- a/src/parameterizations/vertical/MOM_diabatic_aux.F90 +++ b/src/parameterizations/vertical/MOM_diabatic_aux.F90 @@ -32,7 +32,7 @@ module MOM_diabatic_aux type, public :: diabatic_aux_CS ; private logical :: do_rivermix = .false. !< Provide additional TKE to mix river runoff at the !! river mouths to a depth of "rivermix_depth" - real :: rivermix_depth = 0.0 !< The depth to which rivers are mixed if do_rivermix = T, in Z. + real :: rivermix_depth = 0.0 !< The depth to which rivers are mixed if do_rivermix = T, in Z ~> m. logical :: reclaim_frazil !< If true, try to use any frazil heat deficit to !! to cool the topmost layer down to the freezing !! point. The default is false. @@ -239,7 +239,7 @@ subroutine differential_diffuse_T_S(h, tv, visc, dt, G, GV) real :: b_denom_T ! The first term in the denominators for the expressions real :: b_denom_S ! for b1_T and b1_S, both in H. real, dimension(:,:,:), pointer :: T=>NULL(), S=>NULL() - real, dimension(:,:,:), pointer :: Kd_T=>NULL(), Kd_S=>NULL() ! Diffusivities in Z2 s-1. + real, dimension(:,:,:), pointer :: Kd_T=>NULL(), Kd_S=>NULL() ! Diffusivities in Z2 s-1 ~> m2 s-1. integer :: i, j, k, is, ie, js, je, nz is = G%isc ; ie = G%iec ; js = G%jsc ; je = G%jec ; nz = G%ke @@ -663,15 +663,15 @@ subroutine diagnoseMLDbyDensityDifference(id_MLD, h, tv, densityDiff, G, GV, US, ! Local variables real, dimension(SZI_(G)) :: deltaRhoAtKm1, deltaRhoAtK ! Density differences, in kg m-3. real, dimension(SZI_(G)) :: pRef_MLD, pRef_N2 ! Reference pressures in Pa. - real, dimension(SZI_(G)) :: dK, dKm1, d1 ! Depths in Z. + real, dimension(SZI_(G)) :: dK, dKm1, d1 ! Depths in Z ~> m. real, dimension(SZI_(G)) :: rhoSurf, rhoAtK, rho1 ! Densities used for N2, in kg m-3. - real, dimension(SZI_(G), SZJ_(G)) :: MLD ! Diagnosed mixed layer depth, in Z. + real, dimension(SZI_(G), SZJ_(G)) :: MLD ! Diagnosed mixed layer depth, in Z ~> m. real, dimension(SZI_(G), SZJ_(G)) :: subMLN2 ! Diagnosed stratification below ML, in s-2. - real, dimension(SZI_(G), SZJ_(G)) :: MLD2 ! Diagnosed MLD^2, in Z2. + real, dimension(SZI_(G), SZJ_(G)) :: MLD2 ! Diagnosed MLD^2, in Z2 ~> m2. real :: Rho_x_gE ! The product of density, gravitational acceleartion and a unit ! conversion factor, in kg m-1 Z-1 s-2. real :: gE_Rho0 ! The gravitational acceleration divided by a mean density, in m4 s-2 kg-1. - real :: dz_subML ! Depth below ML over which to diagnose stratification, in Z. + real :: dz_subML ! Depth below ML over which to diagnose stratification, in Z ~> m. integer :: i, j, is, ie, js, je, k, nz, id_N2, id_SQ real :: aFac, ddRho @@ -793,7 +793,7 @@ subroutine applyBoundaryFluxesInOut(CS, G, GV, US, dt, fluxes, optics, h, tv, & optional, intent(out) :: dSV_dS !< Partial derivative of specific volume with !! salinity, in m3 kg-1 / (g kg-1). real, dimension(SZI_(G),SZJ_(G)), & - optional, intent(out) :: SkinBuoyFlux !< Buoyancy flux at surface in Z2 s-3 + optional, intent(out) :: SkinBuoyFlux !< Buoyancy flux at surface, in Z2 s-3 ~> m2 s-3. ! Local variables integer, parameter :: maxGroundings = 5 @@ -829,7 +829,8 @@ subroutine applyBoundaryFluxesInOut(CS, G, GV, US, dt, fluxes, optics, h, tv, & real :: Temp_in, Salin_in ! real :: I_G_Earth real :: g_Hconv2 - real :: GoRho ! g_Earth times a unit conversion factor divided by density, in Z m3 s-2 kg-1 + real :: GoRho ! g_Earth times a unit conversion factor divided by density, + ! in Z m3 s-2 kg-1 ~> m4 s-2 kg-1 logical :: calculate_energetics logical :: calculate_buoyancy integer :: i, j, is, ie, js, je, k, nz, n, nsw diff --git a/src/parameterizations/vertical/MOM_diabatic_driver.F90 b/src/parameterizations/vertical/MOM_diabatic_driver.F90 index 4506177f41..644cff264a 100644 --- a/src/parameterizations/vertical/MOM_diabatic_driver.F90 +++ b/src/parameterizations/vertical/MOM_diabatic_driver.F90 @@ -148,11 +148,11 @@ module MOM_diabatic_driver !! operating. real :: Kd_BBL_tr !< A bottom boundary layer tracer diffusivity that !! will allow for explicitly specified bottom fluxes - !! in Z2 s-1. The entrainment at the bottom is at + !! in Z2 s-1 ~> m2 s-1. The entrainment at the bottom is at !! least sqrt(Kd_BBL_tr*dt) over the same distance. real :: Kd_min_tr !< A minimal diffusivity that should always be !! applied to tracers, especially in massless layers - !! near the bottom, in Z2 s-1. + !! near the bottom, in Z2 s-1 ~> m2 s-1. real :: minimum_forcing_depth = 0.001 !< The smallest depth over which heat and freshwater !! fluxes are applied, in m. real :: evap_CFL_limit = 0.8 !< The largest fraction of a layer that can be @@ -386,7 +386,7 @@ subroutine diabatic(u, v, h, tv, Hml, fluxes, visc, ADp, CDp, dt, Time_end, & integer :: ig, jg ! global indices for testing testing itide point source (BDM) logical :: avg_enabled ! for testing internal tides (BDM) - real :: Kd_add_here ! An added diffusivity in Z2/s + real :: Kd_add_here ! An added diffusivity, in Z2 s-1 ~> m2 s-1. is = G%isc ; ie = G%iec ; js = G%jsc ; je = G%jec ; nz = G%ke Isq = G%IscB ; Ieq = G%IecB ; Jsq = G%JscB ; Jeq = G%JecB @@ -1269,7 +1269,7 @@ subroutine legacy_diabatic(u, v, h, tv, Hml, fluxes, visc, ADp, CDp, dt, Time_en integer :: ig, jg ! global indices for testing testing itide point source (BDM) logical :: avg_enabled ! for testing internal tides (BDM) - real :: Kd_add_here ! An added diffusivity in Z2/s + real :: Kd_add_here ! An added diffusivity, in Z2 s-1 ~> m2 s-1. is = G%isc ; ie = G%iec ; js = G%jsc ; je = G%jec ; nz = G%ke Isq = G%IscB ; Ieq = G%IecB ; Jsq = G%JscB ; Jeq = G%JecB diff --git a/src/parameterizations/vertical/MOM_diapyc_energy_req.F90 b/src/parameterizations/vertical/MOM_diapyc_energy_req.F90 index 4fbdc9d8c3..85bcd08e88 100644 --- a/src/parameterizations/vertical/MOM_diapyc_energy_req.F90 +++ b/src/parameterizations/vertical/MOM_diapyc_energy_req.F90 @@ -54,14 +54,14 @@ subroutine diapyc_energy_req_test(h_3d, dt, tv, G, GV, US, CS, Kd_int) !! in s. type(diapyc_energy_req_CS), pointer :: CS !< This module's control structure. real, dimension(G%isd:G%ied,G%jsd:G%jed,GV%ke+1), & - optional, intent(in) :: Kd_int !< Interface diffusivities in Z2 s-1. + optional, intent(in) :: Kd_int !< Interface diffusivities in Z2 s-1 ~> m2 s-1. ! Local variables real, dimension(GV%ke) :: & T0, S0, & ! T0 & S0 are columns of initial temperatures and salinities, in degC and g/kg. h_col ! h_col is a column of thicknesses h at tracer points, in H (m or kg m-2). real, dimension(GV%ke+1) :: & - Kd, & ! A column of diapycnal diffusivities at interfaces, in Z2 s-1. + Kd, & ! A column of diapycnal diffusivities at interfaces, in Z2 s-1 ~> m2 s-1. h_top, h_bot ! Distances from the top or bottom, in H. real :: ustar, absf, htot real :: energy_Kd ! The energy used by diapycnal mixing in W m-2. @@ -123,7 +123,7 @@ subroutine diapyc_energy_req_calc(h_in, T_in, S_in, Kd, energy_Kd, dt, tv, & real, dimension(GV%ke), intent(in) :: T_in !< The layer temperatures, in degC. real, dimension(GV%ke), intent(in) :: S_in !< The layer salinities, in g kg-1. real, dimension(GV%ke+1), intent(in) :: Kd !< The interfaces diapycnal diffusivities, - !! in Z2 s-1. + !! in Z2 s-1 ~> m2 s-1. real, intent(in) :: dt !< The amount of time covered by this call, in s. real, intent(out) :: energy_Kd !< The column-integrated rate of energy !! consumption by diapycnal diffusion, in W m-2. @@ -165,13 +165,13 @@ subroutine diapyc_energy_req_calc(h_in, T_in, S_in, Kd, energy_Kd, dt, tv, & dT_to_dPE, & ! Partial derivative of column potential energy with the temperature dS_to_dPE, & ! and salinity changes within a layer, in J m-2 K-1 and J m-2 / (g kg-1). dT_to_dColHt, & ! Partial derivatives of the total column height with the temperature - dS_to_dColHt, & ! and salinity changes within a layer, in Z K-1 and Z ppt-1. + dS_to_dColHt, & ! and salinity changes within a layer, in Z K-1 ~> m K-1 and Z ppt-1 ~> m ppt-1. dT_to_dColHt_a, & ! Partial derivatives of the total column height with the temperature dS_to_dColHt_a, & ! and salinity changes within a layer, including the implicit effects - ! of mixing with layers higher in the water colun, in Z K-1 and Z ppt-1. + ! of mixing with layers higher in the water colun, in Z K-1 ~> m K-1 and Z ppt-1 ~> m ppt-1. dT_to_dColHt_b, & ! Partial derivatives of the total column height with the temperature dS_to_dColHt_b, & ! and salinity changes within a layer, including the implicit effects - ! of mixing with layers lower in the water colun, in Z K-1 and Z ppt-1. + ! of mixing with layers lower in the water colun, in Z K-1 ~> m K-1 and Z ppt-1 ~> m ppt-1. dT_to_dPE_a, & ! Partial derivatives of column potential energy with the temperature dS_to_dPE_a, & ! and salinity changes within a layer, including the implicit effects ! of mixing with layers higher in the water column, in @@ -1012,19 +1012,19 @@ subroutine find_PE_chg(Kddt_h0, dKddt_h, hp_a, hp_b, Th_a, Sh_a, Th_b, Sh_b, & real, intent(in) :: dT_to_dColHt_a !< A factor (mass_lay*dSColHtc_vol/dT) relating !! a layer's temperature change to the change in column !! height, including all implicit diffusive changes - !! in the temperatures of all the layers above, in Z K-1. + !! in the temperatures of all the layers above, in Z K-1 ~> m K-1. real, intent(in) :: dS_to_dColHt_a !< A factor (mass_lay*dSColHtc_vol/dS) relating !! a layer's salinity change to the change in column !! height, including all implicit diffusive changes - !! in the salinities of all the layers above, in Z ppt-1. + !! in the salinities of all the layers above, in Z ppt-1 ~> m ppt-1. real, intent(in) :: dT_to_dColHt_b !< A factor (mass_lay*dSColHtc_vol/dT) relating !! a layer's temperature change to the change in column !! height, including all implicit diffusive changes - !! in the temperatures of all the layers below, in Z K-1. + !! in the temperatures of all the layers below, in Z K-1 ~> m K-1. real, intent(in) :: dS_to_dColHt_b !< A factor (mass_lay*dSColHtc_vol/dS) relating !! a layer's salinity change to the change in column !! height, including all implicit diffusive changes - !! in the salinities of all the layers below, in Z ppt-1. + !! in the salinities of all the layers below, in Z ppt-1 ~> m ppt-1. real, optional, intent(out) :: PE_chg !< The change in column potential energy from applying !! Kddt_h at the present interface, in J m-2. @@ -1152,19 +1152,19 @@ subroutine find_PE_chg_orig(Kddt_h, h_k, b_den_1, dTe_term, dSe_term, & real, intent(in) :: dT_to_dColHt_k !< A factor (mass_lay*dSColHtc_vol/dT) relating !! a layer's temperature change to the change in column !! height, including all implicit diffusive changes - !! in the temperatures of all the layers below, in Z K-1. + !! in the temperatures of all the layers below, in Z K-1 ~> m K-1. real, intent(in) :: dS_to_dColHt_k !< A factor (mass_lay*dSColHtc_vol/dS) relating !! a layer's salinity change to the change in column !! height, including all implicit diffusive changes - !! in the salinities of all the layers below, in Z ppt-1. + !! in the salinities of all the layers below, in Z ppt-1 ~> m ppt-1. real, intent(in) :: dT_to_dColHta !< A factor (mass_lay*dSColHtc_vol/dT) relating !! a layer's temperature change to the change in column !! height, including all implicit diffusive changes - !! in the temperatures of all the layers above, in Z K-1. + !! in the temperatures of all the layers above, in Z K-1 ~> m K-1. real, intent(in) :: dS_to_dColHta !< A factor (mass_lay*dSColHtc_vol/dS) relating !! a layer's salinity change to the change in column !! height, including all implicit diffusive changes - !! in the salinities of all the layers above, in Z ppt-1. + !! in the salinities of all the layers above, in Z ppt-1 ~> m ppt-1. real, optional, intent(out) :: PE_chg !< The change in column potential energy from applying !! Kddt_h at the present interface, in J m-2. diff --git a/src/parameterizations/vertical/MOM_energetic_PBL.F90 b/src/parameterizations/vertical/MOM_energetic_PBL.F90 index 9e32cd2aa9..88ef1c9a18 100644 --- a/src/parameterizations/vertical/MOM_energetic_PBL.F90 +++ b/src/parameterizations/vertical/MOM_energetic_PBL.F90 @@ -63,8 +63,8 @@ module MOM_energetic_PBL !! boundary layer thickness. The default is 0, but a !! value of 0.1 might be better justified by observations. real :: MLD_tol !< A tolerance for determining the boundary layer thickness when - !! Use_MLD_iteration is true, in Z. - real :: min_mix_len !< The minimum mixing length scale that will be used by ePBL, in Z. + !! Use_MLD_iteration is true, in Z ~> m. + real :: min_mix_len !< The minimum mixing length scale that will be used by ePBL, in Z ~> m. !! The default (0) does not set a minimum. real :: N2_Dissipation_Scale_Neg !< A nondimensional scaling factor controlling the loss of TKE !! due to enhanced dissipation in the presence of negative (unstable) @@ -146,8 +146,8 @@ module MOM_energetic_PBL diag_TKE_conv_decay, & !< The decay of convective TKE, in J m-2. diag_TKE_mixing,& !< The work done by TKE to deepen the mixed layer, in J m-2. ! Additional output parameters also 2d - ML_depth, & !< The mixed layer depth in Z. (result after iteration step) - ML_depth2, & !< The mixed layer depth in Z. (guess for iteration step) + ML_depth, & !< The mixed layer depth in Z ~> m. (result after iteration step) + ML_depth2, & !< The mixed layer depth in Z ~> m. (guess for iteration step) Enhance_M, & !< The enhancement to the turbulent velocity scale (non-dim) MSTAR_MIX, & !< Mstar used in EPBL MSTAR_LT, & !< Mstar for Langmuir turbulence @@ -212,11 +212,11 @@ subroutine energetic_PBL(h_3d, u_3d, v_3d, tv, fluxes, dt, Kd_int, G, GV, US, CS real, intent(in) :: dt !< Time increment, in s. real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), & intent(out) :: Kd_int !< The diagnosed diffusivities at interfaces, - !! in Z2 s-1. + !! in Z2 s-1 ~> m2 s-1. type(energetic_PBL_CS), pointer :: CS !< The control structure returned by a previous !! call to mixedlayer_init. real, dimension(SZI_(G),SZJ_(G)), & - intent(in) :: Buoy_Flux !< The surface buoyancy flux in Z2/s3. + intent(in) :: Buoy_Flux !< The surface buoyancy flux in Z2 s-3 ~> m2 s-3. real, optional, intent(in) :: dt_diag !< The diagnostic time step, which may be less !! than dt if there are two callse to !! mixedlayer, in s. @@ -257,6 +257,7 @@ subroutine energetic_PBL(h_3d, u_3d, v_3d, tv, fluxes, dt, Kd_int, G, GV, US, CS ! For a traditional Kraus-Turner mixed layer, the values are: ! mstar = 1.25, nstar = 0.4, TKE_decay = 0.0, conv_decay = 0.0 + ! Local variables real, dimension(SZI_(G),SZK_(GV)) :: & h, & ! The layer thickness, in H (usually m or kg m-2). T, & ! The layer temperatures, in deg C. @@ -289,12 +290,12 @@ subroutine energetic_PBL(h_3d, u_3d, v_3d, tv, fluxes, dt, Kd_int, G, GV, US, CS real, dimension(SZI_(G),SZK_(GV)) :: & dT_to_dColHt, & ! Partial derivatives of the total column height with the temperature - dS_to_dColHt, & ! and salinity changes within a layer, in Z K-1 and Z ppt-1. + dS_to_dColHt, & ! and salinity changes within a layer, in Z K-1 ~> m K-1 and Z ppt-1 ~> m ppt-1. dT_to_dPE, & ! Partial derivatives of column potential energy with the temperature dS_to_dPE, & ! and salinity changes within a layer, in J m-2 K-1 and J m-2 ppt-1. dT_to_dColHt_a, & ! Partial derivatives of the total column height with the temperature dS_to_dColHt_a, & ! and salinity changes within a layer, including the implicit effects - ! of mixing with layers higher in the water colun, in Z K-1 and Z ppt-1. + ! of mixing with layers higher in the water colun, in Z K-1 ~> m K-1 and Z ppt-1 ~> m ppt-1. dT_to_dPE_a, & ! Partial derivatives of column potential energy with the temperature dS_to_dPE_a ! and salinity changes within a layer, including the implicit effects ! of mixing with layers higher in the water column, in @@ -339,9 +340,9 @@ subroutine energetic_PBL(h_3d, u_3d, v_3d, tv, fluxes, dt, Kd_int, G, GV, US, CS real :: dt_h ! The timestep divided by the averages of the thicknesses around ! a layer, times a thickness conversion factor, in H s m-2. real :: h_bot ! The distance from the bottom, in H. - real :: h_rsum ! The running sum of h from the top, in Z. + real :: h_rsum ! The running sum of h from the top, in Z ~> m. real :: I_hs ! The inverse of h_sum, in H-1. - real :: I_MLD ! The inverse of the current value of MLD, in Z-1. + real :: I_MLD ! The inverse of the current value of MLD, in Z-1 ~> m-1. real :: h_tt ! The distance from the surface or up to the next interface ! that did not exhibit turbulent mixing from this scheme plus ! a surface mixing roughness length given by h_tt_min, in H. @@ -351,14 +352,14 @@ subroutine energetic_PBL(h_3d, u_3d, v_3d, tv, fluxes, dt, Kd_int, G, GV, US, CS real :: vonKar ! The vonKarman constant. real :: I_dtrho ! 1.0 / (dt * Rho0) in m3 kg-1 s-1. This is ! used convert TKE back into ustar^3. - real :: U_star ! The surface friction velocity, in Z s-1. - real :: U_Star_Mean ! The surface friction without gustiness in Z s-1. + real :: U_star ! The surface friction velocity, in Z s-1 ~> m s-1. + real :: U_Star_Mean ! The surface friction without gustiness in Z s-1 ~> m s-1. real :: vstar ! An in-situ turbulent velocity, in m s-1. real :: Enhance_M ! An enhancement factor for vstar, based here on Langmuir impact. real :: LA ! The Langmuir number (non-dim) real :: LAmod ! A modified Langmuir number accounting for other parameters. real :: hbs_here ! The local minimum of hb_hs and MixLen_shape, times a - ! conversion factor from H to Z, in Z H-1. + ! conversion factor from H to Z, in Z H-1 ~> 1 or m3 kg-1. real :: nstar_FC ! The fraction of conv_PErel that can be converted to mixing, nondim. real :: TKE_reduc ! The fraction by which TKE and other energy fields are ! reduced to support mixing, nondim. between 0 and 1. @@ -377,7 +378,7 @@ subroutine energetic_PBL(h_3d, u_3d, v_3d, tv, fluxes, dt, Kd_int, G, GV, US, CS real :: dPE_conv ! The convective change in column potential energy, in J m-2. real :: MKE_src ! The mean kinetic energy source of TKE due to Kddt_h(K), in J m-2. real :: dMKE_src_dK ! The partial derivative of MKE_src with Kddt_h(K), in J m-2 H-1. - real :: Kd_guess0 ! A first guess of the diapycnal diffusivity, in Z2 s-1. + real :: Kd_guess0 ! A first guess of the diapycnal diffusivity, in Z2 s-1 ~> m2 s-1. real :: PE_chg_g0 ! The potential energy change when Kd is Kd_guess0 real :: dPEa_dKd_g0 real :: Kddt_h_g0 ! The first guess diapycnal diffusivity times a timestep divided @@ -410,7 +411,7 @@ subroutine energetic_PBL(h_3d, u_3d, v_3d, tv, fluxes, dt, Kd_int, G, GV, US, CS real :: dt__diag ! A copy of dt_diag (if present) or dt, in s. real :: IdtdR0 ! = 1.0 / (dt__diag * Rho0), in m3 kg-1 s-1. real, dimension(SZI_(G),SZJ_(G)) :: & - Hsfc_used ! The thickness of the surface region in Z + Hsfc_used ! The thickness of the surface region in Z ~> m. logical :: write_diags ! If true, write out diagnostics with this step. logical :: reset_diags ! If true, zero out the accumulated diagnostics. ! Local column copies of energy change diagnostics, all in J m-2. @@ -419,8 +420,8 @@ subroutine energetic_PBL(h_3d, u_3d, v_3d, tv, fluxes, dt, Kd_int, G, GV, US, CS !---------------------------------------------------------------------- !/BGR added Aug24,2016 for adding iteration to get boundary layer depth ! - needed to compute new mixing length. - real :: MLD_guess, MLD_found ! Mixing Layer depth guessed/found for iteration, in Z. - real :: max_MLD, min_MLD ! Iteration bounds, in Z, which are adjusted at each step + real :: MLD_guess, MLD_found ! Mixing Layer depth guessed/found for iteration, in Z ~> m. + real :: max_MLD, min_MLD ! Iteration bounds, in Z ~> m, which are adjusted at each step ! - These are initialized based on surface/bottom ! 1. The iteration guesses a value (possibly from ! prev step or neighbor). @@ -470,9 +471,9 @@ subroutine energetic_PBL(h_3d, u_3d, v_3d, tv, fluxes, dt, Kd_int, G, GV, US, CS real :: N2_dissipation real :: Bf_STABLE ! Buoyancy flux, capped at 0 (negative only) real :: Bf_UNSTABLE ! Buoyancy flux, floored at 0 (positive only) - real :: Stab_Scale ! Composite of stabilizing Ekman scale and Monin-Obukhov length scales, in Z - real :: iL_Ekman ! Inverse of Ekman length scale, in Z-1 - real :: iL_Obukhov ! Inverse of Obukhov length scale, in Z-1 + real :: Stab_Scale ! Composite of stabilizing Ekman scale and Monin-Obukhov length scales, in Z ~> m. + real :: iL_Ekman ! Inverse of Ekman length scale, in Z-1 ~> m-1. + real :: iL_Obukhov ! Inverse of Obukhov length scale, in Z-1 ~> m-1. real :: MLD_o_Ekman ! > real :: MLD_o_Obukhov_stab ! Ratios of length scales where MLD is boundary layer depth real :: Ekman_o_Obukhov_stab ! > @@ -1597,19 +1598,19 @@ subroutine find_PE_chg(Kddt_h0, dKddt_h, hp_a, hp_b, Th_a, Sh_a, Th_b, Sh_b, & real, intent(in) :: dT_to_dColHt_a !< A factor (mass_lay*dSColHtc_vol/dT) relating !! a layer's temperature change to the change in column !! height, including all implicit diffusive changes - !! in the temperatures of all the layers above, in Z K-1. + !! in the temperatures of all the layers above, in Z K-1 ~> m K-1. real, intent(in) :: dS_to_dColHt_a !< A factor (mass_lay*dSColHtc_vol/dS) relating !! a layer's salinity change to the change in column !! height, including all implicit diffusive changes - !! in the salinities of all the layers above, in Z ppt-1. + !! in the salinities of all the layers above, in Z ppt-1 ~> m ppt-1. real, intent(in) :: dT_to_dColHt_b !< A factor (mass_lay*dSColHtc_vol/dT) relating !! a layer's temperature change to the change in column !! height, including all implicit diffusive changes - !! in the temperatures of all the layers below, in Z K-1. + !! in the temperatures of all the layers below, in Z K-1 ~> m K-1. real, intent(in) :: dS_to_dColHt_b !< A factor (mass_lay*dSColHtc_vol/dS) relating !! a layer's salinity change to the change in column !! height, including all implicit diffusive changes - !! in the salinities of all the layers below, in Z ppt-1. + !! in the salinities of all the layers below, in Z ppt-1 ~> m ppt-1. real, optional, intent(out) :: PE_chg !< The change in column potential energy from applying !! Kddt_h at the present interface, in J m-2. @@ -1736,19 +1737,19 @@ subroutine find_PE_chg_orig(Kddt_h, h_k, b_den_1, dTe_term, dSe_term, & real, intent(in) :: dT_to_dColHt_k !< A factor (mass_lay*dSColHtc_vol/dT) relating !! a layer's temperature change to the change in column !! height, including all implicit diffusive changes - !! in the temperatures of all the layers below, in Z K-1. + !! in the temperatures of all the layers below, in Z K-1 ~> m K-1. real, intent(in) :: dS_to_dColHt_k !< A factor (mass_lay*dSColHtc_vol/dS) relating !! a layer's salinity change to the change in column !! height, including all implicit diffusive changes - !! in the salinities of all the layers below, in Z ppt-1. + !! in the salinities of all the layers below, in Z ppt-1 ~> m ppt-1. real, intent(in) :: dT_to_dColHta !< A factor (mass_lay*dSColHtc_vol/dT) relating !! a layer's temperature change to the change in column !! height, including all implicit diffusive changes - !! in the temperatures of all the layers above, in Z K-1. + !! in the temperatures of all the layers above, in Z K-1 ~> m K-1. real, intent(in) :: dS_to_dColHta !< A factor (mass_lay*dSColHtc_vol/dS) relating !! a layer's salinity change to the change in column !! height, including all implicit diffusive changes - !! in the salinities of all the layers above, in Z ppt-1. + !! in the salinities of all the layers above, in Z ppt-1 ~> m ppt-1. real, optional, intent(out) :: PE_chg !< The change in column potential energy from applying !! Kddt_h at the present interface, in J m-2. diff --git a/src/parameterizations/vertical/MOM_entrain_diffusive.F90 b/src/parameterizations/vertical/MOM_entrain_diffusive.F90 index af9eb9bfba..dd00a28f85 100644 --- a/src/parameterizations/vertical/MOM_entrain_diffusive.F90 +++ b/src/parameterizations/vertical/MOM_entrain_diffusive.F90 @@ -75,10 +75,10 @@ subroutine entrainment_diffusive(u, v, h, tv, fluxes, dt, G, GV, US, CS, ea, eb, ! At least one of the two following arguments must be present. real, dimension(SZI_(G),SZJ_(G),SZK_(G)), & optional, intent(in) :: Kd_Lay !< The diapycnal diffusivity of layers, - !! in Z2 s-1. + !! in Z2 s-1 ~> m2 s-1. real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1), & optional, intent(in) :: Kd_int !< The diapycnal diffusivity of interfaces, - !! in Z2 s-1. + !! in Z2 s-1 ~> m2 s-1. ! This subroutine calculates ea and eb, the rates at which a layer entrains ! from the layers above and below. The entrainment rates are proportional to diff --git a/src/parameterizations/vertical/MOM_internal_tide_input.F90 b/src/parameterizations/vertical/MOM_internal_tide_input.F90 index c2b303426b..d0e31f1a1b 100644 --- a/src/parameterizations/vertical/MOM_internal_tide_input.F90 +++ b/src/parameterizations/vertical/MOM_internal_tide_input.F90 @@ -47,7 +47,7 @@ module MOM_int_tide_input type, public :: int_tide_input_type real, allocatable, dimension(:,:) :: & TKE_itidal_input, & !< The internal tide TKE input at the bottom of the ocean, in W m-2. - h2, & !< The squared topographic roughness height, in Z2. + h2, & !< The squared topographic roughness height, in Z2 ~> m2. tideamp, & !< The amplitude of the tidal velocities, in m s-1. Nb !< The bottom stratification, in s-1. end type int_tide_input_type @@ -131,7 +131,7 @@ subroutine find_N2_bottom(h, tv, T_f, S_f, h2, fluxes, G, GV, US, N2_bot) !! smooth out the values in thin layers, in degC. real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(in) :: S_f !< Salinity after vertical filtering to !! smooth out the values in thin layers, in PSU. - real, dimension(SZI_(G),SZJ_(G)), intent(in) :: h2 !< Bottom topographic roughness, in Z2 + real, dimension(SZI_(G),SZJ_(G)), intent(in) :: h2 !< Bottom topographic roughness, in Z2 ~> m2. type(forcing), intent(in) :: fluxes !< A structure of thermodynamic surface fluxes type(int_tide_input_CS), pointer :: CS !< This module's control structure. real, dimension(SZI_(G),SZJ_(G)), intent(out) :: N2_bot !< The squared buoyancy freqency at the @@ -144,15 +144,15 @@ subroutine find_N2_bottom(h, tv, T_f, S_f, h2, fluxes, G, GV, US, N2_bot) Temp_int, & ! The temperature at each interface, in degC. Salin_int, & ! The salinity at each interface, in PSU. drho_bot, & - h_amp, & ! The amplitude of topographic roughness, in Z. - hb, & ! The depth below a layer, in Z. - z_from_bot, & ! The height of a layer center above the bottom, in Z. + h_amp, & ! The amplitude of topographic roughness, in Z ~> m. + hb, & ! The depth below a layer, in Z ~> m. + z_from_bot, & ! The height of a layer center above the bottom, in Z ~> m. dRho_dT, & ! The partial derivatives of density with temperature and dRho_dS ! salinity, in kg m-3 degC-1 and kg m-3 PSU-1. - real :: dz_int ! The thickness associated with an interface, in Z. + real :: dz_int ! The thickness associated with an interface, in Z ~> m. real :: G_Rho0 ! The gravitation acceleration divided by the Boussinesq - ! density, in Z m3 s-2 kg-1. + ! density, in Z m3 s-2 kg-1 ~> m4 s-2 kg-1. logical :: do_i(SZI_(G)), do_any integer :: i, j, k, is, ie, js, je, nz is = G%isc ; ie = G%iec ; js = G%jsc ; je = G%jec ; nz = G%ke @@ -259,7 +259,7 @@ subroutine int_tide_input_init(Time, G, GV, US, param_file, diag, CS, itide) ! tidal amplitude file is not present. real :: kappa_h2_factor ! factor for the product of wavenumber * rms sgs height. real :: kappa_itides ! topographic wavenumber and non-dimensional scaling - real :: min_zbot_itides ! Minimum ocean depth for internal tide conversion, in Z. + real :: min_zbot_itides ! Minimum ocean depth for internal tide conversion, in Z ~> m. integer :: i, j, is, ie, js, je, isd, ied, jsd, jed if (associated(CS)) then diff --git a/src/parameterizations/vertical/MOM_kappa_shear.F90 b/src/parameterizations/vertical/MOM_kappa_shear.F90 index 525dfb1cb0..9af56ebe67 100644 --- a/src/parameterizations/vertical/MOM_kappa_shear.F90 +++ b/src/parameterizations/vertical/MOM_kappa_shear.F90 @@ -51,7 +51,7 @@ module MOM_kappa_shear !! the buoyancy and shear scales in the diffusivity !! equation, 0 to eliminate the shear scale. Nondim. real :: TKE_bg !< The background level of TKE, in m2 s-2. - real :: kappa_0 !< The background diapycnal diffusivity, in Z2 s-1. + real :: kappa_0 !< The background diapycnal diffusivity, in Z2 s-1 ~> m2 s-1. real :: kappa_tol_err !< The fractional error in kappa that is tolerated. real :: Prandtl_turb !< Prandtl number used to convert Kd_shear into viscosity. integer :: nkml !< The number of layers in the mixed layer, as @@ -105,7 +105,7 @@ subroutine Calculate_kappa_shear(u_in, v_in, h, tv, p_surf, kappa_io, tke_io, & !! (or NULL). real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), & intent(inout) :: kappa_io !< The diapycnal diffusivity at each interface - !! (not layer!) in Z2 s-1. Initially this is the + !! (not layer!) in Z2 s-1 ~> m2 s-1. Initially this is the !! value from the previous timestep, which may !! accelerate the iteration toward convergence. real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), & @@ -116,7 +116,7 @@ subroutine Calculate_kappa_shear(u_in, v_in, h, tv, p_surf, kappa_io, tke_io, & !! toward convergence. real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), & intent(inout) :: kv_io !< The vertical viscosity at each interface - !! (not layer!) in Z2 s-1. This discards any + !! (not layer!) in Z2 s-1 ~> m2 s-1. This discards any !! previous value (i.e. it is intent out) and !! simply sets Kv = Prandtl * Kd_shear real, intent(in) :: dt !< Time increment, in s. @@ -134,27 +134,27 @@ subroutine Calculate_kappa_shear(u_in, v_in, h, tv, p_surf, kappa_io, tke_io, & real, dimension(SZK_(GV)) :: & u, & ! The zonal velocity after a timestep of mixing, in m s-1. v, & ! The meridional velocity after a timestep of mixing, in m s-1. - Idz, & ! The inverse of the distance between TKE points, in Z-1. + Idz, & ! The inverse of the distance between TKE points, in Z-1 ~> m-1. T, & ! The potential temperature after a timestep of mixing, in C. Sal, & ! The salinity after a timestep of mixing, in psu. - dz, & ! The layer thickness, in Z. - u0xdz, & ! The initial zonal velocity times dz, in Z m s-1. - v0xdz, & ! The initial meridional velocity times dz, in Z m s-1. - T0xdz, & ! The initial temperature times dz, in C Z. - S0xdz ! The initial salinity times dz, in PSU Z. + dz, & ! The layer thickness, in Z ~> m. + u0xdz, & ! The initial zonal velocity times dz, in Z m s-1 ~> m2 s-1. + v0xdz, & ! The initial meridional velocity times dz, in Z m s-1 ~> m2 s-1. + T0xdz, & ! The initial temperature times dz, in C Z ~> C m. + S0xdz ! The initial salinity times dz, in PSU Z ~> PSU m. real, dimension(SZK_(GV)+1) :: & kappa, & ! The shear-driven diapycnal diffusivity at an interface, in - ! units of Z2 s-1. + ! units of Z2 s-1 ~> m2 s-1. tke, & ! The Turbulent Kinetic Energy per unit mass at an interface, ! in units of m2 s-2. - kappa_avg, & ! The time-weighted average of kappa, in Z2 s-1. + kappa_avg, & ! The time-weighted average of kappa, in Z2 s-1 ~> m2 s-1. tke_avg ! The time-weighted average of TKE, in m2 s-2. real :: f2 ! The squared Coriolis parameter of each column, in s-2. real :: surface_pres ! The top surface pressure, in Pa. - real :: dz_in_lay ! The running sum of the thickness in a layer, in Z. - real :: k0dt ! The background diffusivity times the timestep, in Z2. - real :: dz_massless ! A layer thickness that is considered massless, in Z. + real :: dz_in_lay ! The running sum of the thickness in a layer, in Z ~> m. + real :: k0dt ! The background diffusivity times the timestep, in Z2 ~> m2. + real :: dz_massless ! A layer thickness that is considered massless, in Z ~> m. logical :: use_temperature ! If true, temperature and salinity have been ! allocated and are being used as state variables. logical :: new_kappa = .true. ! If true, ignore the value of kappa from the @@ -398,7 +398,7 @@ subroutine Calc_kappa_shear_vertex(u_in, v_in, h, T_in, S_in, tv, p_surf, kappa_ !! (or NULL). real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), & intent(out) :: kappa_io !< The diapycnal diffusivity at each interface - !! (not layer!) in Z2 s-1. + !! (not layer!) in Z2 s-1 ~> m2 s-1. real, dimension(SZIB_(G),SZJB_(G),SZK_(GV)+1), & intent(inout) :: tke_io !< The turbulent kinetic energy per unit mass at !! each interface (not layer!) in m2 s-2. @@ -406,7 +406,7 @@ subroutine Calc_kappa_shear_vertex(u_in, v_in, h, T_in, S_in, tv, p_surf, kappa_ !! timestep, which may accelerate the iteration !! toward convergence. real, dimension(SZIB_(G),SZJB_(G),SZK_(GV)+1), & - intent(inout) :: kv_io !< The vertical viscosity at each interface in Z2 s-1. + intent(inout) :: kv_io !< The vertical viscosity at each interface in Z2 s-1 ~> m2 s-1. !! The previous value is used to initialize kappa !! in the vertex columes as Kappa = Kv/Prandtl !! to accelerate the iteration toward covergence. @@ -421,16 +421,16 @@ subroutine Calc_kappa_shear_vertex(u_in, v_in, h, T_in, S_in, tv, p_surf, kappa_ h_2d, & ! A 2-D version of h, but converted to m. u_2d, v_2d, T_2d, S_2d, rho_2d ! 2-D versions of u_in, v_in, T, S, and rho. real, dimension(SZIB_(G),SZK_(GV)+1,2) :: & - kappa_2d ! Quasi 2-D versions of kappa_io, in Z2 s-1. + kappa_2d ! Quasi 2-D versions of kappa_io, in Z2 s-1 ~> m2 s-1. real, dimension(SZIB_(G),SZK_(GV)+1) :: & tke_2d ! 2-D version tke_io in m2 s-2. real, dimension(SZK_(GV)) :: & u, & ! The zonal velocity after a timestep of mixing, in m s-1. v, & ! The meridional velocity after a timestep of mixing, in m s-1. - Idz, & ! The inverse of the distance between TKE points, in Z-1. + Idz, & ! The inverse of the distance between TKE points, in Z-1 ~> m-1. T, & ! The potential temperature after a timestep of mixing, in C. Sal, & ! The salinity after a timestep of mixing, in psu. - dz, & ! The layer thickness, in Z. + dz, & ! The layer thickness, in Z ~> m. u0xdz, & ! The initial zonal velocity times dz, in m Z s-1. v0xdz, & ! The initial meridional velocity times dz, in m Z s-1. T0xdz, & ! The initial temperature times dz, in C Z. @@ -440,14 +440,14 @@ subroutine Calc_kappa_shear_vertex(u_in, v_in, h, T_in, S_in, tv, p_surf, kappa_ ! units of m2 s-1. tke, & ! The Turbulent Kinetic Energy per unit mass at an interface, ! in units of m2 s-2. - kappa_avg, & ! The time-weighted average of kappa, in Z2 s-1. + kappa_avg, & ! The time-weighted average of kappa, in Z2 s-1 ~> m2 s-1. tke_avg ! The time-weighted average of TKE, in m2 s-2. real :: f2 ! The squared Coriolis parameter of each column, in s-2. real :: surface_pres ! The top surface pressure, in Pa. - real :: dz_in_lay ! The running sum of the thickness in a layer, in Z. - real :: k0dt ! The background diffusivity times the timestep, in Z2. - real :: dz_massless ! A layer thickness that is considered massless, in Z. + real :: dz_in_lay ! The running sum of the thickness in a layer, in Z ~> m. + real :: k0dt ! The background diffusivity times the timestep, in Z2 ~> m2. + real :: dz_massless ! A layer thickness that is considered massless, in Z ~> m. real :: I_hwt ! The inverse of the masked thickness weights, in H-1. real :: I_Prandtl logical :: use_temperature ! If true, temperature and salinity have been @@ -714,7 +714,7 @@ subroutine kappa_shear_column(kappa, tke, dt, nzc, f2, surface_pres, & type(verticalGrid_type), intent(in) :: GV !< The ocean's vertical grid structure. type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type real, dimension(SZK_(GV)+1), & - intent(inout) :: kappa !< The time-weighted average of kappa, in Z2 s-1. + intent(inout) :: kappa !< The time-weighted average of kappa, in Z2 s-1 ~> m2 s-1. real, dimension(SZK_(GV)+1), & intent(inout) :: tke !< The Turbulent Kinetic Energy per unit mass at !! an interface, in units of m2 s-2. @@ -722,17 +722,17 @@ subroutine kappa_shear_column(kappa, tke, dt, nzc, f2, surface_pres, & real, intent(in) :: f2 !< The square of the Coriolis parameter, in s-2. real, intent(in) :: surface_pres !< The surface pressure, in Pa. real, dimension(SZK_(GV)), & - intent(in) :: dz !< The layer thickness, in Z. + intent(in) :: dz !< The layer thickness, in Z ~> m. real, dimension(SZK_(GV)), & - intent(in) :: u0xdz !< The initial zonal velocity times dz, in Z m s-1. + intent(in) :: u0xdz !< The initial zonal velocity times dz, in Z m s-1 ~> m2 s-1. real, dimension(SZK_(GV)), & - intent(in) :: v0xdz !< The initial meridional velocity times dz, in Z m s-1. + intent(in) :: v0xdz !< The initial meridional velocity times dz, in Z m s-1 ~> m2 s-1. real, dimension(SZK_(GV)), & - intent(in) :: T0xdz !< The initial temperature times dz, in C Z. + intent(in) :: T0xdz !< The initial temperature times dz, in C Z ~> C m. real, dimension(SZK_(GV)), & - intent(in) :: S0xdz !< The initial salinity times dz, in PSU Z. + intent(in) :: S0xdz !< The initial salinity times dz, in PSU Z ~> PSU m. real, dimension(SZK_(GV)+1), & - intent(out) :: kappa_avg !< The time-weighted average of kappa, in Z2 s-1. + intent(out) :: kappa_avg !< The time-weighted average of kappa, in Z2 s-1 ~> m2 s-1. real, dimension(SZK_(GV)+1), & intent(out) :: tke_avg !< The time-weighted average of TKE, in m2 s-2. real, intent(in) :: dt !< Time increment, in s. @@ -745,7 +745,7 @@ subroutine kappa_shear_column(kappa, tke, dt, nzc, f2, surface_pres, & real, dimension(nzc) :: & u, & ! The zonal velocity after a timestep of mixing, in m s-1. v, & ! The meridional velocity after a timestep of mixing, in m s-1. - Idz, & ! The inverse of the distance between TKE points, in Z-1. + Idz, & ! The inverse of the distance between TKE points, in Z-1 ~> m-1. T, & ! The potential temperature after a timestep of mixing, in C. Sal, & ! The salinity after a timestep of mixing, in psu. u_test, v_test, T_test, S_test @@ -753,46 +753,46 @@ subroutine kappa_shear_column(kappa, tke, dt, nzc, f2, surface_pres, & real, dimension(nzc+1) :: & N2, & ! The squared buoyancy frequency at an interface, in s-2. dz_Int, & ! The extent of a finite-volume space surrounding an interface, - ! as used in calculating kappa and TKE, in Z. + ! as used in calculating kappa and TKE, in Z ~> m. I_dz_int, & ! The inverse of the distance between velocity & density points - ! above and below an interface, in Z-1. This is used to + ! above and below an interface, in Z-1 ~> m-1. This is used to ! calculate N2, shear, and fluxes, and it might differ from ! 1/dz_Int, as they have different uses. S2, & ! The squared shear at an interface, in s-2. a1, & ! a1 is the coupling between adjacent interfaces in the TKE, - ! velocity, and density equations, in Z s-1 or Z. + ! velocity, and density equations, in Z s-1 or Z ~> m s-1 or m. c1, & ! c1 is used in the tridiagonal (and similar) solvers. k_src, & ! The shear-dependent source term in the kappa equation, in s-1. kappa_src, & ! The shear-dependent source term in the kappa equation in s-1. - kappa_out, & ! The kappa that results from the kappa equation, in Z2 s-1. + kappa_out, & ! The kappa that results from the kappa equation, in Z2 s-1 ~> m2 s-1. kappa_mid, & ! The average of the initial and predictor estimates of kappa, ! in units of Z2 s-1. tke_pred, & ! The value of TKE from a predictor step, in m2 s-2. - kappa_pred, & ! The value of kappa from a predictor step, in Z2 s-1. + kappa_pred, & ! The value of kappa from a predictor step, in Z2 s-1 ~> m2 s-1. pressure, & ! The pressure at an interface, in Pa. T_int, & ! The temperature interpolated to an interface, in C. Sal_int, & ! The salinity interpolated to an interface, in psu. - dbuoy_dT, & ! The partial derivatives of buoyancy with changes in - dbuoy_dS, & ! temperature and salinity, in Z s-2 K-1 and Z s-2 psu-1. + dbuoy_dT, & ! The partial derivatives of buoyancy with changes in temperature + dbuoy_dS, & ! and salinity, in Z s-2 K-1 ~> m s-2 K-1 and Z s-2 psu-1 ~> m s-2 psu-1. I_L2_bdry, & ! The inverse of the square of twice the harmonic mean - ! distance to the top and bottom boundaries, in Z-2. - K_Q, & ! Diffusivity divided by TKE, in Z2 m-2 s. - K_Q_tmp, & ! A temporary copy of diffusivity divided by TKE, in Z2 m-2 s. + ! distance to the top and bottom boundaries, in Z-2 ~> m-2. + K_Q, & ! Diffusivity divided by TKE, in Z2 m-2 s ~> s. + K_Q_tmp, & ! A temporary copy of diffusivity divided by TKE, in Z2 m-2 s ~> s. local_src_avg, & ! The time-integral of the local source, nondim. tol_min, & ! Minimum tolerated ksrc for the corrector step, in s-1. tol_max, & ! Maximum tolerated ksrc for the corrector step, in s-1. tol_chg, & ! The tolerated change integrated in time, nondim. - dist_from_top, & ! The distance from the top surface, in Z. + dist_from_top, & ! The distance from the top surface, in Z ~> m. local_src ! The sum of all sources of kappa, including kappa_src and ! sources from the elliptic term, in s-1. - real :: dist_from_bot ! The distance from the bottom surface, in Z. + real :: dist_from_bot ! The distance from the bottom surface, in Z ~> m. real :: b1 ! The inverse of the pivot in the tridiagonal equations. real :: bd1 ! A term in the denominator of b1. real :: d1 ! 1 - c1 in the tridiagonal equations. real :: gR0 ! Rho_0 times g in kg m-2 s-2. - real :: g_R0 ! g_R0 is g/Rho in Z m3 kg-1 s-2. - real :: Norm ! A factor that normalizes two weights to 1, in Z-2. + real :: g_R0 ! g_R0 is g/Rho in Z m3 kg-1 s-2 ~> m4 kg-1 s-2. + real :: Norm ! A factor that normalizes two weights to 1, in Z-2 ~> m-2. real :: tol_dksrc, tol2 ! ### Tolerances that need to be set better later. real :: tol_dksrc_low ! The tolerance for the fractional decrease in ksrc ! within an iteration. 0 < tol_dksrc_low < 1. @@ -806,7 +806,7 @@ subroutine kappa_shear_column(kappa, tke, dt, nzc, f2, surface_pres, & real :: Idtt ! Idtt = 1 / dt_test, in s-1. real :: dt_inc ! An increment to dt_test that is being tested, in s. - real :: k0dt ! The background diffusivity times the timestep, in Z2. + real :: k0dt ! The background diffusivity times the timestep, in Z2 ~> m2. logical :: valid_dt ! If true, all levels so far exhibit acceptably small ! changes in k_src. logical :: use_temperature ! If true, temperature and salinity have been @@ -1234,18 +1234,18 @@ subroutine calculate_projected_state(kappa, u0, v0, T0, S0, dt, nz, & integer, intent(in) :: nz !< The number of layers (after eliminating massless !! layers?). real, dimension(nz+1), intent(in) :: kappa !< The diapycnal diffusivity at interfaces, - !! in Z2 s-1. + !! in Z2 s-1 ~> m2 s-1. real, dimension(nz), intent(in) :: u0 !< The initial zonal velocity, in m s-1. real, dimension(nz), intent(in) :: v0 !< The initial meridional velocity, in m s-1. real, dimension(nz), intent(in) :: T0 !< The initial temperature, in C. real, dimension(nz), intent(in) :: S0 !< The initial salinity, in PSU. - real, dimension(nz), intent(in) :: dz !< The grid spacing of layers, in Z. + real, dimension(nz), intent(in) :: dz !< The grid spacing of layers, in Z ~> m. real, dimension(nz+1), intent(in) :: I_dz_int !< The inverse of the layer's thicknesses, - !! in Z-1. + !! in Z-1 ~> m-1. real, dimension(nz+1), intent(in) :: dbuoy_dT !< The partial derivative of buoyancy with - !! temperature, in Z s-2 C-1. + !! temperature, in Z s-2 C-1 ~> m s-2 C-1. real, dimension(nz+1), intent(in) :: dbuoy_dS !< The partial derivative of buoyancy with - !! salinity, in Z s-2 PSU-1. + !! salinity, in Z s-2 PSU-1 ~> m s-2 PSU-1. real, intent(in) :: dt !< The time step in s. real, dimension(nz), intent(inout) :: u !< The zonal velocity after dt, in m s-1. real, dimension(nz), intent(inout) :: v !< The meridional velocity after dt, in m s-1. @@ -1268,7 +1268,7 @@ subroutine calculate_projected_state(kappa, u0, v0, T0, S0, dt, nz, & ! Local variables real, dimension(nz+1) :: c1 real :: L2_to_Z2 ! A conversion factor from horizontal length units to vertical depth - ! units squared, in Z2 m-2. + ! units squared, in Z2 m-2 ~> 1. real :: underflow_vel ! Velocities smaller in magnitude than underflow_vel are set to 0, in m s-1. real :: a_a, a_b, b1, d1, bd1, b1nz_0 integer :: k, ks, ke @@ -1374,12 +1374,12 @@ subroutine find_kappa_tke(N2, S2, kappa_in, Idz, dz_Int, I_L2_bdry, f2, & !! in s-2. real, dimension(nz+1), intent(in) :: S2 !< The squared shear at interfaces, in s-2. real, dimension(nz+1), intent(in) :: kappa_in !< The initial guess at the diffusivity, - !! in Z2 s-1. + !! in Z2 s-1 ~> m2 s-1. real, dimension(nz+1), intent(in) :: dz_Int !< The thicknesses associated with interfaces, - !! in Z-1. + !! in Z-1 ~> m-1. real, dimension(nz+1), intent(in) :: I_L2_bdry !< The inverse of the squared distance to !! boundaries, m2. - real, dimension(nz), intent(in) :: Idz !< The inverse grid spacing of layers, in Z-1. + real, dimension(nz), intent(in) :: Idz !< The inverse grid spacing of layers, in Z-1 ~> m-1. real, intent(in) :: f2 !< The squared Coriolis parameter, in s-2. type(Kappa_shear_CS), pointer :: CS !< A pointer to this module's control structure. type(verticalGrid_type), intent(in) :: GV !< The ocean's vertical grid structure. @@ -1390,7 +1390,7 @@ subroutine find_kappa_tke(N2, S2, kappa_in, Idz, dz_Int, I_L2_bdry, f2, & real, dimension(nz+1), intent(out) :: tke !< The turbulent kinetic energy per unit mass at !! interfaces, in units of m2 s-2. real, dimension(nz+1), intent(out) :: kappa !< The diapycnal diffusivity at interfaces, - !! in Z2 s-1. + !! in Z2 s-1 ~> m2 s-1. real, dimension(nz+1), optional, & intent(out) :: kappa_src !< The source term for kappa, in s-1. real, dimension(nz+1), optional, & @@ -1404,7 +1404,7 @@ subroutine find_kappa_tke(N2, S2, kappa_in, Idz, dz_Int, I_L2_bdry, f2, & ! equations, in m s-1. dQdz ! Half the partial derivative of TKE with depth, m s-2. real, dimension(nz+1) :: & - dK, & ! The change in kappa, in Z2 s-1. + dK, & ! The change in kappa, in Z2 s-1 ~> m2 s-1. dQ, & ! The change in TKE, in m2 s-2. cQ, cK, & ! cQ and cK are the upward influences in the tridiagonal and ! hexadiagonal solvers for the TKE and kappa equations, ND. @@ -1421,7 +1421,7 @@ subroutine find_kappa_tke(N2, S2, kappa_in, Idz, dz_Int, I_L2_bdry, f2, & ! and stratification, in m2 s-3. (For convenience, ! a term involving the non-dissipation of q0 is also ! included here.) - real :: bQ, bK ! The inverse of the pivot in the tridiagonal equations, in Z-1. + real :: bQ, bK ! The inverse of the pivot in the tridiagonal equations, in Z-1 ~> m-1. real :: bd1 ! A term in the denominator of bQ or bK. real :: cQcomp, cKcomp ! 1 - cQ or 1 - cK in the tridiagonal equations. real :: c_s2 ! The coefficient for the decay of TKE due to @@ -1434,7 +1434,7 @@ subroutine find_kappa_tke(N2, S2, kappa_in, Idz, dz_Int, I_L2_bdry, f2, & real :: Ilambda2 ! 1.0 / CS%lambda**2. real :: TKE_min ! The minimum value of shear-driven TKE that can be ! solved for, in m2 s-2. - real :: kappa0 ! The background diapycnal diffusivity, in Z2 s-1. + real :: kappa0 ! The background diapycnal diffusivity, in Z2 s-1 ~> m2 s-1. real :: max_err ! The maximum value of norm_err in a column, nondim. real :: kappa_trunc ! Diffusivities smaller than this are rounded to 0, Z2 s-1. @@ -1443,7 +1443,7 @@ subroutine find_kappa_tke(N2, S2, kappa_in, Idz, dz_Int, I_L2_bdry, f2, & real :: chg_by_k0 ! The value of k_src that leads to an increase of ! kappa_0 if only the diffusive term is a sink, in s-1. - real :: kappa_mean ! A mean value of kappa, in Z2 s-1. + real :: kappa_mean ! A mean value of kappa, in Z2 s-1 ~> m2 s-1. real :: Newton_test ! The value of relative error that will cause the next ! iteration to use Newton's method. ! Temporary variables used in the Newton's method iterations. @@ -1478,7 +1478,7 @@ subroutine find_kappa_tke(N2, S2, kappa_in, Idz, dz_Int, I_L2_bdry, f2, & integer :: max_debug_itt ; parameter(max_debug_itt=20) real :: K_err_lin, Q_err_lin real, dimension(nz+1) :: & - kappa_prev, & ! The value of kappa at the start of the current iteration, in Z2 s-1. + kappa_prev, & ! The value of kappa at the start of the current iteration, in Z2 s-1 ~> m2 s-1. TKE_prev ! The value of TKE at the start of the current iteration, in m2 s-2. real, dimension(nz+1,1:max_debug_itt) :: & tke_it1, kappa_it1, kprev_it1, & ! Various values from each iteration. @@ -1577,7 +1577,7 @@ subroutine find_kappa_tke(N2, S2, kappa_in, Idz, dz_Int, I_L2_bdry, f2, & ! terms. ke_tke = max(ke_kappa,ke_kappa_prev)+1 - ! aQ is the coupling between adjacent interfaces in Z s-1. + ! aQ is the coupling between adjacent interfaces in Z s-1 ~> m s-1. do k=1,min(ke_tke,nz) aQ(k) = (0.5*(kappa(K)+kappa(K+1)) + kappa0) * Idz(k) enddo diff --git a/src/parameterizations/vertical/MOM_set_diffusivity.F90 b/src/parameterizations/vertical/MOM_set_diffusivity.F90 index 79ba2914f5..031b47ed5f 100644 --- a/src/parameterizations/vertical/MOM_set_diffusivity.F90 +++ b/src/parameterizations/vertical/MOM_set_diffusivity.F90 @@ -69,15 +69,15 @@ module MOM_set_diffusivity !! by bottom drag drives BBL diffusion (nondim) real :: cdrag !< quadratic drag coefficient (nondim) real :: IMax_decay !< inverse of a maximum decay scale for - !! bottom-drag driven turbulence, (1/Z) - real :: Kv !< The interior vertical viscosity (Z2/s) - real :: Kd !< interior diapycnal diffusivity (Z2/s) - real :: Kd_min !< minimum diapycnal diffusivity (Z2/s) - real :: Kd_max !< maximum increment for diapycnal diffusivity (Z2/s) + !! bottom-drag driven turbulence, in Z-1 ~> m-1. + real :: Kv !< The interior vertical viscosity, in Z2 s-1 ~> m2 s-1. + real :: Kd !< interior diapycnal diffusivity, in Z2 s-1 ~> m2 s-1. + real :: Kd_min !< minimum diapycnal diffusivity, in Z2 s-1 ~> m2 s-1. + real :: Kd_max !< maximum increment for diapycnal diffusivity, in Z2 s-1 ~> m2 s-1. !! Set to a negative value to have no limit. real :: Kd_add !< uniform diffusivity added everywhere without - !! filtering or scaling (Z2/s) - real :: Kdml !< mixed layer diapycnal diffusivity (Z2/s) + !! filtering or scaling, in Z2 s-1 ~> m2 s-1. + real :: Kdml !< mixed layer diapycnal diffusivity, in Z2 s-1 ~> m2 s-1. !! when bulkmixedlayer==.false. real :: Hmix !< mixed layer thickness (meter) when !! bulkmixedlayer==.false. @@ -85,11 +85,11 @@ module MOM_set_diffusivity logical :: limit_dissipation !< If enabled, dissipation is limited to be larger !! than the following: - real :: dissip_min !< Minimum dissipation (Z2 m-2 W m-3) - real :: dissip_N0 !< Coefficient a in minimum dissipation = a+b*N (Z2 m-2 W m-3) - real :: dissip_N1 !< Coefficient b in minimum dissipation = a+b*N (Z2 m-2 W m-3 s) - real :: dissip_N2 !< Coefficient c in minimum dissipation = c*N2 (Z2 m-2 W m-3 s2) - real :: dissip_Kd_min !< Minimum Kd (Z2/s) with dissipation Rho0*Kd_min*N^2 + real :: dissip_min !< Minimum dissipation (Z2 m-2 W m-3 ~> W m-3) + real :: dissip_N0 !< Coefficient a in minimum dissipation = a+b*N (Z2 m-2 W m-3 ~> W m-3) + real :: dissip_N1 !< Coefficient b in minimum dissipation = a+b*N (Z2 m-2 W m-3 s ~> J m-3) + real :: dissip_N2 !< Coefficient c in minimum dissipation = c*N2 (Z2 m-2 W m-3 s2 ~> J s m-3) + real :: dissip_Kd_min !< Minimum Kd, in Z2 s-1 ~> m2 s-1, with dissipation Rho0*Kd_min*N^2 real :: TKE_itide_max !< maximum internal tide conversion (W m-2) !! available to mix above the BBL @@ -108,7 +108,7 @@ module MOM_set_diffusivity !! where N2 is the squared buoyancy frequency (s-2) and OMEGA2 !! is the rotation rate of the earth squared. real :: ML_rad_kd_max !< Maximum diapycnal diffusivity due to turbulence - !! radiated from the base of the mixed layer (Z2/s) + !! radiated from the base of the mixed layer, in Z2 s-1 ~> m2 s-1. real :: ML_rad_efold_coeff !< non-dim coefficient to scale penetration depth real :: ML_rad_coeff !< coefficient, which scales MSTAR*USTAR^3 to !! obtain energy available for mixing below @@ -117,7 +117,7 @@ module MOM_set_diffusivity !! to ML_rad as applied to the other surface !! sources of TKE in the mixed layer code. real :: ustar_min !< A minimum value of ustar to avoid numerical - !! problems (Z/s). If the value is small enough, + !! problems, in Z s-1 ~> m s-1. If the value is small enough, !! this parameter should not affect the solution. real :: TKE_decay !< ratio of natural Ekman depth to TKE decay scale (nondim) real :: mstar !< ratio of friction velocity cubed to @@ -171,12 +171,12 @@ module MOM_set_diffusivity Kd_BBL => NULL(), & !< BBL diffusivity at interfaces (m2/s) Kd_work => NULL(), & !< layer integrated work by diapycnal mixing (W/m2) maxTKE => NULL(), & !< energy required to entrain to h_max (m3/s3) - KT_extra => NULL(), & !< double diffusion diffusivity for temp (Z2/s) - KS_extra => NULL() !< double diffusion diffusivity for saln (Z2/s) + KT_extra => NULL(), & !< double diffusion diffusivity for temp, in Z2 s-1 ~> m2 s-1. + KS_extra => NULL() !< double diffusion diffusivity for saln, in Z2 s-1 ~> m2 s-1. real, pointer, dimension(:,:,:) :: TKE_to_Kd => NULL() - !< conversion rate (~1.0 / (G_Earth + dRho_lay)) - !! between TKE dissipated within a layer and Kd - !! in that layer, in Z2 s-1 / m3 s-3 = Z2 s2 m-3 + !< conversion rate (~1.0 / (G_Earth + dRho_lay)) between TKE + !! dissipated within a layer and Kd in that layer, + !! in Z2 s-1 / m3 s-3 = Z2 s2 m-3 ~> s2 m-1 end type diffusivity_diags @@ -679,7 +679,7 @@ subroutine find_TKE_to_Kd(h, tv, dRho_int, N2_lay, j, dt, G, GV, US, CS, & !! TKE dissipated within a layer and the !! diapycnal diffusivity witin that layer, !! usually (~Rho_0 / (G_Earth * dRho_lay)), - !! in Z2 s-1 / m3 s-3 = Z2 s2 m-3 + !! in Z2 s-1 / m3 s-3 = Z2 s2 m-3 ~> s2 m-1 real, dimension(SZI_(G),SZK_(G)), intent(out) :: maxTKE !< The energy required to for a layer to entrain !! to its maximum realizable thickness, in m3 s-3 integer, dimension(SZI_(G)), intent(out) :: kb !< Index of lightest layer denser than the buffer @@ -696,19 +696,19 @@ subroutine find_TKE_to_Kd(h, tv, dRho_int, N2_lay, j, dt, G, GV, US, CS, & maxEnt ! maxEnt is the maximum value of entrainment from below (with ! compensating entrainment from above to keep the layer ! density from changing) that will not deplete all of the - ! layers above or below a layer within a timestep (Z) + ! layers above or below a layer within a timestep, in Z ~> m. real, dimension(SZI_(G)) :: & htot, & ! total thickness above or below a layer, or the - ! integrated thickness in the BBL (Z) + ! integrated thickness in the BBL, in Z ~> m. mFkb, & ! total thickness in the mixed and buffer layers - ! times ds_dsp1 (Z) + ! times ds_dsp1, in Z ~> m. p_ref, & ! array of tv%P_Ref pressures Rcv_kmb, & ! coordinate density in the lowest buffer layer p_0 ! An array of 0 pressures real :: dh_max ! maximum amount of entrainment a layer could ! undergo before entraining all fluid in the layers - ! above or below (Z) + ! above or below, in Z ~> m. real :: dRho_lay ! density change across a layer (kg/m3) real :: Omega2 ! rotation rate squared (1/s2) real :: G_Rho0 ! gravitation accel divided by Bouss ref density (m4 s-2 kg-1) @@ -900,14 +900,14 @@ subroutine find_N2(h, tv, T_f, S_f, fluxes, j, G, GV, US, CS, dRho_int, & Temp_int, & ! temperature at each interface (degC) Salin_int, & ! salinity at each interface (PPT) drho_bot, & - h_amp, & ! The topographic roughness amplitude, in Z. - hb, & ! The thickness of the bottom layer in Z - z_from_bot ! The hieght above the bottom in Z + h_amp, & ! The topographic roughness amplitude, in Z ~> m. + hb, & ! The thickness of the bottom layer, in Z ~> m. + z_from_bot ! The hieght above the bottom, in Z ~> m. real :: Rml_base ! density of the deepest variable density layer - real :: dz_int ! thickness associated with an interface (Z) + real :: dz_int ! thickness associated with an interface, in Z ~> m. real :: G_Rho0 ! gravitation acceleration divided by Bouss reference density - ! times some unit conversion factors, in (Z m3 s-2 kg-1) + ! times some unit conversion factors, in Z m3 s-2 kg-1 ~> m4 s-2 kg-1. real :: H_neglect ! negligibly small thickness, in the same units as h. logical :: do_i(SZI_(G)), do_any @@ -1057,10 +1057,10 @@ subroutine double_diffusion(tv, h, T_f, S_f, j, G, GV, US, CS, Kd_T_dd, Kd_S_dd) type(set_diffusivity_CS), pointer :: CS !< Module control structure. real, dimension(SZI_(G),SZK_(G)+1), & intent(out) :: Kd_T_dd !< Interface double diffusion diapycnal - !! diffusivity for temp (Z2/sec). + !! diffusivity for temp, in Z2 s-1 ~> m2 s-1. real, dimension(SZI_(G),SZK_(G)+1), & intent(out) :: Kd_S_dd !< Interface double diffusion diapycnal - !! diffusivity for saln (Z2/sec). + !! diffusivity for saln, in Z2 s-1 ~> m2 s-1. real, dimension(SZI_(G)) :: & dRho_dT, & ! partial derivatives of density wrt temp (kg m-3 degC-1) @@ -1074,12 +1074,12 @@ subroutine double_diffusion(tv, h, T_f, S_f, j, G, GV, US, CS, Kd_T_dd, Kd_S_dd) real :: Rrho ! vertical density ratio real :: diff_dd ! factor for double-diffusion (nondim) - real :: Kd_dd ! The dominant double diffusive diffusivity in Z2/sec + real :: Kd_dd ! The dominant double diffusive diffusivity, in Z2 s-1 ~> m2 s-1 real :: prandtl ! flux ratio for diffusive convection regime real, parameter :: Rrho0 = 1.9 ! limit for double-diffusive density ratio - real :: dsfmax ! max diffusivity in case of salt fingering (Z2/sec) - real :: Kv_molecular ! molecular viscosity (Z2/sec) + real :: dsfmax ! max diffusivity in case of salt fingering, in Z2 s-1 ~> m2 s-1 + real :: Kv_molecular ! molecular viscosity, in Z2 s-1 ~> m2 s-1 integer :: i, k, is, ie, nz is = G%isc ; ie = G%iec ; nz = G%ke @@ -1149,17 +1149,19 @@ subroutine add_drag_diffusivity(h, u, v, tv, fluxes, visc, j, TKE_to_Kd, & !! TKE dissipated within a layer and the !! diapycnal diffusivity witin that layer, !! usually (~Rho_0 / (G_Earth * dRho_lay)), - !! in Z2 s-1 / m3 s-3 = Z2 s2 m-3 + !! in Z2 s-1 / m3 s-3 = Z2 s2 m-3 ~> s2 m-1. real, dimension(SZI_(G),SZK_(G)), intent(in) :: maxTKE !< The energy required to for a layer to entrain !! to its maximum realizable thickness, in m3 s-3 integer, dimension(SZI_(G)), intent(in) :: kb !< Index of lightest layer denser than the buffer !! layer, or -1 without a bulk mixed layer type(set_diffusivity_CS), pointer :: CS !< Diffusivity control structure real, dimension(SZI_(G),SZJ_(G),SZK_(G)), & - intent(inout) :: Kd_lay !< The diapycnal diffusvity in layers, in Z2 s-1 + intent(inout) :: Kd_lay !< The diapycnal diffusvity in layers, + !! in Z2 s-1 ~> m2 s-1. real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1), & - intent(inout) :: Kd_int !< The diapycnal diffusvity at interfaces, in Z2 s-1 - real, dimension(:,:,:), pointer :: Kd_BBL !< Interface BBL diffusivity, in m2 s-1 + intent(inout) :: Kd_int !< The diapycnal diffusvity at interfaces, + !! in Z2 s-1 ~> m2 s-1. + real, dimension(:,:,:), pointer :: Kd_BBL !< Interface BBL diffusivity, in Z2 s-1 ~> m2 s-1. ! This routine adds diffusion sustained by flow energy extracted by bottom drag. @@ -1167,25 +1169,25 @@ subroutine add_drag_diffusivity(h, u, v, tv, fluxes, visc, j, TKE_to_Kd, & Rint ! coordinate density of an interface (kg/m3) real, dimension(SZI_(G)) :: & htot, & ! total thickness above or below a layer, or the - ! integrated thickness in the BBL (Z) + ! integrated thickness in the BBL, in Z ~> m. rho_htot, & ! running integral with depth of density (Z kg/m3) gh_sum_top, & ! BBL value of g'h that can be supported by ! the local ustar, times R0_g (kg/m2) Rho_top, & ! density at top of the BBL (kg/m3) TKE, & ! turbulent kinetic energy available to drive ! bottom-boundary layer mixing in a layer (m3/s3) - I2decay ! inverse of twice the TKE decay scale (1/Z) + I2decay ! inverse of twice the TKE decay scale, in Z-1 ~> m-1. real :: TKE_to_layer ! TKE used to drive mixing in a layer (m3/s3) real :: TKE_Ray ! TKE from layer Rayleigh drag used to drive mixing in layer (m3/s3) real :: TKE_here ! TKE that goes into mixing in this layer (m3/s3) real :: dRl, dRbot ! temporaries holding density differences (kg/m3) real :: cdrag_sqrt ! square root of the drag coefficient (nondimensional) - real :: ustar_h ! value of ustar at a thickness point (Z/s) + real :: ustar_h ! value of ustar at a thickness point, in Z s-1 ~> m s-1. real :: absf ! average absolute Coriolis parameter around a thickness point (1/s) real :: R0_g ! Rho0 / G_Earth (kg s2 Z-1 m-4) real :: I_rho0 ! 1 / RHO0 - real :: delta_Kd ! increment to Kd from the bottom boundary layer mixing (Z2/s) + real :: delta_Kd ! increment to Kd from the bottom boundary layer mixing, in Z2 s-1 ~> m2 s-1. logical :: Rayleigh_drag ! Set to true if Rayleigh drag velocities ! defined in visc, on the assumption that this ! extracted energy also drives diapycnal mixing. @@ -1397,17 +1399,17 @@ subroutine add_LOTW_BBL_diffusivity(h, u, v, tv, fluxes, visc, j, N2_int, & real :: TKE_consumed ! TKE used for mixing in this layer (m3 s-3) real :: TKE_Kd_wall ! TKE associated with unlimited law of the wall mixing (m3 s-3) real :: cdrag_sqrt ! square root of the drag coefficient (nondimensional) - real :: ustar ! value of ustar at a thickness point (Z/s) + real :: ustar ! value of ustar at a thickness point, in Z s-1 ~> m s-1. real :: ustar2 ! square of ustar, for convenience (Z2/s2) real :: absf ! average absolute value of Coriolis parameter around a thickness point (1/sec) - real :: dh, dhm1 ! thickness of layers k and k-1, respecitvely (Z) - real :: z_bot ! distance to interface k from bottom (Z) - real :: D_minus_z ! distance to interface k from surface (Z) - real :: total_thickness ! total thickness of water column (Z) - real :: Idecay ! inverse of decay scale used for "Joule heating" loss of TKE with height (1/Z) - real :: Kd_wall ! Law of the wall diffusivity (Z2/s) + real :: dh, dhm1 ! thickness of layers k and k-1, respecitvely, in Z ~> m. + real :: z_bot ! distance to interface k from bottom, in Z ~> m. + real :: D_minus_z ! distance to interface k from surface, in Z ~> m. + real :: total_thickness ! total thickness of water column, in Z ~> m. + real :: Idecay ! inverse of decay scale used for "Joule heating" loss of TKE with height, in Z-1 ~> m-1. + real :: Kd_wall ! Law of the wall diffusivity, in Z2 s-1 ~> m2 s-1. real :: Kd_lower ! diffusivity for lower interface (Z2/sec) - real :: ustar_D ! u* x D (Z2/s) + real :: ustar_D ! u* x D , in Z2 s-1 ~> m2 s-1. real :: I_Rho0 ! 1 / rho0 real :: N2_min ! Minimum value of N2 to use in calculation of TKE_Kd_wall (1/s2) logical :: Rayleigh_drag ! Set to true if there are Rayleigh drag velocities defined in visc, on @@ -1465,9 +1467,9 @@ subroutine add_LOTW_BBL_diffusivity(h, u, v, tv, fluxes, visc, j, N2_int, & ! Work upwards from the bottom, accumulating work used until it exceeds the available TKE input ! at the bottom. do k=G%ke,2,-1 - dh = GV%H_to_Z * h(i,j,k) ! Thickness of this level in Z. + dh = GV%H_to_Z * h(i,j,k) ! Thickness of this level in Z ~> m. km1 = max(k-1, 1) - dhm1 = GV%H_to_Z * h(i,j,km1) ! Thickness of level above in Z. + dhm1 = GV%H_to_Z * h(i,j,km1) ! Thickness of level above in Z ~> m. ! Add in additional energy input from bottom-drag against slopes (sides) if (Rayleigh_drag) TKE_remaining = TKE_remaining + & @@ -1481,7 +1483,7 @@ subroutine add_LOTW_BBL_diffusivity(h, u, v, tv, fluxes, visc, j, N2_int, & ! This is energy loss in addition to work done as mixing, apparently to Joule heating. TKE_remaining = exp(-Idecay*dh) * TKE_remaining - z_bot = z_bot + h(i,j,k)*GV%H_to_Z ! Distance between upper interface of layer and the bottom, in Z. + z_bot = z_bot + h(i,j,k)*GV%H_to_Z ! Distance between upper interface of layer and the bottom, in Z ~> m. D_minus_z = max(total_thickness - z_bot, 0.) ! Thickness above layer, Z. ! Diffusivity using law of the wall, limited by rotation, at height z, in m2/s. @@ -1534,34 +1536,35 @@ subroutine add_MLrad_diffusivity(h, fluxes, j, G, GV, US, CS, Kd_lay, TKE_to_Kd, type(forcing), intent(in) :: fluxes !< Surface fluxes structure type(set_diffusivity_CS), pointer :: CS !< Diffusivity control structure real, dimension(SZI_(G),SZJ_(G),SZK_(G)), & - intent(inout) :: Kd_lay !< The diapycnal diffusvity in layers, in Z2 s-1. + intent(inout) :: Kd_lay !< The diapycnal diffusvity in layers, in Z2 s-1 ~> m2 s-1. integer, intent(in) :: j !< The j-index to work on real, dimension(SZI_(G),SZK_(G)), intent(in) :: TKE_to_Kd !< The conversion rate between the TKE !! TKE dissipated within a layer and the !! diapycnal diffusivity witin that layer, !! usually (~Rho_0 / (G_Earth * dRho_lay)), - !! in Z2 s-1 / m3 s-3 = Z2 s2 m-3 + !! in Z2 s-1 / m3 s-3 = Z2 s2 m-3 ~> s2 m-1 real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1), & - optional, intent(inout) :: Kd_int !< The diapycnal diffusvity at interfaces, in Z2 s-1. + optional, intent(inout) :: Kd_int !< The diapycnal diffusvity at interfaces, + !! in Z2 s-1 ~> m2 s-1. ! This routine adds effects of mixed layer radiation to the layer diffusivities. - real, dimension(SZI_(G)) :: h_ml ! Mixed layer thickness, in Z. + real, dimension(SZI_(G)) :: h_ml ! Mixed layer thickness, in Z ~> m. real, dimension(SZI_(G)) :: TKE_ml_flux - real, dimension(SZI_(G)) :: I_decay ! A decay rate in Z-1. - real, dimension(SZI_(G)) :: Kd_mlr_ml ! Diffusivities associated with mixed layer radiation, in Z2 s-1. + real, dimension(SZI_(G)) :: I_decay ! A decay rate in Z-1 ~> m-1. + real, dimension(SZI_(G)) :: Kd_mlr_ml ! Diffusivities associated with mixed layer radiation, in Z2 s-1 ~> m2 s-1. real :: f_sq ! The square of the local Coriolis parameter or a related variable, in s-2. - real :: h_ml_sq ! The square of the mixed layer thickness, in Z2. - real :: ustar_sq ! ustar squared in Z2 s-2. - real :: Kd_mlr ! A diffusivity associated with mixed layer turbulence radiation, in Z2 s-1. + real :: h_ml_sq ! The square of the mixed layer thickness, in Z2 ~> m2. + real :: ustar_sq ! ustar squared in Z2 s-2 ~> m2 s-2. + real :: Kd_mlr ! A diffusivity associated with mixed layer turbulence radiation, in Z2 s-1 ~> m2 s-1. real :: C1_6 ! 1/6 - real :: Omega2 ! rotation rate squared (1/s2) + real :: Omega2 ! rotation rate squared, in s-2. real :: z1 ! layer thickness times I_decay (nondim) - real :: dzL ! thickness converted to Z + real :: dzL ! thickness converted to Z ~> m. real :: I_decay_len2_TKE ! squared inverse decay lengthscale for - ! TKE, as used in the mixed layer code (1/Z2) - real :: h_neglect ! negligibly small thickness (Z) + ! TKE, as used in the mixed layer code, in Z-2 ~> m-2. + real :: h_neglect ! negligibly small thickness, in Z ~> m. logical :: do_any, do_i(SZI_(G)) integer :: i, k, is, ie, nz, kml @@ -1675,21 +1678,21 @@ subroutine set_BBL_TKE(u, v, h, fluxes, visc, G, GV, US, CS) real, dimension(SZI_(G)) :: & htot ! total thickness above or below a layer, or the - ! integrated thickness in the BBL (Z) + ! integrated thickness in the BBL, in Z ~> m. real, dimension(SZIB_(G)) :: & uhtot, & ! running integral of u in the BBL (Z m/s) - ustar, & ! bottom boundary layer turbulence speed (Z/s) + ustar, & ! bottom boundary layer turbulence speed, in Z s-1 ~> m s-1. u2_bbl ! square of the mean zonal velocity in the BBL (m2/s2) real :: vhtot(SZI_(G)) ! running integral of v in the BBL (Z m/sec) real, dimension(SZI_(G),SZJB_(G)) :: & - vstar, & ! ustar at at v-points (Z/s) + vstar, & ! ustar at at v-points, in Z s-1 ~> m s-1. v2_bbl ! square of average meridional velocity in BBL (m2/s2) real :: cdrag_sqrt ! square root of the drag coefficient (nondim) - real :: hvel ! thickness at velocity points (Z) + real :: hvel ! thickness at velocity points, in Z ~> m. logical :: domore, do_i(SZI_(G)) integer :: i, j, k, is, ie, js, je, nz diff --git a/src/parameterizations/vertical/MOM_set_viscosity.F90 b/src/parameterizations/vertical/MOM_set_viscosity.F90 index cb80ebb0c0..2d53db68de 100644 --- a/src/parameterizations/vertical/MOM_set_viscosity.F90 +++ b/src/parameterizations/vertical/MOM_set_viscosity.F90 @@ -50,8 +50,8 @@ module MOM_set_visc real :: Htbl_shelf !< A nominal thickness of the surface boundary layer for use !! in calculating the near-surface velocity, in units of H. real :: Htbl_shelf_min !< The minimum surface boundary layer thickness in H. - real :: KV_BBL_min !< The minimum viscosity in the bottom boundary layer, in Z2 s-1. - real :: KV_TBL_min !< The minimum viscosity in the top boundary layer, in Z2 s-1. + real :: KV_BBL_min !< The minimum viscosity in the bottom boundary layer, in Z2 s-1 ~> m2 s-1. + real :: KV_TBL_min !< The minimum viscosity in the top boundary layer, in Z2 s-1 ~> m2 s-1. 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 @@ -70,7 +70,7 @@ module MOM_set_visc !! thickness of the viscous mixed layer. Nondim. real :: omega !< The Earth's rotation rate, in s-1. real :: ustar_min !< A minimum value of ustar to avoid numerical - !! problems, in Z s-1. If the value is small enough, + !! problems, in Z s-1 ~> m s-1. If the value is small enough, !! this should not affect the solution. real :: TKE_decay !< The ratio of the natural Ekman depth to the TKE !! decay scale, nondimensional. @@ -166,7 +166,7 @@ subroutine set_viscous_BBL(u, v, h, tv, visc, G, GV, US, CS, symmetrize) ! Rho0 divided by G_Earth and the conversion ! from m to thickness units, in kg m-2 or kg2 m-5. real :: cdrag_sqrt_Z ! Square root of the drag coefficient, times a unit conversion - ! factor from lateral lengths to vertical depths, in Z m-1. + ! factor from lateral lengths to vertical depths, in Z m-1 ~> 1. real :: cdrag_sqrt ! Square root of the drag coefficient, nd. real :: oldfn ! The integrated energy required to ! entrain up to the bottom of the layer, @@ -176,7 +176,7 @@ subroutine set_viscous_BBL(u, v, h, tv, visc, G, GV, US, CS, symmetrize) real :: Dh ! The increment in layer thickness from ! the present layer, in H. real :: bbl_thick ! The thickness of the bottom boundary layer in H. - real :: bbl_thick_Z ! The thickness of the bottom boundary layer in Z. + real :: bbl_thick_Z ! The thickness of the bottom boundary layer in Z ~> m. real :: C2f ! C2f = 2*f at velocity points. real :: U_bg_sq ! The square of an assumed background @@ -242,8 +242,8 @@ subroutine set_viscous_BBL(u, v, h, tv, visc, G, GV, US, CS, symmetrize) real :: Cell_width ! The transverse width of the velocity cell, in m. real :: Rayleigh ! A nondimensional value that is multiplied by the layer's - ! velocity magnitude to give the Rayleigh drag velocity, - ! times a lateral to vertical distance conversion factor, in Z L-1. + ! velocity magnitude to give the Rayleigh drag velocity, times + ! a lateral to vertical distance conversion factor, in Z L-1 ~> 1. real :: gam ! The ratio of the change in the open interface width ! to the open interface width atop a cell, nondim. real :: BBL_frac ! The fraction of a layer's drag that goes into the @@ -1035,7 +1035,7 @@ subroutine set_viscous_ML(u, v, h, tv, forces, visc, dt, G, GV, US, CS, symmetri dR_dS, & ! Partial derivative of the density at the base of layer nkml ! (roughly the base of the mixed layer) with salinity, in units ! of kg m-3 psu-1. - ustar, & ! The surface friction velocity under ice shelves, in Z s-1. + ustar, & ! The surface friction velocity under ice shelves, in Z s-1 ~> m s-1. press, & ! The pressure at which dR_dT and dR_dS are evaluated, in Pa. T_EOS, & ! T_EOS and S_EOS are the potential temperature and salnity at which dR_dT and dR_dS S_EOS ! which dR_dT and dR_dS are evaluated, in degC and PSU. @@ -1063,7 +1063,7 @@ subroutine set_viscous_ML(u, v, h, tv, forces, visc, dt, G, GV, US, CS, symmetri ! velocity magnitudes, in H m s-1. real :: hweight ! The thickness of a layer that is within Hbbl ! of the bottom, in H. - real :: tbl_thick_Z ! The thickness of the top boundary layer in Z. + real :: tbl_thick_Z ! The thickness of the top boundary layer in Z ~> m. real :: hlay ! The layer thickness at velocity points, in H. real :: I_2hlay ! 1 / 2*hlay, in H-1. @@ -1087,7 +1087,7 @@ subroutine set_viscous_ML(u, v, h, tv, forces, visc, dt, G, GV, US, CS, symmetri ! Rho0 divided by G_Earth and the conversion ! from m to thickness units, in kg m-2 or kg2 m-5. real :: cdrag_sqrt_Z ! Square root of the drag coefficient, times a unit conversion - ! factor from lateral lengths to vertical depths, in Z m-1. + ! factor from lateral lengths to vertical depths, in Z m-1 ~> 1. real :: cdrag_sqrt ! Square root of the drag coefficient, ND. real :: oldfn ! The integrated energy required to ! entrain up to the bottom of the layer, @@ -1102,7 +1102,7 @@ subroutine set_viscous_ML(u, v, h, tv, forces, visc, dt, G, GV, US, CS, symmetri real :: h_tiny ! A very small thickness, in H. Layers that are less than ! h_tiny can not be the deepest in the viscous mixed layer. real :: absf ! The absolute value of f averaged to velocity points, s-1. - real :: U_star ! The friction velocity at velocity points, in Z s-1. + real :: U_star ! The friction velocity at velocity points, in Z s-1 ~> m s-1. real :: h_neglect ! A thickness that is so small it is usually lost ! in roundoff and can be neglected, in H. real :: Rho0x400_G ! 400*Rho0/G_Earth, times unit conversion factors, in kg s2 H m-3 Z-2. diff --git a/src/parameterizations/vertical/MOM_sponge.F90 b/src/parameterizations/vertical/MOM_sponge.F90 index 8bb8fa3ef3..c656f6f1a5 100644 --- a/src/parameterizations/vertical/MOM_sponge.F90 +++ b/src/parameterizations/vertical/MOM_sponge.F90 @@ -347,7 +347,7 @@ subroutine apply_sponge(h, dt, G, GV, ea, eb, CS, Rcv_ml) fld_anom ! Anomalies in a tracer concentration, relative to the ! i-mean target value. real, dimension(SZJ_(G), SZK_(G)+1) :: & - eta_mean_anom ! The i-mean interface height anomalies, in Z. + eta_mean_anom ! The i-mean interface height anomalies, in Z ~> m. real, allocatable, dimension(:,:,:) :: & fld_mean_anom ! THe i-mean tracer concentration anomalies. real, dimension(SZI_(G), SZK_(G)+1) :: & @@ -357,8 +357,8 @@ subroutine apply_sponge(h, dt, G, GV, ea, eb, CS, Rcv_ml) dilate ! A nondimensional factor by which to dilate layers to ! give 0 at the surface. - real :: e(SZK_(G)+1) ! The interface heights, in Z, usually negative. - real :: e0 ! The height of the free surface in Z. + real :: e(SZK_(G)+1) ! The interface heights, in Z ~> m, usually negative. + real :: e0 ! The height of the free surface in Z ~> m. real :: e_str ! A nondimensional amount by which the reference ! profile must be stretched for the free surfaces ! heights in the two profiles to agree. diff --git a/src/parameterizations/vertical/MOM_tidal_mixing.F90 b/src/parameterizations/vertical/MOM_tidal_mixing.F90 index 05c377ab9c..f995cf0739 100644 --- a/src/parameterizations/vertical/MOM_tidal_mixing.F90 +++ b/src/parameterizations/vertical/MOM_tidal_mixing.F90 @@ -39,9 +39,9 @@ module MOM_tidal_mixing !> Containers for tidal mixing diagnostics type, public :: tidal_mixing_diags ; private real, pointer, dimension(:,:,:) :: & - Kd_itidal => NULL(),& !< internal tide diffusivity at interfaces (Z2 s-1) + Kd_itidal => NULL(),& !< internal tide diffusivity at interfaces, in Z2 s-1 ~> m2 s-1. Fl_itidal => NULL(),& !< vertical flux of tidal turbulent dissipation (m3 s-3) - Kd_Niku => NULL(),& !< lee-wave diffusivity at interfaces (Z2 s-1) + Kd_Niku => NULL(),& !< lee-wave diffusivity at interfaces, in Z2 s-1 ~> m2 s-1. Kd_Niku_work => NULL(),& !< layer integrated work by lee-wave driven mixing (W m-2) Kd_Itidal_Work => NULL(),& !< layer integrated work by int tide driven mixing (W m-2) Kd_Lowmode_Work => NULL(),& !< layer integrated work by low mode driven mixing (W m-2) @@ -51,7 +51,7 @@ module MOM_tidal_mixing real, pointer, dimension(:,:,:) :: tidal_qe_md => NULL() !< Input tidal energy dissipated locally, !! interpolated to model vertical coordinate (W m-3?) real, pointer, dimension(:,:,:) :: Kd_lowmode => NULL() !< internal tide diffusivity at interfaces - !! due to propagating low modes (Z2/s) + !! due to propagating low modes, in Z2 s-1 ~> m2 s-1. real, pointer, dimension(:,:,:) :: Fl_lowmode => NULL() !< vertical flux of tidal turbulent !! dissipation due to propagating low modes (m3/s3) real, pointer, dimension(:,:) :: & @@ -85,7 +85,7 @@ module MOM_tidal_mixing !! for dissipation of the lee waves. Schemes that are !! currently encoded are St Laurent et al (2002) and !! Polzin (2009). - real :: Int_tide_decay_scale !< decay scale for internal wave TKE (Z) + real :: Int_tide_decay_scale !< decay scale for internal wave TKE, in Z ~> m. real :: Mu_itides !< efficiency for conversion of dissipation !! to potential energy (nondimensional) @@ -97,7 +97,7 @@ module MOM_tidal_mixing real :: Decay_scale_factor_lee !< Scaling factor for the decay scale of lee !! wave energy dissipation (nondimensional) - real :: min_zbot_itides !< minimum depth for internal tide conversion (Z) + real :: min_zbot_itides !< minimum depth for internal tide conversion, in Z ~> m. logical :: Lowmode_itidal_dissipation = .false. !< If true, consider mixing due to breaking low !! modes that have been remotely generated using an internal tidal !! dissipation scheme to specify the vertical profile of the energy @@ -116,13 +116,13 @@ module MOM_tidal_mixing !! profile in Polzin formulation should not exceed !! Polzin_decay_scale_max_factor * depth of the ocean (nondimensional). real :: Polzin_min_decay_scale !< minimum decay scale of the tidal dissipation - !! profile in Polzin formulation (Z) + !! profile in Polzin formulation, in Z ~> m. real :: TKE_itide_max !< maximum internal tide conversion (W m-2) !! available to mix above the BBL real :: utide !< constant tidal amplitude (m s-1) used if - real :: kappa_itides !< topographic wavenumber and non-dimensional scaling, in Z-1 + real :: kappa_itides !< topographic wavenumber and non-dimensional scaling, in Z-1 ~> m-1. real :: kappa_h2_factor !< factor for the product of wavenumber * rms sgs height character(len=200) :: inputdir !< The directory in which to find input files @@ -137,7 +137,7 @@ module MOM_tidal_mixing type(CVMix_global_params_type) :: CVMix_glb_params !< CVMix-specific for Prandtl number only real :: tidal_max_coef !< CVMix-specific maximum allowable tidal diffusivity. [m^2/s] real :: tidal_diss_lim_tc !< CVMix-specific dissipation limit depth for - !! tidal-energy-constituent data, in Z. + !! tidal-energy-constituent data, in Z ~> m. type(remapping_CS) :: remap_CS !< The control structure for remapping ! Data containers @@ -665,19 +665,21 @@ subroutine calculate_tidal_mixing(h, N2_bot, j, TKE_to_Kd, max_TKE, G, GV, US, C !! TKE dissipated within a layer and the !! diapycnal diffusivity witin that layer, !! usually (~Rho_0 / (G_Earth * dRho_lay)), - !! in Z2 s-1 / m3 s-3 = Z2 s2 m-3 + !! in Z2 s-1 / m3 s-3 = Z2 s2 m-3 ~> s2 m-1 real, dimension(SZI_(G),SZK_(G)), intent(in) :: max_TKE !< The energy required to for a layer to entrain !! to its maximum realizable thickness, in m3 s-3 type(tidal_mixing_cs), pointer :: CS !< The control structure for this module real, dimension(SZI_(G),SZJ_(G),SZK_(G)), & - intent(inout) :: Kd_lay !< The diapycnal diffusvity in layers, in Z2 s-1. + intent(inout) :: Kd_lay !< The diapycnal diffusvity in layers, in Z2 s-1 ~> m2 s-1. real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1), & - optional, intent(inout) :: Kd_int !< The diapycnal diffusvity at interfaces, in Z2 s-1. + optional, intent(inout) :: Kd_int !< The diapycnal diffusvity at interfaces, + !! in Z2 s-1 ~> m2 s-1. real, intent(in) :: Kd_max !< The maximum increment for diapycnal - !! diffusivity due to TKE-based processes, in Z2 s-1. + !! diffusivity due to TKE-based processes, + !! in Z2 s-1 ~> m2 s-1. !! Set this to a negative value to have no limit. real, dimension(:,:,:), pointer :: Kv !< The "slow" vertical viscosity at each interface - !! (not layer!) in Z2 s-1. + !! (not layer!) in Z2 s-1 ~> m2 s-1. if (CS%Int_tide_dissipation .or. CS%Lee_wave_dissipation .or. CS%Lowmode_itidal_dissipation) then if (CS%use_CVMix_tidal) then @@ -703,9 +705,9 @@ subroutine calculate_CVMix_tidal(h, j, G, GV, US, CS, N2_int, Kd_lay, Kv) real, dimension(SZI_(G),SZJ_(G),SZK_(G)), & intent(in) :: h !< Layer thicknesses, in H (usually m or kg m-2). real, dimension(SZI_(G),SZJ_(G),SZK_(G)), & - intent(inout) :: Kd_lay!< The diapycnal diffusivities in the layers, in Z2 s-1 + intent(inout) :: Kd_lay!< The diapycnal diffusivities in the layers, in Z2 s-1 ~> m2 s-1. real, dimension(:,:,:), pointer :: Kv !< The "slow" vertical viscosity at each interface - !! (not layer!) in Z2 s-1. + !! (not layer!) in Z2 s-1 ~> m2 s-1. ! Local variables real, dimension(SZK_(G)+1) :: Kd_tidal ! tidal diffusivity [m2/s] real, dimension(SZK_(G)+1) :: Kv_tidal ! tidal viscosity [m2/s] @@ -781,7 +783,7 @@ subroutine calculate_CVMix_tidal(h, j, G, GV, US, CS, N2_int, Kd_lay, Kv) ! Update viscosity with the proper unit conversion. if (associated(Kv)) then do k=1,G%ke+1 - Kv(i,j,k) = Kv(i,j,k) + US%m_to_Z**2 * Kv_tidal(k) ! Rescale from m2 s-1 to Z2 s-1. + Kv(i,j,k) = Kv(i,j,k) + US%m_to_Z**2 * Kv_tidal(k) ! Rescale from m2 s-1 to Z2 s-1. enddo endif @@ -933,32 +935,34 @@ subroutine add_int_tide_diffusivity(h, N2_bot, j, TKE_to_Kd, max_TKE, G, GV, US, !! TKE dissipated within a layer and the !! diapycnal diffusivity witin that layer, !! usually (~Rho_0 / (G_Earth * dRho_lay)), - !! in Z2 s-1 / m3 s-3 = Z2 s2 m-3 + !! in Z2 s-1 / m3 s-3 = Z2 s2 m-3 ~> s2 m-1 real, dimension(SZI_(G),SZK_(G)), intent(in) :: max_TKE !< The energy required to for a layer to entrain !! to its maximum realizable thickness, in m3 s-3 type(tidal_mixing_cs), pointer :: CS !< The control structure for this module real, dimension(SZI_(G),SZJ_(G),SZK_(G)), & - intent(inout) :: Kd_lay !< The diapycnal diffusvity in layers, in Z2 s-1. + intent(inout) :: Kd_lay !< The diapycnal diffusvity in layers, in Z2 s-1 ~> m2 s-1. real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1), & - optional, intent(inout) :: Kd_int !< The diapycnal diffusvity at interfaces, in Z2 s-1. + optional, intent(inout) :: Kd_int !< The diapycnal diffusvity at interfaces, + !! in Z2 s-1 ~> m2 s-1. real, intent(in) :: Kd_max !< The maximum increment for diapycnal - !! diffusivity due to TKE-based processes, in Z2 s-1. + !! diffusivity due to TKE-based processes, + !! in Z2 s-1 ~> m2 s-1. !! Set this to a negative value to have no limit. ! local real, dimension(SZI_(G)) :: & htot, & ! total thickness above or below a layer, or the - ! integrated thickness in the BBL (Z) - htot_WKB, & ! distance from top to bottom (Z) WKB scaled + ! integrated thickness in the BBL, in Z ~> m. + htot_WKB, & ! WKB scaled distance from top to bottom, in Z ~> m. TKE_itidal_bot, & ! internal tide TKE at ocean bottom (m3/s3) TKE_Niku_bot, & ! lee-wave TKE at ocean bottom (m3/s3) TKE_lowmode_bot, & ! internal tide TKE at ocean bottom lost from all remote low modes (m3/s3) (BDM) Inv_int, & ! inverse of TKE decay for int tide over the depth of the ocean (nondim) Inv_int_lee, & ! inverse of TKE decay for lee waves over the depth of the ocean (nondim) Inv_int_low, & ! inverse of TKE decay for low modes over the depth of the ocean (nondim) (BDM) - z0_Polzin, & ! TKE decay scale in Polzin formulation (Z) - z0_Polzin_scaled, & ! TKE decay scale in Polzin formulation (Z) + z0_Polzin, & ! TKE decay scale in Polzin formulation, in Z ~> m. + z0_Polzin_scaled, & ! TKE decay scale in Polzin formulation, in Z ~> m. ! multiplied by N2_bot/N2_meanz to be coherent with the WKB scaled z ! z*=int(N2/N2_bot) * N2_bot/N2_meanz = int(N2/N2_meanz) ! z0_Polzin_scaled = z0_Polzin * N2_bot/N2_meanz @@ -970,18 +974,18 @@ subroutine add_int_tide_diffusivity(h, N2_bot, j, TKE_to_Kd, max_TKE, G, GV, US, TKE_frac_top_lee, & ! fraction of bottom TKE that should appear at top of a layer (nondim) TKE_frac_top_lowmode, & ! fraction of bottom TKE that should appear at top of a layer (nondim) (BDM) - z_from_bot, & ! distance from bottom (Z) - z_from_bot_WKB ! distance from bottom (Z), WKB scaled + z_from_bot, & ! distance from bottom, in Z ~> m. + z_from_bot_WKB ! WKB scaled distance from bottom, in Z ~> m. real :: I_rho0 ! 1 / RHO0, (m3/kg) - real :: Kd_add ! diffusivity to add in a layer (Z2/sec) + real :: Kd_add ! diffusivity to add in a layer, in Z2 s-1 ~> m2 s-1. real :: TKE_itide_lay ! internal tide TKE imparted to a layer (from barotropic) (m3/s3) real :: TKE_Niku_lay ! lee-wave TKE imparted to a layer (m3/s3) real :: TKE_lowmode_lay ! internal tide TKE imparted to a layer (from low mode) (m3/s3) (BDM) real :: frac_used ! fraction of TKE that can be used in a layer (nondim) - real :: Izeta ! inverse of TKE decay scale (1/Z) - real :: Izeta_lee ! inverse of TKE decay scale for lee waves (1/Z) - real :: z0_psl ! temporary variable with units of Z + real :: Izeta ! inverse of TKE decay scale, in Z-1 ~> m-1. + real :: Izeta_lee ! inverse of TKE decay scale for lee waves, in Z-1 ~> m-1. + real :: z0_psl ! temporary variable with units of Z ~> m. real :: TKE_lowmode_tot ! TKE from all low modes (W/m2) (BDM) logical :: use_Polzin, use_Simmons diff --git a/src/parameterizations/vertical/MOM_vert_friction.F90 b/src/parameterizations/vertical/MOM_vert_friction.F90 index 3bcc287058..d956df2f59 100644 --- a/src/parameterizations/vertical/MOM_vert_friction.F90 +++ b/src/parameterizations/vertical/MOM_vert_friction.F90 @@ -61,11 +61,11 @@ module MOM_vert_friction type(time_type) :: rampStartTime !< The time at which the ramping of CFL_trunc starts real ALLOCABLE_, dimension(NIMEMB_PTR_,NJMEM_,NK_INTERFACE_) :: & - a_u !< The u-drag coefficient across an interface, in Z s-1. + a_u !< The u-drag coefficient across an interface, in Z s-1 ~> m s-1. real ALLOCABLE_, dimension(NIMEMB_PTR_,NJMEM_,NKMEM_) :: & h_u !< The effective layer thickness at u-points, m or kg m-2. real ALLOCABLE_, dimension(NIMEM_,NJMEMB_PTR_,NK_INTERFACE_) :: & - a_v !< The v-drag coefficient across an interface, in Z s-1. + a_v !< The v-drag coefficient across an interface, in Z s-1 ~> m s-1. real ALLOCABLE_, dimension(NIMEM_,NJMEMB_PTR_,NKMEM_) :: & h_v !< The effective layer thickness at v-points, m or kg m-2. real, pointer, dimension(:,:) :: a1_shelf_u => NULL() !< The u-momentum coupling coefficient under @@ -174,7 +174,7 @@ subroutine vertvisc(u, v, h, forces, visc, dt, OBC, ADp, CDp, G, GV, US, CS, & real :: c1(SZIB_(G),SZK_(G)) ! tridiagonal solver. c1 is nondimensional, ! while b1 has units of inverse thickness. real :: d1(SZIB_(G)) ! d1=1-c1 is used by the tridiagonal solver, ND. - real :: Ray(SZIB_(G),SZK_(G)) ! Ray is the Rayleigh-drag velocity in Z s-1 + real :: Ray(SZIB_(G),SZK_(G)) ! Ray is the Rayleigh-drag velocity, in Z s-1 ~> m s-1. real :: b_denom_1 ! The first term in the denominator of b1, in H. real :: Hmix ! The mixed layer thickness over which stress @@ -595,14 +595,14 @@ subroutine vertvisc_coef(u, v, h, forces, visc, dt, G, GV, US, CS, OBC) hvel, & ! hvel is the thickness used at a velocity grid point, in H. hvel_shelf ! The equivalent of hvel under shelves, in H. real, dimension(SZIB_(G),SZK_(G)+1) :: & - a_cpl, & ! The drag coefficients across interfaces, in Z s-1. a_cpl times + a_cpl, & ! The drag coefficients across interfaces, in Z s-1 ~> m s-1. a_cpl times ! the velocity difference gives the stress across an interface. a_shelf, & ! The drag coefficients across interfaces in water columns under - ! ice shelves, in Z s-1. + ! ice shelves, in Z s-1 ~> m s-1. z_i ! An estimate of each interface's height above the bottom, ! normalized by the bottom boundary layer thickness, nondim. real, dimension(SZIB_(G)) :: & - kv_bbl, & ! The bottom boundary layer viscosity in Z2 s-1. + kv_bbl, & ! The bottom boundary layer viscosity in Z2 s-1 ~> m2 s-1. bbl_thick, & ! The bottom boundary layer thickness in m or kg m-2. I_Hbbl, & ! The inverse of the bottom boundary layer thickness, in units ! of H-1 (i.e., m-1 or m2 kg-1). @@ -1042,7 +1042,7 @@ subroutine find_coupling_coef(a_cpl, hvel, do_i, h_harm, bbl_thick, kv_bbl, z_i, type(verticalGrid_type), intent(in) :: GV !< Ocean vertical grid structure type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type real, dimension(SZIB_(G),SZK_(GV)+1), & - intent(out) :: a_cpl !< Coupling coefficient across interfaces, in Z s-1 + intent(out) :: a_cpl !< Coupling coefficient across interfaces, in Z s-1 ~> m s-1. real, dimension(SZIB_(G),SZK_(GV)), & intent(in) :: hvel !< Thickness at velocity points, in H logical, dimension(SZIB_(G)), & @@ -1051,7 +1051,7 @@ subroutine find_coupling_coef(a_cpl, hvel, do_i, h_harm, bbl_thick, kv_bbl, z_i, intent(in) :: h_harm !< Harmonic mean of thicknesses around a velocity !! grid point, in H real, dimension(SZIB_(G)), intent(in) :: bbl_thick !< Bottom boundary layer thickness, in H - real, dimension(SZIB_(G)), intent(in) :: kv_bbl !< Bottom boundary layer viscosity, in Z2 s-1 + real, dimension(SZIB_(G)), intent(in) :: kv_bbl !< Bottom boundary layer viscosity, in Z2 s-1 ~> m2 s-1. real, dimension(SZIB_(G),SZK_(GV)+1), & intent(in) :: z_i !< Estimate of interface heights above the bottom, !! normalized by the bottom boundary layer thickness @@ -1070,23 +1070,23 @@ subroutine find_coupling_coef(a_cpl, hvel, do_i, h_harm, bbl_thick, kv_bbl, z_i, ! Local variables real, dimension(SZIB_(G)) :: & - u_star, & ! ustar at a velocity point, in Z s-1. + u_star, & ! ustar at a velocity point, in Z s-1 ~> m s-1. absf, & ! The average of the neighboring absolute values of f, in s-1. ! h_ml, & ! The mixed layer depth, in m or kg m-2. nk_visc, & ! The (real) interface index of the base of mixed layer. z_t, & ! The distance from the top, sometimes normalized ! by Hmix, in H or nondimensional. - kv_tbl, & ! The viscosity in a top boundary layer under ice, in Z2 s-1. + kv_tbl, & ! The viscosity in a top boundary layer under ice, in Z2 s-1 ~> m2 s-1. tbl_thick real, dimension(SZIB_(G),SZK_(GV)) :: & - Kv_add ! A viscosity to add, in Z2 s-1. + Kv_add ! A viscosity to add, in Z2 s-1 ~> m2 s-1. real :: h_shear ! The distance over which shears occur, H. real :: r ! A thickness to compare with Hbbl, in H. - real :: visc_ml ! The mixed layer viscosity, in Z2 s-1. + real :: visc_ml ! The mixed layer viscosity, in Z2 s-1 ~> m2 s-1. real :: I_Hmix ! The inverse of the mixed layer thickness, in H-1. real :: a_ml ! The layer coupling coefficient across an interface in ! the mixed layer, in m s-1. - real :: I_amax ! The inverse of the maximum coupling coefficient, in Z-1.??? + real :: I_amax ! The inverse of the maximum coupling coefficient, in Z-1 ~> m-1.??? real :: temp1 ! A temporary variable in H Z real :: h_neglect ! A thickness that is so small it is usually lost ! in roundoff and can be neglected, in H. diff --git a/src/tracer/DOME_tracer.F90 b/src/tracer/DOME_tracer.F90 index 795d49694b..6278561a3d 100644 --- a/src/tracer/DOME_tracer.F90 +++ b/src/tracer/DOME_tracer.F90 @@ -172,7 +172,7 @@ subroutine initialize_DOME_tracer(restart, day, G, GV, US, h, diag, OBC, CS, & real :: dist2 ! The distance squared from a line, in m2. real :: h_neglect ! A thickness that is so small it is usually lost ! in roundoff and can be neglected, in H. - real :: e(SZK_(G)+1), e_top, e_bot ! Heights in Z. + real :: e(SZK_(G)+1), e_top, e_bot ! Heights in Z ~> m. real :: d_tr ! A change in tracer concentraions, in tracer units. integer :: i, j, k, is, ie, js, je, isd, ied, jsd, jed, nz, m integer :: IsdB, IedB, JsdB, JedB diff --git a/src/tracer/MOM_tracer_Z_init.F90 b/src/tracer/MOM_tracer_Z_init.F90 index d78821cd46..b065915312 100644 --- a/src/tracer/MOM_tracer_Z_init.F90 +++ b/src/tracer/MOM_tracer_Z_init.F90 @@ -49,7 +49,7 @@ function tracer_Z_init(tr, h, filename, tr_name, G, US, missing_val, land_val) tr_in ! The z-space array of tracer concentrations that is read in. real, allocatable, dimension(:) :: & z_edges, & ! The depths of the cell edges or cell centers (depending on - ! the value of has_edges) in the input z* data, in depth units (Z). + ! the value of has_edges) in the input z* data, in Z ~> m. tr_1d, & ! A copy of the input tracer concentrations in a column. wt, & ! The fractional weight for each layer in the range between ! k_top and k_bot, nondim. @@ -57,7 +57,7 @@ function tracer_Z_init(tr, h, filename, tr_name, G, US, missing_val, land_val) z2 ! of a z-cell that contributes to a layer, relative to the cell ! center and normalized by the cell thickness, nondim. ! Note that -1/2 <= z1 <= z2 <= 1/2. - real :: e(SZK_(G)+1) ! The z-star interface heights in Z. + real :: e(SZK_(G)+1) ! The z-star interface heights in Z ~> m. real :: landval ! The tracer value to use in land points. real :: sl_tr ! The normalized slope of the tracer ! within the cell, in tracer units. diff --git a/src/tracer/dye_example.F90 b/src/tracer/dye_example.F90 index 1416fb9655..348e2a822f 100644 --- a/src/tracer/dye_example.F90 +++ b/src/tracer/dye_example.F90 @@ -42,8 +42,8 @@ module regional_dyes real, allocatable, dimension(:) :: dye_source_maxlon !< Maximum longitude of region dye will be injected. real, allocatable, dimension(:) :: dye_source_minlat !< Minimum latitude of region dye will be injected. real, allocatable, dimension(:) :: dye_source_maxlat !< Maximum latitude of region dye will be injected. - real, allocatable, dimension(:) :: dye_source_mindepth !< Minimum depth of region dye will be injected, in Z. - real, allocatable, dimension(:) :: dye_source_maxdepth !< Maximum depth of region dye will be injected, in Z. + real, allocatable, dimension(:) :: dye_source_mindepth !< Minimum depth of region dye will be injected, in Z ~> m. + real, allocatable, dimension(:) :: dye_source_maxdepth !< Maximum depth of region dye will be injected, in Z ~> m. type(tracer_registry_type), pointer :: tr_Reg => NULL() !< A pointer to the tracer registry real, pointer :: tr(:,:,:,:) => NULL() !< The array of tracers used in this subroutine, in g m-3? diff --git a/src/user/BFB_initialization.F90 b/src/user/BFB_initialization.F90 index 7c16ade9b5..abf0d9fe53 100644 --- a/src/user/BFB_initialization.F90 +++ b/src/user/BFB_initialization.F90 @@ -33,7 +33,7 @@ module BFB_initialization subroutine BFB_set_coord(Rlay, g_prime, GV, param_file, eqn_of_state) real, dimension(NKMEM_), intent(out) :: Rlay !< Layer potential density. real, dimension(NKMEM_), intent(out) :: g_prime !< The reduced gravity at - !! each interface, in m2 Z-1 s-2. + !! each interface, in m2 Z-1 s-2 ~> m s-2. type(verticalGrid_type), intent(in) :: GV !< The ocean's vertical grid structure type(param_file_type), intent(in) :: param_file !< A structure to parse for run-time parameters type(EOS_type), pointer :: eqn_of_state !< Integer that selects the @@ -84,10 +84,10 @@ subroutine BFB_initialize_sponges_southonly(G, GV, US, use_temperature, tv, para intent(in) :: h !< Layer thicknesses, in H (usually m or kg m-2) ! Local variables - real :: eta(SZI_(G),SZJ_(G),SZK_(G)+1) ! A temporary array for eta, in depth units (Z). + real :: eta(SZI_(G),SZJ_(G),SZK_(G)+1) ! A temporary array for eta, in depth units (Z ~> m). real :: Idamp(SZI_(G),SZJ_(G)) ! The inverse damping rate, in s-1. - real :: H0(SZK_(G)) ! Resting layer thickesses in depth units (Z). - real :: min_depth ! The minimum ocean depth in depth units (Z). + real :: H0(SZK_(G)) ! Resting layer thickesses in depth units (Z ~> m). + real :: min_depth ! The minimum ocean depth in depth units (Z ~> m). real :: damp, e_dense, damp_new, slat, wlon, lenlat, lenlon, nlat character(len=40) :: mdl = "BFB_initialize_sponges_southonly" ! This subroutine's name. integer :: i, j, k, is, ie, js, je, isd, ied, jsd, jed, nz diff --git a/src/user/DOME2d_initialization.F90 b/src/user/DOME2d_initialization.F90 index f20e4466bd..af1666fabd 100644 --- a/src/user/DOME2d_initialization.F90 +++ b/src/user/DOME2d_initialization.F90 @@ -97,10 +97,10 @@ subroutine DOME2d_initialize_thickness ( h, G, GV, US, param_file, just_read_par !! only read parameters without changing h. ! Local variables - real :: e0(SZK_(GV)) ! The resting interface heights, in depth units (Z), usually + real :: e0(SZK_(GV)) ! The resting interface heights, in depth units (Z ~> m), usually ! negative because it is positive upward. real :: eta1D(SZK_(GV)+1)! Interface height relative to the sea surface - ! positive upward, in depth units (Z). + ! positive upward, in depth units (Z ~> m). integer :: i, j, k, is, ie, js, je, nz real :: x real :: delta_h @@ -365,11 +365,11 @@ subroutine DOME2d_initialize_sponges(G, GV, tv, param_file, use_ALE, CSp, ACSp) real :: Idamp(SZI_(G),SZJ_(G)) ! The inverse damping rate, in s-1. real :: S_ref, T_ref ! Reference salinity and temerature within surface layer real :: S_range, T_range ! Range of salinities and temperatures over the vertical - real :: e0(SZK_(G)+1) ! The resting interface heights, in depth units (Z), + real :: e0(SZK_(G)+1) ! The resting interface heights, in Z ~> m, ! usually negative because it is positive upward. real :: eta1D(SZK_(G)+1) ! Interface height relative to the sea surface - ! positive upward, in Z. - real :: d_eta(SZK_(G)) ! The layer thickness in a column, in Z. + ! positive upward, in Z ~> m. + real :: d_eta(SZK_(G)) ! The layer thickness in a column, in Z ~> m. real :: dome2d_width_bay, dome2d_width_bottom, dome2d_depth_bay real :: dome2d_west_sponge_time_scale, dome2d_east_sponge_time_scale real :: dome2d_west_sponge_width, dome2d_east_sponge_width diff --git a/src/user/DOME_initialization.F90 b/src/user/DOME_initialization.F90 index 101e52eb30..80fac3a4f0 100644 --- a/src/user/DOME_initialization.F90 +++ b/src/user/DOME_initialization.F90 @@ -42,7 +42,7 @@ subroutine DOME_initialize_topography(D, G, param_file, max_depth, US) ! Local variables real :: m_to_Z ! A dimensional rescaling factor. - real :: min_depth ! The minimum and maximum depths in Z. + real :: min_depth ! The minimum and maximum depths in Z ~> m. ! This include declares and sets the variable "version". # include "version_variable.h" character(len=40) :: mdl = "DOME_initialize_topography" ! This subroutine's name. @@ -93,9 +93,9 @@ subroutine DOME_initialize_thickness(h, G, GV, param_file, just_read_params) !! only read parameters without changing h. real :: e0(SZK_(GV)+1) ! The resting interface heights, in m, usually - ! negative because it is positive upward, in depth units (Z). + ! negative because it is positive upward, in Z ~> m. real :: eta1D(SZK_(GV)+1) ! Interface height relative to the sea surface - ! positive upward, in depth units (Z). + ! positive upward, in Z ~> m. logical :: just_read ! If true, just read parameters but set nothing. character(len=40) :: mdl = "DOME_initialize_thickness" ! This subroutine's name. integer :: i, j, k, is, ie, js, je, nz @@ -156,7 +156,7 @@ subroutine DOME_initialize_sponges(G, GV, US, tv, PF, CSp) real :: temp(SZI_(G),SZJ_(G),SZK_(G)) ! A temporary array for other variables. ! real :: Idamp(SZI_(G),SZJ_(G)) ! The inverse damping rate, in s-1. - real :: H0(SZK_(G)) ! Interface heights in depth units (Z) + real :: H0(SZK_(G)) ! Interface heights in Z ~> m. real :: min_depth real :: damp, e_dense, damp_new character(len=40) :: mdl = "DOME_initialize_sponges" ! This subroutine's name. @@ -260,9 +260,9 @@ subroutine DOME_set_OBC_data(OBC, tv, G, GV, US, param_file, tr_Reg) real :: rho_guess(SZK_(G)) ! Potential density at T0 & S0 in kg m-3. ! The following variables are used to set up the transport in the DOME example. real :: tr_0, y1, y2, tr_k, rst, rsb, rc, v_k, lon_im1 - real :: D_edge ! The thickness in Z of the dense fluid at the + real :: D_edge ! The thickness, in Z ~> m, of the dense fluid at the ! inner edge of the inflow. - real :: g_prime_tot ! The reduced gravity across all layers, m2 Z-1 s-2. + real :: g_prime_tot ! The reduced gravity across all layers, in m2 Z-1 s-2 ~> m s-2. real :: Def_Rad ! The deformation radius, based on fluid of ! thickness D_edge, in the same units as lat. real :: Ri_trans ! The shear Richardson number in the transition diff --git a/src/user/ISOMIP_initialization.F90 b/src/user/ISOMIP_initialization.F90 index 6a3bf8007e..d8f1ab0935 100644 --- a/src/user/ISOMIP_initialization.F90 +++ b/src/user/ISOMIP_initialization.F90 @@ -45,17 +45,17 @@ subroutine ISOMIP_initialize_topography(D, G, param_file, max_depth, US) type(unit_scale_type), optional, intent(in) :: US !< A dimensional unit scaling type ! Local variables - real :: min_depth ! The minimum and maximum depths in Z. + real :: min_depth ! The minimum and maximum depths in Z ~> m. real :: m_to_Z ! A dimensional rescaling factor. ! The following variables are used to set up the bathymetry in the ISOMIP example. real :: bmax ! max depth of bedrock topography real :: b0,b2,b4,b6 ! first, second, third and fourth bedrock topography coeff real :: xbar ! characteristic along-flow lenght scale of the bedrock - real :: dc ! depth of the trough compared with side walls in Z + real :: dc ! depth of the trough compared with side walls in Z ~> m. real :: fc ! characteristic width of the side walls of the channel real :: wc ! half-width of the trough real :: ly ! domain width (across ice flow) - real :: bx, by ! dummy vatiables in Z + real :: bx, by ! dummy vatiables in Z ~> m. real :: xtil ! dummy vatiable logical :: is_2D ! If true, use 2D setup ! This include declares and sets the variable "version". @@ -139,10 +139,10 @@ subroutine ISOMIP_initialize_thickness ( h, G, GV, US, param_file, tv, just_read logical, optional, intent(in) :: just_read_params !< If present and true, this call will !! only read parameters without changing h. ! Local variables - real :: e0(SZK_(G)+1) ! The resting interface heights, in depth units (Z), + real :: e0(SZK_(G)+1) ! The resting interface heights, in depth units (Z ~> m), ! usually negative because it is positive upward. real :: eta1D(SZK_(G)+1)! Interface height relative to the sea surface - ! positive upward, in depth units (Z). + ! positive upward, in depth units (Z ~> m). integer :: i, j, k, is, ie, js, je, nz, tmp1 real :: x real :: rho_range @@ -257,7 +257,7 @@ subroutine ISOMIP_initialize_temperature_salinity ( T, S, h, G, GV, param_file, ! Local variables integer :: i, j, k, is, ie, js, je, nz, itt real :: x, ds, dt, rho_sur, rho_bot - real :: xi0, xi1 ! Heights in depth units (Z). + real :: xi0, xi1 ! Heights in depth units (Z ~> m). real :: S_sur, T_sur, S_bot, T_bot real :: dT_dz, dS_dz ! Gradients of T and S in degC/Z and PPT/Z. real :: z ! vertical position in z space @@ -436,10 +436,10 @@ subroutine ISOMIP_initialize_sponges(G, GV, US, tv, PF, use_ALE, CSp, ACSp) real :: rho_sur, rho_bot, rho_range real :: dT_dz, dS_dz ! Gradients of T and S in degC/Z and PPT/Z. - real :: e0(SZK_(G)+1) ! The resting interface heights, in Z, usually + real :: e0(SZK_(G)+1) ! The resting interface heights, in Z ~> m, usually ! negative because it is positive upward. - real :: eta1D(SZK_(G)+1) ! Interface height relative to the sea surface, positive upward, in Z. - real :: eta(SZI_(G),SZJ_(G),SZK_(G)+1) ! A temporary array for eta, in Z. + real :: eta1D(SZK_(G)+1) ! Interface height relative to the sea surface, positive upward, in Z ~> m. + real :: eta(SZI_(G),SZJ_(G),SZK_(G)+1) ! A temporary array for eta, in Z ~> m. real :: min_depth, dummy1, z real :: damp, rho_dummy, min_thickness, rho_tmp, xi0 character(len=40) :: verticalCoordinate, filename, state_file diff --git a/src/user/Kelvin_initialization.F90 b/src/user/Kelvin_initialization.F90 index 1fd9edb3ea..33ce7d383a 100644 --- a/src/user/Kelvin_initialization.F90 +++ b/src/user/Kelvin_initialization.F90 @@ -121,7 +121,7 @@ subroutine Kelvin_initialize_topography(D, G, param_file, max_depth, US) ! Local variables character(len=40) :: mdl = "Kelvin_initialize_topography" ! This subroutine's name. real :: m_to_Z ! A dimensional rescaling factor. - real :: min_depth ! The minimum and maximum depths in Z. + real :: min_depth ! The minimum and maximum depths in Z ~> m. real :: PI ! 3.1415... real :: coast_offset1, coast_offset2, coast_angle, right_angle integer :: i, j diff --git a/src/user/MOM_wave_interface.F90 b/src/user/MOM_wave_interface.F90 index f9934615dc..9a98d55b21 100644 --- a/src/user/MOM_wave_interface.F90 +++ b/src/user/MOM_wave_interface.F90 @@ -102,7 +102,7 @@ module MOM_wave_interface !! Horizontal -> V points !! 3rd dimension -> Freq/Wavenumber real, allocatable, dimension(:,:,:), public :: & - KvS !< Viscosity for Stokes Drift shear (Z2/s) + KvS !< Viscosity for Stokes Drift shear (Z2/s ~> m2 s-1) ! Pointers to auxiliary fields type(time_type), pointer, public :: Time !< A pointer to the ocean model's clock. @@ -469,7 +469,7 @@ subroutine Update_Stokes_Drift(G, GV, US, CS, h, ustar) real, dimension(SZI_(G),SZJ_(G),SZK_(G)), & intent(in) :: h !< Thickness (m or kg/m2) real, dimension(SZI_(G),SZJ_(G)), & - intent(in) :: ustar !< Wind friction velocity (Z/s) + intent(in) :: ustar !< Wind friction velocity, in Z s-1 ~> m s-1. ! Local Variables real :: Top, MidPoint, Bottom, one_cm real :: DecayScale @@ -864,8 +864,8 @@ subroutine get_Langmuir_Number( LA, G, GV, US, HBL, ustar, i, j, & type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type integer, intent(in) :: i !< Meridional index of h-point integer, intent(in) :: j !< Zonal index of h-point - real, intent(in) :: ustar !< Friction velocity (Z/s) - real, intent(in) :: HBL !< (Positive) thickness of boundary layer (Z) + real, intent(in) :: ustar !< Friction velocity, in Z s-1 ~> m s-1. + real, intent(in) :: HBL !< (Positive) thickness of boundary layer, in Z ~> m. logical, optional, intent(in) :: Override_MA !< Override to use misalignment in LA !! calculation. This can be used if diagnostic !! LA outputs are desired that are different than @@ -977,8 +977,8 @@ end subroutine get_Langmuir_Number !! - BGR remove u10 input !! - BGR note: fixed parameter values should be changed to "get_params" subroutine get_StokesSL_LiFoxKemper(ustar, hbl, GV, US, UStokes_SL, LA) - real, intent(in) :: ustar !< water-side surface friction velocity (Z/s) - real, intent(in) :: hbl !< boundary layer depth (Z) + real, intent(in) :: ustar !< water-side surface friction velocity, in Z s-1 ~> m s-1. + real, intent(in) :: hbl !< boundary layer depth, in Z ~> m. type(verticalGrid_type), intent(in) :: GV !< Ocean vertical grid structure type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type real, intent(out) :: UStokes_SL !< Surface layer averaged Stokes drift (m/s) @@ -1058,7 +1058,7 @@ end subroutine Get_StokesSL_LiFoxKemper subroutine Get_SL_Average_Prof( GV, AvgDepth, H, Profile, Average ) type(verticalGrid_type), & intent(in) :: GV !< Ocean vertical grid structure - real, intent(in) :: AvgDepth !< Depth to average over (Z) + real, intent(in) :: AvgDepth !< Depth to average over, in Z ~> m. real, dimension(SZK_(GV)), & intent(in) :: H !< Grid thickness (H) real, dimension(SZK_(GV)), & @@ -1067,7 +1067,7 @@ subroutine Get_SL_Average_Prof( GV, AvgDepth, H, Profile, Average ) real, intent(out) :: Average !< Output quantity averaged over depth AvgDepth !! (used here for Stokes drift, m/s) !Local variables - real :: top, midpoint, bottom ! Depths in Z + real :: top, midpoint, bottom ! Depths in Z ~> m. real :: Sum integer :: kk @@ -1097,7 +1097,7 @@ end subroutine Get_SL_Average_Prof subroutine Get_SL_Average_Band( GV, AvgDepth, NB, WaveNumbers, SurfStokes, Average ) type(verticalGrid_type), & intent(in) :: GV !< Ocean vertical grid - real, intent(in) :: AvgDepth !< Depth to average over (Z) + real, intent(in) :: AvgDepth !< Depth to average over, in Z ~> m. integer, intent(in) :: NB !< Number of bands used real, dimension(NB), & intent(in) :: WaveNumbers !< Wavenumber corresponding to each band (1/Z) @@ -1130,7 +1130,7 @@ end subroutine Get_SL_Average_Band subroutine DHH85_mid(GV, US, zpt, UStokes) type(verticalGrid_type), intent(in) :: GV !< Ocean vertical grid type(unit_scale_type), intent(in) :: US !< A dimensional unit scaling type - real, intent(in) :: ZPT !< Depth to get Stokes drift (Z) !### THIS IS NOT USED YET. + real, intent(in) :: ZPT !< Depth to get Stokes drift, in Z ~> m. !### THIS IS NOT USED YET. real, intent(out) :: UStokes !< Stokes drift (m/s) ! real :: ann, Bnn, Snn, Cnn, Dnn @@ -1197,7 +1197,7 @@ subroutine StokesMixing(G, GV, DT, h, u, v, Waves ) pointer :: Waves !< Surface wave related control structure. ! Local variables real :: dTauUp, dTauDn - real :: h_Lay ! The layer thickness at a velocity point, in Z. + real :: h_Lay ! The layer thickness at a velocity point, in Z ~> m. integer :: i,j,k ! This is a template to think about down-Stokes mixing. diff --git a/src/user/Neverland_initialization.F90 b/src/user/Neverland_initialization.F90 index 131b77ab31..cd3fc19c32 100644 --- a/src/user/Neverland_initialization.F90 +++ b/src/user/Neverland_initialization.F90 @@ -119,10 +119,10 @@ subroutine Neverland_initialize_thickness(h, G, GV, US, param_file, eqn_of_state real, intent(in) :: P_Ref !< The coordinate-density !! reference pressure in Pa. ! Local variables - real :: e0(SZK_(G)+1) ! The resting interface heights, in depth units (Z), + real :: e0(SZK_(G)+1) ! The resting interface heights, in depth units (Z ~> m), ! usually negative because it is positive upward. - real, dimension(SZK_(G)) :: h_profile ! Vector of initial thickness profile (Z) - real :: e_interface ! Current interface position (m) + real, dimension(SZK_(G)) :: h_profile ! Vector of initial thickness profile, in Z ~> m. + real :: e_interface ! Current interface position, in Z ~> m. real :: x,y,r1,r2 ! x,y and radial coordinates for computation of initial pert. real :: pert_amp ! Amplitude of perturbations measured in Angstrom_H real :: h_noise ! Amplitude of noise to scale h by @@ -157,7 +157,8 @@ subroutine Neverland_initialize_thickness(h, G, GV, US, param_file, eqn_of_state y=(G%geoLatT(i,j)-G%south_lat)/G%len_lat r1=sqrt((x-0.7)**2+(y-0.2)**2) r2=sqrt((x-0.3)**2+(y-0.25)**2) - h(i,j,k) = h(i,j,k) + pert_amp*(e0(k) - e0(nz+1))*GV%Z_to_H*(spike(r1,0.15)-spike(r2,0.15)) ! Prescribed perturbation + h(i,j,k) = h(i,j,k) + pert_amp * (e0(k) - e0(nz+1)) * GV%Z_to_H * & + (spike(r1,0.15)-spike(r2,0.15)) ! Prescribed perturbation if (h_noise /= 0.) then rns = initializeRandomNumberStream( int( 4096*(x + (y+1.)) ) ) call getRandomNumbers(rns, noise) ! x will be in (0,1) diff --git a/src/user/Phillips_initialization.F90 b/src/user/Phillips_initialization.F90 index 1e513460b5..d8bad8bd4d 100644 --- a/src/user/Phillips_initialization.F90 +++ b/src/user/Phillips_initialization.F90 @@ -41,10 +41,10 @@ subroutine Phillips_initialize_thickness(h, G, GV, US, param_file, just_read_par logical, optional, intent(in) :: just_read_params !< If present and true, this call will !! only read parameters without changing h. - real :: eta0(SZK_(G)+1) ! The 1-d nominal positions of the interfaces, in depth units (Z). - real :: eta_im(SZJ_(G),SZK_(G)+1) ! A temporary array for zonal-mean eta, in depth units (Z). + real :: eta0(SZK_(G)+1) ! The 1-d nominal positions of the interfaces, in Z ~> m. + real :: eta_im(SZJ_(G),SZK_(G)+1) ! A temporary array for zonal-mean eta, in Z ~> m. real :: eta1D(SZK_(G)+1) ! Interface height relative to the sea surface - ! positive upward, in in depth units (Z). + ! positive upward, in Z ~> m. real :: damp_rate, jet_width, jet_height, y_2 real :: half_strat, half_depth logical :: just_read ! If true, just read parameters but set nothing. @@ -207,17 +207,17 @@ subroutine Phillips_initialize_sponges(G, GV, US, tv, param_file, CSp, h) ! Local variables real :: eta0(SZK_(G)+1) ! The 1-d nominal positions of the interfaces. - real :: eta(SZI_(G),SZJ_(G),SZK_(G)+1) ! A temporary array for eta, in depth units (Z). + real :: eta(SZI_(G),SZJ_(G),SZK_(G)+1) ! A temporary array for eta, in Z ~> m. real :: temp(SZI_(G),SZJ_(G),SZK_(G)) ! A temporary array for other variables. real :: Idamp(SZI_(G),SZJ_(G)) ! The inverse damping rate, in s-1. - real :: eta_im(SZJ_(G),SZK_(G)+1) ! A temporary array for zonal-mean eta, in Z. + real :: eta_im(SZJ_(G),SZK_(G)+1) ! A temporary array for zonal-mean eta, in Z ~> m. real :: Idamp_im(SZJ_(G)) ! The inverse zonal-mean damping rate, in s-1. real :: damp_rate ! The inverse zonal-mean damping rate, in s-1. real :: jet_width ! The width of the zonal mean jet, in km. - real :: jet_height ! The interface height scale associated with the zonal-mean jet, in Z. + real :: jet_height ! The interface height scale associated with the zonal-mean jet, in Z ~> m. real :: y_2 ! The y-position relative to the channel center, in km. real :: half_strat ! The fractional depth where the straficiation is centered, ND. - real :: half_depth ! The depth where the stratification is centered, in Z. + real :: half_depth ! The depth where the stratification is centered, in Z ~> m. character(len=40) :: mdl = "Phillips_initialize_sponges" ! This subroutine's name. integer :: i, j, k, is, ie, js, je, isd, ied, jsd, jed, nz diff --git a/src/user/SCM_CVMix_tests.F90 b/src/user/SCM_CVMix_tests.F90 index 303dbb54ea..960bed6a1f 100644 --- a/src/user/SCM_CVMix_tests.F90 +++ b/src/user/SCM_CVMix_tests.F90 @@ -58,16 +58,16 @@ subroutine SCM_CVMix_tests_TS_init(T, S, h, G, GV, US, param_file, just_read_par logical, optional, intent(in) :: just_read_params !< If present and true, this call will !! only read parameters without changing h. ! Local variables - real :: UpperLayerTempMLD !< Upper layer Temp MLD thickness (Z) - real :: UpperLayerSaltMLD !< Upper layer Salt MLD thickness (Z) + real :: UpperLayerTempMLD !< Upper layer Temp MLD thickness, in Z ~> m. + real :: UpperLayerSaltMLD !< Upper layer Salt MLD thickness, in Z ~> m. real :: UpperLayerTemp !< Upper layer temperature (SST if thickness 0) (deg C) real :: UpperLayerSalt !< Upper layer salinity (SSS if thickness 0) (PPT) real :: LowerLayerTemp !< Temp at top of lower layer (deg C) real :: LowerLayerSalt !< Salt at top of lower layer (PPT) - real :: LowerLayerdTdz !< Temp gradient in lower layer (deg C / Z) - real :: LowerLayerdSdz !< Salt gradient in lower layer (PPT / Z) + real :: LowerLayerdTdz !< Temp gradient in lower layer, in degC / Z ~> degC m-1. + real :: LowerLayerdSdz !< Salt gradient in lower layer, in PPT / Z ~> PPT m-1. real :: LowerLayerMinTemp !< Minimum temperature in lower layer - real :: zC, DZ, top, bottom ! Depths and thicknesses in Z. + real :: zC, DZ, top, bottom ! Depths and thicknesses in Z ~> m. logical :: just_read ! If true, just read parameters but set nothing. integer :: i, j, k, is, ie, js, je, isd, ied, jsd, jed, nz diff --git a/src/user/adjustment_initialization.F90 b/src/user/adjustment_initialization.F90 index fbf1a0df97..8ba8916538 100644 --- a/src/user/adjustment_initialization.F90 +++ b/src/user/adjustment_initialization.F90 @@ -38,10 +38,10 @@ subroutine adjustment_initialize_thickness ( h, G, GV, US, param_file, just_read logical, optional, intent(in) :: just_read_params !< If present and true, this call will !! only read parameters without changing h. ! Local variables - real :: e0(SZK_(G)+1) ! The resting interface heights, in depth units (Z), usually + real :: e0(SZK_(G)+1) ! The resting interface heights, in depth units (Z ~> m), usually ! negative because it is positive upward. real :: eta1D(SZK_(G)+1)! Interface height relative to the sea surface - ! positive upward, in depth units (Z). + ! positive upward, in depth units (Z ~> m). real :: x, y, yy, delta_S_strat, dSdz, delta_S, S_ref real :: min_thickness, adjustment_width, adjustment_delta, adjustment_deltaS real :: front_wave_amp, front_wave_length, front_wave_asym diff --git a/src/user/baroclinic_zone_initialization.F90 b/src/user/baroclinic_zone_initialization.F90 index b9bab35f59..6c1f4d653b 100644 --- a/src/user/baroclinic_zone_initialization.F90 +++ b/src/user/baroclinic_zone_initialization.F90 @@ -86,7 +86,7 @@ subroutine baroclinic_zone_init_temperature_salinity(T, S, h, G, GV, US, param_f real :: T_ref, dTdz, dTdx, delta_T ! Parameters describing temperature distribution real :: S_ref, dSdz, dSdx, delta_S ! Parameters describing salinity distribution real :: L_zone ! Width of baroclinic zone - real :: zc, zi ! Depths in depth units (Z). + real :: zc, zi ! Depths in depth units (Z ~> m). real :: x, xd, xs, y, yd, fn real :: PI ! 3.1415926... calculated as 4*atan(1) logical :: just_read ! If true, just read parameters but set nothing. diff --git a/src/user/benchmark_initialization.F90 b/src/user/benchmark_initialization.F90 index 0a5589a0b6..25d0f6171c 100644 --- a/src/user/benchmark_initialization.F90 +++ b/src/user/benchmark_initialization.F90 @@ -35,7 +35,7 @@ subroutine benchmark_initialize_topography(D, G, param_file, max_depth, US) type(unit_scale_type), optional, intent(in) :: US !< A dimensional unit scaling type ! Local variables - real :: min_depth ! The minimum and maximum depths in Z. + real :: min_depth ! The minimum and maximum depths in Z ~> m. real :: PI ! 3.1415926... calculated as 4*atan(1) real :: D0 ! A constant to make the maximum ! ! basin depth MAXIMUM_DEPTH. ! @@ -93,19 +93,19 @@ subroutine benchmark_initialize_thickness(h, G, GV, US, param_file, eqn_of_state logical, optional, intent(in) :: just_read_params !< If present and true, this call will !! only read parameters without changing h. ! Local variables - real :: e0(SZK_(GV)+1) ! The resting interface heights, in depth units (Z), + real :: e0(SZK_(GV)+1) ! The resting interface heights, in depth units (Z ~> m), ! usually negative because it is positive upward. real :: e_pert(SZK_(GV)+1) ! Interface height perturbations, positive upward, - ! in depth units (Z). + ! in depth units (Z ~> m). real :: eta1D(SZK_(GV)+1) ! Interface height relative to the sea surface - ! positive upward, in depth units (Z). + ! positive upward, in depth units (Z ~> m). real :: SST ! The initial sea surface temperature, in deg C. real :: T_int ! The initial temperature of an interface, in deg C. - real :: ML_depth ! The specified initial mixed layer depth, in depth units (Z). - real :: thermocline_scale ! The e-folding scale of the thermocline, in depth units (Z). + real :: ML_depth ! The specified initial mixed layer depth, in depth units (Z ~> m). + real :: thermocline_scale ! The e-folding scale of the thermocline, in depth units (Z ~> m). real, dimension(SZK_(GV)) :: T0, pres, S0, rho_guess, drho, drho_dT, drho_dS real :: a_exp ! The fraction of the overall stratification that is exponential. - real :: I_ts, I_md ! Inverse lengthscales in Z-1. + real :: I_ts, I_md ! Inverse lengthscales in Z-1 ~> m-1. real :: T_frac ! A ratio of the interface temperature to the range ! between SST and the bottom temperature. real :: err, derr_dz ! The error between the profile's temperature and the diff --git a/src/user/circle_obcs_initialization.F90 b/src/user/circle_obcs_initialization.F90 index 7ba02a7acc..6cc6d922eb 100644 --- a/src/user/circle_obcs_initialization.F90 +++ b/src/user/circle_obcs_initialization.F90 @@ -33,10 +33,10 @@ subroutine circle_obcs_initialize_thickness(h, G, GV, param_file, just_read_para logical, optional, intent(in) :: just_read_params !< If present and true, this call will !! only read parameters without changing h. - real :: e0(SZK_(GV)+1) ! The resting interface heights, in depth units (Z), usually + real :: e0(SZK_(GV)+1) ! The resting interface heights, in depth units (Z ~> m), usually ! negative because it is positive upward. real :: eta1D(SZK_(GV)+1)! Interface height relative to the sea surface - ! positive upward, in in depth units (Z). + ! positive upward, in depth units (Z ~> m). real :: IC_amp ! The amplitude of the initial height displacement, in H. real :: diskrad, rad, xCenter, xRadius, lonC, latC, xOffset logical :: just_read diff --git a/src/user/dumbbell_initialization.F90 b/src/user/dumbbell_initialization.F90 index 02222c9865..3b6e6e105f 100644 --- a/src/user/dumbbell_initialization.F90 +++ b/src/user/dumbbell_initialization.F90 @@ -80,13 +80,13 @@ subroutine dumbbell_initialize_thickness ( h, G, GV, US, param_file, just_read_p logical, optional, intent(in) :: just_read_params !< If present and true, this call will !! only read parameters without changing h. - real :: e0(SZK_(G)+1) ! The resting interface heights, in depth units (Z), usually + real :: e0(SZK_(G)+1) ! The resting interface heights, in Z ~> m, usually ! negative because it is positive upward. real :: eta1D(SZK_(G)+1)! Interface height relative to the sea surface - ! positive upward, in depth units (Z). - real :: min_thickness ! The minimum layer thicknesses, in Z. + ! positive upward, in Z ~> m. + real :: min_thickness ! The minimum layer thicknesses, in Z ~> m. real :: S_surf, S_range, S_ref, S_light, S_dense ! Various salinities, in ppt. - real :: eta_IC_quanta ! The granularity of quantization of intial interface heights, in Z-1. + real :: eta_IC_quanta ! The granularity of quantization of intial interface heights, in Z-1 ~> m-1. ! This include declares and sets the variable "version". # include "version_variable.h" character(len=20) :: verticalCoordinate diff --git a/src/user/external_gwave_initialization.F90 b/src/user/external_gwave_initialization.F90 index 153ec00b42..552733861f 100644 --- a/src/user/external_gwave_initialization.F90 +++ b/src/user/external_gwave_initialization.F90 @@ -32,7 +32,7 @@ subroutine external_gwave_initialize_thickness(h, G, GV, US, param_file, just_re !! only read parameters without changing h. ! Local variables real :: eta1D(SZK_(G)+1)! Interface height relative to the sea surface - ! positive upward, in depth units (Z). + ! positive upward, in Z ~> m. real :: ssh_anomaly_height ! Vertical height of ssh anomaly real :: ssh_anomaly_width ! Lateral width of anomaly logical :: just_read ! If true, just read parameters but set nothing. diff --git a/src/user/seamount_initialization.F90 b/src/user/seamount_initialization.F90 index 8f1ed97b06..2172fa5efb 100644 --- a/src/user/seamount_initialization.F90 +++ b/src/user/seamount_initialization.F90 @@ -83,13 +83,13 @@ subroutine seamount_initialize_thickness ( h, G, GV, US, param_file, just_read_p logical, optional, intent(in) :: just_read_params !< If present and true, this call will !! only read parameters without changing h. - real :: e0(SZK_(G)+1) ! The resting interface heights, in depth units (Z), usually + real :: e0(SZK_(G)+1) ! The resting interface heights, in Z ~> m, usually ! negative because it is positive upward. real :: eta1D(SZK_(G)+1)! Interface height relative to the sea surface - ! positive upward, in depth units (Z). - real :: min_thickness ! The minimum layer thicknesses, in Z. + ! positive upward, in Z ~> m. + real :: min_thickness ! The minimum layer thicknesses, in Z ~> m. real :: S_surf, S_range, S_ref, S_light, S_dense ! Various salinities, in ppt. - real :: eta_IC_quanta ! The granularity of quantization of intial interface heights, in Z-1. + real :: eta_IC_quanta ! The granularity of quantization of intial interface heights, in Z-1 ~> m-1. character(len=20) :: verticalCoordinate logical :: just_read ! If true, just read parameters but set nothing. integer :: i, j, k, is, ie, js, je, nz diff --git a/src/user/user_change_diffusivity.F90 b/src/user/user_change_diffusivity.F90 index 4cef242cb1..34157e8e49 100644 --- a/src/user/user_change_diffusivity.F90 +++ b/src/user/user_change_diffusivity.F90 @@ -42,22 +42,22 @@ module user_change_diffusivity subroutine user_change_diff(h, tv, G, GV, CS, Kd_lay, Kd_int, T_f, S_f, Kd_int_add) type(ocean_grid_type), intent(in) :: G !< The ocean's grid structure. type(verticalGrid_type), intent(in) :: GV !< The ocean's vertical grid structure - real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(in) :: h !< Layer thickness, in Z (often m or kg m-2). + real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(in) :: h !< Layer thickness, in H (often m or kg m-2). type(thermo_var_ptrs), intent(in) :: tv !< A structure containing pointers !! to any available thermodynamic !! fields. Absent fields have NULL ptrs. type(user_change_diff_CS), pointer :: CS !< This module's control structure. real, dimension(SZI_(G),SZJ_(G),SZK_(G)), optional, intent(inout) :: Kd_lay !< The diapycnal diffusivity of - !! each layer in Z2 s-1. + !! each layer in Z2 s-1 ~> m2 s-1. real, dimension(SZI_(G),SZJ_(G),SZK_(G)+1), optional, intent(inout) :: Kd_int !< The diapycnal diffusivity - !! at each interface in Z2 s-1. + !! at each interface in Z2 s-1 ~> m2 s-1. real, dimension(SZI_(G),SZJ_(G),SZK_(G)), optional, intent(in) :: T_f !< Temperature with massless !! layers filled in vertically. real, dimension(SZI_(G),SZJ_(G),SZK_(G)), optional, intent(in) :: S_f !< Salinity with massless !! layers filled in vertically. real, dimension(:,:,:), optional, pointer :: Kd_int_add !< The diapycnal !! diffusivity that is being added at - !! each interface in Z2 s-1. + !! each interface in Z2 s-1 ~> m2 s-1. ! Local variables real :: Rcv(SZI_(G),SZK_(G)) ! The coordinate density in layers in kg m-3. real :: p_ref(SZI_(G)) ! An array of tv%P_Ref pressures. diff --git a/src/user/user_initialization.F90 b/src/user/user_initialization.F90 index c94613117a..a6a36d5dd6 100644 --- a/src/user/user_initialization.F90 +++ b/src/user/user_initialization.F90 @@ -37,7 +37,7 @@ subroutine USER_set_coord(Rlay, g_prime, GV, param_file, eqn_of_state) !! structure. real, dimension(:), intent(out) :: Rlay !< Layer potential density. real, dimension(:), intent(out) :: g_prime !< The reduced gravity at - !! each interface, in m2 Z-1 s-2. + !! each interface, in m2 Z-1 s-2 ~> m s-2. type(param_file_type), intent(in) :: param_file !< A structure indicating the !! open file to parse for model !! parameter values. @@ -240,9 +240,9 @@ end subroutine write_user_log !! - u - Zonal velocity in m s-1. !! - v - Meridional velocity in m s-1. !! - h - Layer thickness in H. (Must be positive.) -!! - G%bathyT - Basin depth in Z. (Must be positive.) +!! - G%bathyT - Basin depth in Z ~> m. (Must be positive.) !! - G%CoriolisBu - The Coriolis parameter, in s-1. -!! - GV%g_prime - The reduced gravity at each interface, in m2 Z-1 s-2. +!! - GV%g_prime - The reduced gravity at each interface, in m2 Z-1 s-2 ~> m s-2. !! - GV%Rlay - Layer potential density (coordinate variable), kg m-3. !! If ENABLE_THERMODYNAMICS is defined: !! - T - Temperature in C.