source: LMDZ5/trunk/libf/dyn3dpar/conf_gcm.F @ 1660

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