Skip to content

Commit f4c494d

Browse files
committed
Merge branch 'ocean/AddStokesTerms_ADC' into ocean/addADCMixing
2 parents 18ff115 + ae3bd7d commit f4c494d

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

src/core_ocean/adc_mixing/Registry_adc_mixing_fields_opts.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
possible_values="positive real numbers"
3333
/>
3434
<nml_option name="config_adc_stokes_angle" type="real" default_value="0.0" units="radians"
35-
description="Angle between wind and waves (surface stress and surface Stokes drift vector respectively). Positive values denote waves to the left of the wind. NOTE: units are RADIANS."
35+
description="Angle between wind and waves (surface stress and surface Stokes drift vector respectively). Positive values denote waves to the left of the wind."
3636
possible_values="positive or negative real numbers"
3737
/>
3838
<nml_option name="config_adc_tau_o" type="real" default_value="1800" units="s^{-1}"

src/core_ocean/shared/mpas_ocn_adcReconstruct.F

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ subroutine compute_ADC_tends(nCells,nVertLevels, nTracers, dt,activeTracers, uve
182182

183183
real(kind=RKIND),dimension(nVertLevels,nCells) :: Swumd
184184
real(kind=RKIND),dimension(nVertLevels,nCells) :: tauw3, tau_tracer, tauVel, tauvVel
185-
real(kind=RKIND),dimension(nVertLevels,nCells) :: uStokes, vStokes
185+
real(kind=RKIND),dimension(nVertLevels,nCells) :: uStokes, vStokes, uStokesm, vStokesm
186186
real(kind=RKIND),dimension(nVertLevels,nCells) :: areaFractionMid, tumdMid, McMid, wumdMid, sumdMid
187187

188188
real(kind=RKIND) :: SwU, SwD, tau_sfc, d_sqrt_wp2_dz, tp2, sp2, min_wp2_sfc_val, wp2_splat_sfc_correction
@@ -233,11 +233,13 @@ subroutine compute_ADC_tends(nCells,nVertLevels, nTracers, dt,activeTracers, uve
233233
! La_t = (friction velocity / surface stokes drift magnitude)^(0.5) and the
234234
! stokes_angle (angle between surface stress and Stokes drift vectors)
235235

236-
uStokes(1,iCell) = uStokes_surf
237-
vStokes(1,iCell) = vStokes_surf
238236
do k=1,nVertLevels
237+
! Calculate Stokes drift at vertical edge of cells
239238
uStokes(k,iCell) = uStokes_surf*EXP(ze(k,iCell)/stokes_depth)
240239
vStokes(k,iCell) = vStokes_surf*EXP(ze(k,iCell)/stokes_depth)
240+
! Calculate Stokes drift at vertical midpoint of cells
241+
uStokesm(k,iCell) = uStokes_surf*EXP(zm(k,iCell)/stokes_depth)
242+
vStokesm(k,iCell) = vStokes_surf*EXP(zm(k,iCell)/stokes_depth)
241243
enddo
242244

243245
do k=1,3
@@ -470,6 +472,7 @@ subroutine compute_ADC_tends(nCells,nVertLevels, nTracers, dt,activeTracers, uve
470472
SwD = -(1.0_RKIND-2.0_RKIND*areaFraction(k+1,iCell)) &
471473
/(areaFraction(k+1,iCell)*(1.0_RKIND-areaFraction(k+1,iCell)))**0.5_RKIND
472474

475+
! Calculate Stokes drift derivatives at vertical cell centers (where w3 is located)
473476
Ustz = (uStokes(k,iCell) - uStokes(k+1,iCell)) / dz
474477
Vstz = (vStokes(k,iCell) - vStokes(k+1,iCell)) / dz
475478

@@ -546,8 +549,9 @@ subroutine compute_ADC_tends(nCells,nVertLevels, nTracers, dt,activeTracers, uve
546549

547550
Uz = (uvel(k-1,iCell) - uvel(k,iCell)) / dzmid
548551
Vz = (vvel(k-1,iCell) - vvel(k,iCell)) / dzmid
549-
Ustz = (uStokes(k-1,iCell) - uStokes(k,iCell)) / dzmid
550-
Vstz = (vStokes(k-1,iCell) - vStokes(k,iCell)) / dzmid
552+
! Calculate Stokes drift derivatives at vertical cell edges (where w2 etc. are located)
553+
Ustz = (uStokesm(k-1,iCell) - uStokesm(k,iCell)) / dzmid
554+
Vstz = (vStokesm(k-1,iCell) - vStokesm(k,iCell)) / dzmid
551555
Tz = (activeTracers(1,k-1,iCell) - activeTracers(1,k,iCell)) / dzmid
552556
Sz = (activeTracers(2,k-1,iCell) - activeTracers(2,k,iCell)) / dzmid
553557

0 commit comments

Comments
 (0)