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

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

Phasage de la dynamique parallèle localisée (petite mémoire) avec la branche LMDZ4V5.0-dev (fin de la branche)
Validation effectuée par comparaison des fichiers de sorties debug (u, v, t, q, masse, etc ...) d'une simulation sans physique
faite avec la version du modèle donnée paY. Meurdesoif et la version phasée avec la r1399 (fin de la branche LMDZ4V5.0-dev)


Phasing of the localised (low memory) parallel dynamics package with the LMDZ4V5.0-dev version of LMDZ
Validation consisted in comparing output debug files (u, v, t, q, masse, etc... ) of a no physics simulation
run with the version of the code given by Y. Meurdesoif and this version phased with r1399 (end of the LMDZ4V5.0-dev branch)

File size: 28.2 KB
Line 
1!
2! $Id: conf_gcm.F 1357 2010-04-14 14:03:19Z emillour $
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  = nsplit_phys
177!Config  Desc = nombre d'iteration de la physique
178!Config  Def  = 240
179!Config  Help = nombre d'itration de la physique
180!
181       nsplit_phys = 1
182       CALL getin('nsplit_phys',nsplit_phys)
183
184!Config  Key  = iperiod
185!Config  Desc = periode pour le pas Matsuno
186!Config  Def  = 5
187!Config  Help = periode pour le pas Matsuno (en pas de temps)
188       iperiod = 5
189       CALL getin('iperiod',iperiod)
190
191!Config  Key  = iapp_tracvl
192!Config  Desc = frequence du groupement des flux
193!Config  Def  = iperiod
194!Config  Help = frequence du groupement des flux (en pas de temps)
195       iapp_tracvl = iperiod
196       CALL getin('iapp_tracvl',iapp_tracvl)
197
198!Config  Key  = iconser
199!Config  Desc = periode de sortie des variables de controle
200!Config  Def  = 240 
201!Config  Help = periode de sortie des variables de controle
202!Config         (En pas de temps)
203       iconser = 240 
204       CALL getin('iconser', iconser)
205
206!Config  Key  = iecri
207!Config  Desc = periode d'ecriture du fichier histoire
208!Config  Def  = 1
209!Config  Help = periode d'ecriture du fichier histoire (en jour)
210       iecri = 1
211       CALL getin('iecri',iecri)
212
213
214!Config  Key  = periodav
215!Config  Desc = periode de stockage fichier histmoy
216!Config  Def  = 1
217!Config  Help = periode de stockage fichier histmoy (en jour)
218       periodav = 1.
219       CALL getin('periodav',periodav)
220
221!Config  Key  = output_grads_dyn
222!Config  Desc = output dynamics diagnostics in 'dyn.dat' file
223!Config  Def  = n
224!Config  Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file
225       output_grads_dyn=.false.
226       CALL getin('output_grads_dyn',output_grads_dyn)
227
228!Config  Key  = idissip
229!Config  Desc = periode de la dissipation
230!Config  Def  = 10
231!Config  Help = periode de la dissipation
232!Config         (en pas) ... a completer !
233       idissip = 10
234       CALL getin('idissip',idissip)
235
236ccc  ....   P. Le Van , modif le 29/04/97 .pour la dissipation  ...
237ccc
238
239!Config  Key  = lstardis
240!Config  Desc = choix de l'operateur de dissipation
241!Config  Def  = y
242!Config  Help = choix de l'operateur de dissipation
243!Config         'y' si on veut star et 'n' si on veut non-start !
244!Config         Moi y en a pas comprendre !
245       lstardis = .TRUE.
246       CALL getin('lstardis',lstardis)
247
248
249!Config  Key  = nitergdiv
250!Config  Desc = Nombre d'iteration de gradiv
251!Config  Def  = 1
252!Config  Help = nombre d'iterations de l'operateur de dissipation
253!Config         gradiv
254       nitergdiv = 1
255       CALL getin('nitergdiv',nitergdiv)
256
257!Config  Key  = nitergrot
258!Config  Desc = nombre d'iterations de nxgradrot
259!Config  Def  = 2
260!Config  Help = nombre d'iterations de l'operateur de dissipation 
261!Config         nxgradrot
262       nitergrot = 2
263       CALL getin('nitergrot',nitergrot)
264
265
266!Config  Key  = niterh
267!Config  Desc = nombre d'iterations de divgrad
268!Config  Def  = 2
269!Config  Help = nombre d'iterations de l'operateur de dissipation
270!Config         divgrad
271       niterh = 2
272       CALL getin('niterh',niterh)
273
274
275!Config  Key  = tetagdiv
276!Config  Desc = temps de dissipation pour div
277!Config  Def  = 7200
278!Config  Help = temps de dissipation des plus petites longeur
279!Config         d'ondes pour u,v (gradiv)
280       tetagdiv = 7200.
281       CALL getin('tetagdiv',tetagdiv)
282
283!Config  Key  = tetagrot
284!Config  Desc = temps de dissipation pour grad
285!Config  Def  = 7200
286!Config  Help = temps de dissipation des plus petites longeur
287!Config         d'ondes pour u,v (nxgradrot)
288       tetagrot = 7200.
289       CALL getin('tetagrot',tetagrot)
290
291!Config  Key  = tetatemp
292!Config  Desc = temps de dissipation pour h
293!Config  Def  = 7200
294!Config  Help =  temps de dissipation des plus petites longeur
295!Config         d'ondes pour h (divgrad)   
296       tetatemp  = 7200.
297       CALL getin('tetatemp',tetatemp )
298
299! Parametres controlant la variation sur la verticale des constantes de
300! dissipation.
301! Pour le moment actifs uniquement dans la version a 39 niveaux
302! avec ok_strato=y
303
304       dissip_factz=4.
305       dissip_deltaz=10.
306       dissip_zref=30.
307       CALL getin('dissip_factz',dissip_factz )
308       CALL getin('dissip_deltaz',dissip_deltaz )
309       CALL getin('dissip_zref',dissip_zref )
310
311       iflag_top_bound=1
312       tau_top_bound=1.e-5
313       CALL getin('iflag_top_bound',iflag_top_bound)
314       CALL getin('tau_top_bound',tau_top_bound)
315
316!
317!Config  Key  = coefdis
318!Config  Desc = coefficient pour gamdissip
319!Config  Def  = 0
320!Config  Help = coefficient pour gamdissip 
321       coefdis = 0.
322       CALL getin('coefdis',coefdis)
323
324!Config  Key  = purmats
325!Config  Desc = Schema d'integration
326!Config  Def  = n
327!Config  Help = Choix du schema d'integration temporel.
328!Config         y = pure Matsuno sinon c'est du Matsuno-leapfrog
329       purmats = .FALSE.
330       CALL getin('purmats',purmats)
331
332!Config  Key  = ok_guide
333!Config  Desc = Guidage
334!Config  Def  = n
335!Config  Help = Guidage
336       ok_guide = .FALSE.
337       CALL getin('ok_guide',ok_guide)
338
339c    ...............................................................
340
341!Config  Key  =  read_start
342!Config  Desc = Initialize model using a 'start.nc' file
343!Config  Def  = y
344!Config  Help = y: intialize dynamical fields using a 'start.nc' file
345!               n: fields are initialized by 'iniacademic' routine
346       read_start= .true.
347       CALL getin('read_start',read_start)
348
349!Config  Key  = iflag_phys
350!Config  Desc = Avec ls physique
351!Config  Def  = 1
352!Config  Help = Permet de faire tourner le modele sans
353!Config         physique.
354       iflag_phys = 1
355       CALL getin('iflag_phys',iflag_phys)
356
357
358!Config  Key  =  iphysiq
359!Config  Desc = Periode de la physique
360!Config  Def  = 5
361!Config  Help = Periode de la physique en pas de temps de la dynamique.
362       iphysiq = 5
363       CALL getin('iphysiq', iphysiq)
364
365ccc   .... P.Le Van, ajout le 03/01/96 pour l'ecriture phys ...
366c
367
368
369!Config  Key  = ip_ebil_dyn
370!Config  Desc = PRINT level for energy conserv. diag.
371!Config  Def  = 0
372!Config  Help = PRINT level for energy conservation diag. ;
373!               les options suivantes existent :
374!Config         0 pas de print
375!Config         1 pas de print
376!Config         2 print,
377       ip_ebil_dyn = 0
378       CALL getin('ip_ebil_dyn',ip_ebil_dyn)
379!
380
381
382ccc  ....   P. Le Van , ajout  le 7/03/95 .pour le zoom ...
383c     .........   (  modif  le 17/04/96 )   .........
384c
385      IF( etatinit ) GO TO 100
386
387!Config  Key  = clon
388!Config  Desc = centre du zoom, longitude
389!Config  Def  = 0
390!Config  Help = longitude en degres du centre
391!Config         du zoom
392       clonn = 0.
393       CALL getin('clon',clonn)
394
395!Config  Key  = clat
396!Config  Desc = centre du zoom, latitude
397!Config  Def  = 0
398!Config  Help = latitude en degres du centre du zoom
399!Config         
400       clatt = 0.
401       CALL getin('clat',clatt)
402
403c
404c
405      IF( ABS(clat - clatt).GE. 0.001 )  THEN
406        write(lunout,*)'conf_gcm: La valeur de clat passee par run.def',
407     &    ' est differente de celle lue sur le fichier  start '
408        STOP
409      ENDIF
410
411!Config  Key  = grossismx
412!Config  Desc = zoom en longitude
413!Config  Def  = 1.0
414!Config  Help = facteur de grossissement du zoom,
415!Config         selon la longitude
416       grossismxx = 1.0
417       CALL getin('grossismx',grossismxx)
418
419
420      IF( ABS(grossismx - grossismxx).GE. 0.001 )  THEN
421        write(lunout,*)'conf_gcm: La valeur de grossismx passee par ',
422     &  'run.def est differente de celle lue sur le fichier  start '
423        STOP
424      ENDIF
425
426!Config  Key  = grossismy
427!Config  Desc = zoom en latitude
428!Config  Def  = 1.0
429!Config  Help = facteur de grossissement du zoom,
430!Config         selon la latitude
431       grossismyy = 1.0
432       CALL getin('grossismy',grossismyy)
433
434      IF( ABS(grossismy - grossismyy).GE. 0.001 )  THEN
435        write(lunout,*)'conf_gcm: La valeur de grossismy passee par ',
436     & 'run.def est differente de celle lue sur le fichier  start '
437        STOP
438      ENDIF
439     
440      IF( grossismx.LT.1. )  THEN
441        write(lunout,*)
442     &       'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
443         STOP
444      ELSE
445         alphax = 1. - 1./ grossismx
446      ENDIF
447
448
449      IF( grossismy.LT.1. )  THEN
450        write(lunout,*)
451     &       'conf_gcm: ***  ATTENTION !! grossismy < 1 .   *** '
452         STOP
453      ELSE
454         alphay = 1. - 1./ grossismy
455      ENDIF
456
457      write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay
458c
459c    alphax et alphay sont les anciennes formulat. des grossissements
460c
461c
462
463!Config  Key  = fxyhypb
464!Config  Desc = Fonction  hyperbolique
465!Config  Def  = y
466!Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
467!Config         sinon  sinusoidale
468       fxyhypbb = .TRUE.
469       CALL getin('fxyhypb',fxyhypbb)
470
471      IF( .NOT.fxyhypb )  THEN
472         IF( fxyhypbb )     THEN
473            write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
474            write(lunout,*)' *** fxyhypb lu sur le fichier start est ',
475     *       'F alors  qu il est  T  sur  run.def  ***'
476              STOP
477         ENDIF
478      ELSE
479         IF( .NOT.fxyhypbb )   THEN
480            write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
481            write(lunout,*)' ***  fxyhypb lu sur le fichier start est ',
482     *        'T alors  qu il est  F  sur  run.def  ****  '
483              STOP
484         ENDIF
485      ENDIF
486c
487!Config  Key  = dzoomx
488!Config  Desc = extension en longitude
489!Config  Def  = 0
490!Config  Help = extension en longitude  de la zone du zoom 
491!Config         ( fraction de la zone totale)
492       dzoomxx = 0.0
493       CALL getin('dzoomx',dzoomxx)
494
495      IF( fxyhypb )  THEN
496       IF( ABS(dzoomx - dzoomxx).GE. 0.001 )  THEN
497        write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ',
498     *  'run.def est differente de celle lue sur le fichier  start '
499        STOP
500       ENDIF
501      ENDIF
502
503!Config  Key  = dzoomy
504!Config  Desc = extension en latitude
505!Config  Def  = 0
506!Config  Help = extension en latitude de la zone  du zoom 
507!Config         ( fraction de la zone totale)
508       dzoomyy = 0.0
509       CALL getin('dzoomy',dzoomyy)
510
511      IF( fxyhypb )  THEN
512       IF( ABS(dzoomy - dzoomyy).GE. 0.001 )  THEN
513        write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ',
514     * 'run.def est differente de celle lue sur le fichier  start '
515        STOP
516       ENDIF
517      ENDIF
518     
519!Config  Key  = taux
520!Config  Desc = raideur du zoom en  X
521!Config  Def  = 3
522!Config  Help = raideur du zoom en  X
523       tauxx = 3.0
524       CALL getin('taux',tauxx)
525
526      IF( fxyhypb )  THEN
527       IF( ABS(taux - tauxx).GE. 0.001 )  THEN
528        write(lunout,*)'conf_gcm: La valeur de taux passee par ',
529     * 'run.def est differente de celle lue sur le fichier  start '
530        STOP
531       ENDIF
532      ENDIF
533
534!Config  Key  = tauyy
535!Config  Desc = raideur du zoom en  Y
536!Config  Def  = 3
537!Config  Help = raideur du zoom en  Y
538       tauyy = 3.0
539       CALL getin('tauy',tauyy)
540
541      IF( fxyhypb )  THEN
542       IF( ABS(tauy - tauyy).GE. 0.001 )  THEN
543        write(lunout,*)'conf_gcm: La valeur de tauy passee par ',
544     * 'run.def est differente de celle lue sur le fichier  start '
545        STOP
546       ENDIF
547      ENDIF
548
549cc
550      IF( .NOT.fxyhypb  )  THEN
551
552!Config  Key  = ysinus
553!Config  IF   = !fxyhypb
554!Config  Desc = Fonction en Sinus
555!Config  Def  = y
556!Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
557!Config         sinon y = latit.
558       ysinuss = .TRUE.
559       CALL getin('ysinus',ysinuss)
560
561        IF( .NOT.ysinus )  THEN
562          IF( ysinuss )     THEN
563            write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
564            write(lunout,*)' *** ysinus lu sur le fichier start est F',
565     *       ' alors  qu il est  T  sur  run.def  ***'
566            STOP
567          ENDIF
568        ELSE
569          IF( .NOT.ysinuss )   THEN
570            write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
571            write(lunout,*)' *** ysinus lu sur le fichier start est T',
572     *        ' alors  qu il est  F  sur  run.def  ****  '
573              STOP
574          ENDIF
575        ENDIF
576      ENDIF ! of IF( .NOT.fxyhypb  )
577c
578!Config  Key  = offline
579!Config  Desc = Nouvelle eau liquide
580!Config  Def  = n
581!Config  Help = Permet de mettre en route la
582!Config         nouvelle parametrisation de l'eau liquide !
583       offline = .FALSE.
584       CALL getin('offline',offline)
585
586!Config  Key  = config_inca
587!Config  Desc = Choix de configuration de INCA
588!Config  Def  = none
589!Config  Help = Choix de configuration de INCA :
590!Config         'none' = sans INCA
591!Config         'chem' = INCA avec calcul de chemie
592!Config         'aero' = INCA avec calcul des aerosols
593      config_inca = 'none'
594      CALL getin('config_inca',config_inca)
595
596!Config  Key  = ok_dynzon
597!Config  Desc = calcul et sortie des transports
598!Config  Def  = n
599!Config  Help = Permet de mettre en route le calcul des transports
600!Config         
601      ok_dynzon = .FALSE.
602      CALL getin('ok_dynzon',ok_dynzon)
603
604!Config  Key  = ok_dyn_ins
605!Config  Desc = sorties instantanees dans la dynamique
606!Config  Def  = n
607!Config  Help =
608!Config         
609      ok_dyn_ins = .FALSE.
610      CALL getin('ok_dyn_ins',ok_dyn_ins)
611
612!Config  Key  = ok_dyn_ave
613!Config  Desc = sorties moyennes dans la dynamique
614!Config  Def  = n
615!Config  Help =
616!Config         
617      ok_dyn_ave = .FALSE.
618      CALL getin('ok_dyn_ave',ok_dyn_ave)
619
620      write(lunout,*)' #########################################'
621      write(lunout,*)' Configuration des parametres du gcm: '
622      write(lunout,*)' planet_type = ', planet_type
623      write(lunout,*)' calend = ', calend
624      write(lunout,*)' dayref = ', dayref
625      write(lunout,*)' anneeref = ', anneeref
626      write(lunout,*)' nday = ', nday
627      write(lunout,*)' day_step = ', day_step
628      write(lunout,*)' iperiod = ', iperiod
629      write(lunout,*)' nsplit_phys = ', nsplit_phys
630      write(lunout,*)' iconser = ', iconser
631      write(lunout,*)' iecri = ', iecri
632      write(lunout,*)' periodav = ', periodav
633      write(lunout,*)' output_grads_dyn = ', output_grads_dyn
634      write(lunout,*)' idissip = ', idissip
635      write(lunout,*)' lstardis = ', lstardis
636      write(lunout,*)' nitergdiv = ', nitergdiv
637      write(lunout,*)' nitergrot = ', nitergrot
638      write(lunout,*)' niterh = ', niterh
639      write(lunout,*)' tetagdiv = ', tetagdiv
640      write(lunout,*)' tetagrot = ', tetagrot
641      write(lunout,*)' tetatemp = ', tetatemp
642      write(lunout,*)' coefdis = ', coefdis
643      write(lunout,*)' purmats = ', purmats
644      write(lunout,*)' read_start = ', read_start
645      write(lunout,*)' iflag_phys = ', iflag_phys
646      write(lunout,*)' iphysiq = ', iphysiq
647      write(lunout,*)' clonn = ', clonn
648      write(lunout,*)' clatt = ', clatt
649      write(lunout,*)' grossismx = ', grossismx
650      write(lunout,*)' grossismy = ', grossismy
651      write(lunout,*)' fxyhypbb = ', fxyhypbb
652      write(lunout,*)' dzoomxx = ', dzoomxx
653      write(lunout,*)' dzoomy = ', dzoomyy
654      write(lunout,*)' tauxx = ', tauxx
655      write(lunout,*)' tauyy = ', tauyy
656      write(lunout,*)' offline = ', offline
657      write(lunout,*)' config_inca = ', config_inca
658      write(lunout,*)' ok_dynzon = ', ok_dynzon
659      write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
660      write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
661
662      RETURN
663c   ...............................................
664c
665100   CONTINUE
666!Config  Key  = clon
667!Config  Desc = centre du zoom, longitude
668!Config  Def  = 0
669!Config  Help = longitude en degres du centre
670!Config         du zoom
671       clon = 0.
672       CALL getin('clon',clon)
673
674!Config  Key  = clat
675!Config  Desc = centre du zoom, latitude
676!Config  Def  = 0
677!Config  Help = latitude en degres du centre du zoom
678!Config         
679       clat = 0.
680       CALL getin('clat',clat)
681
682!Config  Key  = grossismx
683!Config  Desc = zoom en longitude
684!Config  Def  = 1.0
685!Config  Help = facteur de grossissement du zoom,
686!Config         selon la longitude
687       grossismx = 1.0
688       CALL getin('grossismx',grossismx)
689
690!Config  Key  = grossismy
691!Config  Desc = zoom en latitude
692!Config  Def  = 1.0
693!Config  Help = facteur de grossissement du zoom,
694!Config         selon la latitude
695       grossismy = 1.0
696       CALL getin('grossismy',grossismy)
697
698      IF( grossismx.LT.1. )  THEN
699        write(lunout,*)
700     &   'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
701         STOP
702      ELSE
703         alphax = 1. - 1./ grossismx
704      ENDIF
705
706
707      IF( grossismy.LT.1. )  THEN
708        write(lunout,*)
709     &  'conf_gcm: ***  ATTENTION !! grossismy < 1 .   *** '
710         STOP
711      ELSE
712         alphay = 1. - 1./ grossismy
713      ENDIF
714
715      write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay
716c
717c    alphax et alphay sont les anciennes formulat. des grossissements
718c
719c
720
721!Config  Key  = fxyhypb
722!Config  Desc = Fonction  hyperbolique
723!Config  Def  = y
724!Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
725!Config         sinon  sinusoidale
726       fxyhypb = .TRUE.
727       CALL getin('fxyhypb',fxyhypb)
728
729!Config  Key  = dzoomx
730!Config  Desc = extension en longitude
731!Config  Def  = 0
732!Config  Help = extension en longitude  de la zone du zoom 
733!Config         ( fraction de la zone totale)
734       dzoomx = 0.0
735       CALL getin('dzoomx',dzoomx)
736
737!Config  Key  = dzoomy
738!Config  Desc = extension en latitude
739!Config  Def  = 0
740!Config  Help = extension en latitude de la zone  du zoom 
741!Config         ( fraction de la zone totale)
742       dzoomy = 0.0
743       CALL getin('dzoomy',dzoomy)
744
745!Config  Key  = taux
746!Config  Desc = raideur du zoom en  X
747!Config  Def  = 3
748!Config  Help = raideur du zoom en  X
749       taux = 3.0
750       CALL getin('taux',taux)
751
752!Config  Key  = tauy
753!Config  Desc = raideur du zoom en  Y
754!Config  Def  = 3
755!Config  Help = raideur du zoom en  Y
756       tauy = 3.0
757       CALL getin('tauy',tauy)
758
759!Config  Key  = ysinus
760!Config  IF   = !fxyhypb
761!Config  Desc = Fonction en Sinus
762!Config  Def  = y
763!Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
764!Config         sinon y = latit.
765       ysinus = .TRUE.
766       CALL getin('ysinus',ysinus)
767c
768!Config  Key  = offline
769!Config  Desc = Nouvelle eau liquide
770!Config  Def  = n
771!Config  Help = Permet de mettre en route la
772!Config         nouvelle parametrisation de l'eau liquide !
773       offline = .FALSE.
774       CALL getin('offline',offline)
775
776!Config  Key  = config_inca
777!Config  Desc = Choix de configuration de INCA
778!Config  Def  = none
779!Config  Help = Choix de configuration de INCA :
780!Config         'none' = sans INCA
781!Config         'chem' = INCA avec calcul de chemie
782!Config         'aero' = INCA avec calcul des aerosols
783      config_inca = 'none'
784      CALL getin('config_inca',config_inca)
785
786!Config  Key  = ok_dynzon
787!Config  Desc = calcul et sortie des transports
788!Config  Def  = n
789!Config  Help = Permet de mettre en route le calcul des transports
790!Config         
791      ok_dynzon = .FALSE.
792      CALL getin('ok_dynzon',ok_dynzon)
793
794!Config  Key  = ok_dyn_ins
795!Config  Desc = sorties instantanees dans la dynamique
796!Config  Def  = n
797!Config  Help =
798!Config         
799      ok_dyn_ins = .FALSE.
800      CALL getin('ok_dyn_ins',ok_dyn_ins)
801
802!Config  Key  = ok_dyn_ave
803!Config  Desc = sorties moyennes dans la dynamique
804!Config  Def  = n
805!Config  Help =
806!Config         
807      ok_dyn_ave = .FALSE.
808      CALL getin('ok_dyn_ave',ok_dyn_ave)
809
810!Config  Key  = use_filtre_fft
811!Config  Desc = flag d'activation des FFT pour le filtre
812!Config  Def  = false
813!Config  Help = permet d'activer l'utilisation des FFT pour effectuer
814!Config         le filtrage aux poles.
815      use_filtre_fft=.FALSE.
816      CALL getin('use_filtre_fft',use_filtre_fft)
817      use_filtre_fft_loc=use_filtre_fft
818     
819      IF (use_filtre_fft .AND. grossismx /= 1.0) THEN
820        write(lunout,*)'WARNING !!! '
821        write(lunout,*)"Le zoom en longitude est incompatible",
822     &                 " avec l'utilisation du filtre FFT ",
823     &                 "---> filtre FFT désactivé "
824       use_filtre_fft=.FALSE.
825      ENDIF
826     
827 
828     
829!Config  Key  = use_mpi_alloc
830!Config  Desc = Utilise un buffer MPI en m�moire globale
831!Config  Def  = false
832!Config  Help = permet d'activer l'utilisation d'un buffer MPI
833!Config         en m�moire globale a l'aide de la fonction MPI_ALLOC.
834!Config         Cela peut am�liorer la bande passante des transferts MPI
835!Config         d'un facteur 2 
836      use_mpi_alloc=.FALSE.
837      CALL getin('use_mpi_alloc',use_mpi_alloc)
838
839!Config  Key  = omp_chunk
840!Config  Desc = taille des blocs openmp
841!Config  Def  = 1
842!Config  Help = defini la taille des packets d'it�ration openmp
843!Config         distribu�e � chaque t�che lors de l'entr�e dans une
844!Config         boucle parall�lis�e
845 
846      omp_chunk=1
847      CALL getin('omp_chunk',omp_chunk)
848
849!Config key = ok_strato
850!Config  Desc = activation de la version strato
851!Config  Def  = .FALSE.
852!Config  Help = active la version stratosphérique de LMDZ de F. Lott
853
854      ok_strato=.FALSE.
855      CALL getin('ok_strato',ok_strato)
856
857!Config  Key  = ok_gradsfile
858!Config  Desc = activation des sorties grads du guidage
859!Config  Def  = n
860!Config  Help = active les sorties grads du guidage
861
862       ok_gradsfile = .FALSE.
863       CALL getin('ok_gradsfile',ok_gradsfile)
864
865      write(lunout,*)' #########################################'
866      write(lunout,*)' Configuration des parametres du gcm: '
867      write(lunout,*)' planet_type = ', planet_type
868      write(lunout,*)' calend = ', calend
869      write(lunout,*)' dayref = ', dayref
870      write(lunout,*)' anneeref = ', anneeref
871      write(lunout,*)' nday = ', nday
872      write(lunout,*)' day_step = ', day_step
873      write(lunout,*)' iperiod = ', iperiod
874      write(lunout,*)' iconser = ', iconser
875      write(lunout,*)' iecri = ', iecri
876      write(lunout,*)' periodav = ', periodav
877      write(lunout,*)' output_grads_dyn = ', output_grads_dyn
878      write(lunout,*)' idissip = ', idissip
879      write(lunout,*)' lstardis = ', lstardis
880      write(lunout,*)' nitergdiv = ', nitergdiv
881      write(lunout,*)' nitergrot = ', nitergrot
882      write(lunout,*)' niterh = ', niterh
883      write(lunout,*)' tetagdiv = ', tetagdiv
884      write(lunout,*)' tetagrot = ', tetagrot
885      write(lunout,*)' tetatemp = ', tetatemp
886      write(lunout,*)' coefdis = ', coefdis
887      write(lunout,*)' purmats = ', purmats
888      write(lunout,*)' read_start = ', read_start
889      write(lunout,*)' iflag_phys = ', iflag_phys
890      write(lunout,*)' iphysiq = ', iphysiq
891      write(lunout,*)' clon = ', clon
892      write(lunout,*)' clat = ', clat
893      write(lunout,*)' grossismx = ', grossismx
894      write(lunout,*)' grossismy = ', grossismy
895      write(lunout,*)' fxyhypb = ', fxyhypb
896      write(lunout,*)' dzoomx = ', dzoomx
897      write(lunout,*)' dzoomy = ', dzoomy
898      write(lunout,*)' taux = ', taux
899      write(lunout,*)' tauy = ', tauy
900      write(lunout,*)' offline = ', offline
901      write(lunout,*)' config_inca = ', config_inca
902      write(lunout,*)' ok_dynzon = ', ok_dynzon
903      write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
904      write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
905      write(lunout,*)' use_filtre_fft = ', use_filtre_fft
906      write(lunout,*)' use_mpi_alloc = ', use_mpi_alloc
907      write(lunout,*)' omp_chunk = ', omp_chunk
908      write(lunout,*)' ok_strato = ', ok_strato
909      write(lunout,*)' ok_gradsfile = ', ok_gradsfile
910c
911      RETURN
912      END
Note: See TracBrowser for help on using the repository browser.