source: trunk/LMDZ.GENERIC/libf/phystd/iniaerosol.F @ 726

Last change on this file since 726 was 726, checked in by jleconte, 12 years ago

17/07/2012 == JL for LK

  • Generalization of aerosol scheme:
    • any number of aerosols can be used and id numbers are determined consistently by the code. Aerosol order not important anymore.
    • addition of a module with the id numbers for aerosols (aerosol_mod.F90).
    • initialization of aerosols id numbers in iniaerosol.F90
    • compile with -s x where x *must* be equal to the number of aerosols turned on in callphys.def (either by a flag or by dusttau>0 for dust). => may have to erase object files when compiling with s option for the first time.
  • For no aerosols, run with aeroco2=.true. and aerofixco2=.true (the default distribution for fixed co2

aerosols is 1.e-9; can be changed in aeropacity).

  • If starting from an old start file, recreate start file with the q=0 option in newstart.e.
  • update callphys.def with aeroXXX and aerofixXXX options (only XXX=co2,h2o supported for

now). Dust is activated by setting dusttau>0. See the early mars case in deftank.

  • To add other aerosols, see Laura Kerber.
File size: 1.5 KB
Line 
1      SUBROUTINE iniaerosol()
2
3
4      use radinc_h, only: naerkind
5      use aerosol_mod
6
7      IMPLICIT NONE
8c=======================================================================
9c   subject:
10c   --------
11c   Initialization related to aerosols
12c   (CO2 aerosols, dust, water, chemical species, ice...)   
13c
14c   author: Laura Kerber
15c   ------
16c       
17c=======================================================================
18
19
20#include "callkeys.h"
21      integer ia
22
23      ! Initialize aerosol indexes to zero:
24      ! NB: iaero_* indexes are in module aerosol_mod
25
26      iaero_co2   =0
27      iaero_h2o   =0
28      iaero_dust  =0
29      iaero_h2so4 =0
30     
31      ia=0
32      if (aeroco2) then
33      ia=ia+1
34      iaero_co2=ia
35      write(*,*) 'CO2 aerosol = ', iaero_co2
36      endif
37 
38      if (aeroh2o) then
39      ia=ia+1
40      iaero_h2o=ia
41      write(*,*) 'H2O aerosol = ', iaero_h2o
42      endif
43
44      if (dusttau.gt.0) then
45      ia=ia+1
46      iaero_dust=ia
47      write(*,*) 'Dust aerosol = ', iaero_dust
48      endif
49
50      if (aeroh2so4) then
51      ia=ia+1
52      iaero_h2so4=ia
53      write(*,*) 'H2SO4 aerosol = ', iaero_h2so4
54      endif
55     
56      write(*,*) 'Number of aerosols= ', ia
57     
58      if (ia.eq.0) then  !For the zero aerosol case
59      ia = 1
60      endif
61
62      if (ia.ne.naerkind) then
63          print*, 'Aerosols counted not equal to naerkind'
64          print*, 'Compile with tag -s',ia,'to run'
65          print*, 'or change options in callphys.def'
66          print*, 'Abort in iniaerosol.F'
67      call abort
68      endif
69
70      end
Note: See TracBrowser for help on using the repository browser.