source: IOIPSL/tags/v2_1_3/example/testconfig2.f90 @ 369

Last change on this file since 369 was 16, checked in by bellier, 18 years ago

JB: add Id (ommited !)

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