source: dynamico_lmdz/simple_physics/phyparam/param/coefdifv.F @ 4201

Last change on this file since 4201 was 4193, checked in by dubos, 6 years ago

simple_physics : cleanup

File size: 2.3 KB
Line 
1      SUBROUTINE coefdifv( np,nlev,
2     $               pu,pv,ph,pphi,
3     $               pcdzv,pcdzh)
4      USE constlim, ONLY : ccdzh, cdzmin, cpgam, cdzconst, dgcdrag
5      USE vdif_mod, ONLY : lmixmin
6      USE phys_const, ONLY : g
7      IMPLICIT NONE
8
9c=======================================================================
10c
11c   calcul des coeficients de la diffusion verticale
12c
13c=======================================================================
14c
15c-----------------------------------------------------------------------
16c   Declarations:
17c   -------------
18
19c   Arguments:
20c   ----------
21
22      INTEGER np,nlev
23      REAL pu(np,nlev),pv(np,nlev)
24      REAL ph(np,nlev),pphi(np,nlev)
25      REAL pcdzv(np,nlev),pcdzh(np,nlev)
26
27c   Local:
28c   ------
29
30      INTEGER ilev,ip
31      REAL z1(np),z2(np)
32      REAL z1odz(np),zdzu2(np),zhbar(np)
33
34c-----------------------------------------------------------------------
35c   initialisations:
36c   ----------------
37
38c-----------------------------------------------------------------------
39c   couche de surface:
40c   ------------------
41
42      DO 210 ip=1,np
43         z1(ip)=pu(ip,1)*pu(ip,1)+pv(ip,1)*pv(ip,1)
44         pcdzv(ip,1)=dgcdrag(ip)*(SQRT(z1(ip))+1.)  / ph(ip,1)
45         pcdzh(ip,1)=pcdzv(ip,1)
46210   CONTINUE
47c
48c
49c-----------------------------------------------------------------------
50c   autres couches:
51c   ---------------
52
53      PRINT*,'Coeff k'
54      DO 310 ilev=1,nlev-1
55         DO 320 ip=1,np
56            z1(ip)=pu(ip,ilev+1)-pu(ip,ilev)
57            z2(ip)=pv(ip,ilev+1)-pv(ip,ilev)
58            z1(ip)=z1(ip)*z1(ip)+z2(ip)*z2(ip)
59            z1odz(ip)=g/(pphi(ip,ilev+1)-pphi(ip,ilev))
60            zdzu2(ip)=z1(ip)*z1odz(ip)*z1odz(ip)
61            zhbar(ip)=0.5*(ph(ip,ilev)+ph(ip,ilev+1))
62            z1(ip)=( (ph(ip,ilev+1)-ph(ip,ilev))*z1odz(ip)-
63     $             cpgam ) * ccdzh/zhbar(ip)
64            pcdzv(ip,ilev+1)=cdzconst(ilev+1)*
65     $            SQRT(AMAX1(zdzu2(ip)-z1(ip),cdzmin)) /
66c    $            SQRT(cdzmin) /
67     $            (zhbar(ip)*zhbar(ip))
68            IF(ip.eq.np/2+1) PRINT*,lmixmin*lmixmin*
69     s     SQRT(AMAX1(zdzu2(ip)-z1(ip),cdzmin))
70            pcdzh(ip,ilev+1)=pcdzv(ip,ilev+1)
71320      CONTINUE
72310   CONTINUE
73
74c-----------------------------------------------------------------------
75
76      RETURN
77      END
Note: See TracBrowser for help on using the repository browser.