LMDZ
limz.F
Go to the documentation of this file.
1 !
2 ! $Header$
3 !
4  SUBROUTINE limz(s0,sz,sm,pente_max)
5 c
6 c Auteurs: P.Le Van, F.Hourdin, F.Forget
7 c
8 c ********************************************************************
9 c Shema d'advection " pseudo amont " .
10 c ********************************************************************
11 c nq,iq,q,pbaru,pbarv,w sont des arguments d'entree pour le s-pg ....
12 c
13 c
14 c --------------------------------------------------------------------
15  IMPLICIT NONE
16 c
17 #include "dimensions.h"
18 #include "paramet.h"
19 #include "logic.h"
20 #include "comvert.h"
21 #include "comconst.h"
22 #include "comgeom.h"
23 c
24 c
25 c Arguments:
26 c ----------
27  real pente_max
28  REAL s0(ip1jmp1,llm),sm(ip1jmp1,llm)
29  real sz(ip1jmp1,llm)
30 c
31 c Local
32 c ---------
33 c
34  INTEGER ij,l,j,i,iju,ijq,indu(ip1jmp1),niju
35  integer n0,iadvplus(ip1jmp1,llm),nl(llm)
36 c
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, ismin,ismax
51 
52  data first/.true./
53 
54 
55  DO l = 1,llm
56  DO ij=1,ip1jmp1
57  q(ij,l) = s0(ij,l) / sm( ij,l )
58  dzq(ij,l) = sz(ij,l) /sm(ij,l)
59  ENDDO
60  ENDDO
61 
62 c calcul de la pente en haut et en bas de la maille
63  do ij=1,ip1jmp1
64  do l = 1, llm-1
65  dzqw(l)=q(ij,l+1)-q(ij,l)
66  enddo
67  dzqw(llm)=0.
68 
69  do l=1,llm
70  adzqw(l)=abs(dzqw(l))
71  enddo
72 
73 c calcul de la pente maximum dans la maille en valeur absolue
74 
75  do l=2,llm-1
76  dzqmax(l)=pente_max*min(adzqw(l-1),adzqw(l))
77  enddo
78 
79 c calcul de la pente avec limitation
80 
81  do l=2,llm-1
82  if( dzqw(l-1)*dzqw(l).gt.0.
83  & .and. dzq(ij,l)*dzqw(l).gt.0.) then
84  dzq(ij,l)=
85  & sign(min(abs(dzq(ij,l)),dzqmax(l)),dzq(ij,l))
86  else
87 c extremum local
88  dzq(ij,l)=0.
89  endif
90  enddo
91 
92  DO l=1,llm
93  sz(ij,l) = dzq(ij,l)*sm(ij,l)
94  ENDDO
95 
96  ENDDO
97 
98  RETURN
99  END
!$Header llmm1 INTEGER ip1jmp1
Definition: paramet.h:14
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd w_profd omega_profd!do llm!print llm l llm
subroutine limz(s0, sz, sm, pente_max)
Definition: limz.F:5
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true