Changeset 5246 for LMDZ6/trunk/libf/dyn3dmem/laplacien_gam_loc.f90
- Timestamp:
- Oct 21, 2024, 2:58:45 PM (23 hours ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/dyn3dmem/laplacien_gam_loc.f90
r5245 r5246 1 SUBROUTINE laplacien_gam_loc ( klevel, cuvsga, cvusga, unsaigam, 2 *unsapolnga, unsapolsga, teta, divgra )1 SUBROUTINE laplacien_gam_loc ( klevel, cuvsga, cvusga, unsaigam, & 2 unsapolnga, unsapolsga, teta, divgra ) 3 3 4 cP. Le Van5 c 6 c************************************************************7 c 8 c.... calcul de (div( grad )) de teta .....9 c************************************************************10 cklevel et teta sont des arguments d'entree pour le s-prog11 cdivgra est un argument de sortie pour le s-prog12 c 13 14 15 c 16 17 18 4 ! P. Le Van 5 ! 6 ! ************************************************************ 7 ! 8 ! .... calcul de (div( grad )) de teta ..... 9 ! ************************************************************ 10 ! klevel et teta sont des arguments d'entree pour le s-prog 11 ! divgra est un argument de sortie pour le s-prog 12 ! 13 USE parallel_lmdz 14 IMPLICIT NONE 15 ! 16 INCLUDE "dimensions.h" 17 INCLUDE "paramet.h" 18 INCLUDE "comgeom.h" 19 19 20 c 21 c............ variables en arguments ..........22 c 23 INTEGERklevel24 REALteta( ijb_u:ije_u,klevel ), divgra( ijb_u:ije_u,klevel )25 REALcuvsga(ip1jm) , cvusga( ip1jmp1 )26 REALunsaigam(ip1jmp1)27 REALunsapolnga, unsapolsga28 c 29 c........... variables locales .................30 c 31 REALghy(ijb_v:ije_v,llm), ghx(ijb_u:ije_u,llm)32 c......................................................20 ! 21 ! ............ variables en arguments .......... 22 ! 23 INTEGER :: klevel 24 REAL :: teta( ijb_u:ije_u,klevel ), divgra( ijb_u:ije_u,klevel ) 25 REAL :: cuvsga(ip1jm) , cvusga( ip1jmp1 ) 26 REAL :: unsaigam(ip1jmp1) 27 REAL :: unsapolnga, unsapolsga 28 ! 29 ! ........... variables locales ................. 30 ! 31 REAL :: ghy(ijb_v:ije_v,llm), ghx(ijb_u:ije_u,llm) 32 ! ...................................................... 33 33 34 35 INTEGER :: l36 c 37 c 38 c... cvuscugam = ( cvu/ cu ) ** (- gamdissip )39 c... cuvscvgam = ( cuv/ cv ) ** (- gamdissip ) calcules dans inigeom ..40 c... unsairegam = 1. / aire ** (- gamdissip )41 c 34 INTEGER :: ijb,ije 35 INTEGER :: l 36 ! 37 ! 38 ! ... cvuscugam = ( cvu/ cu ) ** (- gamdissip ) 39 ! ... cuvscvgam = ( cuv/ cv ) ** (- gamdissip ) calcules dans inigeom .. 40 ! ... unsairegam = 1. / aire ** (- gamdissip ) 41 ! 42 42 43 c CALL SCOPY ( ip1jmp1 * klevel, teta, 1, divgra, 1 ) 44 45 ijb=ij_begin-iip1 46 ije=ij_end+iip1 47 if (pole_nord) ijb=ij_begin 48 if (pole_sud ) ije=ij_end 49 50 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 51 DO l=1,klevel 52 divgra(ijb:ije,l)=teta(ijb:ije,l) 53 ENDDO 54 c$OMP END DO NOWAIT 43 ! CALL SCOPY ( ip1jmp1 * klevel, teta, 1, divgra, 1 ) 55 44 56 c 57 CALL grad_loc ( klevel, divgra, ghx, ghy ) 58 c 59 CALL diverg_gam_loc ( klevel, cuvsga, cvusga, unsaigam , 60 * unsapolnga, unsapolsga, ghx , ghy , divgra ) 45 ijb=ij_begin-iip1 46 ije=ij_end+iip1 47 if (pole_nord) ijb=ij_begin 48 if (pole_sud ) ije=ij_end 61 49 62 c 50 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 51 DO l=1,klevel 52 divgra(ijb:ije,l)=teta(ijb:ije,l) 53 ENDDO 54 !$OMP END DO NOWAIT 63 55 64 RETURN 65 END 56 ! 57 CALL grad_loc ( klevel, divgra, ghx, ghy ) 58 ! 59 CALL diverg_gam_loc ( klevel, cuvsga, cvusga, unsaigam , & 60 unsapolnga, unsapolsga, ghx , ghy , divgra ) 61 62 ! 63 64 RETURN 65 END SUBROUTINE laplacien_gam_loc
Note: See TracChangeset
for help on using the changeset viewer.