/[lmdze]/trunk/Sources/dyn3d/fyhyp.f
ViewVC logotype

Diff of /trunk/Sources/dyn3d/fyhyp.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/libf/dyn3d/fyhyp.f revision 71 by guez, Mon Jul 8 18:12:18 2013 UTC trunk/dyn3d/fyhyp.f revision 118 by guez, Thu Dec 18 17:30:24 2014 UTC
# Line 1  Line 1 
1  !  module fyhyp_m
2  ! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/fyhyp.F,v 1.2 2005/06/03 09:11:32 fairhead Exp $  
3  !    IMPLICIT NONE
4  c  
5  c  contains
6         SUBROUTINE fyhyp ( yzoomdeg, grossism, dzooma,tau  ,    
7       ,  rrlatu,yyprimu,rrlatv,yyprimv,rlatu2,yprimu2,rlatu1,yprimu1 ,    SUBROUTINE fyhyp(yzoomdeg, grossism, dzooma, tau, rrlatu, yyprimu, rrlatv, &
8       ,  champmin,champmax                                            )         yyprimv, rlatu2, yprimu2, rlatu1, yprimu1, champmin, champmax)
9    
10  cc    ...  Version du 01/04/2001 ....      ! From LMDZ4/libf/dyn3d/fyhyp.F, version 1.2, 2005/06/03 09:11:32
11    
12         use dimens_m      ! Author: P. Le Van, from analysis by R. Sadourny
13        use paramet_m  
14         IMPLICIT NONE      ! Calcule les latitudes et dérivées dans la grille du GCM pour une
15  c      ! fonction f(y) tangente hyperbolique.
16  c    ...   Auteur :  P. Le Van  ...  
17  c      ! Nota bene : il vaut mieux avoir grossism * dzoom < pi / 2 (rad),
18  c    .......    d'apres  formulations  de R. Sadourny  .......      ! en latitude.
19  c  
20  c     Calcule les latitudes et derivees dans la grille du GCM pour une      USE dimens_m, only: jjm
21  c     fonction f(y) a tangente  hyperbolique  .  
22  c      REAL, intent(in):: yzoomdeg
23  c     grossism etant le grossissement ( = 2 si 2 fois, = 3 si 3 fois , etc)  
24  c     dzoom  etant  la distance totale de la zone du zoom ( en radians )      REAL, intent(in):: grossism
25  c     tau  la raideur de la transition de l'interieur a l'exterieur du zoom        ! grossissement (= 2 si 2 fois, = 3 si 3 fois, etc.)
26  c  
27  c      REAL, intent(in):: dzooma
28  c N.B : Il vaut mieux avoir : grossism * dzoom  <  pi/2  (radians) ,en lati.  
29  c      ********************************************************************      REAL, intent(in):: tau
30  c      ! raideur de la transition de l'intérieur à l'extérieur du zoom
31  c  
32        ! arguments de sortie
33         INTEGER      nmax , nmax2  
34         PARAMETER (  nmax = 30000, nmax2 = 2*nmax )      REAL, intent(out):: rrlatu(jjm + 1), yyprimu(jjm + 1)
35  c      REAL, intent(out):: rrlatv(jjm), yyprimv(jjm)
36  c      real, intent(out):: rlatu2(jjm), yprimu2(jjm), rlatu1(jjm), yprimu1(jjm)
37  c     .......  arguments  d'entree    .......      DOUBLE PRECISION, intent(out):: champmin, champmax
38  c  
39         REAL yzoomdeg, grossism,dzooma,tau      ! Local:
40  c         ( rentres  par  run.def )  
41        INTEGER, PARAMETER:: nmax=30000, nmax2=2*nmax
42  c     .......  arguments  de sortie   .......      REAL dzoom ! distance totale de la zone du zoom (en radians)
43  c      DOUBLE PRECISION ylat(jjm + 1), yprim(jjm + 1)
44         REAL rrlatu(jjp1), yyprimu(jjp1),rrlatv(jjm), yyprimv(jjm),      DOUBLE PRECISION yuv
45       , rlatu1(jjm), yprimu1(jjm), rlatu2(jjm), yprimu2(jjm)      DOUBLE PRECISION, save:: yt(0:nmax2)
46        DOUBLE PRECISION fhyp(0:nmax2), beta
47  c      DOUBLE PRECISION, save:: ytprim(0:nmax2)
48  c     .....     champs  locaux    .....      DOUBLE PRECISION fxm(0:nmax2)
49  c      DOUBLE PRECISION, save:: yf(0:nmax2)
50            DOUBLE PRECISION yypr(0:nmax2)
51         REAL   dzoom      DOUBLE PRECISION yvrai(jjm + 1), yprimm(jjm + 1), ylatt(jjm + 1)
52         DOUBLE PRECISION ylat(jjp1), yprim(jjp1)      DOUBLE PRECISION pi, pis2, epsilon, y0, pisjm
53         DOUBLE PRECISION yuv      DOUBLE PRECISION yo1, yi, ylon2, ymoy, yprimin
54         DOUBLE PRECISION yt(0:nmax2)      DOUBLE PRECISION yfi, yf1, ffdy
55         DOUBLE PRECISION fhyp(0:nmax2),beta,Ytprim(0:nmax2),fxm(0:nmax2)      DOUBLE PRECISION ypn, deply, y00
56         SAVE Ytprim, yt,Yf      SAVE y00, deply
57         DOUBLE PRECISION Yf(0:nmax2),yypr(0:nmax2)  
58         DOUBLE PRECISION yvrai(jjp1), yprimm(jjp1),ylatt(jjp1)      INTEGER i, j, it, ik, iter, jlat
59         DOUBLE PRECISION pi,depi,pis2,epsilon,y0,pisjm      INTEGER jpn, jjpn
60         DOUBLE PRECISION yo1,yi,ylon2,ymoy,Yprimin,champmin,champmax      SAVE jpn
61         DOUBLE PRECISION yfi,Yf1,ffdy      DOUBLE PRECISION a0, a1, a2, a3, yi2, heavyy0, heavyy0m
62         DOUBLE PRECISION ypn,deply,y00      DOUBLE PRECISION fa(0:nmax2), fb(0:nmax2)
63         SAVE y00, deply      REAL y0min, y0max
64    
65         INTEGER i,j,it,ik,iter,jlat      DOUBLE PRECISION heavyside
66         INTEGER jpn,jjpn  
67         SAVE jpn      !-------------------------------------------------------------------
68         DOUBLE PRECISION a0,a1,a2,a3,yi2,heavyy0,heavyy0m  
69         DOUBLE PRECISION fa(0:nmax2),fb(0:nmax2)      pi = 2.*asin(1.)
70         REAL y0min,y0max      pis2 = pi/2.
71        pisjm = pi/real(jjm)
72         DOUBLE PRECISION     heavyside      epsilon = 1e-3
73        y0 = yzoomdeg*pi/180.
74         pi       = 2. * ASIN(1.)  
75         depi     = 2. * pi      IF (dzooma<1.) THEN
76         pis2     = pi/2.         dzoom = dzooma*pi
77         pisjm    = pi/ FLOAT(jjm)      ELSE IF (dzooma<12.) THEN
78         epsilon  = 1.e-3         print *, "Le paramètre dzoomy pour fyhyp est trop petit. L'augmenter " &
79         y0       =  yzoomdeg * pi/180.              // "et relancer."
80           STOP 1
81         IF( dzooma.LT.1.)  THEN      ELSE
82           dzoom = dzooma * pi         dzoom = dzooma * pi/180.
83         ELSEIF( dzooma.LT. 12. ) THEN      END IF
84           WRITE(6,*) ' Le param. dzoomy pour fyhyp est trop petit ! L aug  
85       ,menter et relancer ! '      print *, 'yzoom(rad), grossism, tau, dzoom (rad):'
86           STOP 1      print *, y0, grossism, tau, dzoom
87    
88        DO i = 0, nmax2
89           yt(i) = -pis2 + real(i)*pi/nmax2
90        END DO
91    
92        heavyy0m = heavyside(-y0)
93        heavyy0 = heavyside(y0)
94        y0min = 2.*y0*heavyy0m - pis2
95        y0max = 2.*y0*heavyy0 + pis2
96    
97        fa = 999.999
98        fb = 999.999
99    
100        DO i = 0, nmax2
101           IF (yt(i)<y0) THEN
102              fa(i) = tau*(yt(i)-y0 + dzoom/2.)
103              fb(i) = (yt(i)-2.*y0*heavyy0m + pis2)*(y0-yt(i))
104           ELSE IF (yt(i)>y0) THEN
105              fa(i) = tau*(y0-yt(i) + dzoom/2.)
106              fb(i) = (2.*y0*heavyy0-yt(i) + pis2)*(yt(i)-y0)
107           END IF
108    
109           IF (200.*fb(i)<-fa(i)) THEN
110              fhyp(i) = -1.
111           ELSE IF (200.*fb(i)<fa(i)) THEN
112              fhyp(i) = 1.
113           ELSE
114              fhyp(i) = tanh(fa(i)/fb(i))
115           END IF
116    
117           IF (yt(i)==y0) fhyp(i) = 1.
118           IF (yt(i)==y0min .OR. yt(i)==y0max) fhyp(i) = -1.
119        END DO
120    
121        ! Calcul de beta
122    
123        ffdy = 0.
124    
125        DO i = 1, nmax2
126           ymoy = 0.5*(yt(i-1) + yt(i))
127           IF (ymoy<y0) THEN
128              fa(i) = tau*(ymoy-y0 + dzoom/2.)
129              fb(i) = (ymoy-2.*y0*heavyy0m + pis2)*(y0-ymoy)
130           ELSE IF (ymoy>y0) THEN
131              fa(i) = tau*(y0-ymoy + dzoom/2.)
132              fb(i) = (2.*y0*heavyy0-ymoy + pis2)*(ymoy-y0)
133           END IF
134    
135           IF (200.*fb(i)<-fa(i)) THEN
136              fxm(i) = -1.
137           ELSE IF (200.*fb(i)<fa(i)) THEN
138              fxm(i) = 1.
139         ELSE         ELSE
140           dzoom = dzooma * pi/180.            fxm(i) = tanh(fa(i)/fb(i))
141         ENDIF         END IF
142           IF (ymoy==y0) fxm(i) = 1.
143           IF (ymoy==y0min .OR. yt(i)==y0max) fxm(i) = -1.
144           ffdy = ffdy + fxm(i)*(yt(i)-yt(i-1))
145        END DO
146    
147        beta = (grossism*ffdy-pi)/(ffdy-pi)
148    
149        IF (2. * beta - grossism <= 0.) THEN
150           print *, 'Attention ! La valeur beta calculee dans la routine fyhyp ' &
151                // 'est mauvaise. Modifier les valeurs de grossismy, tauy ou ' &
152                // 'dzoomy et relancer.'
153           STOP 1
154        END IF
155    
156        ! calcul de Ytprim
157    
158        DO i = 0, nmax2
159           ytprim(i) = beta + (grossism-beta)*fhyp(i)
160        END DO
161    
162        ! Calcul de Yf
163    
164        yf(0) = -pis2
165        DO i = 1, nmax2
166           yypr(i) = beta + (grossism-beta)*fxm(i)
167        END DO
168    
169        DO i = 1, nmax2
170           yf(i) = yf(i-1) + yypr(i)*(yt(i)-yt(i-1))
171        END DO
172    
173        ! yuv = 0. si calcul des latitudes aux pts. U
174        ! yuv = 0.5 si calcul des latitudes aux pts. V
175    
176        loop_ik: DO ik = 1, 4
177           IF (ik==1) THEN
178              yuv = 0.
179              jlat = jjm + 1
180           ELSE IF (ik==2) THEN
181              yuv = 0.5
182              jlat = jjm
183           ELSE IF (ik==3) THEN
184              yuv = 0.25
185              jlat = jjm
186           ELSE IF (ik==4) THEN
187              yuv = 0.75
188              jlat = jjm
189           END IF
190    
191         WRITE(6,18)         yo1 = 0.
192         WRITE(6,*) ' yzoom( rad.),grossism,tau,dzoom (radians)'         DO j = 1, jlat
193         WRITE(6,24) y0,grossism,tau,dzoom            yo1 = 0.
194              ylon2 = -pis2 + pisjm*(real(j) + yuv-1.)
195         DO i = 0, nmax2            yfi = ylon2
196          yt(i) = - pis2  + FLOAT(i)* pi /nmax2  
197         ENDDO            it = nmax2
198              DO while (it >= 1 .and. yfi < yf(it))
199         heavyy0m = heavyside( -y0 )               it = it - 1
200         heavyy0  = heavyside(  y0 )            END DO
201         y0min    = 2.*y0*heavyy0m - pis2  
202         y0max    = 2.*y0*heavyy0  + pis2            yi = yt(it)
203              IF (it==nmax2) THEN
204         fa = 999.999               it = nmax2 - 1
205         fb = 999.999               yf(it + 1) = pis2
206                    END IF
207         DO i = 0, nmax2  
208          IF( yt(i).LT.y0 )  THEN            ! Interpolation entre yi(it) et yi(it + 1) pour avoir Y(yi)
209           fa (i) = tau*  (yt(i)-y0+dzoom/2. )            ! et Y'(yi)
210           fb(i) =   (yt(i)-2.*y0*heavyy0m +pis2) * ( y0 - yt(i) )  
211          ELSEIF ( yt(i).GT.y0 )  THEN            CALL coefpoly(yf(it), yf(it + 1), ytprim(it), ytprim(it + 1), &
212           fa(i) =   tau *(y0-yt(i)+dzoom/2. )                 yt(it), yt(it + 1), a0, a1, a2, a3)
213           fb(i) = (2.*y0*heavyy0 -yt(i)+pis2) * ( yt(i) - y0 )  
214         ENDIF            yf1 = yf(it)
215                      yprimin = a1 + 2.*a2*yi + 3.*a3*yi*yi
216         IF( 200.* fb(i) .LT. - fa(i) )   THEN  
217           fhyp ( i) = - 1.            iter = 1
218         ELSEIF( 200. * fb(i) .LT. fa(i) ) THEN            DO
219           fhyp ( i) =   1.               yi = yi - (yf1-yfi)/yprimin
220         ELSE                 IF (abs(yi-yo1)<=epsilon .or. iter == 300) exit
221           fhyp(i) =  TANH ( fa(i)/fb(i) )               yo1 = yi
222         ENDIF               yi2 = yi*yi
223                 yf1 = a0 + a1*yi + a2*yi2 + a3*yi2*yi
224         IF( yt(i).EQ.y0 )  fhyp(i) = 1.               yprimin = a1 + 2.*a2*yi + 3.*a3*yi2
225         IF(yt(i).EQ. y0min. OR.yt(i).EQ. y0max ) fhyp(i) = -1.            END DO
226              if (abs(yi-yo1) > epsilon) then
227         ENDDO               print *, 'Pas de solution.', j, ylon2
228                 STOP 1
229  cc  ....  Calcul  de  beta  ....            end if
230  c  
231         ffdy   = 0.            yprimin = a1 + 2.*a2*yi + 3.*a3*yi*yi
232              yprim(j) = pi/(jjm*yprimin)
233         DO i = 1, nmax2            yvrai(j) = yi
234          ymoy    = 0.5 * ( yt(i-1) + yt( i ) )         END DO
235          IF( ymoy.LT.y0 )  THEN  
236           fa(i)= tau * ( ymoy-y0+dzoom/2.)         DO j = 1, jlat - 1
237           fb(i) = (ymoy-2.*y0*heavyy0m +pis2) * ( y0 - ymoy )            IF (yvrai(j + 1)<yvrai(j)) THEN
238          ELSEIF ( ymoy.GT.y0 )  THEN               print *, 'Problème avec rlat(', j + 1, ') plus petit que rlat(', &
239           fa(i)= tau * ( y0-ymoy+dzoom/2. )                    j, ')'
240           fb(i) = (2.*y0*heavyy0 -ymoy+pis2) * ( ymoy - y0 )               STOP 1
241          ENDIF            END IF
242           END DO
243          IF( 200.* fb(i) .LT. - fa(i) )    THEN  
244           fxm ( i) = - 1.         print *, 'Reorganisation des latitudes pour avoir entre - pi/2 et pi/2'
245          ELSEIF( 200. * fb(i) .LT. fa(i) ) THEN  
246           fxm ( i) =   1.         IF (ik==1) THEN
247          ELSE            ypn = pis2
248           fxm(i) =  TANH ( fa(i)/fb(i) )            DO j = jjm + 1, 1, -1
249          ENDIF               IF (yvrai(j)<=ypn) exit
250           IF( ymoy.EQ.y0 )  fxm(i) = 1.            END DO
251           IF (ymoy.EQ. y0min. OR.yt(i).EQ. y0max ) fxm(i) = -1.  
252           ffdy = ffdy + fxm(i) * ( yt(i) - yt(i-1) )            jpn = j
253              y00 = yvrai(jpn)
254          ENDDO            deply = pis2 - y00
255           END IF
256          beta  = ( grossism * ffdy - pi ) / ( ffdy - pi )  
257           DO j = 1, jjm + 1 - jpn
258         IF( 2.*beta - grossism.LE. 0.)  THEN            ylatt(j) = -pis2 - y00 + yvrai(jpn + j-1)
259              yprimm(j) = yprim(jpn + j-1)
260          WRITE(6,*) ' **  Attention ! La valeur beta calculee dans la rou         END DO
261       ,tine fyhyp est mauvaise ! '  
262          WRITE(6,*)'Modifier les valeurs de  grossismy ,tauy ou dzoomy',         jjpn = jpn
263       , ' et relancer ! ***  '         IF (jlat==jjm) jjpn = jpn - 1
264          STOP 1  
265           DO j = 1, jjpn
266         ENDIF            ylatt(j + jjm + 1-jpn) = yvrai(j) + deply
267  c            yprimm(j + jjm + 1-jpn) = yprim(j)
268  c   .....  calcul  de  Ytprim   .....         END DO
269  c  
270                 ! Fin de la reorganisation
271         DO i = 0, nmax2  
272          Ytprim(i) = beta  + ( grossism - beta ) * fhyp(i)         DO j = 1, jlat
273         ENDDO            ylat(j) = ylatt(jlat + 1-j)
274              yprim(j) = yprimm(jlat + 1-j)
275  c   .....  Calcul  de  Yf     ........         END DO
   
        Yf(0) = - pis2  
        DO i = 1, nmax2  
         yypr(i)    = beta + ( grossism - beta ) * fxm(i)  
        ENDDO  
   
        DO i=1,nmax2  
         Yf(i)   = Yf(i-1) + yypr(i) * ( yt(i) - yt(i-1) )  
        ENDDO  
   
 c    ****************************************************************  
 c  
 c   .....   yuv  = 0.   si calcul des latitudes  aux pts.  U  .....  
 c   .....   yuv  = 0.5  si calcul des latitudes  aux pts.  V  .....  
 c  
       WRITE(6,18)  
 c  
       DO 5000  ik = 1,4  
   
        IF( ik.EQ.1 )  THEN  
          yuv  = 0.  
          jlat = jjm + 1  
        ELSE IF ( ik.EQ.2 )  THEN  
          yuv  = 0.5  
          jlat = jjm  
        ELSE IF ( ik.EQ.3 )  THEN  
          yuv  = 0.25  
          jlat = jjm  
        ELSE IF ( ik.EQ.4 )  THEN  
          yuv  = 0.75  
          jlat = jjm  
        ENDIF  
 c  
        yo1   = 0.  
        DO 1500 j =  1,jlat  
         yo1   = 0.  
         ylon2 =  - pis2 + pisjm * ( FLOAT(j)  + yuv  -1.)    
         yfi    = ylon2  
 c  
        DO 250 it =  nmax2,0,-1  
         IF( yfi.GE.Yf(it))  GO TO 350  
 250    CONTINUE  
        it = 0  
 350    CONTINUE  
   
        yi = yt(it)  
        IF(it.EQ.nmax2)  THEN  
         it       = nmax2 -1  
         Yf(it+1) = pis2  
        ENDIF  
 c  .................................................................  
 c  ....  Interpolation entre  yi(it) et yi(it+1)   pour avoir Y(yi)    
 c      .....           et   Y'(yi)                             .....  
 c  .................................................................  
   
        CALL coefpoly ( Yf(it),Yf(it+1),Ytprim(it), Ytprim(it+1),    
      ,                  yt(it),yt(it+1) ,   a0,a1,a2,a3   )        
   
        Yf1     = Yf(it)  
        Yprimin = a1 + 2.* a2 * yi + 3.*a3 * yi *yi  
   
        DO 500 iter = 1,300  
          yi = yi - ( Yf1 - yfi )/ Yprimin  
   
         IF( ABS(yi-yo1).LE.epsilon)  GO TO 550  
          yo1      = yi  
          yi2      = yi * yi  
          Yf1      = a0 +  a1 * yi +     a2 * yi2  +     a3 * yi2 * yi  
          Yprimin  =       a1      + 2.* a2 *  yi  + 3.* a3 * yi2  
 500   CONTINUE  
         WRITE(6,*) ' Pas de solution ***** ',j,ylon2,iter  
          STOP 2  
 550   CONTINUE  
 c  
        Yprimin   = a1  + 2.* a2 *  yi   + 3.* a3 * yi* yi  
        yprim(j)  = pi / ( jjm * Yprimin )  
        yvrai(j)  = yi  
   
 1500    CONTINUE  
   
        DO j = 1, jlat -1  
         IF( yvrai(j+1). LT. yvrai(j) )  THEN  
          WRITE(6,*) ' PBS. avec  rlat(',j+1,') plus petit que rlat(',j,  
      ,  ')'  
          STOP 3  
         ENDIF  
        ENDDO  
   
        WRITE(6,*) 'Reorganisation des latitudes pour avoir entre - pi/2'  
      , ,' et  pi/2 '  
 c  
         IF( ik.EQ.1 )   THEN  
            ypn = pis2  
           DO j = jlat,1,-1  
            IF( yvrai(j).LE. ypn ) GO TO 1502  
           ENDDO  
 1502     CONTINUE  
   
          jpn   = j  
          y00   = yvrai(jpn)  
          deply = pis2 -  y00  
         ENDIF  
   
          DO  j = 1, jjm +1 - jpn  
            ylatt (j)  = -pis2 - y00  + yvrai(jpn+j-1)  
            yprimm(j)  = yprim(jpn+j-1)  
          ENDDO  
   
          jjpn  = jpn  
          IF( jlat.EQ. jjm ) jjpn = jpn -1  
   
          DO j = 1,jjpn  
           ylatt (j + jjm+1 -jpn) = yvrai(j) + deply  
           yprimm(j + jjm+1 -jpn) = yprim(j)  
          ENDDO  
   
 c      ***********   Fin de la reorganisation     *************  
 c  
  1600   CONTINUE  
