--- trunk/dyn3d/fyhyp.f 2015/02/27 16:44:07 131 +++ trunk/dyn3d/fyhyp.f 2018/02/05 10:39:38 254 @@ -4,7 +4,7 @@ contains - SUBROUTINE fyhyp(rlatu, yyprimu, rlatv, rlatu2, yprimu2, rlatu1, yprimu1) + SUBROUTINE fyhyp(rlatu, rlatv, rlatu2, yprimu2, rlatu1, yprimu1) ! From LMDZ4/libf/dyn3d/fyhyp.F, version 1.2, 2005/06/03 09:11:32 @@ -15,18 +15,17 @@ ! Il vaut mieux avoir : grossismy * dzoom < pi / 2 - use coefpoly_m, only: coefpoly + use coefpoly_m, only: coefpoly, a0, a1, a2, a3 USE dimens_m, only: jjm + use dynetat0_m, only: clat, grossismy, dzoomy, tauy use heavyside_m, only: heavyside - use serre, only: clat, grossismy, dzoomy, tauy - REAL, intent(out):: rlatu(jjm + 1), yyprimu(jjm + 1) - REAL, intent(out):: rlatv(jjm) - real, intent(out):: rlatu2(jjm), yprimu2(jjm), rlatu1(jjm), yprimu1(jjm) + REAL, intent(out):: rlatu(:) ! (jjm + 1) + REAL, intent(out):: rlatv(:) ! (jjm) + real, intent(out):: rlatu2(:), yprimu2(:), rlatu1(:), yprimu1(:) ! (jjm) ! Local: - DOUBLE PRECISION champmin, champmax INTEGER, PARAMETER:: nmax=30000, nmax2=2*nmax REAL dzoom ! distance totale de la zone du zoom (en radians) DOUBLE PRECISION ylat(jjm + 1), yprim(jjm + 1) @@ -41,13 +40,12 @@ DOUBLE PRECISION pi, pis2, epsilon, pisjm DOUBLE PRECISION yo1, yi, ylon2, ymoy, yprimin DOUBLE PRECISION yfi, yf1, ffdy - DOUBLE PRECISION ypn, deply, y00 - SAVE y00, deply + DOUBLE PRECISION ypn + DOUBLE PRECISION, save::deply, y00 - INTEGER i, j, it, ik, iter, jlat - INTEGER jpn, jjpn - SAVE jpn - DOUBLE PRECISION a0, a1, a2, a3, yi2, heavyy0, heavyy0m + INTEGER i, j, it, ik, iter, jlat, jjpn + INTEGER, save:: jpn + DOUBLE PRECISION yi2, heavyy0, heavyy0m DOUBLE PRECISION fa(0:nmax2), fb(0:nmax2) REAL y0min, y0max @@ -187,7 +185,7 @@ ! et Y'(yi) CALL coefpoly(yf(it), yf(it + 1), ytprim(it), ytprim(it + 1), & - yt(it), yt(it + 1), a0, a1, a2, a3) + yt(it), yt(it + 1)) yf1 = yf(it) yprimin = a1 + 2.*a2*yi + 3.*a3*yi*yi @@ -259,7 +257,6 @@ IF (ik==1) THEN DO j = 1, jjm + 1 rlatu(j) = ylat(j) - yyprimu(j) = yprim(j) END DO ELSE IF (ik==2) THEN DO j = 1, jjm @@ -281,14 +278,6 @@ DO j = 1, jjm ylat(j) = rlatu(j) - rlatu(j + 1) END DO - champmin = 1e12 - champmax = -1e12 - DO j = 1, jjm - champmin = min(champmin, ylat(j)) - champmax = max(champmax, ylat(j)) - END DO - champmin = champmin*180./pi - champmax = champmax*180./pi DO j = 1, jjm IF (rlatu1(j) <= rlatu2(j)) THEN @@ -323,7 +312,7 @@ ENDDO print *, 'Latitudes' - print 3, champmin, champmax + print 3, minval(ylat(:jjm)) *180d0/pi, maxval(ylat(:jjm))*180d0/pi 3 Format(1x, ' Au centre du zoom, la longueur de la maille est', & ' d environ ', f0.2, ' degres ', /, &