source: LMDZ5/trunk/libf/dyn3dmem/conf_gcm.F @ 1632

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

Import initial du répertoire dyn3dmem

Attention! ceci n'est qu'une version préliminaire du code "basse mémoire":
le code contenu dans ce répertoire est basé sur la r1320 et a donc besoin
d'être mis à jour par rapport à la dynamique parallèle d'aujourd'hui.
Ce code est toutefois mis à disposition pour circonvenir à des problèmes
de mémoire que certaines configurations du modèle pourraient rencontrer.
Dans l'état, il compile et tourne sur vargas et au CCRT


Initial import of dyn3dmem

Warning! this is just a preliminary version of the memory light code:
it is based on r1320 of the code and thus needs to be updated before
it can replace the present dyn3dpar code. It is nevertheless put at your
disposal to circumvent some memory problems some LMDZ configurations may
encounter. In its present state, it will compile and run on vargas and CCRT

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.