| 1 | module dimradmars_mod |
|---|
| 2 | ! Declaration and settings for radiative transfer calculations |
|---|
| 3 | ! Initializations and allocations are done in inifis |
|---|
| 4 | implicit none |
|---|
| 5 | ! nflev: number of vertical layer |
|---|
| 6 | ! ndlon,ndlo2: number of horizontal points |
|---|
| 7 | ! Splitting of horizontal grid |
|---|
| 8 | ! NDLO2 and ndomainsz for the splitting in the physics call |
|---|
| 9 | ! WARNING: One must have 1 < ndomainsz =< ngridmx |
|---|
| 10 | integer,save :: NFLEV !=nlayermx ! with splitting |
|---|
| 11 | integer,save :: ndomainsz !=(ngridmx-1)/20 + 1 |
|---|
| 12 | integer,save :: NDLON !=ndomainsz ! with splitting |
|---|
| 13 | integer,save :: NDLO2 !=NDLON |
|---|
| 14 | |
|---|
| 15 | |
|---|
| 16 | ! Number of kind of tracer radiative properties |
|---|
| 17 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|---|
| 18 | ! naerkind is set in scatterers.h (built when compiling with makegcm -s #) |
|---|
| 19 | |
|---|
| 20 | #include"scatterers.h" |
|---|
| 21 | ! NB: May have to change value of nsizemax below when changing scatterers |
|---|
| 22 | |
|---|
| 23 | ! Reference wavelengths used to compute reference optical depth (m) |
|---|
| 24 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|---|
| 25 | |
|---|
| 26 | real,save :: longrefir(naerkind),longrefvis(naerkind) |
|---|
| 27 | |
|---|
| 28 | ! Definition of spectral intervals at thermal infrared wavelengths (LW) |
|---|
| 29 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|---|
| 30 | integer,parameter :: nir=4 ! Total number of thermal IR bands |
|---|
| 31 | integer,parameter :: nuco2=2 ! number of bands in CO2 bands |
|---|
| 32 | real,parameter :: long1ir=5.E-6 , long2ir=200.E-6 |
|---|
| 33 | real,parameter :: long1co2=1.E+0 / 865.E+2 , long2co2=1.E+0 / 500.E+2 |
|---|
| 34 | |
|---|
| 35 | ! Warning : the "nir" thermal IR bands are not ordered by wavelength: |
|---|
| 36 | ! iir=1 : central 15um CO2 bands |
|---|
| 37 | ! iir=2 : CO2 band wings [long1co2-long2co2] MINUS central band |
|---|
| 38 | ! iir=3 : 9 um band [long1ir - long1co2] |
|---|
| 39 | ! iir=4 : Far IR [long2co2 - long2ir] |
|---|
| 40 | |
|---|
| 41 | ! Definition of spectral interval at solar wavelengths (SW) |
|---|
| 42 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|---|
| 43 | integer,parameter :: NSUN=2 ! do not change that ! |
|---|
| 44 | ! Boundaries of spectral intervals (m) : |
|---|
| 45 | real,parameter :: long1vis=0.1E-6 , long2vis=0.5E-6 , long3vis=5.E-6 |
|---|
| 46 | ! Fraction of solar energy in solar band #1 [long1vis-long2vis] : 0.274490 |
|---|
| 47 | ! Fraction of solar energy in solar band #2 [long2vis-long3vis] : 0.725509 |
|---|
| 48 | real,save :: sunfr(2) = (/ 0.274490 , 0.725509 /) |
|---|
| 49 | |
|---|
| 50 | ! Maximum number of grain size classes |
|---|
| 51 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|---|
| 52 | ! This parameter has to be set to the maximum number of particle |
|---|
| 53 | ! sizes contained in the optical parameter database; For example, |
|---|
| 54 | ! if only one grain size is used to describe dust, and 30 are used |
|---|
| 55 | ! to describe water-ice crystals in the visible and 15 in the IR, |
|---|
| 56 | ! nsizemax has to be set to 30. |
|---|
| 57 | ! If only one grain size is considered for all the aerosols, set |
|---|
| 58 | ! this parameter to 1 and convolution will be turned off during |
|---|
| 59 | ! the radiative calculations. |
|---|
| 60 | |
|---|
| 61 | integer, parameter :: nsizemax = 60 |
|---|
| 62 | ! integer, parameter :: nsizemax = 1 |
|---|
| 63 | |
|---|
| 64 | ! Various initialisation for LW radiative code |
|---|
| 65 | ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|---|
| 66 | ! npademx : number of Pade coefficients |
|---|
| 67 | ! nabsmx : ? |
|---|
| 68 | ! nt_pademx : number of temperature intervals for Pade |
|---|
| 69 | |
|---|
| 70 | integer,parameter :: npademx=4 |
|---|
| 71 | integer,parameter :: nabsmx=2 |
|---|
| 72 | integer,parameter :: nt_pademx=19 |
|---|
| 73 | |
|---|
| 74 | contains |
|---|
| 75 | |
|---|
| 76 | subroutine ini_dimradmars_mod(ngrid,nlayer) |
|---|
| 77 | |
|---|
| 78 | implicit none |
|---|
| 79 | |
|---|
| 80 | integer,intent(in) :: ngrid ! number of atmospheric columns |
|---|
| 81 | integer,intent(in) :: nlayer ! number of atmospheric layers |
|---|
| 82 | |
|---|
| 83 | nflev=nlayer |
|---|
| 84 | ! ndomainsz=ngrid |
|---|
| 85 | ndomainsz=(ngrid-1)/20 + 1 |
|---|
| 86 | ! ndomainsz=(ngrid-1)/5 + 1 |
|---|
| 87 | ndlon=ndomainsz |
|---|
| 88 | ndlo2=ndlon |
|---|
| 89 | |
|---|
| 90 | end subroutine ini_dimradmars_mod |
|---|
| 91 | |
|---|
| 92 | end module dimradmars_mod |
|---|