Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

+*Thickness-based viscosity and diffusivity units #409

Merged
merged 4 commits into from
Jul 30, 2023
Merged
Show file tree
Hide file tree
Changes from all 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
28 changes: 15 additions & 13 deletions src/core/MOM_variables.F90
Original file line number Diff line number Diff line change
Expand Up @@ -234,22 +234,24 @@ module MOM_variables
real, allocatable, dimension(:,:) :: &
bbl_thick_u, & !< The bottom boundary layer thickness at the u-points [Z ~> m].
bbl_thick_v, & !< The bottom boundary layer thickness at the v-points [Z ~> m].
kv_bbl_u, & !< The bottom boundary layer viscosity at the u-points [Z2 T-1 ~> m2 s-1].
kv_bbl_v, & !< The bottom boundary layer viscosity at the v-points [Z2 T-1 ~> m2 s-1].
ustar_BBL, & !< The turbulence velocity in the bottom boundary layer at h points [Z T-1 ~> m s-1].
kv_bbl_u, & !< The bottom boundary layer viscosity at the u-points [H Z T-1 ~> m2 s-1 or Pa s]
kv_bbl_v, & !< The bottom boundary layer viscosity at the v-points [H Z T-1 ~> m2 s-1 or Pa s]
ustar_BBL, & !< The turbulence velocity in the bottom boundary layer at
!! h points [H T-1 ~> m s-1 or kg m-2 s-1].
TKE_BBL, & !< A term related to the bottom boundary layer source of turbulent kinetic
!! energy, currently in [Z3 T-3 ~> m3 s-3], but may at some time be changed
!! to [R Z3 T-3 ~> W m-2].
!! energy, currently in [H Z2 T-3 ~> m3 s-3 or W m-2].
taux_shelf, & !< The zonal stresses on the ocean under shelves [R Z L T-2 ~> Pa].
tauy_shelf !< The meridional stresses on the ocean under shelves [R Z L T-2 ~> Pa].
real, allocatable, dimension(:,:) :: tbl_thick_shelf_u
!< Thickness of the viscous top boundary layer under ice shelves at u-points [Z ~> m].
real, allocatable, dimension(:,:) :: tbl_thick_shelf_v
!< Thickness of the viscous top boundary layer under ice shelves at v-points [Z ~> m].
real, allocatable, dimension(:,:) :: kv_tbl_shelf_u
!< Viscosity in the viscous top boundary layer under ice shelves at u-points [Z2 T-1 ~> m2 s-1].
!< Viscosity in the viscous top boundary layer under ice shelves at
!! u-points [H Z T-1 ~> m2 s-1 or Pa s]
real, allocatable, dimension(:,:) :: kv_tbl_shelf_v
!< Viscosity in the viscous top boundary layer under ice shelves at v-points [Z2 T-1 ~> m2 s-1].
!< Viscosity in the viscous top boundary layer under ice shelves at
!! v-points [H Z T-1 ~> m2 s-1 or Pa s]
real, allocatable, dimension(:,:) :: nkml_visc_u
!< The number of layers in the viscous surface mixed layer at u-points [nondim].
!! This is not an integer because there may be fractional layers, and it is stored in
Expand All @@ -258,24 +260,24 @@ module MOM_variables
real, allocatable, dimension(:,:) :: nkml_visc_v
!< The number of layers in the viscous surface mixed layer at v-points [nondim].
real, allocatable, dimension(:,:,:) :: &
Ray_u, & !< The Rayleigh drag velocity to be applied to each layer at u-points [Z T-1 ~> m s-1].
Ray_v !< The Rayleigh drag velocity to be applied to each layer at v-points [Z T-1 ~> m s-1].
Ray_u, & !< The Rayleigh drag velocity to be applied to each layer at u-points [H T-1 ~> m s-1 or Pa s m-1].
Ray_v !< The Rayleigh drag velocity to be applied to each layer at v-points [H T-1 ~> m s-1 or Pa s m-1].

