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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 27 - (show annotations)
Thu Mar 25 14:29:07 2010 UTC (14 years, 1 month ago) by guez
File size: 2560 byte(s)
"dyn3d" and "filtrez" do not contain any included file so make rules
have been updated.

"comdissip.f90" was useless, removed it.

"dynredem0" wrote undefined value in "controle(31)", that was
overwritten by "dynredem1". Now "dynredem0" just writes 0 to
"controle(31)".

Removed arguments of "inidissip". "inidissip" now accesses the
variables by use association.

In program "etat0_lim", "itaufin" is not defined so "dynredem1" wrote
undefined value to "controle(31)". Added argument "itau" of
"dynredem1" to correct that.

"itaufin" does not need to be a module variable (of "temps"), made it
a local variable of "leapfrog".

Removed calls to "diagedyn" from "leapfrog".

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
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