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
Méso-NH
Méso-NH code
Commits
0cc2835d
Commit
0cc2835d
authored
2 years ago
by
RODIER Quentin
Browse files
Options
Downloads
Patches
Plain Diff
Quentin 05/04/2022: Expand Array turb.F90
parent
e89f7808
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/turb.F90
+99
-41
99 additions, 41 deletions
src/common/turb/turb.F90
with
99 additions
and
41 deletions
src/common/turb/turb.F90
+
99
−
41
View file @
0cc2835d
...
@@ -439,7 +439,8 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: &
...
@@ -439,7 +439,8 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: &
ZTHLM
,
ZRTKEMS
,
&
! initial potential temp; TKE advective source
ZTHLM
,
ZRTKEMS
,
&
! initial potential temp; TKE advective source
ZSHEAR
,
ZDUDZ
,
ZDVDZ
,
&
! horizontal-wind vertical gradient
ZSHEAR
,
ZDUDZ
,
ZDVDZ
,
&
! horizontal-wind vertical gradient
ZLVOCPEXNM
,
ZLSOCPEXNM
,
&
! Lv/Cp/EXNREF and Ls/Cp/EXNREF at t-1
ZLVOCPEXNM
,
ZLSOCPEXNM
,
&
! Lv/Cp/EXNREF and Ls/Cp/EXNREF at t-1
ZATHETA_ICE
,
ZAMOIST_ICE
! coefficients for s = f (Thetal,Rnp)
ZATHETA_ICE
,
ZAMOIST_ICE
,
&
! coefficients for s = f (Thetal,Rnp)
ZWORK1
! working array syntax
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
,
KRR
)
::
ZRM
! initial mixing ratio
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
,
KRR
)
::
ZRM
! initial mixing ratio
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
)
::
ZTAU11M
,
ZTAU12M
,
&
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
)
::
ZTAU11M
,
ZTAU12M
,
&
...
@@ -513,6 +514,7 @@ END IF
...
@@ -513,6 +514,7 @@ END IF
!
!
!* 2.1 Cph at t
!* 2.1 Cph at t
!
!
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ZCP
(:,:,:)
=
CST
%
XCPD
ZCP
(:,:,:)
=
CST
%
XCPD
!
!
IF
(
KRR
>
0
)
ZCP
(:,:,:)
=
ZCP
(:,:,:)
+
CST
%
XCPV
*
PRT
(:,:,:,
1
)
IF
(
KRR
>
0
)
ZCP
(:,:,:)
=
ZCP
(:,:,:)
+
CST
%
XCPV
*
PRT
(:,:,:,
1
)
...
@@ -523,18 +525,25 @@ END DO
...
@@ -523,18 +525,25 @@ END DO
DO
JRR
=
2
+
KRRL
,
1
+
KRRL
+
KRRI
! loop on the solid components
DO
JRR
=
2
+
KRRL
,
1
+
KRRL
+
KRRI
! loop on the solid components
ZCP
(:,:,:)
=
ZCP
(:,:,:)
+
CST
%
XCI
*
PRT
(:,:,:,
JRR
)
ZCP
(:,:,:)
=
ZCP
(:,:,:)
+
CST
%
XCI
*
PRT
(:,:,:,
JRR
)
END
DO
END
DO
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
!
!
!* 2.2 Exner function at t
!* 2.2 Exner function at t
!
!
IF
(
OOCEAN
)
THEN
IF
(
OOCEAN
)
THEN
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ZEXN
(:,:,:)
=
1.
ZEXN
(:,:,:)
=
1.
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ELSE
ELSE
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ZEXN
(:,:,:)
=
(
PPABST
(:,:,:)/
CST
%
XP00
)
**
(
CST
%
XRD
/
CST
%
XCPD
)
ZEXN
(:,:,:)
=
(
PPABST
(:,:,:)/
CST
%
XP00
)
**
(
CST
%
XRD
/
CST
%
XCPD
)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
END
IF
END
IF
!
!
!* 2.3 dissipative heating coeff a t
!* 2.3 dissipative heating coeff a t
!
!
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ZCOEF_DISS
(:,:,:)
=
1
/(
ZCP
(:,:,:)
*
ZEXN
(:,:,:))
ZCOEF_DISS
(:,:,:)
=
1
/(
ZCP
(:,:,:)
*
ZEXN
(:,:,:))
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
!
!
!
!
ZFRAC_ICE
(:,:,:)
=
0.0
ZFRAC_ICE
(:,:,:)
=
0.0
...
@@ -545,7 +554,9 @@ IF (KRRL >=1) THEN
...
@@ -545,7 +554,9 @@ IF (KRRL >=1) THEN
!
!
!* 2.4 Temperature at t
!* 2.4 Temperature at t
!
!
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ZT
(:,:,:)
=
PTHLT
(:,:,:)
*
ZEXN
(:,:,:)
ZT
(:,:,:)
=
PTHLT
(:,:,:)
*
ZEXN
(:,:,:)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
!
!
!* 2.5 Lv/Cph/Exn
!* 2.5 Lv/Cph/Exn
!
!
...
@@ -555,16 +566,20 @@ IF (KRRL >=1) THEN
...
@@ -555,16 +566,20 @@ IF (KRRL >=1) THEN
CALL
COMPUTE_FUNCTION_THERMO
(
CST
%
XALPI
,
CST
%
XBETAI
,
CST
%
XGAMI
,
CST
%
XLSTT
,
CST
%
XCI
,
ZT
,
ZEXN
,
ZCP
,
&
CALL
COMPUTE_FUNCTION_THERMO
(
CST
%
XALPI
,
CST
%
XBETAI
,
CST
%
XGAMI
,
CST
%
XLSTT
,
CST
%
XCI
,
ZT
,
ZEXN
,
ZCP
,
&
ZLSOCPEXNM
,
ZAMOIST_ICE
,
ZATHETA_ICE
)
ZLSOCPEXNM
,
ZAMOIST_ICE
,
ZATHETA_ICE
)
!
!
!$mnh_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
WHERE
(
PRT
(:,:,:,
2
)
+
PRT
(:,:,:,
4
)
>
0.0
)
WHERE
(
PRT
(:,:,:,
2
)
+
PRT
(:,:,:,
4
)
>
0.0
)
ZFRAC_ICE
(:,:,:)
=
PRT
(:,:,:,
4
)
/
(
PRT
(:,:,:,
2
)
+
PRT
(:,:,:,
4
)
)
ZFRAC_ICE
(:,:,:)
=
PRT
(:,:,:,
4
)
/
(
PRT
(:,:,:,
2
)
+
PRT
(:,:,:,
4
)
)
END
WHERE
END
WHERE
!$mnh_end_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
!
!
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ZLOCPEXNM
(:,:,:)
=
(
1.0
-
ZFRAC_ICE
(:,:,:))
*
ZLVOCPEXNM
(:,:,:)
&
ZLOCPEXNM
(:,:,:)
=
(
1.0
-
ZFRAC_ICE
(:,:,:))
*
ZLVOCPEXNM
(:,:,:)
&
+
ZFRAC_ICE
(:,:,:)
*
ZLSOCPEXNM
(:,:,:)
+
ZFRAC_ICE
(:,:,:)
*
ZLSOCPEXNM
(:,:,:)
ZAMOIST
(:,:,:)
=
(
1.0
-
ZFRAC_ICE
(:,:,:))
*
ZAMOIST
(:,:,:)
&
ZAMOIST
(:,:,:)
=
(
1.0
-
ZFRAC_ICE
(:,:,:))
*
ZAMOIST
(:,:,:)
&
+
ZFRAC_ICE
(:,:,:)
*
ZAMOIST_ICE
(:,:,:)
+
ZFRAC_ICE
(:,:,:)
*
ZAMOIST_ICE
(:,:,:)
ZATHETA
(:,:,:)
=
(
1.0
-
ZFRAC_ICE
(:,:,:))
*
ZATHETA
(:,:,:)
&
ZATHETA
(:,:,:)
=
(
1.0
-
ZFRAC_ICE
(:,:,:))
*
ZATHETA
(:,:,:)
&
+
ZFRAC_ICE
(:,:,:)
*
ZATHETA_ICE
(:,:,:)
+
ZFRAC_ICE
(:,:,:)
*
ZATHETA_ICE
(:,:,:)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ELSE
ELSE
CALL
COMPUTE_FUNCTION_THERMO
(
CST
%
XALPW
,
CST
%
XBETAW
,
CST
%
XGAMW
,
CST
%
XLVTT
,
CST
%
XCL
,
ZT
,
ZEXN
,
ZCP
,
&
CALL
COMPUTE_FUNCTION_THERMO
(
CST
%
XALPW
,
CST
%
XBETAW
,
CST
%
XGAMW
,
CST
%
XLVTT
,
CST
%
XCL
,
ZT
,
ZEXN
,
ZCP
,
&
ZLOCPEXNM
,
ZAMOIST
,
ZATHETA
)
ZLOCPEXNM
,
ZAMOIST
,
ZATHETA
)
...
@@ -598,13 +613,14 @@ IF (KRRL >=1) THEN
...
@@ -598,13 +613,14 @@ IF (KRRL >=1) THEN
END
IF
END
IF
!
!
ELSE
ELSE
ZLOCPEXNM
=
0.
ZLOCPEXNM
(:,:,:)
=
0.
END
IF
! loop end on KRRL >= 1
END
IF
! loop end on KRRL >= 1
!
!
! computes conservative variables
! computes conservative variables
!
!
IF
(
KRRL
>=
1
)
THEN
IF
(
KRRL
>=
1
)
THEN
IF
(
KRRI
>=
1
)
THEN
IF
(
KRRI
>=
1
)
THEN
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
! Rnp at t
! Rnp at t
PRT
(:,:,:,
1
)
=
PRT
(:,:,:,
1
)
+
PRT
(:,:,:,
2
)
+
PRT
(:,:,:,
4
)
PRT
(:,:,:,
1
)
=
PRT
(:,:,:,
1
)
+
PRT
(:,:,:,
2
)
+
PRT
(:,:,:,
4
)
PRRS
(:,:,:,
1
)
=
PRRS
(:,:,:,
1
)
+
PRRS
(:,:,:,
2
)
+
PRRS
(:,:,:,
4
)
PRRS
(:,:,:,
1
)
=
PRRS
(:,:,:,
1
)
+
PRRS
(:,:,:,
2
)
+
PRRS
(:,:,:,
4
)
...
@@ -613,13 +629,16 @@ IF ( KRRL >= 1 ) THEN
...
@@ -613,13 +629,16 @@ IF ( KRRL >= 1 ) THEN
-
ZLSOCPEXNM
(:,:,:)
*
PRT
(:,:,:,
4
)
-
ZLSOCPEXNM
(:,:,:)
*
PRT
(:,:,:,
4
)
PRTHLS
(:,:,:)
=
PRTHLS
(:,:,:)
-
ZLVOCPEXNM
(:,:,:)
*
PRRS
(:,:,:,
2
)
&
PRTHLS
(:,:,:)
=
PRTHLS
(:,:,:)
-
ZLVOCPEXNM
(:,:,:)
*
PRRS
(:,:,:,
2
)
&
-
ZLSOCPEXNM
(:,:,:)
*
PRRS
(:,:,:,
4
)
-
ZLSOCPEXNM
(:,:,:)
*
PRRS
(:,:,:,
4
)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ELSE
ELSE
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
! Rnp at t
! Rnp at t
PRT
(:,:,:,
1
)
=
PRT
(:,:,:,
1
)
+
PRT
(:,:,:,
2
)
PRT
(:,:,:,
1
)
=
PRT
(:,:,:,
1
)
+
PRT
(:,:,:,
2
)
PRRS
(:,:,:,
1
)
=
PRRS
(:,:,:,
1
)
+
PRRS
(:,:,:,
2
)
PRRS
(:,:,:,
1
)
=
PRRS
(:,:,:,
1
)
+
PRRS
(:,:,:,
2
)
! Theta_l at t
! Theta_l at t
PTHLT
(:,:,:)
=
PTHLT
(:,:,:)
-
ZLOCPEXNM
(:,:,:)
*
PRT
(:,:,:,
2
)
PTHLT
(:,:,:)
=
PTHLT
(:,:,:)
-
ZLOCPEXNM
(:,:,:)
*
PRT
(:,:,:,
2
)
PRTHLS
(:,:,:)
=
PRTHLS
(:,:,:)
-
ZLOCPEXNM
(:,:,:)
*
PRRS
(:,:,:,
2
)
PRTHLS
(:,:,:)
=
PRTHLS
(:,:,:)
-
ZLOCPEXNM
(:,:,:)
*
PRRS
(:,:,:,
2
)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
END
IF
END
IF
END
IF
END
IF
!
!
...
@@ -645,7 +664,7 @@ SELECT CASE (HTURBLEN)
...
@@ -645,7 +664,7 @@ SELECT CASE (HTURBLEN)
! ------------------
! ------------------
CASE
(
'BL89'
)
CASE
(
'BL89'
)
ZSHEAR
=
0.
ZSHEAR
(:,:,:)
=
0.
CALL
BL89
(
D
,
CST
,
CSTURB
,
PZZ
,
PDZZ
,
PTHVREF
,
ZTHLM
,
KRR
,
ZRM
,
PTKET
,
ZSHEAR
,
ZLM
,
OOCEAN
,
HPROGRAM
)
CALL
BL89
(
D
,
CST
,
CSTURB
,
PZZ
,
PDZZ
,
PTHVREF
,
ZTHLM
,
KRR
,
ZRM
,
PTKET
,
ZSHEAR
,
ZLM
,
OOCEAN
,
HPROGRAM
)
!
!
!* 3.2 RM17 mixing length
!* 3.2 RM17 mixing length
...
@@ -654,7 +673,9 @@ SELECT CASE (HTURBLEN)
...
@@ -654,7 +673,9 @@ SELECT CASE (HTURBLEN)
CASE
(
'RM17'
)
CASE
(
'RM17'
)
ZDUDZ
=
MXF
(
MZF
(
GZ_U_UW
(
PUT
,
PDZZ
,
D
%
NKA
,
KKU
,
KKL
),
D
%
NKA
,
KKU
,
KKL
))
ZDUDZ
=
MXF
(
MZF
(
GZ_U_UW
(
PUT
,
PDZZ
,
D
%
NKA
,
KKU
,
KKL
),
D
%
NKA
,
KKU
,
KKL
))
ZDVDZ
=
MYF
(
MZF
(
GZ_V_VW
(
PVT
,
PDZZ
,
D
%
NKA
,
KKU
,
KKL
),
D
%
NKA
,
KKU
,
KKL
))
ZDVDZ
=
MYF
(
MZF
(
GZ_V_VW
(
PVT
,
PDZZ
,
D
%
NKA
,
KKU
,
KKL
),
D
%
NKA
,
KKU
,
KKL
))
ZSHEAR
=
SQRT
(
ZDUDZ
*
ZDUDZ
+
ZDVDZ
*
ZDVDZ
)
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ZSHEAR
(:,:,:)
=
SQRT
(
ZDUDZ
(:,:,:)
*
ZDUDZ
(:,:,:)
+
ZDVDZ
(:,:,:)
*
ZDVDZ
(:,:,:))
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
CALL
BL89
(
D
,
CST
,
CSTURB
,
PZZ
,
PDZZ
,
PTHVREF
,
ZTHLM
,
KRR
,
ZRM
,
PTKET
,
ZSHEAR
,
ZLM
,
OOCEAN
,
HPROGRAM
)
CALL
BL89
(
D
,
CST
,
CSTURB
,
PZZ
,
PDZZ
,
PTHVREF
,
ZTHLM
,
KRR
,
ZRM
,
PTKET
,
ZSHEAR
,
ZLM
,
OOCEAN
,
HPROGRAM
)
!
!
!* 3.3 Grey-zone combined RM17 & Deardorff mixing lengths
!* 3.3 Grey-zone combined RM17 & Deardorff mixing lengths
...
@@ -663,7 +684,9 @@ SELECT CASE (HTURBLEN)
...
@@ -663,7 +684,9 @@ SELECT CASE (HTURBLEN)
CASE
(
'ADAP'
)
CASE
(
'ADAP'
)
ZDUDZ
=
MXF
(
MZF
(
GZ_U_UW
(
PUT
,
PDZZ
,
D
%
NKA
,
KKU
,
KKL
),
D
%
NKA
,
KKU
,
KKL
))
ZDUDZ
=
MXF
(
MZF
(
GZ_U_UW
(
PUT
,
PDZZ
,
D
%
NKA
,
KKU
,
KKL
),
D
%
NKA
,
KKU
,
KKL
))
ZDVDZ
=
MYF
(
MZF
(
GZ_V_VW
(
PVT
,
PDZZ
,
D
%
NKA
,
KKU
,
KKL
),
D
%
NKA
,
KKU
,
KKL
))
ZDVDZ
=
MYF
(
MZF
(
GZ_V_VW
(
PVT
,
PDZZ
,
D
%
NKA
,
KKU
,
KKL
),
D
%
NKA
,
KKU
,
KKL
))
ZSHEAR
=
SQRT
(
ZDUDZ
*
ZDUDZ
+
ZDVDZ
*
ZDVDZ
)
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ZSHEAR
(:,:,:)
=
SQRT
(
ZDUDZ
(:,:,:)
*
ZDUDZ
(:,:,:)
+
ZDVDZ
(:,:,:)
*
ZDVDZ
(:,:,:))
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
CALL
BL89
(
D
,
CST
,
CSTURB
,
PZZ
,
PDZZ
,
PTHVREF
,
ZTHLM
,
KRR
,
ZRM
,
PTKET
,
ZSHEAR
,
ZLM
,
OOCEAN
,
HPROGRAM
)
CALL
BL89
(
D
,
CST
,
CSTURB
,
PZZ
,
PDZZ
,
PTHVREF
,
ZTHLM
,
KRR
,
ZRM
,
PTKET
,
ZSHEAR
,
ZLM
,
OOCEAN
,
HPROGRAM
)
CALL
DELT
(
ZLMW
,
ODZ
=
.FALSE.
)
CALL
DELT
(
ZLMW
,
ODZ
=
.FALSE.
)
...
@@ -672,7 +695,10 @@ SELECT CASE (HTURBLEN)
...
@@ -672,7 +695,10 @@ SELECT CASE (HTURBLEN)
! For LES grid meshes, this is equivalent to Deardorff : the base mixing lentgh is the horizontal grid mesh,
! For LES grid meshes, this is equivalent to Deardorff : the base mixing lentgh is the horizontal grid mesh,
! and it is limited by a stability-based length (RM17), as was done in Deardorff length (but taking into account shear as well)
! and it is limited by a stability-based length (RM17), as was done in Deardorff length (but taking into account shear as well)
! For grid meshes in the grey zone, then this is the smaller of the two.
! For grid meshes in the grey zone, then this is the smaller of the two.
ZLM
=
MIN
(
ZLM
,
TURBN
%
XCADAP
*
ZLMW
)
!
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ZLM
(:,:,:)
=
MIN
(
ZLM
(:,:,:),
TURBN
%
XCADAP
*
ZLMW
(:,:,:))
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
!
!
!* 3.4 Delta mixing length
!* 3.4 Delta mixing length
! -------------------
! -------------------
...
@@ -695,11 +721,13 @@ SELECT CASE (HTURBLEN)
...
@@ -695,11 +721,13 @@ SELECT CASE (HTURBLEN)
ZALPHA
=
0.5
**
(
-1.5
)
ZALPHA
=
0.5
**
(
-1.5
)
!
!
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT)
DO
JK
=
IKTB
,
IKTE
DO
JK
=
IKTB
,
IKTE
ZLM
(:,:,
JK
)
=
(
0.5
*
(
PZZ
(:,:,
JK
)
+
PZZ
(:,:,
JK
+
KKL
))
-
&
ZLM
(:,:,
JK
)
=
(
0.5
*
(
PZZ
(:,:,
JK
)
+
PZZ
(:,:,
JK
+
KKL
))
-
&
&
PZZ
(:,:,
D
%
NKA
+
JPVEXT_TURB
*
KKL
)
)
*
PDIRCOSZW
(:,:)
&
PZZ
(:,:,
D
%
NKA
+
JPVEXT_TURB
*
KKL
)
)
*
PDIRCOSZW
(:,:)
ZLM
(:,:,
JK
)
=
ZALPHA
*
ZLM
(:,:,
JK
)
*
ZL0
/
(
ZL0
+
ZALPHA
*
ZLM
(:,:,
JK
)
)
ZLM
(:,:,
JK
)
=
ZALPHA
*
ZLM
(:,:,
JK
)
*
ZL0
/
(
ZL0
+
ZALPHA
*
ZLM
(:,:,
JK
)
)
END
DO
END
DO
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT)
!
!
ZLM
(:,:,
IKTB
-1
)
=
ZLM
(:,:,
IKTB
)
ZLM
(:,:,
IKTB
-1
)
=
ZLM
(:,:,
IKTB
)
ZLM
(:,:,
IKTE
+1
)
=
ZLM
(:,:,
IKTE
)
ZLM
(:,:,
IKTE
+1
)
=
ZLM
(:,:,
IKTE
)
...
@@ -718,29 +746,39 @@ ENDIF ! end LHARRAT
...
@@ -718,29 +746,39 @@ ENDIF ! end LHARRAT
! ------------------
! ------------------
IF
(
OHARAT
)
THEN
IF
(
OHARAT
)
THEN
ZLEPS
=
PLENGTHM
*
(
3.75
**
2.
)
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ZLEPS
(:,:,:)
=
PLENGTHM
(:,:,:)
*
(
3.75
**
2.
)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ELSE
ELSE
ZLEPS
=
ZLM
ZLEPS
(:,:,:)
=
ZLM
(:,:,:)
ENDIF
ENDIF
!
!
!* 3.7 Correction in the Surface Boundary Layer (Redelsperger 2001)
!* 3.7 Correction in the Surface Boundary Layer (Redelsperger 2001)
! ----------------------------------------
! ----------------------------------------
!
!
ZLMO
=
XUNDEF
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ZLMO
(:,:)
=
XUNDEF
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
IF
(
ORMC01
)
THEN
IF
(
ORMC01
)
THEN
ZUSTAR
=
(
PSFU
**
2
+
PSFV
**
2
)
**
(
0.25
)
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT)
ZUSTAR
(:,:)
=
(
PSFU
(:,:)
**
2
+
PSFV
(:,:)
**
2
)
**
(
0.25
)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT)
IF
(
KRR
>
0
)
THEN
IF
(
KRR
>
0
)
THEN
ZLMO
=
LMO
(
ZUSTAR
,
ZTHLM
(:,:,
IKB
),
ZRM
(:,:,
IKB
,
1
),
PSFTH
,
PSFRV
)
ZLMO
=
LMO
(
ZUSTAR
,
ZTHLM
(:,:,
IKB
),
ZRM
(:,:,
IKB
,
1
),
PSFTH
,
PSFRV
)
ELSE
ELSE
ZRVM
=
0.
ZRVM
(:,:)
=
0.
ZSFRV
=
0.
ZSFRV
(:,:)
=
0.
ZLMO
=
LMO
(
ZUSTAR
,
ZTHLM
(:,:,
IKB
),
ZRVM
,
PSFTH
,
ZSFRV
)
ZLMO
=
LMO
(
ZUSTAR
,
ZTHLM
(:,:,
IKB
),
ZRVM
,
PSFTH
,
ZSFRV
)
END
IF
END
IF
CALL
RMC01
(
HTURBLEN
,
D
%
NKA
,
KKU
,
KKL
,
PZZ
,
PDXX
,
PDYY
,
PDZZ
,
PDIRCOSZW
,
PSBL_DEPTH
,
ZLMO
,
ZLM
,
ZLEPS
)
CALL
RMC01
(
HTURBLEN
,
D
%
NKA
,
KKU
,
KKL
,
PZZ
,
PDXX
,
PDYY
,
PDZZ
,
PDIRCOSZW
,
PSBL_DEPTH
,
ZLMO
,
ZLM
,
ZLEPS
)
END
IF
END
IF
!
!
!RMC01 is only applied on RM17 in ADAP
!RMC01 is only applied on RM17 in ADAP
IF
(
HTURBLEN
==
'ADAP'
)
ZLEPS
=
MIN
(
ZLEPS
,
ZLMW
*
TURBN
%
XCADAP
)
IF
(
HTURBLEN
==
'ADAP'
)
THEN
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
ZLEPS
(:,:,:)
=
MIN
(
ZLEPS
(:,:,:),
ZLMW
(:,:,:)
*
TURBN
%
XCADAP
)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
END
IF
!
!
!* 3.8 Mixing length in external points (used if HTURBDIM="3DIM")
!* 3.8 Mixing length in external points (used if HTURBDIM="3DIM")
! ----------------------------------------------------------
! ----------------------------------------------------------
...
@@ -781,6 +819,7 @@ END IF
...
@@ -781,6 +819,7 @@ END IF
!
!
!* 4.2 compute the proportionality coefficient between wind and stress
!* 4.2 compute the proportionality coefficient between wind and stress
!
!
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT)
ZCDUEFF
(:,:)
=-
SQRT
(
(
PSFU
(:,:)
**
2
+
PSFV
(:,:)
**
2
)
/
&
ZCDUEFF
(:,:)
=-
SQRT
(
(
PSFU
(:,:)
**
2
+
PSFV
(:,:)
**
2
)
/
&
#ifdef REPRO48
#ifdef REPRO48
(
1.E-60
+
ZUSLOPE
(:,:)
**
2
+
ZVSLOPE
(:,:)
**
2
)
)
(
1.E-60
+
ZUSLOPE
(:,:)
**
2
+
ZVSLOPE
(:,:)
**
2
)
)
...
@@ -790,11 +829,12 @@ ZCDUEFF(:,:) =-SQRT ( (PSFU(:,:)**2 + PSFV(:,:)**2) / &
...
@@ -790,11 +829,12 @@ ZCDUEFF(:,:) =-SQRT ( (PSFU(:,:)**2 + PSFV(:,:)**2) / &
!
!
!* 4.6 compute the surface tangential fluxes
!* 4.6 compute the surface tangential fluxes
!
!
ZTAU11M
(:,:)
=
2.
/
3.
*
(
(
1.
+
(
PZZ
(:,:,
IKB
+
KKL
)
-
PZZ
(:,:,
IKB
))
&
ZTAU11M
(:,:)
=
2.
/
3.
*
(
(
1.
+
(
PZZ
(:,:,
IKB
+
KKL
)
-
PZZ
(:,:,
IKB
))
&
/(
PDZZ
(:,:,
IKB
+
KKL
)
+
PDZZ
(:,:,
IKB
))
&
/(
PDZZ
(:,:,
IKB
+
KKL
)
+
PDZZ
(:,:,
IKB
))
&
)
*
PTKET
(:,:,
IKB
)
&
)
*
PTKET
(:,:,
IKB
)
&
-0.5
*
PTKET
(:,:,
IKB
+
KKL
)
&
-0.5
*
PTKET
(:,:,
IKB
+
KKL
)
&
)
)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT)
ZTAU12M
(:,:)
=
0.0
ZTAU12M
(:,:)
=
0.0
ZTAU22M
(:,:)
=
ZTAU11M
(:,:)
ZTAU22M
(:,:)
=
ZTAU11M
(:,:)
ZTAU33M
(:,:)
=
ZTAU11M
(:,:)
ZTAU33M
(:,:)
=
ZTAU11M
(:,:)
...
@@ -803,11 +843,11 @@ ZTAU33M(:,:) =ZTAU11M(:,:)
...
@@ -803,11 +843,11 @@ ZTAU33M(:,:) =ZTAU11M(:,:)
! ------------------------------------------------------------------
! ------------------------------------------------------------------
!
!
!
!
ZMWTH
=
0.
! w'2th'
ZMWTH
(:,:,:)
=
0.
! w'2th'
ZMWR
=
0.
! w'2r'
ZMWR
(:,:,:)
=
0.
! w'2r'
ZMTH2
=
0.
! w'th'2
ZMTH2
(:,:,:)
=
0.
! w'th'2
ZMR2
=
0.
! w'r'2
ZMR2
(:,:,:)
=
0.
! w'r'2
ZMTHR
=
0.
! w'th'r'
ZMTHR
(:,:,:)
=
0.
! w'th'r'
IF
(
HTOM
==
'TM06'
)
THEN
IF
(
HTOM
==
'TM06'
)
THEN
CALL
TM06
(
D
%
NKA
,
KKU
,
KKL
,
PTHVREF
,
PBL_DEPTH
,
PZZ
,
PSFTH
,
ZMWTH
,
ZMTH2
)
CALL
TM06
(
D
%
NKA
,
KKU
,
KKL
,
PTHVREF
,
PBL_DEPTH
,
PZZ
,
PSFTH
,
ZMWTH
,
ZMTH2
)
...
@@ -822,21 +862,21 @@ IF (HTOM=='TM06') THEN
...
@@ -822,21 +862,21 @@ IF (HTOM=='TM06') THEN
ZFWTH
(:,:,:
IKTB
)
=
0.
ZFWTH
(:,:,:
IKTB
)
=
0.
!ZFWR (:,:,IKTE:) = 0.
!ZFWR (:,:,IKTE:) = 0.
!ZFWR (:,:,:IKTB) = 0.
!ZFWR (:,:,:IKTB) = 0.
ZFWR
=
0.
ZFWR
(:,:,:)
=
0.
ZFTH2
(:,:,
IKTE
:)
=
0.
ZFTH2
(:,:,
IKTE
:)
=
0.
ZFTH2
(:,:,:
IKTB
)
=
0.
ZFTH2
(:,:,:
IKTB
)
=
0.
!ZFR2 (:,:,IKTE:) = 0.
!ZFR2 (:,:,IKTE:) = 0.
!ZFR2 (:,:,:IKTB) = 0.
!ZFR2 (:,:,:IKTB) = 0.
ZFR2
=
0.
ZFR2
(:,:,:)
=
0.
!ZFTHR(:,:,IKTE:) = 0.
!ZFTHR(:,:,IKTE:) = 0.
!ZFTHR(:,:,:IKTB) = 0.
!ZFTHR(:,:,:IKTB) = 0.
ZFTHR
=
0.
ZFTHR
(:,:,:)
=
0.
ELSE
ELSE
ZFWTH
=
0.
ZFWTH
(:,:,:)
=
0.
ZFWR
=
0.
ZFWR
(:,:,:)
=
0.
ZFTH2
=
0.
ZFTH2
(:,:,:)
=
0.
ZFR2
=
0.
ZFR2
(:,:,:)
=
0.
ZFTHR
=
0.
ZFTHR
(:,:,:)
=
0.
ENDIF
ENDIF
!
!
!----------------------------------------------------------------------------
!----------------------------------------------------------------------------
...
@@ -1035,10 +1075,17 @@ END IF
...
@@ -1035,10 +1075,17 @@ END IF
!
!
! 6.1 Contribution of mass-flux in the TKE buoyancy production if
! 6.1 Contribution of mass-flux in the TKE buoyancy production if
! cloud computation is not statistical
! cloud computation is not statistical
ZWORK1
=
MZF
(
PFLXZTHVMF
,
D
%
NKA
,
KKU
,
KKL
)
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
PTP
(:,:,:)
=
PTP
(:,:,:)
+
CST
%
XG
/
PTHVREF
(:,:,:)
*
ZWORK1
(:,:,:)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
PTP
=
PTP
+
CST
%
XG
/
PTHVREF
*
MZF
(
PFLXZTHVMF
,
D
%
NKA
,
KKU
,
KKL
)
IF
(
PRESENT
(
PTPMF
))
THEN
IF
(
PRESENT
(
PTPMF
))
PTPMF
=
CST
%
XG
/
PTHVREF
*
MZF
(
PFLXZTHVMF
,
D
%
NKA
,
KKU
,
KKL
)
ZWORK1
=
MZF
(
PFLXZTHVMF
,
D
%
NKA
,
KKU
,
KKL
)
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
PTPMF
(:,:,:)
=
CST
%
XG
/
PTHVREF
(:,:,:)
*
ZWORK1
(:,:,:)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
END
IF
! 6.2 TKE evolution equation
! 6.2 TKE evolution equation
IF
(
.NOT.
OHARAT
)
THEN
IF
(
.NOT.
OHARAT
)
THEN
...
@@ -1055,9 +1102,9 @@ IF (BUCONF%LBUDGET_TH) THEN
...
@@ -1055,9 +1102,9 @@ IF (BUCONF%LBUDGET_TH) THEN
END
IF
END
IF
!
!
IF
(
PRESENT
(
PRTKEMS
))
THEN
IF
(
PRESENT
(
PRTKEMS
))
THEN
ZRTKEMS
=
PRTKEMS
ZRTKEMS
(:,:,:)
=
PRTKEMS
(:,:,:)
ELSE
ELSE
ZRTKEMS
=
0.
ZRTKEMS
(:,:,:)
=
0.
END
IF
END
IF
!
!
CALL
TKE_EPS_SOURCES
(
D
,
CST
,
CSTURB
,
BUCONF
,
HPROGRAM
,&
CALL
TKE_EPS_SOURCES
(
D
,
CST
,
CSTURB
,
BUCONF
,
HPROGRAM
,&
...
@@ -1136,11 +1183,15 @@ END IF
...
@@ -1136,11 +1183,15 @@ END IF
!
!
!* stores value of conservative variables & wind before turbulence tendency (AROME only)
!* stores value of conservative variables & wind before turbulence tendency (AROME only)
IF
(
PRESENT
(
PDRUS_TURB
))
THEN
IF
(
PRESENT
(
PDRUS_TURB
))
THEN
PDRUS_TURB
=
PRUS
-
PDRUS_TURB
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
PDRVS_TURB
=
PRVS
-
PDRVS_TURB
PDRUS_TURB
(:,:,:)
=
PRUS
(:,:,:)
-
PDRUS_TURB
(:,:,:)
PDRTHLS_TURB
=
PRTHLS
-
PDRTHLS_TURB
PDRVS_TURB
(:,:,:)
=
PRVS
(:,:,:)
-
PDRVS_TURB
(:,:,:)
PDRRTS_TURB
=
PRRS
(:,:,:,
1
)
-
PDRRTS_TURB
PDRTHLS_TURB
(:,:,:)
=
PRTHLS
(:,:,:)
-
PDRTHLS_TURB
(:,:,:)
PDRSVS_TURB
=
PRSVS
-
PDRSVS_TURB
PDRRTS_TURB
(:,:,:)
=
PRRS
(:,:,:,
1
)
-
PDRRTS_TURB
(:,:,:)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT,JSV=1:KSV)
PDRSVS_TURB
(:,:,:,:)
=
PRSVS
(:,:,:,:)
-
PDRSVS_TURB
(:,:,:,:)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT,JSV=1:KSV)
END
IF
END
IF
!----------------------------------------------------------------------------
!----------------------------------------------------------------------------
!
!
...
@@ -1149,18 +1200,22 @@ END IF
...
@@ -1149,18 +1200,22 @@ END IF
!
!
IF
(
KRRL
>=
1
)
THEN
IF
(
KRRL
>=
1
)
THEN
IF
(
KRRI
>=
1
)
THEN
IF
(
KRRI
>=
1
)
THEN
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
PRT
(:,:,:,
1
)
=
PRT
(:,:,:,
1
)
-
PRT
(:,:,:,
2
)
-
PRT
(:,:,:,
4
)
PRT
(:,:,:,
1
)
=
PRT
(:,:,:,
1
)
-
PRT
(:,:,:,
2
)
-
PRT
(:,:,:,
4
)
PRRS
(:,:,:,
1
)
=
PRRS
(:,:,:,
1
)
-
PRRS
(:,:,:,
2
)
-
PRRS
(:,:,:,
4
)
PRRS
(:,:,:,
1
)
=
PRRS
(:,:,:,
1
)
-
PRRS
(:,:,:,
2
)
-
PRRS
(:,:,:,
4
)
PTHLT
(:,:,:)
=
PTHLT
(:,:,:)
+
ZLVOCPEXNM
(:,:,:)
*
PRT
(:,:,:,
2
)
&
PTHLT
(:,:,:)
=
PTHLT
(:,:,:)
+
ZLVOCPEXNM
(:,:,:)
*
PRT
(:,:,:,
2
)
&
+
ZLSOCPEXNM
(:,:,:)
*
PRT
(:,:,:,
4
)
+
ZLSOCPEXNM
(:,:,:)
*
PRT
(:,:,:,
4
)
PRTHLS
(:,:,:)
=
PRTHLS
(:,:,:)
+
ZLVOCPEXNM
(:,:,:)
*
PRRS
(:,:,:,
2
)
&
PRTHLS
(:,:,:)
=
PRTHLS
(:,:,:)
+
ZLVOCPEXNM
(:,:,:)
*
PRRS
(:,:,:,
2
)
&
+
ZLSOCPEXNM
(:,:,:)
*
PRRS
(:,:,:,
4
)
+
ZLSOCPEXNM
(:,:,:)
*
PRRS
(:,:,:,
4
)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
!
!
ELSE
ELSE
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
PRT
(:,:,:,
1
)
=
PRT
(:,:,:,
1
)
-
PRT
(:,:,:,
2
)
PRT
(:,:,:,
1
)
=
PRT
(:,:,:,
1
)
-
PRT
(:,:,:,
2
)
PRRS
(:,:,:,
1
)
=
PRRS
(:,:,:,
1
)
-
PRRS
(:,:,:,
2
)
PRRS
(:,:,:,
1
)
=
PRRS
(:,:,:,
1
)
-
PRRS
(:,:,:,
2
)
PTHLT
(:,:,:)
=
PTHLT
(:,:,:)
+
ZLOCPEXNM
(:,:,:)
*
PRT
(:,:,:,
2
)
PTHLT
(:,:,:)
=
PTHLT
(:,:,:)
+
ZLOCPEXNM
(:,:,:)
*
PRT
(:,:,:,
2
)
PRTHLS
(:,:,:)
=
PRTHLS
(:,:,:)
+
ZLOCPEXNM
(:,:,:)
*
PRRS
(:,:,:,
2
)
PRTHLS
(:,:,:)
=
PRTHLS
(:,:,:)
+
ZLOCPEXNM
(:,:,:)
*
PRRS
(:,:,:,
2
)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
END
IF
END
IF
END
IF
END
IF
...
@@ -1201,8 +1256,8 @@ IF (OLES_CALL) THEN
...
@@ -1201,8 +1256,8 @@ IF (OLES_CALL) THEN
!
!
IF
(
HTURBDIM
==
"1DIM"
)
THEN
IF
(
HTURBDIM
==
"1DIM"
)
THEN
CALL
LES_MEAN_SUBGRID
(
2.
/
3.
*
PTKET
,
X_LES_SUBGRID_U2
)
CALL
LES_MEAN_SUBGRID
(
2.
/
3.
*
PTKET
,
X_LES_SUBGRID_U2
)
X_LES_SUBGRID_V2
=
X_LES_SUBGRID_U2
X_LES_SUBGRID_V2
(:,:,:)
=
X_LES_SUBGRID_U2
(:,:,:)
X_LES_SUBGRID_W2
=
X_LES_SUBGRID_U2
X_LES_SUBGRID_W2
(:,:,:)
=
X_LES_SUBGRID_U2
(:,:,:)
CALL
LES_MEAN_SUBGRID
(
2.
/
3.
*
PTKET
*
MZF
(
GZ_M_W
(
D
%
NKA
,
KKU
,
KKL
,
PTHLT
,
PDZZ
),&
CALL
LES_MEAN_SUBGRID
(
2.
/
3.
*
PTKET
*
MZF
(
GZ_M_W
(
D
%
NKA
,
KKU
,
KKL
,
PTHLT
,
PDZZ
),&
D
%
NKA
,
KKU
,
KKL
),
X_LES_RES_ddz_Thl_SBG_W2
)
D
%
NKA
,
KKU
,
KKL
),
X_LES_RES_ddz_Thl_SBG_W2
)
IF
(
KRR
>=
1
)
&
IF
(
KRR
>=
1
)
&
...
@@ -1224,14 +1279,14 @@ IF (OLES_CALL) THEN
...
@@ -1224,14 +1279,14 @@ IF (OLES_CALL) THEN
!
!
!* presso-correlations for subgrid Tke are equal to zero.
!* presso-correlations for subgrid Tke are equal to zero.
!
!
ZLEPS
=
0.
!ZLEPS is used as a work array (not used anymore)
ZLEPS
(:,:,:)
=
0.
!ZLEPS is used as a work array (not used anymore)
CALL
LES_MEAN_SUBGRID
(
ZLEPS
,
X_LES_SUBGRID_WP
)
CALL
LES_MEAN_SUBGRID
(
ZLEPS
,
X_LES_SUBGRID_WP
)
!
!
CALL
SECOND_MNH
(
ZTIME2
)
CALL
SECOND_MNH
(
ZTIME2
)
XTIME_LES
=
XTIME_LES
+
ZTIME2
-
ZTIME1
XTIME_LES
=
XTIME_LES
+
ZTIME2
-
ZTIME1
END
IF
END
IF
!
!
IF
(
PRESENT
(
PLEM
))
PLEM
=
ZLM
IF
(
PRESENT
(
PLEM
))
PLEM
(:,:,:)
=
ZLM
(:,:,:)
!----------------------------------------------------------------------------
!----------------------------------------------------------------------------
!
!
IF
(
LHOOK
)
CALL
DR_HOOK
(
'TURB'
,
1
,
ZHOOK_HANDLE
)
IF
(
LHOOK
)
CALL
DR_HOOK
(
'TURB'
,
1
,
ZHOOK_HANDLE
)
...
@@ -1353,6 +1408,7 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PAMOIST,PATHETA
...
@@ -1353,6 +1408,7 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PAMOIST,PATHETA
REAL
::
ZEPS
! XMV / XMD
REAL
::
ZEPS
! XMV / XMD
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
)
::
ZRVSAT
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
)
::
ZRVSAT
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
)
::
ZDRVSATDT
REAL
,
DIMENSION
(
D
%
NIT
,
D
%
NJT
,
D
%
NKT
)
::
ZDRVSATDT
INTEGER
::
JI
,
JJ
,
JK
!
!
!-------------------------------------------------------------------------------
!-------------------------------------------------------------------------------
!
!
...
@@ -1362,6 +1418,7 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZDRVSATDT
...
@@ -1362,6 +1418,7 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZDRVSATDT
!
!
!* 1.1 Lv/Cph at t
!* 1.1 Lv/Cph at t
!
!
!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
PLOCPEXN
(:,:,:)
=
(
PLTT
+
(
CST
%
XCPV
-
PC
)
*
(
PT
(:,:,:)
-
CST
%
XTT
)
)
/
PCP
(:,:,:)
PLOCPEXN
(:,:,:)
=
(
PLTT
+
(
CST
%
XCPV
-
PC
)
*
(
PT
(:,:,:)
-
CST
%
XTT
)
)
/
PCP
(:,:,:)
!
!
!* 1.2 Saturation vapor pressure at t
!* 1.2 Saturation vapor pressure at t
...
@@ -1398,6 +1455,7 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZDRVSATDT
...
@@ -1398,6 +1455,7 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZDRVSATDT
!* 1.7 Lv/Cph/Exner at t-1
!* 1.7 Lv/Cph/Exner at t-1
!
!
PLOCPEXN
(:,:,:)
=
PLOCPEXN
(:,:,:)
/
PEXN
(:,:,:)
PLOCPEXN
(:,:,:)
=
PLOCPEXN
(:,:,:)
/
PEXN
(:,:,:)
!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
!
!
IF
(
LHOOK
)
CALL
DR_HOOK
(
'TURB:COMPUTE_FUNCTION_THERMO'
,
1
,
ZHOOK_HANDLE
)
IF
(
LHOOK
)
CALL
DR_HOOK
(
'TURB:COMPUTE_FUNCTION_THERMO'
,
1
,
ZHOOK_HANDLE
)
END
SUBROUTINE
COMPUTE_FUNCTION_THERMO
END
SUBROUTINE
COMPUTE_FUNCTION_THERMO
...
...
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