diff --git a/components/mpas-ocean/bld/namelist_files/namelist_defaults_mpaso.xml b/components/mpas-ocean/bld/namelist_files/namelist_defaults_mpaso.xml
index cd15a29e84a6..0e410e7a1f74 100644
--- a/components/mpas-ocean/bld/namelist_files/namelist_defaults_mpaso.xml
+++ b/components/mpas-ocean/bld/namelist_files/namelist_defaults_mpaso.xml
@@ -147,9 +147,9 @@
40e3
-.false.
+.true.
172800
-0.06
+0.08
1000.0
100000.0
diff --git a/components/mpas-ocean/cime_config/buildnml b/components/mpas-ocean/cime_config/buildnml
index c6b328ff730b..33553b239939 100755
--- a/components/mpas-ocean/cime_config/buildnml
+++ b/components/mpas-ocean/cime_config/buildnml
@@ -1118,6 +1118,8 @@ def buildnml(case, caseroot, compname):
lines.append(' ')
lines.append(' ')
lines.append(' ')
+ lines.append(' ')
+ lines.append(' ')
if not ocn_grid.startswith("oRRS1"):
lines.append(' ')
lines.append(' ')
diff --git a/components/mpas-ocean/src/Registry.xml b/components/mpas-ocean/src/Registry.xml
index a8ae9695b45e..3b5e0568795e 100644
--- a/components/mpas-ocean/src/Registry.xml
+++ b/components/mpas-ocean/src/Registry.xml
@@ -2875,8 +2875,8 @@
description="count of times redi limiter is invoked on a timestep"
packages="gm"
/>
-
+
+
diff --git a/components/mpas-ocean/src/shared/mpas_ocn_diagnostics_variables.F b/components/mpas-ocean/src/shared/mpas_ocn_diagnostics_variables.F
index 3850155fb4a3..2ecae166ff34 100644
--- a/components/mpas-ocean/src/shared/mpas_ocn_diagnostics_variables.F
+++ b/components/mpas-ocean/src/shared/mpas_ocn_diagnostics_variables.F
@@ -122,7 +122,7 @@ module ocn_diagnostics_variables
real(kind=RKIND), dimension(:,:), pointer :: RediKappaScaling
real(kind=RKIND), dimension(:,:), pointer :: RediKappaSfcTaper
real(kind=RKIND), dimension(:,:), pointer :: k33
- real(kind=RKIND), dimension(:,:), pointer :: gradBuoyEddy
+ real(kind=RKIND), dimension(:,:), pointer :: gradDensityEddy
real(kind=RKIND), dimension(:), pointer :: gmBolusKappa
real(kind=RKIND), dimension(:), pointer :: cGMphaseSpeed
real(kind=RKIND), dimension(:,:,:), pointer :: slopeTriadUp, slopeTriadDown
@@ -271,8 +271,8 @@ subroutine ocn_diagnostics_variables_init(domain, jenkinsOn, hollandJenkinsOn, e
end if
if (config_use_GM .or. config_submesoscale_enable) then
- call mpas_pool_get_array(diagnosticsPool, 'gradBuoyEddy', &
- gradBuoyEddy)
+ call mpas_pool_get_array(diagnosticsPool, 'gradDensityEddy', &
+ gradDensityEddy)
end if
if ( config_compute_active_tracer_budgets ) then
@@ -781,7 +781,7 @@ subroutine ocn_diagnostics_variables_init(domain, jenkinsOn, hollandJenkinsOn, e
!$acc )
end if
if (config_use_GM.or.config_submesoscale_enable) then
- !$acc enter data create(gradBuoyEddy)
+ !$acc enter data create(gradDensityEddy)
end if
if ( config_compute_active_tracer_budgets ) then
!$acc enter data create( &
@@ -1029,7 +1029,7 @@ subroutine ocn_diagnostics_variables_destroy(err) !{{{
!$acc )
end if
if (config_use_GM.or.config_submesoscale_enable) then
- !$acc exit data delete(gradBuoyEddy)
+ !$acc exit data delete(gradDensityEddy)
end if
if ( config_compute_active_tracer_budgets ) then
!$acc exit data delete( &
@@ -1230,7 +1230,7 @@ subroutine ocn_diagnostics_variables_destroy(err) !{{{
RossbyRadius)
end if
if (config_use_GM.or.config_submesoscale_enable) then
- nullify(gradBuoyEddy)
+ nullify(gradDensityEddy)
end if
if ( config_compute_active_tracer_budgets ) then
nullify(activeTracerHorMixTendency, &
diff --git a/components/mpas-ocean/src/shared/mpas_ocn_eddy_parameterization_helpers.F b/components/mpas-ocean/src/shared/mpas_ocn_eddy_parameterization_helpers.F
index 236da8d38849..8ac494147374 100644
--- a/components/mpas-ocean/src/shared/mpas_ocn_eddy_parameterization_helpers.F
+++ b/components/mpas-ocean/src/shared/mpas_ocn_eddy_parameterization_helpers.F
@@ -166,7 +166,7 @@ subroutine ocn_eddy_compute_buoyancy_gradient()
do iEdge = 1, nEdges
if (maxLevelEdgeTop(iEdge) .GE. minLevelEdgeBot(iEdge)) then
do k = minLevelEdgeBot(iEdge), maxLevelEdgeTop(iEdge)+1
- gradBuoyEddy(k,iEdge) = (gradDensityTopOfEdge(k,iEdge) - dDensityDzTopOfEdge(k,iEdge) &
+ gradDensityEddy(k,iEdge) = (gradDensityTopOfEdge(k,iEdge) - dDensityDzTopOfEdge(k,iEdge) &
* gradZMidTopOfEdge(k,iEdge))
end do
end if
diff --git a/components/mpas-ocean/src/shared/mpas_ocn_gm.F b/components/mpas-ocean/src/shared/mpas_ocn_gm.F
index 336a160e3b9f..13bb0279de84 100644
--- a/components/mpas-ocean/src/shared/mpas_ocn_gm.F
+++ b/components/mpas-ocean/src/shared/mpas_ocn_gm.F
@@ -716,7 +716,7 @@ subroutine ocn_GM_compute_Bolus_velocity(statePool, &
tridiagC(k - 1) = 2.0_RKIND*cGMphaseSpeed(iEdge)**2/layerThickEdgeMean(k, iEdge) &
/(layerThickEdgeMean(k - 1, iEdge) + layerThickEdgeMean(k, iEdge))
rightHandSide(k - 1) = gmBolusKappa(iEdge)*gmKappaScaling(k,iEdge)*gravity/rho_sw* &
- gradBuoyEddy(k,iEdge)
+ gradDensityEddy(k,iEdge)
! Second to next to the last rows
do k = minLevelEdgeBot(iEdge) + 2, maxLevelEdgeTop(iEdge) - 1
@@ -729,7 +729,7 @@ subroutine ocn_GM_compute_Bolus_velocity(statePool, &
tridiagC(k - 1) = 2.0_RKIND*cGMphaseSpeed(iEdge)**2/layerThickEdgeMean(k, iEdge) &
/(layerThickEdgeMean(k - 1, iEdge) + layerThickEdgeMean(k, iEdge))
rightHandSide(k - 1) = gmBolusKappa(iEdge)*gmKappaScaling(k,iEdge)*gravity/rho_sw* &
- gradBuoyEddy(k,iEdge)
+ gradDensityEddy(k,iEdge)
end do
! Last row
@@ -741,7 +741,7 @@ subroutine ocn_GM_compute_Bolus_velocity(statePool, &
tridiagB(k - 1) = -2.0_RKIND*cGMphaseSpeed(iEdge)**2/(layerThickEdgeMean(k - 1, iEdge) &
*layerThickEdgeMean(k, iEdge)) - BruntVaisalaFreqTopEdge
rightHandSide(k - 1) = gmBolusKappa(iEdge)*gmKappaScaling(k,iEdge)*gravity/rho_sw* &
- gradBuoyEddy(k,iEdge)
+ gradDensityEddy(k,iEdge)
! Total number of rows
N = maxLevelEdgeTop(iEdge) - minLevelEdgeBot(iEdge)
diff --git a/components/mpas-ocean/src/shared/mpas_ocn_submesoscale_eddies.F b/components/mpas-ocean/src/shared/mpas_ocn_submesoscale_eddies.F
index 99bab62abb5e..1236336d8b44 100644
--- a/components/mpas-ocean/src/shared/mpas_ocn_submesoscale_eddies.F
+++ b/components/mpas-ocean/src/shared/mpas_ocn_submesoscale_eddies.F
@@ -96,7 +96,7 @@ subroutine ocn_submesoscale_compute_velocity()
!This is thickness weighted to allow for non uniform grid spacing,
!and centered on layer interfaces. The mixed layer goes from the
!ocean top layer to mid-depth of layer(indMLDedge)
- !NOTE, gradBuoyEddy and BFV are defined at the top cell interface
+ !NOTE, gradDensityEddy and BFV are defined at the top cell interface
!and not valid for minLevelCell, so properties for the top layer
!rely on the values at (minLevelCell+1).
!$omp parallel
@@ -118,7 +118,7 @@ subroutine ocn_submesoscale_compute_velocity()
hML = 0.5_RKIND*layerThickEdgeMean(minLevelEdgeBot(iEdge),iEdge)
bvfML = bvfML + hML*bvfAv
if (minLevelEdgeTop(iEdge) .ge. 1) then
- gradBuoyML = hML*gradBuoyEddy(minLevelEdgeTop(iEdge)+1,iEdge)
+ gradBuoyML = hML*gradDensityEddy(minLevelEdgeTop(iEdge)+1,iEdge)
bvfML = hML*bvfAv
else
cycle
@@ -131,10 +131,11 @@ subroutine ocn_submesoscale_compute_velocity()
max(BruntVaisalaFreqTop(k,cell2),1.0E-20_RKIND)))
bvfML = bvfML + hAv*bvfAv
hML = hML + hAv
- gradBuoyML = gradBuoyML + hAv*gradBuoyEddy(k,iEdge)
+ gradBuoyML = gradBuoyML + hAv*gradDensityEddy(k,iEdge)
end do
bvfML = bvfML / (1.0E-20_RKIND + hML)
gradBuoyML = gradBuoyML / (1.0E-20_RKIND + hML)
+ gradBuoyML = gravity*gradBuoyML/rho_sw !convert from density unit to buoyancy
!compute depths and shape function