Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
!-----------------------------------------------------------------
!--------------- special set of characters for RCS information
!-----------------------------------------------------------------
! $Source$ $Revision$
! MASDEV4_7 turb 2006/05/18 13:07:25
!-----------------------------------------------------------------
!################
MODULE MODE_COEFJ
IMPLICIT NONE
CONTAINS
! #######################################################
FUNCTION COEFJ(PTHL,PEXNREF,PFRAC_ICE) RESULT(PCOEFJ)
! #######################################################
!
! PURPOSE
!! -------
! COEFJ computes the coefficient J of the documentation.
!
!!** METHOD
!! ------ rvs(Tl) Lv(Tl)
!! The value of this coefficient is J = --------------, for rc only
!! Rv Tl THETAl
!!
!! rvsw(Tl) Lv(Tl) rvsi(Tl) Ls(Tl)
!! or --------------- (1-Pfrac_ri) + --------------- Pfrac_ri, for rc+ri.
!! Rv Tl THETAl Rv Tl THETAl
!!
!! EXTERNAL
!! --------
!! None.
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!! Module MODD_CST : contains physical constants.
!!
!! REFERENCE
!! ---------
!! Book 1 of documentation of Meso-NH
!! Book 2 of documentation of Meso-NH
!!
!!
!! AUTHOR
!! ------
!! Jean-Marie Carriere * Meteo-France *
!!
!! MODIFICATIONS
!! -------------
!! Original 20/03/95
!! J.-P. Pinty 20/02/03 add non-precipitating ice
!!
!! ----------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
USE MODD_CST
!
USE MODI_BITREP
!
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
IMPLICIT NONE
!
!* 0.1 declarations of arguments and result
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHL ! Temperature variable
REAL, DIMENSION(:,:,:), INTENT(IN) :: PEXNREF ! Exner function of the
! reference state
REAL, DIMENSION(:,:,:), INTENT(IN), OPTIONAL :: PFRAC_ICE
! Fraction of ri in the
! non-precipating
! "rc+ri" condensate
!
REAL,DIMENSION(SIZE(PTHL,1),SIZE(PTHL,2),SIZE(PTHL,3)):: PCOEFJ ! result
!
!* 0.2 declarations of local variables
!
REAL,DIMENSION(SIZE(PTHL,1),SIZE(PTHL,2),SIZE(PTHL,3)) :: &
ZTL, ZL, ZES, ZRVS, ZP
! ZTL = Tl, ZL = Lv(Tl) or Ls(Tl), ZES = esw(Tl) or esi(Tl)
! ZRVS = rvsw(Tl) or rvsi(Tl), ZP = p
!
REAL :: ZEPS ! = Mv/Md
!---------------------------------------------------------------------------
!
!* 1. COMPUTATION OF Tl
! -----------------
!
ZTL(:,:,:) = PTHL(:,:,:) * PEXNREF(:,:,:)
!
!* 2. COMPUTATION OF Lv(Tl)
! ---------------------
!
ZL(:,:,:) = XLVTT + ( XCPV - XCL ) * ( ZTL(:,:,:) -XTT )
!
!* 3. COMPUTATION OF rvs(Tl)
! ----------------------
!
ZEPS = XMV/XMD
ZP(:,:,:) = (PEXNREF(:,:,:)**(XCPD/XRD))*XP00
ZES(:,:,:) = EXP( XALPW - XBETAW/ZTL(:,:,:) - XGAMW*ALOG(ZTL(:,:,:) ) )
ZRVS(:,:,:) = ZES(:,:,:) * ZEPS / ( ZP(:,:,:) - ZES(:,:,:) )
!
! 4. RESULT FOR rc only
! ------------------
!
PCOEFJ(:,:,:) = ZRVS(:,:,:)*ZL(:,:,:)/ &
( XRV*ZTL(:,:,:)*PTHL(:,:,:) )
!
! Add case when rc+ri
!
IF(PRESENT(PFRAC_ICE)) THEN
!
!* 5. COMPUTATION OF Ls(Tl)
! ---------------------
!
ZL(:,:,:) = XLSTT + ( XCPV - XCI ) * ( ZTL(:,:,:) -XTT )
!
!* 6. COMPUTATION OF rvs(Tl)
! ----------------------
!
ZES(:,:,:) = EXP( XALPI - XBETAI/ZTL(:,:,:) - XGAMI*ALOG(ZTL(:,:,:) ) )
ZRVS(:,:,:) = ZES(:,:,:) * ZEPS / ( ZP(:,:,:) - ZES(:,:,:) )
!
! 7. RESULT FOR rc and ri
! --------------------
!
PCOEFJ(:,:,:) = (1.0 - PFRAC_ICE(:,:,:))*PCOEFJ(:,:,:) &
+ PFRAC_ICE(:,:,:) *ZRVS(:,:,:)*ZL(:,:,:)/ &
( XRV*ZTL(:,:,:)*PTHL(:,:,:) )
END IF
!
!---------------------------------------------------------------------------
!
END FUNCTION COEFJ
END MODULE MODE_COEFJ