[1047] | 1 | module dimradmars_mod |
---|
| 2 | ! Declaration and settings for radiative transfer calculations |
---|
[1224] | 3 | ! Initializations and allocations are done in phys_state_var_init |
---|
[1047] | 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 |
---|
[1112] | 9 | ! WARNING: One must have 1 < ndomainsz =< ngrid |
---|
[1047] | 10 | integer,save :: NFLEV !=nlayermx ! with splitting |
---|
[1112] | 11 | integer,save :: ndomainsz !=(ngrid-1)/20 + 1 |
---|
[1047] | 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 | |
---|
[1224] | 74 | !! |
---|
| 75 | !! variables |
---|
| 76 | !! |
---|
| 77 | REAL,SAVE,ALLOCATABLE :: dtrad(:,:) ! Net atm. radiative heating rate (K.s-1) |
---|
| 78 | REAL,SAVE,ALLOCATABLE :: fluxrad_sky(:) ! rad. flux from sky absorbed by surface (W.m-2) |
---|
| 79 | REAL,SAVE,ALLOCATABLE :: fluxrad(:) ! Net radiative surface flux (W.m-2) |
---|
| 80 | REAL,SAVE,ALLOCATABLE :: albedo(:,:) ! Surface albedo in each solar band |
---|
| 81 | REAL,SAVE,ALLOCATABLE :: tauscaling(:) ! Convertion factor for qdust and Ndust |
---|
| 82 | ! aerosol (dust or ice) extinction optical depth at reference wavelength |
---|
| 83 | ! "longrefvis" set in dimradmars_mod , for one of the "naerkind" kind of |
---|
| 84 | ! aerosol optical properties : |
---|
| 85 | REAL,SAVE,ALLOCATABLE :: aerosol(:,:,:) |
---|
| 86 | REAL,SAVE,ALLOCATABLE :: nueffdust(:,:) ! Dust effective variance |
---|
| 87 | |
---|
[1047] | 88 | contains |
---|
| 89 | |
---|
| 90 | subroutine ini_dimradmars_mod(ngrid,nlayer) |
---|
| 91 | |
---|
| 92 | implicit none |
---|
| 93 | |
---|
| 94 | integer,intent(in) :: ngrid ! number of atmospheric columns |
---|
| 95 | integer,intent(in) :: nlayer ! number of atmospheric layers |
---|
[1224] | 96 | |
---|
[1047] | 97 | nflev=nlayer |
---|
| 98 | ! ndomainsz=ngrid |
---|
| 99 | ndomainsz=(ngrid-1)/20 + 1 |
---|
| 100 | ! ndomainsz=(ngrid-1)/5 + 1 |
---|
| 101 | ndlon=ndomainsz |
---|
| 102 | ndlo2=ndlon |
---|
| 103 | |
---|
[1224] | 104 | allocate(albedo(ngrid,2)) |
---|
| 105 | allocate(dtrad(ngrid,nlayer)) |
---|
| 106 | allocate(fluxrad_sky(ngrid)) |
---|
| 107 | allocate(fluxrad(ngrid)) |
---|
| 108 | allocate(tauscaling(ngrid)) |
---|
| 109 | allocate(aerosol(ngrid,nlayer,naerkind)) |
---|
| 110 | allocate(nueffdust(ngrid,nlayer)) |
---|
| 111 | |
---|
[1047] | 112 | end subroutine ini_dimradmars_mod |
---|
| 113 | |
---|
| 114 | end module dimradmars_mod |
---|