source: trunk/libf/dyn3dpar/conf_gcm.F @ 97

Last change on this file since 97 was 97, checked in by slebonnois, 14 years ago

Serie de modifs SL pour homogeneisation des phytitan et phyvenus
Ca touche aussi aux liens phy/dyn (surtout a propos de clesphy0),
a verifier avec les autres, donc...

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