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

Last change on this file since 1704 was 1682, checked in by emillour, 8 years ago

All GCMs: set things up to enable pluging physics with dynamico

  • dyn3d
  • gcm.F90 : move I/O initialization (dates) to be done before physics

initialization

  • dyn3dpar
  • gcm.F : move I/O initialization (dates) to be done before physics

initialization

  • dynphy_lonlat:
  • inigeomphy_mod.F90 : add ind_cell_glo computation and transfer

to init_geometry

  • phy_common:
  • geometry_mod.F90 : add ind_cell_glo module variable to store global

column index

  • print_control_mod.F90 : make initialization occur via init_print_control_mod

to avoid circular module dependencies

  • init_print_control_mod.F90 : added to initialize print_control_mod module

variables

  • mod_phys_lmdz_mpi_data.F90 : use print_control_mod (rather than iniprint.h)
  • mod_phys_lmdz_para.F90 : use print_control_mod (rather than iniprint.h)
  • mod_phys_lmdz_omp_data.F90 : add is_omp_master (alias of is_omp_root) module

variable and use print_control_mod (rather than
iniprint.h)

  • physics_distribution_mod.F90 : add call to init_dimphy in

init_physics_distribution

  • xios_writefield.F90 : generic routine to output field with XIOS (for debug)
  • misc:
  • handle_err_m.F90 : call abort_physic, rather than abort_gcm
  • wxios.F90 : updates to enable unstructured grids

set module variable g_ctx_name to "LMDZ"
wxios_init(): remove call to wxios_context_init
wxios_context_init(): call xios_context_initialize with COMM_LMDZ_PHY
add routine wxios_set_context() to get handle and set context to XIOS
wxios_domain_param(): change arguments and generate the domain in-place
add wxios_domain_param_unstructured(): generate domain for unstructured case

NB: access is via "domain group" (whereas it is via "domain" in

wxios_domain_param)

  • dynphy_lonlat/phy[std|mars|venus|titan]:
  • iniphysiq_mod.F90 : Remove call to init_dimphy (which is now done in

phy_common/physics_distribution_mod.F90)

EM

