source: trunk/LMDZ.MARS/libf/phymars/orodrag.F @ 1242

Last change on this file since 1242 was 1226, checked in by aslmd, 11 years ago

LMDZ.MARS : Replaced comcstfi and planete includes by modules.

File size: 8.3 KB
Line 
1      SUBROUTINE ORODRAG( klon,klev
2     I                 , KGWD, KGWDIM, KDX, KTEST
3     R                 , PTSPHY
4     R                 , PAPHM1,PAPM1,PGEOM1,PTM1,PUM1
5     R                 , PVM1, PVAROR, PSIG, PGAMMA, PTHETA
6C OUTPUTS
7     R                 , PULOW,PVLOW
8     R                 , PVOM,PVOL,PTE )
9C
10C
11C**** *ORODRAG* - DOES THE GRAVITY WAVE PARAMETRIZATION.
12C
13C     PURPOSE.
14C     --------
15C
16C          THIS ROUTINE COMPUTES THE PHYSICAL TENDENCIES OF THE
17C          PROGNOSTIC VARIABLES U,V  AND T DUE TO  VERTICAL TRANSPORTS BY
18C          SUBGRIDSCALE OROGRAPHICALLY EXCITED GRAVITY WAVES
19C
20C     EXPLICIT ARGUMENTS :
21C     --------------------
22C
23C     INPUT :
24C
25C     NLON               : NUMBER OF HORIZONTAL GRID POINTS
26C     NLEV               : NUMBER OF LEVELS
27C     KGWD               : NUMBER OF POINTS AT WHICH THE SCHEME IS CALLED
28C     KGWDIM             : NUMBER OF POINTS AT WHICH THE SCHEME IS CALLED
29C     KDX(NLON)          : POINTS AT WHICH TO CALL THE SCHEME
30C     KTEST(NLON)        : MAP OF CALLING POINTS
31C     PTSPHY             : LENGTH OF TIME STEP
32C     PAPHM1(NLON,NLEV+1): PRESSURE AT MIDDLE LEVELS
33C     PAPM1(NLON,NLEV)   : PRESSURE ON MODEL LEVELS
34C     PGEOM1(NLON,NLEV)  : GEOPOTENTIAL HIEGHT OF MODEL LEVELS
35C     PTM1(NLON,NLEV)    : TEMPERATURE
36C     PUM1(NLON,NLEV)    : ZONAL WIND
37C     PVM1(NLON,NLEV)    : MERIDIONAL WIND
38C     PVAROR(NLON)       : SUB-GRID SCALE STANDARD DEVIATION
39C     PSIG(NLON)         : SUB-GRID SCALE SLOPE
40C     PGAMMA(NLON)       : SUB-GRID SCALE ANISOTROPY
41C     PTHETA(NLON)       : SUB-GRID SCALE PRINCIPAL AXES ANGLE
42C
43C     OUTPUT :
44C
45C     PULOW(NLON)        : LOW LEVEL ZONAL WIND
46C     PVLOW(NLON)        : LOW LEVEL MERIDIONAL WIND
47C     PVOM(NLON,NLEV)    : ZONAL WIND TENDENCY
48C     PVOL(NLON,NLEV)    : MERIDIONAL WIND TENDENCY
49C     PTE(NLON,NLEV)     : TEMPERATURE TENDENCY
50C
51C     IMPLICIT ARGUMENTS :
52C     --------------------
53C
54C     comcstfi.h
55C     dimphys.h
56C     yoegwd.h
57C
58C     METHOD.
59C     -------
60C
61C     EXTERNALS.
62C     ----------
63C
64C     REFERENCE.
65C     ----------
66C
67C     AUTHOR.
68C     -------
69C     M.MILLER + B.RITTER   E.C.M.W.F.     15/06/86.
70C
71C     F.LOTT + M. MILLER    E.C.M.W.F.     22/11/94
72C-----------------------------------------------------------------------
73      use dimradmars_mod, only: ndlo2
74      USE comcstfi_h
75      implicit none
76C
77C
78#include "dimensions.h"
79#include "dimphys.h"
80!#include "dimradmars.h"
81      integer klon,klev,kidia
82      parameter(kidia=1)
83      integer, save :: kfdia ! =NDLO2
84
85#include "yoegwd.h"
86C-----------------------------------------------------------------------
87C
88C*       0.1   ARGUMENTS
89C              ---------
90C
91C
92      REAL  PTE(NDLO2,klev),
93     *      PVOL(NDLO2,klev),
94     *      PVOM(NDLO2,klev),
95     *      PULOW(NDLO2),
96     *      PVLOW(NDLO2)
97      REAL  PUM1(NDLO2,klev),
98     *      PVM1(NDLO2,klev),
99     *      PTM1(NDLO2,klev),
100     *      PVAROR(NDLO2),PSIG(NDLO2),PGAMMA(NDLO2),PTHETA(NDLO2),
101     *      PGEOM1(NDLO2,klev),
102     *      PAPM1(NDLO2,klev),
103     *      PAPHM1(NDLO2,klev+1)
104C
105      integer kgwd,kgwdim
106      real ptsphy
107      INTEGER  KDX(NDLO2),KTEST(NDLO2)
108C-----------------------------------------------------------------------
109C
110C*       0.2   LOCAL ARRAYS
111C              ------------
112      INTEGER  ISECT(NDLO2),
113     *         ICRIT(NDLO2),
114     *         IKCRITH(NDLO2),
115     *         IKenvh(NDLO2),
116     *         IKNU(NDLO2),
117     *         IKNU2(NDLO2),
118     *         IKCRIT(NDLO2),
119     *         IKHLIM(NDLO2)
120      integer ji,jk,jl,klevm1,ilevp1
121C      real gkwake
122      real ztmst,pvar,ztauf,zrtmst,zdelp,zb,zc,zbet
123      real zconb,zabsv,zzd1,ratio,zust,zvst,zdis,ztemp
124C
125      REAL   ZTAU(NDLO2,nlayermx+1),
126     *       ZSTAB(NDLO2,nlayermx+1),
127     *       ZVPH(NDLO2,nlayermx+1),
128     *       ZRHO(NDLO2,nlayermx+1),
129     *       ZRI(NDLO2,nlayermx+1),
130     *       ZpsI(NDLO2,nlayermx+1),
131     *       Zzdep(NDLO2,nlayermx)
132      REAL   ZDUDT(NDLO2),
133     *       ZDVDT(NDLO2),
134     *       ZDTDT(NDLO2),
135     *       ZDEDT(NDLO2),
136     *       ZVIDIS(NDLO2),
137     *       ZTFR(NDLO2),
138     *       Znu(NDLO2),
139     *       Zd1(NDLO2),
140     *       Zd2(NDLO2),
141     *       Zdmod(NDLO2)
142C
143C------------------------------------------------------------------
144C
145C*         1.    INITIALIZATION
146C                --------------
147C
148 100  CONTINUE
149C
150C     ------------------------------------------------------------------
151C
152C*         1.1   COMPUTATIONAL CONSTANTS
153C                -----------------------
154C
155 110  CONTINUE
156C
157      kfdia=NDLO2
158     
159c     ZTMST=TWODT
160c     IF(NSTEP.EQ.NSTART) ZTMST=0.5*TWODT
161      KLEVM1=KLEV-1
162      ZTMST=PTSPHY
163      ZRTMST=1./ZTMST
164C     ------------------------------------------------------------------
165C
166 120  CONTINUE
167C
168C     ------------------------------------------------------------------
169C
170C*         1.3   CHECK WHETHER ROW CONTAINS POINT FOR PRINTING
171C                ---------------------------------------------
172C
173 130  CONTINUE
174C
175C     ------------------------------------------------------------------
176C
177C*         2.     PRECOMPUTE BASIC STATE VARIABLES.
178C*                ---------- ----- ----- ----------
179C*                DEFINE LOW LEVEL WIND, PROJECT WINDS IN PLANE OF
180C*                LOW LEVEL WIND, DETERMINE SECTOR IN WHICH TO TAKE
181C*                THE VARIANCE AND SET INDICATOR FOR CRITICAL LEVELS.
182C
183  200 CONTINUE
184C
185C
186C
187      CALL OROSETUP
188     *     ( klon, klev , KTEST
189     *     , IKCRIT, IKCRITH, ICRIT, ISECT, IKHLIM, ikenvh,IKNU,iknu2
190     *     , PAPHM1, PAPM1 , PUM1   , PVM1 , PTM1 , PGEOM1, pvaror
191     *     , ZRHO  , ZRI   , ZSTAB  , ZTAU , ZVPH , zpsi, zzdep
192     *     , PULOW, PVLOW
193     *     , ptheta,pgamma,znu  ,zd1,  zd2,  zdmod                )
194C
195C
196C
197C***********************************************************
198C
199C
200C*         3.      COMPUTE LOW LEVEL STRESSES USING SUBCRITICAL AND
201C*                 SUPERCRITICAL FORMS.COMPUTES ANISOTROPY COEFFICIENT
202C*                 AS MEASURE OF OROGRAPHIC TWODIMENSIONALITY.
203C
204  300 CONTINUE
205C
206      CALL GWSTRESS
207     *    ( klon  , klev
208     *    , IKCRIT, ISECT, IKHLIM, KTEST, IKCRITH, ICRIT, ikenvh, IKNU
209     *    , ZRHO  , ZSTAB, ZVPH  , PVAR , pvaror,  psig
210     *    , ZTFR   , ZTAU
211     *    , pgeom1,pgamma,zd1,zd2,zdmod,znu)
212C
213C*         4.      COMPUTE STRESS PROFILE.
214C*                 ------- ------ --------
215C
216  400 CONTINUE
217C
218C
219      CALL GWPROFIL
220     *       (  klon , klev
221     *       , kgwd   , kdx  , KTEST
222     *       , IKCRIT, IKCRITH, ICRIT  , ikenvh, IKNU
223     *       ,iknu2 , pAPHM1, ZRHO   , ZSTAB , ZTFR   , ZVPH
224     *       , ZRI   , ZTAU   , ztauf
225     *       , zdmod , znu    , psig  , pgamma , pvaror   )
226C
227C
228C*         5.      COMPUTE TENDENCIES.
229C*                 -------------------
230C
231  500 CONTINUE
232C
233C  EXPLICIT SOLUTION AT ALL LEVELS FOR THE GRAVITY WAVE
234C  IMPLICIT SOLUTION FOR THE BLOCKED LEVELS
235
236      DO 510 JL=KIDIA,KFDIA
237      ZVIDIS(JL)=0.0
238      ZDUDT(JL)=0.0
239      ZDVDT(JL)=0.0
240      ZDTDT(JL)=0.0
241  510 CONTINUE
242C
243      ILEVP1=KLEV+1
244C
245C
246      DO 524 JK=1,klev
247C
248CDIR$ IVDEP
249C
250C      GKWAKE=0.5
251C
252C     NOW SET IN SUGWD.F
253C
254      DO 523 JL=1,KGWD
255      JI=KDX(JL)
256      ZDELP=pAPHM1(Ji,JK+1)-pAPHM1(Ji,JK)
257      ZTEMP=-g*(ZTAU(Ji,JK+1)-ZTAU(Ji,JK))/(ZVPH(Ji,ILEVP1)*ZDELP)
258      ZDUDT(JI)=(PULOW(JI)*Zd1(ji)-pvlow(ji)*zd2(ji))*ztemp/zdmod(ji)
259      ZDVDT(JI)=(pvLOW(JI)*Zd1(ji)+pulow(ji)*zd2(ji))*ztemp/zdmod(ji)
260      if(jk.ge.ikenvh(ji)) then
261         zb=1.0-0.18*pgamma(ji)-0.04*pgamma(ji)**2
262         zc=0.48*pgamma(ji)+0.3*pgamma(ji)**2
263         zconb=2.*ztmst*GKWAKE*psig(ji)/(4.*pvaror(ji))
264         zabsv=sqrt(PUM1(JI,JK)**2+PVM1(JI,JK)**2)/2.
265         zzd1=zb*cos(zpsi(ji,jk))**2+zc*sin(zpsi(ji,jk))**2
266         ratio=(cos(zpsi(ji,jk))**2+pgamma(ji)*sin(zpsi(ji,jk))**2)/
267     *   (pgamma(ji)*cos(zpsi(ji,jk))**2+sin(zpsi(ji,jk))**2)
268         zbet=max(0.,2.-1./ratio)*zconb*zzdep(ji,jk)*zzd1*zabsv
269         zdudt(ji)=-pum1(ji,jk)/ztmst
270         zdvdt(ji)=-pvm1(ji,jk)/ztmst
271         zdudt(ji)=zdudt(ji)*(zbet/(1.+zbet))
272         zdvdt(ji)=zdvdt(ji)*(zbet/(1.+zbet))
273      end if
274      PVOM(JI,JK)=ZDUDT(JI)
275      PVOL(JI,JK)=ZDVDT(JI)
276      ZUST=PUM1(JI,JK)+ZTMST*ZDUDT(JI)
277      ZVST=PVM1(JI,JK)+ZTMST*ZDVDT(JI)
278      ZDIS=0.5*(PUM1(JI,JK)**2+PVM1(JI,JK)**2-ZUST**2-ZVST**2)
279      ZDEDT(JI)=ZDIS/ZTMST
280      ZVIDIS(JI)=ZVIDIS(JI)+ZDIS*ZDELP
281      ZDTDT(JI)=ZDEDT(JI)/cpp
282      PTE(JI,JK)=ZDTDT(JI)
283
284  523 CONTINUE
285
286  524 CONTINUE
287C
288C
289      RETURN
290      END
Note: See TracBrowser for help on using the repository browser.