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

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

Modifications nécessaires a l'inclusion d'un calendrier réaliste.
La date courante est calculée dans leapfrog.F et exprimée en Jour Julien
(modifié). On en a profité pour faire un peu de ménage dans la gestion des dates
du modèle.
Dans la physique, on utilise les routines de passages entre calendrier Julien et
Gregorien incluses dans IOIPSL pour calculer le nombre de jours écoulés depuis le
1er janvier (pour les conditions aux limites) ou l'equinoxe (pour le calcul de
la longitude solaire). Le calcul de l'orbite reprend celui du gcm planétaire
(codé par FH)
On décide du calendrier à utiliser à l'aide du paramètre calend du run.def. Par
défaut celui-ci est à earth_360d
LF

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