source: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/conf_gcm.F @ 1176

Last change on this file since 1176 was 1176, checked in by Laurent Fairhead, 15 years ago

Modif pour la compilation avec fcm sur Vargas SD
Corrections relatives au controle de histins et de l'utilisation des
options INST(X) pour l'appel au routines de IOIPSL FH
Mise en place de diagnostics sur les critères CFL pour l'advection
de traceurs. FH
Controle dans les .def de la dépendance verticale de l'efficacite
de la diffusion. Actif pour le moment uniquement avec ok_strato=y et llm=39. FH
LF

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