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

Last change on this file since 5134 was 5134, checked in by abarral, 4 months ago

Replace academic.h, alpale.h, comdissip.h, comdissipn.h, comdissnew.h by modules
Remove unused clesph0.h

  • 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  IMPLICIT NONE
16  !
17  INCLUDE "dimensions.h"
18  INCLUDE "paramet.h"
19  INCLUDE "comgeom.h"
20  !
21  !
22  !   Arguments:
23  !   ----------
24  REAL :: pente_max
25  REAL :: s0(ip1jmp1,llm),sm(ip1jmp1,llm)
26  REAL :: sz(ip1jmp1,llm)
27  !
28  !  Local
29  !   ---------
30  !
31  INTEGER :: ij,l,j,i,iju,ijq,indu(ip1jmp1),niju
32  INTEGER :: n0,iadvplus(ip1jmp1,llm),nl(llm)
33  !
34  REAL :: q(ip1jmp1,llm)
35  REAL :: dzq(ip1jmp1,llm)
36
37
38  REAL :: new_m,zm
39  REAL :: dzqw(ip1jmp1)
40  REAL :: adzqw(ip1jmp1),dzqmax(ip1jmp1)
41
42  Logical :: extremum,first
43  save first
44
45  data first/.TRUE./
46
47
48   DO  l = 1,llm
49     DO  ij=1,ip1jmp1
50           q(ij,l) = s0(ij,l) / sm ( ij,l )
51           dzq(ij,l) = sz(ij,l) /sm(ij,l)
52     ENDDO
53   ENDDO
54
55  !   calcul de la pente en haut et en bas de la maille
56   do ij=1,ip1jmp1
57   do l = 1, llm-1
58        dzqw(l)=q(ij,l+1)-q(ij,l)
59     enddo
60        dzqw(llm)=0.
61
62     do  l=1,llm
63        adzqw(l)=abs(dzqw(l))
64     enddo
65
66  !   calcul de la pente maximum dans la maille en valeur absolue
67
68     do l=2,llm-1
69        dzqmax(l)=pente_max*min(adzqw(l-1),adzqw(l))
70     enddo
71
72  !   calcul de la pente avec limitation
73
74     do l=2,llm-1
75        IF(     dzqw(l-1)*dzqw(l)>0. &
76              .AND. dzq(ij,l)*dzqw(l)>0.) THEN
77          dzq(ij,l)= &
78                sign(min(abs(dzq(ij,l)),dzqmax(l)),dzq(ij,l))
79        else
80  !   extremum local
81           dzq(ij,l)=0.
82        endif
83     enddo
84
85     DO  l=1,llm
86           sz(ij,l) = dzq(ij,l)*sm(ij,l)
87     ENDDO
88
89   ENDDO
90
91  RETURN
92END SUBROUTINE limz
Note: See TracBrowser for help on using the repository browser.