source: LMDZ6/trunk/libf/phylmd/rrtm/suphec.F90

Last change on this file was 5294, checked in by Laurent Fairhead, 3 weeks ago

Keeping clesphys.h was not the right solution
LF

  • 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: 11.2 KB
Line 
1SUBROUTINE 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
59USE PARKIND1  ,ONLY : JPIM     ,JPRB
60USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
61
62USE YOMDPHY  , ONLY : NTILES
63USE SURFACE_FIELDS, ONLY : YSP_SBD
64USE YOELW    , ONLY : NSIL     ,TSTAND   ,XP
65USE YOESW    , ONLY : RSUN
66USE YOMSW15  , ONLY : RSUN15
67USE YOMDIM   , ONLY : NFLEVG   ,NSMAX, NGPBLKS, NPROMA
68USE YOMGEM   , ONLY : VBH      ,VAH      ,VP00, VAF   , VBF
69USE YOMCST   , ONLY : RD       ,RV       ,RCPD     ,&
70 & RLVTT    ,RLSTT    ,RLMLT    ,RTT      ,RATM
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
77USE YOMPHY   , ONLY : LRAYFM15
78!USE YOERAD   , ONLY : NSW      ,NTSW     ,&
79! NSW mis dans .def MPL 20140211
80USE YOERAD   , ONLY : NTSW     ,&
81 & LCCNL    ,LCCNO    ,&
82 & RCCNSEA  ,RCCNLND
83USE YOE_TILE_PROP, ONLY : RUSTRTI, RVSTRTI, RAHFSTI, REVAPTI, RTSKTI
84USE YOEPHY   , ONLY : RTHRFRTI ,LEOCWA   ,LEOCCO   ,LEOCSA, LE4ALB
85USE YOEVDF   , ONLY : NVTYPES
86USE YOMCOAPHY   , ONLY : NPHYINT
87USE YOM_PHYS_GRID ,ONLY : PHYS_GRID
88USE YOMCT0  , ONLY  : LSCMEC   ,LROUGH   ,REXTZ0M  ,REXTZ0H
89USE vertical_layers_mod, ONLY: ap,bp
90! Temporary fix waiting for cleaner interface (or not)
91USE clesphys_mod_h, ONLY: NSW
92
93IMPLICIT NONE
94include "YOETHF.h"
95!!include "clesphys.h"
96
97INTEGER(KIND=JPIM),INTENT(IN)    :: KULOUT
98INTERFACE
99#include "susurf.h"
100#include "surf_inq.h"
101END 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
122REAL(KIND=JPRB) :: ZPRES(0:NFLEVG),ZPRESF(NFLEVG), ZETA(NFLEVG),ZETAH(0:NFLEVG)
123
124INTEGER(KIND=JPIM) :: JK,ISMAX,JLEV
125REAL(KIND=JPRB) :: ZHOOK_HANDLE
126
127!     ------------------------------------------------------------------
128
129!*         0.2    DEFINING DERIVED CONSTANTS FROM UNIVERSAL CONSTANTS
130!                 ---------------------------------------------------
131
132IF (LHOOK) CALL DR_HOOK('SUPHEC',0,ZHOOK_HANDLE)
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)
175
176!     ------------------------------------------------------------------
177!*         0.5    DEFINE STANDARD ATMOSPHERE VERTICAL CONFIGURATION
178!                 -------------------------------------------------
179!ALLOCATE(VBH    (0:MAX(JPMXLE,NFLEVG)))  from suallo.F90
180!!
181ALLOCATE(VAH    (0:NFLEVG))  ! Ajout ALLOCATE MPL 200509
182ALLOCATE(VBH    (0:NFLEVG))
183ALLOCATE(VAF    (NFLEVG))
184ALLOCATE(VBF    (NFLEVG))
185! Commente par MPL 28.11.08, puis decommente le 19.05.09
186VP00=101325.     !!!!! A REVOIR (MPL)
187ZPRES(NFLEVG)=VP00
188! on recupere ap et bp de dyn3d (vertical_layers_mod) MPL 19.05.09
189! Attention, VAH et VBH sont inverses, comme les niveaux
190! plev(l)=PAPRS(klon,nlayer+1-l) de 1 a nlayer (apllmd.F)
191DO 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)
197ENDDO
198! Calcul de VAF et VBF, analogues de VAH et VBH mais aux niveaux pleins
199DO JLEV = 1, NFLEVG   
200   VAF(JLEV)=(VAH(JLEV)+VAH(JLEV-1))/2.
201   VBF(JLEV)=(VBH(JLEV)+VBH(JLEV-1))/2.
202ENDDO
203
204! Appel a GPPRE commente par MPL 28.11.08, puis decommente le 19.05.09
205CALL GPPRE ( 1 ,1, 1, NFLEVG, VAH, VBH, ZPRES, ZPRESF )
206
207DO JK=0,NFLEVG
208  ZETAH(JK)= ZPRES(JK)/ZPRES(NFLEVG)
209ENDDO
210DO JK=1,NFLEVG
211  ZETA(JK)= ZPRESF(JK)/ZPRES(NFLEVG)
212ENDDO
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
263IF (LRAYFM15) THEN
264  CALL SUECRAD15 (KULOUT, NFLEVG, ZETAH )
265ELSE
266  CALL SUECRAD (KULOUT, NFLEVG, ZETAH )
267ENDIF
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
311IF (LRAYFM15) THEN
312  CALL SUCLOP15
313ELSE
314  CALL SUCLOP
315ENDIF
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
345WRITE(UNIT=KULOUT,FMT='('' SUPHEC IS OVER '')')
346
347!     ------------------------------------------------------------------
348
349IF (LHOOK) CALL DR_HOOK('SUPHEC',1,ZHOOK_HANDLE)
350END SUBROUTINE SUPHEC
Note: See TracBrowser for help on using the repository browser.