! The following elements are pointers so they can be used as targets for pointers in the restart registry.
real, pointer, dimension(:,:) :: MLD => NULL() !< Instantaneous active mixing layer depth [Z ~> m].
real, pointer, dimension(:,:) :: sfc_buoy_flx !< Surface buoyancy flux (derived) [Z2 T-3 ~> m2 s-3].
real, pointer, dimension(:,:,:) :: Kd_shear => NULL()
!< The shear-driven turbulent diapycnal diffusivity at the interfaces between layers
!! in tracer columns [Z2 T-1 ~> m2 s-1].
!! in tracer columns [H Z T-1 ~> m2 s-1 or kg m-1 s-1]
real, pointer, dimension(:,:,:) :: Kv_shear => NULL()
!< The shear-driven turbulent vertical viscosity at the interfaces between layers
!! in tracer columns [Z2 T-1 ~> m2 s-1].
!! in tracer columns [H Z T-1 ~> m2 s-1 or Pa s]
real, pointer, dimension(:,:,:) :: Kv_shear_Bu => NULL()
!< The shear-driven turbulent vertical viscosity at the interfaces between layers in
!! corner columns [Z2 T-1 ~> m2 s-1].
!! corner columns [H Z T-1 ~> m2 s-1 or Pa s]
real, pointer, dimension(:,:,:) :: Kv_slow => NULL()
!< The turbulent vertical viscosity component due to "slow" processes (e.g., tidal,
!! background, convection etc) [Z2 T-1 ~> m2 s-1].
!! background, convection etc) [H Z T-1 ~> m2 s-1 or Pa s]
real, pointer, dimension(:,:,:) :: TKE_turb => NULL()
!< The turbulent kinetic energy per unit mass at the interfaces [Z2 T-2 ~> m2 s-2].
!! This may be at the tracer or corner points
Expand Down
4 changes: 2 additions & 2 deletions src/parameterizations/lateral/MOM_MEKE.F90
Original file line number Diff line number Diff line change
Expand Up @@ -311,13 +311,13 @@ subroutine step_forward_MEKE(MEKE, h, SN_u, SN_v, visc, dt, G, GV, US, CS, hu, h
do j=js,je ; do I=is-1,ie
drag_vel_u(I,j) = 0.0
if ((G%mask2dCu(I,j) > 0.0) .and. (visc%bbl_thick_u(I,j) > 0.0)) &
drag_vel_u(I,j) = visc%Kv_bbl_u(I,j) / visc%bbl_thick_u(I,j)
drag_vel_u(I,j) = GV%H_to_Z*visc%Kv_bbl_u(I,j) / visc%bbl_thick_u(I,j)
enddo ; enddo
!$OMP parallel do default(shared)
do J=js-1,je ; do i=is,ie
drag_vel_v(i,J) = 0.0
if ((G%mask2dCv(i,J) > 0.0) .and. (visc%bbl_thick_v(i,J) > 0.0)) &
drag_vel_v(i,J) = visc%Kv_bbl_v(i,J) / visc%bbl_thick_v(i,J)
drag_vel_v(i,J) = GV%H_to_Z*visc%Kv_bbl_v(i,J) / visc%bbl_thick_v(i,J)
enddo ; enddo

!$OMP parallel do default(shared)
Expand Down
38 changes: 19 additions & 19 deletions src/parameterizations/vertical/MOM_CVMix_KPP.F90
Original file line number Diff line number Diff line change
Expand Up @@ -536,7 +536,7 @@ logical function KPP_init(paramFile, G, GV, US, diag, Time, CS, passive)
'Heat diffusivity due to KPP, as calculated by [CVMix] KPP', &
'm2/s', conversion=US%Z2_T_to_m2_s)
CS%id_Kd_in = register_diag_field('ocean_model', 'KPP_Kd_in', diag%axesTi, Time, &
'Diffusivity passed to KPP', 'm2/s', conversion=US%Z2_T_to_m2_s)
'Diffusivity passed to KPP', 'm2/s', conversion=GV%HZ_T_to_m2_s)
CS%id_Ks_KPP = register_diag_field('ocean_model', 'KPP_Ksalt', diag%axesTi, Time, &
'Salt diffusivity due to KPP, as calculated by [CVMix] KPP', &
'm2/s', conversion=US%Z2_T_to_m2_s)
Expand Down Expand Up @@ -610,13 +610,13 @@ subroutine KPP_calculate(CS, G, GV, US, h, tv, uStar, buoyFlux, Kt, Ks, Kv, &
real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), intent(in) :: buoyFlux !< Surface buoyancy flux [L2 T-3 ~> m2 s-3]
real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), intent(inout) :: Kt !< (in) Vertical diffusivity of heat w/o KPP
!! (out) Vertical diffusivity including KPP
!! [Z2 T-1 ~> m2 s-1]
!! [H Z T-1 ~> m2 s-1 or kg m-1 s-1]
real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), intent(inout) :: Ks !< (in) Vertical diffusivity of salt w/o KPP
!! (out) Vertical diffusivity including KPP
!! [Z2 T-1 ~> m2 s-1]
!! [H Z T-1 ~> m2 s-1 or kg m-1 s-1]
real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), intent(inout) :: Kv !< (in) Vertical viscosity w/o KPP
!! (out) Vertical viscosity including KPP
!! [Z2 T-1 ~> m2 s-1]
!! [H Z T-1 ~> m2 s-1 or Pa s]
real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), intent(inout) :: nonLocalTransHeat !< Temp non-local transport [nondim]
real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), intent(inout) :: nonLocalTransScalar !< scalar non-local trans. [nondim]
type(wave_parameters_CS), pointer :: Waves !< Wave CS for Langmuir turbulence
Expand Down Expand Up @@ -650,8 +650,8 @@ subroutine KPP_calculate(CS, G, GV, US, h, tv, uStar, buoyFlux, Kt, Ks, Kv, &
call hchksum(h, "KPP in: h",G%HI,haloshift=0, scale=GV%H_to_m)
call hchksum(uStar, "KPP in: uStar",G%HI,haloshift=0, scale=US%Z_to_m*US%s_to_T)
call hchksum(buoyFlux, "KPP in: buoyFlux",G%HI,haloshift=0, scale=US%L_to_m**2*US%s_to_T**3)
call hchksum(Kt, "KPP in: Kt",G%HI,haloshift=0, scale=US%Z2_T_to_m2_s)
call hchksum(Ks, "KPP in: Ks",G%HI,haloshift=0, scale=US%Z2_T_to_m2_s)
call hchksum(Kt, "KPP in: Kt",G%HI,haloshift=0, scale=GV%HZ_T_to_m2_s)
call hchksum(Ks, "KPP in: Ks",G%HI,haloshift=0, scale=GV%HZ_T_to_m2_s)
endif

nonLocalTrans(:,:) = 0.0
Expand Down Expand Up @@ -711,9 +711,9 @@ subroutine KPP_calculate(CS, G, GV, US, h, tv, uStar, buoyFlux, Kt, Ks, Kv, &
Kdiffusivity(:,:) = 0. ! Diffusivities for heat and salt [m2 s-1]
Kviscosity(:) = 0. ! Viscosity [m2 s-1]
else
Kdiffusivity(:,1) = US%Z2_T_to_m2_s * Kt(i,j,:)
Kdiffusivity(:,2) = US%Z2_T_to_m2_s * Ks(i,j,:)
Kviscosity(:) = US%Z2_T_to_m2_s * Kv(i,j,:)
Kdiffusivity(:,1) = GV%HZ_T_to_m2_s * Kt(i,j,:)
Kdiffusivity(:,2) = GV%HZ_T_to_m2_s * Ks(i,j,:)
Kviscosity(:) = GV%HZ_T_to_m2_s * Kv(i,j,:)
endif

IF (CS%LT_K_ENHANCEMENT) then
Expand Down Expand Up @@ -860,17 +860,17 @@ subroutine KPP_calculate(CS, G, GV, US, h, tv, uStar, buoyFlux, Kt, Ks, Kv, &
if (.not. CS%passiveMode) then
if (CS%KPPisAdditive) then
do k=1, GV%ke+1
Kt(i,j,k) = Kt(i,j,k) + US%m2_s_to_Z2_T * Kdiffusivity(k,1)
Ks(i,j,k) = Ks(i,j,k) + US%m2_s_to_Z2_T * Kdiffusivity(k,2)
Kv(i,j,k) = Kv(i,j,k) + US%m2_s_to_Z2_T * Kviscosity(k)
if (CS%Stokes_Mixing) Waves%KvS(i,j,k) = Kv(i,j,k)
Kt(i,j,k) = Kt(i,j,k) + GV%m2_s_to_HZ_T * Kdiffusivity(k,1)
Ks(i,j,k) = Ks(i,j,k) + GV%m2_s_to_HZ_T * Kdiffusivity(k,2)
Kv(i,j,k) = Kv(i,j,k) + GV%m2_s_to_HZ_T * Kviscosity(k)
if (CS%Stokes_Mixing) Waves%KvS(i,j,k) = GV%H_to_Z*Kv(i,j,k)
enddo
else ! KPP replaces prior diffusivity when former is non-zero
do k=1, GV%ke+1
if (Kdiffusivity(k,1) /= 0.) Kt(i,j,k) = US%m2_s_to_Z2_T * Kdiffusivity(k,1)
if (Kdiffusivity(k,2) /= 0.) Ks(i,j,k) = US%m2_s_to_Z2_T * Kdiffusivity(k,2)
if (Kviscosity(k) /= 0.) Kv(i,j,k) = US%m2_s_to_Z2_T * Kviscosity(k)
if (CS%Stokes_Mixing) Waves%KvS(i,j,k) = Kv(i,j,k)
if (Kdiffusivity(k,1) /= 0.) Kt(i,j,k) = GV%m2_s_to_HZ_T * Kdiffusivity(k,1)
if (Kdiffusivity(k,2) /= 0.) Ks(i,j,k) = GV%m2_s_to_HZ_T * Kdiffusivity(k,2)
if (Kviscosity(k) /= 0.) Kv(i,j,k) = GV%m2_s_to_HZ_T * Kviscosity(k)
if (CS%Stokes_Mixing) Waves%KvS(i,j,k) = GV%H_to_Z*Kv(i,j,k)
enddo
endif
endif
Expand All @@ -883,8 +883,8 @@ subroutine KPP_calculate(CS, G, GV, US, h, tv, uStar, buoyFlux, Kt, Ks, Kv, &
call cpu_clock_end(id_clock_KPP_calc)

if (CS%debug) then
call hchksum(Kt, "KPP out: Kt", G%HI, haloshift=0, scale=US%Z2_T_to_m2_s)
call hchksum(Ks, "KPP out: Ks", G%HI, haloshift=0, scale=US%Z2_T_to_m2_s)
call hchksum(Kt, "KPP out: Kt", G%HI, haloshift=0, scale=GV%HZ_T_to_m2_s)
call hchksum(Ks, "KPP out: Ks", G%HI, haloshift=0, scale=GV%HZ_T_to_m2_s)
endif

! send diagnostics to post_data
Expand Down
21 changes: 11 additions & 10 deletions src/parameterizations/vertical/MOM_CVMix_conv.F90
Original file line number Diff line number Diff line change
Expand Up @@ -143,15 +143,16 @@ subroutine calculate_CVMix_conv(h, tv, G, GV, US, CS, hbl, Kd, Kv, Kd_aux)
type(CVMix_conv_cs), intent(in) :: CS !< CVMix convection control structure
real, dimension(SZI_(G),SZJ_(G)), intent(in) :: hbl !< Depth of ocean boundary layer [Z ~> m]
real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), &
intent(inout) :: Kd !< Diapycnal diffusivity at each interface that
!! will be incremented here [Z2 T-1 ~> m2 s-1].
intent(inout) :: Kd !< Diapycnal diffusivity at each interface
!! that will be incremented here
!! [H Z T-1 ~> m2 s-1 or kg m-1 s-1]
real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), &
intent(inout) :: KV !< Viscosity at each interface that will be
!! incremented here [Z2 T-1 ~> m2 s-1].
intent(inout) :: Kv !< Viscosity at each interface that will be
!! incremented here [H Z T-1 ~> m2 s-1 or Pa s]
real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), &
optional, intent(inout) :: Kd_aux !< A second diapycnal diffusivity at each
!! interface that will also be incremented
!! here [Z2 T-1 ~> m2 s-1].
!! here [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

! local variables
real, dimension(SZK_(GV)) :: rho_lwr !< Adiabatic Water Density [kg m-3], this is a dummy
Expand Down Expand Up @@ -238,18 +239,18 @@ subroutine calculate_CVMix_conv(h, tv, G, GV, US, CS, hbl, Kd, Kv, Kd_aux)

! Increment the diffusivity outside of the boundary layer.
do K=max(1,kOBL+1),GV%ke+1
Kd(i,j,K) = Kd(i,j,K) + US%m2_s_to_Z2_T * kd_col(K)
Kd(i,j,K) = Kd(i,j,K) + GV%m2_s_to_HZ_T * kd_col(K)
enddo
if (present(Kd_aux)) then
! Increment the other diffusivity outside of the boundary layer.
do K=max(1,kOBL+1),GV%ke+1
Kd_aux(i,j,K) = Kd_aux(i,j,K) + US%m2_s_to_Z2_T * kd_col(K)
Kd_aux(i,j,K) = Kd_aux(i,j,K) + GV%m2_s_to_HZ_T * kd_col(K)
enddo
endif

! Increment the viscosity outside of the boundary layer.
do K=max(1,kOBL+1),GV%ke+1
Kv(i,j,K) = Kv(i,j,K) + US%m2_s_to_Z2_T * kv_col(K)
Kv(i,j,K) = Kv(i,j,K) + GV%m2_s_to_HZ_T * kv_col(K)
enddo

! Store 3-d arrays for diagnostics.
Expand Down Expand Up @@ -277,8 +278,8 @@ subroutine calculate_CVMix_conv(h, tv, G, GV, US, CS, hbl, Kd, Kv, Kd_aux)
! call hchksum(Kd_conv, "MOM_CVMix_conv: Kd_conv", G%HI, haloshift=0, scale=US%Z2_T_to_m2_s)
! if (CS%id_kv_conv > 0) &
! call hchksum(Kv_conv, "MOM_CVMix_conv: Kv_conv", G%HI, haloshift=0, scale=US%Z2_T_to_m2_s)
call hchksum(Kd, "MOM_CVMix_conv: Kd", G%HI, haloshift=0, scale=US%Z2_T_to_m2_s)
call hchksum(Kv, "MOM_CVMix_conv: Kv", G%HI, haloshift=0, scale=US%Z2_T_to_m2_s)
call hchksum(Kd, "MOM_CVMix_conv: Kd", G%HI, haloshift=0, scale=GV%HZ_T_to_m2_s)
call hchksum(Kv, "MOM_CVMix_conv: Kv", G%HI, haloshift=0, scale=GV%HZ_T_to_m2_s)
endif

! send diagnostics to post_data
Expand Down
10 changes: 6 additions & 4 deletions src/parameterizations/vertical/MOM_CVMix_ddiff.F90
Original file line number Diff line number Diff line change
Expand Up @@ -150,9 +150,11 @@ subroutine compute_ddiff_coeffs(h, tv, G, GV, US, j, Kd_T, Kd_S, CS, R_rho)
integer, intent(in) :: j !< Meridional grid index to work on.
! Kd_T and Kd_S are intent inout because only one j-row is set here, but they are essentially outputs.
real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), intent(inout) :: Kd_T !< Interface double diffusion diapycnal
!! diffusivity for temp [Z2 T-1 ~> m2 s-1].
!! diffusivity for temperature
!! [H Z T-1 ~> m2 s-1 or kg m-1 s-1]
real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), intent(inout) :: Kd_S !< Interface double diffusion diapycnal
!! diffusivity for salt [Z2 T-1 ~> m2 s-1].
!! diffusivity for salinity
!! [H Z T-1 ~> m2 s-1 or kg m-1 s-1]
type(CVMix_ddiff_cs), pointer :: CS !< The control structure returned
!! by a previous call to CVMix_ddiff_init.
real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), &
Expand Down Expand Up @@ -254,8 +256,8 @@ subroutine compute_ddiff_coeffs(h, tv, G, GV, US, j, Kd_T, Kd_S, CS, R_rho)
nlev=GV%ke, &
max_nlev=GV%ke)
do K=1,GV%ke+1
Kd_T(i,j,K) = US%m2_s_to_Z2_T * Kd1_T(K)
Kd_S(i,j,K) = US%m2_s_to_Z2_T * Kd1_S(K)
Kd_T(i,j,K) = GV%m2_s_to_HZ_T * Kd1_T(K)
Kd_S(i,j,K) = GV%m2_s_to_HZ_T * Kd1_S(K)
enddo

