Changeset 5246 for LMDZ6/trunk/libf/dyn3d_common/divergst.f90
- Timestamp:
- Oct 21, 2024, 2:58:45 PM (23 hours ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/dyn3d_common/divergst.f90
r5245 r5246 2 2 ! $Header$ 3 3 ! 4 5 6 c 7 cP. Le Van8 c 9 c******************************************************************10 c... calcule la divergence a tous les niveaux d'1 vecteur de compos. x et y...11 cx et y etant des composantes contravariantes ...12 c****************************************************************13 cx et y sont des arguments d'entree pour le s-prog14 cdiv est un argument de sortie pour le s-prog15 c 16 c 17 c-------------------------------------------------------------------18 c 19 20 21 4 SUBROUTINE divergst(klevel,x,y,div) 5 IMPLICIT NONE 6 ! 7 ! P. Le Van 8 ! 9 ! ****************************************************************** 10 ! ... calcule la divergence a tous les niveaux d'1 vecteur de compos. x et y... 11 ! x et y etant des composantes contravariantes ... 12 ! **************************************************************** 13 ! x et y sont des arguments d'entree pour le s-prog 14 ! div est un argument de sortie pour le s-prog 15 ! 16 ! 17 ! ------------------------------------------------------------------- 18 ! 19 INCLUDE "dimensions.h" 20 INCLUDE "paramet.h" 21 INCLUDE "comgeom.h" 22 22 23 INTEGERklevel24 REALx( ip1jmp1,klevel ),y( ip1jm,klevel ),div( ip1jmp1,klevel )25 INTEGERij,l,i26 REALaiy1( iip1 ) , aiy2( iip1 )27 REALsumypn,sumyps23 INTEGER :: klevel 24 REAL :: x( ip1jmp1,klevel ),y( ip1jm,klevel ),div( ip1jmp1,klevel ) 25 INTEGER :: ij,l,i 26 REAL :: aiy1( iip1 ) , aiy2( iip1 ) 27 REAL :: sumypn,sumyps 28 28 29 REALSSUM30 c 31 c 32 DO 10l = 1,klevel33 c 34 DO 1ij = iip2, ip1jm - 135 36 1 CONTINUE37 c 38 c.... correction pour div( 1,j,l) ......39 c.... div(1,j,l)= div(iip1,j,l) ....40 c 41 CDIR$ IVDEP42 DO 3ij = iip2,ip1jm,iip143 44 3 CONTINUE45 c 46 c.... calcul aux poles .....47 c 48 c 49 DO 5i = 1,iim50 51 52 5 CONTINUE53 54 55 DO 7i = 1,iip156 57 58 7 CONTINUE59 c 60 10 CONTINUE61 62 END 29 REAL :: SSUM 30 ! 31 ! 32 DO l = 1,klevel 33 ! 34 DO ij = iip2, ip1jm - 1 35 div( ij + 1, l ) = x(ij+1,l) - x(ij,l)+ y(ij-iim,l)-y(ij+1,l) 36 END DO 37 ! 38 ! .... correction pour div( 1,j,l) ...... 39 ! .... div(1,j,l)= div(iip1,j,l) .... 40 ! 41 !DIR$ IVDEP 42 DO ij = iip2,ip1jm,iip1 43 div( ij,l ) = div( ij + iim,l ) 44 END DO 45 ! 46 ! .... calcul aux poles ..... 47 ! 48 ! 49 DO i = 1,iim 50 aiy1(i)= y(i,l) 51 aiy2(i)= y(i+ip1jmi1,l) 52 END DO 53 sumypn = SSUM ( iim,aiy1,1 ) 54 sumyps = SSUM ( iim,aiy2,1 ) 55 DO i = 1,iip1 56 div( i , l ) = - sumypn/iim 57 div( i + ip1jm, l ) = sumyps/iim 58 END DO 59 ! 60 END DO 61 RETURN 62 END SUBROUTINE divergst
Note: See TracChangeset
for help on using the changeset viewer.