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

Contents of /trunk/dyn3d/limx.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 76 - (show annotations)
Fri Nov 15 18:45:49 2013 UTC (10 years, 6 months ago) by guez
File size: 2567 byte(s)
Moved everything out of libf.
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 disvert_m
19 use conf_gcm_m
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
52 data first/.true./
53
54
55 DO l = 1,llm
56 DO ij=1,ip1jmp1
57 q(ij,l) = s0(ij,l) / sm ( ij,l )
58 dxq(ij,l) = sx(ij,l) /sm(ij,l)
59 ENDDO
60 ENDDO
61
62 c calcul de la pente a droite et a gauche de la maille
63
64 do l = 1, llm
65 do ij=iip2,ip1jm-1
66 dxqu(ij)=q(ij+1,l)-q(ij,l)
67 enddo
68 do ij=iip1+iip1,ip1jm,iip1
69 dxqu(ij)=dxqu(ij-iim)
70 enddo
71
72 do ij=iip2,ip1jm
73 adxqu(ij)=abs(dxqu(ij))
74 enddo
75
76 c calcul de la pente maximum dans la maille en valeur absolue
77
78 do ij=iip2+1,ip1jm
79 dxqmax(ij)=pente_max*min(adxqu(ij-1),adxqu(ij))
80 enddo
81
82 do ij=iip1+iip1,ip1jm,iip1
83 dxqmax(ij-iim)=dxqmax(ij)
84 enddo
85
86 c calcul de la pente avec limitation
87
88 do ij=iip2+1,ip1jm
89 if( dxqu(ij-1)*dxqu(ij).gt.0.
90 & .and. dxq(ij,l)*dxqu(ij).gt.0.) then
91 dxq(ij,l)=
92 & sign(min(abs(dxq(ij,l)),dxqmax(ij)),dxq(ij,l))
93 else
94 c extremum local
95 dxq(ij,l)=0.
96 endif
97 enddo
98 do ij=iip1+iip1,ip1jm,iip1
99 dxq(ij-iim,l)=dxq(ij,l)
100 enddo
101
102 DO ij=1,ip1jmp1
103 sx(ij,l) = dxq(ij,l)*sm(ij,l)
104 ENDDO
105
106 ENDDO
107
108 RETURN
109 END

  ViewVC Help
Powered by ViewVC 1.1.21