source: LMDZ5/trunk/libf/dyn3d/conf_gcm.F @ 1674

Last change on this file since 1674 was 1577, checked in by Laurent Fairhead, 13 years ago

Modifications au code qui permettent de commencer une simulation à n'importe
quelle heure de la journée. On fait toujours un nombre entier de jours de
simulation.
On spécifie cette heure de départ dans la variable starttime du run.def (la
valeur est en jour et elle est à zéro par défaut).
La valeur est sauvegardée dans le fichier restart.nc. Les valeurs lues dans
le fichier start et le run.def sont comparées en début de simulation. La
simulation s'arrête si elles ne sont pas égales sauf si une remise à zéro de
la date a été demandée.
Par ailleurs, la fréquence de lecture des conditions aux limites a été modifiée
pour qu'à chaque changement de jour, celles-ci soient mises à jour (jusqu'à
maintenant elles étaient mises à jour à une fréquence donnée qui, en cas de
départ de simulation à une heure différente de minuit, ne correspondait pas
forcèment à un changement dans la date).
Validation effectuée en traçant le flux solaire descendant au sommet de
l'atmosphère à différentes heures de la journée, après un redémarrage, en
s'assurant que le maximum est bien là où il est sensé être.


Modifications to the code to enable it to be started at any time of the day.
The code still runs for an integer number of days.
The start time is specified using variable starttime in the run.def file (the
value is in days and is zero by default).
The start time is saved in the restart.nc file at the end of the simulation.
The values read in from the start.nc file and the run.def file are compared
at the start of the simulation. If they differ, the simulation is aborted
unless the raz_date variable has been set.
Furthermore, the frequency at which boundary conditions are read in has been
modified so that they are updated everyday at midnight (until now, they were
updated at a certain frequency that, in case of a simulation starting at a time
other than midnight, did not ensure that those conditions would be updated each
day at midnight)
The modifications were validated by plotting the downward solaf flux at TOA at
different times of the day (and after having restarted the simulation) and
ensuring that the maximum of flux was at the right place according to local
time.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 28.7 KB
Line 
1!
2! $Id: conf_gcm.F 1577 2011-10-20 15:06:47Z emillour $
3!
4c
5c
6      SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 )
7c
8      USE control_mod
9#ifdef CPP_IOIPSL
10      use IOIPSL
11#else
12! if not using IOIPSL, we still need to use (a local version of) getin
13      use ioipsl_getincom
14#endif
15      USE infotrac, ONLY : type_trac
16      IMPLICIT NONE
17c-----------------------------------------------------------------------
18c     Auteurs :   L. Fairhead , P. Le Van  .
19c
20c     Arguments :
21c
22c     tapedef   :
23c     etatinit  :     = TRUE   , on ne  compare pas les valeurs des para-
24c     -metres  du zoom  avec  celles lues sur le fichier start .
25c      clesphy0 :  sortie  .
26c
27       LOGICAL etatinit
28       INTEGER tapedef
29
30       INTEGER        longcles
31       PARAMETER(     longcles = 20 )
32       REAL clesphy0( longcles )
33c
34c   Declarations :
35c   --------------
36#include "dimensions.h"
37#include "paramet.h"
38#include "logic.h"
39#include "serre.h"
40#include "comdissnew.h"
41#include "temps.h"
42#include "comconst.h"
43
44! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
45! #include "clesphys.h"
46#include "iniprint.h"
47c
48c
49c   local:
50c   ------
51
52      CHARACTER ch1*72,ch2*72,ch3*72,ch4*12
53      REAL clonn,clatt,grossismxx,grossismyy
54      REAL dzoomxx,dzoomyy, tauxx,tauyy
55      LOGICAL  fxyhypbb, ysinuss
56      INTEGER i
57      LOGICAL use_filtre_fft
58c
59c  -------------------------------------------------------------------
60c
61c       .........     Version  du 29/04/97       ..........
62c
63c   Nouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot,
64c      tetatemp   ajoutes  pour la dissipation   .
65c
66c   Autre parametre ajoute en fin de liste de tapedef : ** fxyhypb **
67c
68c  Si fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb.
69c    Sinon , choix de fxynew  , a derivee sinusoidale  ..
70c
71c   ......  etatinit = . TRUE. si defrun  est appele dans ETAT0_LMD  ou
72c         LIMIT_LMD  pour l'initialisation de start.dat (dic) et
73c                de limit.dat ( dic)                        ...........
74c           Sinon  etatinit = . FALSE .
75c
76c   Donc etatinit = .F.  si on veut comparer les valeurs de  grossismx ,
77c    grossismy,clon,clat, fxyhypb  lues sur  le fichier  start  avec
78c   celles passees  par run.def ,  au debut du gcm, apres l'appel a
79c    lectba . 
80c   Ces parmetres definissant entre autres la grille et doivent etre
81c   pareils et coherents , sinon il y aura  divergence du gcm .
82c
83c-----------------------------------------------------------------------
84c   initialisations:
85c   ----------------
86
87!Config  Key  = lunout
88!Config  Desc = unite de fichier pour les impressions
89!Config  Def  = 6
90!Config  Help = unite de fichier pour les impressions
91!Config         (defaut sortie standard = 6)
92      lunout=6
93      CALL getin('lunout', lunout)
94      IF (lunout /= 5 .and. lunout /= 6) THEN
95        OPEN(lunout,FILE='lmdz.out')
96      ENDIF
97
98!Config  Key  = prt_level
99!Config  Desc = niveau d'impressions de débogage
100!Config  Def  = 0
101!Config  Help = Niveau d'impression pour le débogage
102!Config         (0 = minimum d'impression)
103      prt_level = 0
104      CALL getin('prt_level',prt_level)
105
106c-----------------------------------------------------------------------
107c  Parametres de controle du run:
108c-----------------------------------------------------------------------
109!Config  Key  = planet_type
110!Config  Desc = planet type ("earth", "mars", "venus", ...)
111!Config  Def  = earth
112!Config  Help = this flag sets the type of atymosphere that is considered
113      planet_type="earth"
114      CALL getin('planet_type',planet_type)
115
116!Config  Key  = calend
117!Config  Desc = type de calendrier utilise
118!Config  Def  = earth_360d
119!Config  Help = valeur possible: earth_360d, earth_365d, earth_366d
120!Config         
121      calend = 'earth_360d'
122      CALL getin('calend', calend)
123
124!Config  Key  = dayref
125!Config  Desc = Jour de l'etat initial
126!Config  Def  = 1
127!Config  Help = Jour de l'etat initial ( = 350  si 20 Decembre ,
128!Config         par expl. ,comme ici ) ... A completer
129      dayref=1
130      CALL getin('dayref', dayref)
131
132!Config  Key  = anneeref
133!Config  Desc = Annee de l'etat initial
134!Config  Def  = 1998
135!Config  Help = Annee de l'etat  initial
136!Config         (   avec  4  chiffres   ) ... A completer
137      anneeref = 1998
138      CALL getin('anneeref',anneeref)
139
140!Config  Key  = raz_date
141!Config  Desc = Remise a zero de la date initiale
142!Config  Def  = 0 (pas de remise a zero)
143!Config  Help = Remise a zero de la date initiale
144!Config         0 pas de remise a zero, on garde la date du fichier restart
145!Config         1 prise en compte de la date de gcm.def avec remise a zero
146!Config         des compteurs de pas de temps
147      raz_date = 0
148      CALL getin('raz_date', raz_date)
149
150!Config  Key  = nday
151!Config  Desc = Nombre de jours d'integration
152!Config  Def  = 10
153!Config  Help = Nombre de jours d'integration
154!Config         ... On pourait aussi permettre des mois ou des annees !
155      nday = 10
156      CALL getin('nday',nday)
157
158!Config  Key  = starttime
159!Config  Desc = Heure de depart de la simulation
160!Config  Def  = 0
161!Config  Help = Heure de depart de la simulation
162!Config         en jour
163      starttime = 0
164      CALL getin('starttime',starttime)
165
166!Config  Key  = day_step
167!Config  Desc = nombre de pas par jour
168!Config  Def  = 240
169!Config  Help = nombre de pas par jour (multiple de iperiod) (
170!Config          ici pour  dt = 1 min )
171       day_step = 240
172       CALL getin('day_step',day_step)
173
174!Config  Key  = nsplit_phys
175!Config  Desc = nombre de pas par jour
176!Config  Def  = 1
177!Config  Help = nombre de pas par jour (multiple de iperiod) (
178!Config          ici pour  dt = 1 min )
179       nsplit_phys = 1
180       CALL getin('nsplit_phys',nsplit_phys)
181
182!Config  Key  = iperiod
183!Config  Desc = periode pour le pas Matsuno
184!Config  Def  = 5
185!Config  Help = periode pour le pas Matsuno (en pas de temps)
186       iperiod = 5
187       CALL getin('iperiod',iperiod)
188
189!Config  Key  = iapp_tracvl
190!Config  Desc = frequence du groupement des flux
191!Config  Def  = iperiod
192!Config  Help = frequence du groupement des flux (en pas de temps)
193       iapp_tracvl = iperiod
194       CALL getin('iapp_tracvl',iapp_tracvl)
195
196!Config  Key  = iconser
197!Config  Desc = periode de sortie des variables de controle
198!Config  Def  = 240 
199!Config  Help = periode de sortie des variables de controle
200!Config         (En pas de temps)
201       iconser = 240 
202       CALL getin('iconser', iconser)
203
204!Config  Key  = iecri
205!Config  Desc = periode d'ecriture du fichier histoire
206!Config  Def  = 1
207!Config  Help = periode d'ecriture du fichier histoire (en jour)
208       iecri = 1
209       CALL getin('iecri',iecri)
210
211
212!Config  Key  = periodav
213!Config  Desc = periode de stockage fichier histmoy
214!Config  Def  = 1
215!Config  Help = periode de stockage fichier histmoy (en jour)
216       periodav = 1.
217       CALL getin('periodav',periodav)
218
219!Config  Key  = output_grads_dyn
220!Config  Desc = output dynamics diagnostics in 'dyn.dat' file
221!Config  Def  = n
222!Config  Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file
223       output_grads_dyn=.false.
224       CALL getin('output_grads_dyn',output_grads_dyn)
225
226!Config  Key  = dissip_period
227!Config  Desc = periode de la dissipation
228!Config  Def  = 0
229!Config  Help = periode de la dissipation
230!Config  dissip_period=0 => la valeur sera calcule dans inidissip       
231!Config  dissip_period>0 => on prend cette valeur
232       dissip_period = 0
233       CALL getin('dissip_period',dissip_period)
234
235ccc  ....   P. Le Van , modif le 29/04/97 .pour la dissipation  ...
236ccc
237
238!Config  Key  = lstardis
239!Config  Desc = choix de l'operateur de dissipation
240!Config  Def  = y
241!Config  Help = choix de l'operateur de dissipation
242!Config         'y' si on veut star et 'n' si on veut non-start !
243!Config         Moi y en a pas comprendre !
244       lstardis = .TRUE.
245       CALL getin('lstardis',lstardis)
246
247
248!Config  Key  = nitergdiv
249!Config  Desc = Nombre d'iteration de gradiv
250!Config  Def  = 1
251!Config  Help = nombre d'iterations de l'operateur de dissipation
252!Config         gradiv
253       nitergdiv = 1
254       CALL getin('nitergdiv',nitergdiv)
255
256!Config  Key  = nitergrot
257!Config  Desc = nombre d'iterations de nxgradrot
258!Config  Def  = 2
259!Config  Help = nombre d'iterations de l'operateur de dissipation 
260!Config         nxgradrot
261       nitergrot = 2
262       CALL getin('nitergrot',nitergrot)
263
264
265!Config  Key  = niterh
266!Config  Desc = nombre d'iterations de divgrad
267!Config  Def  = 2
268!Config  Help = nombre d'iterations de l'operateur de dissipation
269!Config         divgrad
270       niterh = 2
271       CALL getin('niterh',niterh)
272
273
274!Config  Key  = tetagdiv
275!Config  Desc = temps de dissipation pour div
276!Config  Def  = 7200
277!Config  Help = temps de dissipation des plus petites longeur
278!Config         d'ondes pour u,v (gradiv)
279       tetagdiv = 7200.
280       CALL getin('tetagdiv',tetagdiv)
281
282!Config  Key  = tetagrot
283!Config  Desc = temps de dissipation pour grad
284!Config  Def  = 7200
285!Config  Help = temps de dissipation des plus petites longeur
286!Config         d'ondes pour u,v (nxgradrot)
287       tetagrot = 7200.
288       CALL getin('tetagrot',tetagrot)
289
290!Config  Key  = tetatemp
291!Config  Desc = temps de dissipation pour h
292!Config  Def  = 7200
293!Config  Help =  temps de dissipation des plus petites longeur
294!Config         d'ondes pour h (divgrad)   
295       tetatemp  = 7200.
296       CALL getin('tetatemp',tetatemp )
297
298! Parametres controlant la variation sur la verticale des constantes de
299! dissipation.
300! Pour le moment actifs uniquement dans la version a 39 niveaux
301! avec ok_strato=y
302
303       dissip_factz=4.
304       dissip_deltaz=10.
305       dissip_zref=30.
306       CALL getin('dissip_factz',dissip_factz )
307       CALL getin('dissip_deltaz',dissip_deltaz )
308       CALL getin('dissip_zref',dissip_zref )
309
310       iflag_top_bound=1
311       tau_top_bound=1.e-5
312       CALL getin('iflag_top_bound',iflag_top_bound)
313       CALL getin('tau_top_bound',tau_top_bound)
314
315!Config  Key  = coefdis
316!Config  Desc = coefficient pour gamdissip
317!Config  Def  = 0
318!Config  Help = coefficient pour gamdissip 
319       coefdis = 0.
320       CALL getin('coefdis',coefdis)
321
322!Config  Key  = purmats
323!Config  Desc = Schema d'integration
324!Config  Def  = n
325!Config  Help = Choix du schema d'integration temporel.
326!Config         y = pure Matsuno sinon c'est du Matsuno-leapfrog
327       purmats = .FALSE.
328       CALL getin('purmats',purmats)
329
330!Config  Key  = ok_guide
331!Config  Desc = Guidage
332!Config  Def  = n
333!Config  Help = Guidage
334       ok_guide = .FALSE.
335       CALL getin('ok_guide',ok_guide)
336
337c    ...............................................................
338
339!Config  Key  =  read_start
340!Config  Desc = Initialize model using a 'start.nc' file
341!Config  Def  = y
342!Config  Help = y: intialize dynamical fields using a 'start.nc' file
343!               n: fields are initialized by 'iniacademic' routine
344       read_start= .true.
345       CALL getin('read_start',read_start)
346
347!Config  Key  = iflag_phys
348!Config  Desc = Avec ls physique
349!Config  Def  = 1
350!Config  Help = Permet de faire tourner le modele sans
351!Config         physique.
352       iflag_phys = 1
353       CALL getin('iflag_phys',iflag_phys)
354
355
356!Config  Key  =  iphysiq
357!Config  Desc = Periode de la physique
358!Config  Def  = 5
359!Config  Help = Periode de la physique en pas de temps de la dynamique.
360       iphysiq = 5
361       CALL getin('iphysiq', iphysiq)
362
363!Config  Key  = ip_ebil_dyn
364!Config  Desc = PRINT level for energy conserv. diag.
365!Config  Def  = 0
366!Config  Help = PRINT level for energy conservation diag. ;
367!               les options suivantes existent :
368!Config         0 pas de print
369!Config         1 pas de print
370!Config         2 print,
371       ip_ebil_dyn = 0
372       CALL getin('ip_ebil_dyn',ip_ebil_dyn)
373!
374
375      DO i = 1, longcles
376       clesphy0(i) = 0.
377      ENDDO
378
379ccc  ....   P. Le Van , ajout  le 7/03/95 .pour le zoom ...
380c     .........   (  modif  le 17/04/96 )   .........
381c
382      IF( etatinit ) GO TO 100
383
384!Config  Key  = clon
385!Config  Desc = centre du zoom, longitude
386!Config  Def  = 0
387!Config  Help = longitude en degres du centre
388!Config         du zoom
389       clonn = 0.
390       CALL getin('clon',clonn)
391
392!Config  Key  = clat
393!Config  Desc = centre du zoom, latitude
394!Config  Def  = 0
395!Config  Help = latitude en degres du centre du zoom
396!Config         
397       clatt = 0.
398       CALL getin('clat',clatt)
399
400c
401c
402      IF( ABS(clat - clatt).GE. 0.001 )  THEN
403        write(lunout,*)'conf_gcm: La valeur de clat passee par run.def',
404     &    ' est differente de celle lue sur le fichier  start '
405        STOP
406      ENDIF
407
408!Config  Key  = grossismx
409!Config  Desc = zoom en longitude
410!Config  Def  = 1.0
411!Config  Help = facteur de grossissement du zoom,
412!Config         selon la longitude
413       grossismxx = 1.0
414       CALL getin('grossismx',grossismxx)
415
416
417      IF( ABS(grossismx - grossismxx).GE. 0.001 )  THEN
418        write(lunout,*)'conf_gcm: La valeur de grossismx passee par ',
419     &  'run.def est differente de celle lue sur le fichier  start '
420        STOP
421      ENDIF
422
423!Config  Key  = grossismy
424!Config  Desc = zoom en latitude
425!Config  Def  = 1.0
426!Config  Help = facteur de grossissement du zoom,
427!Config         selon la latitude
428       grossismyy = 1.0
429       CALL getin('grossismy',grossismyy)
430
431      IF( ABS(grossismy - grossismyy).GE. 0.001 )  THEN
432        write(lunout,*)'conf_gcm: La valeur de grossismy passee par ',
433     & 'run.def est differente de celle lue sur le fichier  start '
434        STOP
435      ENDIF
436     
437      IF( grossismx.LT.1. )  THEN
438        write(lunout,*)
439     &       'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
440         STOP
441      ELSE
442         alphax = 1. - 1./ grossismx
443      ENDIF
444
445
446      IF( grossismy.LT.1. )  THEN
447        write(lunout,*)
448     &       'conf_gcm: ***  ATTENTION !! grossismy < 1 .   *** '
449         STOP
450      ELSE
451         alphay = 1. - 1./ grossismy
452      ENDIF
453
454      write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay
455c
456c    alphax et alphay sont les anciennes formulat. des grossissements
457c
458c
459
460!Config  Key  = fxyhypb
461!Config  Desc = Fonction  hyperbolique
462!Config  Def  = y
463!Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
464!Config         sinon  sinusoidale
465       fxyhypbb = .TRUE.
466       CALL getin('fxyhypb',fxyhypbb)
467
468      IF( .NOT.fxyhypb )  THEN
469         IF( fxyhypbb )     THEN
470            write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
471            write(lunout,*)' *** fxyhypb lu sur le fichier start est ',
472     *       'F alors  qu il est  T  sur  run.def  ***'
473              STOP
474         ENDIF
475      ELSE
476         IF( .NOT.fxyhypbb )   THEN
477            write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
478            write(lunout,*)' ***  fxyhypb lu sur le fichier start est ',
479     *        'T alors  qu il est  F  sur  run.def  ****  '
480              STOP
481         ENDIF
482      ENDIF
483c
484!Config  Key  = dzoomx
485!Config  Desc = extension en longitude
486!Config  Def  = 0
487!Config  Help = extension en longitude  de la zone du zoom 
488!Config         ( fraction de la zone totale)
489       dzoomxx = 0.0
490       CALL getin('dzoomx',dzoomxx)
491
492      IF( fxyhypb )  THEN
493       IF( ABS(dzoomx - dzoomxx).GE. 0.001 )  THEN
494        write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ',
495     *  'run.def est differente de celle lue sur le fichier  start '
496        STOP
497       ENDIF
498      ENDIF
499
500!Config  Key  = dzoomy
501!Config  Desc = extension en latitude
502!Config  Def  = 0
503!Config  Help = extension en latitude de la zone  du zoom 
504!Config         ( fraction de la zone totale)
505       dzoomyy = 0.0
506       CALL getin('dzoomy',dzoomyy)
507
508      IF( fxyhypb )  THEN
509       IF( ABS(dzoomy - dzoomyy).GE. 0.001 )  THEN
510        write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ',
511     * 'run.def est differente de celle lue sur le fichier  start '
512        STOP
513       ENDIF
514      ENDIF
515     
516!Config  Key  = taux
517!Config  Desc = raideur du zoom en  X
518!Config  Def  = 3
519!Config  Help = raideur du zoom en  X
520       tauxx = 3.0
521       CALL getin('taux',tauxx)
522
523      IF( fxyhypb )  THEN
524       IF( ABS(taux - tauxx).GE. 0.001 )  THEN
525        write(lunout,*)'conf_gcm: La valeur de taux passee par ',
526     * 'run.def est differente de celle lue sur le fichier  start '
527        STOP
528       ENDIF
529      ENDIF
530
531!Config  Key  = tauyy
532!Config  Desc = raideur du zoom en  Y
533!Config  Def  = 3
534!Config  Help = raideur du zoom en  Y
535       tauyy = 3.0
536       CALL getin('tauy',tauyy)
537
538      IF( fxyhypb )  THEN
539       IF( ABS(tauy - tauyy).GE. 0.001 )  THEN
540        write(lunout,*)'conf_gcm: La valeur de tauy passee par ',
541     * 'run.def est differente de celle lue sur le fichier  start '
542        STOP
543       ENDIF
544      ENDIF
545
546cc
547      IF( .NOT.fxyhypb  )  THEN
548
549!Config  Key  = ysinus
550!Config  IF   = !fxyhypb
551!Config  Desc = Fonction en Sinus
552!Config  Def  = y
553!Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
554!Config         sinon y = latit.
555       ysinuss = .TRUE.
556       CALL getin('ysinus',ysinuss)
557
558        IF( .NOT.ysinus )  THEN
559          IF( ysinuss )     THEN
560            write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
561            write(lunout,*)' *** ysinus lu sur le fichier start est F',
562     *       ' alors  qu il est  T  sur  run.def  ***'
563            STOP
564          ENDIF
565        ELSE
566          IF( .NOT.ysinuss )   THEN
567            write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
568            write(lunout,*)' *** ysinus lu sur le fichier start est T',
569     *        ' alors  qu il est  F  sur  run.def  ****  '
570              STOP
571          ENDIF
572        ENDIF
573      ENDIF ! of IF( .NOT.fxyhypb  )
574c
575!Config  Key  = offline
576!Config  Desc = Nouvelle eau liquide
577!Config  Def  = n
578!Config  Help = Permet de mettre en route la
579!Config         nouvelle parametrisation de l'eau liquide !
580       offline = .FALSE.
581       CALL getin('offline',offline)
582     
583!Config  Key  = type_trac
584!Config  Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
585!Config  Def  = lmdz
586!Config  Help =
587!Config         'lmdz' = pas de couplage, pur LMDZ
588!Config         'inca' = model de chime INCA
589!Config         'repr' = model de chime REPROBUS
590      type_trac = 'lmdz'
591      CALL getin('type_trac',type_trac)
592
593!Config  Key  = config_inca
594!Config  Desc = Choix de configuration de INCA
595!Config  Def  = none
596!Config  Help = Choix de configuration de INCA :
597!Config         'none' = sans INCA
598!Config         'chem' = INCA avec calcul de chemie
599!Config         'aero' = INCA avec calcul des aerosols
600      config_inca = 'none'
601      CALL getin('config_inca',config_inca)
602
603!Config  Key  = ok_dynzon
604!Config  Desc = calcul et sortie des transports
605!Config  Def  = n
606!Config  Help = Permet de mettre en route le calcul des transports
607!Config         
608      ok_dynzon = .FALSE.
609      CALL getin('ok_dynzon',ok_dynzon)
610
611!Config  Key  = ok_dyn_ins
612!Config  Desc = sorties instantanees dans la dynamique
613!Config  Def  = n
614!Config  Help =
615!Config         
616      ok_dyn_ins = .FALSE.
617      CALL getin('ok_dyn_ins',ok_dyn_ins)
618
619!Config  Key  = ok_dyn_ave
620!Config  Desc = sorties moyennes dans la dynamique
621!Config  Def  = n
622!Config  Help =
623!Config         
624      ok_dyn_ave = .FALSE.
625      CALL getin('ok_dyn_ave',ok_dyn_ave)
626
627
628      write(lunout,*)' #########################################'
629      write(lunout,*)' Configuration des parametres du gcm: '
630      write(lunout,*)' planet_type = ', planet_type
631      write(lunout,*)' calend = ', calend
632      write(lunout,*)' dayref = ', dayref
633      write(lunout,*)' anneeref = ', anneeref
634      write(lunout,*)' nday = ', nday
635      write(lunout,*)' day_step = ', day_step
636      write(lunout,*)' iperiod = ', iperiod
637      write(lunout,*)' iconser = ', iconser
638      write(lunout,*)' iecri = ', iecri
639      write(lunout,*)' periodav = ', periodav
640      write(lunout,*)' output_grads_dyn = ', output_grads_dyn
641      write(lunout,*)' dissip_period = ', dissip_period
642      write(lunout,*)' lstardis = ', lstardis
643      write(lunout,*)' nitergdiv = ', nitergdiv
644      write(lunout,*)' nitergrot = ', nitergrot
645      write(lunout,*)' niterh = ', niterh
646      write(lunout,*)' tetagdiv = ', tetagdiv
647      write(lunout,*)' tetagrot = ', tetagrot
648      write(lunout,*)' tetatemp = ', tetatemp
649      write(lunout,*)' coefdis = ', coefdis
650      write(lunout,*)' purmats = ', purmats
651      write(lunout,*)' read_start = ', read_start
652      write(lunout,*)' iflag_phys = ', iflag_phys
653      write(lunout,*)' iphysiq = ', iphysiq
654      write(lunout,*)' clonn = ', clonn
655      write(lunout,*)' clatt = ', clatt
656      write(lunout,*)' grossismx = ', grossismx
657      write(lunout,*)' grossismy = ', grossismy
658      write(lunout,*)' fxyhypbb = ', fxyhypbb
659      write(lunout,*)' dzoomxx = ', dzoomxx
660      write(lunout,*)' dzoomy = ', dzoomyy
661      write(lunout,*)' tauxx = ', tauxx
662      write(lunout,*)' tauyy = ', tauyy
663      write(lunout,*)' offline = ', offline
664      write(lunout,*)' type_trac = ', type_trac
665      write(lunout,*)' config_inca = ', config_inca
666      write(lunout,*)' ok_dynzon = ', ok_dynzon
667      write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
668      write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
669
670      RETURN
671c   ...............................................
672c
673100   CONTINUE
674!Config  Key  = clon
675!Config  Desc = centre du zoom, longitude
676!Config  Def  = 0
677!Config  Help = longitude en degres du centre
678!Config         du zoom
679       clon = 0.
680       CALL getin('clon',clon)
681
682!Config  Key  = clat
683!Config  Desc = centre du zoom, latitude
684!Config  Def  = 0
685!Config  Help = latitude en degres du centre du zoom
686!Config         
687       clat = 0.
688       CALL getin('clat',clat)
689
690!Config  Key  = grossismx
691!Config  Desc = zoom en longitude
692!Config  Def  = 1.0
693!Config  Help = facteur de grossissement du zoom,
694!Config         selon la longitude
695       grossismx = 1.0
696       CALL getin('grossismx',grossismx)
697
698!Config  Key  = grossismy
699!Config  Desc = zoom en latitude
700!Config  Def  = 1.0
701!Config  Help = facteur de grossissement du zoom,
702!Config         selon la latitude
703       grossismy = 1.0
704       CALL getin('grossismy',grossismy)
705
706      IF( grossismx.LT.1. )  THEN
707        write(lunout,*)
708     &   'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
709         STOP
710      ELSE
711         alphax = 1. - 1./ grossismx
712      ENDIF
713
714
715      IF( grossismy.LT.1. )  THEN
716        write(lunout,*)
717     &  'conf_gcm: ***  ATTENTION !! grossismy < 1 .   *** '
718         STOP
719      ELSE
720         alphay = 1. - 1./ grossismy
721      ENDIF
722
723      write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay
724c
725c    alphax et alphay sont les anciennes formulat. des grossissements
726c
727c
728
729!Config  Key  = fxyhypb
730!Config  Desc = Fonction  hyperbolique
731!Config  Def  = y
732!Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
733!Config         sinon  sinusoidale
734       fxyhypb = .TRUE.
735       CALL getin('fxyhypb',fxyhypb)
736
737!Config  Key  = dzoomx
738!Config  Desc = extension en longitude
739!Config  Def  = 0
740!Config  Help = extension en longitude  de la zone du zoom 
741!Config         ( fraction de la zone totale)
742       dzoomx = 0.0
743       CALL getin('dzoomx',dzoomx)
744
745!Config  Key  = dzoomy
746!Config  Desc = extension en latitude
747!Config  Def  = 0
748!Config  Help = extension en latitude de la zone  du zoom 
749!Config         ( fraction de la zone totale)
750       dzoomy = 0.0
751       CALL getin('dzoomy',dzoomy)
752
753!Config  Key  = taux
754!Config  Desc = raideur du zoom en  X
755!Config  Def  = 3
756!Config  Help = raideur du zoom en  X
757       taux = 3.0
758       CALL getin('taux',taux)
759
760!Config  Key  = tauy
761!Config  Desc = raideur du zoom en  Y
762!Config  Def  = 3
763!Config  Help = raideur du zoom en  Y
764       tauy = 3.0
765       CALL getin('tauy',tauy)
766
767!Config  Key  = ysinus
768!Config  IF   = !fxyhypb
769!Config  Desc = Fonction en Sinus
770!Config  Def  = y
771!Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
772!Config         sinon y = latit.
773       ysinus = .TRUE.
774       CALL getin('ysinus',ysinus)
775c
776!Config  Key  = offline
777!Config  Desc = Nouvelle eau liquide
778!Config  Def  = n
779!Config  Help = Permet de mettre en route la
780!Config         nouvelle parametrisation de l'eau liquide !
781       offline = .FALSE.
782       CALL getin('offline',offline)
783
784!Config  Key  = type_trac
785!Config  Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
786!Config  Def  = lmdz
787!Config  Help =
788!Config         'lmdz' = pas de couplage, pur LMDZ
789!Config         'inca' = model de chime INCA
790!Config         'repr' = model de chime REPROBUS
791      type_trac = 'lmdz'
792      CALL getin('type_trac',type_trac)
793
794!Config  Key  = config_inca
795!Config  Desc = Choix de configuration de INCA
796!Config  Def  = none
797!Config  Help = Choix de configuration de INCA :
798!Config         'none' = sans INCA
799!Config         'chem' = INCA avec calcul de chemie
800!Config         'aero' = INCA avec calcul des aerosols
801      config_inca = 'none'
802      CALL getin('config_inca',config_inca)
803
804!Config  Key  = ok_dynzon
805!Config  Desc = sortie des transports zonaux dans la dynamique
806!Config  Def  = n
807!Config  Help = 
808!Config         
809       ok_dynzon = .FALSE.
810       CALL getin('ok_dynzon',ok_dynzon)
811
812!Config  Key  = ok_dyn_ins
813!Config  Desc = sorties instantanees dans la dynamique
814!Config  Def  = n
815!Config  Help =
816!Config         
817      ok_dyn_ins = .FALSE.
818      CALL getin('ok_dyn_ins',ok_dyn_ins)
819
820!Config  Key  = ok_dyn_ave
821!Config  Desc = sorties moyennes dans la dynamique
822!Config  Def  = n
823!Config  Help =
824!Config         
825      ok_dyn_ave = .FALSE.
826      CALL getin('ok_dyn_ave',ok_dyn_ave)
827
828!Config  Key  = use_filtre_fft
829!Config  Desc = flag d'activation des FFT pour le filtre
830!Config  Def  = false
831!Config  Help = permet d'activer l'utilisation des FFT pour effectuer
832!Config         le filtrage aux poles.
833! Le filtre fft n'est pas implemente dans dyn3d
834      use_filtre_fft=.FALSE.
835      CALL getin('use_filtre_fft',use_filtre_fft)
836
837      IF (use_filtre_fft) THEN
838        write(lunout,*)'STOP !!!'
839        write(lunout,*)'use_filtre_fft n est pas implemente dans dyn3d'
840        STOP
841      ENDIF
842     
843!Config key = ok_strato
844!Config  Desc = activation de la version strato
845!Config  Def  = .FALSE.
846!Config  Help = active la version stratosphérique de LMDZ de F. Lott
847
848      ok_strato=.FALSE.
849      CALL getin('ok_strato',ok_strato)
850
851!Config  Key  = ok_gradsfile
852!Config  Desc = activation des sorties grads du guidage
853!Config  Def  = n
854!Config  Help = active les sorties grads du guidage
855
856       ok_gradsfile = .FALSE.
857       CALL getin('ok_gradsfile',ok_gradsfile)
858
859!Config  Key  = ok_limit
860!Config  Desc = creation des fichiers limit dans create_etat0_limit
861!Config  Def  = y
862!Config  Help = production du fichier limit.nc requise
863
864       ok_limit = .TRUE.
865       CALL getin('ok_limit',ok_limit)
866
867!Config  Key  = ok_etat0
868!Config  Desc = creation des fichiers etat0 dans create_etat0_limit
869!Config  Def  = y
870!Config  Help = production des fichiers start.nc, startphy.nc requise
871
872      ok_etat0 = .TRUE.
873      CALL getin('ok_etat0',ok_etat0)
874
875!Config  Key  = grilles_gcm_netcdf
876!Config  Desc = creation de fichier grilles_gcm.nc dans create_etat0_limit
877!Config  Def  = n
878      grilles_gcm_netcdf = .FALSE.
879      CALL getin('grilles_gcm_netcdf',grilles_gcm_netcdf)
880
881      write(lunout,*)' #########################################'
882      write(lunout,*)' Configuration des parametres de cel0'
883     &             //'_limit: '
884      write(lunout,*)' planet_type = ', planet_type
885      write(lunout,*)' calend = ', calend
886      write(lunout,*)' dayref = ', dayref
887      write(lunout,*)' anneeref = ', anneeref
888      write(lunout,*)' nday = ', nday
889      write(lunout,*)' day_step = ', day_step
890      write(lunout,*)' iperiod = ', iperiod
891      write(lunout,*)' iconser = ', iconser
892      write(lunout,*)' iecri = ', iecri
893      write(lunout,*)' periodav = ', periodav
894      write(lunout,*)' output_grads_dyn = ', output_grads_dyn
895      write(lunout,*)' dissip_period = ', dissip_period
896      write(lunout,*)' lstardis = ', lstardis
897      write(lunout,*)' nitergdiv = ', nitergdiv
898      write(lunout,*)' nitergrot = ', nitergrot
899      write(lunout,*)' niterh = ', niterh
900      write(lunout,*)' tetagdiv = ', tetagdiv
901      write(lunout,*)' tetagrot = ', tetagrot
902      write(lunout,*)' tetatemp = ', tetatemp
903      write(lunout,*)' coefdis = ', coefdis
904      write(lunout,*)' purmats = ', purmats
905      write(lunout,*)' read_start = ', read_start
906      write(lunout,*)' iflag_phys = ', iflag_phys
907      write(lunout,*)' iphysiq = ', iphysiq
908      write(lunout,*)' clon = ', clon
909      write(lunout,*)' clat = ', clat
910      write(lunout,*)' grossismx = ', grossismx
911      write(lunout,*)' grossismy = ', grossismy
912      write(lunout,*)' fxyhypb = ', fxyhypb
913      write(lunout,*)' dzoomx = ', dzoomx
914      write(lunout,*)' dzoomy = ', dzoomy
915      write(lunout,*)' taux = ', taux
916      write(lunout,*)' tauy = ', tauy
917      write(lunout,*)' offline = ', offline
918      write(lunout,*)' type_trac = ', type_trac
919      write(lunout,*)' config_inca = ', config_inca
920      write(lunout,*)' ok_dynzon = ', ok_dynzon
921      write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
922      write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
923      write(lunout,*)' ok_strato = ', ok_strato
924      write(lunout,*)' ok_gradsfile = ', ok_gradsfile
925      write(lunout,*)' ok_limit = ', ok_limit
926      write(lunout,*)' ok_etat0 = ', ok_etat0
927      write(lunout,*)' grilles_gcm_netcdf = ', grilles_gcm_netcdf
928c
929      RETURN
930      END
Note: See TracBrowser for help on using the repository browser.