File size: 11.9 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)
9
[1682]10   use init_print_control_mod, only: init_print_control
11   use print_control_mod, only: lunout
[3]12   use IOIPSL
13   implicit none
14
[97]15#include "YOMCST.h"
16#include "clesphys.h"
[3]17#include "compbl.h"
18
19! ok_journe:  sorties journalieres
20! ok_mensuel: sorties mensuelles
21! ok_instan:  sorties instantanees
22
23
24! Sortie:
25  logical              :: ok_journe, ok_mensuel, ok_instan       
26  integer              :: if_ebil
27
28! Local
[1682]29!  integer              :: numout = 6
[3]30
[1682]31
32  ! Initialize flags lunout, prt_level, debug (in print_control_mod)
33  CALL init_print_control
34
[97]35!
36! Configuration de la "physique" de LMDZ a l'aide de la fonction
37! GETIN de IOIPSL
38!
39! LF 05/2001
40!
41!--- Ca lit le physiq.def ---
42
43!******************* parametres anciennement lus dans gcm.def
44
45!Config  Key  = cycle_diurne
[1442]46!Config  Desc = Cycle diurne
[97]47!Config  Def  = y
48!Config  Help = Cette option permet d'eteidre le cycle diurne.
49!Config         Peut etre util pour accelerer le code !
50       cycle_diurne = .TRUE.
51       CALL getin('cycle_diurne',cycle_diurne)
52
53!Config  Key  = soil_model
54!Config  Desc = Modele de sol
55!Config  Def  = y
56!Config  Help = Choix du modele de sol (Thermique ?)
57!Config         Option qui pourait un string afin de pouvoir
58!Config         plus de choix ! Ou meme une liste d'options !
59       soil_model = .TRUE.
60       CALL getin('soil_model',soil_model)
61
62!Config  Key  = ok_orodr
63!Config  Desc = Oro drag
64!Config  Def  = y
65!Config  Help = GW drag orographie
66!Config         
67       ok_orodr = .TRUE.
68       CALL getin('ok_orodr',ok_orodr)
69
70!Config  Key  =  ok_orolf
71!Config  Desc = Oro lift
72!Config  Def  = n
73!Config  Help = GW lift orographie (pas utilise)
74       ok_orolf = .TRUE.
75       CALL getin('ok_orolf', ok_orolf)
76
77!Config  Key  = ok_gw_nonoro
78!Config  Desc = Gravity waves parameterization
79!Config  Def  = n
80!Config  Help = GW drag non-orographique
81       ok_gw_nonoro = .FALSE.
82       CALL getin('ok_gw_nonoro',ok_gw_nonoro)
83
84!Config  Key  = nbapp_rad
85!Config  Desc = Frequence d'appel au rayonnement
86!Config  Def  = 12
87!Config  Help = Nombre  d'appels des routines de rayonnements
88!Config         par jour.
89       nbapp_rad = 12
90       CALL getin('nbapp_rad',nbapp_rad)
91
92!Config  Key  = nbapp_chim
93!Config  Desc = Frequence d'appel a la chimie
94!Config  Def  = 1
95!Config  Help = Nombre  d'appels des routines de chimie
96!Config         par jour.
97       nbapp_chim = 1
98       CALL getin('nbapp_chim',nbapp_chim)
99
100!Config  Key  = iflag_con
101!Config  Desc = Flag de convection
102!Config  Def  = 0
103!Config  Help = Flag  pour la convection les options suivantes existent :
104!Config         0 : ajsec simple (VENUS, TITAN)
105!Config         1 pour LMD,
106!Config         2 pour Tiedtke,
107!Config         3 pour CCM(NCAR) 
108       iflag_con = 0
109       CALL getin('iflag_con',iflag_con)
110
111!******************* fin parametres anciennement lus dans gcm.def
112
[3]113!Config Key  = OK_journe
114!Config Desc = Pour des sorties journalieres
115!Config Def  = .false.
116!Config Help = Pour creer le fichier histday contenant les sorties
117!              journalieres
118!
119  ok_journe = .false.
120  call getin('OK_journe', ok_journe)
121!
122!Config Key  = OK_mensuel
123!Config Desc = Pour des sorties mensuelles
[1642]124!Config Def  = .false.
[3]125!Config Help = Pour creer le fichier histmth contenant les sorties
126!              mensuelles
127!
[1642]128  ok_mensuel = .false.
[3]129  call getin('OK_mensuel', ok_mensuel)
130!
131!Config Key  = OK_instan
132!Config Desc = Pour des sorties instantanees
133!Config Def  = .false.
134!Config Help = Pour creer le fichier histins contenant les sorties
135!              instantanees
136!
137  ok_instan = .false.
138  call getin('OK_instan', ok_instan)
139!
[97]140!Config  Key  = ecritphy
141!Config  Desc = Frequence d'ecriture dans histmth et histins
142!Config  Def  = 1
143!Config  Help = frequence de l'ecriture du fichier histmth et histins
144!Config         en jours.
[3]145!
[1120]146       ecriphy = 1.
147       CALL getin('ecritphy', ecriphy)
[97]148!
149!
[3]150!Config Key  = if_ebil
151!Config Desc = Niveau de sortie pour les diags bilan d'energie
152!Config Def  = 0
153!Config Help =
154!               
155!
156  if_ebil = 0
157  call getin('if_ebil', if_ebil)
158!!
159!! Constante solaire & Parametres orbitaux & taux gaz effet de serre BEG
160!!
161!Config Key  = R_ecc
162!Config Desc = Excentricite
163!Config Def  = 0.006787
164!Config Help =
165!               
166! VENUS
167! R_ecc = 0.006787
[97]168  R_ecc   = 0.0
169  call getin('R_ecc', R_ecc)
[3]170!!
171!Config Key  = R_peri
172!Config Desc = Equinoxe
173!Config Def  =
174!Config Help =
175!               
176! VENUS
[97]177  R_peri = 0.
178  call getin('R_peri', R_peri)
[3]179!!
180!Config Key  = R_incl
181!Config Desc = Inclinaison
182!Config Def  =
183!Config Help =
184!               
185! VENUS
[97]186  R_incl = 0.0
187  call getin('R_incl', R_incl)
[3]188!
189!Config Key  = solaire
190!Config Desc = Constante solaire en W/m2
191! VENUS
192!Config Def  = 2620.
193!Config Help =
194!
[97]195  solaire = 2620.
196    call getin('solaire', solaire)
[3]197!
198!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
199! PARAMETER FOR THE PLANETARY BOUNDARY LAYER AND SOIL
200!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
201!
202!Config Key  = iflag_pbl
203!Config Desc =
204!Config Def  = 1
205!Config Help =
206!
207! 2   = calculs Cd et K simples pour VENUS :
208!       parametres = z0, lmixmin, ksta (en dur: umin2,ric,cepdu2,karman)
209! 1   = calculs Cd et K issus LMDZ Terre
210!       parametres = ksta, ok_kzmin (et plein d'autres en dur...)
211! 6-9 = schema des thermiques Fred
212  iflag_pbl = 1
213  call getin('iflag_pbl',iflag_pbl)
214
215!
216!Config Key  = ksta
217!Config Desc =
218!Config Def  = 1.0e-7
219!Config Help =
220!
[97]221  ksta = 1.0e-7
222  call getin('ksta',ksta)
[3]223
224!
225!Config Key  = z0
226!Config Desc =
227!Config Def  = 1.0e-2
228!Config Help =
229!
[97]230  z0 = 1.0e-2
231  call getin('z0',z0)
[3]232
233!
234!Config Key  = lmixmin
235!Config Desc =
236!Config Def  = 35.
237!Config Help =
238!
[97]239  lmixmin = 35.
240  call getin('lmixmin',lmixmin)
[3]241
242!
243!Config Key  = ok_kzmin
244!Config Desc =
245!Config Def  = .false.
246!Config Help =
247!
248  ok_kzmin = .false.
249  call getin('ok_kzmin',ok_kzmin)
250
251
252!Config Key  = iflag_ajs
253!Config Desc =
254!Config Def  = 0
255!Config Help =
256!
257  iflag_ajs = 1
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
321!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
322!   PARAMETRES DE LA CHIMIE/NUAGE dans physiq.def
323!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
324
325!
326!Config Key  = reinit_trac
327!Config Desc = 
328!Config Def  = .FALSE.
329!Config Help =
330!
331  reinit_trac = .FALSE.
332  call getin('reinit_trac',reinit_trac)
333 
334!
335!Config Key  = ok_cloud
336!Config Desc = 
337!Config Def  = .FALSE.
338!Config Help =
339!
340  ok_cloud = .FALSE.
341  call getin('ok_cloud',ok_cloud)
342
343!
[1661]344!Config Key  = cl_scheme
345!Config Desc =
346!Config Def  = 2
347!Config Help =
348!
349! 1   = Simple microphysics (Aurelien Stolzenbach's PhD)
350! 2   = Full microphysics (momentum scheme, Sabrina Guilbon's PhD)
351
352  cl_scheme = 2
353  call getin('cl_scheme',cl_scheme)
354
355!
[1305]356!Config Key  = ok_chem
357!Config Desc = 
358!Config Def  = .FALSE.
359!Config Help =
360!
361  ok_chem = .FALSE.
362  call getin('ok_chem',ok_chem)
363
364  if (((tr_scheme.ne.3).and.(ok_chem.or.ok_cloud)).or. &
365      ((tr_scheme.eq.3).and.(.not.ok_chem.and..not.ok_cloud))) then
366    write(*,*) "Attention, incoherence :"
367    write(*,*) "tr_scheme=",tr_scheme," / ok_chem=",ok_chem, &
368                                     " / ok_cloud=",ok_cloud
369    write(*,*) "Verifier votre physiq.def"
370    stop
371  endif
372
373!
374!Config Key  = ok_sedim
375!Config Desc = 
376!Config Def  = .FALSE.
377!Config Help =
378!
379  ok_sedim = .FALSE.
380  call getin('ok_sedim',ok_sedim)
[1442]381
382!
383!Config Key  = nb_mode
384!Config Desc = 
385!Config Def  = 0
386!Config Help =
387!
388  nb_mode = 0
389  call getin('nb_mode',nb_mode)
390 
[1310]391!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
392! PARAMETER FOR NLTE PHYSICS
393!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
394
[1305]395!
[1310]396!Config Key  = callnlte
397!Config Desc =
398!Config Def  = .false.
399!Config Help =
[1305]400!
[1310]401  callnlte = .false.
402  call getin('callnlte',callnlte)
403
404!
405!Config Key  = callnirco2
406!Config Desc =
407!Config Def  = .false.
408!
409  callnirco2 = .false.
410  call getin('callnirco2',callnirco2)
411
412!
413!Config Key  = nircorr
414!Config Desc =
415!Config Def  = 0
416!Config Help =
417!
418  nircorr = 0
419  call getin('nircorr',nircorr)
420
421!
422!Config Key  = callthermos
423!Config Desc =
424!Config Def  = .false.
425!Config Help =
426!
427  callthermos = .false.
428  call getin('callthermos',callthermos)
429
430!
431!Config Key  = nltemodel
432!Config Desc =
433!Config Def  = 0
434!Config Help =
435!
436  nltemodel = 0
437  call getin('nltemodel',nltemodel)
438
439!
440!Config Key  = solvarmod
441!Config Desc =
442!Config Def  = 1
443!Config Help =
444!
445  solvarmod = 1
446  call getin('solvarmod',solvarmod)
447
448!
449!Config Key  = solarcondate
450!Config Desc =
[1442]451!Config Def  = 1993.4  ## Average solar cycle condition
[1310]452!Config Help =
453!
454  solarcondate = 1993.4
455  call getin('solarcondate',solarcondate)
456
457!
458!Config Key  = euveff
459!Config Desc =
460!Config Def  = 0.21
461!Config Help =
462!
463  euveff = 0.21
464  call getin('euveff',euveff)
465
466!
467!
[3]468!Config Key  =
469!Config Desc = 
470!Config Def  =
471!Config Help =
472!
473!   =
474!  call getin('',)
475!
476!
477!
478!
479
[1682]480  write(lunout,*)' ##############################################'
481  write(lunout,*)' Configuration des parametres de la physique: '
482  write(lunout,*)' cycle_diurne = ', cycle_diurne
483  write(lunout,*)' soil_model = ', soil_model
484  write(lunout,*)' ok_orodr = ', ok_orodr
485  write(lunout,*)' ok_orolf = ', ok_orolf
486  write(lunout,*)' ok_gw_nonoro = ', ok_gw_nonoro
487  write(lunout,*)' nbapp_rad = ', nbapp_rad
488  write(lunout,*)' nbapp_chim = ', nbapp_chim
489  write(lunout,*)' iflag_con = ', iflag_con
490  write(lunout,*)' Sortie journaliere = ', ok_journe
491  write(lunout,*)' Sortie mensuelle = ', ok_mensuel
492  write(lunout,*)' Sortie instantanee = ', ok_instan
493  write(lunout,*)' frequence sorties = ', ecriphy 
494  write(lunout,*)' Sortie bilan d''energie, if_ebil =', if_ebil
495  write(lunout,*)' Excentricite = ',R_ecc
496  write(lunout,*)' Equinoxe = ',R_peri
497  write(lunout,*)' Inclinaison =',R_incl
498  write(lunout,*)' tr_scheme = ', tr_scheme
499  write(lunout,*)' iflag_pbl = ', iflag_pbl
500  write(lunout,*)' z0 = ',z0
501  write(lunout,*)' lmixmin = ',lmixmin
502  write(lunout,*)' ksta = ',ksta
503  write(lunout,*)' ok_kzmin = ',ok_kzmin
504  write(lunout,*)' inertie = ', inertie
505  write(lunout,*)' iflag_ajs = ', iflag_ajs
506  write(lunout,*)' lev_histins = ',lev_histins
507  write(lunout,*)' lev_histday = ',lev_histday
508  write(lunout,*)' lev_histmth = ',lev_histmth
509  write(lunout,*)' reinit_trac = ',reinit_trac
510  write(lunout,*)' ok_cloud = ',ok_cloud
511  write(lunout,*)' ok_chem = ',ok_chem
512  write(lunout,*)' ok_sedim = ',ok_sedim
513  write(lunout,*)' nb_mode = ',nb_mode
514  write(lunout,*)' callnlte = ',callnlte
515  write(lunout,*)' nltemodel = ',nltemodel
516  write(lunout,*)' callnirco2 = ',callnirco2
517  write(lunout,*)' nircorr = ',nircorr
518  write(lunout,*)' callthermos = ',callthermos
519  write(lunout,*)' solvarmod = ',solvarmod
520  write(lunout,*)' solarcondate = ',solarcondate
521  write(lunout,*)' euveff = ',euveff
[3]522
523  return
524
525  end subroutine conf_phys
526
Note: See TracBrowser for help on using the repository browser.