! Do not apply mixing due to convection within the boundary layer
Expand Down
16 changes: 8 additions & 8 deletions src/parameterizations/vertical/MOM_CVMix_shear.F90
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,9 @@ subroutine calculate_CVMix_shear(u_H, v_H, h, tv, kd, kv, G, GV, US, CS )
real, dimension(SZI_(G),SZJ_(G),SZK_(GV)), intent(in) :: h !< Layer thickness [H ~> m or kg m-2].
type(thermo_var_ptrs), intent(in) :: tv !< Thermodynamics structure.
real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), intent(out) :: kd !< The vertical diffusivity at each interface
!! (not layer!) [Z2 T-1 ~> m2 s-1].
!! (not layer!) [H Z T-1 ~> m2 s-1 or kg m-1 s-1]
real, dimension(SZI_(G),SZJ_(G),SZK_(GV)+1), intent(out) :: kv !< The vertical viscosity at each interface
!! (not layer!) [Z2 T-1 ~> m2 s-1].
!! (not layer!) [H Z T-1 ~> m2 s-1 or Pa s]
type(CVMix_shear_cs), pointer :: CS !< The control structure returned by a previous
!! call to CVMix_shear_init.
! Local variables
Expand Down Expand Up @@ -176,8 +176,8 @@ subroutine calculate_CVMix_shear(u_H, v_H, h, tv, kd, kv, G, GV, US, CS )
if (CS%id_ri_grad > 0) CS%ri_grad(i,j,:) = Ri_Grad(:)

