source: LMDZ5/trunk/libf/conf_gcm.F @ 1630

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

Importation initiale du répertoire dyn3dmem


Initial import of dyn3dmem directory

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