source: trunk/libf/dyn3d/conf_gcm.F @ 108

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

Sebastien Lebonnois: sponge layer et dissip horizontale.

File size: 28.4 KB
RevLine 
[1]1!
2! $Id: conf_gcm.F 1418 2010-07-19 15:11:24Z jghattas $
3!
4c
5c
[97]6      SUBROUTINE conf_gcm( tapedef, etatinit )
[1]7c
8      USE control_mod
9#ifdef CPP_IOIPSL
10      use IOIPSL
11#else
12! if not using IOIPSL, we still need to use (a local version of) getin
13      use ioipsl_getincom
14#endif
15      IMPLICIT NONE
16c-----------------------------------------------------------------------
17c     Auteurs :   L. Fairhead , P. Le Van  .
18c
19c     Arguments :
20c
21c     tapedef   :
22c     etatinit  :     = TRUE   , on ne  compare pas les valeurs des para-
23c     -metres  du zoom  avec  celles lues sur le fichier start .
24c
25       LOGICAL etatinit
26       INTEGER tapedef
27
28c   Declarations :
29c   --------------
30#include "dimensions.h"
31#include "paramet.h"
32#include "logic.h"
33#include "serre.h"
34#include "comdissnew.h"
35#include "temps.h"
36#include "comconst.h"
37
38! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
39! #include "clesphys.h"
40#include "iniprint.h"
41c
42c
43c   local:
44c   ------
45
46      CHARACTER ch1*72,ch2*72,ch3*72,ch4*12
47      REAL clonn,clatt,grossismxx,grossismyy
48      REAL dzoomxx,dzoomyy, tauxx,tauyy
49      LOGICAL  fxyhypbb, ysinuss
50      INTEGER i
51      LOGICAL use_filtre_fft
52c
53c  -------------------------------------------------------------------
54c
55c       .........     Version  du 29/04/97       ..........
56c
57c   Nouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot,
58c      tetatemp   ajoutes  pour la dissipation   .
59c
60c   Autre parametre ajoute en fin de liste de tapedef : ** fxyhypb **
61c
62c  Si fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb.
63c    Sinon , choix de fxynew  , a derivee sinusoidale  ..
64c
65c   ......  etatinit = . TRUE. si defrun  est appele dans ETAT0_LMD  ou
66c         LIMIT_LMD  pour l'initialisation de start.dat (dic) et
67c                de limit.dat ( dic)                        ...........
68c           Sinon  etatinit = . FALSE .
69c
70c   Donc etatinit = .F.  si on veut comparer les valeurs de  grossismx ,
71c    grossismy,clon,clat, fxyhypb  lues sur  le fichier  start  avec
72c   celles passees  par run.def ,  au debut du gcm, apres l'appel a
73c    lectba . 
74c   Ces parmetres definissant entre autres la grille et doivent etre
75c   pareils et coherents , sinon il y aura  divergence du gcm .
76c
77c-----------------------------------------------------------------------
78c   initialisations:
79c   ----------------
80
81!Config  Key  = lunout
82!Config  Desc = unite de fichier pour les impressions
83!Config  Def  = 6
84!Config  Help = unite de fichier pour les impressions
85!Config         (defaut sortie standard = 6)
86      lunout=6
87      CALL getin('lunout', lunout)
88      IF (lunout /= 5 .and. lunout /= 6) THEN
89        OPEN(lunout,FILE='lmdz.out')
90      ENDIF
91
92!Config  Key  = prt_level
93!Config  Desc = niveau d'impressions de débogage
94!Config  Def  = 0
95!Config  Help = Niveau d'impression pour le débogage
96!Config         (0 = minimum d'impression)
97      prt_level = 0
98      CALL getin('prt_level',prt_level)
99
100c-----------------------------------------------------------------------
101c  Parametres de controle du run:
102c-----------------------------------------------------------------------
103!Config  Key  = planet_type
104!Config  Desc = planet type ("earth", "mars", "venus", ...)
105!Config  Def  = earth
106!Config  Help = this flag sets the type of atymosphere that is considered
107      planet_type="earth"
108      CALL getin('planet_type',planet_type)
109
110!Config  Key  = calend
111!Config  Desc = type de calendrier utilise
112!Config  Def  = earth_360d
113!Config  Help = valeur possible: earth_360d, earth_365d, earth_366d
114!Config         
115      calend = 'earth_360d'
116      CALL getin('calend', calend)
117
118!Config  Key  = dayref
119!Config  Desc = Jour de l'etat initial
120!Config  Def  = 1
121!Config  Help = Jour de l'etat initial ( = 350  si 20 Decembre ,
122!Config         par expl. ,comme ici ) ... A completer
123      dayref=1
124      CALL getin('dayref', dayref)
125
126!Config  Key  = anneeref
127!Config  Desc = Annee de l'etat initial
128!Config  Def  = 1998
129!Config  Help = Annee de l'etat  initial
130!Config         (   avec  4  chiffres   ) ... A completer
131      anneeref = 1998
132      CALL getin('anneeref',anneeref)
133
134!Config  Key  = raz_date
135!Config  Desc = Remise a zero de la date initiale
136!Config  Def  = 0 (pas de remise a zero)
137!Config  Help = Remise a zero de la date initiale
138!Config         0 pas de remise a zero, on garde la date du fichier restart
139!Config         1 prise en compte de la date de gcm.def avec remise a zero
140!Config         des compteurs de pas de temps
141      raz_date = 0
142      CALL getin('raz_date', raz_date)
143
[97]144!Config  Key  = resetvarc
145!Config  Desc = Reinit des variables de controle
146!Config  Def  = n
147!Config  Help = Reinit des variables de controle
148      resetvarc = .false.
149      CALL getin('resetvarc',resetvarc)
150
[1]151!Config  Key  = nday
152!Config  Desc = Nombre de jours d'integration
153!Config  Def  = 10
154!Config  Help = Nombre de jours d'integration
155!Config         ... On pourait aussi permettre des mois ou des annees !
156      nday = 10
157      CALL getin('nday',nday)
158
[97]159!Config  Key  = less1day
160!Config  Desc = Possibilite d'integrer moins d'un jour
161!Config  Def  = n
162!Config  Help = Possibilite d'integrer moins d'un jour
163      less1day = .false.
164      CALL getin('less1day',less1day)
165
166!Config  Key  = fractday
167!Config  Desc = integration sur une fraction de jour
168!Config  Def  = 0.01
169!Config  Help = integration sur une fraction de jour
170      fractday = 0.01
171      CALL getin('fractday',fractday)
172
[1]173!Config  Key  = day_step
174!Config  Desc = nombre de pas par jour
175!Config  Def  = 240
176!Config  Help = nombre de pas par jour (multiple de iperiod) (
177!Config          ici pour  dt = 1 min )
178       day_step = 240
179       CALL getin('day_step',day_step)
180
181!Config  Key  = nsplit_phys
[6]182!Config  Desc = nombre de subdivisions par pas physique
[1]183!Config  Def  = 1
[6]184!Config  Help = nombre de subdivisions par pas physique
[1]185       nsplit_phys = 1
186       CALL getin('nsplit_phys',nsplit_phys)
187
188!Config  Key  = iperiod
189!Config  Desc = periode pour le pas Matsuno
190!Config  Def  = 5
191!Config  Help = periode pour le pas Matsuno (en pas de temps)
192       iperiod = 5
193       CALL getin('iperiod',iperiod)
194
195!Config  Key  = iapp_tracvl
196!Config  Desc = frequence du groupement des flux
197!Config  Def  = iperiod
198!Config  Help = frequence du groupement des flux (en pas de temps)
199       iapp_tracvl = iperiod
200       CALL getin('iapp_tracvl',iapp_tracvl)
201
202!Config  Key  = iconser
203!Config  Desc = periode de sortie des variables de controle
204!Config  Def  = 240 
205!Config  Help = periode de sortie des variables de controle
206!Config         (En pas de temps)
207       iconser = 240 
208       CALL getin('iconser', iconser)
209
210!Config  Key  = iecri
211!Config  Desc = periode d'ecriture du fichier histoire
212!Config  Def  = 1
213!Config  Help = periode d'ecriture du fichier histoire (en jour)
214       iecri = 1
215       CALL getin('iecri',iecri)
216
217
218!Config  Key  = periodav
219!Config  Desc = periode de stockage fichier histmoy
220!Config  Def  = 1
221!Config  Help = periode de stockage fichier histmoy (en jour)
222       periodav = 1.
223       CALL getin('periodav',periodav)
224
225!Config  Key  = output_grads_dyn
226!Config  Desc = output dynamics diagnostics in 'dyn.dat' file
227!Config  Def  = n
228!Config  Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file
229       output_grads_dyn=.false.
230       CALL getin('output_grads_dyn',output_grads_dyn)
231
232!Config  Key  = idissip
233!Config  Desc = periode de la dissipation
234!Config  Def  = 10
235!Config  Help = periode de la dissipation
236!Config         (en pas) ... a completer !
237       idissip = 10
238       CALL getin('idissip',idissip)
239
240ccc  ....   P. Le Van , modif le 29/04/97 .pour la dissipation  ...
241ccc
242
243!Config  Key  = lstardis
244!Config  Desc = choix de l'operateur de dissipation
245!Config  Def  = y
246!Config  Help = choix de l'operateur de dissipation
247!Config         'y' si on veut star et 'n' si on veut non-start !
248!Config         Moi y en a pas comprendre !
249       lstardis = .TRUE.
250       CALL getin('lstardis',lstardis)
251
252
253!Config  Key  = nitergdiv
254!Config  Desc = Nombre d'iteration de gradiv
255!Config  Def  = 1
256!Config  Help = nombre d'iterations de l'operateur de dissipation
257!Config         gradiv
258       nitergdiv = 1
259       CALL getin('nitergdiv',nitergdiv)
260
261!Config  Key  = nitergrot
262!Config  Desc = nombre d'iterations de nxgradrot
263!Config  Def  = 2
264!Config  Help = nombre d'iterations de l'operateur de dissipation 
265!Config         nxgradrot
266       nitergrot = 2
267       CALL getin('nitergrot',nitergrot)
268
269
270!Config  Key  = niterh
271!Config  Desc = nombre d'iterations de divgrad
272!Config  Def  = 2
273!Config  Help = nombre d'iterations de l'operateur de dissipation
274!Config         divgrad
275       niterh = 2
276       CALL getin('niterh',niterh)
277
278
279!Config  Key  = tetagdiv
280!Config  Desc = temps de dissipation pour div
281!Config  Def  = 7200
282!Config  Help = temps de dissipation des plus petites longeur
283!Config         d'ondes pour u,v (gradiv)
284       tetagdiv = 7200.
285       CALL getin('tetagdiv',tetagdiv)
286
287!Config  Key  = tetagrot
288!Config  Desc = temps de dissipation pour grad
289!Config  Def  = 7200
290!Config  Help = temps de dissipation des plus petites longeur
291!Config         d'ondes pour u,v (nxgradrot)
292       tetagrot = 7200.
293       CALL getin('tetagrot',tetagrot)
294
295!Config  Key  = tetatemp
296!Config  Desc = temps de dissipation pour h
297!Config  Def  = 7200
298!Config  Help =  temps de dissipation des plus petites longeur
299!Config         d'ondes pour h (divgrad)   
300       tetatemp  = 7200.
301       CALL getin('tetatemp',tetatemp )
302
303! Parametres controlant la variation sur la verticale des constantes de
304! dissipation.
[108]305! Actifs uniquement avec ok_strato=y
[1]306
[108]307       dissip_fac_mid=2.
308       dissip_fac_up=10.
309       dissip_deltaz=10.! Intervalle (km) pour le changement mid / up
310       dissip_hdelta=5. ! scale height (km) dans la zone de la transition(m)
311       dissip_pupstart=1.e3  ! pression (Pa) au bas la transition mid / up
312       CALL getin('dissip_fac_mid',dissip_fac_mid )
313       CALL getin('dissip_fac_up',dissip_fac_up )
[1]314       CALL getin('dissip_deltaz',dissip_deltaz )
[108]315       CALL getin('dissip_hdelta',dissip_hdelta )
316       CALL getin('dissip_pupstart',dissip_pupstart )
[1]317
[108]318! Parametres controlant la couche eponge
319! Actifs uniquement avec ok_strato=y
320!   mode = 0 : pas de sponge
321!   mode = 1 : u et v -> 0
322!   mode = 2 : u et v -> moyenne zonale
323!   mode = 3 : u, v et h -> moyenne zonale
[1]324       iflag_top_bound=1
[108]325       mode_top_bound=3
[1]326       tau_top_bound=1.e-5
327       CALL getin('iflag_top_bound',iflag_top_bound)
[108]328       CALL getin('mode_top_bound',mode_top_bound)
[1]329       CALL getin('tau_top_bound',tau_top_bound)
330
331!Config  Key  = coefdis
332!Config  Desc = coefficient pour gamdissip
333!Config  Def  = 0
334!Config  Help = coefficient pour gamdissip 
335       coefdis = 0.
336       CALL getin('coefdis',coefdis)
337
338!Config  Key  = purmats
339!Config  Desc = Schema d'integration
340!Config  Def  = n
341!Config  Help = Choix du schema d'integration temporel.
342!Config         y = pure Matsuno sinon c'est du Matsuno-leapfrog
343       purmats = .FALSE.
344       CALL getin('purmats',purmats)
345
346!Config  Key  = ok_guide
347!Config  Desc = Guidage
348!Config  Def  = n
349!Config  Help = Guidage
350       ok_guide = .FALSE.
351       CALL getin('ok_guide',ok_guide)
352
353c    ...............................................................
354
355!Config  Key  =  read_start
356!Config  Desc = Initialize model using a 'start.nc' file
357!Config  Def  = y
358!Config  Help = y: intialize dynamical fields using a 'start.nc' file
359!               n: fields are initialized by 'iniacademic' routine
360       read_start= .true.
361       CALL getin('read_start',read_start)
362
363!Config  Key  = iflag_phys
364!Config  Desc = Avec ls physique
365!Config  Def  = 1
366!Config  Help = Permet de faire tourner le modele sans
367!Config         physique.
368       iflag_phys = 1
369       CALL getin('iflag_phys',iflag_phys)
370
371
372!Config  Key  =  iphysiq
373!Config  Desc = Periode de la physique
374!Config  Def  = 5
375!Config  Help = Periode de la physique en pas de temps de la dynamique.
376       iphysiq = 5
377       CALL getin('iphysiq', iphysiq)
378
379!Config  Key  = ip_ebil_dyn
380!Config  Desc = PRINT level for energy conserv. diag.
381!Config  Def  = 0
382!Config  Help = PRINT level for energy conservation diag. ;
383!               les options suivantes existent :
384!Config         0 pas de print
385!Config         1 pas de print
386!Config         2 print,
387       ip_ebil_dyn = 0
388       CALL getin('ip_ebil_dyn',ip_ebil_dyn)
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
594!Config  Key  = config_inca
595!Config  Desc = Choix de configuration de INCA
596!Config  Def  = none
597!Config  Help = Choix de configuration de INCA :
598!Config         'none' = sans INCA
599!Config         'chem' = INCA avec calcul de chemie
600!Config         'aero' = INCA avec calcul des aerosols
601      config_inca = 'none'
602      CALL getin('config_inca',config_inca)
603
604!Config  Key  = ok_dynzon
605!Config  Desc = calcul et sortie des transports
606!Config  Def  = n
607!Config  Help = Permet de mettre en route le calcul des transports
608!Config         
609      ok_dynzon = .FALSE.
610      CALL getin('ok_dynzon',ok_dynzon)
611
612!Config  Key  = ok_dyn_ins
613!Config  Desc = sorties instantanees dans la dynamique
614!Config  Def  = n
615!Config  Help =
616!Config         
617      ok_dyn_ins = .FALSE.
618      CALL getin('ok_dyn_ins',ok_dyn_ins)
619
620!Config  Key  = ok_dyn_ave
621!Config  Desc = sorties moyennes dans la dynamique
622!Config  Def  = n
623!Config  Help =
624!Config         
625      ok_dyn_ave = .FALSE.
626      CALL getin('ok_dyn_ave',ok_dyn_ave)
627
628
629      write(lunout,*)' #########################################'
630      write(lunout,*)' Configuration des parametres du gcm: '
631      write(lunout,*)' planet_type = ', planet_type
632      write(lunout,*)' calend = ', calend
633      write(lunout,*)' dayref = ', dayref
634      write(lunout,*)' anneeref = ', anneeref
635      write(lunout,*)' nday = ', nday
[97]636      if (less1day) then
637      write(lunout,*)' Run only for a fraction of day ! '
638      write(lunout,*)' fractday = ', fractday
639      endif
[1]640      write(lunout,*)' day_step = ', day_step
641      write(lunout,*)' iperiod = ', iperiod
642      write(lunout,*)' iconser = ', iconser
643      write(lunout,*)' iecri = ', iecri
644      write(lunout,*)' periodav = ', periodav
645      write(lunout,*)' output_grads_dyn = ', output_grads_dyn
646      write(lunout,*)' idissip = ', idissip
647      write(lunout,*)' lstardis = ', lstardis
648      write(lunout,*)' nitergdiv = ', nitergdiv
649      write(lunout,*)' nitergrot = ', nitergrot
650      write(lunout,*)' niterh = ', niterh
651      write(lunout,*)' tetagdiv = ', tetagdiv
652      write(lunout,*)' tetagrot = ', tetagrot
653      write(lunout,*)' tetatemp = ', tetatemp
654      write(lunout,*)' coefdis = ', coefdis
655      write(lunout,*)' purmats = ', purmats
656      write(lunout,*)' read_start = ', read_start
657      write(lunout,*)' iflag_phys = ', iflag_phys
658      write(lunout,*)' iphysiq = ', iphysiq
659      write(lunout,*)' clonn = ', clonn
660      write(lunout,*)' clatt = ', clatt
661      write(lunout,*)' grossismx = ', grossismx
662      write(lunout,*)' grossismy = ', grossismy
663      write(lunout,*)' fxyhypbb = ', fxyhypbb
664      write(lunout,*)' dzoomxx = ', dzoomxx
665      write(lunout,*)' dzoomy = ', dzoomyy
666      write(lunout,*)' tauxx = ', tauxx
667      write(lunout,*)' tauyy = ', tauyy
668      write(lunout,*)' offline = ', offline
669      write(lunout,*)' config_inca = ', config_inca
670      write(lunout,*)' ok_dynzon = ', ok_dynzon
671      write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
672      write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
673
674      RETURN
675c   ...............................................
676c
677100   CONTINUE
678!Config  Key  = clon
679!Config  Desc = centre du zoom, longitude
680!Config  Def  = 0
681!Config  Help = longitude en degres du centre
682!Config         du zoom
683       clon = 0.
684       CALL getin('clon',clon)
685
686!Config  Key  = clat
687!Config  Desc = centre du zoom, latitude
688!Config  Def  = 0
689!Config  Help = latitude en degres du centre du zoom
690!Config         
691       clat = 0.
692       CALL getin('clat',clat)
693
694!Config  Key  = grossismx
695!Config  Desc = zoom en longitude
696!Config  Def  = 1.0
697!Config  Help = facteur de grossissement du zoom,
698!Config         selon la longitude
699       grossismx = 1.0
700       CALL getin('grossismx',grossismx)
701
702!Config  Key  = grossismy
703!Config  Desc = zoom en latitude
704!Config  Def  = 1.0
705!Config  Help = facteur de grossissement du zoom,
706!Config         selon la latitude
707       grossismy = 1.0
708       CALL getin('grossismy',grossismy)
709
710      IF( grossismx.LT.1. )  THEN
711        write(lunout,*)
712     &   'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
713         STOP
714      ELSE
715         alphax = 1. - 1./ grossismx
716      ENDIF
717
718
719      IF( grossismy.LT.1. )  THEN
720        write(lunout,*)
721     &  'conf_gcm: ***  ATTENTION !! grossismy < 1 .   *** '
722         STOP
723      ELSE
724         alphay = 1. - 1./ grossismy
725      ENDIF
726
727      write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay
728c
729c    alphax et alphay sont les anciennes formulat. des grossissements
730c
731c
732
733!Config  Key  = fxyhypb
734!Config  Desc = Fonction  hyperbolique
735!Config  Def  = y
736!Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
737!Config         sinon  sinusoidale
738       fxyhypb = .TRUE.
739       CALL getin('fxyhypb',fxyhypb)
740
741!Config  Key  = dzoomx
742!Config  Desc = extension en longitude
743!Config  Def  = 0
744!Config  Help = extension en longitude  de la zone du zoom 
745!Config         ( fraction de la zone totale)
746       dzoomx = 0.0
747       CALL getin('dzoomx',dzoomx)
748
749!Config  Key  = dzoomy
750!Config  Desc = extension en latitude
751!Config  Def  = 0
752!Config  Help = extension en latitude de la zone  du zoom 
753!Config         ( fraction de la zone totale)
754       dzoomy = 0.0
755       CALL getin('dzoomy',dzoomy)
756
757!Config  Key  = taux
758!Config  Desc = raideur du zoom en  X
759!Config  Def  = 3
760!Config  Help = raideur du zoom en  X
761       taux = 3.0
762       CALL getin('taux',taux)
763
764!Config  Key  = tauy
765!Config  Desc = raideur du zoom en  Y
766!Config  Def  = 3
767!Config  Help = raideur du zoom en  Y
768       tauy = 3.0
769       CALL getin('tauy',tauy)
770
771!Config  Key  = ysinus
772!Config  IF   = !fxyhypb
773!Config  Desc = Fonction en Sinus
774!Config  Def  = y
775!Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
776!Config         sinon y = latit.
777       ysinus = .TRUE.
778       CALL getin('ysinus',ysinus)
779c
780!Config  Key  = offline
781!Config  Desc = Nouvelle eau liquide
782!Config  Def  = n
783!Config  Help = Permet de mettre en route la
784!Config         nouvelle parametrisation de l'eau liquide !
785       offline = .FALSE.
786       CALL getin('offline',offline)
787
788!Config  Key  = config_inca
789!Config  Desc = Choix de configuration de INCA
790!Config  Def  = none
791!Config  Help = Choix de configuration de INCA :
792!Config         'none' = sans INCA
793!Config         'chem' = INCA avec calcul de chemie
794!Config         'aero' = INCA avec calcul des aerosols
795      config_inca = 'none'
796      CALL getin('config_inca',config_inca)
797
798!Config  Key  = ok_dynzon
799!Config  Desc = sortie des transports zonaux dans la dynamique
800!Config  Def  = n
801!Config  Help = 
802!Config         
803       ok_dynzon = .FALSE.
804       CALL getin('ok_dynzon',ok_dynzon)
805
806!Config  Key  = ok_dyn_ins
807!Config  Desc = sorties instantanees dans la dynamique
808!Config  Def  = n
809!Config  Help =
810!Config         
811      ok_dyn_ins = .FALSE.
812      CALL getin('ok_dyn_ins',ok_dyn_ins)
813
814!Config  Key  = ok_dyn_ave
815!Config  Desc = sorties moyennes dans la dynamique
816!Config  Def  = n
817!Config  Help =
818!Config         
819      ok_dyn_ave = .FALSE.
820      CALL getin('ok_dyn_ave',ok_dyn_ave)
821
822!Config  Key  = use_filtre_fft
823!Config  Desc = flag d'activation des FFT pour le filtre
824!Config  Def  = false
825!Config  Help = permet d'activer l'utilisation des FFT pour effectuer
826!Config         le filtrage aux poles.
827! Le filtre fft n'est pas implemente dans dyn3d
828      use_filtre_fft=.FALSE.
829      CALL getin('use_filtre_fft',use_filtre_fft)
830
831      IF (use_filtre_fft) THEN
832        write(lunout,*)'STOP !!!'
833        write(lunout,*)'use_filtre_fft n est pas implemente dans dyn3d'
834        STOP
835      ENDIF
836     
837!Config key = ok_strato
838!Config  Desc = activation de la version strato
839!Config  Def  = .FALSE.
840!Config  Help = active la version stratosphérique de LMDZ de F. Lott
841
[6]842      ok_strato=.TRUE.
[1]843      CALL getin('ok_strato',ok_strato)
844
845!Config  Key  = ok_gradsfile
846!Config  Desc = activation des sorties grads du guidage
847!Config  Def  = n
848!Config  Help = active les sorties grads du guidage
849
850       ok_gradsfile = .FALSE.
851       CALL getin('ok_gradsfile',ok_gradsfile)
852
853!Config  Key  = ok_limit
854!Config  Desc = creation des fichiers limit dans create_etat0_limit
855!Config  Def  = y
856!Config  Help = production du fichier limit.nc requise
857
858       ok_limit = .TRUE.
859       CALL getin('ok_limit',ok_limit)
860
861!Config  Key  = ok_etat0
862!Config  Desc = creation des fichiers etat0 dans create_etat0_limit
863!Config  Def  = y
864!Config  Help = production des fichiers start.nc, startphy.nc requise
865
866      ok_etat0 = .TRUE.
867      CALL getin('ok_etat0',ok_etat0)
868
869      write(lunout,*)' #########################################'
870      write(lunout,*)' Configuration des parametres de cel0'
871     &             //'_limit: '
872      write(lunout,*)' planet_type = ', planet_type
873      write(lunout,*)' calend = ', calend
874      write(lunout,*)' dayref = ', dayref
875      write(lunout,*)' anneeref = ', anneeref
876      write(lunout,*)' nday = ', nday
877      write(lunout,*)' day_step = ', day_step
878      write(lunout,*)' iperiod = ', iperiod
879      write(lunout,*)' iconser = ', iconser
880      write(lunout,*)' iecri = ', iecri
881      write(lunout,*)' periodav = ', periodav
882      write(lunout,*)' output_grads_dyn = ', output_grads_dyn
883      write(lunout,*)' idissip = ', idissip
884      write(lunout,*)' lstardis = ', lstardis
885      write(lunout,*)' nitergdiv = ', nitergdiv
886      write(lunout,*)' nitergrot = ', nitergrot
887      write(lunout,*)' niterh = ', niterh
888      write(lunout,*)' tetagdiv = ', tetagdiv
889      write(lunout,*)' tetagrot = ', tetagrot
890      write(lunout,*)' tetatemp = ', tetatemp
891      write(lunout,*)' coefdis = ', coefdis
892      write(lunout,*)' purmats = ', purmats
893      write(lunout,*)' read_start = ', read_start
894      write(lunout,*)' iflag_phys = ', iflag_phys
895      write(lunout,*)' iphysiq = ', iphysiq
896      write(lunout,*)' clon = ', clon
897      write(lunout,*)' clat = ', clat
898      write(lunout,*)' grossismx = ', grossismx
899      write(lunout,*)' grossismy = ', grossismy
900      write(lunout,*)' fxyhypb = ', fxyhypb
901      write(lunout,*)' dzoomx = ', dzoomx
902      write(lunout,*)' dzoomy = ', dzoomy
903      write(lunout,*)' taux = ', taux
904      write(lunout,*)' tauy = ', tauy
905      write(lunout,*)' offline = ', offline
906      write(lunout,*)' config_inca = ', config_inca
907      write(lunout,*)' ok_dynzon = ', ok_dynzon
908      write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
909      write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
910      write(lunout,*)' ok_strato = ', ok_strato
911      write(lunout,*)' ok_gradsfile = ', ok_gradsfile
912      write(lunout,*)' ok_limit = ', ok_limit
913      write(lunout,*)' ok_etat0 = ', ok_etat0
914c
915      RETURN
916      END
Note: See TracBrowser for help on using the repository browser.