- Timestamp:
- Jul 23, 2024, 7:14:34 PM (3 months ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/laplacien_loc.f90
r5104 r5105 1 2 c 3 cP. Le Van4 c 5 c************************************************************6 c.... calcul de (div( grad )) de teta .....7 c************************************************************8 cklevel et teta sont des arguments d'entree pour le s-prog9 cdivgra est un argument de sortie pour le s-prog10 c 11 12 13 14 c 15 16 17 1 SUBROUTINE laplacien_loc ( klevel, teta, divgra ) 2 ! 3 ! P. Le Van 4 ! 5 ! ************************************************************ 6 ! .... calcul de (div( grad )) de teta ..... 7 ! ************************************************************ 8 ! klevel et teta sont des arguments d'entree pour le s-prog 9 ! divgra est un argument de sortie pour le s-prog 10 ! 11 USE parallel_lmdz 12 USE mod_filtreg_p 13 IMPLICIT NONE 14 ! 15 INCLUDE "dimensions.h" 16 INCLUDE "paramet.h" 17 INCLUDE "comgeom.h" 18 18 19 c 20 c......... variables en arguments ..............21 c 22 INTEGERklevel23 REALteta( ijb_u:ije_u,klevel ), divgra( ijb_u:ije_u,klevel )24 25 c 26 c............ variables locales ..............27 c 28 REALghy(ijb_v:ije_v,llm), ghx(ijb_u:ije_u,llm)29 c.......................................................19 ! 20 ! ......... variables en arguments .............. 21 ! 22 INTEGER :: klevel 23 REAL :: teta( ijb_u:ije_u,klevel ), divgra( ijb_u:ije_u,klevel ) 24 INTEGER :: l 25 ! 26 ! ............ variables locales .............. 27 ! 28 REAL :: ghy(ijb_v:ije_v,llm), ghx(ijb_u:ije_u,llm) 29 ! ....................................................... 30 30 31 32 INTEGER :: ijb,ije,jjb,jje33 c34 c CALL SCOPY ( ip1jmp1 * klevel, teta, 1, divgra, 1 )35 31 36 ijb=ij_begin-iip1 37 ije=ij_end+iip1 38 if (pole_nord) ijb=ij_begin 39 if (pole_sud ) ije=ij_end 32 INTEGER :: ijb,ije,jjb,jje 33 ! 34 ! CALL SCOPY ( ip1jmp1 * klevel, teta, 1, divgra, 1 ) 40 35 41 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 42 DO l=1,klevel 43 divgra(ijb:ije,l)=teta(ijb:ije,l) 44 ENDDO 45 c$OMP END DO NOWAIT 46 47 jjb=jj_begin-1 48 jje=jj_end+1 49 if (pole_nord) jjb=jj_begin 50 if (pole_sud ) jje=jj_end 51 52 CALL filtreg_p( divgra,jjb_u,jje_u,jjb,jje,jjp1, 53 & klevel, 2, 1, .TRUE., 1 ) 54 CALL grad_loc ( klevel,divgra, ghx , ghy ) 55 CALL divergf_loc ( klevel, ghx , ghy , divgra ) 36 ijb=ij_begin-iip1 37 ije=ij_end+iip1 38 if (pole_nord) ijb=ij_begin 39 if (pole_sud ) ije=ij_end 56 40 57 RETURN 58 END 41 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 42 DO l=1,klevel 43 divgra(ijb:ije,l)=teta(ijb:ije,l) 44 ENDDO 45 !$OMP END DO NOWAIT 46 47 jjb=jj_begin-1 48 jje=jj_end+1 49 if (pole_nord) jjb=jj_begin 50 if (pole_sud ) jje=jj_end 51 52 CALL filtreg_p( divgra,jjb_u,jje_u,jjb,jje,jjp1, & 53 klevel, 2, 1, .TRUE., 1 ) 54 CALL grad_loc ( klevel,divgra, ghx , ghy ) 55 CALL divergf_loc ( klevel, ghx , ghy , divgra ) 56 57 58 END SUBROUTINE laplacien_loc
Note: See TracChangeset
for help on using the changeset viewer.