Ignore:
Timestamp:
May 11, 2014, 2:37:58 PM (11 years ago)
Author:
aslmd
Message:

LMDZ.MARS. Made number of scatterers a free dimension not in need to be prescribe at compiling time. Instead it must be set in callphys.def. See README for further information about this commit.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/libf/phymars/dimradmars_mod.F90

    r1224 r1246  
    1616! Number of kind of tracer radiative properties
    1717! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    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
     18! naerkind is set by reading callphys.def
     19! -- see conf_phys
     20! -- value of nsizemax below is comfortably high
     21!    but beware in case you add a lot of scatterers
     22  INTEGER, SAVE :: naerkind
     23
     24  ! AS: previously in aerkind.h
     25  character*20, SAVE, ALLOCATABLE :: name_iaer(:)  ! name of the scatterers
     26  integer iaer_dust_conrath ! Typical dust profiles using a
     27                            ! Conrath type analytical equation
     28  integer iaer_dust_doubleq ! Dust profile is given by the
     29                            ! mass mixing ratio of the two-
     30                            ! moment scheme method (doubleq)
     31  integer iaer_dust_submicron ! Dust profile is given by a
     32                              ! submicron population of dust
     33                              ! particles
     34  integer iaer_h2o_ice ! Water ice particles
     35
     36  ! AS: was in aeropacity
     37  INTEGER,SAVE,ALLOCATABLE :: iaerdust(:)
     38
     39  ! AS: was in suaer
     40  CHARACTER(LEN=30), SAVE, ALLOCATABLE :: file_id(:,:)
    2241
    2342! Reference wavelengths used to compute reference optical depth (m)
    2443! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    25 
    26   real,save :: longrefir(naerkind),longrefvis(naerkind)
     44  REAL,SAVE,ALLOCATABLE :: longrefir(:),longrefvis(:)
    2745 
    2846! Definition of spectral intervals at thermal infrared wavelengths (LW)
     
    86104  REAL,SAVE,ALLOCATABLE :: nueffdust(:,:) ! Dust effective variance
    87105
     106!! ------------------------------------------------------
     107!! AS: what was previously in yomaer
     108!   Shortwave
     109!   ~~~~~~~~~
     110!
     111! tauvis: dust optical depth at reference wavelength  ("longrefvis" set
     112! in dimradmars_mod : typically longrefvis = 0.67E-6 m, as measured by Viking )
     113
     114! For the "naerkind" kind of aerosol radiative properties :
     115! QVISsQREF  :  Qext / Qext("longrefvis")   <--- For both solar bands
     116! omegavis   :  sinle scattering albedo     <--- For both solar bands
     117! gvis       :  assymetry factor            <--- For both solar bands
     118!
     119!   Longwave
     120!   ~~~~~~~~
     121!
     122! For the "naerkind" kind of aerosol radiative properties :
     123! QIRsQREF :  Qext / Qext("longrefvis")     <--- For the nir bandes IR
     124! omegaIR  :  mean single scattering albedo <--- For the nir bandes IR
     125! gIR      :  mean assymetry factor         <--- For the nir bandes IR
     126!
     127  real,save :: tauvis
     128  real,save,allocatable :: QVISsQREF(:,:,:)
     129  real,save,allocatable :: omegavis(:,:,:)
     130  real,save,allocatable :: gvis(:,:,:)
     131  real,save,allocatable :: QIRsQREF(:,:,:)
     132  real,save,allocatable :: omegaIR(:,:,:)
     133  real,save,allocatable :: gIR(:,:,:)
     134! Actual number of grain size classes in each domain for a
     135!   given aerosol:
     136  integer,save,allocatable :: nsize(:,:)
     137! Particle size axis (depend on the kind of aerosol and the
     138!   radiation domain)
     139  real,save,allocatable :: radiustab(:,:,:)
     140! Extinction coefficient at reference wavelengths;
     141!   These wavelengths are defined in dimradmars_mod, and called
     142!   longrefvis and longrefir.
     143  real,save,allocatable :: QREFvis(:,:)
     144  real,save,allocatable :: QREFir(:,:)
     145  real,save,allocatable :: omegaREFvis(:,:)
     146  real,save,allocatable :: omegaREFir(:,:)
     147!! ------------------------------------------------------
     148
    88149contains
    89  
     150
    90151  subroutine ini_dimradmars_mod(ngrid,nlayer)
    91152 
     
    107168   allocate(fluxrad(ngrid))
    108169   allocate(tauscaling(ngrid))
     170   allocate(nueffdust(ngrid,nlayer))
     171
     172  end subroutine ini_dimradmars_mod
     173 
     174  subroutine ini_scatterers(ngrid,nlayer)
     175
     176  implicit none
     177
     178  integer,intent(in) :: ngrid ! number of atmospheric columns
     179  integer,intent(in) :: nlayer ! number of atmospheric layers
     180
     181   allocate(name_iaer(naerkind))
    109182   allocate(aerosol(ngrid,nlayer,naerkind))
    110    allocate(nueffdust(ngrid,nlayer))
    111 
    112   end subroutine ini_dimradmars_mod
    113  
     183   allocate(longrefir(naerkind))
     184   allocate(longrefvis(naerkind))
     185   allocate(iaerdust(naerkind))
     186   allocate(file_id(naerkind,2))
     187
     188   allocate(QVISsQREF(nsun,naerkind,nsizemax))
     189   allocate(omegavis(nsun,naerkind,nsizemax))
     190   allocate(gvis(nsun,naerkind,nsizemax))
     191   allocate(QIRsQREF(nir,naerkind,nsizemax))
     192   allocate(omegaIR(nir,naerkind,nsizemax))
     193   allocate(gIR(nir,naerkind,nsizemax))
     194   allocate(nsize(naerkind,2))
     195   allocate(radiustab(naerkind,2,nsizemax))
     196   allocate(QREFvis(naerkind,nsizemax))
     197   allocate(QREFir(naerkind,nsizemax))
     198   allocate(omegaREFvis(naerkind,nsizemax))
     199   allocate(omegaREFir(naerkind,nsizemax))
     200
     201  end subroutine ini_scatterers
     202
    114203end module dimradmars_mod
Note: See TracChangeset for help on using the changeset viewer.