Changeset 5119 for LMDZ6/branches/Amaury_dev/libf/dyn3d_common/gradiv2.f90
- Timestamp:
- Jul 24, 2024, 6:46:45 PM (2 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/gradiv2.f90
r5106 r5119 1 2 1 ! $Header$ 3 2 4 SUBROUTINE gradiv2(klevel, xcov, ycov, ld, gdx, gdy 3 SUBROUTINE gradiv2(klevel, xcov, ycov, ld, gdx, gdy) 5 4 ! 6 5 ! P. Le Van … … 17 16 ! 18 17 USE lmdz_filtreg, ONLY: filtreg 18 USE lmdz_ssum_scopy, ONLY: scopy 19 19 20 IMPLICIT NONE 20 21 ! … … 27 28 28 29 INTEGER :: klevel 29 REAL :: xcov( ip1jmp1,klevel ), ycov( ip1jm,klevel)30 REAL :: gdx( ip1jmp1,klevel ), gdy( ip1jm,klevel)30 REAL :: xcov(ip1jmp1, klevel), ycov(ip1jm, klevel) 31 REAL :: gdx(ip1jmp1, klevel), gdy(ip1jm, klevel) 31 32 ! 32 33 ! ........ variables locales ......... 33 34 ! 34 REAL :: div(ip1jmp1, llm)35 REAL :: div(ip1jmp1, llm) 35 36 REAL :: signe, nugrads 36 INTEGER :: l, ij,iter,ld37 INTEGER :: l, ij, iter, ld 37 38 38 39 ! ........................................................ 39 40 ! 40 41 ! 41 CALL SCOPY( ip1jmp1 * klevel, xcov, 1, gdx, 1)42 CALL SCOPY( ip1jm * klevel, ycov, 1, gdy, 1)42 CALL SCOPY(ip1jmp1 * klevel, xcov, 1, gdx, 1) 43 CALL SCOPY(ip1jm * klevel, ycov, 1, gdy, 1) 43 44 ! 44 45 ! 45 signe 46 signe = (-1.)**ld 46 47 nugrads = signe * cdivu 47 48 ! 48 49 50 CALL divergf(klevel, gdx, gdy, div) 49 51 50 CALL divergf( klevel, gdx, gdy , div )52 IF(ld>1) THEN 51 53 52 IF( ld>1 ) THEN54 CALL laplacien (klevel, div, div) 53 55 54 CALL laplacien ( klevel, div, div )56 ! ...... Iteration de l'operateur laplacien_gam ....... 55 57 56 ! ...... Iteration de l'operateur laplacien_gam ....... 57 58 DO iter = 1, ld -2 59 CALL laplacien_gam ( klevel,cuvscvgam1,cvuscugam1,unsair_gam1, & 60 unsapolnga1, unsapolsga1, div, div ) 58 DO iter = 1, ld - 2 59 CALL laplacien_gam (klevel, cuvscvgam1, cvuscugam1, unsair_gam1, & 60 unsapolnga1, unsapolsga1, div, div) 61 61 ENDDO 62 62 63 63 ENDIF 64 64 65 66 CALL filtreg( div , jjp1, klevel, 2, 1, .TRUE., 1 ) 67 CALL grad ( klevel, div, gdx, gdy ) 65 CALL filtreg(div, jjp1, klevel, 2, 1, .TRUE., 1) 66 CALL grad (klevel, div, gdx, gdy) 68 67 69 68 ! 70 71 72 gdx( ij,l ) = gdx( ij,l) * nugrads73 74 75 gdy( ij,l ) = gdy( ij,l) * nugrads76 77 69 DO l = 1, klevel 70 DO ij = 1, ip1jmp1 71 gdx(ij, l) = gdx(ij, l) * nugrads 72 ENDDO 73 DO ij = 1, ip1jm 74 gdy(ij, l) = gdy(ij, l) * nugrads 75 ENDDO 76 ENDDO 78 77 ! 79 78 RETURN 80 79 END SUBROUTINE gradiv2
Note: See TracChangeset
for help on using the changeset viewer.