My Project
 All Classes Files Functions Variables Macros
limz.F
Go to the documentation of this file.
1 !
2 ! $Header$
3 !
4  SUBROUTINE limz(s0,sz,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  IMPLICIT NONE
16 c
17 #include "dimensions.h"
18 #include "paramet.h"
19 #include "logic.h"
20 #include "comvert.h"
21 #include "comconst.h"
22 #include "comgeom.h"
23 c
24 c
25 c Arguments:
26 c ----------
27  real pente_max
28  REAL s0(ip1jmp1,llm),sm(ip1jmp1,llm)
29  real sz(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 dzq(ip1jmp1,llm)
39 
40 
41  REAL new_m,zm
42  real dzqw(ip1jmp1)
43  real adzqw(ip1jmp1),dzqmax(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  dzq(ij,l) = sz(ij,l) /sm(ij,l)
60  ENDDO
61  ENDDO
62 
63 c calcul de la pente en haut et en bas de la maille
64  do ij=1,ip1jmp1
65  do l = 1, llm-1
66  dzqw(l)=q(ij,l+1)-q(ij,l)
67  enddo
68  dzqw(llm)=0.
69 
70  do l=1,llm
71  adzqw(l)=abs(dzqw(l))
72  enddo
73 
74 c calcul de la pente maximum dans la maille en valeur absolue
75 
76  do l=2,llm-1
77  dzqmax(l)=pente_max*min(adzqw(l-1),adzqw(l))
78  enddo
79 
80 c calcul de la pente avec limitation
81 
82  do l=2,llm-1
83  if( dzqw(l-1)*dzqw(l).gt.0.
84  & .and. dzq(ij,l)*dzqw(l).gt.0.) then
85  dzq(ij,l)=
86  & sign(min(abs(dzq(ij,l)),dzqmax(l)),dzq(ij,l))
87  else
88 c extremum local
89  dzq(ij,l)=0.
90  endif
91  enddo
92 
93  DO l=1,llm
94  sz(ij,l) = dzq(ij,l)*sm(ij,l)
95  ENDDO
96 
97  ENDDO
98 
99  RETURN
100  END