source: LMDZ6/branches/Amaury_dev/libf/dyn3d_common/limz.f90 @ 5186

Last change on this file since 5186 was 5159, checked in by abarral, 3 months ago

Put dimensions.h and paramet.h into modules

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.9 KB
Line 
1
2! $Header$
3
4SUBROUTINE limz(s0,sz,sm,pente_max)
5
6  ! Auteurs:   P.Le Van, F.Hourdin, F.Forget
7
8  !    ********************************************************************
9  ! Shema  d'advection " pseudo amont " .
10  !    ********************************************************************
11  ! nq,iq,q,pbaru,pbarv,w sont des arguments d'entree  pour le s-pg ....
12
13
14  !   --------------------------------------------------------------------
15  USE lmdz_comgeom
16
17USE lmdz_dimensions, ONLY: iim, jjm, llm, ndm
18  USE lmdz_paramet
19  IMPLICIT NONE
20  !
21
22
23
24
25  !   Arguments:
26  !   ----------
27  REAL :: pente_max
28  REAL :: s0(ip1jmp1,llm),sm(ip1jmp1,llm)
29  REAL :: sz(ip1jmp1,llm)
30
31  !  Local
32  !   ---------
33
34  INTEGER :: ij,l,j,i,iju,ijq,indu(ip1jmp1),niju
35  INTEGER :: n0,iadvplus(ip1jmp1,llm),nl(llm)
36
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  data first/.TRUE./
49
50
51   DO  l = 1,llm
52     DO  ij=1,ip1jmp1
53           q(ij,l) = s0(ij,l) / sm ( ij,l )
54           dzq(ij,l) = sz(ij,l) /sm(ij,l)
55     ENDDO
56   ENDDO
57
58  !   calcul de la pente en haut et en bas de la maille
59   DO ij=1,ip1jmp1
60   DO l = 1, llm-1
61        dzqw(l)=q(ij,l+1)-q(ij,l)
62     enddo
63        dzqw(llm)=0.
64
65     DO  l=1,llm
66        adzqw(l)=abs(dzqw(l))
67     enddo
68
69  !   calcul de la pente maximum dans la maille en valeur absolue
70
71     DO l=2,llm-1
72        dzqmax(l)=pente_max*min(adzqw(l-1),adzqw(l))
73     enddo
74
75  !   calcul de la pente avec limitation
76
77     DO l=2,llm-1
78        IF(     dzqw(l-1)*dzqw(l)>0. &
79              .AND. dzq(ij,l)*dzqw(l)>0.) THEN
80          dzq(ij,l)= &
81                sign(min(abs(dzq(ij,l)),dzqmax(l)),dzq(ij,l))
82        else
83  !   extremum local
84           dzq(ij,l)=0.
85        endif
86     enddo
87
88     DO  l=1,llm
89           sz(ij,l) = dzq(ij,l)*sm(ij,l)
90     ENDDO
91
92   ENDDO
93
94  RETURN
95END SUBROUTINE limz
Note: See TracBrowser for help on using the repository browser.