source: LMDZ6/branches/Amaury_dev/libf/dyn3d_common/limx.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: 2.1 KB
RevLine 
[5099]1
[524]2! $Header$
[5099]3
[5105]4SUBROUTINE limx(s0,sx,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  !
[5134]17  INCLUDE "dimensions.h"
18  INCLUDE "paramet.h"
19  INCLUDE "comgeom.h"
[5105]20  !
21  !
22  !   Arguments:
23  !   ----------
[5116]24  REAL :: pente_max
[5105]25  REAL :: s0(ip1jmp1,llm),sm(ip1jmp1,llm)
[5116]26  REAL :: sx(ip1jmp1,llm)
[5105]27  !
28  !  Local
29  !   ---------
30  !
31  INTEGER :: ij,l,j,i,iju,ijq,indu(ip1jmp1),niju
[5116]32  INTEGER :: n0,iadvplus(ip1jmp1,llm),nl(llm)
[5105]33  !
34  REAL :: q(ip1jmp1,llm)
[5116]35  REAL :: dxq(ip1jmp1,llm)
[524]36
37
[5105]38  REAL :: new_m,zm
[5116]39  REAL :: dxqu(ip1jmp1)
40  REAL :: adxqu(ip1jmp1),dxqmax(ip1jmp1)
[524]41
[5105]42  Logical :: extremum,first
43  save first
44  data first/.TRUE./
[524]45
46
[5105]47   DO  l = 1,llm
48     DO  ij=1,ip1jmp1
49           q(ij,l) = s0(ij,l) / sm ( ij,l )
50           dxq(ij,l) = sx(ij,l) /sm(ij,l)
51     ENDDO
52   ENDDO
[524]53
[5105]54  !   calcul de la pente a droite et a gauche de la maille
[524]55
[5105]56  do l = 1, llm
57     do ij=iip2,ip1jm-1
58        dxqu(ij)=q(ij+1,l)-q(ij,l)
59     enddo
60     do ij=iip1+iip1,ip1jm,iip1
61        dxqu(ij)=dxqu(ij-iim)
62     enddo
[524]63
[5105]64     do ij=iip2,ip1jm
65        adxqu(ij)=abs(dxqu(ij))
66     enddo
[524]67
[5105]68  !   calcul de la pente maximum dans la maille en valeur absolue
[524]69
[5105]70     do ij=iip2+1,ip1jm
71        dxqmax(ij)=pente_max*min(adxqu(ij-1),adxqu(ij))
72     enddo
[524]73
[5105]74     do ij=iip1+iip1,ip1jm,iip1
75        dxqmax(ij-iim)=dxqmax(ij)
76     enddo
[524]77
[5105]78  !   calcul de la pente avec limitation
[524]79
[5105]80     do ij=iip2+1,ip1jm
[5116]81        IF(     dxqu(ij-1)*dxqu(ij)>0. &
[5117]82              .AND. dxq(ij,l)*dxqu(ij)>0.) THEN
[5105]83          dxq(ij,l)= &
84                sign(min(abs(dxq(ij,l)),dxqmax(ij)),dxq(ij,l))
85        else
86  !   extremum local
87           dxq(ij,l)=0.
88        endif
89     enddo
90     do ij=iip1+iip1,ip1jm,iip1
91        dxq(ij-iim,l)=dxq(ij,l)
92     enddo
[524]93
[5105]94     DO  ij=1,ip1jmp1
95           sx(ij,l) = dxq(ij,l)*sm(ij,l)
96     ENDDO
[524]97
[5105]98   ENDDO
[524]99
[5105]100  RETURN
101END SUBROUTINE limx
Note: See TracBrowser for help on using the repository browser.