Skip to content
Open
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
2 changes: 1 addition & 1 deletion src/gotm/gotm.F90
Original file line number Diff line number Diff line change
Expand Up @@ -855,7 +855,7 @@ subroutine integrate_gotm()
!GSW
if(compute_massflux) then
call do_density(nlev,S,T,-z,-zi)
call do_massflux ( nlev,dt,u,v,T,S,rho,h ) ! compute mass flux quantities from the meanflow variables
call do_massflux ( nlev,dt,u,v,T,S,rho,h,z,zi,gravity ) ! compute mass flux quantities from the meanflow variables
call uvTSequation_mf( nlev,dt,Fmass,u_p,v_p,T_p,S_p,Pmf,mf_nsub,massflux_on_dynamics, massflux_energy ) ! add the mass flux term to the meanflow equation
endif

Expand Down
14 changes: 10 additions & 4 deletions src/turbulence/massfluxeq.F90
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
! !ROUTINE: The convective plume nonlinear ODEs \label{sec:massfluxeq}
!
! !INTERFACE:
subroutine massfluxeq(nlev,dt,u,v,T,S,rho,h)
subroutine massfluxeq(nlev,dt,u,v,T,S,rho,h,z,zi,gravity)

! !DESCRIPTION:
! This subroutine solves a set of nonlinear ODEs to determine
Expand All @@ -30,7 +30,6 @@ subroutine massfluxeq(nlev,dt,u,v,T,S,rho,h)
use turbulence, only: mf_ap0,mf_wp0,mf_Cent,mf_Cdet, mf_d0
use turbulence, only: mf_aa,mf_bb,mf_bp,mf_uv,mf_dbkg
use turbulence, only: mf_zinv, Bmf, massflux_energy, mf_nsub
use meanflow, only: gravity, z, zi
use density, only: rho0, get_rho
!
IMPLICIT NONE
Expand All @@ -55,6 +54,12 @@ subroutine massfluxeq(nlev,dt,u,v,T,S,rho,h)
! layer thickness (m)
REALTYPE, intent(in) :: h(0:nlev)

! center and interface positions
REALTYPE, intent(in) :: z(0:nlev), zi(0:nlev)

!
REALTYPE, intent(in) :: gravity

! !REVISION HISTORY:
! Original author(s): Florian Lemarié
!EOP
Expand Down Expand Up @@ -295,7 +300,7 @@ subroutine tkeeq_mf(nlev,dt,h)
use turbulence, only: tke,tkeo,tke_p,k_min,eps
use turbulence, only: mf_Cent,mf_Cdet, mf_d0, mf_nsub
!
! IMPLICIT NONE
IMPLICIT NONE
!
! !INPUT PARAMETERS:
!
Expand All @@ -317,6 +322,7 @@ subroutine tkeeq_mf(nlev,dt,h)
REALTYPE, parameter :: wp_min = 0.5E-08 ! min value for plume velocity
REALTYPE :: dt_sub, tke_star(0:nlev)
REALTYPE :: ap,dissp,kpp,kpm,dwp,k_env,d0,rhs,FC(0:nlev)
REALTYPE :: hEnt, hDet
integer :: i,isub
!
!------------------------------------------------------------------------
Expand Down Expand Up @@ -347,7 +353,7 @@ subroutine tkeeq_mf(nlev,dt,h)
rhs = rhs + hEnt*normVp(i)-ap*dissp
kpm = kpp - rhs
!
if( a_p(i-1)>0. .and. w_p(i-1) < -wpmin ) then
if( a_p(i-1)>0. .and. w_p(i-1) < -wp_min ) then
tke_p(i-1) = MAX( kpm/(a_p(i-1)*w_p(i-1)), k_min )
else
tke_p(i-1) = k_min
Expand Down
7 changes: 5 additions & 2 deletions src/turbulence/turbulence.F90
Original file line number Diff line number Diff line change
Expand Up @@ -3025,7 +3025,7 @@ end subroutine do_lengthscale
! !IROUTINE: Handle convection for first-order TKE schemes using a mass flux formalism\label{sec:convec}
!
! !INTERFACE:
subroutine do_massflux(nlev,dt,umean,vmean,Tmean,Smean,Rmean,h)
subroutine do_massflux(nlev,dt,umean,vmean,Tmean,Smean,Rmean,h,z,zi,gravity)
!
! !DESCRIPTION:
! Based on user input, this routine calls the appropriate routines for
Expand All @@ -3048,14 +3048,17 @@ subroutine do_massflux(nlev,dt,umean,vmean,Tmean,Smean,Rmean,h)
REALTYPE, intent(in) :: Smean(0:nlev)
REALTYPE, intent(in) :: Rmean(0:nlev)
REALTYPE, intent(in) :: h(0:nlev)
REALTYPE, intent(in) :: z(0:nlev)
REALTYPE, intent(in) :: zi(0:nlev)
REALTYPE, intent(in) :: gravity
!
! !REVISION HISTORY:
! Original author(s): Florian Lemarié
!
!EOP
!-----------------------------------------------------------------------
!BOC
call massfluxeq(nlev,dt,umean,vmean,tmean,smean,Rmean,h)
call massfluxeq(nlev,dt,umean,vmean,tmean,smean,Rmean,h,z,zi,gravity)
if( massflux_energy ) call tke_transport_mf(nlev,umean,vmean,h)
return
end subroutine do_massflux
Expand Down