source: trunk/MESOSCALE/LMDZ.MARS/libf_gcm/dyn3d/gcm.F @ 815

Last change on this file since 815 was 57, checked in by aslmd, 14 years ago

mineur LMD_MM_MARS: ajout du GCM ancienne physique, systeme maintenant complet sur SVN (ne manque que la base de donnees d'etats initiaux)

File size: 19.9 KB
Line 
1      PROGRAM gcm
2
3      IMPLICIT NONE
4
5c      ......   Version  du 10/01/98    ..........
6
7c             avec  coordonnees  verticales hybrides
8c   avec nouveaux operat. dissipation * ( gradiv2,divgrad2,nxgraro2 )
9
10c=======================================================================
11c
12c   Auteur:  P. Le Van /L. Fairhead/F.Hourdin
13c   -------
14c
15c   Objet:
16c   ------
17c
18c   GCM LMD nouvelle grille
19c
20c=======================================================================
21c
22c  ... Dans inigeom , nouveaux calculs pour les elongations  cu , cv
23c      et possibilite d'appeler une fonction f(y)  a derivee tangente
24c      hyperbolique a la  place de la fonction a derivee sinusoidale.
25
26c  ... Possibilite de choisir le shema de Van-leer pour l'advection de
27c        q  , en faisant iadv = 3  dans   traceur  (29/04/97) .
28c
29c      Pour Van-Leer + Vapeur d'eau saturee, iadv(1)=4. (F.Codron,10/99)
30c
31c-----------------------------------------------------------------------
32c   Declarations:
33c   -------------
34
35#include "dimensions.h"
36#include "paramet.h"
37#include "comconst.h"
38#include "comdissnew.h"
39#include "comvert.h"
40#include "comgeom.h"
41#include "logic.h"
42#include "temps.h"
43#include "control.h"
44#include "ener.h"
45#include "netcdf.inc"
46#include "description.h"
47#include "serre.h"
48#include "tracstoke.h"
49#include "sponge.h"
50
51
52      INTEGER*4  iday ! jour julien
53      REAL       time ! Heure de la journee en fraction d''1 jour
54      REAL zdtvr
55
56c   variables dynamiques
57      REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) ! vents covariants
58      real, dimension(ip1jmp1,llm) :: teta   ! temperature potentielle
59      REAL q(ip1jmp1,llm,nqmx)               ! champs advectes
60      REAL ps(ip1jmp1)                       ! pression  au sol
61      REAL pext(ip1jmp1)                     ! pression  extensive
62      REAL p (ip1jmp1,llmp1  )               ! pression aux interfac.des couches
63      REAL pks(ip1jmp1)                      ! exner au  sol
64      REAL pk(ip1jmp1,llm)                   ! exner au milieu des couches
65      REAL pkf(ip1jmp1,llm)                  ! exner filt.au milieu des couches
66      REAL masse(ip1jmp1,llm)                ! masse d''air
67      REAL phis(ip1jmp1)                     ! geopotentiel au sol
68      REAL phi(ip1jmp1,llm)                  ! geopotentiel
69      REAL w(ip1jmp1,llm)                    ! vitesse verticale
70
71c variables dynamiques intermediaire pour le transport
72      REAL pbaru(ip1jmp1,llm),pbarv(ip1jm,llm) !flux de masse
73
74c   variables dynamiques au pas -1
75      REAL vcovm1(ip1jm,llm),ucovm1(ip1jmp1,llm)
76
77      REAL tetam1(ip1jmp1,llm),psm1(ip1jmp1)
78      REAL massem1(ip1jmp1,llm)
79
80c   tendances dynamiques
81      REAL dv(ip1jm,llm),du(ip1jmp1,llm)
82      REAL dteta(ip1jmp1,llm),dq(ip1jmp1,llm,nqmx),dp(ip1jmp1)
83
84c   tendances de la dissipation
85      REAL dvdis(ip1jm,llm),dudis(ip1jmp1,llm)
86      REAL dhdis(ip1jmp1,llm)
87
88c   tendances physiques
89      REAL dvfi(ip1jm,llm),dufi(ip1jmp1,llm)
90      REAL dhfi(ip1jmp1,llm),dqfi(ip1jmp1,llm,nqmx),dpfi(ip1jmp1)
91
92c   variables pour le fichier histoire
93      REAL dtav      ! intervalle de temps elementaire
94
95      REAL tppn(iim),tpps(iim),tpn,tps
96c
97      INTEGER iadv(nqmx) ! indice schema de transport pour le traceur iq
98
99      INTEGER itau,itaufinp1,iav
100
101
102      EXTERNAL caldyn, traceur
103      EXTERNAL dissip,geopot,iniconst,inifilr
104      EXTERNAL integrd,SCOPY
105      EXTERNAL inigeom
106      EXTERNAL exner_hyb,addit
107      EXTERNAL defrun_new, test_period
108      REAL  SSUM
109      REAL time_0 , finvmaold(ip1jmp1,llm)
110
111      LOGICAL lafin
112      INTEGER ij,iq,l,ierr,numvanle,iapp_tracvl
113
114      REAL rdayvrai,rdaym_ini,rday_ecri
115      LOGICAL first
116      REAL beta(ip1jmp1,llm)
117
118      LOGICAL offline  ! Controle du stockage ds "fluxmass"
119      PARAMETER (offline=.false.)
120
121      character*20 modname
122      character*80 abort_message
123
124      LOGICAL tracer
125          data tracer/.true./
126
127C Calendrier
128      LOGICAL true_calendar
129      PARAMETER (true_calendar = .false.)
130
131! flag to set/remove calls to groupeun
132      logical callgroupeun
133      parameter (callgroupeun = .true.)
134c-----------------------------------------------------------------------
135c   Initialisations:
136c   ----------------
137
138      modname = 'gcm'
139      descript = 'Run GCM LMDZ'
140      lafin    = .FALSE.
141
142c-----------------------------------------------------------------------
143c
144
145c  ....  Choix  des shemas d'advection pour l'eau et les traceurs  ...
146c  ...................................................................
147c
148c     iadv = 1    shema  transport type "humidite specifique LMD" 
149c     iadv = 2    shema   amont
150c     iadv = 3    shema  Van-leer
151c     iadv = 4    schema  Van-leer + humidite specifique
152c                        Modif F.Codron
153c
154c     dans le tableau q(ij,l,iq) , iq = 1  pour l'eau vapeur
155c                                , iq = 2  pour l'eau liquide
156c         et eventuellement      , iq = 3, nqmx pour les autres traceurs
157c
158c     iadv(1): choix pour l'eau vap. et  iadv(2) : choix pour l'eau liq.
159c
160c  !!!!!Mars: vapeur d'eau = traceur nqmx !!!!!
161c
162      DO iq = 1, nqmx
163       iadv( iq ) = 3    ! Van-Leer + humidite pas au point? (Yann)
164      ENDDO
165c
166      DO  iq = 1, nqmx-1
167       IF( iadv(iq).EQ.1 ) PRINT *,' Choix du shema humidite specifique'
168     * ,' pour le traceur no ', iq
169       IF( iadv(iq).EQ.2 ) PRINT *,' Choix du shema  amont',' pour le'
170
171     * ,' traceur no ', iq
172       IF( iadv(iq).EQ.3 ) PRINT *,' Choix du shema  Van-Leer ',' pour'
173     * ,'le traceur no ', iq
174
175       IF( iadv(iq).EQ.4 )  THEN
176         PRINT *,' Le shema  Van-Leer + humidite specifique ',
177     * ' est  uniquement pour la vapeur d eau .'
178         PRINT *,' Corriger iadv( ',iq, ')  et repasser ! '
179         CALL ABORT
180       ENDIF
181
182       IF( iadv(iq).LE.0.OR.iadv(iq).GT.4 )   THEN
183        PRINT *,' Erreur dans le choix de iadv (nqmx).Corriger et '
184     * ,' repasser car  iadv(iq) = ', iadv(iq)
185         CALL ABORT
186       ENDIF
187      ENDDO
188
189       IF( iadv(nqmx).EQ.1 ) PRINT *,' Choix du shema humidite '
190     * ,'specifique pour la vapeur d''eau'
191       IF( iadv(nqmx).EQ.2 ) PRINT *,' Choix du shema  amont',' pour la'
192     * ,' vapeur d''eau '
193       IF( iadv(nqmx).EQ.3 ) PRINT *,' Choix du shema  Van-Leer '
194     * ,' pour la vapeur d''eau'
195       IF( iadv(nqmx).EQ.4 ) PRINT *,' Choix du shema  Van-Leer + '
196     * ,' humidite specifique pour la vapeur d''eau'
197c
198       IF( iadv(nqmx).LE.0.OR.iadv(nqmx).GT.4 )   THEN
199        PRINT *,' Erreur dans le choix de iadv (nqmx).Corriger et '
200     * ,' repasser car  iadv(nqmx) = ', iadv(nqmx)
201         CALL ABORT
202       ENDIF
203
204      first = .TRUE.
205      numvanle = nqmx + 1
206      DO  iq = 1, nqmx
207        IF((iadv(iq).EQ.3.OR.iadv(iq).EQ.4).AND.first ) THEN
208          numvanle = iq
209          first    = .FALSE.
210        ENDIF
211      ENDDO
212c
213      DO  iq = 1, nqmx
214
215      IF( (iadv(iq).NE.3.AND.iadv(iq).NE.4).AND.iq.GT.numvanle )  THEN
216          PRINT *,' Il y a discontinuite dans le choix du shema de ',
217     *    'Van-leer pour les traceurs . Corriger et repasser . '
218           CALL ABORT
219      ENDIF
220
221      ENDDO
222c
223
224      CALL dynetat0("start.nc",nqmx,vcov,ucov,
225     .              teta,q,masse,ps,phis, time_0)
226
227      CALL defrun_new( 99, .TRUE. )
228
229
230c  on recalcule eventuellement le pas de temps
231
232      IF(MOD(day_step,iperiod).NE.0)
233     * STOP'Il faut choisir un nb de pas par jour multiple de iperiod'
234
235      IF(MOD(day_step,iphysiq).NE.0)
236     * STOP'Il faut choisir un nb de pas par jour multiple de iphysiq'
237
238      zdtvr    = daysec/FLOAT(day_step)
239        IF(dtvr.NE.zdtvr) THEN
240         PRINT*,'WARNING!!! changement de pas de temps',dtvr,'>',zdtvr
241        ENDIF
242
243c  nombre d'etats dans les fichiers demarrage et histoire
244
245      dtvr = zdtvr
246      CALL iniconst
247      CALL inigeom
248
249      CALL inifilr
250
251c
252c   ......    P.Le Van    ( modif  le 29/04/97 )   ......... 
253c
254
255      CALL inidissip ( lstardis, nitergdiv, nitergrot, niterh   ,
256     *                tetagdiv, tetagrot , tetatemp              )
257c
258
259      CALL pression ( ip1jmp1, ap, bp, ps, p       )
260
261      call dump2d(iip1,jjp1,ps,'PRESSION SURFACE')
262      CALL exner_hyb( ip1jmp1, ps, p,beta, pks, pk, pkf )
263
264c
265c  numero de stockage pour les fichiers de redemarrage:
266
267c-----------------------------------------------------------------------
268c   temps de depart et de fin:
269c   --------------------------
270
271      itau = 0
272      iday = day_ini+itau/day_step
273      time = FLOAT(itau-(iday-day_ini)*day_step)/day_step+time_0
274         IF(time.GT.1.) THEN
275          time = time-1.
276          iday = iday+1
277         ENDIF
278      itaufin   = nday*day_step
279c ********************************
280c      itaufin = 120   ! temporaire !!
281c ********************************
282      itaufinp1 = itaufin +1
283
284      day_end = day_ini + nday
285      PRINT 300, itau,itaufin,day_ini,day_end
286 300  FORMAT('1'/,15x,'run du pas',i7,2x,'au pas',i7,2x, 
287     . 'c''est a dire du jour',i7,3x,'au jour',i7//)
288
289      CALL dynredem0("restart.nc",day_end,anne_ini,phis,nqmx)
290
291      ecripar = .TRUE.
292
293      dtav = iperiod*dtvr/daysec
294
295
296c   Quelques initialisations pour les traceurs
297      call initial0(ijp1llm*nqmx,dq)
298c     istdyn=day_step/4     ! stockage toutes les 6h=1jour/4
299c     istphy=istdyn/iphysiq
300
301      write(*,*) "gcm: callgroupeun set to:",callgroupeun
302c-----------------------------------------------------------------------
303c   Debut de l'integration temporelle:
304c   ----------------------------------
305
306   1  CONTINUE
307c
308      IF( MOD( itau, 10* day_step ).EQ.0 )  THEN
309        CALL test_period ( ucov,vcov,teta,q,p,phis )
310        PRINT *,' ----   Test_period apres continue   OK ! -----', itau
311      ENDIF
312
313      if (callgroupeun) then
314        call groupeun(jjp1,llm,ucov,.true.)
315        call groupeun(jjm,llm,vcov,.true.)
316        call groupeun(jjp1,llm,teta,.true.)
317        call groupeun(jjp1,llm,masse,.true.)
318        call groupeun(jjp1,1,ps,.false.)
319      endif
320
321      CALL SCOPY( ijmllm ,vcov , 1, vcovm1 , 1 )
322      CALL SCOPY( ijp1llm,ucov , 1, ucovm1 , 1 )
323      CALL SCOPY( ijp1llm,teta , 1, tetam1 , 1 )
324      CALL SCOPY( ijp1llm,masse, 1, massem1, 1 )
325      CALL SCOPY( ip1jmp1, ps  , 1,   psm1 , 1 )
326
327      forward = .TRUE.
328      leapf   = .FALSE.
329      dt      =  dtvr
330
331c   ...    P.Le Van .26/04/94  ....
332
333      CALL SCOPY   ( ijp1llm,   masse, 1, finvmaold,     1 )
334      CALL filtreg ( finvmaold ,jjp1, llm, -2,2, .TRUE., 1 )
335
336
337   2  CONTINUE
338
339c-----------------------------------------------------------------------
340
341c   date:
342c   -----
343
344!      write(*,*) 'GCM: itau=',itau
345
346c   gestion des appels de la physique et des dissipations:
347c   ------------------------------------------------------
348c
349c   ...    P.Le Van  ( 6/02/95 )  ....
350
351      apphys = .FALSE.
352      statcl = .FALSE.
353      conser = .FALSE.
354      apdiss = .FALSE.
355
356      IF( purmats ) THEN
357         IF( MOD(itau,iconser) .EQ.0.AND.  forward    ) conser = .TRUE.
358         IF( MOD(itau,idissip ).EQ.0.AND..NOT.forward ) apdiss = .TRUE.
359         IF( MOD(itau,iphysiq ).EQ.0.AND..NOT.forward
360     $                              .AND.   physic    ) apphys = .TRUE.
361      ELSE
362         IF( MOD(itau   ,iconser) .EQ. 0              ) conser = .TRUE.
363         IF( MOD(itau+1,idissip)  .EQ. 0              ) apdiss = .TRUE.
364         IF( MOD(itau+1,iphysiq).EQ.0. AND. physic    ) apphys = .TRUE.
365      END IF
366
367c-----------------------------------------------------------------------
368c   calcul des tendances dynamiques:
369c   --------------------------------
370
371      CALL geopot  ( ip1jmp1, teta  , pk , pks,  phis  , phi   )
372c
373c
374      CALL caldyn
375     $  ( itau,ucov,vcov,teta,ps,masse,pk,pkf,phis ,
376     $    phi,conser,du,dv,dteta,dp,w, pbaru,pbarv, time+iday-day_ini )
377
378
379c-----------------------------------------------------------------------
380c   calcul des tendances advection des traceurs (dont l'humidite)
381c   -------------------------------------------------------------
382
383      if (tracer) then
384       IF( forward. OR . leapf )  THEN
385
386        DO iq = 1, nqmx
387c
388         IF ( iadv(iq).EQ.1.OR.iadv(iq).EQ.2 )  THEN
389            CALL traceur( iq,iadv,q,teta,pk,w, pbaru, pbarv, dq )
390
391         ELSE IF( iq.EQ. nqmx )   THEN
392c
393            iapp_tracvl = 5
394c
395cccc     iapp_tracvl est la frequence en pas du groupement des flux
396cccc      de masse pour  Van-Leer dans la routine  tracvl  .
397c
398
399            CALL vanleer(numvanle,iapp_tracvl,nqmx,q,pbaru,pbarv,
400     *                      p, masse, dq,  iadv(1), teta, pk     )
401
402c
403c                   ...  Modif  F.Codron  ....
404c
405         ENDIF
406c
407        ENDDO
408C
409c        IF (offline) THEN
410C maf stokage du flux de masse pour traceurs OFF-LINE
411
412c           CALL fluxstokenc(pbaru,pbarv,masse,teta,phi,phis,
413c    .   time_step, itau)
414
415c        ENDIF
416c
417      ENDIF
418          END IF   ! tracer
419
420
421c-----------------------------------------------------------------------
422c   integrations dynamique et traceurs:
423c   ----------------------------------
424
425       CALL integrd ( 2,vcovm1,ucovm1,tetam1,psm1,massem1 ,
426     $         dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps,masse,phis ,
427     $              finvmaold )
428
429c .P.Le Van (26/04/94  ajout de  finvpold dans l'appel d'integrd)
430c
431c-----------------------------------------------------------------------
432c   calcul des tendances physiques:
433c   -------------------------------
434c    ########   P.Le Van ( Modif le  6/02/95 )   ###########
435c
436       IF( purmats )  THEN
437          IF( itau.EQ.itaufin.AND..NOT.forward ) lafin = .TRUE.
438       ELSE
439          IF( itau+1. EQ. itaufin )              lafin = .TRUE.
440       ENDIF
441c
442c
443       IF( apphys )  THEN
444c
445c     .......   Ajout   P.Le Van ( 17/04/96 )   ...........
446c
447
448         CALL pression (  ip1jmp1, ap, bp, ps,  p      )
449         CALL exner_hyb(  ip1jmp1, ps, p,beta,pks, pk, pkf )
450
451           rdaym_ini  = itau * dtvr / daysec
452           rdayvrai   = rdaym_ini  + day_ini
453
454           IF ( ecritphy.LT.1. )  THEN
455             rday_ecri = rdaym_ini
456           ELSE
457             rday_ecri = INT( rdayvrai )
458           ENDIF
459c
460        CALL calfis( nqmx, lafin ,rdayvrai,rday_ecri,time  ,
461     $                 ucov,vcov,teta,q,masse,ps,p,pk,phis,phi ,
462     $     du,dv,dteta,dq,w, dufi,dvfi,dhfi,dqfi,dpfi,tracer)
463
464
465c      ajout des tendances physiques:
466c      ------------------------------
467          CALL addfi( nqmx, dtphys, leapf, forward   ,
468     $                  ucov, vcov, teta , q   ,ps , masse,
469     $                 dufi, dvfi, dhfi , dqfi ,dpfi  )
470c
471       ENDIF
472
473       CALL pression ( ip1jmp1, ap, bp, ps, p                  )
474
475       CALL exner_hyb( ip1jmp1, ps, p,beta, pks, pk, pkf )
476c   ----------------------------------------------------------
477
478c
479c
480c   dissipation horizontale et verticale  des petites echelles:
481c   ----------------------------------------------------------
482
483
484      IF(apdiss) THEN
485
486c        Sponge layer
487c        ~~~~~~~~~~~~
488         DO ij=1, ip1jmp1
489            pext(ij)=ps(ij)*aire(ij)
490         ENDDO
491         IF (callsponge) THEN
492            CALL sponge(ucov,vcov,teta,pext,dtdiss,mode_sponge)
493         ENDIF
494
495c        Dissipation horizontale
496c        ~~~~~~~~~~~~~~~~~~~~~~~
497         CALL dissip(vcov,ucov,teta,p,dvdis,dudis,dhdis)
498
499         CALL addit( ijp1llm,ucov ,dudis,ucov )
500         CALL addit( ijmllm ,vcov ,dvdis,vcov )
501         CALL addit( ijp1llm,teta ,dhdis,teta )
502
503
504c    .......        P. Le Van (  ajout  le 17/04/96  )   ...........
505c   ...      Calcul de la valeur moyenne, unique de h aux poles  .....
506c
507
508        DO l  =  1, llm
509          DO ij =  1,iim
510           tppn(ij)  = aire(  ij    ) * teta(  ij    ,l)
511           tpps(ij)  = aire(ij+ip1jm) * teta(ij+ip1jm,l)
512          ENDDO
513
514           tpn  = SSUM(iim,tppn,1)/apoln
515           tps  = SSUM(iim,tpps,1)/apols
516
517          DO ij = 1, iip1
518           teta(  ij    ,l) = tpn
519           teta(ij+ip1jm,l) = tps
520          ENDDO
521        ENDDO
522
523        DO ij =  1,iim
524          tppn(ij)  = aire(  ij    ) * ps (  ij    )
525          tpps(ij)  = aire(ij+ip1jm) * ps (ij+ip1jm)
526        ENDDO
527          tpn  = SSUM(iim,tppn,1)/apoln
528
529          tps  = SSUM(iim,tpps,1)/apols
530
531        DO ij = 1, iip1
532          ps(  ij    ) = tpn
533          ps(ij+ip1jm) = tps
534        ENDDO
535
536
537      END IF
538       
539c   ********************************************************************
540c   ********************************************************************
541c   .... fin de l'integration dynamique  et physique pour le pas itau ..
542c   ********************************************************************
543c   ********************************************************************
544
545c   preparation du pas d'integration suivant  ......
546
547      IF ( .NOT.purmats ) THEN
548c       ........................................................
549c       ..............  schema matsuno + leapfrog  ..............
550c       ........................................................
551
552            IF(forward. OR. leapf) THEN
553              itau= itau + 1
554              iday= day_ini+itau/day_step
555              time= FLOAT(itau-(iday-day_ini)*day_step)/day_step+time_0
556                IF(time.GT.1.) THEN
557                  time = time-1.
558                  iday = iday+1
559                ENDIF
560            ENDIF
561
562
563            IF( itau. EQ. itaufinp1 ) then 
564              abort_message = 'Simulation finished'
565              call abort_gcm(modname,abort_message,0)
566            ENDIF
567c-----------------------------------------------------------------------
568c   ecriture du fichier histoire moyenne:
569c   -------------------------------------
570
571c           IF(MOD(itau,iperiod).EQ.0 .OR. itau.EQ.itaufin) THEN
572c              IF(itau.EQ.itaufin) THEN
573c                 iav=1
574c              ELSE
575c                 iav=0
576c              ENDIF
577c              CALL writedynav(histaveid, nqmx, itau,vcov ,
578c    ,                          ucov,teta,pk,phi,q,masse,ps,phis)
579c           ENDIF
580
581c-----------------------------------------------------------------------
582
583
584            IF(itau.EQ.itaufin) THEN
585
586
587       PRINT *,' Appel test_period avant redem ', itau
588       CALL test_period ( ucov,vcov,teta,q,p,phis )
589       CALL dynredem1("restart.nc",0.0,
590     .                     vcov,ucov,teta,q,nqmx,masse,ps)
591
592              CLOSE(99)
593            ENDIF
594
595c-----------------------------------------------------------------------
596c   gestion de l'integration temporelle:
597c   ------------------------------------
598
599            IF( MOD(itau,iperiod).EQ.0 )    THEN
600                    GO TO 1
601            ELSE IF ( MOD(itau-1,iperiod). EQ. 0 ) THEN
602
603                   IF( forward )  THEN
604c      fin du pas forward et debut du pas backward
605
606                      forward = .FALSE.
607                        leapf = .FALSE.
608                           GO TO 2
609
610                   ELSE
611c      fin du pas backward et debut du premier pas leapfrog
612
613                        leapf =  .TRUE.
614                        dt  =  2.*dtvr
615                        GO TO 2
616                   END IF
617            ELSE
618
619c      ......   pas leapfrog  .....
620
621                 leapf = .TRUE.
622                 dt  = 2.*dtvr
623                 GO TO 2
624            END IF
625
626      ELSE
627
628c       ........................................................
629c       ..............       schema  matsuno        ...............
630c       ........................................................
631            IF( forward )  THEN
632
633             itau =  itau + 1
634             iday = day_ini+itau/day_step
635             time = FLOAT(itau-(iday-day_ini)*day_step)/day_step+time_0
636
637                  IF(time.GT.1.) THEN
638                   time = time-1.
639                   iday = iday+1
640                  ENDIF
641
642               forward =  .FALSE.
643               IF( itau. EQ. itaufinp1 ) then 
644                 abort_message = 'Simulation finished'
645                 call abort_gcm(modname,abort_message,0)
646               ENDIF
647               GO TO 2
648
649            ELSE
650
651            IF(MOD(itau,iperiod).EQ.0 .OR. itau.EQ.itaufin) THEN
652               IF(itau.EQ.itaufin) THEN
653                  iav=1
654               ELSE
655                  iav=0
656               ENDIF
657c              CALL writedynav(histaveid, nqmx, itau,vcov ,
658c    ,                          ucov,teta,pk,phi,q,masse,ps,phis)
659
660            ENDIF
661
662
663                 IF(itau.EQ.itaufin)
664     . CALL dynredem1("restart.nc",0.0,
665     .                     vcov,ucov,teta,q,nqmx,masse,ps)
666
667                 forward = .TRUE.
668                 GO TO  1
669
670
671            ENDIF
672
673      END IF
674
675      STOP
676      END
Note: See TracBrowser for help on using the repository browser.