/[lmdze]/trunk/libf/dyn3d/limx.f
ViewVC logotype

Contents of /trunk/libf/dyn3d/limx.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (show annotations)
Wed Feb 27 13:16:39 2008 UTC (16 years, 2 months ago) by guez
File size: 2583 byte(s)
Initial import
1 !
2 ! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/limx.F,v 1.1.1.1 2004/05/19 12:53:06 lmdzadmin Exp $
3 !
4 SUBROUTINE limx(s0,sx,sm,pente_max)
5 c
6 c Auteurs: P.Le Van, F.Hourdin, F.Forget
7 c
8 c ********************************************************************
9 c Shema d'advection " pseudo amont " .
10 c ********************************************************************
11 c nq,iq,q,pbaru,pbarv,w sont des arguments d'entree pour le s-pg ....
12 c
13 c
14 c --------------------------------------------------------------------
15 use dimens_m
16 use paramet_m
17 use comconst
18 use comvert
19 use logic
20 use comgeom
21 IMPLICIT NONE
22 c
23 c
24 c
25 c Arguments:
26 c ----------
27 real pente_max
28 REAL s0(ip1jmp1,llm),sm(ip1jmp1,llm)
29 real sx(ip1jmp1,llm)
30 c
31 c Local
32 c ---------
33 c
34 INTEGER ij,l,j,i,iju,ijq,indu(ip1jmp1),niju
35 integer n0,iadvplus(ip1jmp1,llm),nl(llm)
36 c
37 REAL q(ip1jmp1,llm)
38 real dxq(ip1jmp1,llm)
39
40
41 REAL new_m,zm
42 real dxqu(ip1jmp1)
43 real adxqu(ip1jmp1),dxqmax(ip1jmp1)
44
45 Logical extremum,first
46 save first
47
48 REAL SSUM,CVMGP,CVMGT
49 integer ismax,ismin
50 EXTERNAL SSUM, convflu,ismin,ismax
51 EXTERNAL filtreg
52
53 data first/.true./
54
55
56 DO l = 1,llm
57 DO ij=1,ip1jmp1
58 q(ij,l) = s0(ij,l) / sm ( ij,l )
59 dxq(ij,l) = sx(ij,l) /sm(ij,l)
60 ENDDO
61 ENDDO
62
63 c calcul de la pente a droite et a gauche de la maille
64
65 do l = 1, llm
66 do ij=iip2,ip1jm-1
67 dxqu(ij)=q(ij+1,l)-q(ij,l)
68 enddo
69 do ij=iip1+iip1,ip1jm,iip1
70 dxqu(ij)=dxqu(ij-iim)
71 enddo
72
73 do ij=iip2,ip1jm
74 adxqu(ij)=abs(dxqu(ij))
75 enddo
76
77 c calcul de la pente maximum dans la maille en valeur absolue
78
79 do ij=iip2+1,ip1jm
80 dxqmax(ij)=pente_max*min(adxqu(ij-1),adxqu(ij))
81 enddo
82
83 do ij=iip1+iip1,ip1jm,iip1
84 dxqmax(ij-iim)=dxqmax(ij)
85 enddo
86
87 c calcul de la pente avec limitation
88
89 do ij=iip2+1,ip1jm
90 if( dxqu(ij-1)*dxqu(ij).gt.0.
91 & .and. dxq(ij,l)*dxqu(ij).gt.0.) then
92 dxq(ij,l)=
93 & sign(min(abs(dxq(ij,l)),dxqmax(ij)),dxq(ij,l))
94 else
95 c extremum local
96 dxq(ij,l)=0.
97 endif
98 enddo
99 do ij=iip1+iip1,ip1jm,iip1
100 dxq(ij-iim,l)=dxq(ij,l)
101 enddo
102
103 DO ij=1,ip1jmp1
104 sx(ij,l) = dxq(ij,l)*sm(ij,l)
105 ENDDO
106
107 ENDDO
108
109 RETURN
110 END

  ViewVC Help
Powered by ViewVC 1.1.21