Changeset 2336 for LMDZ5/trunk/libf/dyn3dmem/massbarxy_loc.F90
- Timestamp:
- Jul 31, 2015, 7:22:21 PM (9 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/dyn3dmem/massbarxy_loc.F90
r2335 r2336 1 SUBROUTINE massbarxy_loc( masse, massebxy ) 2 USE parallel_lmdz 3 implicit none 4 c ********************************************************************** 5 c 6 c Calcule les moyennes en x et y de la masse d'air dans chaque maille. 7 c ********************************************************************** 8 c Auteurs : P. Le Van , Fr. Hourdin . 9 c .......... 10 c 11 c .. masse est un argum. d'entree pour le s-pg ... 12 c .. massebxy est un argum. de sortie pour le s-pg ... 13 c 14 c 15 c IMPLICIT NONE 16 c 17 #include "dimensions.h" 18 #include "paramet.h" 19 #include "comconst.h" 20 #include "comgeom.h" 21 c 22 REAL masse( ijb_u:ije_u,llm ), massebxy( ijb_v:ije_v,llm ) 23 c 24 INTEGER ij,l,ijb,ije 1 SUBROUTINE massbarxy_loc(masse,massebxy) 2 ! 3 !------------------------------------------------------------------------------- 4 ! Authors: P. Le Van , Fr. Hourdin. 5 !------------------------------------------------------------------------------- 6 ! Purpose: Compute air mass mean along X and Y in each cell. 7 ! See iniconst for more details. 8 USE parallel_lmdz 9 IMPLICIT NONE 10 include "dimensions.h" 11 include "paramet.h" 12 include "comconst.h" 13 include "comgeom.h" 14 !=============================================================================== 15 ! Arguments: 16 REAL, INTENT(IN) :: masse (ijb_u:ije_u,llm) 17 REAL, INTENT(OUT) :: massebxy(ijb_v:ije_v,llm) 18 !=============================================================================== 19 ! Local variables: 20 INTEGER :: ij, l, ijb, ije 21 !=============================================================================== 22 ijb=ij_begin-iip1 23 ije=ij_end 24 IF(pole_nord) ijb=ijb+iip1 25 IF(pole_sud) ije=ije-iip1 26 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 27 DO l=1,llm 28 DO ij=ijb,ije-1 29 massebxy(ij,l)=masse(ij ,l)*alpha2(ij ) + & 30 + masse(ij+1 ,l)*alpha3(ij+1 ) + & 31 + masse(ij+iip1,l)*alpha1(ij+iip1) + & 32 + masse(ij+iip2,l)*alpha4(ij+iip2) 33 END DO 34 DO ij=ijb+iip1-1,ije+iip1-1,iip1; massebxy(ij,l)=massebxy(ij-iim,l); END DO 35 END DO 36 !$OMP END DO NOWAIT 25 37 26 27 ijb=ij_begin-iip1 28 ije=ij_end 29 30 if (pole_nord) ijb=ijb+iip1 31 if (pole_sud) ije=ije-iip1 38 END SUBROUTINE massbarxy_loc 32 39 33 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)34 DO 100 l = 1 , llm35 c36 DO 5 ij = ijb, ije - 137 massebxy( ij,l ) = masse( ij ,l ) * alpha2( ij ) +38 + masse( ij+1 ,l ) * alpha3( ij+1 ) +39 + masse( ij+iip1,l ) * alpha1( ij+iip1 ) +40 + masse( ij+iip2,l ) * alpha4( ij+iip2 )41 5 CONTINUE42 43 c .... correction pour massebxy( iip1,j ) ........44 45 CDIR$ IVDEP46 47 DO 7 ij = ijb+iip1-1, ije+iip1-1, iip148 massebxy( ij,l ) = massebxy( ij - iim,l )49 7 CONTINUE50 51 100 CONTINUE52 c$OMP END DO NOWAIT53 c54 RETURN55 END
Note: See TracChangeset
for help on using the changeset viewer.