LMDZ
conf_gcm.F90
Go to the documentation of this file.
1 
2 ! $Id$
3 
4 SUBROUTINE conf_gcm( tapedef, etatinit )
5 
6  USE control_mod
7 #ifdef CPP_IOIPSL
8  use ioipsl
9 #else
10  ! if not using IOIPSL, we still need to use (a local version of) getin
11  use ioipsl_getincom
12 #endif
13  use misc_mod
14  use mod_filtre_fft, ONLY : use_filtre_fft
15  use mod_filtre_fft_loc, ONLY : use_filtre_fft_loc=>use_filtre_fft
16  use mod_hallo, ONLY : use_mpi_alloc
17  USE infotrac, ONLY : type_trac
18  use assert_m, only: assert
19 
20  IMPLICIT NONE
21  !-----------------------------------------------------------------------
22  ! Auteurs : L. Fairhead , P. Le Van .
23 
24  ! Arguments :
25 
26  ! tapedef :
27  ! etatinit : = TRUE , on ne compare pas les valeurs des para-
28  ! -metres du zoom avec celles lues sur le fichier start .
29 
30  LOGICAL,INTENT(IN) :: etatinit
31  INTEGER,INTENT(IN) :: tapedef
32 
33  ! Declarations :
34  ! --------------
35  include "dimensions.h"
36  include "paramet.h"
37  include "logic.h"
38  include "serre.h"
39  include "comdissnew.h"
40  include "temps.h"
41  include "comconst.h"
42  include "iniprint.h"
43 
44  ! local:
45  ! ------
46 
47  CHARACTER ch1*72,ch2*72,ch3*72,ch4*12
48  REAL clonn,clatt,grossismxx,grossismyy
49  REAL dzoomxx,dzoomyy, tauxx,tauyy
50  LOGICAL fxyhypbb, ysinuss
51  INTEGER i
52  character(len=*),parameter :: modname="conf_gcm"
53  character (len=80) :: abort_message
54 #ifdef CPP_OMP
55  integer,external :: OMP_GET_NUM_THREADS
56 #endif
57 
58  ! -------------------------------------------------------------------
59 
60  ! ......... Version du 29/04/97 ..........
61 
62  ! Nouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot,
63  ! tetatemp ajoutes pour la dissipation .
64 
65  ! Autre parametre ajoute en fin de liste de tapedef : ** fxyhypb **
66 
67  ! Si fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb.
68  ! Sinon , choix de fxynew , a derivee sinusoidale ..
69 
70  ! ...... etatinit = . TRUE. si defrun est appele dans ETAT0_LMD ou
71  ! LIMIT_LMD pour l'initialisation de start.dat (dic) et
72  ! de limit.dat ( dic) ...........
73  ! Sinon etatinit = . FALSE .
74 
75  ! Donc etatinit = .F. si on veut comparer les valeurs de grossismx ,
76  ! grossismy,clon,clat, fxyhypb lues sur le fichier start avec
77  ! celles passees par run.def , au debut du gcm, apres l'appel a
78  ! lectba .
79  ! Ces parmetres definissant entre autres la grille et doivent etre
80  ! pareils et coherents , sinon il y aura divergence du gcm .
81 
82  !-----------------------------------------------------------------------
83  ! initialisations:
84  ! ----------------
85 
86  !Config Key = lunout
87  !Config Desc = unite de fichier pour les impressions
88  !Config Def = 6
89  !Config Help = unite de fichier pour les impressions
90  !Config (defaut sortie standard = 6)
91  lunout=6
92  CALL getin('lunout', lunout)
93  IF (lunout /= 5 .and. lunout /= 6) THEN
94  OPEN(unit=lunout,file='lmdz.out_0000',action='write', &
95  status='unknown',form='formatted')
96  ENDIF
97 
98  adjust=.false.
99  call getin('adjust',adjust)
100 
101 #ifdef CPP_OMP
102  ! adjust=y not implemented in case of OpenMP threads...
103  !$OMP PARALLEL
104  if ((omp_get_num_threads()>1).and.adjust) then
105  write(lunout,*)'conf_gcm: Error, adjust should be set to n' &
106  ,' when running with OpenMP threads'
107  abort_message = 'Wrong value for adjust'
108  call abort_gcm(modname,abort_message,1)
109  endif
110  !$OMP END PARALLEL
111 #endif
112 
113  itaumax=0
114  call getin('itaumax',itaumax);
115  if (itaumax<=0) itaumax=huge(itaumax)
116 
117  !Config Key = prt_level
118  !Config Desc = niveau d'impressions de débogage
119  !Config Def = 0
120  !Config Help = Niveau d'impression pour le débogage
121  !Config (0 = minimum d'impression)
122  prt_level = 0
123  CALL getin('prt_level',prt_level)
124 
125  !-----------------------------------------------------------------------
126  ! Parametres de controle du run:
127  !-----------------------------------------------------------------------
128  !Config Key = planet_type
129  !Config Desc = planet type ("earth", "mars", "venus", ...)
130  !Config Def = earth
131  !Config Help = this flag sets the type of atymosphere that is considered
132  planet_type="earth"
133  CALL getin('planet_type',planet_type)
134 
135  !Config Key = calend
136  !Config Desc = type de calendrier utilise
137  !Config Def = earth_360d
138  !Config Help = valeur possible: earth_360d, earth_365d, earth_366d
139  !Config
140  calend = 'earth_360d'
141  CALL getin('calend', calend)
142 
143  !Config Key = dayref
144  !Config Desc = Jour de l'etat initial
145  !Config Def = 1
146  !Config Help = Jour de l'etat initial ( = 350 si 20 Decembre ,
147  !Config par expl. ,comme ici ) ... A completer
148  dayref=1
149  CALL getin('dayref', dayref)
150 
151  !Config Key = anneeref
152  !Config Desc = Annee de l'etat initial
153  !Config Def = 1998
154  !Config Help = Annee de l'etat initial
155  !Config ( avec 4 chiffres ) ... A completer
156  anneeref = 1998
157  CALL getin('anneeref',anneeref)
158 
159  !Config Key = raz_date
160  !Config Desc = Remise a zero de la date initiale
161  !Config Def = 0 (pas de remise a zero)
162  !Config Help = Remise a zero de la date initiale
163  !Config 0 pas de remise a zero, on garde la date du fichier restart
164  !Config 1 prise en compte de la date de gcm.def avec remise a zero
165  !Config des compteurs de pas de temps
166  raz_date = 0
167  CALL getin('raz_date', raz_date)
168 
169  !Config Key = resetvarc
170  !Config Desc = Reinit des variables de controle
171  !Config Def = n
172  !Config Help = Reinit des variables de controle
173  resetvarc = .false.
174  CALL getin('resetvarc',resetvarc)
175 
176  !Config Key = nday
177  !Config Desc = Nombre de jours d'integration
178  !Config Def = 10
179  !Config Help = Nombre de jours d'integration
180  !Config ... On pourait aussi permettre des mois ou des annees !
181  nday = 10
182  CALL getin('nday',nday)
183 
184  !Config Key = starttime
185  !Config Desc = Heure de depart de la simulation
186  !Config Def = 0
187  !Config Help = Heure de depart de la simulation
188  !Config en jour
189  starttime = 0
190  CALL getin('starttime',starttime)
191 
192  !Config Key = day_step
193  !Config Desc = nombre de pas par jour
194  !Config Def = 240
195  !Config Help = nombre de pas par jour (multiple de iperiod) (
196  !Config ici pour dt = 1 min )
197  day_step = 240
198  CALL getin('day_step',day_step)
199 
200  !Config Key = nsplit_phys
201  nsplit_phys = 1
202  CALL getin('nsplit_phys',nsplit_phys)
203 
204  !Config Key = iperiod
205  !Config Desc = periode pour le pas Matsuno
206  !Config Def = 5
207  !Config Help = periode pour le pas Matsuno (en pas de temps)
208  iperiod = 5
209  CALL getin('iperiod',iperiod)
210 
211  !Config Key = iapp_tracvl
212  !Config Desc = frequence du groupement des flux
213  !Config Def = iperiod
214  !Config Help = frequence du groupement des flux (en pas de temps)
216  CALL getin('iapp_tracvl',iapp_tracvl)
217 
218  !Config Key = iconser
219  !Config Desc = periode de sortie des variables de controle
220  !Config Def = 240
221  !Config Help = periode de sortie des variables de controle
222  !Config (En pas de temps)
223  iconser = 240
224  CALL getin('iconser', iconser)
225 
226  !Config Key = iecri
227  !Config Desc = periode d'ecriture du fichier histoire
228  !Config Def = 1
229  !Config Help = periode d'ecriture du fichier histoire (en jour)
230  iecri = 1
231  CALL getin('iecri',iecri)
232 
233  !Config Key = periodav
234  !Config Desc = periode de stockage fichier histmoy
235  !Config Def = 1
236  !Config Help = periode de stockage fichier histmoy (en jour)
237  periodav = 1.
238  CALL getin('periodav',periodav)
239 
240  !Config Key = output_grads_dyn
241  !Config Desc = output dynamics diagnostics in 'dyn.dat' file
242  !Config Def = n
243  !Config Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file
245  CALL getin('output_grads_dyn',output_grads_dyn)
246 
247  !Config Key = dissip_period
248  !Config Desc = periode de la dissipation
249  !Config Def = 0
250  !Config Help = periode de la dissipation
251  !Config dissip_period=0 => la valeur sera calcule dans inidissip
252  !Config dissip_period>0 => on prend cette valeur
253  dissip_period = 0
254  CALL getin('dissip_period',dissip_period)
255 
256  !cc .... P. Le Van , modif le 29/04/97 .pour la dissipation ...
257  !cc
258 
259  !Config Key = lstardis
260  !Config Desc = choix de l'operateur de dissipation
261  !Config Def = y
262  !Config Help = choix de l'operateur de dissipation
263  !Config 'y' si on veut star et 'n' si on veut non-start !
264  !Config Moi y en a pas comprendre !
265  lstardis = .true.
266  CALL getin('lstardis',lstardis)
267 
268  !Config Key = nitergdiv
269  !Config Desc = Nombre d'iteration de gradiv
270  !Config Def = 1
271  !Config Help = nombre d'iterations de l'operateur de dissipation
272  !Config gradiv
273  nitergdiv = 1
274  CALL getin('nitergdiv',nitergdiv)
275 
276  !Config Key = nitergrot
277  !Config Desc = nombre d'iterations de nxgradrot
278  !Config Def = 2
279  !Config Help = nombre d'iterations de l'operateur de dissipation
280  !Config nxgradrot
281  nitergrot = 2
282  CALL getin('nitergrot',nitergrot)
283 
284  !Config Key = niterh
285  !Config Desc = nombre d'iterations de divgrad
286  !Config Def = 2
287  !Config Help = nombre d'iterations de l'operateur de dissipation
288  !Config divgrad
289  niterh = 2
290  CALL getin('niterh',niterh)
291 
292  !Config Key = tetagdiv
293  !Config Desc = temps de dissipation pour div
294  !Config Def = 7200
295  !Config Help = temps de dissipation des plus petites longeur
296  !Config d'ondes pour u,v (gradiv)
297  tetagdiv = 7200.
298  CALL getin('tetagdiv',tetagdiv)
299 
300  !Config Key = tetagrot
301  !Config Desc = temps de dissipation pour grad
302  !Config Def = 7200
303  !Config Help = temps de dissipation des plus petites longeur
304  !Config d'ondes pour u,v (nxgradrot)
305  tetagrot = 7200.
306  CALL getin('tetagrot',tetagrot)
307 
308  !Config Key = tetatemp
309  !Config Desc = temps de dissipation pour h
310  !Config Def = 7200
311  !Config Help = temps de dissipation des plus petites longeur
312  !Config d'ondes pour h (divgrad)
313  tetatemp = 7200.
314  CALL getin('tetatemp',tetatemp )
315 
316  ! Parametres controlant la variation sur la verticale des constantes de
317  ! dissipation.
318  ! Pour le moment actifs uniquement dans la version a 39 niveaux
319  ! avec ok_strato=y
320 
321  dissip_factz=4.
322  dissip_deltaz=10.
323  dissip_zref=30.
324  CALL getin('dissip_factz',dissip_factz )
325  CALL getin('dissip_deltaz',dissip_deltaz )
326  CALL getin('dissip_zref',dissip_zref )
327 
328  ! top_bound sponge: only active if ok_strato=.true. and iflag_top_bound!=0
329  ! iflag_top_bound=0 for no sponge
330  ! iflag_top_bound=1 for sponge over 4 topmost layers
331  ! iflag_top_bound=2 for sponge from top to ~1% of top layer pressure
333  CALL getin('iflag_top_bound',iflag_top_bound)
334 
335  ! mode_top_bound : fields towards which sponge relaxation will be done:
336  ! mode_top_bound=0: no relaxation
337  ! mode_top_bound=1: u and v relax towards 0
338  ! mode_top_bound=2: u and v relax towards their zonal mean
339  ! mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean
340  mode_top_bound=3
341  CALL getin('mode_top_bound',mode_top_bound)
342 
343  ! top_bound sponge : inverse of charactericstic relaxation time scale for sponge
344  tau_top_bound=1.e-5
345  CALL getin('tau_top_bound',tau_top_bound)
346 
347  !Config Key = coefdis
348  !Config Desc = coefficient pour gamdissip
349  !Config Def = 0
350  !Config Help = coefficient pour gamdissip
351  coefdis = 0.
352  CALL getin('coefdis',coefdis)
353 
354  !Config Key = purmats
355  !Config Desc = Schema d'integration
356  !Config Def = n
357  !Config Help = Choix du schema d'integration temporel.
358  !Config y = pure Matsuno sinon c'est du Matsuno-leapfrog
359  purmats = .false.
360  CALL getin('purmats',purmats)
361 
362  !Config Key = ok_guide
363  !Config Desc = Guidage
364  !Config Def = n
365  !Config Help = Guidage
366  ok_guide = .false.
367  CALL getin('ok_guide',ok_guide)
368 
369  if (ok_guide .and. adjust) call abort_gcm("conf_gcm", &
370  "adjust does not work with ok_guide", 1)
371 
372  !Config Key = read_start
373  !Config Desc = Initialize model using a 'start.nc' file
374  !Config Def = y
375  !Config Help = y: intialize dynamical fields using a 'start.nc' file
376  ! n: fields are initialized by 'iniacademic' routine
377  read_start= .true.
378  CALL getin('read_start',read_start)
379 
380  !Config Key = iflag_phys
381  !Config Desc = Avec ls physique
382  !Config Def = 1
383  !Config Help = Permet de faire tourner le modele sans
384  !Config physique.
385  iflag_phys = 1
386  CALL getin('iflag_phys',iflag_phys)
387 
388  !Config Key = iphysiq
389  !Config Desc = Periode de la physique
390  !Config Def = 5
391  !Config Help = Periode de la physique en pas de temps de la dynamique.
392  iphysiq = 5
393  CALL getin('iphysiq', iphysiq)
394 
395  !Config Key = ip_ebil_dyn
396  !Config Desc = PRINT level for energy conserv. diag.
397  !Config Def = 0
398  !Config Help = PRINT level for energy conservation diag. ;
399  ! les options suivantes existent :
400  !Config 0 pas de print
401  !Config 1 pas de print
402  !Config 2 print,
403  ip_ebil_dyn = 0
404  CALL getin('ip_ebil_dyn',ip_ebil_dyn)
405 
406  !cc .... P. Le Van , ajout le 7/03/95 .pour le zoom ...
407  ! ......... ( modif le 17/04/96 ) .........
408 
409  test_etatinit: IF (.not. etatinit) then
410  !Config Key = clon
411  !Config Desc = centre du zoom, longitude
412  !Config Def = 0
413  !Config Help = longitude en degres du centre
414  !Config du zoom
415  clonn = 0.
416  CALL getin('clon',clonn)
417 
418  !Config Key = clat
419  !Config Desc = centre du zoom, latitude
420  !Config Def = 0
421  !Config Help = latitude en degres du centre du zoom
422  !Config
423  clatt = 0.
424  CALL getin('clat',clatt)
425 
426  IF( abs(clat - clatt).GE. 0.001 ) THEN
427  write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', &
428  ' est differente de celle lue sur le fichier start '
429  stop
430  ENDIF
431 
432  !Config Key = grossismx
433  !Config Desc = zoom en longitude
434  !Config Def = 1.0
435  !Config Help = facteur de grossissement du zoom,
436  !Config selon la longitude
437  grossismxx = 1.0
438  CALL getin('grossismx',grossismxx)
439 
440  IF( abs(grossismx - grossismxx).GE. 0.001 ) THEN
441  write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', &
442  'run.def est differente de celle lue sur le fichier start '
443  stop
444  ENDIF
445 
446  !Config Key = grossismy
447  !Config Desc = zoom en latitude
448  !Config Def = 1.0
449  !Config Help = facteur de grossissement du zoom,
450  !Config selon la latitude
451  grossismyy = 1.0
452  CALL getin('grossismy',grossismyy)
453 
454  IF( abs(grossismy - grossismyy).GE. 0.001 ) THEN
455  write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', &
456  'run.def est differente de celle lue sur le fichier start '
457  stop
458  ENDIF
459 
460  IF( grossismx.LT.1. ) THEN
461  write(lunout,*) &
462  'conf_gcm: *** ATTENTION !! grossismx < 1 . *** '
463  stop
464  ELSE
465  alphax = 1. - 1./ grossismx
466  ENDIF
467 
468  IF( grossismy.LT.1. ) THEN
469  write(lunout,*) &
470  'conf_gcm: *** ATTENTION !! grossismy < 1 . *** '
471  stop
472  ELSE
473  alphay = 1. - 1./ grossismy
474  ENDIF
475 
476  write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay
477 
478  ! alphax et alphay sont les anciennes formulat. des grossissements
479 
480  !Config Key = fxyhypb
481  !Config Desc = Fonction hyperbolique
482  !Config Def = y
483  !Config Help = Fonction f(y) hyperbolique si = .true.
484  !Config sinon sinusoidale
485  fxyhypbb = .true.
486  CALL getin('fxyhypb',fxyhypbb)
487 
488  IF( .NOT.fxyhypb ) THEN
489  IF( fxyhypbb ) THEN
490  write(lunout,*)' ******** PBS DANS CONF_GCM ******** '
491  write(lunout,*)' *** fxyhypb lu sur le fichier start est ', &
492  'F alors qu il est T sur run.def ***'
493  stop
494  ENDIF
495  ELSE
496  IF( .NOT.fxyhypbb ) THEN
497  write(lunout,*)' ******** PBS DANS CONF_GCM ******** '
498  write(lunout,*)' *** fxyhypb lu sur le fichier start est ', &
499  'T alors qu il est F sur run.def **** '
500  stop
501  ENDIF
502  ENDIF
503 
504  !Config Key = dzoomx
505  !Config Desc = extension en longitude
506  !Config Def = 0
507  !Config Help = extension en longitude de la zone du zoom
508  !Config ( fraction de la zone totale)
509  dzoomxx = 0.0
510  CALL getin('dzoomx',dzoomxx)
511 
512  IF( fxyhypb ) THEN
513  IF( abs(dzoomx - dzoomxx).GE. 0.001 ) THEN
514  write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', &
515  'run.def est differente de celle lue sur le fichier start '
516  stop
517  ENDIF
518  ENDIF
519 
520  !Config Key = dzoomy
521  !Config Desc = extension en latitude
522  !Config Def = 0
523  !Config Help = extension en latitude de la zone du zoom
524  !Config ( fraction de la zone totale)
525  dzoomyy = 0.0
526  CALL getin('dzoomy',dzoomyy)
527 
528  IF( fxyhypb ) THEN
529  IF( abs(dzoomy - dzoomyy).GE. 0.001 ) THEN
530  write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', &
531  'run.def est differente de celle lue sur le fichier start '
532  stop
533  ENDIF
534  ENDIF
535 
536  !Config Key = taux
537  !Config Desc = raideur du zoom en X
538  !Config Def = 3
539  !Config Help = raideur du zoom en X
540  tauxx = 3.0
541  CALL getin('taux',tauxx)
542 
543  IF( fxyhypb ) THEN
544  IF( abs(taux - tauxx).GE. 0.001 ) THEN
545  write(lunout,*)'conf_gcm: La valeur de taux passee par ', &
546  'run.def est differente de celle lue sur le fichier start '
547  stop
548  ENDIF
549  ENDIF
550 
551  !Config Key = tauyy
552  !Config Desc = raideur du zoom en Y
553  !Config Def = 3
554  !Config Help = raideur du zoom en Y
555  tauyy = 3.0
556  CALL getin('tauy',tauyy)
557 
558  IF( fxyhypb ) THEN
559  IF( abs(tauy - tauyy).GE. 0.001 ) THEN
560  write(lunout,*)'conf_gcm: La valeur de tauy passee par ', &
561  'run.def est differente de celle lue sur le fichier start '
562  stop
563  ENDIF
564  ENDIF
565 
566  !c
567  IF( .NOT.fxyhypb ) THEN
568 
569  !Config Key = ysinus
570  !Config IF = !fxyhypb
571  !Config Desc = Fonction en Sinus
572  !Config Def = y
573  !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true.
574  !Config sinon y = latit.
575  ysinuss = .true.
576  CALL getin('ysinus',ysinuss)
577 
578  IF( .NOT.ysinus ) THEN
579  IF( ysinuss ) THEN
580  write(lunout,*)' ******** PBS DANS CONF_GCM ******** '
581  write(lunout,*)' *** ysinus lu sur le fichier start est F', &
582  ' alors qu il est T sur run.def ***'
583  stop
584  ENDIF
585  ELSE
586  IF( .NOT.ysinuss ) THEN
587  write(lunout,*)' ******** PBS DANS CONF_GCM ******** '
588  write(lunout,*)' *** ysinus lu sur le fichier start est T', &
589  ' alors qu il est F sur run.def **** '
590  stop
591  ENDIF
592  ENDIF
593  ENDIF ! of IF( .NOT.fxyhypb )
594 
595  !Config Key = offline
596  !Config Desc = Nouvelle eau liquide
597  !Config Def = n
598  !Config Help = Permet de mettre en route la
599  !Config nouvelle parametrisation de l'eau liquide !
600  offline = .false.
601  CALL getin('offline',offline)
602  IF (offline .AND. adjust) THEN
603  WRITE(lunout,*) &
604  'WARNING : option offline does not work with adjust=y :'
605  WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ', &
606  'and fluxstokev.nc will not be created'
607  WRITE(lunout,*) &
608  'only the file phystoke.nc will still be created '
609  END IF
610 
611  !Config Key = type_trac
612  !Config Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
613  !Config Def = lmdz
614  !Config Help =
615  !Config 'lmdz' = pas de couplage, pur LMDZ
616  !Config 'inca' = model de chime INCA
617  !Config 'repr' = model de chime REPROBUS
618  type_trac = 'lmdz'
619  CALL getin('type_trac',type_trac)
620 
621  !Config Key = config_inca
622  !Config Desc = Choix de configuration de INCA
623  !Config Def = none
624  !Config Help = Choix de configuration de INCA :
625  !Config 'none' = sans INCA
626  !Config 'chem' = INCA avec calcul de chemie
627  !Config 'aero' = INCA avec calcul des aerosols
628  config_inca = 'none'
629  CALL getin('config_inca',config_inca)
630 
631  !Config Key = ok_dynzon
632  !Config Desc = calcul et sortie des transports
633  !Config Def = n
634  !Config Help = Permet de mettre en route le calcul des transports
635  !Config
636  ok_dynzon = .false.
637  CALL getin('ok_dynzon',ok_dynzon)
638 
639  !Config Key = ok_dyn_ins
640  !Config Desc = sorties instantanees dans la dynamique
641  !Config Def = n
642  !Config Help =
643  !Config
644  ok_dyn_ins = .false.
645  CALL getin('ok_dyn_ins',ok_dyn_ins)
646 
647  !Config Key = ok_dyn_ave
648  !Config Desc = sorties moyennes dans la dynamique
649  !Config Def = n
650  !Config Help =
651  !Config
652  ok_dyn_ave = .false.
653  CALL getin('ok_dyn_ave',ok_dyn_ave)
654 
655  write(lunout,*)' #########################################'
656  write(lunout,*)' Configuration des parametres du gcm: '
657  write(lunout,*)' planet_type = ', planet_type
658  write(lunout,*)' calend = ', calend
659  write(lunout,*)' dayref = ', dayref
660  write(lunout,*)' anneeref = ', anneeref
661  write(lunout,*)' nday = ', nday
662  write(lunout,*)' day_step = ', day_step
663  write(lunout,*)' iperiod = ', iperiod
664  write(lunout,*)' nsplit_phys = ', nsplit_phys
665  write(lunout,*)' iconser = ', iconser
666  write(lunout,*)' iecri = ', iecri
667  write(lunout,*)' periodav = ', periodav
668  write(lunout,*)' output_grads_dyn = ', output_grads_dyn
669  write(lunout,*)' dissip_period = ', dissip_period
670  write(lunout,*)' lstardis = ', lstardis
671  write(lunout,*)' nitergdiv = ', nitergdiv
672  write(lunout,*)' nitergrot = ', nitergrot
673  write(lunout,*)' niterh = ', niterh
674  write(lunout,*)' tetagdiv = ', tetagdiv
675  write(lunout,*)' tetagrot = ', tetagrot
676  write(lunout,*)' tetatemp = ', tetatemp
677  write(lunout,*)' coefdis = ', coefdis
678  write(lunout,*)' purmats = ', purmats
679  write(lunout,*)' read_start = ', read_start
680  write(lunout,*)' iflag_phys = ', iflag_phys
681  write(lunout,*)' iphysiq = ', iphysiq
682  write(lunout,*)' clonn = ', clonn
683  write(lunout,*)' clatt = ', clatt
684  write(lunout,*)' grossismx = ', grossismx
685  write(lunout,*)' grossismy = ', grossismy
686  write(lunout,*)' fxyhypbb = ', fxyhypbb
687  write(lunout,*)' dzoomxx = ', dzoomxx
688  write(lunout,*)' dzoomy = ', dzoomyy
689  write(lunout,*)' tauxx = ', tauxx
690  write(lunout,*)' tauyy = ', tauyy
691  write(lunout,*)' offline = ', offline
692  write(lunout,*)' type_trac = ', type_trac
693  write(lunout,*)' config_inca = ', config_inca
694  write(lunout,*)' ok_dynzon = ', ok_dynzon
695  write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
696  write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
697  else
698  !Config Key = clon
699  !Config Desc = centre du zoom, longitude
700  !Config Def = 0
701  !Config Help = longitude en degres du centre
702  !Config du zoom
703  clon = 0.
704  CALL getin('clon',clon)
705 
706  !Config Key = clat
707  !Config Desc = centre du zoom, latitude
708  !Config Def = 0
709  !Config Help = latitude en degres du centre du zoom
710  !Config
711  clat = 0.
712  CALL getin('clat',clat)
713 
714  !Config Key = grossismx
715  !Config Desc = zoom en longitude
716  !Config Def = 1.0
717  !Config Help = facteur de grossissement du zoom,
718  !Config selon la longitude
719  grossismx = 1.0
720  CALL getin('grossismx',grossismx)
721 
722  !Config Key = grossismy
723  !Config Desc = zoom en latitude
724  !Config Def = 1.0
725  !Config Help = facteur de grossissement du zoom,
726  !Config selon la latitude
727  grossismy = 1.0
728  CALL getin('grossismy',grossismy)
729 
730  IF( grossismx.LT.1. ) THEN
731  write(lunout,*) &
732  'conf_gcm: *** ATTENTION !! grossismx < 1 . *** '
733  stop
734  ELSE
735  alphax = 1. - 1./ grossismx
736  ENDIF
737 
738  IF( grossismy.LT.1. ) THEN
739  write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** '
740  stop
741  ELSE
742  alphay = 1. - 1./ grossismy
743  ENDIF
744 
745  write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay
746 
747  ! alphax et alphay sont les anciennes formulat. des grossissements
748 
749  !Config Key = fxyhypb
750  !Config Desc = Fonction hyperbolique
751  !Config Def = y
752  !Config Help = Fonction f(y) hyperbolique si = .true.
753  !Config sinon sinusoidale
754  fxyhypb = .true.
755  CALL getin('fxyhypb',fxyhypb)
756 
757  !Config Key = dzoomx
758  !Config Desc = extension en longitude
759  !Config Def = 0
760  !Config Help = extension en longitude de la zone du zoom
761  !Config ( fraction de la zone totale)
762  dzoomx = 0.2
763  CALL getin('dzoomx',dzoomx)
764  call assert(dzoomx < 1, "conf_gcm: dzoomx must be < 1")
765 
766  !Config Key = dzoomy
767  !Config Desc = extension en latitude
768  !Config Def = 0
769  !Config Help = extension en latitude de la zone du zoom
770  !Config ( fraction de la zone totale)
771  dzoomy = 0.2
772  CALL getin('dzoomy',dzoomy)
773  call assert(dzoomy < 1, "conf_gcm: dzoomy must be < 1")
774 
775  !Config Key = taux
776  !Config Desc = raideur du zoom en X
777  !Config Def = 3
778  !Config Help = raideur du zoom en X
779  taux = 3.0
780  CALL getin('taux',taux)
781 
782  !Config Key = tauy
783  !Config Desc = raideur du zoom en Y
784  !Config Def = 3
785  !Config Help = raideur du zoom en Y
786  tauy = 3.0
787  CALL getin('tauy',tauy)
788 
789  !Config Key = ysinus
790  !Config IF = !fxyhypb
791  !Config Desc = Fonction en Sinus
792  !Config Def = y
793  !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true.
794  !Config sinon y = latit.
795  ysinus = .true.
796  CALL getin('ysinus',ysinus)
797 
798  !Config Key = offline
799  !Config Desc = Nouvelle eau liquide
800  !Config Def = n
801  !Config Help = Permet de mettre en route la
802  !Config nouvelle parametrisation de l'eau liquide !
803  offline = .false.
804  CALL getin('offline',offline)
805  IF (offline .AND. adjust) THEN
806  WRITE(lunout,*) &
807  'WARNING : option offline does not work with adjust=y :'
808  WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ', &
809  'and fluxstokev.nc will not be created'
810  WRITE(lunout,*) &
811  'only the file phystoke.nc will still be created '
812  END IF
813 
814  !Config Key = type_trac
815  !Config Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
816  !Config Def = lmdz
817  !Config Help =
818  !Config 'lmdz' = pas de couplage, pur LMDZ
819  !Config 'inca' = model de chime INCA
820  !Config 'repr' = model de chime REPROBUS
821  type_trac = 'lmdz'
822  CALL getin('type_trac',type_trac)
823 
824  !Config Key = config_inca
825  !Config Desc = Choix de configuration de INCA
826  !Config Def = none
827  !Config Help = Choix de configuration de INCA :
828  !Config 'none' = sans INCA
829  !Config 'chem' = INCA avec calcul de chemie
830  !Config 'aero' = INCA avec calcul des aerosols
831  config_inca = 'none'
832  CALL getin('config_inca',config_inca)
833 
834  !Config Key = ok_dynzon
835  !Config Desc = sortie des transports zonaux dans la dynamique
836  !Config Def = n
837  !Config Help = Permet de mettre en route le calcul des transports
838  !Config
839  ok_dynzon = .false.
840  CALL getin('ok_dynzon',ok_dynzon)
841 
842  !Config Key = ok_dyn_ins
843  !Config Desc = sorties instantanees dans la dynamique
844  !Config Def = n
845  !Config Help =
846  !Config
847  ok_dyn_ins = .false.
848  CALL getin('ok_dyn_ins',ok_dyn_ins)
849 
850  !Config Key = ok_dyn_ave
851  !Config Desc = sorties moyennes dans la dynamique
852  !Config Def = n
853  !Config Help =
854  !Config
855  ok_dyn_ave = .false.
856  CALL getin('ok_dyn_ave',ok_dyn_ave)
857 
858  !Config Key = use_filtre_fft
859  !Config Desc = flag d'activation des FFT pour le filtre
860  !Config Def = false
861  !Config Help = permet d'activer l'utilisation des FFT pour effectuer
862  !Config le filtrage aux poles.
864  CALL getin('use_filtre_fft',use_filtre_fft)
865  use_filtre_fft_loc=use_filtre_fft
866 
867  IF (use_filtre_fft .AND. grossismx /= 1.0) THEN
868  write(lunout,*)'WARNING !!! '
869  write(lunout,*)"Le zoom en longitude est incompatible", &
870  " avec l'utilisation du filtre FFT ", &
871  "---> FFT filter not active"
873  ENDIF
874 
875  !Config Key = use_mpi_alloc
876  !Config Desc = Utilise un buffer MPI en m�moire globale
877  !Config Def = false
878  !Config Help = permet d'activer l'utilisation d'un buffer MPI
879  !Config en m�moire globale a l'aide de la fonction MPI_ALLOC.
880  !Config Cela peut am�liorer la bande passante des transferts MPI
881  !Config d'un facteur 2
883  CALL getin('use_mpi_alloc',use_mpi_alloc)
884 
885  !Config key = ok_strato
886  !Config Desc = activation de la version strato
887  !Config Def = .FALSE.
888  !Config Help = active la version stratosphérique de LMDZ de F. Lott
889 
890  ok_strato=.false.
891  CALL getin('ok_strato',ok_strato)
892 
893  vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39)
894  CALL getin('vert_prof_dissip', vert_prof_dissip)
895  call assert(vert_prof_dissip == 0 .or. vert_prof_dissip == 1, &
896  "bad value for vert_prof_dissip")
897 
898  !Config Key = ok_gradsfile
899  !Config Desc = activation des sorties grads du guidage
900  !Config Def = n
901  !Config Help = active les sorties grads du guidage
902 
903  ok_gradsfile = .false.
904  CALL getin('ok_gradsfile',ok_gradsfile)
905 
906  !Config Key = ok_limit
907  !Config Desc = creation des fichiers limit dans create_etat0_limit
908  !Config Def = y
909  !Config Help = production du fichier limit.nc requise
910 
911  ok_limit = .true.
912  CALL getin('ok_limit',ok_limit)
913 
914  !Config Key = ok_etat0
915  !Config Desc = creation des fichiers etat0 dans create_etat0_limit
916  !Config Def = y
917  !Config Help = production des fichiers start.nc, startphy.nc requise
918 
919  ok_etat0 = .true.
920  CALL getin('ok_etat0',ok_etat0)
921 
922  write(lunout,*)' #########################################'
923  write(lunout,*)' Configuration des parametres de cel0' &
924  //'_limit: '
925  write(lunout,*)' planet_type = ', planet_type
926  write(lunout,*)' calend = ', calend
927  write(lunout,*)' dayref = ', dayref
928  write(lunout,*)' anneeref = ', anneeref
929  write(lunout,*)' nday = ', nday
930  write(lunout,*)' day_step = ', day_step
931  write(lunout,*)' iperiod = ', iperiod
932  write(lunout,*)' iconser = ', iconser
933  write(lunout,*)' iecri = ', iecri
934  write(lunout,*)' periodav = ', periodav
935  write(lunout,*)' output_grads_dyn = ', output_grads_dyn
936  write(lunout,*)' dissip_period = ', dissip_period
937  write(lunout,*)' lstardis = ', lstardis
938  write(lunout,*)' nitergdiv = ', nitergdiv
939  write(lunout,*)' nitergrot = ', nitergrot
940  write(lunout,*)' niterh = ', niterh
941  write(lunout,*)' tetagdiv = ', tetagdiv
942  write(lunout,*)' tetagrot = ', tetagrot
943  write(lunout,*)' tetatemp = ', tetatemp
944  write(lunout,*)' coefdis = ', coefdis
945  write(lunout,*)' purmats = ', purmats
946  write(lunout,*)' read_start = ', read_start
947  write(lunout,*)' iflag_phys = ', iflag_phys
948  write(lunout,*)' iphysiq = ', iphysiq
949  write(lunout,*)' clon = ', clon
950  write(lunout,*)' clat = ', clat
951  write(lunout,*)' grossismx = ', grossismx
952  write(lunout,*)' grossismy = ', grossismy
953  write(lunout,*)' fxyhypb = ', fxyhypb
954  write(lunout,*)' dzoomx = ', dzoomx
955  write(lunout,*)' dzoomy = ', dzoomy
956  write(lunout,*)' taux = ', taux
957  write(lunout,*)' tauy = ', tauy
958  write(lunout,*)' offline = ', offline
959  write(lunout,*)' type_trac = ', type_trac
960  write(lunout,*)' config_inca = ', config_inca
961  write(lunout,*)' ok_dynzon = ', ok_dynzon
962  write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
963  write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
964  write(lunout,*)' use_filtre_fft = ', use_filtre_fft
965  write(lunout,*)' use_mpi_alloc = ', use_mpi_alloc
966  write(lunout,*)' ok_strato = ', ok_strato
967  write(lunout,*)' ok_gradsfile = ', ok_gradsfile
968  write(lunout,*)' ok_limit = ', ok_limit
969  write(lunout,*)' ok_etat0 = ', ok_etat0
970  end IF test_etatinit
971 
972 END SUBROUTINE conf_gcm
!$Id tetagdiv
Definition: comdissnew.h:13
!$Header!c!c!c include serre h!c REAL dzoomy
Definition: serre.h:8
!$Header!c!c!c include serre h!c REAL alphax
Definition: serre.h:8
integer, save iapp_tracvl
Definition: control_mod.F90:17
!$Id mode_top_bound COMMON comconstr omeg dissip_factz
Definition: comconst.h:7
character(len=4), save config_inca
Definition: control_mod.F90:31
!$Header!c!c!c include serre h!c REAL && grossismx
Definition: serre.h:8
!$Id ysinus read_start
Definition: logic.h:10
logical, save ok_dyn_ins
Definition: control_mod.F90:36
logical, save use_filtre_fft
integer, save dayref
Definition: control_mod.F90:26
!$Header!c!c!c include serre h!c REAL clon
Definition: serre.h:8
!$Id ysinus ok_gradsfile ok_limit
Definition: logic.h:10
!$Id && iflag_top_bound
Definition: comconst.h:7
!$Id nitergdiv
Definition: comdissnew.h:13
character(len=10), save planet_type
Definition: control_mod.F90:32
subroutine abort_gcm(modname, message, ierr)
Definition: abort_gcm.F:7
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd w_profd omega_profd!do llm!print llm l llm
!$Id ysinus ok_gradsfile hybrid COMMON logici iflag_phys
Definition: logic.h:10
integer, save day_step
Definition: control_mod.F90:15
integer, save iphysiq
Definition: control_mod.F90:24
!$Id ysinus ok_strato
Definition: logic.h:10
!$Id nitergrot
Definition: comdissnew.h:13
!$Id mode_top_bound COMMON comconstr omeg dissip_zref tau_top_bound
Definition: comconst.h:7
logical, save output_grads_dyn
Definition: control_mod.F90:33
logical, save use_mpi_alloc
Definition: mod_hallo.F90:4
integer, save itaumax
Definition: misc_mod.F90:2
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
Definition: calcul_STDlev.h:26
logical, save offline
Definition: control_mod.F90:30
!$Id ysinus ok_gradsfile ok_etat0
Definition: logic.h:10
!$Id ysinus ok_guide
Definition: logic.h:10
integer, save dissip_period
Definition: control_mod.F90:22
!$Id fxyhypb
Definition: logic.h:10
!FH On elimine toutes les clefs physiques dans la dynamique prt_level
integer, save raz_date
Definition: control_mod.F90:28
subroutine conf_gcm(tapedef, etatinit)
Definition: conf_gcm.F90:5
real, save periodav
Definition: control_mod.F90:12
logical, save resetvarc
Definition: control_mod.F90:40
integer, save iconser
Definition: control_mod.F90:20
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
character(len=4), save type_trac
Definition: infotrac.F90:40
!$Id ysinus ok_gradsfile hybrid COMMON logici iflag_trac LOGICAL purmats
Definition: logic.h:10
!$Header!c!c!c include serre h!c REAL dzoomx
Definition: serre.h:8
integer, save anneeref
Definition: control_mod.F90:27
!$Id && tetagrot
Definition: comdissnew.h:13
!$Id mode_top_bound COMMON comconstr omeg dissip_deltaz
Definition: comconst.h:7
logical, save ok_dynzon
Definition: control_mod.F90:35
!$Header!c!c!c include serre h!c REAL grossismy
Definition: serre.h:8
integer, save iecri
Definition: control_mod.F90:21
logical, save ok_dyn_ave
Definition: control_mod.F90:38
!$Header!c!c!c include serre h!c REAL taux
Definition: serre.h:8
integer, save nsplit_phys
Definition: control_mod.F90:19
!$Header!INCLUDE comdissip h COMMON comdissip tetatemp
Definition: comdissip.h:8
integer, save iperiod
Definition: control_mod.F90:16
integer, save ip_ebil_dyn
Definition: control_mod.F90:29
!$Header!c!c!c include serre h!c REAL clat
Definition: serre.h:8
integer, save nday
Definition: control_mod.F90:14
logical, save adjust
Definition: misc_mod.F90:3
!$Header!c!c!c include serre h!c REAL alphay
Definition: serre.h:8
!$Id niterh
Definition: comdissnew.h:13
!$Header!integer nvarmx s s unit
Definition: gradsdef.h:20
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
Definition: iniprint.h:7
!$Header!INCLUDE comdissip h COMMON comdissip coefdis
Definition: comdissip.h:8
real, save starttime
Definition: control_mod.F90:13