source: LMDZ4/trunk/libf/dyn3d/friction.F @ 802

Last change on this file since 802 was 524, checked in by lmdzadmin, 21 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.4 KB
Line 
1!
2! $Header$
3!
4c=======================================================================
5      SUBROUTINE friction(ucov,vcov,pdt)
6      IMPLICIT NONE
7
8c=======================================================================
9c
10c
11c   Objet:
12c   ------
13c
14c  ***********
15c    Friction
16c  ***********
17c
18c=======================================================================
19
20#include "dimensions.h"
21#include "paramet.h"
22#include "comgeom2.h"
23#include "control.h"
24#include "comconst.h"
25
26      REAL pdt
27      REAL modv(iip1,jjp1),zco,zsi
28      REAL vpn,vps,upoln,upols,vpols,vpoln
29      REAL u2(iip1,jjp1),v2(iip1,jjm)
30      REAL ucov( iip1,jjp1,llm ),vcov( iip1,jjm,llm )
31      INTEGER  i,j
32      REAL cfric
33      parameter (cfric=1.e-5)
34
35
36c   calcul des composantes au carre du vent naturel
37      do j=1,jjp1
38         do i=1,iip1
39            u2(i,j)=ucov(i,j,1)*ucov(i,j,1)*unscu2(i,j)
40         enddo
41      enddo
42      do j=1,jjm
43         do i=1,iip1
44            v2(i,j)=vcov(i,j,1)*vcov(i,j,1)*unscv2(i,j)
45         enddo
46      enddo
47
48c   calcul du module de V en dehors des poles
49      do j=2,jjm
50         do i=2,iip1
51            modv(i,j)=sqrt(0.5*(u2(i-1,j)+u2(i,j)+v2(i,j-1)+v2(i,j)))
52         enddo
53         modv(1,j)=modv(iip1,j)
54      enddo
55
56c   les deux composantes du vent au pole sont obtenues comme
57c   premiers modes de fourier de v pres du pole
58      upoln=0.
59      vpoln=0.
60      upols=0.
61      vpols=0.
62      do i=2,iip1
63         zco=cos(rlonv(i))*(rlonu(i)-rlonu(i-1))
64         zsi=sin(rlonv(i))*(rlonu(i)-rlonu(i-1))
65         vpn=vcov(i,1,1)/cv(i,1)
66         vps=vcov(i,jjm,1)/cv(i,jjm)
67         upoln=upoln+zco*vpn
68         vpoln=vpoln+zsi*vpn
69         upols=upols+zco*vps
70         vpols=vpols+zsi*vps
71      enddo
72      vpn=sqrt(upoln*upoln+vpoln*vpoln)/pi
73      vps=sqrt(upols*upols+vpols*vpols)/pi
74      do i=1,iip1
75c        modv(i,1)=vpn
76c        modv(i,jjp1)=vps
77         modv(i,1)=modv(i,2)
78         modv(i,jjp1)=modv(i,jjm)
79      enddo
80
81c   calcul du frottement au sol.
82      do j=2,jjm
83         do i=1,iim
84            ucov(i,j,1)=ucov(i,j,1)
85     s      -cfric*pdt*0.5*(modv(i+1,j)+modv(i,j))*ucov(i,j,1)
86         enddo
87         ucov(iip1,j,1)=ucov(1,j,1)
88      enddo
89      do j=1,jjm
90         do i=1,iip1
91            vcov(i,j,1)=vcov(i,j,1)
92     s      -cfric*pdt*0.5*(modv(i,j+1)+modv(i,j))*vcov(i,j,1)
93         enddo
94         vcov(iip1,j,1)=vcov(1,j,1)
95      enddo
96
97      RETURN
98      END
99
Note: See TracBrowser for help on using the repository browser.