source: trunk/WRF.COMMON/WRFV2/mars_lmd/libf/phymars/vdif_cd.F @ 3428

Last change on this file since 3428 was 11, checked in by aslmd, 14 years ago

spiga@svn-planeto:ajoute le modele meso-echelle martien

File size: 3.0 KB
Line 
1      SUBROUTINE vdif_cd( ngrid,nlay,pz0,
2     &    pg,pz,pu,pv,pts,ph,pcdv,pcdh)
3c****WRF:ligne trop longue
4      IMPLICIT NONE
5c=======================================================================
6c
7c   Subject: computation of the surface drag coefficient using the
8c   -------  approch developed by Loui for ECMWF.
9c
10c   Author: Frederic Hourdin  15 /10 /93
11c   -------
12c
13c   Arguments:
14c   ----------
15c
16c   inputs:
17c   ------
18c     ngrid            size of the horizontal grid
19c     pg               gravity (m s -2)
20c     pz(ngrid)        height of the first atmospheric layer
21c     pu(ngrid)        u component of the wind in that layer
22c     pv(ngrid)        v component of the wind in that layer
23c     pts(ngrid)       surfacte temperature
24c     ph(ngrid)        potential temperature T*(p/ps)^kappa
25c
26c   outputs:
27c   --------
28c     pcdv(ngrid)      Cd for the wind
29c     pcdh(ngrid)      Cd for potential temperature
30c
31c=======================================================================
32c
33c-----------------------------------------------------------------------
34c   Declarations:
35c   -------------
36
37c   Arguments:
38c   ----------
39
40      INTEGER ngrid,nlay
41      REAL pz0
42      REAL pg,pz(ngrid,nlay)
43      REAL pu(ngrid,nlay),pv(ngrid,nlay)
44      REAL pts(ngrid,nlay),ph(ngrid,nlay)
45      REAL pcdv(ngrid),pcdh(ngrid)
46
47c   Local:
48c   ------
49
50      INTEGER ig
51
52      REAL zu2,z1,zri,zcd0,zz
53
54      REAL karman,b,c,d,c2b,c3bc,c3b,umin2
55      LOGICAL firstcal
56      DATA karman,b,c,d,umin2/.4,5.,5.,5.,1.e-12/
57      DATA firstcal/.true./
58      SAVE b,c,d,karman,c2b,c3bc,c3b,firstcal,umin2
59
60c-----------------------------------------------------------------------
61c   couche de surface:
62c   ------------------
63
64c     DO ig=1,ngrid
65c        zu2=pu(ig)*pu(ig)+pv(ig)*pv(ig)+umin2
66c        pcdv(ig)=pz0*(1.+sqrt(zu2))
67c        pcdh(ig)=pcdv(ig)
68c     ENDDO
69c     RETURN
70c
71c      IF (firstcal) THEN
72c         c2b=2.*b
73c         c3bc=3.*b*c
74c         c3b=3.*b
75c         firstcal=.false.
76c      ENDIF
77c
78c!!!! WARNING, verifier la formule originale de Louis!
79c      DO ig=1,ngrid
80c         zu2=pu(ig)*pu(ig)+pv(ig)*pv(ig)+umin2
81c         zri=pg*pz(ig)*(ph(ig)-pts(ig))/(ph(ig)*zu2)
82c._.
83c            zri=0.E+0
84c._.
85c         z1=1.+pz(ig)/pz0
86c         zcd0=karman/log(z1)
87c._.         zcd0=zcd0*zcd0*sqrt(zu2)
88c         zcd0=zcd0*zcd0
89c         IF(zri.LT.0.) THEN
90c._.            z1=b*zri/(1.+c3bc*zcd0*sqrt(-z1*zri))
91c            z1=b*zri/(1.+c3bc*zcd0*sqrt(-z1*zri*zu2))
92c            pcdv(ig)=zcd0*(1.-2.*z1)
93c            pcdh(ig)=zcd0*(1.-3.*z1)
94c         ELSE
95c            zz=sqrt(1.+d*zri)
96c            pcdv(ig)=zcd0/(1.+c2b*zri/zz)
97c            pcdh(ig)=zcd0/(1.+c3b*zri*zz)
98c         ENDIF
99c      ENDDO
100
101
102c On calcule un VRAI cdrag tout bete
103
104      DO ig=1,ngrid
105         z1=1.E+0 + pz(ig,1)/pz0
106         zcd0=karman/log(z1)
107         zcd0=zcd0*zcd0
108         pcdv(ig)=zcd0
109         pcdh(ig)=zcd0
110      ENDDO
111
112       
113
114
115c-----------------------------------------------------------------------
116
117      RETURN
118      END
Note: See TracBrowser for help on using the repository browser.