source: IOIPSL/trunk/example/testconfig2.f90 @ 3207

Last change on this file since 3207 was 386, checked in by bellier, 13 years ago

Added CeCILL License information

  • Property svn:keywords set to Id
File size: 13.0 KB
Line 
1PROGRAM testconfig2
2!-
3!$Id$
4!-
5! This software is governed by the CeCILL license
6! See IOIPSL/IOIPSL_License_CeCILL.txt
7  !
8  USE getincom
9  !
10  !
11  !      This program will do some basic tests on the getin module
12  !
13  !
14  IMPLICIT NONE
15  !
16  INTEGER :: dayref=181
17  INTEGER :: anneeref = 1998
18  INTEGER :: nday = 10
19  INTEGER :: day_step = 240 
20  INTEGER :: iperiod = 5
21  INTEGER :: iconser = 240 
22  INTEGER :: iecri = 1
23  INTEGER :: idissip = 10
24  INTEGER :: nitergdiv = 1
25  INTEGER :: nitergrot = 2
26  INTEGER :: niterh = 2
27  INTEGER :: iphysiq = 5
28  INTEGER :: ecritphy = 1
29  INTEGER :: nbapp_rad = 12
30  INTEGER :: iflag_con = 2
31
32  REAL :: periodav = 1.
33  REAL :: tetagdiv = 7200.
34  REAL :: tetagrot = 7200.
35  REAL :: tetatemp  = 7200.
36  REAL :: coefdis = 0.
37  REAL :: clonn = 0.
38  REAL :: clatt = 0.
39  REAL :: grossismxx = 1.0
40  REAL :: grossismyy = 1.0
41  REAL :: dzoomxx = 0.0
42  REAL :: dzoomyy = 0.0
43  REAL :: tauxx = 3.0
44  REAL :: tauyy = 3.0
45  REAL :: clon = 0.
46  REAL :: clat = 0.
47  REAL :: grossismx = 1.0
48  REAL :: grossismy = 1.0
49  REAL :: dzoomx = 0.0
50  REAL :: dzoomy = 0.0
51  REAL :: taux = 3.0
52  REAL :: tauy = 3.0
53
54  LOGICAL :: lstardis = .TRUE.
55  LOGICAL :: purmats = .FALSE.
56  LOGICAL :: physic = .TRUE.
57  LOGICAL :: cycle_diurne = .TRUE.
58  LOGICAL :: soil_model = .TRUE.
59  LOGICAL :: new_oliq = .TRUE.
60  LOGICAL :: ok_orodr = .TRUE.
61  LOGICAL :: ok_orolf = .TRUE.
62  LOGICAL :: ok_limitvrai = .FALSE.
63  LOGICAL :: fxyhypbb = .TRUE.
64  LOGICAL :: ysinuss = .TRUE.
65  LOGICAL :: fxyhypb = .TRUE.
66  LOGICAL :: ysinus = .TRUE.
67!
68! For time keeping
69!
70  INTEGER :: date_time(8), date_start, date_end
71  CHARACTER(LEN=10) big_ben(3)
72!
73!
74!
75  CALL DATE_AND_TIME(big_ben(1), big_ben(2), big_ben(3), date_time)
76  date_start = date_time(8) + 1000*date_time(7) + 60*1000*date_time(7)
77!
78!Config  Key  = dayref
79!Config  Desc = Jour de l'etat initial
80!Config  Def  = 181
81!Config  Help = Jour de l'etat initial ( = 350  si 20 Decembre ,
82!Config         par expl. ,comme ici ) ... A completer
83  dayref=181
84  CALL getin('dayref', dayref)
85
86!Config  Key  = anneeref
87!Config  Desc = Annee de l'etat initial
88!Config  Def  = 1998
89!Config  Help = Annee de l'etat  initial
90!Config         (   avec  4  chiffres   ) ... A completer
91  anneeref = 1998
92  CALL getin('anneeref',anneeref)
93
94!Config  Key  = nday
95!Config  Desc = Nombre de jours d'integration
96!Config  Def  = 10
97!Config  Help = Nombre de jours d'integration
98!Config         ... On pourait aussi permettre des mois ou des annees !
99  nday = 10
100  CALL getin('nday',nday)
101
102!Config  Key  = day_step
103!Config  Desc = nombre de pas par jour
104!Config  Def  = 240
105!Config  Help = nombre de pas par jour (multiple de iperiod) (
106!Config          ici pour  dt = 1 min )
107  day_step = 240 
108  CALL getin('day_step',day_step)
109
110!Config  Key  = iperiod
111!Config  Desc = periode pour le pas Matsuno
112!Config  Def  = 5
113!Config  Help = periode pour le pas Matsuno (en pas de temps)
114  iperiod = 5
115  CALL getin('iperiod',iperiod)
116
117
118!Config  Key  = iconser
119!Config  Desc = periode de sortie des variables de controle
120!Config  Def  = 240 
121!Config  Help = periode de sortie des variables de controle
122!Config         (En pas de temps)
123  iconser = 240 
124  CALL getin('iconser', iconser)
125
126!Config  Key  = iecri
127!Config  Desc = periode d'ecriture du fichier histoire
128!Config  Def  = 1
129!Config  Help = periode d'ecriture du fichier histoire (en jour)
130  iecri = 1
131  CALL getin('iecri',iecri)
132
133
134!Config  Key  = periodav
135!Config  Desc = periode de stockage fichier histmoy
136!Config  Def  = 1
137!Config  Help = periode de stockage fichier histmoy (en jour)
138  periodav = 1.
139  CALL getin('periodav',periodav)
140
141!Config  Key  = idissip
142!Config  Desc = periode de la dissipation
143!Config  Def  = 10
144!Config  Help = periode de la dissipation
145!Config         (en pas) ... a completer !
146  idissip = 10
147  CALL getin('idissip',idissip)
148
149!Config  Key  = lstardis
150!Config  Desc = choix de l'operateur de dissipation
151!Config  Def  = y
152!Config  Help = choix de l'operateur de dissipation
153!Config         'y' si on veut star et 'n' si on veut non-start !
154!Config         Moi y en a pas comprendre !
155  lstardis = .TRUE.
156  CALL getin('lstardis',lstardis)
157
158
159!Config  Key  = nitergdiv
160!Config  Desc = Nombre d'iteration de gradiv
161!Config  Def  = 1
162!Config  Help = nombre d'iterations de l'operateur de dissipation
163!Config         gradiv
164  nitergdiv = 1
165  CALL getin('nitergdiv',nitergdiv)
166
167!Config  Key  = nitergrot
168!Config  Desc = nombre d'iterations de nxgradrot
169!Config  Def  = 2
170!Config  Help = nombre d'iterations de l'operateur de dissipation 
171!Config         nxgradrot
172  nitergrot = 2
173  CALL getin('nitergrot',nitergrot)
174
175
176!Config  Key  = niterh
177!Config  Desc = nombre d'iterations de divgrad
178!Config  Def  = 2
179!Config  Help = nombre d'iterations de l'operateur de dissipation
180!Config         divgrad
181  niterh = 2
182  CALL getin('niterh',niterh)
183
184
185!Config  Key  = tetagdiv
186!Config  Desc = temps de dissipation pour div
187!Config  Def  = 7200
188!Config  Help = temps de dissipation des plus petites longeur
189!Config         d'ondes pour u,v (gradiv)
190  tetagdiv = 7200.
191  CALL getin('tetagdiv',tetagdiv)
192
193!Config  Key  = tetagrot
194!Config  Desc = temps de dissipation pour grad
195!Config  Def  = 7200
196!Config  Help = temps de dissipation des plus petites longeur
197!Config         d'ondes pour u,v (nxgradrot)
198  tetagrot = 7200.
199  CALL getin('tetagrot',tetagrot)
200
201!Config  Key  = tetatemp
202!Config  Desc = temps de dissipation pour h
203!Config  Def  = 7200
204!Config  Help =  temps de dissipation des plus petites longeur
205!Config         d'ondes pour h (divgrad)   
206  tetatemp  = 7200.
207  CALL getin('tetatemp',tetatemp )
208
209!Config  Key  = coefdis
210!Config  Desc = coefficient pour gamdissip
211!Config  Def  = 0
212!Config  Help = coefficient pour gamdissip 
213  coefdis = 0.
214  CALL getin('coefdis',coefdis)
215
216!Config  Key  = purmats
217!Config  Desc = Schema d'integration
218!Config  Def  = n
219!Config  Help = Choix du schema d'integration temporel.
220!Config         y = pure Matsuno sinon c'est du Matsuno-leapfrog
221  purmats = .FALSE.
222  CALL getin('purmats',purmats)
223
224!Config  Key  = physic
225!Config  Desc = Avec ls physique
226!Config  Def  = y
227!Config  Help = Permet de faire tourner le modele sans
228!Config         physique.
229  physic = .TRUE.
230  CALL getin('physic',physic)
231
232
233!Config  Key  =  iphysiq
234!Config  Desc = Periode de la physique
235!Config  Def  = 5
236!Config  Help = Periode de la physique en pas de temps de la dynamique.
237  iphysiq = 5
238  CALL getin('iphysiq', iphysiq)
239
240!Config  Key  = ecritphy
241!Config  Desc = Frequence d'ecriture de la physique
242!Config  Def  = 1
243!Config  Help = frequence  de l'ecriture du fichier histphy
244!Config         en jours.
245  ecritphy = 1
246  CALL getin('ecritphy',ecritphy)
247
248!Config  Key  = cycle_diurne
249!Config  Desc = Cycle ddiurne
250!Config  Def  = y
251!Config  Help = Cette option permet d'eteidre le cycle diurne.
252!Config         Peut etre util pour accelerer le code !
253  cycle_diurne = .TRUE.
254  CALL getin('cycle_diurne',cycle_diurne)
255
256!Config  Key  = soil_model
257!Config  Desc = Modele de sol
258!Config  Def  = y
259!Config  Help = Choix du modele de sol (Thermique ?)
260!Config         Option qui pourait un string afin de pouvoir
261!Config         plus de choix ! Ou meme une liste d'options !
262  soil_model = .TRUE.
263  CALL getin('soil_model',soil_model)
264
265!Config  Key  = new_oliq
266!Config  Desc = Nouvelle eau liquide
267!Config  Def  = y
268!Config  Help = Permet de mettre en route la
269!Config         nouvelle parametrisation de l'eau liquide !
270  new_oliq = .TRUE.
271  CALL getin('new_oliq',new_oliq)
272
273!Config  Key  = ok_orodr
274!Config  Desc = Orodr ???
275!Config  Def  = y
276!Config  Help = Y en a pas comprendre !
277!Config         
278  ok_orodr = .TRUE.
279  CALL getin('ok_orodr',ok_orodr)
280
281!Config  Key  =  ok_orolf
282!Config  Desc = Orolf ??
283!Config  Def  = y
284!Config  Help = Connais pas !
285  ok_orolf = .TRUE.
286  CALL getin('ok_orolf', ok_orolf)
287
288!Config  Key  = ok_limitvrai
289!Config  Desc = Force la lecture de la bonne annee
290!Config  Def  = n
291!Config  Help = On peut forcer le modele a lire le
292!Config         fichier SST de la bonne annee. C'est une tres bonne
293!Config         idee, pourquoi ne pas mettre toujours a y ???
294  ok_limitvrai = .FALSE.
295  CALL getin('ok_limitvrai',ok_limitvrai)
296
297!Config  Key  = nbapp_rad
298!Config  Desc = Frequence d'appel au rayonnement
299!Config  Def  = 12
300!Config  Help = Nombre  d'appels des routines de rayonnements
301!Config         par jour.
302  nbapp_rad = 12
303  CALL getin('nbapp_rad',nbapp_rad)
304
305!Config  Key  = iflag_con
306!Config  Desc = Flag de convection
307!Config  Def  = 2
308!Config  Help = Flag  pour la convection les options suivantes existent :
309!Config         1 pour LMD,
310!Config         2 pour Tiedtke,
311!Config         3 pour CCM(NCAR) 
312  iflag_con = 2
313  CALL getin('iflag_con',iflag_con)
314
315!Config  Key  = clon
316!Config  Desc = centre du zoom, longitude
317!Config  Def  = 0
318!Config  Help = longitude en degres du centre
319!Config         du zoom
320  clonn = 0.
321  CALL getin('clon',clonn)
322
323!Config  Key  = clat
324!Config  Desc = centre du zoom, latitude
325!Config  Def  = 0
326!Config  Help = latitude en degres du centre du zoom
327!Config         
328  clatt = 0.
329  CALL getin('clat',clatt)
330
331!Config  Key  = grossismx
332!Config  Desc = zoom en longitude
333!Config  Def  = 1.0
334!Config  Help = facteur de grossissement du zoom,
335!Config         selon la longitude
336  grossismxx = 1.0
337  CALL getin('grossismx',grossismxx)
338
339!Config  Key  = grossismy
340!Config  Desc = zoom en latitude
341!Config  Def  = 1.0
342!Config  Help = facteur de grossissement du zoom,
343!Config         selon la latitude
344  grossismyy = 1.0
345  CALL getin('grossismy',grossismyy)
346
347!Config  Key  = fxyhypb
348!Config  Desc = Fonction  hyperbolique
349!Config  Def  = y
350!Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
351!Config         sinon  sinusoidale
352  fxyhypbb = .TRUE.
353  CALL getin('fxyhypb',fxyhypbb)
354
355!Config  Key  = dzoomx
356!Config  Desc = extension en longitude
357!Config  Def  = 0
358!Config  Help = extension en longitude  de la zone du zoom 
359!Config         ( fraction de la zone totale)
360  dzoomxx = 0.0
361  CALL getin('dzoomx',dzoomxx)
362
363!Config  Key  = dzoomy
364!Config  Desc = extension en latitude
365!Config  Def  = 0
366!Config  Help = extension en latitude de la zone  du zoom 
367!Config         ( fraction de la zone totale)
368  dzoomyy = 0.0
369  CALL getin('dzoomy',dzoomyy)
370     
371!Config  Key  = taux
372!Config  Desc = raideur du zoom en  X
373!Config  Def  = 3
374!Config  Help = raideur du zoom en  X
375  tauxx = 3.0
376  CALL getin('taux',tauxx)
377
378!Config  Key  = tauyy
379!Config  Desc = raideur du zoom en  Y
380!Config  Def  = 3
381!Config  Help = raideur du zoom en  Y
382  tauyy = 3.0
383  CALL getin('tauy',tauyy)
384
385!Config  Key  = ysinus
386!Config  IF   = !fxyhypb
387!Config  Desc = Fonction en Sinus
388!Config  Def  = y
389!Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
390!Config         sinon y = latit.
391  ysinuss = .TRUE.
392  CALL getin('ysinus',ysinuss)
393
394!Config  Key  = clon
395!Config  Desc = centre du zoom, longitude
396!Config  Def  = 0
397!Config  Help = longitude en degres du centre
398!Config         du zoom
399  clon = 0.
400  CALL getin('clon',clon)
401
402!Config  Key  = clat
403!Config  Desc = centre du zoom, latitude
404!Config  Def  = 0
405!Config  Help = latitude en degres du centre du zoom
406!Config         
407  clat = 0.
408  CALL getin('clat',clat)
409
410!Config  Key  = grossismx
411!Config  Desc = zoom en longitude
412!Config  Def  = 1.0
413!Config  Help = facteur de grossissement du zoom,
414!Config         selon la longitude
415  grossismx = 1.0
416  CALL getin('grossismx',grossismx)
417
418!Config  Key  = grossismy
419!Config  Desc = zoom en latitude
420!Config  Def  = 1.0
421!Config  Help = facteur de grossissement du zoom,
422!Config         selon la latitude
423  grossismy = 1.0
424  CALL getin('grossismy',grossismy)
425
426!Config  Key  = fxyhypb
427!Config  Desc = Fonction  hyperbolique
428!Config  Def  = y
429!Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
430!Config         sinon  sinusoidale
431  fxyhypb = .TRUE.
432  CALL getin('fxyhypb',fxyhypb)
433
434!Config  Key  = dzoomx
435!Config  Desc = extension en longitude
436!Config  Def  = 0
437!Config  Help = extension en longitude  de la zone du zoom 
438!Config         ( fraction de la zone totale)
439  dzoomx = 0.0
440  CALL getin('dzoomx',dzoomx)
441
442!Config  Key  = dzoomy
443!Config  Desc = extension en latitude
444!Config  Def  = 0
445!Config  Help = extension en latitude de la zone  du zoom 
446!Config         ( fraction de la zone totale)
447  dzoomy = 0.0
448  CALL getin('dzoomy',dzoomy)
449
450!Config  Key  = taux
451!Config  Desc = raideur du zoom en  X
452!Config  Def  = 3
453!Config  Help = raideur du zoom en  X
454  taux = 3.0
455  CALL getin('taux',taux)
456
457!Config  Key  = tauy
458!Config  Desc = raideur du zoom en  Y
459!Config  Def  = 3
460!Config  Help = raideur du zoom en  Y
461  tauy = 3.0
462  CALL getin('tauy',tauy)
463
464!Config  Key  = ysinus
465!Config  IF   = !fxyhypb
466!Config  Desc = Fonction en Sinus
467!Config  Def  = y
468!Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
469!Config         sinon y = latit.
470  ysinus = .TRUE.
471  CALL getin('ysinus',ysinus)
472
473!!
474!!
475  CALL DATE_AND_TIME(big_ben(1), big_ben(2), big_ben(3), date_time)
476  date_end = date_time(8) + 1000*date_time(7) + 60*1000*date_time(7)
477  WRITE(*,*) 'Time before dump in milli-sec :', date_end - date_start
478!!
479  CALL getin_dump()
480
481!!
482  CALL DATE_AND_TIME(big_ben(1), big_ben(2), big_ben(3), date_time)
483  date_end = date_time(8) + 1000*date_time(7) + 60*1000*date_time(7)
484  WRITE(*,*) 'Total time in milli-sec :', date_end - date_start
485
486END PROGRAM testconfig2
Note: See TracBrowser for help on using the repository browser.