source: trunk/LMDZ.GENERIC/libf/phystd/tracer_h.F90 @ 1644

Last change on this file since 1644 was 1621, checked in by emillour, 8 years ago

Further work on full dynamics/physics separation.

LMDZ.COMMON:

  • added phy_common/vertical_layers_mod.F90 to store information on vertical grid. This is where routines in the physics should get the information.
  • The contents of vertical_layers_mod intialized via dynphy_lonlat/inigeomphy_mod.F90.

LMDZ.MARS:

  • physics now completely decoupled from dynamics; the physics package may now be compiled as a library (-libphy option of makelmdz_fcm).
  • created an "ini_tracer_mod" routine in module "tracer_mod" for a cleaner initialization of the later.
  • removed some purely dynamics-related outputs (etot0, zoom parameters, etc.) from diagfi.nc and stats.nc outputs as these informations are not available in the physics.

LMDZ.GENERIC:

  • physics now completely decoupled from dynamics; the physics package may now be compiled as a library (-libphy option of makelmdz_fcm).
  • added nqtot to tracer_h.F90.
  • removed some purely dynamics-related outputs (etot0, zoom parameters, etc.) from diagfi.nc and stats.nc outputs as these informations are not available in the physics.

LMDZ.VENUS:

  • physics now completely decoupled from dynamics; the physics package may now be compiled as a library (-libphy option of makelmdz_fcm).
  • added infotrac_phy.F90 to store information on tracers in the physics. Initialized via iniphysiq.
  • added cpdet_phy_mod.F90 to store t2tpot etc. functions to be used in the physics. Initialized via iniphysiq. IMPORTANT: there are some hard-coded constants! These should match what is in cpdet_mod.F90 in the dynamics.
  • got rid of references to moyzon_mod module within the physics. The required variables (tmoy, plevmoy) are passed to the physics as arguments to physiq.

LMDZ.TITAN:

  • added infotrac_phy.F90 to store information on tracers in the physics. Initialized via iniphysiq.
  • added cpdet_phy_mod.F90 to store t2tpot etc. functions to be used in the physics.
  • Extra work required to completely decouple physics and dynamics: moyzon_mod should be cleaned up and information passed from dynamics to physics as as arguments. Likewise moyzon_ch and moyzon_mu should not be queried from logic_mod (which is in the dynamics).

EM

File size: 2.6 KB
Line 
1
2       module tracer_h
3
4       implicit none
5
6! nqtot : total number of tracers
7       INTEGER, SAVE :: nqtot
8!$OMP THREADPRIVATE(nqtot)
9
10       character*20, DIMENSION(:), ALLOCATABLE :: noms   ! name of the tracer
11       real, DIMENSION(:), ALLOCATABLE :: mmol     ! mole mass of tracer (g/mol-1)
12       real, DIMENSION(:), ALLOCATABLE :: radius   ! dust and ice particle radius (m)
13       real, DIMENSION(:), ALLOCATABLE :: rho_q    ! tracer densities (kg.m-3)
14       real, DIMENSION(:), ALLOCATABLE :: qext     ! Single Scat. Extinction coeff at 0.67 um
15       real, DIMENSION(:), ALLOCATABLE :: alpha_lift  ! saltation vertical flux/horiz flux ratio (m-1)
16       real, DIMENSION(:), ALLOCATABLE :: alpha_devil ! lifting coeeficient by dust devil
17       real, DIMENSION(:), ALLOCATABLE :: qextrhor ! Intermediate for computing opt. depth from q
18
19      real varian      ! Characteristic variance of log-normal distribution
20      real r3n_q     ! used to compute r0 from number and mass mixing ratio
21      real rho_dust     ! Mars dust density (kg.m-3)
22      real rho_ice     ! Water ice density (kg.m-3)
23      real rho_co2     ! CO2 ice density (kg.m-3)
24      real ref_r0        ! for computing reff=ref_r0*r0 (in log.n. distribution)
25!$OMP THREADPRIVATE(noms,mmol,radius,rho_q,qext,alpha_lift,alpha_devil,qextrhor, &
26        !$OMP varian,r3n_q,rho_dust,rho_ice,rho_co2,ref_r0)
27
28! tracer indexes: these are initialized in initracer and should be 0 if the
29!                 corresponding tracer does not exist
30      ! dust
31      integer, DIMENSION(:), ALLOCATABLE :: igcm_dustbin ! for dustbin 'dust' tracers
32      ! dust, special doubleq case
33      integer :: igcm_dust_mass   ! dust mass mixing ratio (for transported dust)
34      integer :: igcm_dust_number ! dust number mixing ratio (transported dust)
35      ! water
36      integer :: igcm_h2o_vap ! water vapour
37      integer :: igcm_h2o_ice ! water ice
38      ! chemistry:
39      integer :: igcm_co2
40      integer :: igcm_co
41      integer :: igcm_o
42      integer :: igcm_o1d
43      integer :: igcm_o2
44      integer :: igcm_o3
45      integer :: igcm_h
46      integer :: igcm_h2
47      integer :: igcm_oh
48      integer :: igcm_ho2
49      integer :: igcm_h2o2
50      integer :: igcm_n2
51      integer :: igcm_ar
52      ! other tracers
53      integer :: igcm_ar_n2 ! for simulations using co2 +neutral gaz
54      integer :: igcm_co2_ice ! CO2 ice
55!$OMP THREADPRIVATE(igcm_dustbin,igcm_dust_mass,igcm_dust_number,igcm_h2o_vap,igcm_h2o_ice, &
56        !$OMP igcm_co2,igcm_co,igcm_o,igcm_o1d,igcm_o2,igcm_o3,igcm_h,igcm_h2,igcm_oh,      &
57        !$OMP igcm_ho2,igcm_h2o2,igcm_n2,igcm_ar,igcm_ar_n2,igcm_co2_ice)
58
59       end module tracer_h
60
Note: See TracBrowser for help on using the repository browser.