LMDZ
divgrad_p.F
Go to the documentation of this file.
1  SUBROUTINE divgrad_p (klevel,h, lh, divgra_out )
3  USE times
4  IMPLICIT NONE
5 c
6 c=======================================================================
7 c
8 c Auteur : P. Le Van
9 c ----------
10 c
11 c lh
12 c calcul de (div( grad )) de h .....
13 c h et lh sont des arguments d'entree pour le s-prog
14 c divgra est un argument de sortie pour le s-prog
15 c
16 c=======================================================================
17 c
18 c declarations:
19 c -------------
20 c
21 #include "dimensions.h"
22 #include "paramet.h"
23 #include "comgeom.h"
24 #include "comdissipn.h"
25 #include "logic.h"
26 c
27  INTEGER klevel
28  REAL h( ip1jmp1,klevel ), divgra_out( ip1jmp1,klevel )
29  REAL,SAVE :: divgra( ip1jmp1,llm )
30 
31 c
32  REAL ghy(ip1jm,llm), ghx(ip1jmp1,llm)
33 
34  INTEGER l,ij,iter,lh
35 c
36  INTEGER ijb,ije,jjb,jje
37 c
38 c
39 c CALL SCOPY ( ip1jmp1*klevel,h,1,divgra,1 )
40 
41  ijb=ij_begin
42  ije=ij_end
43 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
44  DO l = 1, klevel
45  divgra(ijb:ije,l)=h(ijb:ije,l)
46  ENDDO
47 c$OMP END DO NOWAIT
48 c
49 
50 c
51  DO 10 iter = 1,lh
52 
53  jjb=jj_begin
54  jje=jj_end
55  CALL filtreg_p ( divgra,jjb,jje,jjp1,klevel,2,1,.true.,1 )
56 
57 c call exchange_Hallo(divgra,ip1jmp1,llm,0,1)
58 c$OMP BARRIER
59 c$OMP MASTER
61  call exchange_hallo(divgra,ip1jmp1,llm,1,1)
63 c$OMP END MASTER
64 c$OMP BARRIER
65  CALL grad_p (klevel,divgra, ghx , ghy )
66 
67 c$OMP BARRIER
68 c$OMP MASTER
70  call exchange_hallo(ghy,ip1jm,llm,1,0)
72 c$OMP END MASTER
73 c$OMP BARRIER
74 
75  CALL diverg_p (klevel, ghx , ghy , divgra )
76 
77  jjb=jj_begin
78  jje=jj_end
79  CALL filtreg_p( divgra,jjb,jje,jjp1,klevel,2,1,.true.,1)
80 
81 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
82  DO 5 l = 1,klevel
83  DO 4 ij = ijb, ije
84  divgra_out( ij,l ) = - cdivh * divgra( ij,l )
85  4 CONTINUE
86  5 CONTINUE
87 c$OMP END DO NOWAIT
88 c
89  10 CONTINUE
90  RETURN
91  END
!$Header llmm1 INTEGER ip1jmp1
Definition: paramet.h:14
subroutine filtreg_p(champ, ibeg, iend, nlat, nbniv, ifiltre, iaire, griscal, iter)
Definition: filtreg_p.F:5
integer, save jj_end
integer, save jj_begin
integer, save ij_end
!$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 exchange_hallo(Field, ij, ll, up, down)
subroutine resume_timer(no_timer)
Definition: times.F90:87
subroutine diverg_p(klevel, x, y, div)
Definition: diverg_p.F:2
!$Header llmm1 INTEGER ip1jm
Definition: paramet.h:14
integer, parameter timer_dissip
Definition: times.F90:9
!$Header jjp1
Definition: paramet.h:14
Definition: times.F90:1
!$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
integer, save ij_begin
subroutine suspend_timer(no_timer)
Definition: times.F90:70
subroutine grad_p(klevel, pg, pgx, pgy)
Definition: grad_p.F:2
subroutine divgrad_p(klevel, h, lh, divgra_out)
Definition: divgrad_p.F:2