source: trunk/libf/dyn3d/limz.F @ 1

Last change on this file since 1 was 1, checked in by emillour, 14 years ago

Import initial LMDZ5

File size: 2.2 KB
RevLine 
[1]1!
2! $Header$
3!
4      SUBROUTINE limz(s0,sz,sm,pente_max)
5c
6c     Auteurs:   P.Le Van, F.Hourdin, F.Forget
7c
8c    ********************************************************************
9c     Shema  d'advection " pseudo amont " .
10c    ********************************************************************
11c     nq,iq,q,pbaru,pbarv,w sont des arguments d'entree  pour le s-pg ....
12c
13c
14c   --------------------------------------------------------------------
15      IMPLICIT NONE
16c
17#include "dimensions.h"
18#include "paramet.h"
19#include "logic.h"
20#include "comvert.h"
21#include "comconst.h"
22#include "comgeom.h"
23c
24c
25c   Arguments:
26c   ----------
27      real pente_max
28      REAL s0(ip1jmp1,llm),sm(ip1jmp1,llm)
29      real sz(ip1jmp1,llm)
30c
31c      Local
32c   ---------
33c
34      INTEGER ij,l,j,i,iju,ijq,indu(ip1jmp1),niju
35      integer n0,iadvplus(ip1jmp1,llm),nl(llm)
36c
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
63c   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
74c   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
80c   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
88c   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
Note: See TracBrowser for help on using the repository browser.