@@ -39,16 +39,16 @@ module MARBL_forcing_mod
3939 type (diag_ctrl), pointer :: diag = > NULL () ! < A structure that is used to
4040 ! ! regulate the timing of diagnostic output.
4141
42- real :: dust_ratio_thres ! < coarse/fine dust ratio threshold
43- real :: dust_ratio_to_fe_bioavail_frac ! < ratio of dust to iron bioavailability fraction
44- real :: fe_bioavail_frac_offset ! < offset for iron bioavailability fraction
45- real :: atm_fe_to_bc_ratio ! < atmospheric iron to black carbon ratio
46- real :: atm_bc_fe_bioavail_frac ! < atmospheric black carbon to iron bioavailablity fraction ratio
47- real :: seaice_fe_to_bc_ratio ! < sea-ice iron to black carbon ratio
48- real :: seaice_bc_fe_bioavail_frac ! < sea-ice black carbon to iron bioavailablity fraction ratio
49- real :: iron_frac_in_atm_fine_dust ! < Fraction of fine dust from the atmosphere that is iron
50- real :: iron_frac_in_atm_coarse_dust ! < Fraction of coarse dust from the atmosphere that is iron
51- real :: iron_frac_in_seaice_dust ! < Fraction of dust from the sea ice that is iron
42+ real :: dust_ratio_thres ! < coarse/fine dust ratio threshold [1]
43+ real :: dust_ratio_to_fe_bioavail_frac ! < ratio of dust to iron bioavailability fraction [1]
44+ real :: fe_bioavail_frac_offset ! < offset for iron bioavailability fraction [1]
45+ real :: atm_fe_to_bc_ratio ! < atmospheric iron to black carbon ratio [1]
46+ real :: atm_bc_fe_bioavail_frac ! < atmospheric black carbon to iron bioavailablity fraction ratio [1]
47+ real :: seaice_fe_to_bc_ratio ! < sea-ice iron to black carbon ratio [1]
48+ real :: seaice_bc_fe_bioavail_frac ! < sea-ice black carbon to iron bioavailablity fraction ratio [1]
49+ real :: iron_frac_in_atm_fine_dust ! < Fraction of fine dust from the atmosphere that is iron [1]
50+ real :: iron_frac_in_atm_coarse_dust ! < Fraction of coarse dust from the atmosphere that is iron [1]
51+ real :: iron_frac_in_seaice_dust ! < Fraction of dust from the sea ice that is iron [1]
5252 real :: atm_co2_const ! < atmospheric CO2 (if specifying a constant value) [ppm]
5353 real :: atm_alt_co2_const ! < alternate atmospheric CO2 for _ALT_CO2 tracers
5454 ! ! (if specifying a constant value) [ppm]
@@ -99,28 +99,25 @@ subroutine MARBL_forcing_init(G, US, param_file, diag, day, inputdir, use_marbl,
9999 endif
100100
101101 call get_param(param_file, mdl, " DUST_RATIO_THRES" , CS% dust_ratio_thres, &
102- " TODO: Add description" , units= " add_units" , default= 69.00594 )
103- call get_param(param_file, mdl, " DUST_RATIO_TO_FE_BIOAVAIL_FRAC" , &
104- CS% dust_ratio_to_fe_bioavail_frac, &
105- " TODO: Add description" , units= " add_units" , default= 1 ./ 366.314 )
102+ " coarse/fine dust ratio threshold" , units= " 1" , default= 69.00594 )
103+ call get_param(param_file, mdl, " DUST_RATIO_TO_FE_BIOAVAIL_FRAC" , CS% dust_ratio_to_fe_bioavail_frac, &
104+ " ratio of dust to iron bioavailability fraction" , units= " 1" , default= 1 ./ 366.314 )
106105 call get_param(param_file, mdl, " FE_BIOAVAIL_FRAC_OFFSET" , CS% fe_bioavail_frac_offset, &
107- " TODO: Add description " , units= " add_units " , default= 0.0146756 )
106+ " offset for iron bioavailability fraction " , units= " 1 " , default= 0.0146756 )
108107 call get_param(param_file, mdl, " ATM_FE_TO_BC_RATIO" , CS% atm_fe_to_bc_ratio, &
109- " TODO: Add description " , units= " add_units " , default= 1 .)
108+ " atmospheric iron to black carbon ratio " , units= " 1 " , default= 1 .)
110109 call get_param(param_file, mdl, " ATM_BC_FE_BIOAVAIL_FRAC" , CS% atm_bc_fe_bioavail_frac, &
111- " TODO: Add description " , units= " add_units " , default= 0.06 )
110+ " atmospheric black carbon to iron bioavailablity fraction ratio " , units= " 1 " , default= 0.06 )
112111 call get_param(param_file, mdl, " SEAICE_FE_TO_BC_RATIO" , CS% seaice_fe_to_bc_ratio, &
113- " TODO: Add description " , units= " add_units " , default= 1 .)
112+ " sea-ice iron to black carbon ratio " , units= " 1 " , default= 1 .)
114113 call get_param(param_file, mdl, " SEAICE_BC_FE_BIOAVAIL_FRAC" , CS% seaice_bc_fe_bioavail_frac, &
115- " TODO: Add description " , units= " add_units " , default= 0.06 )
114+ " sea-ice black carbon to iron bioavailablity fraction ratio " , units= " 1 " , default= 0.06 )
116115 call get_param(param_file, mdl, " IRON_FRAC_IN_ATM_FINE_DUST" , CS% iron_frac_in_atm_fine_dust, &
117- " Fraction of fine dust from the atmosphere that is iron" , units= " add_units" , default= 0.035 )
118- call get_param(param_file, mdl, " IRON_FRAC_IN_ATM_COARSE_DUST" , &
119- CS% iron_frac_in_atm_coarse_dust, &
120- " Fraction of coarse dust from the atmosphere that is iron" , units= " add_units" , &
121- default= 0.035 )
116+ " Fraction of fine dust from the atmosphere that is iron" , units= " 1" , default= 0.035 )
117+ call get_param(param_file, mdl, " IRON_FRAC_IN_ATM_COARSE_DUST" , CS% iron_frac_in_atm_coarse_dust, &
118+ " Fraction of coarse dust from the atmosphere that is iron" , units= " 1" , default= 0.035 )
122119 call get_param(param_file, mdl, " IRON_FRAC_IN_SEAICE_DUST" , CS% iron_frac_in_seaice_dust, &
123- " Fraction of dust from sea ice that is iron" , units= " add_units " , default= 0.035 )
120+ " Fraction of dust from sea ice that is iron" , units= " 1 " , default= 0.035 )
124121 call get_param(param_file, mdl, " ATM_CO2_OPT" , atm_co2_opt, &
125122 " Source of atmospheric CO2 [constant, diagnostic, or prognostic]" , &
126123 default= " constant" )
@@ -219,17 +216,20 @@ subroutine convert_driver_fields_to_forcings(atm_fine_dust_flux, atm_coarse_dust
219216 ! ! control structure for MARBL forcing
220217
221218 integer :: i, j, is, ie, js, je, m
222- real :: atm_fe_bioavail_frac ! < TODO: define this (local) term
223- real :: seaice_fe_bioavail_frac ! < TODO: define this (local) term
224- real :: iron_flux_conversion ! < TODO: define this (local) term
225- real :: ndep_conversion ! < Combination of unit conversion factors for rescaling
226- ! ! nitrogen deposition [kg(N) m-2 s-1 ~> mol m-3 Z T-1]
219+ real :: atm_fe_bioavail_frac ! < Fraction of iron from the atmosphere available for biological uptake [1]
220+ real :: seaice_fe_bioavail_frac ! < Fraction of iron from sea ice available for biological uptake [1]
221+ ! Note: following two conversion factors are used to both convert from km m-2 s-1 -> mmol m-2 s-1
222+ ! ! AND cast in MOM6's unique dimensional consistency scaling system [conc Z T-1]
223+ real :: iron_flux_conversion ! < Factor to convert iron flux from kg m-2 s-1 -> mmol m-3 (m s-1)
224+ ! ! [s m2 kg-1 conc Z T-1 ~> mmol kg-1]
225+ real :: ndep_conversion ! < Factor to convert nitrogen deposition from kg m-2 s-1 -> mmol m-3 (m s-1)
226+ ! ! [s m2 kg-1 conc Z T-1 ~> mmol kg-1]
227227
228228 if (.not. CS% use_marbl_tracers) return
229229
230230 is = G% isc ; ie = G% iec ; js = G% jsc ; je = G% jec
231- ndep_conversion = (1.e6 / 14 .) * (US% m_to_Z * US% T_to_s) ! kg / m^2 / s -> conc Z / T
232- iron_flux_conversion = (1.e6 / molw_Fe) * (US% m_to_Z * US% T_to_s) ! kg / m^2 / s -> conc Z / T
231+ ndep_conversion = (1.e6 / 14 .) * (US% m_to_Z * US% T_to_s)
232+ iron_flux_conversion = (1.e6 / molw_Fe) * (US% m_to_Z * US% T_to_s)
233233
234234 ! Post fields from coupler to diagnostics
235235 ! TODO: units from diag register are incorrect; we should be converting these in the cap, I think
@@ -310,8 +310,8 @@ subroutine convert_driver_fields_to_forcings(atm_fine_dust_flux, atm_coarse_dust
310310 ! Dust flux
311311 if (associated (atm_fine_dust_flux)) then
312312 do j= js,je ; do i= is,ie
313- fluxes% dust_flux(i,j) = US% kg_m2s_to_RZ_T * G% mask2dT(i,j) * &
314- (atm_fine_dust_flux(i- i0,j- j0) + atm_coarse_dust_flux(i- i0,j- j0) + &
313+ fluxes% dust_flux(i,j) = ( US% kg_m2s_to_RZ_T * G% mask2dT(i,j) ) * &
314+ (( atm_fine_dust_flux(i- i0,j- j0) + atm_coarse_dust_flux(i- i0,j- j0) ) + &
315315 seaice_dust_flux(i- i0,j- j0))
316316 enddo ; enddo
317317 endif
@@ -346,7 +346,7 @@ subroutine convert_driver_fields_to_forcings(atm_fine_dust_flux, atm_coarse_dust
346346 fluxes% iron_flux(i,j) = fluxes% iron_flux(i,j) + (CS% seaice_bc_fe_bioavail_frac * &
347347 (CS% seaice_fe_to_bc_ratio * seaice_bc_flux(i- i0,j- j0)))
348348
349- ! Unit conversion (kg / m^2 / s -> conc Z/T )
349+ ! Unit conversion (kg m-2 s-1 -> conc Z T-1 )
350350 fluxes% iron_flux(i,j) = (G% mask2dT(i,j) * iron_flux_conversion) * fluxes% iron_flux(i,j)
351351
352352 enddo ; enddo
@@ -369,7 +369,7 @@ subroutine convert_driver_fields_to_forcings(atm_fine_dust_flux, atm_coarse_dust
369369 fluxes% qsw_cat(i,j,:) = 0 .
370370 endwhere
371371 fluxes% fracr_cat(i,j,:) = G% mask2dT(i,j) * fluxes% fracr_cat(i,j,:)
372- fluxes% qsw_cat(i,j,:) = G% mask2dT(i,j) * fluxes% qsw_cat(i,j,:)
372+ fluxes% qsw_cat(i,j,:) = (US % W_m2_to_QRZ_T * G% mask2dT(i,j) ) * fluxes% qsw_cat(i,j,:)
373373 enddo ; enddo
374374 endif
375375
0 commit comments