Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions src/core_ocean/adc_mixing/Registry_adc_mixing_fields_opts.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@
description="flag to use buoyancy length scale from previous closure, temporary"
possible_values=".true. or .false."
/>
<nml_option name="config_use_grad_diff_horiz_mom_flux" type="logical" default_value=".false." units="unitless"
description="flag to use down gradient diffusion closure for horizontal momentum fluxes"
possible_values=".true. or .false."
/>
<nml_option name="config_adc_truncate_tend" type="logical" default_value=".false." units="unitless"
description="flag to truncate tendency terms"
possible_values=".true. or .false."
Expand Down Expand Up @@ -66,15 +70,19 @@
<nml_option name="config_adc_alpha_tracer1" type="real" default_value="0.6" units="unitless"
description="alpha_scalar1 first rapid pressure coefficient in tracer flux budgets (Mironov 2001)"
possible_values="suggested values: 0.6 (Canuto 2001) or equal to alpha_scalar2, >0, <1 (Harcourt 2013)"
/>
/>
<nml_option name="config_adc_alpha_tracer2" type="real" default_value="1.0" units="unitless"
description="alpha_scalar2 rapid pressure coefficient in tracer flux budgets (Mironov 2001)"
possible_values="suggested values: 1.0 (Canuto 2001) or equal to alpha_scalar2, >0, <1 (Harcourt 2013)"
/>
/>
<nml_option name="config_adc_c11" type="real" default_value="0.1" units="unitless"
description="c_11 is the buoyancy contribution in the pressure correlation in w3 eqn"
possible_values="values near 0.1"
/>
<nml_option name="config_adc_Cmom_flux" type="real" default_value="0.1" units="unitless"
description="horizontal momentum flux down gradient coefficient"
possible_values="values near 0.1"
/>
<nml_option name="config_adc_Cmom" type="real" default_value="0.0" units="unitless"
description="third order down gradient coefficient, from lappen and randall 2001b"
possible_values="values near 0.5"
Expand Down
15 changes: 11 additions & 4 deletions src/core_ocean/shared/mpas_ocn_adcReconstruct.F
Original file line number Diff line number Diff line change
Expand Up @@ -1064,10 +1064,17 @@ subroutine compute_ADC_tends(nCells,nVertLevels, nTracers, dt,activeTracers, uve
v2(i2,k,iCell) = epsilon
endif

uw(i2,k,iCell) = uw(i1,k,iCell) + dt_small*(Cw3 * uwtend(i3_f,k,iCell) + &
Cw2 * uwtend(i2_f,k,iCell) + Cw1 * uwtend(i1_f,k,iCell))
vw(i2,k,iCell) = vw(i1,k,iCell) + dt_small*(Cw3 * vwtend(i3_f,k,iCell) + &
Cw2 * vwtend(i2_f,k,iCell) + Cw1 * vwtend(i1_f,k,iCell))
if (config_use_grad_diff_horiz_mom_flux) then
Uz = (uvel(k-1,iCell) - uvel(k,iCell)) / dzmid
Vz = (vvel(k-1,iCell) - vvel(k,iCell)) / dzmid
uw(i2,k,iCell) = -C_mom_flux*sqrt(0.5_RKIND*(u2(i1,k,iCell) + v2(i1,k,iCell) + w2(i1,k,iCell)))*length(k,iCell)*Uz
vw(i2,k,iCell) = -C_mom_flux*sqrt(0.5_RKIND*(u2(i1,k,iCell) + v2(i1,k,iCell) + w2(i1,k,iCell)))*length(k,iCell)*Vz
else
uw(i2,k,iCell) = uw(i1,k,iCell) + dt_small*(Cw3 * uwtend(i3_f,k,iCell) + &
Cw2 * uwtend(i2_f,k,iCell) + Cw1 * uwtend(i1_f,k,iCell))
vw(i2,k,iCell) = vw(i1,k,iCell) + dt_small*(Cw3 * vwtend(i3_f,k,iCell) + &
Cw2 * vwtend(i2_f,k,iCell) + Cw1 * vwtend(i1_f,k,iCell))
endif
uv(i2,k,iCell) = uv(i1,k,iCell) + dt_small*(Cw3 * uvtend(i3_f,k,iCell) + &
Comment thread
katsmith133 marked this conversation as resolved.
Outdated
Cw2 * uvtend(i2_f,k,iCell) + Cw1 * uvtend(i1_f,k,iCell))
ut(i2,k,iCell) = ut(i1,k,iCell) + dt_small*(Cw3 * uttend(i3_f,k,iCell) + &
Comment thread
katsmith133 marked this conversation as resolved.
Expand Down
7 changes: 6 additions & 1 deletion src/core_ocean/shared/mpas_ocn_turbulence.F
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ module ocn_turbulence

real(kind=RKIND),public :: epsilon, &! small value below which w2, v2, u2 cannot go
sigmat, Ko, c_b, c_b_tracer, alpha_tracer1, alpha_tracer2, c11, &
alpha_0, alpha_1, alpha_2, B1, Kt, grav, c_mom, &
alpha_0, alpha_1, alpha_2, B1, Kt, grav, c_mom, c_mom_flux, &
c_therm, c_mom_w3, c_epsilon, c_slow, c_slow_tracer, slow_w_factor, &
kappa_FL, kappa_w3, kappa_VAR, Cww_D, Cww_E, adcRound

Expand Down Expand Up @@ -162,6 +162,7 @@ subroutine ocn_turbulenceCreate(domain)
Kt = 0.4_RKIND
c_b = config_adc_c_b
c11 = config_adc_c11
c_mom_flux = config_adc_Cmom_flux
c_mom = config_adc_Cmom
c_therm = config_adc_Ctherm
c_mom_w3 = config_adc_Cmom_w3
Expand Down Expand Up @@ -560,6 +561,7 @@ subroutine ocn_turbulenceCreate(domain)
!$acc Kt, &
!$acc c_1, &
!$acc c_2, &
!$acc c_mom_flux, &
!$acc c_mom, &
!$acc c_therm, &
!$acc c_mom_w3, &
Expand Down Expand Up @@ -766,6 +768,7 @@ subroutine ocn_turbulenceUpdateFields(domain)
!$acc Kt, &
!$acc c_1, &
!$acc c_2, &
!$acc c_mom_flux, &
!$acc c_mom, &
!$acc c_therm, &
!$acc c_mom_w3, &
Expand Down Expand Up @@ -1186,6 +1189,7 @@ subroutine ocn_turbulenceDestroy(ierr)
alpha_tracer2 = 0.0_RKIND
B1 = 0.0_RKIND
Kt = 0.0_RKIND
c_mom_flux = 0.0_RKIND
c_mom = 0.0_RKIND
c_therm = 0.0_RKIND
c_mom_w3 = 0.0_RKIND
Expand Down Expand Up @@ -1220,6 +1224,7 @@ subroutine ocn_turbulenceDestroy(ierr)
!$acc Kt, &
!$acc c_1, &
!$acc c_2, &
!$acc c_mom_flux, &
!$acc c_mom, &
!$acc c_therm, &
!$acc c_mom_w3, &
Expand Down