Changeset 5119 for LMDZ6/branches/Amaury_dev/libf/dyn3d_common
- Timestamp:
- Jul 24, 2024, 6:46:45 PM (4 months ago)
- Location:
- LMDZ6/branches/Amaury_dev/libf/dyn3d_common
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/com_io_dyn_mod.F90
r5116 r5119 29 29 INTEGER :: histuaveid 30 30 31 end modulecom_io_dyn_mod31 END MODULE com_io_dyn_mod -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/divgrad.f90
r5106 r5119 1 2 1 ! $Header$ 3 2 4 SUBROUTINE divgrad(klevel, h, lh, divgra)3 SUBROUTINE divgrad(klevel, h, lh, divgra) 5 4 USE lmdz_filtreg, ONLY: filtreg 5 USE lmdz_ssum_scopy, ONLY: scopy 6 6 IMPLICIT NONE 7 7 ! … … 27 27 ! 28 28 INTEGER :: klevel 29 REAL :: h( ip1jmp1,klevel ), divgra( ip1jmp1,klevel)29 REAL :: h(ip1jmp1, klevel), divgra(ip1jmp1, klevel) 30 30 ! 31 REAL :: ghy(ip1jm, llm), ghx(ip1jmp1,llm)31 REAL :: ghy(ip1jm, llm), ghx(ip1jmp1, llm) 32 32 33 INTEGER :: l, ij,iter,lh33 INTEGER :: l, ij, iter, lh 34 34 ! 35 35 ! 36 36 ! 37 CALL SCOPY ( ip1jmp1*klevel,h,1,divgra,1)37 CALL SCOPY (ip1jmp1 * klevel, h, 1, divgra, 1) 38 38 ! 39 DO iter = 1, lh39 DO iter = 1, lh 40 40 41 CALL filtreg ( divgra,jjp1,klevel,2,1,.TRUE.,1)41 CALL filtreg (divgra, jjp1, klevel, 2, 1, .TRUE., 1) 42 42 43 CALL grad (klevel,divgra, ghx , ghy)44 CALL diverg (klevel, ghx , ghy , divgra)43 CALL grad (klevel, divgra, ghx, ghy) 44 CALL diverg (klevel, ghx, ghy, divgra) 45 45 46 CALL filtreg ( divgra,jjp1,klevel,2,1,.TRUE.,1)46 CALL filtreg (divgra, jjp1, klevel, 2, 1, .TRUE., 1) 47 47 48 DO l = 1,klevel49 DO ij = 1, ip1jmp150 divgra( ij,l ) = - cdivh * divgra( ij,l)51 END DO52 END DO53 !48 DO l = 1, klevel 49 DO ij = 1, ip1jmp1 50 divgra(ij, l) = - cdivh * divgra(ij, l) 51 END DO 52 END DO 53 ! 54 54 END DO 55 55 RETURN -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/divgrad2.f90
r5106 r5119 1 2 1 ! $Header$ 3 2 4 SUBROUTINE divgrad2( klevel, h, deltapres, lh, divgra)3 SUBROUTINE divgrad2(klevel, h, deltapres, lh, divgra) 5 4 ! 6 5 ! P. Le Van … … 13 12 ! divgra est un argument de sortie pour le s-prg 14 13 ! 14 USE lmdz_ssum_scopy, ONLY: scopy 15 15 16 IMPLICIT NONE 16 17 ! … … 23 24 ! 24 25 INTEGER :: klevel 25 REAL :: h( ip1jmp1,klevel ), deltapres( ip1jmp1,klevel)26 REAL :: divgra( ip1jmp1,klevel)26 REAL :: h(ip1jmp1, klevel), deltapres(ip1jmp1, klevel) 27 REAL :: divgra(ip1jmp1, klevel) 27 28 ! 28 29 ! ....... variables locales .......... 29 30 ! 30 REAL :: signe, nudivgrs, sqrtps( ip1jmp1,llm)31 INTEGER :: l, ij,iter,lh31 REAL :: signe, nudivgrs, sqrtps(ip1jmp1, llm) 32 INTEGER :: l, ij, iter, lh 32 33 ! ................................................................... 33 34 34 35 ! 35 signe 36 signe = (-1.)**lh 36 37 nudivgrs = signe * cdivh 37 38 38 CALL SCOPY ( ip1jmp1 * klevel, h, 1, divgra, 1)39 CALL SCOPY (ip1jmp1 * klevel, h, 1, divgra, 1) 39 40 40 41 ! 41 CALL laplacien( klevel, divgra, divgra)42 CALL laplacien(klevel, divgra, divgra) 42 43 43 44 DO l = 1, klevel 44 DO ij = 1, ip1jmp145 sqrtps( ij,l ) = SQRT( deltapres(ij,l))46 ENDDO45 DO ij = 1, ip1jmp1 46 sqrtps(ij, l) = SQRT(deltapres(ij, l)) 47 ENDDO 47 48 ENDDO 48 49 ! 49 50 DO l = 1, klevel 50 51 DO ij = 1, ip1jmp1 51 divgra(ij,l) = divgra(ij,l) * sqrtps(ij,l)52 divgra(ij, l) = divgra(ij, l) * sqrtps(ij, l) 52 53 ENDDO 53 54 ENDDO … … 56 57 ! 57 58 DO iter = 1, lh - 2 58 CALL laplacien_gam ( klevel,cuvscvgam2,cvuscugam2,unsair_gam2, &59 unsapolnga2, unsapolsga2, divgra, divgra)59 CALL laplacien_gam (klevel, cuvscvgam2, cvuscugam2, unsair_gam2, & 60 unsapolnga2, unsapolsga2, divgra, divgra) 60 61 ENDDO 61 62 ! … … 64 65 DO l = 1, klevel 65 66 DO ij = 1, ip1jmp1 66 divgra(ij, l) = divgra(ij,l) * sqrtps(ij,l)67 divgra(ij, l) = divgra(ij, l) * sqrtps(ij, l) 67 68 ENDDO 68 69 ENDDO 69 70 ! 70 CALL laplacien ( klevel, divgra, divgra)71 CALL laplacien (klevel, divgra, divgra) 71 72 ! 72 DO l = 1,klevel73 DO ij = 1,ip1jmp174 divgra(ij,l) = nudivgrs * divgra(ij,l) / deltapres(ij,l)75 ENDDO73 DO l = 1, klevel 74 DO ij = 1, ip1jmp1 75 divgra(ij, l) = nudivgrs * divgra(ij, l) / deltapres(ij, l) 76 ENDDO 76 77 ENDDO 77 78 -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/exner_hyb_m.F90
r5117 r5119 3 3 IMPLICIT NONE 4 4 5 contains 5 CONTAINS 6 6 7 7 SUBROUTINE exner_hyb( ngrid, ps, p, pks, pk, pkf ) … … 145 145 END SUBROUTINE exner_hyb 146 146 147 end moduleexner_hyb_m147 END MODULE exner_hyb_m -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/exner_milieu_m.F90
r5117 r5119 3 3 IMPLICIT NONE 4 4 5 contains 5 CONTAINS 6 6 7 7 SUBROUTINE exner_milieu( ngrid, ps, p, pks, pk, pkf ) … … 124 124 END SUBROUTINE exner_milieu 125 125 126 end moduleexner_milieu_m126 END MODULE exner_milieu_m -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/fxhyp_m.F90
r5117 r5119 3 3 IMPLICIT NONE 4 4 5 contains 5 CONTAINS 6 6 7 7 SUBROUTINE fxhyp(xprimm025, rlonv, xprimv, rlonu, xprimu, xprimp025) … … 246 246 END SUBROUTINE fxhyp 247 247 248 end modulefxhyp_m248 END MODULE fxhyp_m -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/fyhyp_m.F90
r5117 r5119 3 3 IMPLICIT NONE 4 4 5 contains 5 CONTAINS 6 6 7 7 SUBROUTINE fyhyp(rlatu, yyprimu, rlatv, rlatu2, yprimu2, rlatu1, yprimu1) … … 338 338 END SUBROUTINE fyhyp 339 339 340 end modulefyhyp_m340 END MODULE fyhyp_m -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/gr_u_scal.f90
r5105 r5119 1 2 1 ! $Header$ 3 2 4 SUBROUTINE gr_u_scal(nx, x_u,x_scal)3 SUBROUTINE gr_u_scal(nx, x_u, x_scal) 5 4 !%W% %G% 6 5 !======================================================================= … … 25 24 ! 26 25 !======================================================================= 26 USE lmdz_ssum_scopy, ONLY: scopy 27 27 28 IMPLICIT NONE 28 29 !----------------------------------------------------------------------- … … 38 39 39 40 INTEGER :: nx 40 REAL :: x_u(ip1jmp1, nx),x_scal(ip1jmp1,nx)41 REAL :: x_u(ip1jmp1, nx), x_scal(ip1jmp1, nx) 41 42 42 43 ! Local: 43 44 ! ------ 44 45 45 INTEGER :: l, ij46 INTEGER :: l, ij 46 47 47 48 !----------------------------------------------------------------------- 48 49 49 DO l =1,nx50 DO ij=ip1jmp1,2,-151 x_scal(ij,l)= &52 (aireu(ij) *x_u(ij,l)+aireu(ij-1)*x_u(ij-1,l)) &53 /(aireu(ij)+aireu(ij-1))54 50 DO l = 1, nx 51 DO ij = ip1jmp1, 2, -1 52 x_scal(ij, l) = & 53 (aireu(ij) * x_u(ij, l) + aireu(ij - 1) * x_u(ij - 1, l)) & 54 / (aireu(ij) + aireu(ij - 1)) 55 ENDDO 55 56 ENDDO 56 57 57 CALL SCOPY(nx *jjp1,x_scal(iip1,1),iip1,x_scal(1,1),iip1)58 CALL SCOPY(nx * jjp1, x_scal(iip1, 1), iip1, x_scal(1, 1), iip1) 58 59 59 60 RETURN -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/gradiv.f90
r5106 r5119 1 2 1 ! $Header$ 3 2 4 SUBROUTINE gradiv(klevel, xcov, ycov, ld, gdx, gdy 3 SUBROUTINE gradiv(klevel, xcov, ycov, ld, gdx, gdy) 5 4 ! 6 5 ! Auteur : P. Le Van … … 18 17 ! 19 18 USE lmdz_filtreg, ONLY: filtreg 19 USE lmdz_ssum_scopy, ONLY: scopy 20 20 21 IMPLICIT NONE 21 22 ! … … 26 27 INTEGER :: klevel 27 28 ! 28 REAL :: xcov( ip1jmp1,klevel ), ycov( ip1jm,klevel)29 REAL :: gdx( ip1jmp1,klevel ), gdy( ip1jm,klevel)29 REAL :: xcov(ip1jmp1, klevel), ycov(ip1jm, klevel) 30 REAL :: gdx(ip1jmp1, klevel), gdy(ip1jm, klevel) 30 31 31 REAL :: div(ip1jmp1, llm)32 REAL :: div(ip1jmp1, llm) 32 33 33 INTEGER :: l, ij,iter,ld34 INTEGER :: l, ij, iter, ld 34 35 ! 35 36 ! 36 37 ! 37 CALL SCOPY( ip1jmp1*klevel,xcov,1,gdx,1)38 CALL SCOPY( ip1jm*klevel, ycov,1,gdy,1)38 CALL SCOPY(ip1jmp1 * klevel, xcov, 1, gdx, 1) 39 CALL SCOPY(ip1jm * klevel, ycov, 1, gdy, 1) 39 40 ! 40 DO iter = 1, ld41 !42 CALL diverg( klevel, gdx , gdy, div)43 CALL filtreg( div, jjp1, klevel, 2,1, .TRUE.,2)44 CALL grad( klevel, div, gdx, gdy)45 !46 DO l = 1, klevel47 DO ij = 1, ip1jmp148 gdx( ij,l ) = - gdx( ij,l) * cdivu49 END DO50 DO ij = 1, ip1jm51 gdy( ij,l ) = - gdy( ij,l) * cdivu52 END DO53 END DO54 !41 DO iter = 1, ld 42 ! 43 CALL diverg(klevel, gdx, gdy, div) 44 CALL filtreg(div, jjp1, klevel, 2, 1, .TRUE., 2) 45 CALL grad(klevel, div, gdx, gdy) 46 ! 47 DO l = 1, klevel 48 DO ij = 1, ip1jmp1 49 gdx(ij, l) = - gdx(ij, l) * cdivu 50 END DO 51 DO ij = 1, ip1jm 52 gdy(ij, l) = - gdy(ij, l) * cdivu 53 END DO 54 END DO 55 ! 55 56 END DO 56 57 RETURN -
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 -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/inter_barxy_m.F90
r5117 r5119 10 10 public inter_barxy 11 11 12 contains 12 CONTAINS 13 13 14 14 SUBROUTINE inter_barxy(dlonid, dlatid, champ, rlonimod, rlatimod, champint) … … 448 448 END function ord_coordm 449 449 450 end moduleinter_barxy_m450 END MODULE inter_barxy_m -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/invert_zoom_x_m.F90
r5117 r5119 5 5 INTEGER, PARAMETER:: nmax = 30000 6 6 7 contains 7 CONTAINS 8 8 9 9 SUBROUTINE invert_zoom_x(xf, xtild, Xprimt, xlon, xprimm, xuv) … … 86 86 END SUBROUTINE invert_zoom_x 87 87 88 end moduleinvert_zoom_x_m88 END MODULE invert_zoom_x_m -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/laplacien.f90
r5106 r5119 1 2 1 ! $Header$ 3 2 4 SUBROUTINE laplacien( klevel, teta, divgra)3 SUBROUTINE laplacien(klevel, teta, divgra) 5 4 ! 6 5 ! P. Le Van … … 13 12 ! 14 13 USE lmdz_filtreg, ONLY: filtreg 14 USE lmdz_ssum_scopy, ONLY: scopy 15 15 16 IMPLICIT NONE 16 17 ! … … 23 24 ! 24 25 INTEGER :: klevel 25 REAL :: teta( ip1jmp1,klevel ), divgra( ip1jmp1,klevel)26 REAL :: teta(ip1jmp1, klevel), divgra(ip1jmp1, klevel) 26 27 ! 27 28 ! ............ variables locales .............. 28 29 ! 29 REAL :: ghy(ip1jm, llm), ghx(ip1jmp1,llm)30 REAL :: ghy(ip1jm, llm), ghx(ip1jmp1, llm) 30 31 ! ....................................................... 31 32 32 33 33 34 ! 34 CALL SCOPY ( ip1jmp1 * klevel, teta, 1, divgra, 1)35 CALL SCOPY (ip1jmp1 * klevel, teta, 1, divgra, 1) 35 36 36 CALL filtreg( divgra, jjp1, klevel, 2, 1, .TRUE., 1)37 CALL grad ( klevel,divgra, ghx , ghy)38 CALL divergf ( klevel, ghx , ghy , divgra)37 CALL filtreg(divgra, jjp1, klevel, 2, 1, .TRUE., 1) 38 CALL grad (klevel, divgra, ghx, ghy) 39 CALL divergf (klevel, ghx, ghy, divgra) 39 40 40 41 RETURN -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/laplacien_gam.f90
r5106 r5119 1 2 1 ! $Header$ 3 2 4 SUBROUTINE laplacien_gam( klevel, cuvsga, cvusga, unsaigam, &5 unsapolnga, unsapolsga, teta, divgra 3 SUBROUTINE laplacien_gam(klevel, cuvsga, cvusga, unsaigam, & 4 unsapolnga, unsapolsga, teta, divgra) 6 5 7 6 ! P. Le Van … … 14 13 ! divgra est un argument de sortie pour le s-prog 15 14 ! 15 USE lmdz_ssum_scopy, ONLY: scopy 16 16 17 IMPLICIT NONE 17 18 ! … … 24 25 ! 25 26 INTEGER :: klevel 26 REAL :: teta( ip1jmp1,klevel ), divgra( ip1jmp1,klevel)27 REAL :: cuvsga(ip1jm) , cvusga( ip1jmp1 ),unsaigam(ip1jmp1), &28 unsapolnga, unsapolsga27 REAL :: teta(ip1jmp1, klevel), divgra(ip1jmp1, klevel) 28 REAL :: cuvsga(ip1jm), cvusga(ip1jmp1), unsaigam(ip1jmp1), & 29 unsapolnga, unsapolsga 29 30 ! 30 31 ! ........... variables locales ................. 31 32 ! 32 REAL :: ghy(ip1jm, llm), ghx(ip1jmp1,llm)33 REAL :: ghy(ip1jm, llm), ghx(ip1jmp1, llm) 33 34 ! ...................................................... 34 35 … … 40 41 ! 41 42 42 CALL SCOPY ( ip1jmp1 * klevel, teta, 1, divgra, 1)43 CALL SCOPY (ip1jmp1 * klevel, teta, 1, divgra, 1) 43 44 ! 44 CALL grad ( klevel, divgra, ghx, ghy)45 CALL grad (klevel, divgra, ghx, ghy) 45 46 ! 46 CALL diverg_gam ( klevel, cuvsga, cvusga, unsaigam, &47 unsapolnga, unsapolsga, ghx , ghy , divgra)47 CALL diverg_gam (klevel, cuvsga, cvusga, unsaigam, & 48 unsapolnga, unsapolsga, ghx, ghy, divgra) 48 49 49 50 ! 50 51 51 52 52 RETURN 53 53 END SUBROUTINE laplacien_gam -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/misc_mod.F90
r5117 r5119 4 4 INTEGER,save :: ItCount 5 5 logical,save :: debug 6 end module misc_mod 6 END MODULE misc_mod -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/nxgraro2.f90
r5106 r5119 1 2 1 ! $Header$ 3 2 4 SUBROUTINE nxgraro2(klevel,xcov, ycov, lr, grx, gry)3 SUBROUTINE nxgraro2(klevel, xcov, ycov, lr, grx, gry) 5 4 ! 6 5 ! P.Le Van . … … 16 15 ! 17 16 USE lmdz_filtreg, ONLY: filtreg 17 USE lmdz_ssum_scopy, ONLY: scopy 18 18 19 IMPLICIT NONE 19 20 ! … … 25 26 ! 26 27 INTEGER :: klevel 27 REAL :: xcov( ip1jmp1,klevel ), ycov( ip1jm,klevel)28 REAL :: grx( ip1jmp1,klevel ), gry( ip1jm,klevel)28 REAL :: xcov(ip1jmp1, klevel), ycov(ip1jm, klevel) 29 REAL :: grx(ip1jmp1, klevel), gry(ip1jm, klevel) 29 30 ! 30 31 ! ...... variables locales ........ 31 32 ! 32 REAL :: rot(ip1jm, llm), signe, nugradrs33 INTEGER :: l, ij,iter,lr33 REAL :: rot(ip1jm, llm), signe, nugradrs 34 INTEGER :: l, ij, iter, lr 34 35 ! ........................................................ 35 36 ! 36 37 ! 37 38 ! 38 signe 39 signe = (-1.)**lr 39 40 nugradrs = signe * crot 40 41 ! 41 CALL SCOPY ( ip1jmp1* klevel, xcov, 1, grx, 1)42 CALL SCOPY ( ip1jm * klevel, ycov, 1, gry, 1)42 CALL SCOPY (ip1jmp1 * klevel, xcov, 1, grx, 1) 43 CALL SCOPY (ip1jm * klevel, ycov, 1, gry, 1) 43 44 ! 44 CALL rotatf ( klevel, grx, gry, rot)45 CALL rotatf (klevel, grx, gry, rot) 45 46 ! 46 CALL laplacien_rot ( klevel, rot, rot,grx,gry)47 CALL laplacien_rot (klevel, rot, rot, grx, gry) 47 48 48 49 ! 49 50 ! ..... Iteration de l'operateur laplacien_rotgam ..... 50 51 ! 51 DO iter = 1, lr - 252 CALL laplacien_rotgam ( klevel, rot, rot)52 DO iter = 1, lr - 2 53 CALL laplacien_rotgam (klevel, rot, rot) 53 54 ENDDO 54 55 ! 55 56 ! 56 CALL filtreg( rot, jjm, klevel, 2,1, .FALSE.,1)57 CALL nxgrad ( klevel, rot, grx, gry)57 CALL filtreg(rot, jjm, klevel, 2, 1, .FALSE., 1) 58 CALL nxgrad (klevel, rot, grx, gry) 58 59 ! 59 60 DO l = 1, klevel 60 61 gry( ij,l ) = gry( ij,l) * nugradrs62 63 64 grx( ij,l ) = grx( ij,l) * nugradrs65 61 DO ij = 1, ip1jm 62 gry(ij, l) = gry(ij, l) * nugradrs 63 ENDDO 64 DO ij = 1, ip1jmp1 65 grx(ij, l) = grx(ij, l) * nugradrs 66 ENDDO 66 67 ENDDO 67 68 ! -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/nxgrarot.f90
r5106 r5119 1 2 1 ! $Header$ 3 2 4 SUBROUTINE nxgrarot(klevel, xcov, ycov, lr, grx, gry)3 SUBROUTINE nxgrarot(klevel, xcov, ycov, lr, grx, gry) 5 4 ! *********************************************************** 6 5 ! … … 17 16 ! 18 17 USE lmdz_filtreg, ONLY: filtreg 18 USE lmdz_ssum_scopy, ONLY: scopy 19 19 20 IMPLICIT NONE 20 21 ! … … 25 26 ! 26 27 INTEGER :: klevel 27 REAL :: xcov( ip1jmp1,klevel ), ycov( ip1jm,klevel)28 REAL :: grx( ip1jmp1,klevel ), gry( ip1jm,klevel)28 REAL :: xcov(ip1jmp1, klevel), ycov(ip1jm, klevel) 29 REAL :: grx(ip1jmp1, klevel), gry(ip1jm, klevel) 29 30 ! 30 REAL :: rot(ip1jm, llm)31 REAL :: rot(ip1jm, llm) 31 32 32 INTEGER :: l, ij,iter,lr33 INTEGER :: l, ij, iter, lr 33 34 ! 34 35 ! 35 36 ! 36 CALL SCOPY ( ip1jmp1*klevel, xcov, 1, grx, 1)37 CALL SCOPY ( ip1jm*klevel, ycov, 1, gry, 1)37 CALL SCOPY (ip1jmp1 * klevel, xcov, 1, grx, 1) 38 CALL SCOPY (ip1jm * klevel, ycov, 1, gry, 1) 38 39 ! 39 DO iter = 1, lr40 CALL rotat (klevel,grx, gry, rot)41 CALL filtreg( rot, jjm, klevel, 2,1, .FALSE.,2)42 CALL nxgrad (klevel,rot, grx, gry)43 !44 DO l = 1, klevel45 DO ij = 1, ip1jm46 gry( ij,l ) = - gry( ij,l) * crot47 END DO48 DO ij = 1, ip1jmp149 grx( ij,l ) = - grx( ij,l) * crot50 END DO51 END DO52 !40 DO iter = 1, lr 41 CALL rotat (klevel, grx, gry, rot) 42 CALL filtreg(rot, jjm, klevel, 2, 1, .FALSE., 2) 43 CALL nxgrad (klevel, rot, grx, gry) 44 ! 45 DO l = 1, klevel 46 DO ij = 1, ip1jm 47 gry(ij, l) = - gry(ij, l) * crot 48 END DO 49 DO ij = 1, ip1jmp1 50 grx(ij, l) = - grx(ij, l) * crot 51 END DO 52 END DO 53 ! 53 54 END DO 54 55 RETURN -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/principal_cshift_m.F90
r5117 r5119 3 3 IMPLICIT NONE 4 4 5 contains 5 CONTAINS 6 6 7 7 SUBROUTINE principal_cshift(is2, xlon, xprimm) … … 41 41 END SUBROUTINE principal_cshift 42 42 43 end moduleprincipal_cshift_m43 END MODULE principal_cshift_m -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/sortvarc.f90
r5118 r5119 13 13 USE lmdz_filtreg, ONLY: filtreg 14 14 USE lmdz_iniprint, ONLY: lunout, prt_level 15 USE lmdz_ssum_scopy, ONLY: scopy 16 15 17 IMPLICIT NONE 16 18
Note: See TracChangeset
for help on using the changeset viewer.