From e7de91ab653b37de1fd92cf3b3d9bb37905411ce Mon Sep 17 00:00:00 2001 From: Robert Hallberg Date: Thu, 31 Jan 2019 16:37:30 -0500 Subject: [PATCH] Documented 206 density variable units Changed comments to use the square bracket notation to document the units of about 206 variables, including numerous densities and masses per unit area. Only comments have been changed and all answers are bitwise identical. --- src/SIS2_ice_thm.F90 | 124 ++++++++++++++++---------------- src/SIS_dyn_bgrid.F90 | 10 +-- src/SIS_dyn_cgrid.F90 | 39 +++++----- src/SIS_dyn_trans.F90 | 12 ++-- src/SIS_fast_thermo.F90 | 16 ++--- src/SIS_optics.F90 | 10 +-- src/SIS_slow_thermo.F90 | 22 +++--- src/SIS_sum_output.F90 | 50 ++++++------- src/SIS_tracer_advect.F90 | 4 +- src/SIS_tracer_flow_control.F90 | 6 +- src/SIS_transport.F90 | 35 ++++----- src/SIS_types.F90 | 30 ++++---- src/ice_age_tracer.F90 | 6 +- src/ice_boundary_types.F90 | 11 ++- src/ice_model.F90 | 16 ++--- src/ice_shortwave_dEdd.F90 | 14 ++-- src/ice_type.F90 | 18 ++--- 17 files changed, 211 insertions(+), 212 deletions(-) diff --git a/src/SIS2_ice_thm.F90 b/src/SIS2_ice_thm.F90 index 68be3007..94eb7e50 100644 --- a/src/SIS2_ice_thm.F90 +++ b/src/SIS2_ice_thm.F90 @@ -28,9 +28,9 @@ module SIS2_ice_thm !! pockets within the ice, in J/(kg K). Cp_brine !! should be set equal to Cp_Water, but for !! algorithmic convenience can be set equal to Cp_ice. - real :: rho_ice !< The nominal density of ice in kg m-3. - real :: rho_snow !< The nominal density of snow in kg m-3. - real :: rho_water !< The nominal density of water in kg m-3. + real :: rho_ice !< The nominal density of ice [kg m-3]. + real :: rho_snow !< The nominal density of snow [kg m-3]. + real :: rho_water !< The nominal density of water [kg m-3]. real :: LI !< The latent heat of fusion, in J kg-1. real :: Lat_Vapor !< The latent heat of vaporization, in J kg-1. real :: dTf_dS !< The derivative of the freezing point with salinity, @@ -157,9 +157,9 @@ end subroutine SIS2_ice_thm_init subroutine ice_temp_SIS2(m_pond, m_snow, m_ice, enthalpy, sice, SF_0, dSF_dT, sol, tfw, fb, & tsurf, dtt, NkIce, tmelt, bmelt, CS, ITV, check_conserve) - real, intent(in ) :: m_pond !< pond mass per unit area (kg m-2) - real, intent(in ) :: m_snow !< snow mass per unit area (H, usually kg m-2) - real, intent(in ) :: m_ice !< ice mass per unit area (H, usually kg m-2) + real, intent(in ) :: m_pond !< pond mass per unit area [H ~> kg m-2] + real, intent(in ) :: m_snow !< snow mass per unit area [H ~> kg m-2] + real, intent(in ) :: m_ice !< ice mass per unit area [H ~> kg m-2] real, dimension(0:NkIce) , & intent(inout) :: enthalpy !< The enthalpy of each layer in a column of !! snow and ice, in enth_unit (J kg-1). @@ -174,8 +174,8 @@ subroutine ice_temp_SIS2(m_pond, m_snow, m_ice, enthalpy, sice, SF_0, dSF_dT, so real, intent( out) :: tsurf !< surface temperature [degC] real, intent(in ) :: dtt !< timestep (sec) integer, intent(in ) :: NkIce !< The number of ice layers. - real, intent(inout) :: tmelt !< accumulated top melting energy (J/m^2) - real, intent(inout) :: bmelt !< accumulated bottom melting energy (J/m^2) + real, intent(inout) :: tmelt !< accumulated top melting energy [J m-2] + real, intent(inout) :: bmelt !< accumulated bottom melting energy [J m-2] type(SIS2_ice_thm_CS), intent(in) :: CS !< The SIS2 ice thermodynamics control structure type(ice_thermo_type), intent(in) :: ITV !< The ice thermodynamic parameter structure. logical, optional, intent(in) :: check_conserve !< If true, check for local heat conservation. @@ -194,10 +194,10 @@ subroutine ice_temp_SIS2(m_pond, m_snow, m_ice, enthalpy, sice, SF_0, dSF_dT, so ! enthalpy [degC]. real, dimension(0:NkIce) :: temp_new ! The updated temperatures [degC]. real, dimension(NkIce) :: tfi ! The ice freezing temperatures [degC]. - real :: mL_ice ! The mass-per-unit-area of each ice layer in kg m-2 (not H). - real :: mL_snow ! The mass-per-unit-area of each snow layer in kg m-2 (not H). + real :: mL_ice ! The mass-per-unit-area of each ice layer [kg m-2] (not H). + real :: mL_snow ! The mass-per-unit-area of each snow layer [kg m-2] (not H). real :: e_extra - real, dimension(0:NkIce) :: m_lay ! Masses of all layers in kg m-2. + real, dimension(0:NkIce) :: m_lay ! Masses of all layers [kg m-2]. real :: enth_fp ! The enthalpy at the freezing point (solid for fresh ice). real :: kk ! The conductive thermal coupling coefficient between adjacent ! ice sublayers [W m-2 degC-1]. @@ -233,8 +233,8 @@ subroutine ice_temp_SIS2(m_pond, m_snow, m_ice, enthalpy, sice, SF_0, dSF_dT, so ! acting as a solid, and all extra heat goes into ! melting, in enth_units. real :: enth_prev - real :: rho_ice ! The nominal density of sea ice in kg m-3. - real :: rho_snow ! The nominal density of snow in kg m-3. + real :: rho_ice ! The nominal density of sea ice [kg m-3]. + real :: rho_snow ! The nominal density of snow [kg m-3]. real :: Cp_ice ! The heat capacity of ice [J kg-1 degC-1]. real :: Cp_brine ! The heat capacity of liquid water in the brine pockets, ! [J kg-1 degC-1]. @@ -538,9 +538,9 @@ end subroutine ice_temp_SIS2 subroutine estimate_tsurf(m_pond, m_snow, m_ice, enthalpy, sice, SF_0, dSF_dT, & sol, tfw, tsurf, dtt, NkIce, CS, ITV) - real, intent(in ) :: m_pond !< pond mass per unit area (kg m-2) - real, intent(in ) :: m_snow !< snow mass per unit area (H, usually kg m-2) - real, intent(in ) :: m_ice !< ice mass per unit area (H, usually kg m-2) + real, intent(in ) :: m_pond !< pond mass per unit area [H ~> kg m-2] + real, intent(in ) :: m_snow !< snow mass per unit area [H ~> kg m-2] + real, intent(in ) :: m_ice !< ice mass per unit area [H ~> kg m-2] real, dimension(0:NkIce) , & intent(in ) :: enthalpy !< The enthalpy of each layer in a column of !! snow and ice, in enth_unit (J kg-1). @@ -565,9 +565,9 @@ subroutine estimate_tsurf(m_pond, m_snow, m_ice, enthalpy, sice, SF_0, dSF_dT, & real, dimension(0:NkIce) :: temp_IC ! The temperatures of the snow and ice based on the initial ! enthalpy [degC]. real, dimension(NkIce) :: tfi ! The ice freezing temperatures [degC]. - real :: mL_ice ! The mass-per-unit-area of each ice layer in kg m-2 (not H). - real :: mL_snow ! The mass-per-unit-area of each snow layer in kg m-2 (not H). - real, dimension(0:NkIce) :: m_lay ! Masses of all layers in kg m-2. + real :: mL_ice ! The mass-per-unit-area of each ice layer [kg m-2] (not H). + real :: mL_snow ! The mass-per-unit-area of each snow layer [kg m-2] (not H). + real, dimension(0:NkIce) :: m_lay ! Masses of all layers [kg m-2]. real :: kk ! The conductive thermal coupling coefficient between adjacent ! ice sublayers [W m-2 degC-1]. real :: k10 ! The conductive thermal coupling coefficient between the @@ -587,8 +587,8 @@ subroutine estimate_tsurf(m_pond, m_snow, m_ice, enthalpy, sice, SF_0, dSF_dT, & real, dimension(0:NkIce) :: bb ! Effective layer heat capacities. real :: hsnow_eff ! The effective thickness of the snow layer, in m. real :: hL_ice_eff ! The effective thickness of each ice sub-layer, in m. - real :: rho_ice ! The nominal density of sea ice in kg m-3. - real :: rho_snow ! The nominal density of snow in kg m-3. + real :: rho_ice ! The nominal density of sea ice [kg m-3]. + real :: rho_snow ! The nominal density of snow [kg m-3]. real :: Cp_ice ! The heat capacity of ice [J kg-1 degC-1]. real :: Cp_brine ! The heat capacity of liquid water in the brine pockets, ! [J kg-1 degC-1]. @@ -859,9 +859,9 @@ end function laytemp_SIS2 !> update_lay_enth does an implicit calculation of new layer enthalpy subroutine update_lay_enth(m_lay, sice, enth, ftop, ht_body, fbot, dftop_dT, & dfbot_dT, dtt, hf_err_rat, ITV, extra_heat, temp_new, temp_max) - real, intent(in) :: m_lay !< This layers mass of ice in kg/m2 + real, intent(in) :: m_lay !< This layers mass of ice [kg m-2] real, intent(in) :: sice !< ice salinity in g/kg - real, intent(inout) :: enth !< ice enthalpy in enth_units (proportional to J kg-1). + real, intent(inout) :: enth !< ice enthalpy in enth_units [Enth ~> J kg-1]. real, intent(inout) :: ftop !< Downward heat flux atop the layer at T = 0 degC, or !! the prescribed heat flux if dftop_dT = 0 [W m-2]. real, intent(in) :: ht_body !< Body forcing to layer in W/m2 @@ -883,7 +883,7 @@ subroutine update_lay_enth(m_lay, sice, enth, ftop, ht_body, fbot, dftop_dT, & real :: max_enth ! The maximum new layer enthalpy [degC]. real :: fb ! The negative of the dependence of layer heating on ! temperature [W m-2 degC-1]. fb > 0. - real :: extra_enth ! Excess enthalpy above the melt point, in kg enth_units. + real :: extra_enth ! Excess enthalpy above the melt point [kg Enth ~> J]. real :: enth_in ! The initial enthalpy, in enth_units. real :: enth_fp ! The enthalpy at the freezing point, in enth_units. real :: AA, BB, CC ! Temporary variables used to solve a quadratic equation. @@ -909,7 +909,7 @@ subroutine update_lay_enth(m_lay, sice, enth, ftop, ht_body, fbot, dftop_dT, & ! [J kg-1 degC-1]. real :: Cp_water ! The heat capacity of liquid water in the ice model, ! but not in the brine pockets [J kg-1 degC-1]. - real :: LI ! The latent heat of fusion, in J kg-1. + real :: LI ! The latent heat of fusion [J kg-1]. real :: enth_unit ! A conversion factor for enthalpy from Joules kg-1. ! real :: Enth_liq_0 ! The enthalpy of liquid water at 0C. integer :: itt @@ -1113,8 +1113,8 @@ end subroutine update_lay_enth !! and writes messages about any offending columns. subroutine ice_check(ms, mi, enthalpy, s_ice, NkIce, msg_part, ITV, & bmelt, tmelt, t_sfc) - real, intent(in) :: ms !< The mass of snow in kg m-2 - real, intent(in) :: mi !< The mass of ice in kg m-2 + real, intent(in) :: ms !< The mass of snow [kg m-2] + real, intent(in) :: mi !< The mass of ice [kg m-2] real, dimension(0:NkIce), & intent(in) :: enthalpy !< The ice enthalpy, in enthalpy units (often J/kg) real, dimension(NkIce), intent(in) :: s_ice !< The ice bulk salinity in g/kg @@ -1172,9 +1172,9 @@ subroutine ice_resize_SIS2(a_ice, m_pond, m_lay, Enthalpy, Sice_therm, Salin, & enthalpy_evap, enthalpy_melt, enthalpy_freeze) ! mw/new - melt pond - added first two arguments & rain real, intent(in ) :: a_ice !< area of ice (1-open_water_frac) for pond retention - real, intent(inout) :: m_pond !< melt pond mass (kg/m2) + real, intent(inout) :: m_pond !< melt pond mass [kg m-2] real, dimension(0:NkIce), & - intent(inout) :: m_lay !< Snow and ice mass per unit area by layer in kg m-2. + intent(inout) :: m_lay !< Snow and ice mass per unit area by layer [kg m-2]. real, dimension(0:NkIce+1), & intent(inout) :: Enthalpy !< Snow, ice, and ocean enthalpy by layer in enth_units !! (which might be J/kg). @@ -1182,25 +1182,25 @@ subroutine ice_resize_SIS2(a_ice, m_pond, m_lay, Enthalpy, Sice_therm, Salin, & intent(in) :: Sice_therm !< ice salinity by layer, as used for thermodynamics (g/kg) real, dimension(NkIce+1), & intent(inout) :: Salin !< Conserved ice bulk salinity by layer (g/kg) - real, intent(in ) :: snow !< new snow (kg/m^2-snow) - real, intent(in ) :: rain !< rain for pond source (kg/m^2-rain) - not yet active - real, intent(in ) :: evap !< ice evaporation/sublimation (kg/m^2) - real, intent(in ) :: tmlt !< top melting energy (J/m^2) - real, intent(in ) :: bmlt !< bottom melting energy (J/m^2) + real, intent(in ) :: snow !< new snow [kg m-2] + real, intent(in ) :: rain !< rain for pond source [kg m-2] - not yet active + real, intent(in ) :: evap !< ice evaporation/sublimation [kg m-2] + real, intent(in ) :: tmlt !< top melting energy [J m-2] + real, intent(in ) :: bmlt !< bottom melting energy [J m-2] integer, intent(in) :: NkIce !< The number of ice layers. integer, intent(in) :: npassive !< Number of passive tracers real, dimension(0:NkIce+1,npassive), & intent(inout) :: TrLay !< Passive tracer slice - real, intent( out) :: heat_to_ocn !< energy left after ice all melted (J/m^2) - real, intent( out) :: h2o_ice_to_ocn !< liquid water flux to ocean (kg/m^2) - real, intent( out) :: h2o_ocn_to_ice !< liquid water flux from ocean (kg/m^2) - real, intent( out) :: evap_from_ocn!< evaporation flux from ocean (kg/m^2) + real, intent( out) :: heat_to_ocn !< energy left after ice all melted [J m-2] + real, intent( out) :: h2o_ice_to_ocn !< liquid water flux to ocean [kg m-2] + real, intent( out) :: h2o_ocn_to_ice !< liquid water flux from ocean [kg m-2] + real, intent( out) :: evap_from_ocn!< evaporation flux from ocean [kg m-2] real, intent( out) :: snow_to_ice !< snow below waterline becomes ice real, intent( out) :: salt_to_ice !< Net flux of salt to the ice, in g m-2. type(SIS2_ice_thm_CS), intent(in) :: CS !< The SIS2_ice_thm control structure. type(ice_thermo_type), intent(in) :: ITV !< The ice thermodynamic parameter structure. - real, intent( out) :: ablation !< The mass loss from bottom melt, in kg m-2. + real, intent( out) :: ablation !< The mass loss from bottom melt [kg m-2]. real, intent( out) :: enthalpy_evap !< The enthalpy loss due to the mass loss !! by evaporation / sublimation. real, intent( out) :: enthalpy_melt !< The enthalpy loss due to the mass loss @@ -1209,7 +1209,7 @@ subroutine ice_resize_SIS2(a_ice, m_pond, m_lay, Enthalpy, Sice_therm, Salin, & !! by freezing, in J m-2. real :: top_melt, bot_melt, melt_left ! Heating amounts, all in melt_unit. - real :: mtot_ice ! The summed ice mass in kg m-2. + real :: mtot_ice ! The summed ice mass [kg m-2]. real :: enth_freeze ! The enthalpy of newly formed congelation ice, in enth_unit. real, dimension(0:NkIce) :: enth_fr ! The snow and ice layers' freezing point ! enthalpy, in units of enth_unit. @@ -1217,18 +1217,18 @@ subroutine ice_resize_SIS2(a_ice, m_pond, m_lay, Enthalpy, Sice_therm, Salin, & ! freezing water, usually enough to account for ! the latent heat of fusion in a small fraction of ! the water, in Enth_unit kg-1 (perhaps J kg-1). - real :: m_freeze ! The newly formed ice from freezing, in kg m-2. - real :: M_melt ! The ice mass lost to melting, in kg m-2. - real :: evap_left ! The remaining evaporation, in kg m-2. - real :: evap_here ! The evaporation from the current layer, in kg m-2. - real :: m_submerged ! The submerged mass of ice, in kg m-2. + real :: m_freeze ! The newly formed ice from freezing [kg m-2]. + real :: M_melt ! The ice mass lost to melting [kg m-2]. + real :: evap_left ! The remaining evaporation [kg m-2]. + real :: evap_here ! The evaporation from the current layer [kg m-2]. + real :: m_submerged ! The submerged mass of ice [kg m-2]. real :: salin_freeze ! The salinity of newly frozen ice, in g kg-1. real :: enthM_evap, enthM_melt, enthM_freezing, enthM_snowfall real :: enth_unit ! A conversion factor for enthalpy from Joules kg-1. real :: LI ! The latent heat of fusion, in J kg-1. real :: Lat_vapor ! The latent heat of vaporization, in J kg-1. - real :: rho_ice ! The nominal density of sea ice in kg m-3. - real :: rho_water ! The nominal density of seawater in kg m-3. + real :: rho_ice ! The nominal density of sea ice [kg m-3]. + real :: rho_water ! The nominal density of seawater [kg m-3]. real :: h2o_to_ocn, h2o_orig, h2o_imb real :: pond_rate, h2o_to_pond, h2o_from_pond, tavg, mp_min, mp_max ! mw/new integer :: k, tr @@ -1486,7 +1486,7 @@ subroutine add_frazil_SIS2(m_lay, Enthalpy, Sice_therm, Salin, npassive, TrLay, frazil, tfw, NkIce, h2o_ocn_to_ice, & salt_to_ice, ITV, CS, enthalpy_freeze) real, dimension(0:NkIce), & - intent(inout) :: m_lay !< Snow and ice mass per unit area by layer in kg m-2. + intent(inout) :: m_lay !< Snow and ice mass per unit area by layer [kg m-2]. real, dimension(0:NkIce+1), & intent(inout) :: Enthalpy !< Snow, ice, and ocean enthalpy by layer in enth_units !! (which might be J/kg). @@ -1500,7 +1500,7 @@ subroutine add_frazil_SIS2(m_lay, Enthalpy, Sice_therm, Salin, npassive, TrLay, real, intent(in ) :: frazil !< frazil in energy units real, intent(in ) :: tfw !< seawater freezing temperature [degC] integer, intent(in) :: NkIce !< The number of ice layers. - real, intent( out) :: h2o_ocn_to_ice !< liquid water flux from ocean (kg/m^2) + real, intent( out) :: h2o_ocn_to_ice !< liquid water flux from ocean [kg m-2] real, intent( out) :: salt_to_ice !< Net flux of salt to the ice, in g m-2. type(SIS2_ice_thm_CS), intent(in) :: CS !< The SIS2_ice_thm control structure. type(ice_thermo_type), intent(in) :: ITV !< The ice thermodynamic parameter structure. @@ -1512,19 +1512,19 @@ subroutine add_frazil_SIS2(m_lay, Enthalpy, Sice_therm, Salin, npassive, TrLay, real :: frazil_per_layer ! The frazil heat sink from each of the sublayers of ! of the ice, in units of enth_unit. real :: t_frazil ! The temperature which with the frazil-ice is created [degC]. - real :: m_frazil ! The newly-formed mass per unit area of frazil ice, in kg m-2. + real :: m_frazil ! The newly-formed mass per unit area of frazil ice [kg m-2]. real :: min_dEnth_freeze ! The minimum enthalpy change that must occur when ! freezing water, usually enough to account for ! the latent heat of fusion in a small fraction of ! the water, in Enth_unit kg-1 (perhaps J kg-1). - real :: m_freeze ! The newly formed ice from freezing, in kg m-2. + real :: m_freeze ! The newly formed ice from freezing [kg m-2]. real :: salin_freeze ! The salinity of newly frozen ice, in g kg-1. real :: enthM_freezing ! The enthalpy gain due to the mass gain by ! freezing, in enth_unit kg m-2 (often J m-2). real :: enth_unit ! The units for enthalpy (often J kg-1). real :: LI ! The latent heat of fusion, in J kg-1. ! These variables are used only for debugging. - real :: mtot_ice ! The summed ice mass in kg m-2. + real :: mtot_ice ! The summed ice mass [kg m-2]. real :: h2o_to_ocn, h2o_orig, h2o_imb integer :: k, tr logical :: debug = .false. @@ -1596,8 +1596,8 @@ end subroutine add_frazil_SIS2 !> Adjust the mass of the various ice layers to give the prescribed relative thicknesses. subroutine rebalance_ice_layers(m_lay, mtot_ice, Enthalpy, Salin, NkIce, npassive, TrLay) - real, dimension(0:NkIce), intent(inout) :: m_lay !< The ice mass by layer, in kg m-2. - real, intent(out) :: mtot_ice !< The summed ice mass in kg m-2. + real, dimension(0:NkIce), intent(inout) :: m_lay !< The ice mass by layer [kg m-2]. + real, intent(out) :: mtot_ice !< The summed ice mass [kg m-2]. real, dimension(0:NkIce+1), intent(inout) :: Enthalpy !< Snow, ice, and ocean enthalpy by layer in enth_units. real, dimension(NkIce+1), intent(inout) :: Salin !< Conserved ice bulk salinity by layer (g/kg) integer, intent(in) :: NkIce !< The number of ice layers. @@ -2015,23 +2015,23 @@ end function dTemp_dEnth_TS !> Temp_from_En_S returns the sea ice temperature for ice of a given enthalpy !! and salinity. function Temp_from_En_S(En, S, ITV) result(Temp) - real, intent(in) :: En !< The ice enthalpy, in enthalpy units (often J/kg) + real, intent(in) :: En !< The ice enthalpy, in enthalpy units [Enth ~> J/kg] real, intent(in) :: S !< The ice bulk salinity in g/kg type(ice_thermo_type), intent(in) :: ITV !< The ice thermodynamic parameter structure. real :: Temp !< Temperature [degC]. - real :: I_Cp_Ice, I_Cp_Water ! Inverse heat capacities, in kg K J-1. + real :: I_Cp_Ice, I_Cp_Water ! Inverse heat capacities [kg degC J-1]. real :: BB real :: I_enth_unit real :: T_fr ! The freezing temperature [degC]. real :: Cp_Ice, Cp_Water, LI, Mu_TS - real :: En_J ! Enthalpy with 0 offset [J]. + real :: En_J ! Enthalpy with 0 offset [J kg-1]. real :: T_guess ! The latest best guess at Temp [degC]. real :: T_deriv ! The value of Temp at which to evaluate dT_dEn [degC]. real :: T_next ! The tentative next value for T_guess [degC]. real :: T_max, T_min ! Bracketing temperatures [degC]. - real :: En_Tg ! The enthalpy at T_guess, in J kg-1. - real :: En_Tmin, En_Tmax ! The enthalpies at T_max and T_min, in J kg-1. + real :: En_Tg ! The enthalpy at T_guess [J kg-1]. + real :: En_Tmin, En_Tmax ! The enthalpies at T_max and T_min [J kg-1]. real :: dT_dEn ! The partial derivative of temperature with enthalpy [degC kg J-1]. real :: Enth_tol = 1.0e-15 ! The fractional Enthalpy difference tolerance for convergence. @@ -2185,9 +2185,9 @@ subroutine get_SIS2_thermo_coefs(ITV, ice_salinity, enthalpy_units, & real, optional, intent(out) :: Cp_Brine !< The heat capacity of liquid water in brine pockets !! within the sea-ice [J kg-1 degC-1]. Cp_Brine and Cp_Water should be equal, !! but for computational convenience Cp_Brine has often been set equal to Cp_Ice instead. - real, optional, intent(out) :: rho_ice !< A nominal density of ice in kg m-3. - real, optional, intent(out) :: rho_snow !< A nominal density of snow in kg m-3. - real, optional, intent(out) :: rho_water !< A nominal density of water in kg m-3. + real, optional, intent(out) :: rho_ice !< A nominal density of ice [kg m-3]. + real, optional, intent(out) :: rho_snow !< A nominal density of snow [kg m-3]. + real, optional, intent(out) :: rho_water !< A nominal density of water [kg m-3]. real, optional, intent(out) :: Latent_fusion !< The latent heat of fusion, in J kg-1. real, optional, intent(out) :: Latent_vapor !< The latent heat of vaporization, in J kg-1. type(EOS_type), & diff --git a/src/SIS_dyn_bgrid.F90 b/src/SIS_dyn_bgrid.F90 index 1a7de3ba..5850cefe 100644 --- a/src/SIS_dyn_bgrid.F90 +++ b/src/SIS_dyn_bgrid.F90 @@ -37,15 +37,15 @@ module SIS_dyn_bgrid sig22 => NULL() !< The yy component of the stress tensor [Pa m] (or N m-1). ! parameters for calculating water drag and internal ice stresses - real :: p0 = 2.75e4 !< Hibbler rheology pressure constant (Pa) - real :: p0_rho !< The pressure constant divided by ice density, N m kg-1. + real :: p0 = 2.75e4 !< Hibbler rheology pressure constant [Pa] + real :: p0_rho !< The pressure constant divided by ice density [N m kg-1]. real :: c0 = 20.0 !< another pressure constant real :: cdw = 3.24e-3 !< ice/water drag coef. (nondim) real :: blturn = 0.0 !< air/water surf. turning angle (degrees) real :: EC = 2.0 !< yield curve axis ratio - real :: MIV_MIN = 1.0 !< min ice mass to do dynamics (kg/m^2) - real :: Rho_ocean = 1030.0 !< The nominal density of sea water, in kg m-3. - real :: Rho_ice = 905.0 !< The nominal density of sea ice, in kg m-3. + real :: MIV_MIN = 1.0 !< min ice mass to do dynamics [kg m-2] + real :: Rho_ocean = 1030.0 !< The nominal density of sea water [kg m-3]. + real :: Rho_ice = 905.0 !< The nominal density of sea ice [kg m-3]. logical :: debug !< If true, write verbose checksums for debugging purposes. logical :: debug_redundant !< If true, debug redundant points integer :: evp_sub_steps !< The number of iterations in the EVP dynamics diff --git a/src/SIS_dyn_cgrid.F90 b/src/SIS_dyn_cgrid.F90 index 2f9c47eb..c6dab21c 100644 --- a/src/SIS_dyn_cgrid.F90 +++ b/src/SIS_dyn_cgrid.F90 @@ -52,8 +52,8 @@ module SIS_dyn_cgrid real :: c0 = 20.0 !< another pressure constant real :: cdw = 3.24e-3 !< ice/water drag coef. (nondim) real :: EC = 2.0 !< yield curve axis ratio - real :: Rho_ocean = 1030.0 !< The nominal density of sea water, in kg m-3. - real :: Rho_ice = 905.0 !< The nominal density of sea ice, in kg m-3. + real :: Rho_ocean = 1030.0 !< The nominal density of sea water [kg m-3]. + real :: Rho_ice = 905.0 !< The nominal density of sea ice [kg m-3]. real :: drag_bg_vel2 = 0.0 !< A background (subgridscale) velocity for drag !< with the ocean squared, in m2 s-2. real :: min_ocn_inertial_h = 0. !< A minimum ocean thickness used to limit the viscous coupling @@ -490,7 +490,7 @@ subroutine SIS_C_dynamics(ci, mis, mice, ui, vi, uo, vo, & diag_val_u, & ! A temporary diagnostic array. u_tmp, & ! A temporary copy of the old values of ui, in m s-1. u_IC, & ! The initial zonal ice velocities, in m s-1. - mi_u, & ! The total ice and snow mass interpolated to u points, in kg m-2. + mi_u, & ! The total ice and snow mass interpolated to u points [kg m-2]. f2dt_u, &! The squared effective Coriolis parameter at u-points times a ! time step, in s-1. I1_f2dt2_u ! 1 / ( 1 + f^2 dt^2) at u-points, nondimensional. @@ -503,7 +503,7 @@ subroutine SIS_C_dynamics(ci, mis, mice, ui, vi, uo, vo, & PFv, & ! Meridional hydrostatic pressure driven acceleration, in m s-2. diag_val_v, & ! A temporary diagnostic array. v_IC, & ! The initial meridional ice velocities, in m s-1. - mi_v, & ! The total ice and snow mass interpolated to v points, in kg m-2. + mi_v, & ! The total ice and snow mass interpolated to v points [kg m-2]. f2dt_v, &! The squared effective Coriolis parameter at v-points times a ! time step, in s-1. I1_f2dt2_v ! 1 / ( 1 + f^2 dt^2) at v-points, nondimensional. @@ -526,19 +526,19 @@ subroutine SIS_C_dynamics(ci, mis, mice, ui, vi, uo, vo, & ! directions. real :: Cor ! A Coriolis accleration, in m s-2. - real :: fxic_now, fyic_now ! ice internal stress convergence, in kg m-1 s-2. - real :: drag_u, drag_v ! Drag rates with the ocean at u & v points, in kg m-2 s-1. - real :: drag_max ! A maximum drag rate allowed in the ocean, in kg m-2 s-1. + real :: fxic_now, fyic_now ! ice internal stress convergence [kg m-1 s-2]. + real :: drag_u, drag_v ! Drag rates with the ocean at u & v points [kg m-2 s-1]. + real :: drag_max ! A maximum drag rate allowed in the ocean [kg m-2 s-1]. real :: tot_area ! The sum of the area of the four neighboring cells, in m2. real :: dxharm ! The harmonic mean of the x- and y- grid spacings, in m. real :: muq2, mvq2 ! The product of the u- and v-face masses per unit cell - ! area surrounding a vorticity point, in kg2 m-4. + ! area surrounding a vorticity point [kg2 m-4]. real :: muq, mvq ! The u- and v-face masses per unit cell area extrapolated - ! to a vorticity point on the coast, in kg m-2. + ! to a vorticity point on the coast [kg m-2]. real :: pres_sum ! The sum of the internal ice pressures aroung a point [Pa]. real :: min_rescale ! The smallest of the 4 surrounding values of rescale, ND. - real :: I_1pdt_T ! 1.0 / (1.0 + dt_2Tdamp) - real :: I_1pE2dt_T ! 1.0 / (1.0 + EC^2 * dt_2Tdamp) + real :: I_1pdt_T ! 1.0 / (1.0 + dt_2Tdamp), ND. + real :: I_1pE2dt_T ! 1.0 / (1.0 + EC^2 * dt_2Tdamp), ND. real :: v2_at_u ! The squared v-velocity interpolated to u points, in m s-1. real :: u2_at_v ! The squared u-velocity interpolated to v points, in m s-1. @@ -548,13 +548,12 @@ subroutine SIS_C_dynamics(ci, mis, mice, ui, vi, uo, vo, & real :: b_vel0 ! The initial difference between the velocity magnitude ! and the absolute value of the u- or v- component, plus ! the ice thickness divided by the time step and the drag - ! coefficient, all in m s-1. + ! coefficient [m s-1]. real :: uio_C ! A u-velocity difference between the ocean and ice, in m s-1. real :: vio_C ! A v-velocity difference between the ocean and ice, in m s-1. real :: Tdamp ! The damping timescale of the stress tensor components - ! toward their equilibrium solution due to the elastic terms, - ! in s. + ! toward their equilibrium solution due to the elastic terms, in s. real :: dt ! The short timestep associated with the EVP dynamics, in s. real :: dt_2Tdamp ! The ratio of the timestep to the elastic damping timescale. real :: dt_cumulative ! The elapsed time within this call to EVP dynamics, in s. @@ -567,9 +566,9 @@ subroutine SIS_C_dynamics(ci, mis, mice, ui, vi, uo, vo, & real :: I_2EC ! 1/(2*EC), where EC is the yield curve axis ratio. real, parameter :: H_subroundoff = 1e-30 ! A negligible thickness, in m, that ! can be cubed without underflow. - real :: m_neglect ! A tiny mass per unit area, in kg m-2. - real :: m_neglect2 ! A tiny mass per unit area squared, in kg2 m-4. - real :: m_neglect4 ! A tiny mass per unit area to the 4th power, in kg4 m-8. + real :: m_neglect ! A tiny mass per unit area [kg m-2]. + real :: m_neglect2 ! A tiny mass per unit area squared [kg2 m-4]. + real :: m_neglect4 ! A tiny mass per unit area to the 4th power [kg4 m-8]. real :: sum_area ! The sum of ocean areas around a vorticity point, in m2. type(time_type) :: & @@ -1355,7 +1354,7 @@ subroutine limit_stresses(pres_mice, mice, str_d, str_t, str_s, G, CS, limit) real, dimension(SZI_(G),SZJ_(G)), intent(in) :: pres_mice !< The ice internal pressure per !! unit column mass, in N m / kg. real, dimension(SZI_(G),SZJ_(G)), intent(in) :: mice !< The mass per unit total area (ice - !! covered and ice free) of the ice, in kg m-2. + !! covered and ice free) of the ice [kg m-2]. real, dimension(SZI_(G),SZJ_(G)), intent(inout) :: str_d !< The divergence stress tensor component [Pa m]. real, dimension(SZI_(G),SZJ_(G)), intent(inout) :: str_t !< The tension stress tensor component [Pa m]. real, dimension(SZIB_(G),SZJB_(G)), intent(inout) :: str_s !< The shearing stress tensor component [Pa m]. @@ -1656,7 +1655,7 @@ subroutine write_u_trunc(I, j, ui, u_IC, uo, mis, fxoc, fxic, Cor_u, PFu, fxat, real, dimension(SZIB_(G),SZJ_(G)), intent(in) :: ui !< The zonal ice velicity in m s-1. real, dimension(SZIB_(G),SZJ_(G)), intent(in) :: u_IC !< The initial zonal ice velicity in m s-1. real, dimension(SZIB_(G),SZJ_(G)), intent(in) :: uo !< The zonal ocean velicity in m s-1. - real, dimension(SZI_(G),SZJ_(G)), intent(in) :: mis !< The mass of ice an snow per unit ocean area, in kg m-2 + real, dimension(SZI_(G),SZJ_(G)), intent(in) :: mis !< The mass of ice an snow per unit ocean area [kg m-2] real, dimension(SZIB_(G),SZJ_(G)), intent(in) :: fxoc !< The zonal ocean-to-ice force [Pa]. real, dimension(SZIB_(G),SZJ_(G)), intent(in) :: fxic !< The ice internal force [Pa]. real, dimension(SZIB_(G),SZJ_(G)), intent(in) :: Cor_u !< The zonal Coriolis acceleration, in m s-2. @@ -1726,7 +1725,7 @@ subroutine write_v_trunc(i, J, vi, v_IC, vo, mis, fyoc, fyic, Cor_v, PFv, fyat, real, dimension(SZI_(G),SZJB_(G)), intent(in) :: vi !< The meridional ice velicity in m s-1. real, dimension(SZI_(G),SZJB_(G)), intent(in) :: v_IC !< The initial meridional ice velicity in m s-1. real, dimension(SZI_(G),SZJB_(G)), intent(in) :: vo !< The meridional ocean velicity in m s-1. - real, dimension(SZI_(G),SZJ_(G)), intent(in) :: mis !< The mass of ice an snow per unit ocean area, in kg m-2 + real, dimension(SZI_(G),SZJ_(G)), intent(in) :: mis !< The mass of ice an snow per unit ocean area [kg m-2] real, dimension(SZI_(G),SZJB_(G)), intent(in) :: fyoc !< The meridional ocean-to-ice force [Pa]. real, dimension(SZI_(G),SZJB_(G)), intent(in) :: fyic !< The ice internal force [Pa]. real, dimension(SZI_(G),SZJB_(G)), intent(in) :: Cor_v !< The meridional Coriolis acceleration, in m s-2. diff --git a/src/SIS_dyn_trans.F90 b/src/SIS_dyn_trans.F90 index 1e83cd18..f1552719 100644 --- a/src/SIS_dyn_trans.F90 +++ b/src/SIS_dyn_trans.F90 @@ -190,7 +190,7 @@ subroutine update_icebergs(IST, OSS, IOF, FIA, icebergs_CS, dt_slow, G, IG, CS) real, dimension(G%isc:G%iec, G%jsc:G%jec) :: & windstr_x, & ! The area-weighted average ice thickness [Pa]. windstr_y ! The area-weighted average ice thickness [Pa]. - real :: rho_ice ! The nominal density of sea ice in kg m-3. + real :: rho_ice ! The nominal density of sea ice [kg m-3]. real :: H_to_m_ice ! The specific volume of ice times the conversion factor ! from thickness units, in m H-1. integer :: stress_stagger @@ -280,8 +280,8 @@ subroutine SIS_dynamics_trans(IST, OSS, FIA, IOF, dt_slow, CS, icebergs_CS, G, I ! Local variables real, dimension(SZI_(G),SZJ_(G)) :: & - mi_sum, & ! Masses of ice per unit total area, in kg m-2. - misp_sum, & ! Combined mass of snow, ice and melt pond water per unit total area, in kg m-2. + mi_sum, & ! Masses of ice per unit total area [kg m-2]. + misp_sum, & ! Combined mass of snow, ice and melt pond water per unit total area [kg m-2]. ice_free, & ! The fractional open water; nondimensional, between 0 & 1. ice_cover ! The fractional ice coverage, summed across all ! thickness categories; nondimensional, between 0 & 1. @@ -688,8 +688,8 @@ subroutine post_ice_state_diagnostics(CS, IST, OSS, IOF, dt_slow, Time, G, IG, d real, dimension(SZI_(G),SZJ_(G)) :: diagVar ! An temporary array for diagnostics. real, dimension(IG%NkIce) :: S_col ! Specified thermodynamic salinity of each ! ice layer if spec_thermo_sal is true. - real :: rho_ice ! The nominal density of sea ice in kg m-3. - real :: rho_snow ! The nominal density of snow in kg m-3. + real :: rho_ice ! The nominal density of sea ice [kg m-3]. + real :: rho_snow ! The nominal density of snow [kg m-3]. real :: enth_units, I_enth_units real :: tmp_mca ! A temporary cell averaged mass, in H. real :: I_Nk ! The inverse of the number of layers in the ice. @@ -722,7 +722,7 @@ subroutine post_ice_state_diagnostics(CS, IST, OSS, IOF, dt_slow, Time, G, IG, d if (CS%id_mib>0) then if (associated(IOF%mass_berg)) then do j=jsc,jec ; do i=isc,iec - mass(i,j) = (mass(i,j) + IOF%mass_berg(i,j)) ! Add icebergs mass in kg/m^2 + mass(i,j) = (mass(i,j) + IOF%mass_berg(i,j)) ! Add icebergs mass [kg m-2] enddo ; enddo endif call post_data(CS%id_mib, mass(isc:iec,jsc:jec), diag) diff --git a/src/SIS_fast_thermo.F90 b/src/SIS_fast_thermo.F90 index 20532e2e..22b63693 100644 --- a/src/SIS_fast_thermo.F90 +++ b/src/SIS_fast_thermo.F90 @@ -113,14 +113,14 @@ subroutine sum_top_quantities (FIA, ABT, flux_u, flux_v, flux_sh, evap, & !! the atmosphere in W m-2. real, dimension(G%isd:G%ied,G%jsd:G%jed,0:IG%CatIce), & intent(in) :: evap !< The upward flux of water due to sublimation or evaporation - !! from the top of the ice to the atmosphere, in kg m-2 s-1. + !! from the top of the ice to the atmosphere [kg m-2 s-1]. real, dimension(G%isd:G%ied,G%jsd:G%jed,0:IG%CatIce), & intent(in) :: flux_lw !< The net longwave heat flux from the atmosphere into the !! ice or ocean, in W m-2. real, dimension(G%isd:G%ied,G%jsd:G%jed,0:IG%CatIce), & - intent(in) :: lprec !< The liquid precipitation onto the ice in kg m-2 s-1. + intent(in) :: lprec !< The liquid precipitation onto the ice [kg m-2 s-1]. real, dimension(G%isd:G%ied,G%jsd:G%jed,0:IG%CatIce), & - intent(in) :: fprec !< The frozen precipitation onto the ice in kg m-2 s-1. + intent(in) :: fprec !< The frozen precipitation onto the ice [kg m-2 s-1]. real, dimension(G%isd:G%ied,G%jsd:G%jed,0:IG%CatIce), & intent(in) :: flux_lh !< The upward latent heat flux associated with sublimation or !! evaporation, in W m-2. @@ -129,7 +129,7 @@ subroutine sum_top_quantities (FIA, ABT, flux_u, flux_v, flux_sh, evap, & !! the atmosphere when the skin temperature is 0 degC, in W m-2. real, dimension(G%isd:G%ied,G%jsd:G%jed,0:IG%CatIce), & intent(in) :: evap_T0 !< The sublimation rate when the skin temperature is 0 degC, - !! in kg m-2 s-1. + !! [kg m-2 s-1]. real, dimension(G%isd:G%ied,G%jsd:G%jed,0:IG%CatIce), & intent(in) :: lw_T0 !< The downward longwave heat flux from the atmosphere into the !! ice or ocean when the skin temperature is 0 degC, in W m-2. @@ -590,7 +590,7 @@ subroutine do_update_ice_model_fast(Atmos_boundary, IST, sOSS, Rad, FIA, & flux_sh, & ! The upward sensible heat flux from the ice to the atmosphere ! at the surface of the ice, in W m-2. evap, & ! The upward flux of water due to sublimation or evaporation - ! from the top of the ice to the atmosphere, in kg m-2 s-1. + ! from the top of the ice to the atmosphere [kg m-2 s-1]. flux_lh, & ! The upward latent heat flux associated with sublimation or ! evaporation, in W m-2. flux_lw, & ! The net downward longwave heat flux into the ice, in W m-2. @@ -599,7 +599,7 @@ subroutine do_update_ice_model_fast(Atmos_boundary, IST, sOSS, Rad, FIA, & sh_T0, & ! The upward sensible heat flux from the top of the ice into ! the atmosphere when the skin temperature is 0 degC, in W m-2. evap_T0, & ! The sublimation rate when the skin temperature is 0 degC, - ! in kg m-2 s-1. + ! [kg m-2 s-1]. lw_T0, & ! The downward longwave heat flux from the atmosphere into the ! ice or ocean when the skin temperature is 0 degC, in W m-2. dshdt, & ! The derivative of the upward sensible heat flux with the surface @@ -887,8 +887,8 @@ subroutine redo_update_ice_model_fast(IST, sOSS, Rad, FIA, TSF, optics_CSp, & real :: hf_0 ! The positive upward surface heat flux when T_sfc = 0 degC, in W m-2. real :: dhf_dt ! The deriviative of the upward surface heat flux with Ts, in W m-2 C-1. real :: sw_tot ! sum over dir/dif vis/nir components - real :: rho_ice ! The nominal density of sea ice in kg m-3. - real :: rho_snow ! The nominal density of snow in kg m-3. + real :: rho_ice ! The nominal density of sea ice [kg m-3]. + real :: rho_snow ! The nominal density of snow [kg m-3]. real, dimension(size(FIA%flux_sw_top,4)) :: & albedos ! The ice albedos by directional and wavelength band. real, dimension(IG%NkIce) :: & diff --git a/src/SIS_optics.F90 b/src/SIS_optics.F90 index da027976..355ceef6 100644 --- a/src/SIS_optics.F90 +++ b/src/SIS_optics.F90 @@ -159,7 +159,7 @@ end subroutine SIS_optics_init !> ice_optics_SIS2 sets albedo, penetrating solar, and ice/snow transmissivity subroutine ice_optics_SIS2(mp, hs, hi, ts, tfw, NkIce, albedos, abs_sfc, & abs_snow, abs_ice_lay, abs_ocn, abs_int, CS, ITV, coszen_in) - real, intent(in ) :: mp !< pond mass (kg/m2) + real, intent(in ) :: mp !< pond mass [kg m-2] real, intent(in ) :: hs !< snow thickness (m-snow) real, intent(in ) :: hi !< ice thickness (m-ice) real, intent(in ) :: ts !< surface temperature [degC]. @@ -185,9 +185,9 @@ subroutine ice_optics_SIS2(mp, hs, hi, ts, tfw, NkIce, albedos, abs_sfc, & real :: SW_frac_top ! The fraction of the SW at the top of the snow that ! is still present at the top of each ice layer (ND). real :: opt_decay_lay ! The optical extinction in each ice layer (ND). - real :: rho_ice ! The nominal density of sea ice in kg m-3. - real :: rho_snow ! The nominal density of snow in kg m-3. - real :: rho_water ! The nominal density of sea water in kg m-3. + real :: rho_ice ! The nominal density of sea ice [kg m-3]. + real :: rho_snow ! The nominal density of snow [kg m-3]. + real :: rho_water ! The nominal density of sea water [kg m-3]. real :: pen ! The fraction of the shortwave flux that will pass ! below the surface (frac 1-pen absorbed at the surface) real :: sal_ice_top(1) ! A specified surface salinity of ice. @@ -225,7 +225,7 @@ subroutine ice_optics_SIS2(mp, hs, hi, ts, tfw, NkIce, albedos, abs_sfc, & hprad ! pond depth (m) for radiation code - may be diagnosed real (kind=dbl_kind), dimension (1,1,1) :: & - rhosnw , & ! density in snow layer (kg/m3) + rhosnw , & ! density in snow layer [kg m-3] rsnw ! grain radius in snow layer (micro-meters) real (kind=dbl_kind), dimension (1,1,18) :: & diff --git a/src/SIS_slow_thermo.F90 b/src/SIS_slow_thermo.F90 index eebd3d62..e1b56ea6 100644 --- a/src/SIS_slow_thermo.F90 +++ b/src/SIS_slow_thermo.F90 @@ -324,7 +324,7 @@ subroutine slow_thermodynamics(IST, dt_slow, CS, OSS, FIA, XSF, IOF, G, IG) real, dimension(SZI_(G),SZJ_(G)) :: & h_ice_input ! The specified ice thickness, with specified_ice, in m. - real :: rho_ice ! The nominal density of sea ice in kg m-3. + real :: rho_ice ! The nominal density of sea ice [kg m-3]. real :: Idt_slow ! The inverse of the slow thermodynamic time step, in s-1 integer :: i, j, k, l, m, b, nb, isc, iec, jsc, jec, ncat, NkIce integer :: isd, ied, jsd, jed @@ -585,7 +585,7 @@ subroutine SIS2_thermodynamics(IST, dt_slow, CS, OSS, FIA, IOF, G, IG) ! acts to create sea-ice, in W m-2. net_melt ! The net mass flux from the ice and snow into the ! ocean due to melting and freezing integrated - ! across all categories, in kg m-2 s-1. + ! across all categories [kg m-2 s-1]. real, dimension(SZI_(G),SZJ_(G),1:IG%CatIce) :: heat_in, enth_prev, enth real, dimension(SZI_(G),SZJ_(G)) :: heat_in_col, enth_prev_col, enth_col, enth_mass_in_col @@ -593,7 +593,7 @@ subroutine SIS2_thermodynamics(IST, dt_slow, CS, OSS, FIA, IOF, G, IG) real, dimension(IG%NkIce+1) :: Salin ! The conserved bulk salinity of each ! layer in g/kg, with the salinity of ! newly formed ice in layer NkIce+1. - real, dimension(0:IG%NkIce) :: m_lay ! The masses of a column of ice and snow, in kg m-2. + real, dimension(0:IG%NkIce) :: m_lay ! The masses of a column of ice and snow [kg m-2]. real, dimension(0:IG%NkIce) :: Tcol0 ! The temperature of a column of ice and snow [degC]. real, dimension(0:IG%NkIce) :: S_col0 ! The salinity of a column of ice and snow, in g/kg. real, dimension(0:IG%NkIce) :: Tfr_col0 ! The freezing temperature of a column of ice and snow [degC]. @@ -619,24 +619,24 @@ subroutine SIS2_thermodynamics(IST, dt_slow, CS, OSS, FIA, IOF, G, IG) type(EOS_type), pointer :: EOS => NULL() real :: Cp_water real :: drho_dT(1), drho_dS(1), pres_0(1) - real :: rho_ice ! The nominal density of sea ice in kg m-3. + real :: rho_ice ! The nominal density of sea ice [kg m-3]. real :: Idt_slow ! The inverse of the thermodynamic step, in s-1. real :: yr_dtslow ! The ratio of 1 year to the thermodyamic time step, used ! to change the units of several diagnostics to rate yr-1 real :: heat_to_ocn, h2o_ice_to_ocn, h2o_ocn_to_ice, evap_from_ocn, sn2ic, bablt - real :: salt_to_ice ! The flux of salt from the ocean to the ice, in kg m-2 s-1. + real :: salt_to_ice ! The flux of salt from the ocean to the ice [kg m-2 s-1]. ! This may be of either sign; in some places it is an ! average over the whole cell, while in others just a partition. - real :: mtot_ice ! The total mass of ice and snow in a cell, in kg m-2. + real :: mtot_ice ! The total mass of ice and snow in a cell [kg m-2]. real :: e2m_tot ! The total enthalpy required to melt all ice and snow, in J m-2. real :: enth_evap, enth_ice_to_ocn, enth_ocn_to_ice, enth_snowfall real :: tot_heat, heating, tot_frazil, heat_mass_in, heat_input real :: mass_in, mass_here, mass_prev, mass_imb real :: enth_units, I_enth_units ! The units of enthaply and their inverse. - real :: frac_keep, frac_melt ! The fraction of ice and snow to keep or remove, nd. - real :: ice_melt_lay ! The amount of excess ice removed from each layer in kg/m2. - real :: snow_melt ! The amount of excess snow that is melted, in kg/m2. + real :: frac_keep, frac_melt ! The fraction of ice and snow to keep or remove, ND. + real :: ice_melt_lay ! The amount of excess ice removed from each layer [kg m-2]. + real :: snow_melt ! The amount of excess snow that is melted [kg m-2]. real :: enth_freeze ! The freezing point enthalpy of a layer, in enth_units. real :: enth_to_melt ! The enthalpy addition required to melt the excess ice ! and snow in enth_unit kg/m2. @@ -651,8 +651,8 @@ subroutine SIS2_thermodynamics(IST, dt_slow, CS, OSS, FIA, IOF, G, IG) real :: sw_tot ! The total shortwave radiation incident on a category, in W m-2. integer :: i, j, k, l, m, n, b, nb, isc, iec, jsc, jec, ncat, NkIce, tr, npassive integer :: k_merge - real :: LatHtFus ! The latent heat of fusion of ice in J/kg. - real :: LatHtVap ! The latent heat of vaporization of water at 0C in J/kg. + real :: LatHtFus ! The latent heat of fusion of ice [J kg-1]. + real :: LatHtVap ! The latent heat of vaporization of water at 0C [J kg-1]. real, parameter :: T_0degC = 273.15 ! 0 degrees C in Kelvin real :: tot_heat_in, enth_here, enth_imb, norm_enth_imb, emic2, tot_heat_in2, enth_imb2 diff --git a/src/SIS_sum_output.F90 b/src/SIS_sum_output.F90 index 88e777e2..182d4728 100644 --- a/src/SIS_sum_output.F90 +++ b/src/SIS_sum_output.F90 @@ -49,7 +49,7 @@ module SIS_sum_output type, public :: SIS_sum_out_CS ; private real :: mass_prev !< The total sea ice mass the last time that - !! write_ice_statistics was called, in kg. + !! write_ice_statistics was called [kg]. real :: fresh_water_input !< The total mass of fresh water added by !! surface fluxes since the last time that real :: salt_prev !< The total amount of salt in the sea ice the last @@ -62,17 +62,17 @@ module SIS_sum_output !! time that write_ice_statistics was called, in Joules. real, dimension(:,:), allocatable :: & water_in_col, & !< The water that has been input to the ice and snow in a column since - !! the last time that write_ice_statistics was called, in kg m-2. + !! the last time that write_ice_statistics was called [kg m-2]. heat_in_col, & !< The heat that has been input to the ice and snow in a column since !! the last time that write_ice_statistics was called, in J m-2. salt_in_col, & !< The salt that has been input to the ice and snow in a column since - !! the last time that write_ice_statistics was called, in kg m-2. + !! the last time that write_ice_statistics was called [kg m-2]. water_col_prev, & !< The column integrated water that was in the ice and snow the last - !! time that write_ice_statistics was called, in kg m-2. + !! time that write_ice_statistics was called [kg m-2]. heat_col_prev, & !< The column integrated heat that was in the ice and snow the last !! time that write_ice_statistics was called, in J m-2. salt_col_prev !< The column integrated salt that was in the ice and snow the last - !! time that write_ice_statistics was called, in kg m-2. + !! time that write_ice_statistics was called [kg m-2]. type(EFP_type) :: fresh_water_in_EFP !< An extended fixed point version of fresh_water_in type(EFP_type) :: net_salt_in_EFP !< An extended fixed point version of net_salt_in @@ -230,26 +230,26 @@ subroutine write_ice_statistics(IST, day, n, G, IG, CS, message, check_column, t ice_extent, & ! The extent (cells with >10% coverage) of ice in each ! cell and hemisphere, in m2. col_mass, & ! The column integrated ice and snow mass in each cell and - ! hemisphere, in kg. + ! hemisphere [kg]. col_heat, & ! The column integrated ice and snow heat in each cell and ! hemisphere, in J. col_salt ! The column integrated salt in the ice in each cell and - ! hemisphere in kg. + ! hemisphere [kg]. real, dimension(2) :: & Area_NS, & ! The total sea-ice area in the two hemispheres, in m2. Extent_NS, & ! The total sea-ice extent in the two hemispheres, in m2. Heat_NS, & ! The total sea-ice enthalpy in the two hemispheres, in J. - mass_NS, & ! The total sea-ice mass in the two hemispheres, in kg. - salt_NS, & ! The total sea-ice salt in the two hemispheres, in kg. + mass_NS, & ! The total sea-ice mass in the two hemispheres [kg]. + salt_NS, & ! The total sea-ice salt in the two hemispheres [kg]. salinity_NS ! The average sea-ice salinity in the two hemispheres, in g/kg. - real :: Mass ! The total mass of the sea ice and snow atop it in kg. + real :: Mass ! The total mass of the sea ice and snow atop it [kg]. real :: mass_chg ! The change in total sea ice mass of fresh water since - ! the last call to this subroutine, in kg. + ! the last call to this subroutine [kg]. real :: mass_anom ! The change in fresh water that cannot be accounted for - ! by the surface fluxes, in kg. - real :: I_Mass ! Adcroft's rule reciprocal of mass: 1/Mass or 0, in kg-1. + ! by the surface fluxes [kg]. + real :: I_Mass ! Adcroft's rule reciprocal of mass: 1/Mass or 0 [kg-1]. real :: Salt ! The total amount of salt in the ocean, in PSU kg. real :: Salt_chg ! The change in total sea ice salt since the last call ! to this subroutine, in PSU kg. @@ -261,7 +261,7 @@ subroutine write_ice_statistics(IST, day, n, G, IG, CS, message, check_column, t ! to this subroutine divided by total mass, in PSU. real :: salin_anom ! The change in total salt that cannot be accounted for by ! the surface fluxes divided by total mass in PSU. - real :: salin_mass_in ! The mass of salt input since the last call, kg. + real :: salin_mass_in ! The mass of salt input since the last call [kg]. real :: Heat ! The total amount of Heat in the ocean, in Joules. real :: Heat_chg ! The change in total sea ice heat since the last call ! to this subroutine, in Joules. @@ -274,8 +274,8 @@ subroutine write_ice_statistics(IST, day, n, G, IG, CS, message, check_column, t ! capacity of the ocean [degC]. real :: Area ! The total area of the sea ice in m2. real :: Extent ! The total extent of the sea ice in m2. - real :: heat_imb ! The column integrated heat imbalance in enth_unit kg m-2. - real :: mass_imb ! The column integrated mass imbalance in kg. + real :: heat_imb ! The column integrated heat imbalance [Enth kg m-2 ~> J m-2]. + real :: mass_imb ! The column integrated mass imbalance [kg]. real :: enth_liq_0 ! The enthalpy of liquid water at the freezing point, in enth_unit. real :: I_nlay, kg_H_nlay, area_pt real :: area_h ! The masked area of a column. @@ -773,23 +773,23 @@ subroutine accumulate_input_1(IST, FIA, OSS, dt, G, IG, CS) ! Local variables real, dimension(SZI_(G),SZJ_(G)) :: & - FW_in, & ! The net fresh water input, integrated over a timestep in kg. + FW_in, & ! The net fresh water input, integrated over a timestep [kg]. salt_in, & ! The total salt added by surface fluxes, integrated - ! over a time step in PSU kg. + ! over a time step [PSU kg]. heat_in ! The total heat added by surface fluxes, integrated - ! over a time step in Joules. + ! over a time step [J]. real :: FW_input ! The net fresh water input, integrated over a timestep - ! and summed over space, in kg. + ! and summed over space [kg]. real :: salt_input ! The total salt added by surface fluxes, integrated - ! over a time step and summed over space, in kg. + ! over a time step and summed over space [kg]. real :: heat_input ! The total heat added by surface fluxes, integrated - ! over a time step and summed over space, in Joules. + ! over a time step and summed over space [J]. real :: area_h, area_pt, Flux_SW real :: enth_units type(EFP_type) :: & - FW_in_EFP, & ! Extended fixed point versions of FW_input, salt_input, and - salt_in_EFP, & ! heat_input, in kg, PSU kg, and Joules. - heat_in_EFP ! + FW_in_EFP, & ! Extended fixed point version of FW_input [kg] + salt_in_EFP, & ! Extended fixed point version of salt_input [PSU kg] + heat_in_EFP ! Extended fixed point version of heat_input [J] integer :: i, j, k, isc, iec, jsc, jec, ncat, b, nb isc = G%isc ; iec = G%iec ; jsc = G%jsc ; jec = G%jec ; ncat = IG%CatIce diff --git a/src/SIS_tracer_advect.F90 b/src/SIS_tracer_advect.F90 index 920b72a2..583a9810 100644 --- a/src/SIS_tracer_advect.F90 +++ b/src/SIS_tracer_advect.F90 @@ -1662,9 +1662,9 @@ subroutine advect_tracers_thicker(vol_start, vol_trans, G, IG, CS, & type(SIS_hor_grid_type), intent(in) :: G !< The horizontal grid type type(ice_grid_type), intent(in) :: IG !< The sea-ice specific grid type real, dimension(SZI_(G),SZCAT_(IG)), & - intent(in) :: vol_start !< The category volume before advection, in kg or m3. + intent(in) :: vol_start !< The category volume before advection [H m2 ~> kg or m3]. real, dimension(SZI_(G),SZCAT_(IG)),& - intent(in) :: vol_trans !< The category volume to transfer, in kg or m3. + intent(in) :: vol_trans !< The category volume to transfer [H m2 ~> kg or m3]. type(SIS_tracer_advect_CS), pointer :: CS !< The control structure returned by a previous !! call to SIS_tracer_advect_init. type(SIS_tracer_registry_type), pointer :: TrReg !< A pointer to the SIS tracer registry. diff --git a/src/SIS_tracer_flow_control.F90 b/src/SIS_tracer_flow_control.F90 index 886b7f01..d352f25b 100644 --- a/src/SIS_tracer_flow_control.F90 +++ b/src/SIS_tracer_flow_control.F90 @@ -172,10 +172,10 @@ subroutine SIS_call_tracer_column_fns(dt, G, IG, CS, mi, mi_old) pointer :: CS !< The control structure returned by a !! previous call to SIS_call_tracer_register. real, dimension(SZI_(G),SZJ_(G),SZCAT_(IG)), & - intent(in) :: mi !< Mass of ice in a given category in kg m-2 at the + intent(in) :: mi !< Mass of ice in a given category [kg m-2] at the !! end of the timestep real, dimension(SZI_(G),SZJ_(G),SZCAT_(IG)), & - intent(in) :: mi_old !< Mass of ice in a given category in kg m-2 at the + intent(in) :: mi_old !< Mass of ice in a given category [kg m-2] at the !! beginning of the timestep ! This subroutine calls all registered ice-tracer column physics subroutines. @@ -196,7 +196,7 @@ subroutine SIS_call_tracer_stocks(G, IG, CS, mi, stock_values, stock_names, & type(SIS_tracer_flow_control_CS), pointer :: CS !< The control structure returned by a !! previous call to SIS_call_tracer_register. real, dimension(SZI_(G),SZJ_(G),SZCAT_(IG)), & - intent(in) :: mi !< Mass of ice in a given category in kg m-2, used for summing + intent(in) :: mi !< Mass of ice in a given category [kg m-2], used for summing real, dimension(:), intent(out) :: stock_values !< The values of the summed tracer stocks. character(len=*), dimension(:), & optional, intent(out) :: stock_names !< The names of the summed tracer stocks. diff --git a/src/SIS_transport.F90 b/src/SIS_transport.F90 index fd45b091..de38375d 100644 --- a/src/SIS_transport.F90 +++ b/src/SIS_transport.F90 @@ -39,7 +39,7 @@ module SIS_transport !> The SIS_transport_CS contains parameters for doing advective and parameterized advection. type, public :: SIS_transport_CS ; private - real :: Rho_ice = 905.0 !< The nominal density of sea ice, in kg m-3, used here only in rolling. + real :: Rho_ice = 905.0 !< The nominal density of sea ice [kg m-3], used here only in rolling. real :: Roll_factor !< A factor by which the propensity of small amounts of thick sea-ice !! to become thinner by rolling is increased, or 0 to disable rolling. !! Sensible values are 0 or larger than 1. @@ -93,8 +93,8 @@ module SIS_transport real, allocatable, dimension(:,:) :: vh_sum !< The accumulated meridional mass fluxes of ice, snow !! and melt pond water, summed acrosss categories, !! since the fields were populated, in H m2. - type(EFP_type) :: tot_ice !< The globally integrated mass of sea ice, in kg. - type(EFP_type) :: tot_snow !< The globally integrated mass of snow, in kg. + type(EFP_type) :: tot_ice !< The globally integrated mass of sea ice [kg]. + type(EFP_type) :: tot_snow !< The globally integrated mass of snow [kg]. type(EFP_type) :: enth_ice !< The globally integrated sea ice enthalpy, in J. type(EFP_type) :: enth_snow !< The globally integrated snow enthalpy, in J. end type cell_average_state_type @@ -219,14 +219,14 @@ subroutine finish_ice_transport(CAS, IST, TrReg, G, IG, CS, snow2ocn, rdg_rate) type(SIS_tracer_registry_type), pointer :: TrReg !< The registry of SIS ice and snow tracers. type(SIS_transport_CS), pointer :: CS !< A pointer to the control structure for this module real, dimension(SZI_(G),SZJ_(G)), & - optional, intent(inout) :: snow2ocn !< Snow dumped into ocean during ridging in kg m-2 + optional, intent(inout) :: snow2ocn !< Snow dumped into ocean during ridging [kg m-2] real, dimension(SZI_(G),SZJ_(G)), optional, intent(in) :: rdg_rate !< The ice ridging rate in s-1. ! Local variables real, dimension(SZIB_(G),SZJ_(G)) :: & - uf ! Total zonal fluxes in kg s-1. + uf ! Total zonal fluxes [kg s-1]. real, dimension(SZI_(G),SZJB_(G)) :: & - vf ! Total meridional fluxes in kg s-1. + vf ! Total meridional fluxes [kg s-1]. real, dimension(SZI_(G),SZJ_(G),SZCAT_(IG)) :: & mca0_ice, & ! The initial mass of ice per unit ocean area in a cell, in H (often kg m-2). mca0_snow ! The initial mass of snow per unit ocean area in a cell, in H (often kg m-2). @@ -235,11 +235,12 @@ subroutine finish_ice_transport(CAS, IST, TrReg, G, IG, CS, snow2ocn, rdg_rate) ! rdg_open, & ! formation rate of open water due to ridging ! rdg_vosh ! rate of ice mass shifted from level to ridged ice real :: yr_dt ! Tne number of timesteps in a year. - real, dimension(SZI_(G),SZJ_(G)) :: trans_conv ! The convergence of frozen water transport in kg m-2. + real, dimension(SZI_(G),SZJ_(G)) :: trans_conv ! The convergence of frozen water transport [kg m-2]. real, dimension(SZI_(G),SZJ_(G)) :: ice_cover ! The summed fractional ice concentration, ND. type(EFP_type) :: tot_ice, tot_snow, enth_ice, enth_snow real :: I_tot_ice, I_tot_snow - real :: Idt ! The reciprocal of the accumulated time, times a unit conversion factor, in kg H-1 m-2 s-1 + real :: Idt ! The reciprocal of the accumulated time, times a unit conversion factor, in + ! [kg H-1 m-2 s-1 ~> kg m-3 s-1 or s-1] integer :: i, j, k, isc, iec, jsc, jec, nCat isc = G%isc ; iec = G%iec ; jsc = G%jsc ; jec = G%jec ; nCat = IG%CatIce @@ -383,7 +384,7 @@ subroutine ice_state_to_cell_ave_state(IST, G, IG, CS, CAS) ! Local variables real, dimension(SZI_(G),SZJ_(G)) :: ice_cover ! The summed fractional ice concentration, ND. - real, dimension(SZI_(G),SZJ_(G)) :: mHi_avg ! The average ice mass-thickness in kg m-2. + real, dimension(SZI_(G),SZJ_(G)) :: mHi_avg ! The average ice mass-thickness [kg m-2]. integer :: i, j, k, isc, iec, jsc, jec, nCat isc = G%isc ; iec = G%iec ; jsc = G%jsc ; jec = G%jec ; nCat = IG%CatIce @@ -533,18 +534,18 @@ subroutine adjust_ice_categories(mH_ice, mH_snow, mH_pond, part_sz, TrReg, G, IG ! thicker than the bounding limits of each category. ! Local variables - real :: mca_trans ! The cell-averaged ice mass transfered between categories, in kg m-2. + real :: mca_trans ! The cell-averaged ice mass transfered between categories [kg m-2]. real :: part_trans ! The fractional area transfered between categories, nondim. - real :: snow_trans ! The cell-averaged snow transfered between categories, in kg m-2. - real :: pond_trans ! The cell-averaged pond transfered between categories, in kg m-2. + real :: snow_trans ! The cell-averaged snow transfered between categories [kg m-2]. + real :: pond_trans ! The cell-averaged pond transfered between categories [kg m-2]. real :: I_mH_lim1 ! The inverse of the lower thickness limit, in m2 kg-1. real, dimension(SZI_(G),SZCAT_(IG)) :: & ! The mass of snow, pond and ice per unit total area in a cell, in units of H ! (often kg m-2). "mca" stands for "mass cell averaged" mca_ice, mca_snow, mca_pond, & - ! Initial ice, snow and pond masses per unit cell area, in kg m-2. + ! Initial ice, snow and pond masses per unit cell area [kg m-2]. mca0_ice, mca0_snow, mca0_pond, & - ! Cross-catagory transfers of ice, snow and pond mass, in kg m-2. + ! Cross-catagory transfers of ice, snow and pond mass [kg m-2]. trans_ice, trans_snow, trans_pond logical :: do_any, do_j(SZJ_(G)) integer :: i, j, k, m, is, ie, js, je, nCat @@ -937,9 +938,9 @@ subroutine get_total_mass(IST, G, IG, tot_ice, tot_snow, tot_pond, scale) type(ice_state_type), intent(in) :: IST !< A type describing the state of the sea ice type(SIS_hor_grid_type), intent(in) :: G !< The horizontal grid type type(ice_grid_type), intent(in) :: IG !< The sea-ice specific grid type - type(EFP_type), intent(out) :: tot_ice !< The globally integrated total ice, in kg. - type(EFP_type), intent(out) :: tot_snow !< The globally integrated total snow, in kg. - type(EFP_type),optional, intent(out) :: tot_pond !< The globally integrated total snow, in kg. + type(EFP_type), intent(out) :: tot_ice !< The globally integrated total ice [kg]. + type(EFP_type), intent(out) :: tot_snow !< The globally integrated total snow [kg]. + type(EFP_type),optional, intent(out) :: tot_pond !< The globally integrated total snow [kg]. real, optional, intent(in) :: scale !< A scaling factor from H to the desired units. real, dimension(G%isc:G%iec, G%jsc:G%jec) :: sum_ice, sum_snow, sum_pond diff --git a/src/SIS_types.F90 b/src/SIS_types.F90 index 6309ede0..bf5a7264 100644 --- a/src/SIS_types.F90 +++ b/src/SIS_types.F90 @@ -172,11 +172,11 @@ module SIS_types flux_u_top , & !< The downward flux of zonal momentum on an A-grid [Pa]. flux_v_top , & !< The downward flux of meridional momentum on an A-grid [Pa]. flux_sh_top , & !< The upward sensible heat flux at the ice top in W m-2. - evap_top , & !< The upward evaporative moisture flux at top of the ice, in kg m-2 s-1. + evap_top , & !< The upward evaporative moisture flux at top of the ice [kg m-2 s-1]. flux_lw_top , & !< The net downward flux of longwave radiation at the top of the ice, in W m-2. flux_lh_top , & !< The upward flux of latent heat at the top of the ice, in W m-2. - lprec_top , & !< The downward flux of liquid precipitation at the top of the ice, in kg m-2 s-1. - fprec_top , & !< The downward flux of frozen precipitation at the top of the ice, in kg m-2 s-1. + lprec_top , & !< The downward flux of liquid precipitation at the top of the ice [kg m-2 s-1]. + fprec_top , & !< The downward flux of frozen precipitation at the top of the ice [kg m-2 s-1]. tmelt , & !< Ice-top melt energy into the ice/snow in J m-2. bmelt , & !< Ice-bottom melting energy into the ice in J m-2. Tskin_cat !< The ice skin temperature by category [degC]. @@ -198,14 +198,14 @@ module SIS_types WindStr_ocn_x, & !< The zonal wind stress on open water on an A-grid [Pa]. WindStr_ocn_y, & !< The meridional wind stress on open water on an A-grid [Pa]. p_atm_surf , & !< The atmospheric pressure at the top of the ice [Pa]. - runoff, & !< Liquid runoff into the ocean, in kg m-2. - calving !< Calving of ice or runoff of frozen fresh water into the ocean, in kg m-2. + runoff, & !< Liquid runoff into the ocean [kg m-2]. + calving !< Calving of ice or runoff of frozen fresh water into the ocean [kg m-2]. real, allocatable, dimension(:,:) :: runoff_hflx !< The heat flux associated with runoff, based !! on the temperature difference relative to a reference temperature, in ???. real, allocatable, dimension(:,:) :: calving_hflx !< The heat flux associated with calving, based !! on the temperature difference relative to a reference temperature, in ???. real, allocatable, dimension(:,:) :: calving_preberg !< Calving of ice or runoff of frozen fresh - !! water into the ocean, exclusive of any iceberg contributions, in kg m-2. + !! water into the ocean, exclusive of any iceberg contributions [kg m-2]. real, allocatable, dimension(:,:) :: calving_hflx_preberg !< The heat flux associated with calving !! exclusive of any iceberg contributions, based on the temperature difference !! relative to a reference temperature, in ???. @@ -227,7 +227,7 @@ module SIS_types real, allocatable, dimension(:,:,:) :: flux_sh0 !< The upward sensible heat flux at the ice top !! extrapolated to a skin temperature of 0 degC, in W m-2. real, allocatable, dimension(:,:,:) :: evap0 !< The upward evaporative moisture flux - !! at the top of the ice extrapolated to a skin temperature of 0 degC, in kg m-2 s-1. + !! at the top of the ice extrapolated to a skin temperature of 0 degC [kg m-2 s-1]. real, allocatable, dimension(:,:,:) :: flux_lw0 !< The net downward flux of longwave radiation !! at the top of the ice extrapolated to a skin temperature of 0 degC, in W m-2. real, allocatable, dimension(:,:,:) :: & @@ -266,11 +266,11 @@ module SIS_types flux_u , & !< The downward flux of zonal momentum on an A-grid [Pa]. flux_v , & !< The downward flux of meridional momentum on an A-grid [Pa]. flux_sh , & !< The upward sensible heat flux at the ice top in W m-2. - evap , & !< The upward evaporative moisture flux at top of the ice, in kg m-2 s-1. + evap , & !< The upward evaporative moisture flux at top of the ice [kg m-2 s-1]. flux_lw , & !< The downward flux of longwave radiation at the top of the ice, in W m-2. flux_lh , & !< The upward flux of latent heat at the top of the ice, in W m-2. - lprec , & !< The downward flux of liquid precipitation at the top of the ice, in kg m-2 s-1. - fprec !< The downward flux of frozen precipitation at the top of the ice, in kg m-2 s-1. + lprec , & !< The downward flux of liquid precipitation at the top of the ice [kg m-2 s-1]. + fprec !< The downward flux of frozen precipitation at the top of the ice [kg m-2 s-1]. real, allocatable, dimension(:,:,:) :: flux_sw !< The downward flux of shortwave radiation at the top of the sea-ice in W m-2. !! The third dimension combines angular orientation (direct or diffuse) and @@ -342,19 +342,19 @@ module SIS_types ! These variables describe the fluxes between ice or atmosphere and the ocean. real, allocatable, dimension(:,:) :: & flux_sh_ocn_top, & !< The upward sensible heat flux from the ocean to the ice or atmosphere, in W m-2. - evap_ocn_top, & !< The upward evaporative moisture flux at the ocean surface, in kg m-2 s-1. + evap_ocn_top, & !< The upward evaporative moisture flux at the ocean surface [kg m-2 s-1]. flux_lw_ocn_top, & !< The downward flux of longwave radiation at the ocean surface, in W m-2. flux_lh_ocn_top, & !< The upward flux of latent heat at the ocean surface, in W m-2. - lprec_ocn_top, & !< The downward flux of liquid precipitation at the ocean surface, in kg m-2 s-1. - fprec_ocn_top, & !< The downward flux of frozen precipitation at the ocean surface, in kg m-2 s-1. + lprec_ocn_top, & !< The downward flux of liquid precipitation at the ocean surface [kg m-2 s-1]. + fprec_ocn_top, & !< The downward flux of frozen precipitation at the ocean surface [kg m-2 s-1]. flux_u_ocn, & !< The flux of x-momentum into the ocean at locations given by flux_uv_stagger [Pa]. !! Note that regardless of the staggering, flux_u_ocn is allocated as though on an A-grid. flux_v_ocn, & !< The flux of y-momentum into the ocean at locations given by flux_uv_stagger [Pa]. !! Note that regardless of the staggering, flux_v_ocn is allocated as though on an A-grid. stress_mag, & !< The area-weighted time-mean of the magnitude of the stress on the ocean [Pa]. melt_nudge, & !< A downward fresh water flux into the ocean that acts to nudge the ocean - !! surface salinity to facilitate the retention of sea ice, in kg m-2 s-1. - flux_salt !< The flux of salt out of the ocean in kg m-2. + !! surface salinity to facilitate the retention of sea ice [kg m-2 s-1]. + flux_salt !< The flux of salt out of the ocean [kg m-2]. real, allocatable, dimension(:,:,:) :: flux_sw_ocn !< The downward flux of shortwave radiation !! at the ocean surface in W m-2. The third dimension combines !! angular orientation (direct or diffuse) and frequency diff --git a/src/ice_age_tracer.F90 b/src/ice_age_tracer.F90 index 76f87043..f8df4017 100644 --- a/src/ice_age_tracer.F90 +++ b/src/ice_age_tracer.F90 @@ -291,10 +291,10 @@ subroutine ice_age_tracer_column_physics(dt, G, IG, CS, mi, mi_old) type(ice_age_tracer_CS), pointer :: CS !< The control structure returned by a !! previous call to register_ideal_age_tracer. real, dimension(SZI_(G),SZJ_(G),SZCAT_(IG)), & - intent(in) :: mi !< Mass of ice in a given category in kg m-2 at the + intent(in) :: mi !< Mass of ice in a given category [kg m-2] at the !! end of the timestep real, dimension(SZI_(G),SZJ_(G),SZCAT_(IG)), & - intent(in) :: mi_old !< Mass of ice in a given category in kg m-2 at the + intent(in) :: mi_old !< Mass of ice in a given category [kg m-2] at the !! beginning of the timestep ! Local variables @@ -386,7 +386,7 @@ function ice_age_stock(mi, stocks, G, IG, CS, names, units) type(sis_hor_grid_type), intent(in) :: G !< The horizontal grid type type(ice_grid_type), intent(in) :: IG !< The sea-ice specific grid type real, dimension(SZI_(G),SZJ_(G),SZCAT_(IG)), & - intent(in) :: mi !< Mass of ice in a given category in kg m-2, used for summing + intent(in) :: mi !< Mass of ice in a given category [kg m-2], used for summing type(ice_age_tracer_CS), pointer :: CS !< The control structure returned by a !! previous call to register_ideal_age_tracer. character(len=*), dimension(:), intent(out) :: names !< The names of the summed tracer stocks. diff --git a/src/ice_boundary_types.F90 b/src/ice_boundary_types.F90 index e41969f7..47ae7c38 100644 --- a/src/ice_boundary_types.F90 +++ b/src/ice_boundary_types.F90 @@ -56,7 +56,7 @@ module ice_boundary_types t_flux => NULL(), & !< The net sensible heat flux flux from the ocean or ice into the !! atmosphere at the surface, in W m-2. q_flux => NULL(), & !< The flux of moisture from the ice or ocean to the - !! atmosphere due to evaporation or sublimation, in kg m-2 s-1. + !! atmosphere due to evaporation or sublimation [kg m-2 s-1]. lw_flux => NULL(), & !< The net flux of longwave radiation from the atmosphere into the !! ice or ocean, in W m-2. !! sw_flux_tot_down => NULL(), & !< The total downward flux of shortwave radiation @@ -71,12 +71,12 @@ module ice_boundary_types sw_down_nir_dif => NULL(), & !< into the ice or ocean, in W m-2. lprec => NULL(), & !< The liquid precipitation from the atmosphere onto the - !! atmosphere or ice in each thickness category, in kg m-2 s-1. + !! atmosphere or ice in each thickness category [kg m-2 s-1]. !! Rain falling on snow is currently assumed to pass or drain !! directly through the ice into the ocean; this should be !! revisited! fprec => NULL(), & !< The frozen precipitation (snowfall) from the atmosphere - !! to the ice or ocean, in kg m-2 s-1. Currently in SIS2 + !! to the ice or ocean [kg m-2 s-1]. Currently in SIS2 !! all frozen precipitation, including snow, sleet, hail !! and graupel, are all treated as snow. dhdt => NULL(), & !< The derivative of the upward sensible heat flux with the @@ -98,11 +98,10 @@ module ice_boundary_types !> A type for exchange between the land and the sea ice type land_ice_boundary_type real, dimension(:,:), pointer :: & - runoff =>NULL(), & !< The liquid runoff into the ocean, in kg m-2. + runoff =>NULL(), & !< The liquid runoff into the ocean [kg m-2]. calving =>NULL(), & !< The frozen runoff into each cell, that is offered !! first to the icebergs (if any), where it might be - !! used or modified before being passed to the ocean, - !! in kg m-2. + !! used or modified before being passed to the ocean [kg m-2]. runoff_hflx =>NULL(), & !< The heat flux associated with the temperature of !! of the liquid runoff, relative to liquid water !! at 0 degC, in W m-2. diff --git a/src/ice_model.F90 b/src/ice_model.F90 index ef2f00d3..40e10f38 100644 --- a/src/ice_model.F90 +++ b/src/ice_model.F90 @@ -1033,8 +1033,8 @@ subroutine set_ice_surface_state(Ice, IST, OSS, Rad, FIA, G, IG, fCS) ! for the current partition, non-dimensional and 0 to 1. real :: u, v real :: area_pt - real :: rho_ice ! The nominal density of sea ice in kg m-3. - real :: rho_snow ! The nominal density of snow in kg m-3. + real :: rho_ice ! The nominal density of sea ice [kg m-3]. + real :: rho_snow ! The nominal density of snow [kg m-3]. type(time_type) :: dt_r ! A temporary radiation timestep. integer :: i, j, k, m, n, i2, j2, k2, isc, iec, jsc, jec, ncat, i_off, j_off @@ -1223,8 +1223,8 @@ subroutine set_ice_optics(IST, OSS, Tskin_ice, coszen, Rad, G, IG, optics_CSp) type(SIS_optics_CS), intent(in) :: optics_CSp !< The control structure for optics calculations real, dimension(IG%NkIce) :: sw_abs_lay - real :: rho_ice ! The nominal density of sea ice in kg m-3. - real :: rho_snow ! The nominal density of snow in kg m-3. + real :: rho_ice ! The nominal density of sea ice [kg m-3]. + real :: rho_snow ! The nominal density of snow [kg m-3]. real :: albedos(4) ! The albedos for the various wavelenth and direction bands ! for the current partition, non-dimensional and 0 to 1. real :: H_to_m_ice ! The specific volumes of ice and snow times the @@ -1728,9 +1728,9 @@ subroutine ice_model_init(Ice, Time_Init, Time, Time_step_fast, Time_step_slow, real :: coszen_IC ! A constant value that is used to initialize ! coszen if it is not read from a restart file, or a ! negative number to use the time and geometry. - real :: rho_ice ! The nominal density of sea ice in kg m-3. - real :: rho_snow ! The nominal density of snow in kg m-3. - real :: rho_Ocean ! The nominal density of seawater, in kg m-3. + real :: rho_ice ! The nominal density of sea ice [kg m-3]. + real :: rho_snow ! The nominal density of snow [kg m-3]. + real :: rho_Ocean ! The nominal density of seawater [kg m-3]. real :: kmelt ! A constant that is used in the calculation of the ! ocean/ice basal heat flux [W m-2 degC-1]. This could ! be changed to reflect the turbulence in the under-ice @@ -2818,7 +2818,7 @@ end subroutine share_ice_domains !> initialize_ice_categories sets the bounds of the ice thickness categories. subroutine initialize_ice_categories(IG, Rho_ice, param_file, hLim_vals) type(ice_grid_type), intent(inout) :: IG !< The sea-ice specific grid type - real, intent(in) :: Rho_ice !< The nominal ice density, in kg m-3. + real, intent(in) :: Rho_ice !< The nominal ice density [kg m-3]. type(param_file_type), intent(in) :: param_file !< A structure to parse for run-time parameters real, dimension(:), optional, intent(in) :: hLim_vals !< The ice category thickness limits, in m. diff --git a/src/ice_shortwave_dEdd.F90 b/src/ice_shortwave_dEdd.F90 index ddfb2f67..d8e9a79d 100644 --- a/src/ice_shortwave_dEdd.F90 +++ b/src/ice_shortwave_dEdd.F90 @@ -68,8 +68,8 @@ module ice_shortwave_dEdd awtidf = 0.36218_dbl_kind !< near IR, diffuse band weight for history and diagnostics real (kind=dbl_kind), parameter :: & - Timelt = 0.0_dbl_kind,& !< melting temperature, ice top surface (C) - rhos = 330.0_dbl_kind !< density of snow (kg/m^3) + Timelt = 0.0_dbl_kind,& !< melting temperature, ice top surface [degC] + rhos = 330.0_dbl_kind !< density of snow [kg m-3] real (kind=dbl_kind), parameter :: & @@ -188,7 +188,7 @@ subroutine shortwave_dEdd0( nx_block, ny_block, & fs !< horizontal coverage of snow real (kind=dbl_kind), dimension (nx_block,ny_block,nslyr), intent(in) :: & - rhosnw !< density in snow layer (kg/m3) + rhosnw !< density in snow layer [kg m-3] real (kind=dbl_kind), dimension (nx_block,ny_block,nslyr), intent(in) :: & rsnw !< grain radius in snow layer (m) @@ -546,7 +546,7 @@ subroutine compute_dEdd0(nx_block, ny_block, & hs !< snow thickness (m) real (kind=dbl_kind), dimension (nx_block,ny_block,nslyr), intent(in) :: & - rhosnw !< snow density in snow layer (kg/m3) + rhosnw !< snow density in snow layer [kg m-3] real (kind=dbl_kind), dimension (nx_block,ny_block,nslyr), intent(in) :: & rsnw !< snow grain radius in snow layer (m) @@ -774,7 +774,7 @@ subroutine compute_dEdd0(nx_block, ny_block, & gs_tab ! assymetry parameter for each snow grain radius real (kind=dbl_kind) :: & delr , & ! snow grain radius interpolation parameter - rhoi , & ! pure ice density (kg/m3) + rhoi , & ! pure ice density [kg m-3] fr , & ! snow grain adjustment factor fr_max , & ! snow grain adjustment factor max fr_min ! snow grain adjustment factor min @@ -1005,7 +1005,7 @@ subroutine compute_dEdd0(nx_block, ny_block, & ! snow data data hs_ssl / 0.040_dbl_kind / ! snow surface scattering layer thickness (m) - data rhoi /917.0_dbl_kind / ! snow mass density (kg/m3) + data rhoi /917.0_dbl_kind / ! snow mass density [kg m-3] data fr_max / 1.00_dbl_kind / ! snow grain adjustment factor max data fr_min / 0.80_dbl_kind / ! snow grain adjustment factor min @@ -2215,7 +2215,7 @@ subroutine shortwave_dEdd0_set_snow(nx_block, ny_block, & fs !< horizontal coverage of snow real (kind=dbl_kind), dimension (nx_block,ny_block,nslyr), intent(out) :: & - rhosnw !< density in snow layer (kg/m3) + rhosnw !< density in snow layer [kg m-3] real (kind=dbl_kind), dimension (nx_block,ny_block,nslyr), intent(out) :: & rsnw !< grain radius in snow layer (micro-meters) ! diff --git a/src/ice_type.F90 b/src/ice_type.F90 index 865f4b2f..158dbfea 100644 --- a/src/ice_type.F90 +++ b/src/ice_type.F90 @@ -95,36 +95,36 @@ module ice_type_mod flux_u => NULL(), & !< The flux of x-momentum into the ocean [Pa]. flux_v => NULL(), & !< The flux of y-momentum into the ocean [Pa]. flux_t => NULL(), & !< The flux of sensible heat out of the ocean, in W m-2. - flux_q => NULL(), & !< The evaporative moisture flux out of the ocean, in kg m-2 s-1. + flux_q => NULL(), & !< The evaporative moisture flux out of the ocean [kg m-2 s-1]. flux_lw => NULL(), & !< The longwave flux out of the ocean, in W m-2. flux_sw_vis_dir => NULL(), & !< The direct visible shortwave heat flux into the ocean in W m-2. flux_sw_vis_dif => NULL(), & !< The diffuse visible shortwave heat flux into the ocean in W m-2. flux_sw_nir_dir => NULL(), & !< The direct near-infrared heat flux into the ocean in W m-2. flux_sw_nir_dif => NULL(), & !< The diffuse near-infrared heat flux into the ocean in W m-2. flux_lh => NULL(), & !< The latent heat flux out of the ocean, in W m-2. - lprec => NULL(), & !< The liquid precipitation flux into the ocean, in kg m-2. - fprec => NULL(), & !< The frozen precipitation flux into the ocean, in kg m-2. + lprec => NULL(), & !< The liquid precipitation flux into the ocean [kg m-2]. + fprec => NULL(), & !< The frozen precipitation flux into the ocean [kg m-2]. p_surf => NULL(), & !< The pressure at the ocean surface [Pa]. This may !! or may not include atmospheric pressure. - runoff => NULL(), & !< Liquid runoff into the ocean, in kg m-2. + runoff => NULL(), & !< Liquid runoff into the ocean [kg m-2]. calving => NULL(), & !< Calving of ice or runoff of frozen fresh water into - !! the ocean, in kg m-2. + !! the ocean [kg m-2]. stress_mag => NULL(), & !< The time-mean magnitude of the stress on the ocean [Pa]. ustar_berg => NULL(), & !< ustar contribution below icebergs in m/s - area_berg => NULL(), & !< fraction of grid cell covered by icebergs in m2/m2 - mass_berg => NULL(), & !< mass of icebergs in kg/m^2 + area_berg => NULL(), & !< fraction of grid cell covered by icebergs in [m2 m-2] + mass_berg => NULL(), & !< mass of icebergs in [kg m-2] runoff_hflx => NULL(), & !< The heat flux associated with runoff, based on !! the temperature difference relative to a !! reference temperature, in ???. calving_hflx => NULL(), & !< The heat flux associated with calving, based on !! the temperature difference relative to a !! reference temperature, in ???. - flux_salt => NULL() !< The flux of salt out of the ocean in kg m-2. + flux_salt => NULL() !< The flux of salt out of the ocean [kg m-2]. real, pointer, dimension(:,:) :: & area => NULL() , & !< The area of ocean cells, in m2. Land cells have !! a value of 0, so this could also be used as a mask. - mi => NULL() !< The total ice+snow mass, in kg m-2. + mi => NULL() !< The total ice+snow mass [kg m-2]. ! mi is needed for the wave model. It is introduced here, ! because flux_ice_to_ocean cannot handle 3D fields. This may be ! removed, if the information on ice thickness can be derived from