Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
Méso-NH code
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
RODIER Quentin
Méso-NH code
Commits
888772b2
Commit
888772b2
authored
2 years ago
by
RODIER Quentin
Browse files
Options
Downloads
Patches
Plain Diff
Quentin 15/08/2022: Packing turb_ver
parent
7ebe3d13
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/common/turb/mode_turb_ver.F90
+95
-109
95 additions, 109 deletions
src/common/turb/mode_turb_ver.F90
with
95 additions
and
109 deletions
src/common/turb/mode_turb_ver.F90
+
95
−
109
View file @
888772b2
...
...
@@ -224,28 +224,23 @@ USE MODD_TURB_n, ONLY: TURB_t
!
USE
MODE_EMOIST
,
ONLY
:
EMOIST
USE
MODE_ETHETA
,
ONLY
:
ETHETA
USE
MODI_GRADIENT_M
USE
MODI_GRADIENT_W
USE
MODE_GRADIENT_M_PHY
,
ONLY
:
GZ_M_W_PHY
USE
MODI_TURB
USE
MODE_IO_FIELD_WRITE
,
ONLY
:
IO_FIELD_WRITE_PHY
USE
MODE_PRANDTL
,
ONLY
:
PSI_SV
,
PSI3
,
PHI3
,
PRANDTL
USE
MODE_SBL_DEPTH
,
ONLY
:
SBL_DEPTH
USE
MODE_TURB_VER_THERMO_FLUX
,
ONLY
:
TURB_VER_THERMO_FLUX
USE
MODE_TURB_VER_THERMO_CORR
,
ONLY
:
TURB_VER_THERMO_CORR
USE
MODE_TURB_VER_DYN_FLUX
,
ONLY
:
TURB_VER_DYN_FLUX
USE
MODE_TURB_VER_SV_FLUX
,
ONLY
:
TURB_VER_SV_FLUX
USE
MODE_TURB_VER_SV_CORR
,
ONLY
:
TURB_VER_SV_CORR
USE
MODI_LES_MEAN_SUBGRID
USE
MODE_SBL_DEPTH
,
ONLY
:
SBL_DEPTH
USE
MODI_SECOND_MNH
!
USE
MOD
E_IO_FIELD_WRITE
,
only
:
IO_Field_write
USE
MOD
E_PRANDTL
,
ONLY
:
PSI_SV
,
PSI3
,
PHI3
,
PRANDTL
USE
MOD
I_LES_MEAN_SUBGRID_PHY
USE
MOD
I_SECOND_MNH
!
IMPLICIT
NONE
!
!* 0.1 declarations of arguments
!
!
!
TYPE
(
DIMPHYEX_t
),
INTENT
(
IN
)
::
D
TYPE
(
CST_t
),
INTENT
(
IN
)
::
CST
TYPE
(
CSTURB_t
),
INTENT
(
IN
)
::
CSTURB
...
...
@@ -275,97 +270,91 @@ REAL, INTENT(IN) :: PIMPL, PEXPL ! Coef. for temporal disc.
REAL
,
INTENT
(
IN
)
::
PTSTEP
! timestep
TYPE
(
TFILEDATA
),
INTENT
(
IN
)
::
TPFILE
! Output file
!
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
D
%
NKT
),
INTENT
(
IN
)
::
PDXX
,
PDYY
,
PDZZ
,
PDZX
,
PDZY
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PDXX
,
PDYY
,
PDZZ
,
PDZX
,
PDZY
! Metric coefficients
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
)
::
PDIRCOSZW
! Director Cosinus of the
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
)
::
PDIRCOSZW
! Director Cosinus of the
! normal to the ground surface
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
D
%
NKT
),
INTENT
(
IN
)
::
PZZ
! altitudes at flux points
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
)
::
PCOSSLOPE
! cosinus of the angle
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PZZ
! altitudes at flux points
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
)
::
PCOSSLOPE
! cosinus of the angle
! between i and the slope vector
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
)
::
PSINSLOPE
! sinus of the angle
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
)
::
PSINSLOPE
! sinus of the angle
! between i and the slope vector
!
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
D
%
NKT
),
INTENT
(
IN
)
::
PRHODJ
! dry density * grid volum
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PRHODJ
! dry density * grid volum
! MFMOIST used in case of OHARATU
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
D
%
NKT
),
INTENT
(
IN
)
::
MFMOIST
! moist mass flux dual scheme
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
MFMOIST
! moist mass flux dual scheme
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
D
%
NKT
),
INTENT
(
IN
)
::
PTHVREF
! ref. state Virtual
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PTHVREF
! ref. state Virtual
! Potential Temperature
!
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
)
::
PSFTHM
,
PSFRM
! surface fluxes at time
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
KSV
),
INTENT
(
IN
)
::
PSFSVM
! t - deltat
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
)
::
PSFTHM
,
PSFRM
! surface fluxes at time
REAL
,
DIMENSION
(
D
%
NIJT
,
KSV
),
INTENT
(
IN
)
::
PSFSVM
! t - deltat
!
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
)
::
PSFTHP
,
PSFRP
! surface fluxes at time
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
KSV
),
INTENT
(
IN
)
::
PSFSVP
! t + deltat
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
)
::
PSFTHP
,
PSFRP
! surface fluxes at time
REAL
,
DIMENSION
(
D
%
NIJT
,
KSV
),
INTENT
(
IN
)
::
PSFSVP
! t + deltat
!
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
)
::
PCDUEFF
! Cd * || u || at time t
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
)
::
PTAU11M
! <uu> in the axes linked
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
)
::
PCDUEFF
! Cd * || u || at time t
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
)
::
PTAU11M
! <uu> in the axes linked
! to the maximum slope direction and the surface normal and the binormal
! at time t - dt
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
)
::
PTAU12M
! <uv> in the same axes
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
)
::
PTAU33M
! <ww> in the same axes
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
)
::
PTAU12M
! <uv> in the same axes
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
)
::
PTAU33M
! <ww> in the same axes
!
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
D
%
NKT
),
INTENT
(
IN
)
::
PUM
,
PVM
,
PWM
,
PTHLM
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PUM
,
PVM
,
PWM
,
PTHLM
! Wind and potential temperature at t-Delta t
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
D
%
NKT
,
KRR
),
INTENT
(
IN
)
::
PRM
! Mixing ratios
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
,
KRR
),
INTENT
(
IN
)
::
PRM
! Mixing ratios
! at t-Delta t
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
D
%
NKT
,
KSV
),
INTENT
(
IN
)
::
PSVM
! scalar var. at t-Delta t
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
)
::
PUSLOPEM
! wind component along the
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
,
KSV
),
INTENT
(
IN
)
::
PSVM
! scalar var. at t-Delta t
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
)
::
PUSLOPEM
! wind component along the
! maximum slope direction
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
)
::
PVSLOPEM
! wind component along the
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
)
::
PVSLOPEM
! wind component along the
! direction normal to the maximum slope one
!
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
D
%
NKT
),
INTENT
(
IN
)
::
PTKEM
! TKE at time t
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
D
%
NKT
),
INTENT
(
IN
)
::
PLM
! Turb. mixing length
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PTKEM
! TKE at time t
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PLM
! Turb. mixing length
! PLENGTHM PLENGTHH used in case of OHARATU
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PLENGTHM
! Turb. mixing length momentum
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PLENGTHH
! Turb. mixing length heat/moisture
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PLEPS
! dissipative length
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PLOCPEXNM
! Lv(T)/Cp/Exnref at time t-1
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PATHETA
! coefficients between
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PAMOIST
! s and Thetal and Rnp
REAL
,
DIMENSION
(
MERGE
(
D
%
NIT
,
0
,
OCOMPUTE_SRC
),&
MERGE
(
D
%
NJT
,
0
,
OCOMPUTE_SRC
),&
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PLENGTHM
! Turb. mixing length momentum
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PLENGTHH
! Turb. mixing length heat/moisture
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PLEPS
! dissipative length
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PLOCPEXNM
! Lv(T)/Cp/Exnref at time t-1
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PATHETA
! coefficients between
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PAMOIST
! s and Thetal and Rnp
REAL
,
DIMENSION
(
MERGE
(
D
%
NIJT
,
0
,
OCOMPUTE_SRC
),&
MERGE
(
D
%
NKT
,
0
,
OCOMPUTE_SRC
)),
INTENT
(
IN
)
::
PSRCM
! normalized
! 2nd-order flux s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PFRAC_ICE
! ri fraction of rc+ri
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PFWTH
! d(w'2th' )/dz
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PFWR
! d(w'2r' )/dz
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PFTH2
! d(w'th'2 )/dz
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PFR2
! d(w'r'2 )/dz
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PFTHR
! d(w'th'r')/dz
REAL
,
DIMENSION
(
MERGE
(
D
%
NIT
,
0
,
HTOM
==
'TM06'
),&
MERGE
(
D
%
NJT
,
0
,
HTOM
==
'TM06'
)),
INTENT
(
INOUT
)
::
PBL_DEPTH
! BL height for TOMS
REAL
,
DIMENSION
(
MERGE
(
D
%
NIT
,
0
,
ORMC01
),&
MERGE
(
D
%
NJT
,
0
,
ORMC01
)),
INTENT
(
INOUT
)
::
PSBL_DEPTH
! SBL depth for RMC01
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
),
INTENT
(
IN
)
::
PLMO
! Monin-Obukhov length
!
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
),
INTENT
(
INOUT
)
::
PRUS
,
PRVS
,
PRWS
,
PRTHLS
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
,
KRR
),
INTENT
(
INOUT
)
::
PRRS
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
,
KSV
),
INTENT
(
INOUT
)
::
PRSVS
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PFRAC_ICE
! ri fraction of rc+ri
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PFWTH
! d(w'2th' )/dz
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PFWR
! d(w'2r' )/dz
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PFTH2
! d(w'th'2 )/dz
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PFR2
! d(w'r'2 )/dz
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
IN
)
::
PFTHR
! d(w'th'r')/dz
REAL
,
DIMENSION
(
MERGE
(
D
%
NIJT
,
0
,
HTOM
==
'TM06'
)),
INTENT
(
INOUT
)
::
PBL_DEPTH
! BL height for TOMS
REAL
,
DIMENSION
(
MERGE
(
D
%
NIJT
,
0
,
ORMC01
)),
INTENT
(
INOUT
)
::
PSBL_DEPTH
! SBL depth for RMC01
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
)
::
PLMO
! Monin-Obukhov length
!
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
INOUT
)
::
PRUS
,
PRVS
,
PRWS
,
PRTHLS
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
,
KRR
),
INTENT
(
INOUT
)
::
PRRS
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
,
KSV
),
INTENT
(
INOUT
)
::
PRSVS
! cumulated sources for the prognostic variables
!
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
D
%
NKT
),
INTENT
(
OUT
)
::
PDP
,
PTP
! Dynamic and thermal
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
OUT
)
::
PDP
,
PTP
! Dynamic and thermal
! TKE production terms
REAL
,
DIMENSION
(
MERGE
(
D
%
NIT
,
0
,
OCOMPUTE_SRC
),&
MERGE
(
D
%
NJT
,
0
,
OCOMPUTE_SRC
),&
REAL
,
DIMENSION
(
MERGE
(
D
%
NIJT
,
0
,
OCOMPUTE_SRC
),&
MERGE
(
D
%
NKT
,
0
,
OCOMPUTE_SRC
)),
INTENT
(
OUT
)
::
PSIGS
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
D
%
NKT
),
INTENT
(
OUT
)
::
PWTH
! heat flux
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
D
%
NKT
),
INTENT
(
OUT
)
::
PWRC
! cloud water flux
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
D
%
NKT
,
KSV
),
INTENT
(
OUT
)
::
PWSV
! scalar flux
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
),
OPTIONAL
::
PSSTFL
! Time evol Flux of T at sea surface (LOCEAN)!
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
),
OPTIONAL
::
PSSTFL_C
! O-A interface flux for theta(LOCEAN and LCOUPLES)
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
),
OPTIONAL
::
PSSRFL_C
! O-A interface flux for vapor (LOCEAN and LCOUPLES)
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
),
OPTIONAL
::
PSSUFL_C
! Time evol Flux of U at sea surface (LOCEAN)
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
),
OPTIONAL
::
PSSVFL_C
!
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
),
OPTIONAL
::
PSSUFL
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
),
INTENT
(
IN
),
OPTIONAL
::
PSSVFL
!
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
OUT
)
::
PWTH
! heat flux
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
),
INTENT
(
OUT
)
::
PWRC
! cloud water flux
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
,
KSV
),
INTENT
(
OUT
)
::
PWSV
! scalar flux
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
),
OPTIONAL
::
PSSTFL
! Time evol Flux of T at sea surface (LOCEAN)!
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
),
OPTIONAL
::
PSSTFL_C
! O-A interface flux for theta(LOCEAN and LCOUPLES)
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
),
OPTIONAL
::
PSSRFL_C
! O-A interface flux for vapor (LOCEAN and LCOUPLES)
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
),
OPTIONAL
::
PSSUFL_C
! Time evol Flux of U at sea surface (LOCEAN)
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
),
OPTIONAL
::
PSSVFL_C
!
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
),
OPTIONAL
::
PSSUFL
REAL
,
DIMENSION
(
D
%
NIJT
),
INTENT
(
IN
),
OPTIONAL
::
PSSVFL
!
!
!* 0.2 declaration of local variables
!
!JUAN BUG PGI
!!$REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)) :: &
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
)
::
&
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
)
::
&
ZBETA
,
&
! buoyancy coefficient
ZSQRT_TKE
,&
! sqrt(e)
ZDTH_DZ
,
&
! d(th)/dz
...
...
@@ -386,19 +375,18 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: &
ZWV
,
&
! (v'w')
ZTHLP
,
&
! guess of potential temperature due to vert. turbulent flux
ZRP
! guess of total water due to vert. turbulent flux
!!$REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3),KSV) :: &
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
,
KSV
)
::
&
!
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
,
KSV
)
::
&
ZPSI_SV
,
&
! Prandtl number for scalars
ZREDS1
,
&
! 1D Redelsperger number R_sv
ZRED2THS
,
&
! 3D Redelsperger number R*2_thsv
ZRED2RS
! 3D Redelsperger number R*2_rsv
REAL
,
DIMENSION
(
D
%
NI
T
,
D
%
N
JT
,
D
%
NKT
)
::
ZLM
REAL
,
DIMENSION
(
D
%
NIJT
,
D
%
NKT
)
::
ZLM
!
LOGICAL
::
GUSERV
! flag to use water vapor
INTEGER
::
IKB
,
IKE
,
II
B
,
II
E
,
IJB
,
IJE
! index value for the Beginning
INTEGER
::
IKB
,
IKE
,
II
J
E
,
I
IJB
! index value for the Beginning
! and the End of the physical domain for the mass points
INTEGER
::
JSV
,
JI
,
J
J
,
JK
! loop counter
INTEGER
::
JSV
,
JIJ
,
JK
! loop counter
REAL
::
ZTIME1
REAL
::
ZTIME2
REAL
(
KIND
=
JPRB
)
::
ZHOOK_HANDLE
...
...
@@ -413,10 +401,8 @@ IF (LHOOK) CALL DR_HOOK('TURB_VER',0,ZHOOK_HANDLE)
!
IKB
=
D
%
NKTB
IKE
=
D
%
NKTE
IIE
=
D
%
NIEC
IIB
=
D
%
NIBC
IJE
=
D
%
NJEC
IJB
=
D
%
NJBC
IIJE
=
D
%
NIJE
IIJB
=
D
%
NIJB
!
!
! 3D Redelsperger numbers
...
...
@@ -437,39 +423,39 @@ CALL PRANDTL(D,CST,CSTURB,KRR,KSV,KRRI,OTURB_FLX, &
! Buoyancy coefficient
!
IF
(
OOCEAN
)
THEN
!$mnh_expand_array(JI
=IIB:IIE,J
J=IJB:IJE,JK=1:D%NKT)
ZBETA
(
I
IB
:
IIE
,
IJB
:
IJE
,
1
:
D
%
NKT
)
=
CST
%
XG
*
CST
%
XALPHAOC
!$mnh_end_expand_array(JI
=IIB:IIE,J
J=IJB:IJE,JK=1:D%NKT)
!$mnh_expand_array(JIJ=
I
IJB:
I
IJE,JK=1:D%NKT)
ZBETA
(
IIJB
:
I
IJE
,
1
:
D
%
NKT
)
=
CST
%
XG
*
CST
%
XALPHAOC
!$mnh_end_expand_array(JIJ=
I
IJB:
I
IJE,JK=1:D%NKT)
ELSE
!$mnh_expand_array(JI
=IIB:IIE,J
J=IJB:IJE,JK=1:D%NKT)
ZBETA
(
I
IB
:
IIE
,
IJB
:
IJE
,
1
:
D
%
NKT
)
=
CST
%
XG
/
PTHVREF
(
I
IB
:
IIE
,
IJB
:
IJE
,
1
:
D
%
NKT
)
!$mnh_end_expand_array(JI
=IIB:IIE,J
J=IJB:IJE,JK=1:D%NKT)
!$mnh_expand_array(JIJ=
I
IJB:
I
IJE,JK=1:D%NKT)
ZBETA
(
IIJB
:
I
IJE
,
1
:
D
%
NKT
)
=
CST
%
XG
/
PTHVREF
(
IIJB
:
I
IJE
,
1
:
D
%
NKT
)
!$mnh_end_expand_array(JIJ=
I
IJB:
I
IJE,JK=1:D%NKT)
END
IF
!
! Square root of Tke
!
!$mnh_expand_array(JI
=IIB:IIE,J
J=IJB:IJE,JK=1:D%NKT)
ZSQRT_TKE
(
I
IB
:
IIE
,
IJB
:
IJE
,
1
:
D
%
NKT
)
=
SQRT
(
PTKEM
(
I
IB
:
IIE
,
IJB
:
IJE
,
1
:
D
%
NKT
))
!$mnh_end_expand_array(JI
=IIB:IIE,J
J=IJB:IJE,JK=1:D%NKT)
!$mnh_expand_array(JIJ=
I
IJB:
I
IJE,JK=1:D%NKT)
ZSQRT_TKE
(
IIJB
:
I
IJE
,
1
:
D
%
NKT
)
=
SQRT
(
PTKEM
(
IIJB
:
I
IJE
,
1
:
D
%
NKT
))
!$mnh_end_expand_array(JIJ=
I
IJB:
I
IJE,JK=1:D%NKT)
!
! gradients of mean quantities at previous time-step
!
CALL
GZ_M_W_PHY
(
D
,
PTHLM
,
PDZZ
,
ZDTH_DZ
)
ZDR_DZ
(:,:
,:
)
=
0.
IF
(
KRR
>
0
)
CALL
GZ_M_W_PHY
(
D
,
PRM
(:,:,
:,
1
),
PDZZ
,
ZDR_DZ
)
ZDR_DZ
(:,:)
=
0.
IF
(
KRR
>
0
)
CALL
GZ_M_W_PHY
(
D
,
PRM
(:,:,
1
),
PDZZ
,
ZDR_DZ
)
!
!
! Denominator factor in 3rd order terms
!
IF
(
.NOT.
OHARAT
)
THEN
!$mnh_expand_array(JI
=IIB:IIE,J
J=IJB:IJE,JK=1:D%NKT)
ZD
(
I
IB
:
IIE
,
IJB
:
IJE
,
1
:
D
%
NKT
)
=
(
1.
+
ZREDTH1
(
I
IB
:
IIE
,
IJB
:
IJE
,
1
:
D
%
NKT
)
+
ZREDR1
(
I
IB
:
IIE
,
IJB
:
IJE
,
1
:
D
%
NKT
))
*
&
&(
1.+0.5
*
(
ZREDTH1
(
I
IB
:
IIE
,
IJB
:
IJE
,
1
:
D
%
NKT
)
+
ZREDR1
(
I
IB
:
IIE
,
IJB
:
IJE
,
1
:
D
%
NKT
)))
!$mnh_end_expand_array(JI
=IIB:IIE,J
J=IJB:IJE,JK=1:D%NKT)
!$mnh_expand_array(JIJ=
I
IJB:
I
IJE,JK=1:D%NKT)
ZD
(
IIJB
:
I
IJE
,
1
:
D
%
NKT
)
=
(
1.
+
ZREDTH1
(
IIJB
:
I
IJE
,
1
:
D
%
NKT
)
+
ZREDR1
(
IIJB
:
I
IJE
,
1
:
D
%
NKT
))
*
&
&(
1.+0.5
*
(
ZREDTH1
(
IIJB
:
I
IJE
,
1
:
D
%
NKT
)
+
ZREDR1
(
IIJB
:
I
IJE
,
1
:
D
%
NKT
)))
!$mnh_end_expand_array(JIJ=
I
IJB:
I
IJE,JK=1:D%NKT)
ELSE
!$mnh_expand_array(JI
=IIB:IIE,J
J=IJB:IJE,JK=1:D%NKT)
ZD
(
I
IB
:
IIE
,
IJB
:
IJE
,
1
:
D
%
NKT
)
=
1.
!$mnh_end_expand_array(JI
=IIB:IIE,J
J=IJB:IJE,JK=1:D%NKT)
!$mnh_expand_array(JIJ=
I
IJB:
I
IJE,JK=1:D%NKT)
ZD
(
IIJB
:
I
IJE
,
1
:
D
%
NKT
)
=
1.
!$mnh_end_expand_array(JIJ=
I
IJB:
I
IJE,JK=1:D%NKT)
ENDIF
!
! Phi3 and Psi3 Prandtl numbers
...
...
@@ -488,9 +474,9 @@ CALL PSI_SV(D,CSTURB,KSV,ZREDTH1,ZREDR1,ZREDS1,ZRED2THS,ZRED2RS,ZPHI3,ZPSI3,ZPSI
!
IF
(
OLES_CALL
)
THEN
CALL
SECOND_MNH
(
ZTIME1
)
CALL
LES_MEAN_SUBGRID
(
ZPHI3
,
X_LES_SUBGRID_PHI3
)
CALL
LES_MEAN_SUBGRID
_PHY
(
D
,
ZPHI3
,
X_LES_SUBGRID_PHI3
)
IF
(
KRR
/
=
0
)
THEN
CALL
LES_MEAN_SUBGRID
(
ZPSI3
,
X_LES_SUBGRID_PSI3
)
CALL
LES_MEAN_SUBGRID
_PHY
(
D
,
ZPSI3
,
X_LES_SUBGRID_PSI3
)
END
IF
CALL
SECOND_MNH
(
ZTIME2
)
XTIME_LES
=
XTIME_LES
+
ZTIME2
-
ZTIME1
...
...
@@ -511,9 +497,9 @@ END IF
!
IF
(
OHARAT
)
THEN
ZLM
=
PLENGTHH
ZLM
(:,:)
=
PLENGTHH
(:,:)
ELSE
ZLM
=
PLM
ZLM
(:,:)
=
PLM
(:,:)
ENDIF
!
CALL
TURB_VER_THERMO_FLUX
(
D
,
CST
,
CSTURB
,
TURBN
,
&
...
...
@@ -566,7 +552,7 @@ ENDIF
! -----------------------------------------------
!
!
IF
(
OHARAT
)
ZLM
=
PLENGTHM
IF
(
OHARAT
)
ZLM
(:,:)
=
PLENGTHM
(:,:)
!
CALL
TURB_VER_DYN_FLUX
(
D
,
CST
,
CSTURB
,
TURBN
,
KSV
,
O2D
,
OFLAT
,
&
OTURB_FLX
,
KRR
,
OOCEAN
,
OHARAT
,
OCOUPLES
,
OLES_CALL
,&
...
...
@@ -586,7 +572,7 @@ CALL TURB_VER_DYN_FLUX(D,CST,CSTURB,TURBN,KSV,O2D,OFLAT, &
!* 8. SOURCES OF PASSIVE SCALAR VARIABLES
! -----------------------------------
!
IF
(
OHARAT
)
ZLM
=
PLENGTHH
IF
(
OHARAT
)
ZLM
(:,:)
=
PLENGTHH
(:,:)
!
IF
(
KSV
>
0
)
&
CALL
TURB_VER_SV_FLUX
(
D
,
CST
,
CSTURB
,
ONOMIXLG
,
&
...
...
@@ -640,7 +626,7 @@ IF ( OTURB_FLX .AND. TPFILE%LOPENED .AND. .NOT. OHARAT) THEN
TZFIELD
%
NTYPE
=
TYPEREAL
TZFIELD
%
NDIMS
=
3
TZFIELD
%
LTIMEDEP
=
.TRUE.
CALL
IO_F
ield_write
(
TPFILE
,
TZFIELD
,
ZPHI3
)
CALL
IO_F
IELD_WRITE_PHY
(
D
,
TPFILE
,
TZFIELD
,
ZPHI3
)
!
! stores the Turbulent Schmidt number
!
...
...
@@ -654,7 +640,7 @@ IF ( OTURB_FLX .AND. TPFILE%LOPENED .AND. .NOT. OHARAT) THEN
TZFIELD
%
NTYPE
=
TYPEREAL
TZFIELD
%
NDIMS
=
3
TZFIELD
%
LTIMEDEP
=
.TRUE.
CALL
IO_F
ield_write
(
TPFILE
,
TZFIELD
,
ZPSI3
)
CALL
IO_F
IELD_WRITE_PHY
(
D
,
TPFILE
,
TZFIELD
,
ZPSI3
)
!
!
! stores the Turbulent Schmidt number for the scalar variables
...
...
@@ -670,7 +656,7 @@ IF ( OTURB_FLX .AND. TPFILE%LOPENED .AND. .NOT. OHARAT) THEN
WRITE
(
TZFIELD
%
CMNHNAME
,
'("PSI_SV_",I3.3)'
)
JSV
TZFIELD
%
CLONGNAME
=
TRIM
(
TZFIELD
%
CMNHNAME
)
TZFIELD
%
CCOMMENT
=
'X_Y_Z_'
//
TRIM
(
TZFIELD
%
CMNHNAME
)
CALL
IO_F
ield_write
(
TPFILE
,
TZFIELD
,
ZPSI_SV
(:,:,
:,
JSV
))
CALL
IO_F
IELD_WRITE_PHY
(
D
,
TPFILE
,
TZFIELD
,
ZPSI_SV
(:,:,
JSV
))
END
DO
!
END
IF
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment