source: LMDZ5/trunk/libf/dyn3dmem/conf_gcm.F @ 1676

Last change on this file since 1676 was 1673, checked in by Laurent Fairhead, 12 years ago

Fin du phasage de la dynamique parallele localisee (petite memoire) avec le tronc LMDZ5 r1671
Il reste quelques routines a verifier (en particulier ce qui touche a l'etude des cas academiques)
et la validation a effectuer


End of the phasing of the localised (low memory) parallel dynamics package with the
LMDZ5 trunk (r1671)
Some routines still need some checking (in particular the academic cases) and some
validation is still required

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