source: LMDZ6/branches/IPSLCM6.0.13/libf/phylmd/rrtm/fcttrm.h @ 3040

Last change on this file since 3040 was 1990, checked in by Laurent Fairhead, 11 years ago

Corrections à la version r1989 pour permettre la compilation avec RRTM
Inclusion de la licence CeCILL_V2 pour RRTM


Changes to revision r1989 to enable RRTM code compilation
RRTM part put under CeCILL_V2 licence

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
File size: 3.9 KB
Line 
1!*
2!     ------------------------------------------------------------------
3#ifdef DOC
4
5!     CE COMDECK CONTIENT DEUX GROUPES DE FONCTIONS THERMODYNAMIQUES :
6
7!        * LE PREMIER (RLV,RLS,RLF,ESW,ESS,ES) CORRESPOND A DES
8!     FONCTIONS ABSOLUES (OU INTRINSEQUES) QUI DOIVENT ETRE UTILISEES
9!     POUR TOUT CE QUI CONCERNE LE MONDE REEL (DONNEES OBSERVEES ET
10!     SORTIES DESTINEES A ETRE COMPAREES A DE TELLES DONNEES).
11
12!        * LE SECOND (FOEW,FODLEW,FOQS,FODQS,FOLH) CORRESPOND AU MONDE
13!     DE LA PHYSIQUE DU MODELE (ET PAR CONSEQUENT DE TOUTE LES PARTIES
14!     DU CODE QUI DOIVENT ETRE COMPATIBLES AVEC CETTE PHYSIQUE :
15!     ANALYSE/DYNAMIQUE/POST-PROCESSING ... ). LES DIFFERENCES ENTRE LES
16!     DEUX GROUPES VIENNENT, DANS LA CONFIGURATION ACTUELLE DE LA
17!     PHYSIQUE, DES POINTS SUIVANTS :
18!         - CALCULS RELATIFS A LA VARIABLE Q DU MODELE
19!         - CALCULS DE DERIVATION PAR RAPPORT A LA TEMPERATURE
20!         - ABSENCE D'ETATS HORS-EQUILIBRE = UNE SEULE CHALEUR LATENTE
21!           DE FUSION
22!         - POSSIBILITE DE TRAVAILLER SANS LA PHASE GLACE = INDICE DE
23!           TEST BINAIRE.
24
25!     ------------------------------------------------------------------
26#endif
27!     ABSOLUTE THERMODYNAMICAL FUNCTIONS .
28
29
30!     RLV : LATENT HEAT OF VAPOURISATION
31!     RLS : LATENT HEAT OF SUBLIMATION
32!     RLF : LATENT HEAT OF FUSION
33!     ESW : SATURATION IN PRESENCE OF WATER
34!     ESS : SATURATION IN PRESENCE OF ICE
35!     ES  : SATURATION (IF T>RTT THEN WATER ; IF T<RTT THEN ICE)
36!        INPUT (FOR ALL SIX FUNCTIONS) : PTARG = TEMPERATURE .
37REAL(KIND=JPRB) :: RLV,RLS,RLF,ESW,ESS,ES
38REAL(KIND=JPRB) :: PTARG
39
40RLV(PTARG)=RLVTT+(RCPV-RCW)*(PTARG-RTT)
41RLS(PTARG)=RLSTT+(RCPV-RCS)*(PTARG-RTT)
42RLF(PTARG)=RLS(PTARG)-RLV(PTARG)
43ESW(PTARG)=EXP(RALPW-RBETW/PTARG-RGAMW*LOG(PTARG))
44ESS(PTARG)=EXP(RALPS-RBETS/PTARG-RGAMS*LOG(PTARG))
45ES (PTARG)=EXP(&
46          &(RALPW+RALPD*MAX(0.0_JPRB,SIGN(1.0_JPRB,RTT-PTARG)))&
47         &-(RBETW+RBETD*MAX(0.0_JPRB,SIGN(1.0_JPRB,RTT-PTARG)))/PTARG &
48         &-(RGAMW+RGAMD*MAX(0.0_JPRB,SIGN(1.0_JPRB,RTT-PTARG)))*LOG(PTARG))
49
50!     ------------------------------------------------------------------
51!     FONCTIONS THERMODYNAMIQUES : FONCTIONS DEFINIES DE LA PHYSIQUE .
52
53
54!     FONCTION DE LA TENSION DE VAPEUR SATURANTE .
55!        INPUT : PTARG = TEMPERATURE
56!                PDELARG = 0 SI EAU (QUELQUE SOIT PTARG)
57!                          1 SI GLACE (QUELQUE SOIT PTARG).
58REAL(KIND=JPRB) :: FOEW
59REAL(KIND=JPRB) :: PDELARG
60FOEW ( PTARG,PDELARG ) = EXP (&
61    &( RALPW+PDELARG*RALPD )&
62  &- ( RBETW+PDELARG*RBETD ) / PTARG &
63  &- ( RGAMW+PDELARG*RGAMD ) * LOG(PTARG) )
64
65!     FONCTION DERIVEE DU LOGARITHME NEPERIEN DE LA PRECEDENTE (FOEW) .
66!        INPUT : PTARG = TEMPERATURE
67!                PDELARG = 0 SI EAU (QUELQUE SOIT PTARG)
68!                          1 SI GLACE (QUELQUE SOIT PTARG).
69REAL(KIND=JPRB) :: FODLEW
70FODLEW ( PTARG,PDELARG ) = (&
71      &( RBETW+PDELARG*RBETD )&
72    &- ( RGAMW+PDELARG*RGAMD ) * PTARG )&
73    &/ ( PTARG*PTARG )
74
75!     FONCTION HUMIDITE SPECIFIQUE SATURANTE .
76!        INPUT : PESPFAR = RAPPORT FOEW SUR PRESSION.
77REAL(KIND=JPRB) :: FOQS
78REAL(KIND=JPRB) :: PESPFAR
79FOQS ( PESPFAR ) = PESPFAR / ( 1.0_JPRB+RETV*MAX(0.0_JPRB,&
80    &(1.0_JPRB-PESPFAR)) )
81
82!     FONCTION DERIVEE EN TEMPERATURE DE LA PRECEDENTE (FOQS) .
83!        INPUT : PQSFARG = FOQS
84!                PESPFAR = RAPPORT FOEW SUR PRESSION
85!                PDLEFAR = FODLEW.
86REAL(KIND=JPRB) :: FODQS
87REAL(KIND=JPRB) :: PQSFARG,PDLEFAR
88FODQS ( PQSFARG,PESPFAR,PDLEFAR ) = ( PQSFARG &
89   &* (1.0_JPRB-PQSFARG)*PDLEFAR ) / (1.0_JPRB-PESPFAR)
90
91!     FONCTION CHALEUR LATENTE .
92!        INPUT : PTARG = TEMPERATURE
93!                PDELARG = 0 SI EAU (QUELQUE SOIT PTARG)
94!                          1 SI GLACE (QUELQUE SOIT PTARG).
95REAL(KIND=JPRB) :: FOLH
96FOLH ( PTARG,PDELARG ) =  RV * (&
97    &( RBETW+PDELARG*RBETD )&
98  &- ( RGAMW+PDELARG*RGAMD ) * PTARG )
99!     ------------------------------------------------------------------
100
Note: See TracBrowser for help on using the repository browser.