source: LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/calfis.F @ 1333

Last change on this file since 1333 was 1320, checked in by idelkadi, 14 years ago

Decoupage du pas de temps physique en N sous-pas (splitting)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 18.0 KB
Line 
1!
2! $Id: calfis.F 1320 2010-02-25 14:50:51Z fairhead $
3!
4C
5C
6      SUBROUTINE calfis(lafin,
7     $                  jD_cur, jH_cur,
8     $                  pucov,
9     $                  pvcov,
10     $                  pteta,
11     $                  pq,
12     $                  pmasse,
13     $                  pps,
14     $                  pp,
15     $                  ppk,
16     $                  pphis,
17     $                  pphi,
18     $                  pducov,
19     $                  pdvcov,
20     $                  pdteta,
21     $                  pdq,
22     $                  flxw,
23     $                  clesphy0,
24     $                  pdufi,
25     $                  pdvfi,
26     $                  pdhfi,
27     $                  pdqfi,
28     $                  pdpsfi)
29c
30c    Auteur :  P. Le Van, F. Hourdin
31c   .........
32      USE infotrac
33      USE control_mod
34 
35
36      IMPLICIT NONE
37c=======================================================================
38c
39c   1. rearrangement des tableaux et transformation
40c      variables dynamiques  >  variables physiques
41c   2. calcul des termes physiques
42c   3. retransformation des tendances physiques en tendances dynamiques
43c
44c   remarques:
45c   ----------
46c
47c    - les vents sont donnes dans la physique par leurs composantes
48c      naturelles.
49c    - la variable thermodynamique de la physique est une variable
50c      intensive :   T
51c      pour la dynamique on prend    T * ( preff / p(l) ) **kappa
52c    - les deux seules variables dependant de la geometrie necessaires
53c      pour la physique sont la latitude pour le rayonnement et
54c      l'aire de la maille quand on veut integrer une grandeur
55c      horizontalement.
56c    - les points de la physique sont les points scalaires de la
57c      la dynamique; numerotation:
58c          1 pour le pole nord
59c          (jjm-1)*iim pour l'interieur du domaine
60c          ngridmx pour le pole sud
61c      ---> ngridmx=2+(jjm-1)*iim
62c
63c     Input :
64c     -------
65c       pucov           covariant zonal velocity
66c       pvcov           covariant meridional velocity
67c       pteta           potential temperature
68c       pps             surface pressure
69c       pmasse          masse d'air dans chaque maille
70c       pts             surface temperature  (K)
71c       callrad         clef d'appel au rayonnement
72c
73c    Output :
74c    --------
75c        pdufi          tendency for the natural zonal velocity (ms-1)
76c        pdvfi          tendency for the natural meridional velocity
77c        pdhfi          tendency for the potential temperature
78c        pdtsfi         tendency for the surface temperature
79c
80c        pdtrad         radiative tendencies  \  both input
81c        pfluxrad       radiative fluxes      /  and output
82c
83c=======================================================================
84c
85c-----------------------------------------------------------------------
86c
87c    0.  Declarations :
88c    ------------------
89
90#include "dimensions.h"
91#include "paramet.h"
92#include "temps.h"
93
94      INTEGER ngridmx
95      PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm   )
96
97#include "comconst.h"
98#include "comvert.h"
99#include "comgeom2.h"
100
101c    Arguments :
102c    -----------
103      LOGICAL  lafin
104
105
106      REAL pvcov(iip1,jjm,llm)
107      REAL pucov(iip1,jjp1,llm)
108      REAL pteta(iip1,jjp1,llm)
109      REAL pmasse(iip1,jjp1,llm)
110      REAL pq(iip1,jjp1,llm,nqtot)
111      REAL pphis(iip1,jjp1)
112      REAL pphi(iip1,jjp1,llm)
113c
114      REAL pdvcov(iip1,jjm,llm)
115      REAL pducov(iip1,jjp1,llm)
116      REAL pdteta(iip1,jjp1,llm)
117      REAL pdq(iip1,jjp1,llm,nqtot)
118c
119      REAL pps(iip1,jjp1)
120      REAL pp(iip1,jjp1,llmp1)
121      REAL ppk(iip1,jjp1,llm)
122c
123      REAL pdvfi(iip1,jjm,llm)
124      REAL pdufi(iip1,jjp1,llm)
125      REAL pdhfi(iip1,jjp1,llm)
126      REAL pdqfi(iip1,jjp1,llm,nqtot)
127      REAL pdpsfi(iip1,jjp1)
128
129      INTEGER        longcles
130      PARAMETER    ( longcles = 20 )
131      REAL clesphy0( longcles )
132
133
134c    Local variables :
135c    -----------------
136
137      INTEGER i,j,l,ig0,ig,iq,iiq
138      REAL zpsrf(ngridmx)
139      REAL zplev(ngridmx,llm+1),zplay(ngridmx,llm)
140      REAL zphi(ngridmx,llm),zphis(ngridmx)
141c
142      REAL zufi(ngridmx,llm), zvfi(ngridmx,llm)
143      REAL ztfi(ngridmx,llm),zqfi(ngridmx,llm,nqtot)
144c
145      REAL pcvgu(ngridmx,llm), pcvgv(ngridmx,llm)
146      REAL pcvgt(ngridmx,llm), pcvgq(ngridmx,llm,2)
147c
148      REAL zdufi(ngridmx,llm),zdvfi(ngridmx,llm)
149      REAL zdtfi(ngridmx,llm),zdqfi(ngridmx,llm,nqtot)
150      REAL zdpsrf(ngridmx)
151c
152      REAL zdufic(ngridmx,llm),zdvfic(ngridmx,llm)
153      REAL zdtfic(ngridmx,llm),zdqfic(ngridmx,llm,nqtot)
154      REAL jH_cur_split,zdt_split
155      LOGICAL debut_split,lafin_split
156      INTEGER isplit
157
158      REAL zsin(iim),zcos(iim),z1(iim)
159      REAL zsinbis(iim),zcosbis(iim),z1bis(iim)
160      REAL unskap, pksurcp
161c
162cIM diagnostique PVteta, Amip2
163      INTEGER ntetaSTD
164      PARAMETER(ntetaSTD=3)
165      REAL rtetaSTD(ntetaSTD)
166      DATA rtetaSTD/350., 380., 405./
167      REAL PVteta(ngridmx,ntetaSTD)
168c
169      REAL flxw(iip1,jjp1,llm)  ! Flux de masse verticale sur la grille dynamique
170      REAL flxwfi(ngridmx,llm)  ! Flux de masse verticale sur la grille physiq
171c
172     
173      REAL SSUM
174
175      LOGICAL firstcal, debut
176      DATA firstcal/.true./
177      SAVE firstcal,debut
178!      REAL rdayvrai
179      REAL, intent(in):: jD_cur, jH_cur
180c
181c-----------------------------------------------------------------------
182c
183c    1. Initialisations :
184c    --------------------
185c
186c
187      IF ( firstcal )  THEN
188        debut = .TRUE.
189        IF (ngridmx.NE.2+(jjm-1)*iim) THEN
190         PRINT*,'STOP dans calfis'
191         PRINT*,'La dimension ngridmx doit etre egale a 2 + (jjm-1)*iim'
192         PRINT*,'  ngridmx  jjm   iim   '
193         PRINT*,ngridmx,jjm,iim
194         STOP
195        ENDIF
196      ELSE
197        debut = .FALSE.
198      ENDIF ! of IF (firstcal)
199
200c
201c
202c-----------------------------------------------------------------------
203c   40. transformation des variables dynamiques en variables physiques:
204c   ---------------------------------------------------------------
205
206c   41. pressions au sol (en Pascals)
207c   ----------------------------------
208
209       
210      zpsrf(1) = pps(1,1)
211
212      ig0  = 2
213      DO j = 2,jjm
214         CALL SCOPY( iim,pps(1,j),1,zpsrf(ig0), 1 )
215         ig0 = ig0+iim
216      ENDDO
217
218      zpsrf(ngridmx) = pps(1,jjp1)
219
220
221c   42. pression intercouches :
222c
223c   -----------------------------------------------------------------
224c     .... zplev  definis aux (llm +1) interfaces des couches  ....
225c     .... zplay  definis aux (  llm )    milieux des couches  ....
226c   -----------------------------------------------------------------
227
228c    ...    Exner = cp * ( p(l) / preff ) ** kappa     ....
229c
230       unskap   = 1./ kappa
231c
232      DO l = 1, llmp1
233        zplev( 1,l ) = pp(1,1,l)
234        ig0 = 2
235          DO j = 2, jjm
236             DO i =1, iim
237              zplev( ig0,l ) = pp(i,j,l)
238              ig0 = ig0 +1
239             ENDDO
240          ENDDO
241        zplev( ngridmx,l ) = pp(1,jjp1,l)
242      ENDDO
243c
244c
245
246c   43. temperature naturelle (en K) et pressions milieux couches .
247c   ---------------------------------------------------------------
248
249      DO l=1,llm
250
251         pksurcp     =  ppk(1,1,l) / cpp
252         zplay(1,l)  =  preff * pksurcp ** unskap
253         ztfi(1,l)   =  pteta(1,1,l) *  pksurcp
254         pcvgt(1,l)  =  pdteta(1,1,l) * pksurcp / pmasse(1,1,l)
255         ig0         = 2
256
257         DO j = 2, jjm
258            DO i = 1, iim
259              pksurcp        = ppk(i,j,l) / cpp
260              zplay(ig0,l)   = preff * pksurcp ** unskap
261              ztfi(ig0,l)    = pteta(i,j,l)  * pksurcp
262              pcvgt(ig0,l)   = pdteta(i,j,l) * pksurcp / pmasse(i,j,l)
263              ig0            = ig0 + 1
264            ENDDO
265         ENDDO
266
267         pksurcp       = ppk(1,jjp1,l) / cpp
268         zplay(ig0,l)  = preff * pksurcp ** unskap
269         ztfi (ig0,l)  = pteta(1,jjp1,l)  * pksurcp
270         pcvgt(ig0,l)  = pdteta(1,jjp1,l) * pksurcp/ pmasse(1,jjp1,l)
271
272      ENDDO
273
274c   43.bis traceurs
275c   ---------------
276c
277      DO iq=1,nqtot
278          iiq=niadv(iq)
279         DO l=1,llm
280            zqfi(1,l,iq) = pq(1,1,l,iiq)
281            ig0          = 2
282            DO j=2,jjm
283               DO i = 1, iim
284                  zqfi(ig0,l,iq)  = pq(i,j,l,iiq)
285                  ig0             = ig0 + 1
286               ENDDO
287            ENDDO
288            zqfi(ig0,l,iq) = pq(1,jjp1,l,iiq)
289         ENDDO
290      ENDDO
291
292c   convergence dynamique pour les traceurs "EAU"
293! Earth-specific treatment of first 2 tracers (water)
294       if (planet_type=="earth") then
295        DO iq=1,2
296         DO l=1,llm
297            pcvgq(1,l,iq)= pdq(1,1,l,iq) / pmasse(1,1,l)
298            ig0          = 2
299            DO j=2,jjm
300               DO i = 1, iim
301                  pcvgq(ig0,l,iq) = pdq(i,j,l,iq) / pmasse(i,j,l)
302                  ig0             = ig0 + 1
303               ENDDO
304            ENDDO
305            pcvgq(ig0,l,iq)= pdq(1,jjp1,l,iq) / pmasse(1,jjp1,l)
306         ENDDO
307        ENDDO
308       endif ! of if (planet_type=="earth")
309
310
311c   Geopotentiel calcule par rapport a la surface locale:
312c   -----------------------------------------------------
313
314      CALL gr_dyn_fi(llm,iip1,jjp1,ngridmx,pphi,zphi)
315      CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,pphis,zphis)
316      DO l=1,llm
317         DO ig=1,ngridmx
318           zphi(ig,l)=zphi(ig,l)-zphis(ig)
319         ENDDO
320      ENDDO
321
322c   ....  Calcul de la vitesse  verticale  ( en Pa*m*s  ou Kg/s )  ....
323c JG : ancien calcule de omega utilise dans physiq.F. Maintenant le flux
324c    de masse est calclue dans advtrac.F 
325c      DO l=1,llm
326c        pvervel(1,l)=pw(1,1,l) * g /apoln
327c        ig0=2
328c       DO j=2,jjm
329c           DO i = 1, iim
330c              pvervel(ig0,l) = pw(i,j,l) * g * unsaire(i,j)
331c              ig0 = ig0 + 1
332c           ENDDO
333c       ENDDO
334c        pvervel(ig0,l)=pw(1,jjp1,l) * g /apols
335c      ENDDO
336
337c
338c   45. champ u:
339c   ------------
340
341      DO 50 l=1,llm
342
343         DO 25 j=2,jjm
344            ig0 = 1+(j-2)*iim
345            zufi(ig0+1,l)= 0.5 *
346     $      ( pucov(iim,j,l)/cu(iim,j) + pucov(1,j,l)/cu(1,j) )
347            pcvgu(ig0+1,l)= 0.5 *
348     $      ( pducov(iim,j,l)/cu(iim,j) + pducov(1,j,l)/cu(1,j) )
349            DO 10 i=2,iim
350               zufi(ig0+i,l)= 0.5 *
351     $         ( pucov(i-1,j,l)/cu(i-1,j) + pucov(i,j,l)/cu(i,j) )
352               pcvgu(ig0+i,l)= 0.5 *
353     $         ( pducov(i-1,j,l)/cu(i-1,j) + pducov(i,j,l)/cu(i,j) )
35410         CONTINUE
35525      CONTINUE
356
35750    CONTINUE
358
359
360c   46.champ v:
361c   -----------
362
363      DO l=1,llm
364         DO j=2,jjm
365            ig0=1+(j-2)*iim
366            DO i=1,iim
367               zvfi(ig0+i,l)= 0.5 *
368     $         ( pvcov(i,j-1,l)/cv(i,j-1) + pvcov(i,j,l)/cv(i,j) )
369               pcvgv(ig0+i,l)= 0.5 *
370     $         ( pdvcov(i,j-1,l)/cv(i,j-1) + pdvcov(i,j,l)/cv(i,j) )
371            ENDDO
372         ENDDO
373      ENDDO
374
375
376c   47. champs de vents aux pole nord   
377c   ------------------------------
378c        U = 1 / pi  *  integrale [ v * cos(long) * d long ]
379c        V = 1 / pi  *  integrale [ v * sin(long) * d long ]
380
381      DO l=1,llm
382
383         z1(1)   =(rlonu(1)-rlonu(iim)+2.*pi)*pvcov(1,1,l)/cv(1,1)
384         z1bis(1)=(rlonu(1)-rlonu(iim)+2.*pi)*pdvcov(1,1,l)/cv(1,1)
385         DO i=2,iim
386            z1(i)   =(rlonu(i)-rlonu(i-1))*pvcov(i,1,l)/cv(i,1)
387            z1bis(i)=(rlonu(i)-rlonu(i-1))*pdvcov(i,1,l)/cv(i,1)
388         ENDDO
389
390         DO i=1,iim
391            zcos(i)   = COS(rlonv(i))*z1(i)
392            zcosbis(i)= COS(rlonv(i))*z1bis(i)
393            zsin(i)   = SIN(rlonv(i))*z1(i)
394            zsinbis(i)= SIN(rlonv(i))*z1bis(i)
395         ENDDO
396
397         zufi(1,l)  = SSUM(iim,zcos,1)/pi
398         pcvgu(1,l) = SSUM(iim,zcosbis,1)/pi
399         zvfi(1,l)  = SSUM(iim,zsin,1)/pi
400         pcvgv(1,l) = SSUM(iim,zsinbis,1)/pi
401
402      ENDDO
403
404
405c   48. champs de vents aux pole sud:
406c   ---------------------------------
407c        U = 1 / pi  *  integrale [ v * cos(long) * d long ]
408c        V = 1 / pi  *  integrale [ v * sin(long) * d long ]
409
410      DO l=1,llm
411
412         z1(1)   =(rlonu(1)-rlonu(iim)+2.*pi)*pvcov(1,jjm,l)/cv(1,jjm)
413         z1bis(1)=(rlonu(1)-rlonu(iim)+2.*pi)*pdvcov(1,jjm,l)/cv(1,jjm)
414         DO i=2,iim
415            z1(i)   =(rlonu(i)-rlonu(i-1))*pvcov(i,jjm,l)/cv(i,jjm)
416            z1bis(i)=(rlonu(i)-rlonu(i-1))*pdvcov(i,jjm,l)/cv(i,jjm)
417         ENDDO
418
419         DO i=1,iim
420            zcos(i)    = COS(rlonv(i))*z1(i)
421            zcosbis(i) = COS(rlonv(i))*z1bis(i)
422            zsin(i)    = SIN(rlonv(i))*z1(i)
423            zsinbis(i) = SIN(rlonv(i))*z1bis(i)
424         ENDDO
425
426         zufi(ngridmx,l)  = SSUM(iim,zcos,1)/pi
427         pcvgu(ngridmx,l) = SSUM(iim,zcosbis,1)/pi
428         zvfi(ngridmx,l)  = SSUM(iim,zsin,1)/pi
429         pcvgv(ngridmx,l) = SSUM(iim,zsinbis,1)/pi
430
431      ENDDO
432c
433      if (planet_type=="earth") then
434#ifdef CPP_EARTH
435cIM calcul PV a teta=350, 380, 405K
436      CALL PVtheta(ngridmx,llm,pucov,pvcov,pteta,
437     $           ztfi,zplay,zplev,
438     $           ntetaSTD,rtetaSTD,PVteta)
439#endif
440      endif
441c
442c On change de grille, dynamique vers physiq, pour le flux de masse verticale
443      CALL gr_dyn_fi(llm,iip1,jjp1,ngridmx,flxw,flxwfi)
444
445c-----------------------------------------------------------------------
446c   Appel de la physique:
447c   ---------------------
448
449
450      if (planet_type=="earth") then
451
452      print*,'PHYSIQUE AVEC NSPLIT_PHYS=',nsplit_phys
453      zdt_split=dtphys/nsplit_phys
454      zdufic(:,:)=0.
455      zdvfic(:,:)=0.
456      zdtfic(:,:)=0.
457      zdqfic(:,:,:)=0.
458
459      do isplit=1,nsplit_phys
460
461         jH_cur_split=jH_cur+(isplit-1) * dtvr / (daysec *nsplit_phys)
462         debut_split=debut.and.isplit==1
463         lafin_split=lafin.and.isplit==nsplit_phys
464
465#ifdef CPP_EARTH
466         CALL physiq (ngridmx,
467     .             llm,
468     .             debut_split,
469     .             lafin_split,
470     .             jD_cur,
471     .             jH_cur_split,
472     .             zdt_split,
473     .             zplev,
474     .             zplay,
475     .             zphi,
476     .             zphis,
477     .             presnivs,
478     .             clesphy0,
479     .             zufi,
480     .             zvfi,
481     .             ztfi,
482     .             zqfi,
483     .             flxwfi,
484     .             zdufi,
485     .             zdvfi,
486     .             zdtfi,
487     .             zdqfi,
488     .             zdpsrf,
489cIM diagnostique PVteta, Amip2         
490     .             pducov,
491     .             PVteta)
492
493         zufi(:,:)=zufi(:,:)+zdufi(:,:)*zdt_split
494         zvfi(:,:)=zvfi(:,:)+zdvfi(:,:)*zdt_split
495         ztfi(:,:)=ztfi(:,:)+zdtfi(:,:)*zdt_split
496         zqfi(:,:,:)=zqfi(:,:,:)+zdqfi(:,:,:)*zdt_split
497
498         zdufic(:,:)=zdufic(:,:)+zdufi(:,:)
499         zdvfic(:,:)=zdvfic(:,:)+zdvfi(:,:)
500         zdtfic(:,:)=zdtfic(:,:)+zdtfi(:,:)
501         zdqfic(:,:,:)=zdqfic(:,:,:)+zdqfi(:,:,:)
502
503      enddo
504      zdufi(:,:)=zdufic(:,:)/nsplit_phys
505      zdvfi(:,:)=zdvfic(:,:)/nsplit_phys
506      zdtfi(:,:)=zdtfic(:,:)/nsplit_phys
507      zdqfi(:,:,:)=zdqfic(:,:,:)/nsplit_phys
508
509#endif
510      endif !of if (planet_type=="earth")
511
512500   CONTINUE
513
514c-----------------------------------------------------------------------
515c   transformation des tendances physiques en tendances dynamiques:
516c   ---------------------------------------------------------------
517
518c  tendance sur la pression :
519c  -----------------------------------
520
521      CALL gr_fi_dyn(1,ngridmx,iip1,jjp1,zdpsrf,pdpsfi)
522c
523c   62. enthalpie potentielle
524c   ---------------------
525
526      DO l=1,llm
527
528         DO i=1,iip1
529          pdhfi(i,1,l)    = cpp *  zdtfi(1,l)      / ppk(i, 1  ,l)
530          pdhfi(i,jjp1,l) = cpp *  zdtfi(ngridmx,l)/ ppk(i,jjp1,l)
531         ENDDO
532
533         DO j=2,jjm
534            ig0=1+(j-2)*iim
535            DO i=1,iim
536               pdhfi(i,j,l) = cpp * zdtfi(ig0+i,l) / ppk(i,j,l)
537            ENDDO
538               pdhfi(iip1,j,l) =  pdhfi(1,j,l)
539         ENDDO
540
541      ENDDO
542
543
544c   62. humidite specifique
545c   ---------------------
546! Ehouarn: removed this useless bit: was overwritten at step 63 anyways
547!      DO iq=1,nqtot
548!         DO l=1,llm
549!            DO i=1,iip1
550!               pdqfi(i,1,l,iq)    = zdqfi(1,l,iq)
551!               pdqfi(i,jjp1,l,iq) = zdqfi(ngridmx,l,iq)
552!            ENDDO
553!            DO j=2,jjm
554!               ig0=1+(j-2)*iim
555!               DO i=1,iim
556!                  pdqfi(i,j,l,iq) = zdqfi(ig0+i,l,iq)
557!               ENDDO
558!               pdqfi(iip1,j,l,iq) = pdqfi(1,j,l,iq)
559!            ENDDO
560!         ENDDO
561!      ENDDO
562
563c   63. traceurs
564c   ------------
565C     initialisation des tendances
566      pdqfi(:,:,:,:)=0.
567C
568      DO iq=1,nqtot
569         iiq=niadv(iq)
570         DO l=1,llm
571            DO i=1,iip1
572               pdqfi(i,1,l,iiq)    = zdqfi(1,l,iq)
573               pdqfi(i,jjp1,l,iiq) = zdqfi(ngridmx,l,iq)
574            ENDDO
575            DO j=2,jjm
576               ig0=1+(j-2)*iim
577               DO i=1,iim
578                  pdqfi(i,j,l,iiq) = zdqfi(ig0+i,l,iq)
579               ENDDO
580               pdqfi(iip1,j,l,iiq) = pdqfi(1,j,l,iq)
581            ENDDO
582         ENDDO
583      ENDDO
584
585c   65. champ u:
586c   ------------
587
588      DO l=1,llm
589
590         DO i=1,iip1
591            pdufi(i,1,l)    = 0.
592            pdufi(i,jjp1,l) = 0.
593         ENDDO
594
595         DO j=2,jjm
596            ig0=1+(j-2)*iim
597            DO i=1,iim-1
598               pdufi(i,j,l)=
599     $         0.5*(zdufi(ig0+i,l)+zdufi(ig0+i+1,l))*cu(i,j)
600            ENDDO
601            pdufi(iim,j,l)=
602     $      0.5*(zdufi(ig0+1,l)+zdufi(ig0+iim,l))*cu(iim,j)
603            pdufi(iip1,j,l)=pdufi(1,j,l)
604         ENDDO
605
606      ENDDO
607
608
609c   67. champ v:
610c   ------------
611
612      DO l=1,llm
613
614         DO j=2,jjm-1
615            ig0=1+(j-2)*iim
616            DO i=1,iim
617               pdvfi(i,j,l)=
618     $         0.5*(zdvfi(ig0+i,l)+zdvfi(ig0+i+iim,l))*cv(i,j)
619            ENDDO
620            pdvfi(iip1,j,l) = pdvfi(1,j,l)
621         ENDDO
622      ENDDO
623
624
625c   68. champ v pres des poles:
626c   ---------------------------
627c      v = U * cos(long) + V * SIN(long)
628
629      DO l=1,llm
630
631         DO i=1,iim
632            pdvfi(i,1,l)=
633     $      zdufi(1,l)*COS(rlonv(i))+zdvfi(1,l)*SIN(rlonv(i))
634            pdvfi(i,jjm,l)=zdufi(ngridmx,l)*COS(rlonv(i))
635     $      +zdvfi(ngridmx,l)*SIN(rlonv(i))
636            pdvfi(i,1,l)=
637     $      0.5*(pdvfi(i,1,l)+zdvfi(i+1,l))*cv(i,1)
638            pdvfi(i,jjm,l)=
639     $      0.5*(pdvfi(i,jjm,l)+zdvfi(ngridmx-iip1+i,l))*cv(i,jjm)
640          ENDDO
641
642         pdvfi(iip1,1,l)  = pdvfi(1,1,l)
643         pdvfi(iip1,jjm,l)= pdvfi(1,jjm,l)
644
645      ENDDO
646
647c-----------------------------------------------------------------------
648
649700   CONTINUE
650 
651      firstcal = .FALSE.
652
653      RETURN
654      END
Note: See TracBrowser for help on using the repository browser.