source: LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3dpar/conf_gcm.F @ 3619

Last change on this file since 3619 was 1438, checked in by jghattas, 14 years ago

Bug corrections for option offline. This option does not work at the same time as adjust=y.

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