source: LMDZ6/trunk/libf/dyn3d_common/limz.f90 @ 5456

Last change on this file since 5456 was 5285, checked in by abarral, 2 months ago

As discussed internally, remove generic ONLY: ... for new _mod_h 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: 2.0 KB
RevLine 
[524]1!
2! $Header$
3!
[5246]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  !   --------------------------------------------------------------------
[5281]15  USE comgeom_mod_h
[5271]16  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
[5285]17USE paramet_mod_h
[5271]18IMPLICIT NONE
[5246]19  !
[5271]20
[5272]21
[5246]22  !
23  !
24  !   Arguments:
25  !   ----------
26  real :: pente_max
27  REAL :: s0(ip1jmp1,llm),sm(ip1jmp1,llm)
28  real :: sz(ip1jmp1,llm)
29  !
30  !  Local
31  !   ---------
32  !
33  INTEGER :: ij,l,j,i,iju,ijq,indu(ip1jmp1),niju
34  integer :: n0,iadvplus(ip1jmp1,llm),nl(llm)
35  !
36  REAL :: q(ip1jmp1,llm)
37  real :: dzq(ip1jmp1,llm)
[524]38
39
[5246]40  REAL :: new_m,zm
41  real :: dzqw(ip1jmp1)
42  real :: adzqw(ip1jmp1),dzqmax(ip1jmp1)
[524]43
[5246]44  Logical :: extremum,first
45  save first
[524]46
[5246]47  REAL :: SSUM,CVMGP,CVMGT
48  integer :: ismax,ismin
49  EXTERNAL  SSUM, ismin,ismax
[524]50
[5246]51  data first/.true./
[524]52
53
[5246]54   DO  l = 1,llm
55     DO  ij=1,ip1jmp1
56           q(ij,l) = s0(ij,l) / sm ( ij,l )
57           dzq(ij,l) = sz(ij,l) /sm(ij,l)
58     ENDDO
59   ENDDO
[524]60
[5246]61  !   calcul de la pente en haut et en bas de la maille
62   do ij=1,ip1jmp1
63   do l = 1, llm-1
64        dzqw(l)=q(ij,l+1)-q(ij,l)
65     enddo
66        dzqw(llm)=0.
[524]67
[5246]68     do  l=1,llm
69        adzqw(l)=abs(dzqw(l))
70     enddo
[524]71
[5246]72  !   calcul de la pente maximum dans la maille en valeur absolue
[524]73
[5246]74     do l=2,llm-1
75        dzqmax(l)=pente_max*min(adzqw(l-1),adzqw(l))
76     enddo
[524]77
[5246]78  !   calcul de la pente avec limitation
[524]79
[5246]80     do l=2,llm-1
81        if(     dzqw(l-1)*dzqw(l).gt.0. &
82              .and. dzq(ij,l)*dzqw(l).gt.0.) then
83          dzq(ij,l)= &
84                sign(min(abs(dzq(ij,l)),dzqmax(l)),dzq(ij,l))
85        else
86  !   extremum local
87           dzq(ij,l)=0.
88        endif
89     enddo
[524]90
[5246]91     DO  l=1,llm
92           sz(ij,l) = dzq(ij,l)*sm(ij,l)
93     ENDDO
[524]94
[5246]95   ENDDO
[524]96
[5246]97  RETURN
98END SUBROUTINE limz
Note: See TracBrowser for help on using the repository browser.