Skip to content

Commit 4c2db8b

Browse files
breichlbrandon.reichl
authored andcommitted
Fix bugs in VBF diagnostics for tidal Kd terms (#886)
* Fix bug in Kd_itides allocation check for VBF itides diagnostic * Set VBF tidal mixing outputs to work with Polzin option in addition to Simmons option --------- Co-authored-by: brandon.reichl <brandon.reichl@noaa.gov>
1 parent 484b917 commit 4c2db8b

1 file changed

Lines changed: 29 additions & 10 deletions

File tree

src/parameterizations/vertical/MOM_tidal_mixing.F90

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1305,7 +1305,7 @@ subroutine add_int_tide_diffusivity(dz, j, N2_bot, Rho_bot, N2_lay, TKE_to_Kd, m
13051305
endif
13061306

13071307
! diagnostics
1308-
if (allocated(CS%dd%Kd_itidal).or.(associated(VBF%Kd_itidal))) then
1308+
if (allocated(CS%dd%Kd_itidal).or.(associated(VBF%Kd_itides))) then
13091309
! If at layers, CS%dd%Kd_itidal is just TKE_to_Kd(i,k) * TKE_itide_lay
13101310
! The following sets the interface diagnostics.
13111311
Kd_add = TKE_to_Kd(i,k) * TKE_itide_lay
@@ -1420,36 +1420,55 @@ subroutine add_int_tide_diffusivity(dz, j, N2_bot, Rho_bot, N2_lay, TKE_to_Kd, m
14201420
endif
14211421

14221422
! diagnostics
1423-
if (allocated(CS%dd%Kd_itidal)) then
1423+
if (allocated(CS%dd%Kd_itidal).or.(associated(VBF%Kd_itides))) then
14241424
! If at layers, this is just CS%dd%Kd_itidal(i,j,K) = TKE_to_Kd(i,k) * TKE_itide_lay
14251425
! The following sets the interface diagnostics.
14261426
Kd_add = TKE_to_Kd(i,k) * TKE_itide_lay
14271427
if (Kd_max >= 0.0) Kd_add = min(Kd_add, Kd_max)
1428-
if (k>1) CS%dd%Kd_itidal(i,j,K) = CS%dd%Kd_itidal(i,j,K) + 0.5*Kd_add
1429-
if (k<nz) CS%dd%Kd_itidal(i,j,K+1) = CS%dd%Kd_itidal(i,j,K+1) + 0.5*Kd_add
1428+
if (allocated(CS%dd%Kd_itidal)) then
1429+
if (k>1) CS%dd%Kd_itidal(i,j,K) = CS%dd%Kd_itidal(i,j,K) + 0.5*Kd_add
1430+
if (k<nz) CS%dd%Kd_itidal(i,j,K+1) = CS%dd%Kd_itidal(i,j,K+1) + 0.5*Kd_add
1431+
endif
1432+
if (associated(VBF%Kd_itides)) then
1433+
!Not to be confused w/ Kd_itidal (this is to be consistent w/ output parameter names)
1434+
if (k>1) VBF%Kd_itides(i,j,K) = VBF%Kd_itides(i,j,K) + 0.5*Kd_add
1435+
if (k<nz) VBF%Kd_itides(i,j,K+1) = VBF%Kd_itides(i,j,K+1) + 0.5*Kd_add
1436+
endif
14301437
endif
14311438
if (allocated(CS%dd%Kd_Itidal_work)) &
14321439
CS%dd%Kd_itidal_work(i,j,k) = GV%H_to_RZ * TKE_itide_lay
14331440
if (allocated(CS%dd%Fl_itidal)) CS%dd%Fl_itidal(i,j,k) = TKE_itidal_rem(i)
14341441

1435-
if (allocated(CS%dd%Kd_Niku)) then
1442+
if (allocated(CS%dd%Kd_Niku).or.(associated(VBF%Kd_Niku))) then
14361443
! If at layers, this is just CS%dd%Kd_Niku(i,j,K) = TKE_to_Kd(i,k) * TKE_Niku_lay
14371444
! The following sets the interface diagnostics.
14381445
Kd_add = TKE_to_Kd(i,k) * TKE_Niku_lay
14391446
if (Kd_max >= 0.0) Kd_add = min(Kd_add, Kd_max)
1440-
if (k>1) CS%dd%Kd_Niku(i,j,K) = CS%dd%Kd_Niku(i,j,K) + 0.5*Kd_add
1441-
if (k<nz) CS%dd%Kd_Niku(i,j,K+1) = CS%dd%Kd_Niku(i,j,K+1) + 0.5*Kd_add
1447+
if (allocated(CS%dd%Kd_Niku)) then
1448+
if (k>1) CS%dd%Kd_Niku(i,j,K) = CS%dd%Kd_Niku(i,j,K) + 0.5*Kd_add
1449+
if (k<nz) CS%dd%Kd_Niku(i,j,K+1) = CS%dd%Kd_Niku(i,j,K+1) + 0.5*Kd_add
1450+
endif
1451+
if (associated(VBF%Kd_Niku)) then
1452+
if (k>1) VBF%Kd_Niku(i,j,K) = VBF%Kd_Niku(i,j,K) + 0.5*Kd_add
1453+
if (k<nz) VBF%Kd_Niku(i,j,K+1) = VBF%Kd_Niku(i,j,K+1) + 0.5*Kd_add
1454+
endif
14421455
endif
14431456
! if (associated(CS%dd%Kd_Niku)) CS%dd%Kd_Niku(i,j,K) = TKE_to_Kd(i,k) * TKE_Niku_lay
14441457
if (allocated(CS%dd%Kd_Niku_work)) CS%dd%Kd_Niku_work(i,j,k) = GV%H_to_RZ * TKE_Niku_lay
14451458

1446-
if (allocated(CS%dd%Kd_lowmode)) then
1459+
if (allocated(CS%dd%Kd_lowmode).or.(associated(VBF%Kd_lowmode))) then
14471460
! If at layers, CS%dd%Kd_lowmode is just TKE_to_Kd(i,k) * TKE_lowmode_lay
14481461
! The following sets the interface diagnostics.
14491462
Kd_add = TKE_to_Kd(i,k) * TKE_lowmode_lay
14501463
if (Kd_max >= 0.0) Kd_add = min(Kd_add, Kd_max)
1451-
if (k>1) CS%dd%Kd_lowmode(i,j,K) = CS%dd%Kd_lowmode(i,j,K) + 0.5*Kd_add
1452-
if (k<nz) CS%dd%Kd_lowmode(i,j,K+1) = CS%dd%Kd_lowmode(i,j,K+1) + 0.5*Kd_add
1464+
if (allocated(CS%dd%Kd_lowmode)) then
1465+
if (k>1) CS%dd%Kd_lowmode(i,j,K) = CS%dd%Kd_lowmode(i,j,K) + 0.5*Kd_add
1466+
if (k<nz) CS%dd%Kd_lowmode(i,j,K+1) = CS%dd%Kd_lowmode(i,j,K+1) + 0.5*Kd_add
1467+
endif
1468+
if (associated(VBF%Kd_lowmode)) then
1469+
if (k>1) VBF%Kd_lowmode(i,j,K) = VBF%Kd_lowmode(i,j,K) + 0.5*Kd_add
1470+
if (k<nz) VBF%Kd_lowmode(i,j,K+1) = VBF%Kd_lowmode(i,j,K+1) + 0.5*Kd_add
1471+
endif
14531472
endif
14541473
if (allocated(CS%dd%Kd_lowmode_work)) &
14551474
CS%dd%Kd_lowmode_work(i,j,k) = GV%H_to_RZ * TKE_lowmode_lay

0 commit comments

Comments
 (0)