source: dynamico_lmdz/aquaplanet/LMDZ5/libf/phymar/fcttrm.h @ 4031

Last change on this file since 4031 was 3990, checked in by millour, 8 years ago

An updated LMDZ5 (based on LMDZ rev 2786) to play with.
EM

File size: 3.8 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_B :: RLV,RLS,RLF,ESW,ESS,ES
38REAL_B :: 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(_ZERO_,SIGN(_ONE_,RTT-PTARG)))&
47         &-(RBETW+RBETD*MAX(_ZERO_,SIGN(_ONE_,RTT-PTARG)))/PTARG &
48         &-(RGAMW+RGAMD*MAX(_ZERO_,SIGN(_ONE_,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_B :: FOEW
59REAL_B :: 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_B :: 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_B :: FOQS
78REAL_B :: PESPFAR
79FOQS ( PESPFAR ) = PESPFAR / ( _ONE_+RETV*MAX(_ZERO_,&
80    &(_ONE_-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_B :: FODQS
87REAL_B :: PQSFARG,PDLEFAR
88FODQS ( PQSFARG,PESPFAR,PDLEFAR ) = ( PQSFARG &
89   &* (_ONE_-PQSFARG)*PDLEFAR ) / (_ONE_-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_B :: 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.