276    
277         DO j = 1, jlat         DO j = 1, jlat
278            ylat(j) =  ylatt( jlat +1 -j )            yvrai(j) = ylat(j)*180./pi
279           yprim(j) = yprimm( jlat +1 -j )         END DO
280         ENDDO  
281             IF (ik==1) THEN
282          DO j = 1, jlat            DO j = 1, jjm + 1
283           yvrai(j) = ylat(j)*180./pi               rrlatu(j) = ylat(j)
284          ENDDO               yyprimu(j) = yprim(j)
285              END DO
286          IF( ik.EQ.1 )  THEN         ELSE IF (ik==2) THEN
287  c         WRITE(6,18)            DO j = 1, jjm
288  c         WRITE(6,*)  ' YLAT  en U   apres ( en  deg. ) '               rrlatv(j) = ylat(j)
289  c         WRITE(6,68) (yvrai(j),j=1,jlat)               yyprimv(j) = yprim(j)
290  cc         WRITE(6,*) ' YPRIM '            END DO
291  cc         WRITE(6,445) ( yprim(j),j=1,jlat)         ELSE IF (ik==3) THEN
292              DO j = 1, jjm
293            DO j = 1, jlat               rlatu2(j) = ylat(j)
294              rrlatu(j) =  ylat( j )               yprimu2(j) = yprim(j)
295             yyprimu(j) = yprim( j )            END DO
296            ENDDO         ELSE IF (ik==4) THEN
297              DO j = 1, jjm
298          ELSE IF ( ik.EQ. 2 )  THEN               rlatu1(j) = ylat(j)
299  c         WRITE(6,18)               yprimu1(j) = yprim(j)
300  c         WRITE(6,*) ' YLAT   en V  apres ( en  deg. ) '            END DO
301  c         WRITE(6,68) (yvrai(j),j=1,jlat)         END IF
302  cc         WRITE(6,*)' YPRIM '      END DO loop_ik
303  cc         WRITE(6,445) ( yprim(j),j=1,jlat)  
304        DO j = 1, jjm
305            DO j = 1, jlat         ylat(j) = rrlatu(j) - rrlatu(j + 1)
306              rrlatv(j) =  ylat( j )      END DO
307             yyprimv(j) = yprim( j )      champmin = 1e12
308            ENDDO      champmax = -1e12
309        DO j = 1, jjm
310          ELSE IF ( ik.EQ. 3 )  THEN         champmin = min(champmin, ylat(j))
311  c         WRITE(6,18)         champmax = max(champmax, ylat(j))
312  c         WRITE(6,*)  ' YLAT  en U + 0.75  apres ( en  deg. ) '      END DO
313  c         WRITE(6,68) (yvrai(j),j=1,jlat)      champmin = champmin*180./pi
314  cc         WRITE(6,*) ' YPRIM '      champmax = champmax*180./pi
315  cc         WRITE(6,445) ( yprim(j),j=1,jlat)  
316      END SUBROUTINE fyhyp
           DO j = 1, jlat  
             rlatu2(j) =  ylat( j )  
            yprimu2(j) = yprim( j )  
           ENDDO  
   
         ELSE IF ( ik.EQ. 4 )  THEN  
 c         WRITE(6,18)  
 c         WRITE(6,*)  ' YLAT en U + 0.25  apres ( en  deg. ) '  
 c         WRITE(6,68)(yvrai(j),j=1,jlat)  
 cc         WRITE(6,*) ' YPRIM '  
 cc         WRITE(6,68) ( yprim(j),j=1,jlat)  
   
           DO j = 1, jlat  
             rlatu1(j) =  ylat( j )  
            yprimu1(j) = yprim( j )  
           ENDDO  
   
         ENDIF  
   
 5000   CONTINUE  
 c  
         WRITE(6,18)  
 c  
 c  .....     fin de la boucle  do 5000 .....  
   
         DO j = 1, jjm  
          ylat(j) = rrlatu(j) - rrlatu(j+1)  
         ENDDO  
         champmin =  1.e12  
         champmax = -1.e12  
         DO j = 1, jjm  
          champmin = MIN( champmin, ylat(j) )  
          champmax = MAX( champmax, ylat(j) )  
         ENDDO  
          champmin = champmin * 180./pi  
          champmax = champmax * 180./pi  
   
 24     FORMAT(2x,'Parametres yzoom,gross,tau ,dzoom pour fyhyp ',4f8.3)  
 18      FORMAT(/)  
 68      FORMAT(1x,7f9.2)  
317    
318          RETURN  end module fyhyp_m
         END  

Legend:
Removed from v.71  
changed lines
  Added in v.118

  ViewVC Help
Powered by ViewVC 1.1.21