source: trunk/LMDZ.VENUS/libf/phyvenus/conf_phys.F90 @ 3556

Last change on this file since 3556 was 3451, checked in by emillour, 3 months ago

Venus PCM:
Add "Age of Air" scheme from Maureen Cohen.
Activated with flag "ok_aoa=y" and requires that there is also
an "aoa" tracer in traceur.def
MC

File size: 15.0 KB
RevLine 
[3]1!
2! $Header: /home/cvsroot/LMDZ4/libf/phylmd/conf_phys.F90,v 1.3 2005/02/07 15:15:31 fairhead Exp $
3!
4!
5!
6
7  subroutine conf_phys(ok_journe, ok_mensuel, ok_instan, &
8 &                     if_ebil)
[1981]9   use init_print_control_mod, only: init_print_control
10   use print_control_mod, only: lunout
11   use IOIPSL, only: getin
[3451]12   use age_of_air_mod, only: ok_aoa, reinit_aoa, lev_aoa
[3]13
14   implicit none
15
[1981]16   include "YOMCST.h"
17   include "clesphys.h"
18   include "compbl.h"
[3]19
20! ok_journe:  sorties journalieres
21! ok_mensuel: sorties mensuelles
22! ok_instan:  sorties instantanees
23
24
25! Sortie:
[1981]26  logical,intent(out)  :: ok_journe, ok_mensuel, ok_instan       
27  integer,intent(out)  :: if_ebil
[3]28
29
[1682]30
[97]31!
32! Configuration de la "physique" de LMDZ a l'aide de la fonction
33! GETIN de IOIPSL
34!
35! LF 05/2001
36!
37!--- Ca lit le physiq.def ---
38
[1981]39       ! initialize print_control module variables
40       call init_print_control
41
[97]42!******************* parametres anciennement lus dans gcm.def
43
[1718]44       ! do we read a startphy.nc file? (default: .true.)
45       startphy_file=.true.
46       CALL getin("startphy_file",startphy_file)
47
[97]48!Config  Key  = cycle_diurne
[1442]49!Config  Desc = Cycle diurne
[97]50!Config  Def  = y
51!Config  Help = Cette option permet d'eteidre le cycle diurne.
52!Config         Peut etre util pour accelerer le code !
[1723]53       cycle_diurne = .TRUE.       
54       call getin('cycle_diurne',cycle_diurne)
[97]55
56!Config  Key  = soil_model
57!Config  Desc = Modele de sol
58!Config  Def  = y
59!Config  Help = Choix du modele de sol (Thermique ?)
60!Config         Option qui pourait un string afin de pouvoir
61!Config         plus de choix ! Ou meme une liste d'options !
[1723]62       soil_model = .true.
63       call getin('soil_model',soil_model)
[97]64
65!Config  Key  = ok_orodr
66!Config  Desc = Oro drag
67!Config  Def  = y
68!Config  Help = GW drag orographie
69!Config         
[1726]70       ok_orodr = .false.
[1723]71       call getin('ok_orodr',ok_orodr)
[97]72
73!Config  Key  =  ok_orolf
74!Config  Desc = Oro lift
75!Config  Def  = n
76!Config  Help = GW lift orographie (pas utilise)
[1726]77       ok_orolf = .false.
[1723]78       call getin('ok_orolf', ok_orolf)
[97]79
80!Config  Key  = ok_gw_nonoro
81!Config  Desc = Gravity waves parameterization
82!Config  Def  = n
83!Config  Help = GW drag non-orographique
[1726]84       ok_gw_nonoro = .false.
[1723]85       call getin('ok_gw_nonoro',ok_gw_nonoro)
[97]86
87!Config  Key  = nbapp_rad
88!Config  Desc = Frequence d'appel au rayonnement
89!Config  Def  = 12
90!Config  Help = Nombre  d'appels des routines de rayonnements
91!Config         par jour.
92       nbapp_rad = 12
[1723]93       call getin('nbapp_rad',nbapp_rad)
94       print*,"nbapp_rad",nbapp_rad
[3035]95!Config  Key  = nbapp_chem
[97]96!Config  Desc = Frequence d'appel a la chimie
[3035]97!Config  Def  = 24000
[97]98!Config  Help = Nombre  d'appels des routines de chimie
99!Config         par jour.
[3035]100       nbapp_chem = 24000
101       call getin('nbapp_chem',nbapp_chem)
[97]102
103!Config  Key  = iflag_con
104!Config  Desc = Flag de convection
105!Config  Def  = 0
106!Config  Help = Flag  pour la convection les options suivantes existent :
107!Config         0 : ajsec simple (VENUS, TITAN)
108!Config         1 pour LMD,
109!Config         2 pour Tiedtke,
110!Config         3 pour CCM(NCAR) 
111       iflag_con = 0
[1723]112       call getin('iflag_con',iflag_con)
[97]113
114!******************* fin parametres anciennement lus dans gcm.def
115
[3]116!Config Key  = OK_journe
117!Config Desc = Pour des sorties journalieres
118!Config Def  = .false.
119!Config Help = Pour creer le fichier histday contenant les sorties
120!              journalieres
121!
122  ok_journe = .false.
123  call getin('OK_journe', ok_journe)
124!
125!Config Key  = OK_mensuel
126!Config Desc = Pour des sorties mensuelles
[1726]127!Config Def  = .false.
[3]128!Config Help = Pour creer le fichier histmth contenant les sorties
129!              mensuelles
130!
[1726]131  ok_mensuel = .false.
[3]132  call getin('OK_mensuel', ok_mensuel)
133!
134!Config Key  = OK_instan
135!Config Desc = Pour des sorties instantanees
136!Config Def  = .false.
137!Config Help = Pour creer le fichier histins contenant les sorties
138!              instantanees
139!
140  ok_instan = .false.
141  call getin('OK_instan', ok_instan)
142!
[97]143!Config  Key  = ecritphy
144!Config  Desc = Frequence d'ecriture dans histmth et histins
145!Config  Def  = 1
146!Config  Help = frequence de l'ecriture du fichier histmth et histins
147!Config         en jours.
[3]148!
[1120]149       ecriphy = 1.
[1723]150       call getin('ecritphy', ecriphy)
[97]151!
152!
[3]153!Config Key  = if_ebil
154!Config Desc = Niveau de sortie pour les diags bilan d'energie
155!Config Def  = 0
156!Config Help =
157!               
158!
159  if_ebil = 0
160  call getin('if_ebil', if_ebil)
161!!
[2487]162!! Parametres orbitaux
[3]163!!
164!Config Key  = R_ecc
165!Config Desc = Excentricite
166!Config Def  = 0.006787
167!Config Help =
168!               
169! VENUS
170! R_ecc = 0.006787
[97]171  R_ecc   = 0.0
172  call getin('R_ecc', R_ecc)
[3]173!!
174!Config Key  = R_peri
175!Config Desc = Equinoxe
176!Config Def  =
177!Config Help =
178!               
179! VENUS
[97]180  R_peri = 0.
181  call getin('R_peri', R_peri)
[3]182!!
183!Config Key  = R_incl
184!Config Desc = Inclinaison
185!Config Def  =
186!Config Help =
187!               
188! VENUS
[97]189  R_incl = 0.0
190  call getin('R_incl', R_incl)
[3]191!
192!
193!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
194! PARAMETER FOR THE PLANETARY BOUNDARY LAYER AND SOIL
195!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
196!
197!Config Key  = iflag_pbl
198!Config Desc =
199!Config Def  = 1
200!Config Help =
201!
202! 2   = calculs Cd et K simples pour VENUS :
203!       parametres = z0, lmixmin, ksta (en dur: umin2,ric,cepdu2,karman)
204! 1   = calculs Cd et K issus LMDZ Terre
205!       parametres = ksta, ok_kzmin (et plein d'autres en dur...)
206! 6-9 = schema des thermiques Fred
207  iflag_pbl = 1
208  call getin('iflag_pbl',iflag_pbl)
209
210!
211!Config Key  = ksta
212!Config Desc =
213!Config Def  = 1.0e-7
214!Config Help =
215!
[97]216  ksta = 1.0e-7
217  call getin('ksta',ksta)
[3]218
219!
220!Config Key  = z0
221!Config Desc =
222!Config Def  = 1.0e-2
223!Config Help =
224!
[97]225  z0 = 1.0e-2
226  call getin('z0',z0)
[3]227
228!
229!Config Key  = lmixmin
230!Config Desc =
231!Config Def  = 35.
232!Config Help =
233!
[97]234  lmixmin = 35.
235  call getin('lmixmin',lmixmin)
[3]236
237!
238!Config Key  = ok_kzmin
239!Config Desc =
240!Config Def  = .false.
241!Config Help =
242!
243  ok_kzmin = .false.
244  call getin('ok_kzmin',ok_kzmin)
245
[2135]246  ok_clmain = .true.
247  call getin('ok_clmain',ok_clmain)
[3]248
[2135]249  physideal = .false.
250  call getin('physideal',physideal)
251
[3]252!Config Key  = iflag_ajs
253!Config Desc =
254!Config Def  = 0
255!Config Help =
256!
[1723]257  iflag_ajs = 0
[3]258  call getin('iflag_ajs',iflag_ajs)
259
260!
261!Config Key  = inertie
262!Config Desc =
[97]263!Config Def  = 2000.
[3]264!Config Help =
265!
[97]266  inertie = 2000.
267  call getin('inertie',inertie)
[3]268!
269!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
270! PARAMETER FOR THE OUTPUT LEVELS
271!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
272!
[1305]273!Config Key  = lev_histins
[3]274!Config Desc =
275!Config Def  = 0
276!Config Help =
277!
[1305]278  lev_histins = 0
279  call getin('lev_histins',lev_histins)
[3]280
281!
282!Config Key  = lev_histday
283!Config Desc =
284!Config Def  = 1
285!Config Help =
286!
287  lev_histday = 1
288  call getin('lev_histday',lev_histday)
289
290!
291!Config Key  = lev_histmth
292!Config Desc =
293!Config Def  = 2
294!Config Help =
295!
296  lev_histmth = 2
297  call getin('lev_histmth',lev_histmth)
298
[1305]299
300!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
301! PARAMETER FOR THE TRACERS
302!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[3]303!
[1305]304!Config Key  = tr_scheme
305!Config Desc =
306!Config Def  = 0
307!Config Help =
[3]308!
[1305]309! 0   = Nothing is done (passive tracers)
310! 1   = pseudo-chemistry with relaxation toward fixed profile
311!       See Marcq&Lebonnois 2013
312! 2   = surface emission
313!       For the moment, inspired from Mars version
314!       However, the variable 'source' could be used in physiq
315!       so the call to phytrac_emiss could be to initialise it.
316! 3   = Full chemistry and/or clouds => phytrac_chimie
317!       Need ok_chem or ok_cloud
318  tr_scheme = 0
319  call getin('tr_scheme',tr_scheme)
320
[3451]321!Config Key = ok_aoa
322!Config Desc = Flag to run age of air subroutine
323!Config Def = .false.
324  ok_aoa=.false.
325  call getin('ok_aoa',ok_aoa)
326
327!Config Key = reinit_aoa
328!Config Desc = Flag to reinitiate age of air array to 0
329!Config Def = .true.
330  reinit_aoa=.true.
331  call getin('reinit_aoa',reinit_aoa)
332 
333!Config Key = lev_aoa
334!Config Desc = Model level where tracer associated with age of air is released
335!Config Def = 1 (surface)
336  lev_aoa=1
337  call getin('lev_aoa',lev_aoa)
338
[1305]339!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
340!   PARAMETRES DE LA CHIMIE/NUAGE dans physiq.def
341!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
342
343!
344!Config Key  = reinit_trac
345!Config Desc = 
346!Config Def  = .FALSE.
347!Config Help =
348!
349  reinit_trac = .FALSE.
350  call getin('reinit_trac',reinit_trac)
351 
352!
353!Config Key  = ok_cloud
354!Config Desc = 
355!Config Def  = .FALSE.
356!Config Help =
357!
[1723]358  ok_cloud = .false.
[1305]359  call getin('ok_cloud',ok_cloud)
360
361!
[1726]362!Config Key  = cl_scheme
363!Config Desc =
364!Config Def  = 2
365!Config Help =
366!
367! 1   = Simple microphysics (Aurelien Stolzenbach's PhD)
368! 2   = Full microphysics (momentum scheme, Sabrina Guilbon's PhD)
369
370  cl_scheme = 2
371  call getin('cl_scheme',cl_scheme)
372
373!
[1305]374!Config Key  = ok_chem
375!Config Desc = 
376!Config Def  = .FALSE.
377!Config Help =
378!
[1723]379  ok_chem = .false.
[1305]380  call getin('ok_chem',ok_chem)
381
382  if (((tr_scheme.ne.3).and.(ok_chem.or.ok_cloud)).or. &
383      ((tr_scheme.eq.3).and.(.not.ok_chem.and..not.ok_cloud))) then
384    write(*,*) "Attention, incoherence :"
385    write(*,*) "tr_scheme=",tr_scheme," / ok_chem=",ok_chem, &
386                                     " / ok_cloud=",ok_cloud
387    write(*,*) "Verifier votre physiq.def"
388    stop
389  endif
390
[3451]391
392! Check that chemistry and age of air flages are not both active
393  if ((ok_chem) .and. (ok_aoa)) then
394     write(*,*) "Chemistry and age of air cannot be run together"
395     write(*,*) "ok_chem=",ok_chem," / ok_aoa=",ok_aoa
396     stop
397  endif
398
399
400
[1305]401!
402!Config Key  = ok_sedim
403!Config Desc = 
404!Config Def  = .FALSE.
405!Config Help =
406!
[1723]407  ok_sedim = .false.
[1305]408  call getin('ok_sedim',ok_sedim)
[1442]409
410!
411!Config Key  = nb_mode
412!Config Desc = 
413!Config Def  = 0
414!Config Help =
415!
416  nb_mode = 0
417  call getin('nb_mode',nb_mode)
418 
[1310]419!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[2560]420! PARAMETER FOR SOLAR RADIATION
421!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
422
423!
424!Config Key  = solarchoice
425!Config Desc =
426!Config Def  = 1
427!Config Help =
428!
429! 1 = RH Tables
430! 2 = Generic module
431  solarchoice = 1
432  call getin('solarchoice',solarchoice)
433
434!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[1310]435! PARAMETER FOR NLTE PHYSICS
436!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
437
[1305]438!
[1310]439!Config Key  = callnlte
440!Config Desc =
441!Config Def  = .false.
442!Config Help =
[1305]443!
[1310]444  callnlte = .false.
445  call getin('callnlte',callnlte)
446
447!
448!Config Key  = callnirco2
449!Config Desc =
450!Config Def  = .false.
451!
452  callnirco2 = .false.
453  call getin('callnirco2',callnirco2)
454
455!
456!Config Key  = nircorr
457!Config Desc =
458!Config Def  = 0
459!Config Help =
460!
461  nircorr = 0
462  call getin('nircorr',nircorr)
463
464!
465!Config Key  = callthermos
466!Config Desc =
467!Config Def  = .false.
468!Config Help =
469!
470  callthermos = .false.
471  call getin('callthermos',callthermos)
472
473!
474!Config Key  = nltemodel
475!Config Desc =
476!Config Def  = 0
477!Config Help =
478!
479  nltemodel = 0
480  call getin('nltemodel',nltemodel)
481
482!
483!Config Key  = solvarmod
484!Config Desc =
485!Config Def  = 1
486!Config Help =
487!
488  solvarmod = 1
489  call getin('solvarmod',solvarmod)
490
491!
[2464]492!Config Key  = fixed_euv_value
[1310]493!Config Desc =
[2464]494!Config Def  = 140.  ## Average solar cycle condition
[1310]495!Config Help =
496!
[2464]497  fixed_euv_value =140.
498  call getin('fixed_euv_value',fixed_euv_value)
[1310]499
500!
501!Config Key  = euveff
502!Config Desc =
[2580]503!Config Def  = 0.22
[1310]504!Config Help =
505!
[2580]506  euveff = 0.22
[1310]507  call getin('euveff',euveff)
508
[2580]509!Config Key  = tuneupperatm
510!Config Desc =
511!Config Def  = .false.
[3035]512!Config Help = Activate thermosphere tuning for oxygen compensation
[1310]513!
[2580]514  tuneupperatm = .false.
515  call getin('tuneupperatm',tuneupperatm)
516
[1310]517!
[2836]518!Config Key  = ok_jonline
519!Config Desc =
520!Config Def  = .false.
521!Config Help =
[2580]522!
[2836]523  ok_jonline = .false.
524  call getin('ok_jonline',ok_jonline)
525
526!
527!Config Key  = ok_ionchem
528!Config Desc =
529!Config Def  = .false.
[3035]530!Config Help = Activate the ionosphere chemistry
[2836]531!
532  ok_ionchem = .false.
533  call getin('ok_ionchem',ok_ionchem)
534
[2969]535  if ((ok_jonline.eqv..false.).and.(.true..eqv.ok_ionchem)) then
536    write(*,*) "Error incoherent flags :"
[2836]537    write(*,*) "ok_jonline=",ok_jonline," / ok_ionchem=",ok_ionchem
[2969]538    write(*,*) "If you include ions, ok_jonline==.true."
539    write(*,*) "If you do not include ions, ok_ionchem==.false."
540    write(*,*) "Check physiq.def"
[2836]541    stop
542  endif
543
544!
[3035]545!Config Key  = ok_iondiff
546!Config Desc =
547!Config Def  = .false.
548!Config Help = Activate the ambipolar ion diffusion in physic
[2836]549!
[3035]550  ok_iondiff = .false.
551  call getin('ok_iondiff',ok_iondiff)
552
553  if ((ok_ionchem.eqv..false.).and.(.true..eqv.ok_iondiff)) then
554    write(*,*) "Error incoherent flags :"
555    write(*,*) "ok_ionchem=",ok_ionchem," / ok_iondiff=",ok_iondiff
556    write(*,*) "If you include ions diffusion,"
557    write(*,*) "   you need also ok_ionchem==.true."
558    write(*,*) "If you do not include ions diffusion,"
559    write(*,*) "   you need ok_iondiff==.false."
560    write(*,*) "Check physiq.def"
561    stop
562  endif
563
564!
565!
[3]566!Config Key  =
567!Config Desc = 
568!Config Def  =
569!Config Help =
570!
571!   =
572!  call getin('',)
573!
574!
575!
576!
577
[1981]578  write(lunout,*)' ##############################################'
579  write(lunout,*)' Configuration des parametres de la physique: '
580  write(lunout,*)' cycle_diurne = ', cycle_diurne
581  write(lunout,*)' soil_model = ', soil_model
582  write(lunout,*)' ok_orodr = ', ok_orodr
583  write(lunout,*)' ok_orolf = ', ok_orolf
584  write(lunout,*)' ok_gw_nonoro = ', ok_gw_nonoro
585  write(lunout,*)' nbapp_rad = ', nbapp_rad
[3035]586  write(lunout,*)' nbapp_chem = ', nbapp_chem
[1981]587  write(lunout,*)' iflag_con = ', iflag_con
588  write(lunout,*)' Sortie journaliere = ', ok_journe
589  write(lunout,*)' Sortie mensuelle = ', ok_mensuel
590  write(lunout,*)' Sortie instantanee = ', ok_instan
591  write(lunout,*)' frequence sorties = ', ecriphy 
592  write(lunout,*)' Sortie bilan d''energie, if_ebil =', if_ebil
593  write(lunout,*)' Excentricite = ',R_ecc
594  write(lunout,*)' Equinoxe = ',R_peri
595  write(lunout,*)' Inclinaison =',R_incl
596  write(lunout,*)' tr_scheme = ', tr_scheme
[3451]597  write(lunout,*)' ok_aoa = ', ok_aoa
598  write(lunout,*)' reinit_aoa = ', reinit_aoa
599  write(lunout,*)' lev_aoa = ', lev_aoa
[1981]600  write(lunout,*)' iflag_pbl = ', iflag_pbl
601  write(lunout,*)' z0 = ',z0
602  write(lunout,*)' lmixmin = ',lmixmin
603  write(lunout,*)' ksta = ',ksta
604  write(lunout,*)' ok_kzmin = ',ok_kzmin
605  write(lunout,*)' inertie = ', inertie
[2135]606  write(lunout,*)' ok_clmain = ',ok_clmain
607  write(lunout,*)' physideal = ',physideal
[1981]608  write(lunout,*)' iflag_ajs = ', iflag_ajs
609  write(lunout,*)' lev_histins = ',lev_histins
610  write(lunout,*)' lev_histday = ',lev_histday
611  write(lunout,*)' lev_histmth = ',lev_histmth
612  write(lunout,*)' reinit_trac = ',reinit_trac
613  write(lunout,*)' ok_cloud = ',ok_cloud
614  write(lunout,*)' cl_scheme = ',cl_scheme
615  write(lunout,*)' ok_chem = ',ok_chem
616  write(lunout,*)' ok_sedim = ',ok_sedim
617  write(lunout,*)' nb_mode = ',nb_mode
[2560]618  write(lunout,*)' solarchoice = ',solarchoice
[1981]619  write(lunout,*)' callnlte = ',callnlte
620  write(lunout,*)' nltemodel = ',nltemodel
621  write(lunout,*)' callnirco2 = ',callnirco2
622  write(lunout,*)' nircorr = ',nircorr
623  write(lunout,*)' callthermos = ',callthermos
624  write(lunout,*)' solvarmod = ',solvarmod
[2464]625  write(lunout,*)' fixed_euv_value = ',fixed_euv_value
[1981]626  write(lunout,*)' euveff = ',euveff
[2580]627  write(lunout,*)' tuneupperatm = ',tuneupperatm
[2836]628  write(lunout,*)' ok_jonline = ',ok_jonline
629  write(lunout,*)' ok_ionchem = ',ok_ionchem
[3035]630  write(lunout,*)' ok_iondiff = ',ok_iondiff
631
[3]632  end subroutine conf_phys
633
Note: See TracBrowser for help on using the repository browser.