Changeset 5105 for LMDZ6/branches/Amaury_dev/libf/dyn3dmem/dudv1_loc.f90
- Timestamp:
- Jul 23, 2024, 7:14:34 PM (8 weeks ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/dudv1_loc.f90
r5104 r5105 1 2 3 4 c 5 c-----------------------------------------------------------------------6 c 7 cAuteur: P. Le Van8 c-------9 c 10 cObjet:11 c------12 ccalcul du terme de rotation13 cce terme est ajoute a d(ucov)/dt et a d(vcov)/dt ..14 cvorpot, pbaru et pbarv sont des arguments d'entree pour le s-pg ..15 cdu et dv sont des arguments de sortie pour le s-pg ..16 c 17 c-----------------------------------------------------------------------1 SUBROUTINE dudv1_loc ( vorpot, pbaru, pbarv, du, dv ) 2 USE parallel_lmdz 3 IMPLICIT NONE 4 ! 5 !----------------------------------------------------------------------- 6 ! 7 ! Auteur: P. Le Van 8 ! ------- 9 ! 10 ! Objet: 11 ! ------ 12 ! calcul du terme de rotation 13 ! ce terme est ajoute a d(ucov)/dt et a d(vcov)/dt .. 14 ! vorpot, pbaru et pbarv sont des arguments d'entree pour le s-pg .. 15 ! du et dv sont des arguments de sortie pour le s-pg .. 16 ! 17 !----------------------------------------------------------------------- 18 18 19 20 19 INCLUDE "dimensions.h" 20 INCLUDE "paramet.h" 21 21 22 REAL vorpot( ijb_v:ije_v,llm ) ,pbaru( ijb_u:ije_u,llm ) ,23 *pbarv( ijb_v:ije_v,llm )24 REALdu( ijb_u:ije_u,llm ) ,dv( ijb_v:ije_v,llm )25 INTEGERl,ij,ijb,ije26 c 27 c 28 29 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 30 31 c 32 33 34 35 36 37 38 39 du( ij,l ) = 0.125 *( vorpot(ij-iip1, l) + vorpot( ij, l) ) *40 * ( pbarv(ij-iip1, l) + pbarv(ij-iim, l) +41 *pbarv( ij , l) + pbarv(ij+ 1 , l) )42 43 44 45 c 46 47 48 49 dv( ij+1,l ) = - 0.125 *( vorpot(ij, l) + vorpot(ij+1, l) ) *50 * ( pbaru(ij, l) + pbaru(ij+1 , l) +51 *pbaru(ij+iip1, l) + pbaru(ij+iip2, l) )52 53 c 54 c.... correction pour dv( 1,j,l ) .....55 c.... dv(1,j,l)= dv(iip1,j,l) ....56 c 57 CDIR$ IVDEP58 59 60 61 c 62 63 c$OMP END DO NOWAIT64 RETURN 65 END 22 REAL :: vorpot( ijb_v:ije_v,llm ) ,pbaru( ijb_u:ije_u,llm ) , & 23 pbarv( ijb_v:ije_v,llm ) 24 REAL :: du( ijb_u:ije_u,llm ) ,dv( ijb_v:ije_v,llm ) 25 INTEGER :: l,ij,ijb,ije 26 ! 27 ! 28 29 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 30 DO l = 1,llm 31 ! 32 ijb=ij_begin 33 ije=ij_end 34 35 if (pole_nord) ijb=ij_begin+iip1 36 if (pole_sud) ije=ij_end-iip1 37 38 DO ij = ijb, ije-1 39 du( ij,l ) = 0.125 *( vorpot(ij-iip1, l) + vorpot( ij, l) ) * & 40 ( pbarv(ij-iip1, l) + pbarv(ij-iim, l) + & 41 pbarv( ij , l) + pbarv(ij+ 1 , l) ) 42 END DO 43 44 45 ! 46 if (pole_nord) ijb=ij_begin 47 48 DO ij = ijb, ije-1 49 dv( ij+1,l ) = - 0.125 *( vorpot(ij, l) + vorpot(ij+1, l) ) * & 50 ( pbaru(ij, l) + pbaru(ij+1 , l) + & 51 pbaru(ij+iip1, l) + pbaru(ij+iip2, l) ) 52 END DO 53 ! 54 ! .... correction pour dv( 1,j,l ) ..... 55 ! .... dv(1,j,l)= dv(iip1,j,l) .... 56 ! 57 !DIR$ IVDEP 58 DO ij = ijb, ije, iip1 59 dv( ij,l ) = dv( ij + iim, l ) 60 END DO 61 ! 62 END DO 63 !$OMP END DO NOWAIT 64 65 END SUBROUTINE dudv1_loc
Note: See TracChangeset
for help on using the changeset viewer.