do K=1,GV%ke+1
Kvisc(K) = US%Z2_T_to_m2_s * kv(i,j,K)
Kdiff(K) = US%Z2_T_to_m2_s * kd(i,j,K)
Kvisc(K) = GV%HZ_T_to_m2_s * kv(i,j,K)
Kdiff(K) = GV%HZ_T_to_m2_s * kd(i,j,K)
enddo

! Call to CVMix wrapper for computing interior mixing coefficients.
Expand All @@ -187,8 +187,8 @@ subroutine calculate_CVMix_shear(u_H, v_H, h, tv, kd, kv, G, GV, US, CS )
nlev=GV%ke, &
max_nlev=GV%ke)
do K=1,GV%ke+1
kv(i,j,K) = US%m2_s_to_Z2_T * Kvisc(K)
kd(i,j,K) = US%m2_s_to_Z2_T * Kdiff(K)
kv(i,j,K) = GV%m2_s_to_HZ_T * Kvisc(K)
kd(i,j,K) = GV%m2_s_to_HZ_T * Kdiff(K)
enddo
enddo
enddo
Expand Down Expand Up @@ -324,9 +324,9 @@ logical function CVMix_shear_init(Time, G, GV, US, param_file, diag, CS)
endif

CS%id_kd = register_diag_field('ocean_model', 'kd_shear_CVMix', diag%axesTi, Time, &
'Vertical diffusivity added by MOM_CVMix_shear module', 'm2/s', conversion=US%Z2_T_to_m2_s)
'Vertical diffusivity added by MOM_CVMix_shear module', 'm2/s', conversion=GV%HZ_T_to_m2_s)
CS%id_kv = register_diag_field('ocean_model', 'kv_shear_CVMix', diag%axesTi, Time, &
'Vertical viscosity added by MOM_CVMix_shear module', 'm2/s', conversion=US%Z2_T_to_m2_s)
'Vertical viscosity added by MOM_CVMix_shear module', 'm2/s', conversion=GV%HZ_T_to_m2_s)

end function CVMix_shear_init

Expand Down
Loading