[1989] | 1 | SUBROUTINE SUPHEC(KULOUT) |
---|
| 2 | |
---|
| 3 | !**** *SUPHEC - INITIALISES PHYSICAL CONSTANTS OF UNCERTAIN VALUE. |
---|
| 4 | ! WITHIN THE E.C.M.W.F. PHYSICS PACKAGE |
---|
| 5 | |
---|
| 6 | ! PURPOSE. |
---|
| 7 | ! -------- |
---|
| 8 | |
---|
| 9 | ! THIS ROUTINE SETS THE VALUES FOR THE PHYSICAL CONSTANTS USED |
---|
| 10 | ! IN THE PARAMETERIZATION ROUTINES WHENEVER THESE VALUES ARE NOT |
---|
| 11 | ! KNOWN WELL ENOUGH TO FORBID ANY TUNING OR WHENEVER THEY ARE |
---|
| 12 | ! SUBJECT TO AN ARBITRARY CHOICE OF THE MODELLER. THESE CONSTANTS |
---|
| 13 | ! ARE DISTRIBUTED IN COMMON DECKS *YOEXXXX* WHERE XXXX CORRESPONDS |
---|
| 14 | ! TO THE INDIVIDUAL PHYSICAL PARAMETRIZATION |
---|
| 15 | |
---|
| 16 | !** INTERFACE. |
---|
| 17 | ! ---------- |
---|
| 18 | |
---|
| 19 | ! *SUPHEC* IS CALLED FROM *SUPHY* |
---|
| 20 | |
---|
| 21 | ! METHOD. |
---|
| 22 | ! ------- |
---|
| 23 | |
---|
| 24 | ! NONE. |
---|
| 25 | |
---|
| 26 | ! EXTERNALS. |
---|
| 27 | ! ---------- |
---|
| 28 | |
---|
| 29 | ! *SUECRAD*, *SUCUMF*, *SUCUMF2*,*SUVDFS*, *SUSURF* |
---|
| 30 | ! *SUECRAD15*, *SUCLOP15* |
---|
| 31 | ! *SUGWD*, *SUCLD*, *SUCOND*, *SUPHLI*, *SUMETHOX* |
---|
| 32 | |
---|
| 33 | ! REFERENCE. |
---|
| 34 | ! ---------- |
---|
| 35 | |
---|
| 36 | ! SEE PHYSICAL ROUTINES FOR AN EXACT DEFINITION OF THE |
---|
| 37 | ! CONSTANTS. |
---|
| 38 | |
---|
| 39 | ! AUTHOR. |
---|
| 40 | ! ------- |
---|
| 41 | ! J.-J. MORCRETTE E.C.M.W.F. 91/06/15 ADAPTATION TO I.F.S. |
---|
| 42 | |
---|
| 43 | ! MODIFICATIONS |
---|
| 44 | ! ------------- |
---|
| 45 | ! MAY 1997 : M. Deque - Frozen FMR |
---|
| 46 | ! APRIL 1998: C. JAKOB - ADD METHANE OXIDATION |
---|
| 47 | ! M.Hamrud 01-Oct-2003 CY28 Cleaning |
---|
| 48 | ! P.Viterbo 24-May-2004 surf library |
---|
| 49 | ! P.Viterbo 03-Dec-2004 Include user-defined RTHRFRTI |
---|
| 50 | ! M.Ko"hler 03-Dec-2004 cp,moist=cp,dry |
---|
| 51 | ! P.Viterbo 10-Jun-2005 Externalise surf |
---|
| 52 | ! R. El Khatib & J-F Estrade 20-Jan-2005 Default PRSUN for FMR15 |
---|
| 53 | ! D.Salmond 22-Nov-2005 Mods for coarser/finer physics |
---|
| 54 | ! P. Lopez 21-Aug-2006 Added call to SUCUMF2 |
---|
| 55 | ! (new linearized convec) |
---|
| 56 | ! JJMorcrette 20060525 MODIS albedo |
---|
| 57 | ! ------------------------------------------------------------------ |
---|
| 58 | |
---|
| 59 | USE PARKIND1 ,ONLY : JPIM ,JPRB |
---|
| 60 | USE YOMHOOK ,ONLY : LHOOK, DR_HOOK |
---|
| 61 | |
---|
| 62 | USE YOMDPHY , ONLY : NTILES |
---|
| 63 | USE SURFACE_FIELDS, ONLY : YSP_SBD |
---|
| 64 | USE YOELW , ONLY : NSIL ,TSTAND ,XP |
---|
| 65 | USE YOESW , ONLY : RSUN |
---|
| 66 | USE YOMSW15 , ONLY : RSUN15 |
---|
| 67 | USE YOMDIM , ONLY : NFLEVG ,NSMAX, NGPBLKS, NPROMA |
---|
| 68 | USE YOMGEM , ONLY : VBH ,VAH ,VP00, VAF , VBF |
---|
| 69 | USE YOMCST , ONLY : RD ,RV ,RCPD ,& |
---|
| 70 | & RLVTT ,RLSTT ,RLMLT ,RTT ,RATM |
---|
[2043] | 71 | !USE YOETHF , ONLY : R2ES ,R3LES ,R3IES ,R4LES ,& |
---|
| 72 | ! & R4IES ,R5LES ,R5IES ,RVTMP2 ,RHOH2O ,& |
---|
| 73 | ! & R5ALVCP ,R5ALSCP ,RALVDCP ,RALSDCP ,RALFDCP ,& |
---|
| 74 | ! & RTWAT ,RTBER ,RTBERCU ,RTICE ,RTICECU ,& |
---|
| 75 | ! & RTWAT_RTICE_R ,RTWAT_RTICECU_R ,& |
---|
| 76 | ! & RKOOP1 ,RKOOP2 |
---|
[1989] | 77 | USE YOMPHY , ONLY : LRAYFM15 |
---|
| 78 | !USE YOERAD , ONLY : NSW ,NTSW ,& |
---|
| 79 | ! NSW mis dans .def MPL 20140211 |
---|
| 80 | USE YOERAD , ONLY : NTSW ,& |
---|
| 81 | & LCCNL ,LCCNO ,& |
---|
| 82 | & RCCNSEA ,RCCNLND |
---|
| 83 | USE YOE_TILE_PROP, ONLY : RUSTRTI, RVSTRTI, RAHFSTI, REVAPTI, RTSKTI |
---|
| 84 | USE YOEPHY , ONLY : RTHRFRTI ,LEOCWA ,LEOCCO ,LEOCSA, LE4ALB |
---|
| 85 | USE YOEVDF , ONLY : NVTYPES |
---|
| 86 | USE YOMCOAPHY , ONLY : NPHYINT |
---|
| 87 | USE YOM_PHYS_GRID ,ONLY : PHYS_GRID |
---|
| 88 | USE YOMCT0 , ONLY : LSCMEC ,LROUGH ,REXTZ0M ,REXTZ0H |
---|
[2315] | 89 | USE vertical_layers_mod, ONLY: ap,bp |
---|
[5294] | 90 | ! Temporary fix waiting for cleaner interface (or not) |
---|
| 91 | USE clesphys_mod_h, ONLY: NSW |
---|
[1989] | 92 | |
---|
| 93 | IMPLICIT NONE |
---|
[2043] | 94 | include "YOETHF.h" |
---|
[5294] | 95 | !!include "clesphys.h" |
---|
[1989] | 96 | |
---|
| 97 | INTEGER(KIND=JPIM),INTENT(IN) :: KULOUT |
---|
| 98 | INTERFACE |
---|
| 99 | #include "susurf.h" |
---|
| 100 | #include "surf_inq.h" |
---|
| 101 | END INTERFACE |
---|
| 102 | |
---|
| 103 | #include "gppre.intfb.h" |
---|
| 104 | #include "sucld.intfb.h" |
---|
| 105 | #include "sucldp.intfb.h" |
---|
| 106 | #include "suclop.intfb.h" |
---|
| 107 | #include "suclop15.intfb.h" |
---|
| 108 | #include "sucond.intfb.h" |
---|
| 109 | #include "sucumf.intfb.h" |
---|
| 110 | #include "sucumf2.intfb.h" |
---|
| 111 | #include "suecrad.intfb.h" |
---|
| 112 | #include "suecrad15.intfb.h" |
---|
| 113 | #include "sugwd.intfb.h" |
---|
| 114 | #include "sumethox.intfb.h" |
---|
| 115 | #include "suphli.intfb.h" |
---|
| 116 | #include "suvdf.intfb.h" |
---|
| 117 | #include "suvdfs.intfb.h" |
---|
| 118 | #include "suwcou.intfb.h" |
---|
| 119 | |
---|
| 120 | ! ------------------------------------------------------------------ |
---|
| 121 | |
---|
| 122 | REAL(KIND=JPRB) :: ZPRES(0:NFLEVG),ZPRESF(NFLEVG), ZETA(NFLEVG),ZETAH(0:NFLEVG) |
---|
| 123 | |
---|
| 124 | INTEGER(KIND=JPIM) :: JK,ISMAX,JLEV |
---|
| 125 | REAL(KIND=JPRB) :: ZHOOK_HANDLE |
---|
| 126 | |
---|
| 127 | ! ------------------------------------------------------------------ |
---|
| 128 | |
---|
| 129 | !* 0.2 DEFINING DERIVED CONSTANTS FROM UNIVERSAL CONSTANTS |
---|
| 130 | ! --------------------------------------------------- |
---|
| 131 | |
---|
| 132 | IF (LHOOK) CALL DR_HOOK('SUPHEC',0,ZHOOK_HANDLE) |
---|
[2799] | 133 | ! |
---|
| 134 | IF (OK_BAD_ECMWF_THERMO) THEN |
---|
| 135 | ! |
---|
| 136 | ! Modify constants defined in suphel.F90 and set RVTMP2 to 0. |
---|
| 137 | ! CALL GSTATS(1811,0) ! MPL 28.11.08 |
---|
| 138 | ! RVTMP2=RCPV/RCPD-1.0_JPRB !use cp,moist |
---|
| 139 | RVTMP2=0.0_JPRB !neglect cp,moist |
---|
| 140 | RHOH2O=RATM/100._JPRB |
---|
| 141 | R2ES=611.21_JPRB*RD/RV |
---|
| 142 | R3LES=17.502_JPRB |
---|
| 143 | R3IES=22.587_JPRB |
---|
| 144 | R4LES=32.19_JPRB |
---|
| 145 | R4IES=-0.7_JPRB |
---|
| 146 | R5LES=R3LES*(RTT-R4LES) |
---|
| 147 | R5IES=R3IES*(RTT-R4IES) |
---|
| 148 | R5ALVCP=R5LES*RLVTT/RCPD |
---|
| 149 | R5ALSCP=R5IES*RLSTT/RCPD |
---|
| 150 | RALVDCP=RLVTT/RCPD |
---|
| 151 | RALSDCP=RLSTT/RCPD |
---|
| 152 | RALFDCP=RLMLT/RCPD |
---|
| 153 | RTWAT=RTT |
---|
| 154 | RTBER=RTT-5._JPRB |
---|
| 155 | RTBERCU=RTT-5.0_JPRB |
---|
| 156 | RTICE=RTT-23._JPRB |
---|
| 157 | RTICECU=RTT-23._JPRB |
---|
| 158 | |
---|
| 159 | RTWAT_RTICE_R=1.0_JPRB/(RTWAT-RTICE) |
---|
| 160 | RTWAT_RTICECU_R=1.0_JPRB/(RTWAT-RTICECU) |
---|
| 161 | IF(NPHYINT == 0) THEN |
---|
| 162 | ISMAX=NSMAX |
---|
| 163 | ELSE |
---|
| 164 | ISMAX=PHYS_GRID%NSMAX |
---|
| 165 | ENDIF |
---|
| 166 | |
---|
| 167 | RKOOP1=2.583_JPRB |
---|
| 168 | RKOOP2=0.48116E-2_JPRB |
---|
| 169 | |
---|
| 170 | ELSE |
---|
| 171 | ! Keep constants defined in suphel.F90 |
---|
| 172 | RTICE=RTT-23._JPRB |
---|
| 173 | ! |
---|
| 174 | ENDIF ! (OK_BAD_ECMWF_THERMO) |
---|
[1989] | 175 | |
---|
| 176 | ! ------------------------------------------------------------------ |
---|
| 177 | !* 0.5 DEFINE STANDARD ATMOSPHERE VERTICAL CONFIGURATION |
---|
| 178 | ! ------------------------------------------------- |
---|
| 179 | !ALLOCATE(VBH (0:MAX(JPMXLE,NFLEVG))) from suallo.F90 |
---|
| 180 | !! |
---|
| 181 | ALLOCATE(VAH (0:NFLEVG)) ! Ajout ALLOCATE MPL 200509 |
---|
| 182 | ALLOCATE(VBH (0:NFLEVG)) |
---|
| 183 | ALLOCATE(VAF (NFLEVG)) |
---|
| 184 | ALLOCATE(VBF (NFLEVG)) |
---|
| 185 | ! Commente par MPL 28.11.08, puis decommente le 19.05.09 |
---|
| 186 | VP00=101325. !!!!! A REVOIR (MPL) |
---|
| 187 | ZPRES(NFLEVG)=VP00 |
---|
[2315] | 188 | ! on recupere ap et bp de dyn3d (vertical_layers_mod) MPL 19.05.09 |
---|
[1989] | 189 | ! Attention, VAH et VBH sont inverses, comme les niveaux |
---|
| 190 | ! plev(l)=PAPRS(klon,nlayer+1-l) de 1 a nlayer (apllmd.F) |
---|
| 191 | DO JLEV = 0, NFLEVG |
---|
| 192 | ! VAH(JLEV)=ap(JLEV+1)ap(JLEV+1) |
---|
| 193 | ! VBH(JLEV)=bp(JLEV+1) |
---|
| 194 | ! print *,'SUPHEC: jlev ap bp',JLEV,ap(JLEV+1),bp(JLEV+1) |
---|
| 195 | VAH(JLEV)=ap(NFLEVG+1-JLEV) |
---|
| 196 | VBH(JLEV)=bp(NFLEVG+1-JLEV) |
---|
| 197 | ENDDO |
---|
| 198 | ! Calcul de VAF et VBF, analogues de VAH et VBH mais aux niveaux pleins |
---|
| 199 | DO JLEV = 1, NFLEVG |
---|
| 200 | VAF(JLEV)=(VAH(JLEV)+VAH(JLEV-1))/2. |
---|
| 201 | VBF(JLEV)=(VBH(JLEV)+VBH(JLEV-1))/2. |
---|
| 202 | ENDDO |
---|
| 203 | |
---|
| 204 | ! Appel a GPPRE commente par MPL 28.11.08, puis decommente le 19.05.09 |
---|
| 205 | CALL GPPRE ( 1 ,1, 1, NFLEVG, VAH, VBH, ZPRES, ZPRESF ) |
---|
| 206 | |
---|
| 207 | DO JK=0,NFLEVG |
---|
| 208 | ZETAH(JK)= ZPRES(JK)/ZPRES(NFLEVG) |
---|
| 209 | ENDDO |
---|
| 210 | DO JK=1,NFLEVG |
---|
| 211 | ZETA(JK)= ZPRESF(JK)/ZPRES(NFLEVG) |
---|
| 212 | ENDDO |
---|
| 213 | |
---|
| 214 | ! ------------------------------------------------------------------ |
---|
| 215 | !* 1. SETTING CONSTANTS FOR DIAGNOSTIC CLOUD SCHEME |
---|
| 216 | ! --------------------------------------------- |
---|
| 217 | |
---|
| 218 | !CALL SUCLD ( NFLEVG , ZETA ) ! MPL 28.11.08 |
---|
| 219 | |
---|
| 220 | ! ------------------------------------------------------------------ |
---|
| 221 | |
---|
| 222 | !* 2. SETTING CONSTANTS FOR LARGE-SCALE CONDENSATION SCHEME |
---|
| 223 | ! ----------------------------------------------------- |
---|
| 224 | |
---|
| 225 | !CALL SUCOND ( KULOUT , NFLEVG , ZETA ) ! MPL 28.11.08 |
---|
| 226 | |
---|
| 227 | ! ------------------------------------------------------------------ |
---|
| 228 | |
---|
| 229 | !* 3. SETTING CONSTANTS FOR CONVECTION SCHEME |
---|
| 230 | ! --------------------------------------- |
---|
| 231 | |
---|
| 232 | !CALL SUCUMF(ISMAX) ! MPL 28.11.08 |
---|
| 233 | |
---|
| 234 | ! ------------------------------------------------------------------ |
---|
| 235 | |
---|
| 236 | !* 3. SETTING CONSTANTS FOR NEW LINEARIZED CONVECTION SCHEME |
---|
| 237 | ! ------------------------------------------------------ |
---|
| 238 | |
---|
| 239 | !CALL SUCUMF2(ISMAX) ! MPL 28.11.08 |
---|
| 240 | |
---|
| 241 | ! ------------------------------------------------------------------ |
---|
| 242 | !* 4. SETTING CONSTANTS FOR GRAVITY WAVE DRAG SCHEME |
---|
| 243 | ! ---------------------------------------------- |
---|
| 244 | |
---|
| 245 | !CALL SUGWD (KULOUT, NFLEVG, VAH, VBH ) ! MPL 28.11.08 |
---|
| 246 | |
---|
| 247 | ! ------------------------------------------------------------------ |
---|
| 248 | |
---|
| 249 | !* 5. SETTING CONSTANTS FOR VERTICAL DIFFUSION |
---|
| 250 | ! ---------------------------------------- |
---|
| 251 | |
---|
| 252 | !CALL SUVDFS ! MPL 28.11.08 |
---|
| 253 | |
---|
| 254 | !CALL SUVDF ! MPL 28.11.08 |
---|
| 255 | |
---|
| 256 | !cccc CALL SUVDFD ( NABLPFR, ABLPLL ) cccccccccccccccccccccccccccccccccc |
---|
| 257 | |
---|
| 258 | ! ------------------------------------------------------------------ |
---|
| 259 | |
---|
| 260 | !* 6. SETTING CONSTANTS FOR RADIATION SCHEME |
---|
| 261 | ! -------------------------------------- |
---|
| 262 | |
---|
| 263 | IF (LRAYFM15) THEN |
---|
| 264 | CALL SUECRAD15 (KULOUT, NFLEVG, ZETAH ) |
---|
| 265 | ELSE |
---|
| 266 | CALL SUECRAD (KULOUT, NFLEVG, ZETAH ) |
---|
| 267 | ENDIF |
---|
| 268 | |
---|
| 269 | ! ------------------------------------------------------------------ |
---|
| 270 | !* 7. SETTING CONSTANTS FOR SURFACE SCHEME |
---|
| 271 | ! ------------------------------------ |
---|
| 272 | |
---|
| 273 | !IF (LRAYFM15) THEN |
---|
| 274 | ! CALL SUSURF(KSW=NSW,KCSS=YSP_SBD%NLEVS,KSIL=NSIL,KTILES=NTILES,KTSW=NTSW,& |
---|
| 275 | ! & LD_LLCCNL=LCCNL,LD_LLCCNO=LCCNO,& |
---|
| 276 | ! & LD_LEOCWA=LEOCWA,LD_LEOCCO=LEOCCO,LD_LEOCSA=LEOCSA,LD_LLE4ALB=LE4ALB,& |
---|
| 277 | ! & LD_LSCMEC=LSCMEC,LD_LROUGH=LROUGH,PEXTZ0M=REXTZ0M,PEXTZ0H=REXTZ0H,& |
---|
| 278 | ! & PTHRFRTI=RTHRFRTI,PTSTAND=TSTAND,PXP=XP,PRCCNSEA=RCCNSEA,PRCCNLND=RCCNLND,& |
---|
| 279 | ! & PRSUN=RSUN15) |
---|
| 280 | !ELSE |
---|
| 281 | ! CALL SUSURF(KSW=NSW,KCSS=YSP_SBD%NLEVS,KSIL=NSIL,KTILES=NTILES,KTSW=NTSW,& |
---|
| 282 | ! & LD_LLCCNL=LCCNL,LD_LLCCNO=LCCNO,& |
---|
| 283 | ! & LD_LEOCWA=LEOCWA,LD_LEOCCO=LEOCCO,LD_LEOCSA=LEOCSA,LD_LLE4ALB=LE4ALB,& |
---|
| 284 | ! & LD_LSCMEC=LSCMEC,LD_LROUGH=LROUGH,PEXTZ0M=REXTZ0M,PEXTZ0H=REXTZ0H,& |
---|
| 285 | ! & PTHRFRTI=RTHRFRTI,PTSTAND=TSTAND,PXP=XP,PRCCNSEA=RCCNSEA,PRCCNLND=RCCNLND,& |
---|
| 286 | ! & PRSUN=RSUN) |
---|
| 287 | !ENDIF |
---|
| 288 | |
---|
| 289 | |
---|
| 290 | !CALL SURF_INQ(KNVTYPES=NVTYPES) |
---|
| 291 | |
---|
| 292 | |
---|
| 293 | ! 7.1 Allocate working arrays |
---|
| 294 | !ALLOCATE(RUSTRTI(NPROMA,NTILES,NGPBLKS)) |
---|
| 295 | !ALLOCATE(RVSTRTI(NPROMA,NTILES,NGPBLKS)) |
---|
| 296 | !ALLOCATE(RAHFSTI(NPROMA,NTILES,NGPBLKS)) |
---|
| 297 | !ALLOCATE(REVAPTI(NPROMA,NTILES,NGPBLKS)) |
---|
| 298 | !ALLOCATE(RTSKTI (NPROMA,NTILES,NGPBLKS)) |
---|
| 299 | !RUSTRTI(:,:,:) = 0.0_JPRB |
---|
| 300 | !RVSTRTI(:,:,:) = 0.0_JPRB |
---|
| 301 | !RAHFSTI(:,:,:) = 0.0_JPRB |
---|
| 302 | !REVAPTI(:,:,:) = 0.0_JPRB |
---|
| 303 | !RTSKTI (:,:,:) = 0.0_JPRB |
---|
| 304 | !CALL GSTATS(1811,1) |
---|
| 305 | |
---|
| 306 | ! ------------------------------------------------------------------ |
---|
| 307 | |
---|
| 308 | !* 8. SETTING CONSTANTS FOR CLOUD OPTICAL PROPERTIES |
---|
| 309 | ! ---------------------------------------------- |
---|
| 310 | |
---|
| 311 | IF (LRAYFM15) THEN |
---|
| 312 | CALL SUCLOP15 |
---|
| 313 | ELSE |
---|
| 314 | CALL SUCLOP |
---|
| 315 | ENDIF |
---|
| 316 | |
---|
| 317 | ! ------------------------------------------------------------------ |
---|
| 318 | |
---|
| 319 | !* 9. SETTING CONSTANTS FOR PROGNOSTIC CLOUD SCHEME |
---|
| 320 | ! ---------------------------------------------- |
---|
| 321 | |
---|
| 322 | !CALL SUCLDP |
---|
| 323 | |
---|
| 324 | ! ------------------------------------------------------------------ |
---|
| 325 | |
---|
| 326 | !* 10. SETTING CONSTANTS FOR WAVE COUPLING |
---|
| 327 | ! ----------------------------------- |
---|
| 328 | |
---|
| 329 | !CALL SUWCOU |
---|
| 330 | |
---|
| 331 | ! ------------------------------------------------------------------ |
---|
| 332 | !* 11. SETTING CONSTANTS FOR LINEARIZED PHYSICS |
---|
| 333 | ! ---------------------------------------- |
---|
| 334 | |
---|
| 335 | !CALL SUPHLI |
---|
| 336 | |
---|
| 337 | ! ------------------------------------------------------------------ |
---|
| 338 | !* 12. SETTING CONSTANTS FOR METHANE OXIDATION |
---|
| 339 | ! --------------------------------------- |
---|
| 340 | |
---|
| 341 | !CALL SUMETHOX |
---|
| 342 | |
---|
| 343 | ! ------------------------------------------------------------------ |
---|
| 344 | |
---|
| 345 | WRITE(UNIT=KULOUT,FMT='('' SUPHEC IS OVER '')') |
---|
| 346 | |
---|
| 347 | ! ------------------------------------------------------------------ |
---|
| 348 | |
---|
| 349 | IF (LHOOK) CALL DR_HOOK('SUPHEC',1,ZHOOK_HANDLE) |
---|
| 350 | END SUBROUTINE SUPHEC |
---|