@@ -75,8 +75,10 @@ module MOM_set_diffusivity
7575 logical :: LOTW_BBL_use_omega ! < If true, use simpler/less precise, BBL diffusivity.
7676 real :: Von_Karm ! < The von Karman constant as used in the BBL diffusivity calculation
7777 ! ! [nondim]. See (http://en.wikipedia.org/wiki/Von_Karman_constant)
78- real :: BBL_effic ! < efficiency with which the energy extracted
79- ! ! by bottom drag drives BBL diffusion in the original BBL scheme [nondim]
78+ real :: BBL_effic ! < Efficiency with which the energy extracted
79+ ! ! by bottom drag drives BBL diffusion in the original BBL scheme, times
80+ ! ! conversion factors between the natural units of mean kinetic energy
81+ ! ! and those those used for TKE [Z2 L-2 ~> nondim].
8082 real :: ePBL_BBL_effic ! < efficiency with which the energy extracted
8183 ! ! by bottom drag drives BBL diffusion in the ePBL BBL scheme [nondim]
8284 real :: cdrag ! < quadratic drag coefficient [nondim]
@@ -1412,10 +1414,10 @@ subroutine add_drag_diffusivity(h, u, v, tv, fluxes, visc, j, TKE_to_Kd, maxTKE,
14121414 ! If ustar_h = 0, this is land so this value doesn't matter.
14131415 I2decay(i) = 0.5 * CS% IMax_decay
14141416 endif
1415- TKE(i) = ((CS% BBL_effic * cdrag_sqrt) * exp (- I2decay(i)* h(i,j,nz)) ) * visc% TKE_BBL (i,j)
1417+ TKE(i) = ((CS% BBL_effic * cdrag_sqrt) * exp (- I2decay(i)* h(i,j,nz)) ) * visc% BBL_meanKE_loss (i,j)
14161418
14171419 if (associated (fluxes% TKE_tidal)) &
1418- TKE(i) = TKE(i) + fluxes% TKE_tidal(i,j) * GV% RZ_to_H * &
1420+ TKE(i) = TKE(i) + US % Z_to_L ** 2 * fluxes% TKE_tidal(i,j) * GV% RZ_to_H * &
14191421 (CS% BBL_effic * exp (- I2decay(i)* h(i,j,nz)))
14201422
14211423 ! Distribute the work over a BBL of depth 20^2 ustar^2 / g' following
@@ -1471,7 +1473,7 @@ subroutine add_drag_diffusivity(h, u, v, tv, fluxes, visc, j, TKE_to_Kd, maxTKE,
14711473 else ; TKE_to_layer = 0.0 ; endif
14721474
14731475 ! TKE_Ray has been initialized to 0 above.
1474- if (Rayleigh_drag) TKE_Ray = 0.5 * CS% BBL_effic * US % L_to_Z ** 2 * G% IareaT(i,j) * &
1476+ if (Rayleigh_drag) TKE_Ray = 0.5 * CS% BBL_effic * G% IareaT(i,j) * &
14751477 (((G% areaCu(I-1 ,j) * visc% Ray_u(I-1 ,j,k) * u(I-1 ,j,k)** 2 ) + &
14761478 (G% areaCu(I,j) * visc% Ray_u(I,j,k) * u(I,j,k)** 2 )) + &
14771479 ((G% areaCv(i,J-1 ) * visc% Ray_v(i,J-1 ,k) * v(i,J-1 ,k)** 2 ) + &
@@ -1576,6 +1578,8 @@ subroutine add_LOTW_BBL_diffusivity(h, u, v, tv, fluxes, visc, j, N2_int, Rho_bo
15761578 real :: dz(SZI_(G),SZK_(GV)) ! Height change across layers [Z ~> m]
15771579 real :: dz_above(SZK_(GV)+ 1 ) ! Distance from each interface to the surface [Z ~> m]
15781580 real :: TKE_column ! net TKE input into the column [H Z2 T-3 ~> m3 s-3 or W m-2]
1581+ real :: BBL_meanKE_dis ! Sum of tidal and mean kinetic energy dissipation in the bottom boundary layer, which
1582+ ! can act as a source of TKE [H L2 T-3 ~> m3 s-3 or W m-2]
15791583 real :: TKE_remaining ! remaining TKE available for mixing in this layer and above [H Z2 T-3 ~> m3 s-3 or W m-2]
15801584 real :: TKE_consumed ! TKE used for mixing in this layer [H Z2 T-3 ~> m3 s-3 or W m-2]
15811585 real :: TKE_Kd_wall ! TKE associated with unlimited law of the wall mixing [H Z2 T-3 ~> m3 s-3 or W m-2]
@@ -1639,14 +1643,14 @@ subroutine add_LOTW_BBL_diffusivity(h, u, v, tv, fluxes, visc, j, N2_int, Rho_bo
16391643 if ((ustar > 0.0 ) .and. (absf > CS% IMax_decay * ustar)) Idecay = absf / ustar
16401644
16411645 ! Energy input at the bottom [H Z2 T-3 ~> m3 s-3 or W m-2].
1642- ! (Note that visc%TKE_BBL is in [H Z2 T-3 ~> m3 s-3 or W m-2], set in set_BBL_TKE().)
1643- ! I am still unsure about sqrt(cdrag) in this expressions - AJA
1644- TKE_column = cdrag_sqrt * visc% TKE_BBL (i,j)
1646+ ! (Note that visc%BBL_meanKE_loss is in [H L2 T-3 ~> m3 s-3 or W m-2], set in set_BBL_TKE().)
1647+ ! ### I am still unsure about sqrt(cdrag) in this expressions - AJA
1648+ BBL_meanKE_dis = cdrag_sqrt * visc% BBL_meanKE_loss (i,j)
16451649 ! Add in tidal dissipation energy at the bottom [H Z2 T-3 ~> m3 s-3 or W m-2].
16461650 ! Note that TKE_tidal is in [R Z3 T-3 ~> W m-2].
16471651 if (associated (fluxes% TKE_tidal)) &
1648- TKE_column = TKE_column + fluxes% TKE_tidal(i,j) * GV% RZ_to_H
1649- TKE_column = CS% BBL_effic * TKE_column ! Only use a fraction of the mechanical dissipation for mixing.
1652+ BBL_meanKE_dis = BBL_meanKE_dis + US % Z_to_L ** 2 * fluxes% TKE_tidal(i,j) * GV% RZ_to_H
1653+ TKE_column = CS% BBL_effic * BBL_meanKE_dis ! Only use a fraction of the mechanical dissipation for mixing.
16501654
16511655 TKE_remaining = TKE_column
16521656 if (CS% LOTW_BBL_answer_date > 20240630 ) then
@@ -1670,7 +1674,7 @@ subroutine add_LOTW_BBL_diffusivity(h, u, v, tv, fluxes, visc, j, N2_int, Rho_bo
16701674
16711675 ! Add in additional energy input from bottom-drag against slopes (sides)
16721676 if (Rayleigh_drag) TKE_remaining = TKE_remaining + &
1673- 0.5 * CS% BBL_effic * US % L_to_Z ** 2 * G% IareaT(i,j) * &
1677+ 0.5 * CS% BBL_effic * G% IareaT(i,j) * &
16741678 (((G% areaCu(I-1 ,j) * visc% Ray_u(I-1 ,j,k) * u(I-1 ,j,k)** 2 ) + &
16751679 (G% areaCu(I,j) * visc% Ray_u(I,j,k) * u(I,j,k)** 2 )) + &
16761680 ((G% areaCv(i,J-1 ) * visc% Ray_v(i,J-1 ,k) * v(i,J-1 ,k)** 2 ) + &
@@ -1949,8 +1953,8 @@ subroutine set_BBL_TKE(u, v, h, tv, fluxes, visc, G, GV, US, CS, OBC)
19491953 if (allocated (visc% ustar_BBL)) then
19501954 do j= js,je ; do i= is,ie ; visc% ustar_BBL(i,j) = 0.0 ; enddo ; enddo
19511955 endif
1952- if (allocated (visc% TKE_BBL )) then
1953- do j= js,je ; do i= is,ie ; visc% TKE_BBL (i,j) = 0.0 ; enddo ; enddo
1956+ if (allocated (visc% BBL_meanKE_loss )) then
1957+ do j= js,je ; do i= is,ie ; visc% BBL_meanKE_loss (i,j) = 0.0 ; enddo ; enddo
19541958 endif
19551959 return
19561960 endif
@@ -2075,7 +2079,7 @@ subroutine set_BBL_TKE(u, v, h, tv, fluxes, visc, G, GV, US, CS, OBC)
20752079 (G% areaCu(I,j)* (ustar(I)* ustar(I)))) + &
20762080 ((G% areaCv(i,J-1 )* (vstar(i,J-1 )* vstar(i,J-1 ))) + &
20772081 (G% areaCv(i,J)* (vstar(i,J)* vstar(i,J)))) ) )
2078- visc% TKE_BBL (i,j) = US % L_to_Z ** 2 * &
2082+ visc% BBL_meanKE_loss (i,j) = &
20792083 ((((G% areaCu(I-1 ,j)* (ustar(I-1 )* u2_bbl(I-1 ))) + &
20802084 (G% areaCu(I,j) * (ustar(I)* u2_bbl(I)))) + &
20812085 ((G% areaCv(i,J-1 )* (vstar(i,J-1 )* v2_bbl(i,J-1 ))) + &
@@ -2358,9 +2362,9 @@ subroutine set_diffusivity_init(Time, G, GV, US, param_file, diag, CS, int_tide_
23582362 " velocity field to the bottom stress. CDRAG is only used " // &
23592363 " if BOTTOMDRAGLAW is true." , units= " nondim" , default= 0.003 )
23602364 call get_param(param_file, mdl, " BBL_EFFIC" , CS% BBL_effic, &
2361- " The efficiency with which the energy extracted by " // &
2362- " bottom drag drives BBL diffusion. This is only " // &
2363- " used if BOTTOMDRAGLAW is true. " , units= " nondim" , default= 0.20 )
2365+ " The efficiency with which the energy extracted by bottom drag drives BBL " // &
2366+ " diffusion. This is only used if BOTTOMDRAGLAW is true. " , &
2367+ units= " nondim" , default= 0.20 , scale = US % L_to_Z ** 2 )
23642368 call get_param(param_file, mdl, " EPBL_BBL_EFFIC" , CS% ePBL_BBL_effic, &
23652369 units= " nondim" , default= 0.0 ,do_not_log= .true. )
23662370 call get_param(param_file, mdl, " BBL_MIXING_MAX_DECAY" , decay_length, &
0 commit comments