Changeset 1788 for trunk


Ignore:
Timestamp:
Sep 26, 2017, 12:43:42 PM (7 years ago)
Author:
jvatant
Message:

Get rid of all the old-generic dummy aerosol scheme ( just left scatterers_h for compilation )
as the new microphysics for Titan will be plugged in
-> even removed sedimentation ( will be done in the microphysical model )
--JVO

Location:
trunk/LMDZ.TITAN
Files:
12 deleted
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.TITAN/README

    r1787 r1788  
    13261326Fixed a bug in calchim and physiq_mod on conversion of tendencies to 3D and molar ratio / mass ratio
    13271327 ->  we assume same 2D relative tendency on all lat in calchim and adjust longitudinal variations
     1328
     1329== 26/09/2017 == JVO
     1330Get rid of all the old-generic dummy aerosol scheme ( just left scatterers_h for compilation ) as
     1331the new microphysics for Titan will be plugged in
     1332-> even removed sedimentation ( will be done in the microphysical model )
     1333Removed : aerave.F aeroptproperties.F90 radii_mod.F90 aerosol_mod.F90 aerave_new.F stokes.F90
     1334vlz_fi.F callsedim.F iniaerosol.F suaer_corrk.F90 newsedim.F
  • trunk/LMDZ.TITAN/libf/phytitan/callcorrk.F90

    r1781 r1788  
    11      subroutine callcorrk(ngrid,nlayer,pq,nq,qsurf,           &
    22          albedo,albedo_equivalent,emis,mu0,pplev,pplay,pt,    &
    3           tsurf,fract,dist_star,aerosol,                       &
     3          tsurf,fract,dist_star,                               &
    44          dtlw,dtsw,fluxsurf_lw,                               &
    55          fluxsurf_sw,fluxsurfabs_sw,fluxtop_lw,               &
    66          fluxabs_sw,fluxtop_dn,                               &
    77          OLR_nu,OSR_nu,                                       &
    8           tau_col,firstcall,lastcall)
     8          firstcall,lastcall)
    99
    1010      use mod_phys_lmdz_para, only : is_master
     
    1414      use ioipsl_getin_p_mod, only: getin_p
    1515      use gases_h
    16       use radii_mod, only : su_aer_radii,back2lay_reffrad
    17       use aerosol_mod, only : iaero_back2lay
    1816      USE tracer_h
    1917      use comcstfi_mod, only: pi, mugaz, cpp
     
    6462     
    6563      ! OUTPUT
    66       REAL,INTENT(OUT) :: aerosol(ngrid,nlayer,naerkind) ! Aerosol tau (kg/kg).
    6764      REAL,INTENT(OUT) :: dtlw(ngrid,nlayer)             ! Heating rate (K/s) due to LW radiation.
    6865      REAL,INTENT(OUT) :: dtsw(ngrid,nlayer)             ! Heating rate (K/s) due to SW radiation.
     
    7572      REAL,INTENT(OUT) :: OLR_nu(ngrid,L_NSPECTI)        ! Outgoing LW radition in each band (Normalized to the band width (W/m2/cm-1).
    7673      REAL,INTENT(OUT) :: OSR_nu(ngrid,L_NSPECTV)        ! Outgoing SW radition in each band (Normalized to the band width (W/m2/cm-1).
    77       REAL,INTENT(OUT) :: tau_col(ngrid)                 ! Diagnostic from aeropacity.
    7874      REAL,INTENT(OUT) :: albedo_equivalent(ngrid)       ! Spectrally Integrated Albedo. For Diagnostic. By MT2015
    7975     
    8076     
    81       ! Globally varying aerosol optical properties on GCM grid ; not needed everywhere so not in radcommon_h.   
    82       REAL :: QVISsQREF3d(ngrid,nlayer,L_NSPECTV,naerkind)
    83       REAL :: omegaVIS3d(ngrid,nlayer,L_NSPECTV,naerkind)
    84       REAL :: gVIS3d(ngrid,nlayer,L_NSPECTV,naerkind)
    85       REAL :: QIRsQREF3d(ngrid,nlayer,L_NSPECTI,naerkind)
    86       REAL :: omegaIR3d(ngrid,nlayer,L_NSPECTI,naerkind)
    87       REAL :: gIR3d(ngrid,nlayer,L_NSPECTI,naerkind)
    88 
    89 !      REAL :: omegaREFvis3d(ngrid,nlayer,naerkind)
    90 !      REAL :: omegaREFir3d(ngrid,nlayer,naerkind) ! not sure of the point of these...
    91 
    92       REAL,ALLOCATABLE,SAVE :: reffrad(:,:,:)  ! aerosol effective radius (m)
    93       REAL,ALLOCATABLE,SAVE :: nueffrad(:,:,:) ! aerosol effective variance
    94 !$OMP THREADPRIVATE(reffrad,nueffrad)
    95 
    9677!-----------------------------------------------------------------------
    9778!     Declaration of the variables required by correlated-k subroutines
     
    11495      REAL*8 taucumi(L_LEVELS,L_NSPECTI,L_NGAUSS)
    11596
    116       REAL*8 tauaero(L_LEVELS,naerkind)
    11797      REAL*8 nfluxtopv,nfluxtopi,nfluxtop,fluxtopvdn
    11898      REAL*8 nfluxoutv_nu(L_NSPECTV)                 ! Outgoing band-resolved VI flux at TOA (W/m2).
     
    125105      REAL*8 albv(L_NSPECTV)                         ! Spectral Visible Albedo.
    126106
    127       INTEGER ig,l,k,nw,iaer
     107      INTEGER ig,l,k,nw
    128108
    129109      real szangle
     
    134114      real*8 taugsurfi(L_NSPECTI,L_NGAUSS-1)
    135115
    136       ! Local aerosol optical properties for each column on RADIATIVE grid.
    137       real*8,save,allocatable ::  QXVAER(:,:,:)
    138       real*8,save,allocatable ::  QSVAER(:,:,:)
    139       real*8,save,allocatable ::  GVAER(:,:,:)
    140       real*8,save,allocatable ::  QXIAER(:,:,:)
    141       real*8,save,allocatable ::  QSIAER(:,:,:)
    142       real*8,save,allocatable ::  GIAER(:,:,:)
    143 
    144       real, dimension(:,:,:), save, allocatable :: QREFvis3d
    145       real, dimension(:,:,:), save, allocatable :: QREFir3d
    146 !$OMP THREADPRIVATE(QXVAER,QSVAER,GVAER,QXIAER,QSIAER,GIAER,QREFvis3d,QREFir3d)
    147 
    148116
    149117      ! Miscellaneous :
    150       real*8  temp,temp1,temp2,pweight
    151118      character(len=10) :: tmp1
    152119      character(len=10) :: tmp2
     
    167134      if(firstcall) then
    168135
    169         ! test on allocated necessary because of CLFvarying (two calls to callcorrk in physiq)
    170         if(.not.allocated(QXVAER)) allocate(QXVAER(L_LEVELS,L_NSPECTV,naerkind))
    171         if(.not.allocated(QSVAER)) allocate(QSVAER(L_LEVELS,L_NSPECTV,naerkind))
    172         if(.not.allocated(GVAER)) allocate(GVAER(L_LEVELS,L_NSPECTV,naerkind))
    173         if(.not.allocated(QXIAER)) allocate(QXIAER(L_LEVELS,L_NSPECTI,naerkind))
    174         if(.not.allocated(QSIAER)) allocate(QSIAER(L_LEVELS,L_NSPECTI,naerkind))
    175         if(.not.allocated(GIAER)) allocate(GIAER(L_LEVELS,L_NSPECTI,naerkind))
    176 
    177          !!! ALLOCATED instances are necessary because of CLFvarying (strategy to call callcorrk twice in physiq...)
    178          IF(.not.ALLOCATED(QREFvis3d)) ALLOCATE(QREFvis3d(ngrid,nlayer,naerkind))
    179          IF(.not.ALLOCATED(QREFir3d)) ALLOCATE(QREFir3d(ngrid,nlayer,naerkind))
    180          ! Effective radius and variance of the aerosols
    181          IF(.not.ALLOCATED(reffrad)) allocate(reffrad(ngrid,nlayer,naerkind))
    182          IF(.not.ALLOCATED(nueffrad)) allocate(nueffrad(ngrid,nlayer,naerkind))
    183 
    184136         call system('rm -f surf_vals_long.out')
    185137
    186          if(naerkind.gt.4)then
    187             print*,'Code not general enough to deal with naerkind > 4 yet.'
    188             call abort
    189          endif
    190          call su_aer_radii(ngrid,nlayer,reffrad,nueffrad)
    191          
    192          
    193138!--------------------------------------------------
    194139!             Set up correlated k
     
    207152         call setspv            ! Basic visible properties.
    208153         call sugas_corrk       ! Set up gaseous absorption properties.
    209          call suaer_corrk       ! Set up aerosol optical properties.
    210        
    211154
    212155         OLR_nu(:,:) = 0.
     
    240183!=======================================================================
    241184 
    242       qxvaer(:,:,:)=0.0
    243       qsvaer(:,:,:)=0.0
    244       gvaer(:,:,:) =0.0
    245 
    246       qxiaer(:,:,:)=0.0
    247       qsiaer(:,:,:)=0.0
    248       giaer(:,:,:) =0.0
    249 
    250 !--------------------------------------------------
    251 !     Effective radius and variance of the aerosols
    252 !--------------------------------------------------
    253 
    254       do iaer=1,naerkind
    255      
    256           if(iaer.eq.iaero_back2lay)then
    257             call back2lay_reffrad(ngrid,reffrad(1,1,iaero_back2lay),nlayer,pplev)
    258          endif
    259          
    260      end do !iaer=1,naerkind.
    261 
    262185
    263186      ! How much light do we get ?
     
    266189      end do
    267190
    268       ! Get 3D aerosol optical properties.
    269       call aeroptproperties(ngrid,nlayer,reffrad,nueffrad,         &
    270            QVISsQREF3d,omegaVIS3d,gVIS3d,                          &
    271            QIRsQREF3d,omegaIR3d,gIR3d,                             &
    272            QREFvis3d,QREFir3d)                                     
    273 
    274       ! Get aerosol optical depths.
    275       call aeropacity(ngrid,nlayer,nq,pplay,pplev,pq,aerosol,      &
    276            reffrad,QREFvis3d,QREFir3d,                             &
    277            tau_col)               
    278          
    279 
    280191
    281192!-----------------------------------------------------------------------   
     
    288199!=======================================================================
    289200
    290 
    291 !-----------------------------------------------------------------------
    292 !    Aerosol optical properties Qext, Qscat and g.
    293 !    The transformation in the vertical is the same as for temperature.
    294 !-----------------------------------------------------------------------
    295            
    296            
    297             do iaer=1,naerkind
    298                ! Shortwave.
    299                do nw=1,L_NSPECTV
    300                
    301                   do l=1,nlayer
    302 
    303                      temp1=QVISsQREF3d(ig,nlayer+1-l,nw,iaer)         &
    304                          *QREFvis3d(ig,nlayer+1-l,iaer)
    305 
    306                      temp2=QVISsQREF3d(ig,max(nlayer-l,1),nw,iaer)    &
    307                          *QREFvis3d(ig,max(nlayer-l,1),iaer)
    308 
    309                      qxvaer(2*l,nw,iaer)  = temp1
    310                      qxvaer(2*l+1,nw,iaer)=(temp1+temp2)/2
    311 
    312                      temp1=temp1*omegavis3d(ig,nlayer+1-l,nw,iaer)
    313                      temp2=temp2*omegavis3d(ig,max(nlayer-l,1),nw,iaer)
    314 
    315                      qsvaer(2*l,nw,iaer)  = temp1
    316                      qsvaer(2*l+1,nw,iaer)=(temp1+temp2)/2
    317 
    318                      temp1=gvis3d(ig,nlayer+1-l,nw,iaer)
    319                      temp2=gvis3d(ig,max(nlayer-l,1),nw,iaer)
    320 
    321                      gvaer(2*l,nw,iaer)  = temp1
    322                      gvaer(2*l+1,nw,iaer)=(temp1+temp2)/2
    323 
    324                   end do ! nlayer
    325 
    326                   qxvaer(1,nw,iaer)=qxvaer(2,nw,iaer)
    327                   qxvaer(2*nlayer+1,nw,iaer)=0.
    328 
    329                   qsvaer(1,nw,iaer)=qsvaer(2,nw,iaer)
    330                   qsvaer(2*nlayer+1,nw,iaer)=0.
    331 
    332                   gvaer(1,nw,iaer)=gvaer(2,nw,iaer)
    333                   gvaer(2*nlayer+1,nw,iaer)=0.
    334 
    335                end do ! L_NSPECTV
    336              
    337                do nw=1,L_NSPECTI
    338                   ! Longwave
    339                   do l=1,nlayer
    340 
    341                      temp1=QIRsQREF3d(ig,nlayer+1-l,nw,iaer)         &
    342                           *QREFir3d(ig,nlayer+1-l,iaer)
    343 
    344                      temp2=QIRsQREF3d(ig,max(nlayer-l,1),nw,iaer)    &
    345                           *QREFir3d(ig,max(nlayer-l,1),iaer)
    346 
    347                      qxiaer(2*l,nw,iaer)  = temp1
    348                      qxiaer(2*l+1,nw,iaer)=(temp1+temp2)/2
    349 
    350                      temp1=temp1*omegair3d(ig,nlayer+1-l,nw,iaer)
    351                      temp2=temp2*omegair3d(ig,max(nlayer-l,1),nw,iaer)
    352 
    353                      qsiaer(2*l,nw,iaer)  = temp1
    354                      qsiaer(2*l+1,nw,iaer)=(temp1+temp2)/2
    355 
    356                      temp1=gir3d(ig,nlayer+1-l,nw,iaer)
    357                      temp2=gir3d(ig,max(nlayer-l,1),nw,iaer)
    358 
    359                      giaer(2*l,nw,iaer)  = temp1
    360                      giaer(2*l+1,nw,iaer)=(temp1+temp2)/2
    361 
    362                   end do ! nlayer
    363 
    364                   qxiaer(1,nw,iaer)=qxiaer(2,nw,iaer)
    365                   qxiaer(2*nlayer+1,nw,iaer)=0.
    366 
    367                   qsiaer(1,nw,iaer)=qsiaer(2,nw,iaer)
    368                   qsiaer(2*nlayer+1,nw,iaer)=0.
    369 
    370                   giaer(1,nw,iaer)=giaer(2,nw,iaer)
    371                   giaer(2*nlayer+1,nw,iaer)=0.
    372 
    373                end do ! L_NSPECTI
    374                
    375             end do ! naerkind
    376 
    377             ! Test / Correct for freaky s. s. albedo values.
    378             do iaer=1,naerkind
    379                do k=1,L_LEVELS
    380 
    381                   do nw=1,L_NSPECTV
    382                      if(qsvaer(k,nw,iaer).gt.1.05*qxvaer(k,nw,iaer))then
    383                         print*,'Serious problems with qsvaer values'
    384                         print*,'in callcorrk'
    385                         call abort
    386                      endif
    387                      if(qsvaer(k,nw,iaer).gt.qxvaer(k,nw,iaer))then
    388                         qsvaer(k,nw,iaer)=qxvaer(k,nw,iaer)
    389                      endif
    390                   end do
    391 
    392                   do nw=1,L_NSPECTI
    393                      if(qsiaer(k,nw,iaer).gt.1.05*qxiaer(k,nw,iaer))then
    394                         print*,'Serious problems with qsiaer values'
    395                         print*,'in callcorrk'
    396                         call abort
    397                      endif
    398                      if(qsiaer(k,nw,iaer).gt.qxiaer(k,nw,iaer))then
    399                         qsiaer(k,nw,iaer)=qxiaer(k,nw,iaer)
    400                      endif
    401                   end do
    402 
    403                end do ! L_LEVELS
    404             end do ! naerkind
    405 
    406 !-----------------------------------------------------------------------
    407 !     Aerosol optical depths
    408 !-----------------------------------------------------------------------
    409            
    410          do iaer=1,naerkind     ! a bug was here           
    411             do k=0,nlayer-1
    412                
    413                pweight=(pplay(ig,L_NLAYRAD-k)-pplev(ig,L_NLAYRAD-k+1))/   &
    414                        (pplev(ig,L_NLAYRAD-k)-pplev(ig,L_NLAYRAD-k+1))
    415                temp=aerosol(ig,L_NLAYRAD-k,iaer)/QREFvis3d(ig,L_NLAYRAD-k,iaer)
    416                tauaero(2*k+2,iaer)=max(temp*pweight,0.d0)
    417                tauaero(2*k+3,iaer)=max(temp-tauaero(2*k+2,iaer),0.d0)
    418 
    419             end do
    420             ! boundary conditions
    421             tauaero(1,iaer)          = tauaero(2,iaer)
    422             !tauaero(1,iaer)          = 0.
    423            
    424          end do ! naerkind
    425201
    426202         ! Albedo and Emissivity.
     
    586362           
    587363            call optcv(dtauv,tauv,taucumv,plevrad,                 &
    588                  qxvaer,qsvaer,gvaer,wbarv,cosbv,tauray,tauaero,   &
    589                  tmid,pmid,taugsurf)
     364                 wbarv,cosbv,tauray,tmid,pmid,taugsurf)
    590365
    591366            call sfluxv(dtauv,tauv,taucumv,albv,dwnv,wbarv,cosbv,  &
     
    629404
    630405         call optci(plevrad,tlevrad,dtaui,taucumi,                  &
    631               qxiaer,qsiaer,giaer,cosbi,wbari,tauaero,tmid,pmid,    &
    632               taugsurfi)
     406              cosbi,wbari,tmid,pmid,taugsurfi)
    633407
    634408         call sfluxi(plevrad,tlevrad,dtaui,taucumi,ubari,albi,      &
     
    655429            print*,'fluxtop_dn=',fluxtop_dn(ig)
    656430            print*,'acosz=',acosz
    657             print*,'aerosol=',aerosol(ig,:,:)
    658431            print*,'temp=   ',pt(ig,:)
    659432            print*,'pplay=  ',pplay(ig,:)
     
    754527!$OMP END MASTER
    755528!$OMP BARRIER
    756         IF ( ALLOCATED(reffrad)) DEALLOCATE(reffrad)
    757         IF ( ALLOCATED(nueffrad)) DEALLOCATE(nueffrad)
    758529      endif
    759530
  • trunk/LMDZ.TITAN/libf/phytitan/callkeys_mod.F90

    r1722 r1788  
    3131      logical,save :: mass_redistrib
    3232!$OMP THREADPRIVATE(stelbbody,ozone,tracer,mass_redistrib)
    33       logical,save :: sedimentation
    34 !$OMP THREADPRIVATE(sedimentation)
    35       logical,save :: aeroback2lay
    36 !$OMP THREADPRIVATE(aeroback2lay)
    3733      logical,save :: nosurf
    3834      logical,save :: oblate
     
    4137      integer,save :: ichim
    4238      integer,save :: iddist
    43       integer,save :: iaervar
    4439      integer,save :: iradia
    4540      integer,save :: startype
    46 !$OMP THREADPRIVATE(ichim,iddist,iaervar,iradia,startype)
     41!$OMP THREADPRIVATE(ichim,iddist,iradia,startype)
    4742
    4843      real,save :: Fat1AU
    4944      real,save :: stelTbb
    5045!$OMP THREADPRIVATE(Fat1AU,stelTbb)
    51       real,save :: tplanet
    52       real,save :: obs_tau_col_tropo
    53       real,save :: obs_tau_col_strato
    54 !$OMP THREADPRIVATE(tplanet,obs_tau_col_tropo,obs_tau_col_strato)
    55       real,save :: pres_bottom_tropo
    56       real,save :: pres_top_tropo
    57       real,save :: pres_bottom_strato
    58       real,save :: pres_top_strato
    59 !$OMP THREADPRIVATE(pres_bottom_tropo,pres_top_tropo,pres_bottom_strato,pres_top_strato)
    60       real,save :: size_tropo
    61       real,save :: size_strato
    62 !$OMP THREADPRIVATE(size_tropo,size_strato)
    6346      real,save :: pceil
    6447!$OMP THREADPRIVATE(pceil)
  • trunk/LMDZ.TITAN/libf/phytitan/datafile_mod.F90

    r1520 r1788  
    1818      character(len=12),parameter :: surfdir="surface_data"
    1919     
    20       ! aerdir stores aerosol properties files (optprop_*dat files)
    21       character(LEN=18),parameter :: aerdir="aerosol_properties"
    22 
    2320      end module datafile_mod
    2421!-----------------------------------------------------------------------
  • trunk/LMDZ.TITAN/libf/phytitan/inifis_mod.F90

    r1722 r1788  
    99             prad,pg,pr,pcpp)
    1010
    11   use radinc_h, only: ini_radinc_h, naerkind
     11  use radinc_h, only: ini_radinc_h
    1212  use datafile_mod, only: datadir
    1313  use comdiurn_h, only: sinlat, coslat, sinlon, coslon
     
    385385     endif
    386386
    387      write(*,*)"Default planetary temperature?"
    388      tplanet=215.0
    389      call getin_p("tplanet",tplanet)
    390      write(*,*)" tplanet = ",tplanet
    391 
    392387     write(*,*)"Which star?"
    393388     startype=1 ! default value = Sol
     
    399394     call getin_p("Fat1AU",Fat1AU)
    400395     write(*,*)" Fat1AU = ",Fat1AU
    401 
    402 
    403 ! TRACERS:
    404 
    405 !         write(*,*)"Number of radiatively active aerosols:"
    406 !         naerkind=0. ! default value
    407 !         call getin_p("naerkind",naerkind)
    408 !         write(*,*)" naerkind = ",naerkind
    409 
    410  
    411 !=================================
    412 
    413      write(*,*)"Radiatively active two-layer aersols?"
    414      aeroback2lay=.false.     ! default value
    415      call getin_p("aeroback2lay",aeroback2lay)
    416      write(*,*)" aeroback2lay = ",aeroback2lay
    417 
    418      write(*,*)"TWOLAY AEROSOL: total optical depth ", &
    419                     "in the tropospheric layer (visible)"
    420      obs_tau_col_tropo=8.D0
    421      call getin_p("obs_tau_col_tropo",obs_tau_col_tropo)
    422      write(*,*)" obs_tau_col_tropo = ",obs_tau_col_tropo
    423 
    424      write(*,*)"TWOLAY AEROSOL: total optical depth ", &
    425                     "in the stratospheric layer (visible)"
    426      obs_tau_col_strato=0.08D0
    427      call getin_p("obs_tau_col_strato",obs_tau_col_strato)
    428      write(*,*)" obs_tau_col_strato = ",obs_tau_col_strato
    429 
    430      write(*,*)"TWOLAY AEROSOL: pres_bottom_tropo? in pa"
    431      pres_bottom_tropo=66000.0
    432      call getin_p("pres_bottom_tropo",pres_bottom_tropo)
    433      write(*,*)" pres_bottom_tropo = ",pres_bottom_tropo
    434 
    435      write(*,*)"TWOLAY AEROSOL: pres_top_tropo? in pa"
    436      pres_top_tropo=18000.0
    437      call getin_p("pres_top_tropo",pres_top_tropo)
    438      write(*,*)" pres_top_tropo = ",pres_top_tropo
    439 
    440      write(*,*)"TWOLAY AEROSOL: pres_bottom_strato? in pa"
    441      pres_bottom_strato=2000.0
    442      call getin_p("pres_bottom_strato",pres_bottom_strato)
    443      write(*,*)" pres_bottom_strato = ",pres_bottom_strato
    444 
    445      write(*,*)"TWOLAY AEROSOL: pres_top_strato? in pa"
    446      pres_top_strato=100.0
    447      call getin_p("pres_top_strato",pres_top_strato)
    448      write(*,*)" pres_top_strato = ",pres_top_strato
    449 
    450      write(*,*)"TWOLAY AEROSOL: particle size in the ", &
    451                     "tropospheric layer, in meters"
    452      size_tropo=2.e-6
    453      call getin_p("size_tropo",size_tropo)
    454      write(*,*)" size_tropo = ",size_tropo
    455 
    456      write(*,*)"TWOLAY AEROSOL: particle size in the ", &
    457                     "stratospheric layer, in meters"
    458      size_strato=1.e-7
    459      call getin_p("size_strato",size_strato)
    460      write(*,*)" size_strato = ",size_strato
    461 
    462 !=================================
    463 
    464      write(*,*) "Gravitationnal sedimentation ?"
    465      sedimentation=.false. ! default value
    466      call getin_p("sedimentation",sedimentation)
    467      write(*,*) " sedimentation = ",sedimentation       
    468396
    469397     write(*,*) "Does user want to force cpp and mugaz?"
  • trunk/LMDZ.TITAN/libf/phytitan/initracer.F

    r1764 r1788  
    3232
    3333
    34 c-----------------------------------------------------------------------
    35 c  radius(nq)      ! aerosol particle radius (m)
     34c------------------------------------------------
    3635c  rho_q(nq)       ! tracer densities (kg.m-3)
    37 c  qext(nq)        ! Single Scat. Extinction coeff at 0.67 um
    38 c  alpha_lift(nq)  ! saltation vertical flux/horiz flux ratio (m-1)
    39 c  alpha_devil(nq) ! lifting coeeficient by dust devil
    40 c-----------------------------------------------------------------------
    41 
     36c------------------------------------------------
    4237       nqtot=nq
    4338       !! we allocate once for all arrays in common in tracer_h.F90
     
    4540       IF (.NOT.ALLOCATED(noms)) ALLOCATE(noms(nq))
    4641       ALLOCATE(mmol(nq))
    47        ALLOCATE(radius(nq))
    4842       ALLOCATE(rho_q(nq))
    49        ALLOCATE(qext(nq))
    50        ALLOCATE(alpha_lift(nq))
    51        ALLOCATE(alpha_devil(nq))
    52        ALLOCATE(qextrhor(nq))
    53        !! initialization
    54        alpha_lift(:)=0.
    55        alpha_devil(:)=0.
    56        
    57        ! Added by JVO 2017 : these arrays are handled later
    58        ! -> initialization is the least we can do, please !!!
    59        radius(:)=0.
    60        qext(:)=0.
    6143
    6244! Initialization: get tracer names from the dynamics and check if we are
     
    373355
    374356
    375 c     Output for records:
    376 c     ~~~~~~~~~~~~~~~~~~
    377       write(*,*)
    378       Write(*,*) '******** initracer : dust transport parameters :'
    379       write(*,*) 'alpha_lift = ', alpha_lift
    380       write(*,*) 'alpha_devil = ', alpha_devil
    381       write(*,*) 'radius  = ', radius
    382      
    383       write(*,*) 'Qext  = ', qext
    384       write(*,*)
    385 
    386357      end
  • trunk/LMDZ.TITAN/libf/phytitan/optci.F90

    r1781 r1788  
    11subroutine optci(PLEV,TLEV,DTAUI,TAUCUMI,      &
    2      QXIAER,QSIAER,GIAER,COSBI,WBARI,TAUAERO,  &
    3      TMID,PMID,TAUGSURF)
     2     COSBI,WBARI,TMID,PMID,TAUGSURF)
    43
    54  use radinc_h
     
    4140  real*8 WBARI(L_NLAYRAD,L_NSPECTI,L_NGAUSS)
    4241
    43   ! for aerosols
    44   real*8  QXIAER(L_LEVELS,L_NSPECTI,NAERKIND)
    45   real*8  QSIAER(L_LEVELS,L_NSPECTI,NAERKIND)
    46   real*8  GIAER(L_LEVELS,L_NSPECTI,NAERKIND)
    47   real*8  TAUAERO(L_LEVELS,NAERKIND)
    48   real*8  TAUAEROLK(L_LEVELS,L_NSPECTI,NAERKIND)
    49   real*8  TAEROS(L_LEVELS,L_NSPECTI,NAERKIND)
    50 
    5142  ! Titan customisation
    5243  ! J. Vatant d'Ollone (2016)
     
    6859
    6960  real*8 taugsurf(L_NSPECTI,L_NGAUSS-1)
    70   real*8 DCONT,DAERO
     61  real*8 DCONT
    7162  double precision wn_cont, p_cont, p_air, T_cont, dtemp, dtempc
    7263  double precision p_cross
     
    117108  end do                    ! levels
    118109
    119   ! Spectral dependance of aerosol absorption
    120   do iaer=1,naerkind
    121      DO NW=1,L_NSPECTI
    122         do K=2,L_LEVELS
    123            TAEROS(K,NW,IAER) = TAUAERO(K,IAER) * QXIAER(K,NW,IAER)
    124         end do                    ! levels
    125      END DO
    126   end do
    127 
    128110  do NW=1,L_NSPECTI
    129111
     
    132114        ilay = k / 2 ! int. arithmetic => gives the gcm layer index
    133115       
    134         DAERO=SUM(TAEROS(K,NW,1:naerkind)) ! aerosol absorption
    135 
    136116        !================= Titan customisation ========================================
    137117        call disr_haze(dz(k),plev(k),wnoi(nw),dhaze_T(k,nw),SSA_T(k,nw),ASF_T(k,nw))
     
    240220           DTAUKI(K,nw,ng) = TAUGAS    &
    241221                             + DCONT   & ! For parameterized continuum absorption
    242                              + DAERO   & ! For aerosol absorption
    243222                             + DHAZE_T(K,NW)  ! For Titan haze
    244223
     
    251230        DTAUKI(K,nw,ng) = 0.d0      &
    252231                          + DCONT   & ! For parameterized continuum absorption
    253                           + DAERO   & ! For aerosol absorption
    254232                          + DHAZE_T(K,NW)     ! For Titan Haze
    255233
     
    262240  ! ======================================================================
    263241
    264   do iaer=1,naerkind
    265     DO NW=1,L_NSPECTI
    266      DO K=2,L_LEVELS
    267            TAUAEROLK(K,NW,IAER) = TAUAERO(K,IAER)*QSIAER(K,NW,IAER) ! effect of scattering albedo
    268      ENDDO
    269     ENDDO
    270   end do
    271  
    272242  ! Haze scattering
    273243  DO NW=1,L_NSPECTI
     
    280250     DO L=1,L_NLAYRAD-1
    281251        K              = 2*L+1
    282         btemp(L,NW) = SUM(TAUAEROLK(K,NW,1:naerkind)) + SUM(TAUAEROLK(K+1,NW,1:naerkind)) &
    283                       + DHAZES_T(K,NW) + DHAZES_T(K+1,NW)
     252        btemp(L,NW) = DHAZES_T(K,NW) + DHAZES_T(K+1,NW)
    284253     END DO ! L vertical loop
    285254     
     
    287256     L           = L_NLAYRAD
    288257     K           = 2*L+1
    289      btemp(L,NW) = SUM(TAUAEROLK(K,NW,1:naerkind)) + DHAZES_T(K,NW)
     258     btemp(L,NW) = DHAZES_T(K,NW)
    290259     
    291260  END DO                    ! NW spectral loop
     
    301270        atemp = 0.
    302271        if(DTAUI(L,NW,NG) .GT. 1.0D-9) then
    303            do iaer=1,naerkind
    304               atemp = atemp +                                     &
    305                    GIAER(K,NW,IAER)   * TAUAEROLK(K,NW,IAER) +    &
    306                    GIAER(K+1,NW,IAER) * TAUAEROLK(K+1,NW,IAER)
    307            end do
    308272           atemp = atemp +                   &
    309273                ASF_T(K,NW)*DHAZES_T(K,NW) + &
     
    332296     atemp = 0.
    333297     if(DTAUI(L,NW,NG) .GT. 1.0D-9) then
    334         do iaer=1,naerkind
    335            atemp = atemp + GIAER(K,NW,IAER)   * TAUAEROLK(K,NW,IAER)
    336         end do
    337298        atemp = atemp + ASF_T(K,NW)*DHAZES_T(K,NW)
    338299        WBARI(L,nw,ng) = btemp(L,nw)  / DTAUI(L,NW,NG)
  • trunk/LMDZ.TITAN/libf/phytitan/optcv.F90

    r1781 r1788  
    11SUBROUTINE OPTCV(DTAUV,TAUV,TAUCUMV,PLEV,  &
    2      QXVAER,QSVAER,GVAER,WBARV,COSBV,       &
    3      TAURAY,TAUAERO,TMID,PMID,TAUGSURF)
     2     WBARV,COSBV,TAURAY,TMID,PMID,TAUGSURF)
    43
    54  use radinc_h
     
    4645  real*8 COSBV(L_NLAYRAD,L_NSPECTV,L_NGAUSS)
    4746  real*8 WBARV(L_NLAYRAD,L_NSPECTV,L_NGAUSS)
    48 
    49   ! for aerosols
    50   real*8  QXVAER(L_LEVELS,L_NSPECTV,NAERKIND)
    51   real*8  QSVAER(L_LEVELS,L_NSPECTV,NAERKIND)
    52   real*8  GVAER(L_LEVELS,L_NSPECTV,NAERKIND)
    53   real*8  TAUAERO(L_LEVELS,NAERKIND)
    54   real*8  TAUAEROLK(L_LEVELS,L_NSPECTV,NAERKIND)
    55   real*8  TAEROS(L_LEVELS,L_NSPECTV,NAERKIND)
    5647
    5748  ! Titan customisation
     
    7667
    7768  real*8 taugsurf(L_NSPECTV,L_NGAUSS-1)
    78   real*8 DCONT,DAERO
     69  real*8 DCONT
    7970  real*8 DRAYAER
    8071  double precision wn_cont, p_cont, p_air, T_cont, dtemp, dtempc
     
    129120  end do                    ! levels
    130121
    131   ! Spectral dependance of aerosol absorption
    132   do iaer=1,naerkind
    133      do NW=1,L_NSPECTV
    134         do K=2,L_LEVELS
    135            TAEROS(K,NW,IAER) = TAUAERO(K,IAER) * QXVAER(K,NW,IAER)
    136         end do                    ! levels
    137      end do
    138   end do
    139  
    140122  ! Rayleigh scattering
    141123  do NW=1,L_NSPECTV
     
    158140        DRAYAER = TRAY(K,NW)
    159141        !     DRAYAER is Tau RAYleigh scattering, plus AERosol opacity
    160         do iaer=1,naerkind
    161            DRAYAER = DRAYAER + TAEROS(K,NW,IAER)
    162         end do
    163 
    164142        DRAYAER = DRAYAER + DHAZE_T(K,NW) ! Titan's aerosol
    165143
     
    275253  !     we need to calculate the scattering albedo and asymmetry factors
    276254
    277   do iaer=1,naerkind
    278     DO NW=1,L_NSPECTV
    279       DO K=2,L_LEVELS
    280            TAUAEROLK(K,NW,IAER) = TAUAERO(K,IAER) * QSVAER(K,NW,IAER) ! effect of scattering albedo
    281       ENDDO
    282     ENDDO
    283   end do
    284  
    285255  ! Haze scattering
    286256  DO NW=1,L_NSPECTV
     
    294264     DO L=1,L_NLAYRAD-1
    295265        K              = 2*L+1
    296         atemp(L,NW) = SUM(GVAER(K,NW,1:naerkind) * TAUAEROLK(K,NW,1:naerkind))+SUM(GVAER(K+1,NW,1:naerkind) * TAUAEROLK(K+1,NW,1:naerkind)) &
    297                     + ASF_T(K,NW)*DHAZES_T(K,NW) + ASF_T(K+1,NW)*DHAZES_T(K+1,NW)
    298         btemp(L,NW) = SUM(TAUAEROLK(K,NW,1:naerkind)) + SUM(TAUAEROLK(K+1,NW,1:naerkind)) &
    299                     + DHAZES_T(K,NW) + DHAZES_T(K+1,NW)
     266        atemp(L,NW) = ASF_T(K,NW)*DHAZES_T(K,NW) + ASF_T(K+1,NW)*DHAZES_T(K+1,NW)
     267        btemp(L,NW) = DHAZES_T(K,NW) + DHAZES_T(K+1,NW)
    300268        ctemp(L,NW) = btemp(L,NW) + 0.9999*(TRAY(K,NW) + TRAY(K+1,NW)) ! JVO 2017 : does this 0.999 is really meaningful ?
    301269        btemp(L,NW) = btemp(L,NW) + TRAY(K,NW) + TRAY(K+1,NW)
     
    306274     L           = L_NLAYRAD
    307275     K           = 2*L+1
    308      atemp(L,NW) = SUM(GVAER(K,NW,1:naerkind) * TAUAEROLK(K,NW,1:naerkind)) &
    309                  + ASF_T(K,NW)*DHAZES_T(K,NW)
    310      btemp(L,NW) = SUM(TAUAEROLK(K,NW,1:naerkind)) &
    311                  + DHAZES_T(K,NW)
     276     atemp(L,NW) = ASF_T(K,NW)*DHAZES_T(K,NW)
     277     btemp(L,NW) = DHAZES_T(K,NW)
    312278     ctemp(L,NW) = btemp(L,NW) + 0.9999*TRAY(K,NW) ! JVO 2017 : does this 0.999 is really meaningful ?
    313279     btemp(L,NW) = btemp(L,NW) + TRAY(K,NW)
  • trunk/LMDZ.TITAN/libf/phytitan/physiq_mod.F90

    r1787 r1788  
    1414                  pdu,pdv,pdt,pdq,pdpsrf)
    1515 
    16       use radinc_h, only : L_NSPECTI,L_NSPECTV,naerkind
     16      use radinc_h, only : L_NSPECTI,L_NSPECTV
    1717      use radcommon_h, only: sigma, glat, grav, BWNV
    1818      use surfdat_h, only: phisfi, zmea, zstd, zsig, zgam, zthe
     
    2222      use geometry_mod, only: latitude, longitude, cell_area
    2323      USE comgeomfi_h, only: totarea, totarea_planet
    24       USE tracer_h, only: noms, mmol, radius, qext, &
    25                           alpha_lift, alpha_devil, qextrhor
     24      USE tracer_h, only: noms, mmol
    2625      use time_phylmdz_mod, only: ecritphy, iphysiq, nday
    2726      use phyetat0_mod, only: phyetat0
     
    7473!      V. Tracers
    7574!         V.1. Chemistry
    76 !         V.2. Aerosols and particles.
    7775!         V.3. Updates (pressure variations, surface budget).
    7876!         V.4. Surface Tracer Update.
     
    225223! -----------------
    226224
    227 !     Aerosol (dust or ice) extinction optical depth  at reference wavelength
    228 !     for the "naerkind" optically active aerosols:
    229 
    230       real aerosol(ngrid,nlayer,naerkind) ! Aerosols.
    231225      real zh(ngrid,nlayer)               ! Potential temperature (K).
    232226      real pw(ngrid,nlayer)               ! Vertical velocity (m/s). (NOTE : >0 WHEN DOWNWARDS !!)
     
    274268      real dqsurf(ngrid,nq)                 ! Cumulated tendencies.
    275269      real zdqsdif(ngrid,nq)                ! Turbdiff/vdifc routines.
    276       real zdqssed(ngrid,nq)                ! Callsedim routine.
    277270      real zdqsurfmr(ngrid,nq)              ! Mass_redistribution routine.
    278271                 
     
    281274      real zdqdif(ngrid,nlayer,nq)    ! Turbdiff/vdifc routines.
    282275      real zdqevap(ngrid,nlayer)      ! Turbdiff routine.
    283       real zdqsed(ngrid,nlayer,nq)    ! Callsedim routine.
    284276      real zdqmr(ngrid,nlayer,nq)     ! Mass_redistribution routine.
    285277     
     
    327319      real vmr(ngrid,nlayer)                        ! volume mixing ratio
    328320      real time_phys
    329       real,allocatable,dimension(:),save :: tau_col ! Total Aerosol Optical Depth.
    330 !$OMP THREADPRIVATE(tau_col)
    331321     
    332322      real ISR,ASR,OLR,GND,DYN,GSR,Ts1,Ts2,Ts3,TsS ! for Diagnostic.
    333323     
    334       real qcol(ngrid,nq) ! Tracer Column Mass (kg/m2).
    335 
    336324!     to test energy conservation (RW+JL)
    337325      real mass(ngrid,nlayer),massarea(ngrid,nlayer)
     
    353341      real fluxtop_lw1(ngrid), fluxabs_sw1(ngrid)                            ! For SW/LW flux.
    354342      real albedo_equivalent1(ngrid)                                         ! For Equivalent albedo calculation.
    355       real tau_col1(ngrid)                                                   ! For aerosol optical depth diagnostic.
    356       real OLR_nu1(ngrid,L_NSPECTI), OSR_nu1(ngrid,L_NSPECTV)                ! For Outgoing Radiation diagnostics.
    357343      real tf, ntf   
    358344
    359345      real,allocatable,dimension(:,:),save :: qsurf_hist
    360346!$OMP THREADPRIVATE(qsurf_hist)
    361 
    362       real,allocatable,dimension(:,:,:),save :: reffrad  ! Aerosol effective radius (m). By RW
    363       real,allocatable,dimension(:,:,:),save :: nueffrad ! Aerosol effective radius variance. By RW
    364 !$OMP THREADPRIVATE(reffrad,nueffrad)
    365 
    366       real reffcol(ngrid,naerkind)
    367347
    368348! Local variables for Titan chemistry and microphysics (JVO 2017)
     
    425405        ALLOCATE(zuprevious(ngrid,nlayer))
    426406        ALLOCATE(qsurf_hist(ngrid,nq))
    427         ALLOCATE(reffrad(ngrid,nlayer,naerkind))
    428         ALLOCATE(nueffrad(ngrid,nlayer,naerkind))
    429407        ALLOCATE(fluxsurf_lw(ngrid))
    430408        ALLOCATE(fluxsurf_sw(ngrid))
     
    439417        ALLOCATE(zdtlw(ngrid,nlayer))
    440418        ALLOCATE(zdtsw(ngrid,nlayer))
    441         ALLOCATE(tau_col(ngrid))
    442419        ALLOCATE(dycchi(ngrid,nlayer,nq-nmicro))
    443420        ALLOCATE(qysat(nlayer,nq-nmicro))
     
    455432         dtrad(:,:) = 0.0
    456433         fluxrad(:) = 0.0
    457          tau_col(:) = 0.0
    458434         zdtsw(:,:) = 0.0
    459435         zdtlw(:,:) = 0.0
    460 
    461 
    462 !        Initialize aerosol indexes.
    463 !        ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    464          call iniaerosol()
    465436
    466437     
     
    781752               call callcorrk(ngrid,nlayer,pq,nq,qsurf,                           &
    782753                              albedo,albedo_equivalent,emis,mu0,pplev,pplay,pt,   &
    783                               tsurf,fract,dist_star,aerosol,                      &
     754                              tsurf,fract,dist_star,                              &
    784755                              zdtlw,zdtsw,fluxsurf_lw,fluxsurf_sw,                &
    785756                              fluxsurfabs_sw,fluxtop_lw,                          &
    786757                              fluxabs_sw,fluxtop_dn,OLR_nu,OSR_nu,                &
    787                               tau_col,firstcall,lastcall)
     758                              firstcall,lastcall)
    788759
    789760               ! Radiative flux from the sky absorbed by the surface (W.m-2).
     
    10571028         endif
    10581029     
    1059   ! -------------------------
    1060   !   V.2. Aerosol particles
    1061   ! -------------------------
    1062 
    1063          ! Sedimentation.
    1064          if (sedimentation) then
    1065        
    1066             zdqsed(1:ngrid,1:nlayer,1:nq) = 0.0
    1067             zdqssed(1:ngrid,1:nq)  = 0.0
    1068            
    1069             call callsedim(ngrid,nlayer,ptimestep,           &
    1070                           pplev,zzlev,pt,pdt,pq,pdq,        &
    1071                           zdqsed,zdqssed,nq)
    1072 
    1073             ! Whether it falls as rain or snow depends only on the surface temperature
    1074             pdq(1:ngrid,1:nlayer,1:nq) = pdq(1:ngrid,1:nlayer,1:nq) + zdqsed(1:ngrid,1:nlayer,1:nq)
    1075             dqsurf(1:ngrid,1:nq) = dqsurf(1:ngrid,1:nq) + zdqssed(1:ngrid,1:nq)
    1076 
    1077          end if ! end of 'sedimentation'
    1078 
    1079 
    10801030  ! ---------------
    10811031  !   V.3 Updates
     
    12141164               print*,'fluxtop_dn has gone crazy'
    12151165               print*,'fluxtop_dn=',fluxtop_dn(ig)
    1216                print*,'tau_col=',tau_col(ig)
    1217                print*,'aerosol=',aerosol(ig,:,:)
    12181166               print*,'temp=   ',pt(ig,:)
    12191167               print*,'pplay=  ',pplay(ig,:)
     
    12681216         call abort
    12691217      endif
    1270 
    1271 
    1272       ! Compute column amounts (kg m-2) if tracers are enabled.
    1273       if(tracer)then
    1274          qcol(1:ngrid,1:nq)=0.0
    1275          do iq=1,nq
    1276             do ig=1,ngrid
    1277                qcol(ig,iq) = SUM( zq(ig,1:nlayer,iq) * mass(ig,1:nlayer))
    1278             enddo
    1279          enddo
    1280 
    1281          ! Generalised for arbitrary aerosols now. By LK
    1282          reffcol(1:ngrid,1:naerkind)=0.0
    1283 
    1284       endif ! end of 'tracer'
    12851218
    12861219
     
    13591292               call wstats(ngrid,trim(noms(iq))//'_surf',trim(noms(iq))//'_surf',  &
    13601293                           'kg m^-2',2,qsurf(1,iq) )
    1361                call wstats(ngrid,trim(noms(iq))//'_col',trim(noms(iq))//'_col',    &
    1362                           'kg m^-2',2,qcol(1,iq) )
    13631294                         
    13641295!              call wstats(ngrid,trim(noms(iq))//'_reff',                          &
     
    14721403            call writediagfi(ngrid,trim(noms(iq))//'_surf',trim(noms(iq))//'_surf',  &
    14731404                             'kg m^-2',2,qsurf_hist(1,iq) )
    1474             call writediagfi(ngrid,trim(noms(iq))//'_col',trim(noms(iq))//'_col',    &
    1475                             'kg m^-2',2,qcol(1,iq) )
    14761405                         
    14771406!          call writediagfi(ngrid,trim(noms(iq))//'_surf',trim(noms(iq))//'_surf',  &
    14781407!                          'kg m^-2',2,qsurf(1,iq) )                         
    1479 
    1480             do ig=1,ngrid
    1481                if(tau_col(ig).gt.1.e3)then
    1482                   print*,'WARNING: tau_col=',tau_col(ig)
    1483                   print*,'at ig=',ig,'in PHYSIQ'
    1484                endif         
    1485             end do
    1486 
    1487             call writediagfi(ngrid,"tau_col","Total aerosol optical depth","[]",2,tau_col)
    14881408
    14891409         enddo ! end of 'nq' loop
  • trunk/LMDZ.TITAN/libf/phytitan/radcommon_h.F90

    r1722 r1788  
    11module radcommon_h
    2       use radinc_h, only: L_NSPECTI, L_NSPECTV, L_NGAUSS, NTstar, NTstop, &
    3                           naerkind, nsizemax
     2      use radinc_h, only: L_NSPECTI, L_NSPECTV, L_NGAUSS, NTstar, NTstop
    43      implicit none
    54
     
    4140!                  each temperature, pressure, and spectral interval
    4241!
    43 !     AEROSOL RADIATIVE OPTICAL CONSTANTS
    44 !
    45 !   Shortwave
    46 !   ~~~~~~~~~
    47 !
    48 ! For the "naerkind" kind of aerosol radiative properties :
    49 ! QVISsQREF  :  Qext / Qext("longrefvis")
    50 ! omegavis   :  single scattering albedo
    51 ! gvis       :  assymetry factor
    52 !
    53 !   Longwave
    54 !   ~~~~~~~~
    55 !
    56 ! For the "naerkind" kind of aerosol radiative properties :
    57 ! QIRsQREF :  Qext / Qext("longrefvis")
    58 ! omegaIR  :  mean single scattering albedo
    59 ! gIR      :  mean assymetry factor
    6042
    6143      REAL*8 BWNI(L_NSPECTI+1), WNOI(L_NSPECTI), DWNI(L_NSPECTI), WAVEI(L_NSPECTI) !BWNI read by master in setspi
     
    6547        !$OMP WNOV,DWNV,WAVEV,&
    6648        !$OMP STELLARF,TAURAY)
    67 
    68       REAL*8 blami(L_NSPECTI+1)
    69       REAL*8 blamv(L_NSPECTV+1) ! these are needed by suaer.F90
    70 !$OMP THREADPRIVATE(blami,blamv)
    7149
    7250      !! AS: introduced to avoid doing same computations again for continuum
     
    8563        !$OMP FZEROI,FZEROV)     !pgasmin,pgasmax,tgasmin,tgasmax read by master in sugas_corrk
    8664
    87       real QVISsQREF(L_NSPECTV,naerkind,nsizemax)
    88       real omegavis(L_NSPECTV,naerkind,nsizemax)
    89       real gvis(L_NSPECTV,naerkind,nsizemax)
    90       real QIRsQREF(L_NSPECTI,naerkind,nsizemax)
    91       real omegair(L_NSPECTI,naerkind,nsizemax)
    92       real gir(L_NSPECTI,naerkind,nsizemax)
    93 !$OMP THREADPRIVATE(QVISsQREF,omegavis,gvis,QIRsQREF,omegair,gir)
    94 
    95 
    96 ! Reference wavelengths used to compute reference optical depth (m)
    97 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    98 
    99       REAL lamrefir(naerkind),lamrefvis(naerkind)
    100 
    101 ! Actual number of grain size classes in each domain for a
    102 !   given aerosol:
    103 
    104       INTEGER          :: nsize(naerkind,2)
    105 
    106 ! Particle size axis (depend on the kind of aerosol and the
    107 !   radiation domain)
    108 
    109       DOUBLE PRECISION :: radiustab(naerkind,2,nsizemax)
    110 !$OMP THREADPRIVATE(lamrefir,lamrefvis,radiustab) !nsize read by suaer_corrk
    111 
    112 ! Extinction coefficient at reference wavelengths;
    113 !   These wavelengths are defined in aeroptproperties, and called
    114 !   longrefvis and longrefir.
    115 
    116       REAL :: QREFvis(naerkind,nsizemax)
    117       REAL :: QREFir(naerkind,nsizemax)
    118       REAL :: omegaREFvis(naerkind,nsizemax)
    119       REAL :: omegaREFir(naerkind,nsizemax)
    12065
    12166      REAL,SAVE :: tstellar ! Stellar brightness temperature (SW)
  • trunk/LMDZ.TITAN/libf/phytitan/radinc_h.F90

    r1529 r1788  
    4949!               the k-coefficients. Variable component of the mixture
    5050!               can in princple be anything: currently it's H2O.
    51 !
    52 !     NAERKIND  The number of radiatively active aerosol types
    53 !
    54 !     NSIZEMAX  The maximum number of aerosol particle sizes
    55 !
    5651!----------------------------------------------------------------------
    5752
     
    7065      integer, parameter :: L_NSPECTV = NBvisible
    7166
    72 !      integer, parameter :: NAERKIND  = 2 ! set in scatterers.h
    7367      real,    parameter :: L_TAUMAX  = 35
    7468
     
    8478      !integer, parameter :: NTstop = 50000
    8579      !real*8,parameter :: NTfac = 1.0D+2   
    86 
    87       ! Maximum number of grain size classes for aerosol convolution:
    88       ! This must correspond to size of largest dataset used for aerosol
    89       ! optical properties in datagcm folder.
    90       integer, parameter :: nsizemax = 60
    9180
    9281      character(len=100),save :: corrkdir
  • trunk/LMDZ.TITAN/libf/phytitan/setspi.F90

    r1397 r1788  
    2323
    2424      use radinc_h,    only: L_NSPECTI,corrkdir,banddir,NTstar,NTstop,NTfac
    25       use radcommon_h, only: BWNI,BLAMI,WNOI,DWNI,WAVEI,planckir,sigma
     25      use radcommon_h, only: BWNI,WNOI,DWNI,WAVEI,planckir,sigma
    2626      use datafile_mod, only: datadir
    2727      use comcstfi_mod, only: pi
     
    136136         DWNI(M)  = BWNI(M+1)-BWNI(M)
    137137         WAVEI(M) = 1.0D+4/WNOI(M)
    138          BLAMI(M) = 0.01D0/BWNI(M)         
    139       end do
    140       BLAMI(M) = 0.01D0/BWNI(M)
     138      end do
    141139!     note M=L_NSPECTI+1 after loop due to Fortran bizarreness
    142140
  • trunk/LMDZ.TITAN/libf/phytitan/setspv.F90

    r1397 r1788  
    2424
    2525      use radinc_h,    only: L_NSPECTV, corrkdir, banddir
    26       use radcommon_h, only: BWNV,BLAMV,WNOV,DWNV,WAVEV, &
     26      use radcommon_h, only: BWNV,WNOV,DWNV,WAVEV, &
    2727                             STELLARF,TAURAY
    2828      use datafile_mod, only: datadir
     
    113113         DWNV(M)  = BWNV(M+1)-BWNV(M)
    114114         WAVEV(M) = 1.0E+4/WNOV(M)
    115          BLAMV(M) = 0.01/BWNV(M)
    116115      end do
    117       BLAMV(M) = 0.01/BWNV(M) ! wavelength in METERS for aerosol stuff
    118116!     note M=L_NSPECTV+1 after loop due to Fortran bizarreness
    119117
  • trunk/LMDZ.TITAN/libf/phytitan/tracer_h.F90

    r1672 r1788  
    1010       character*20, DIMENSION(:), ALLOCATABLE :: noms   ! name of the tracer
    1111       real, DIMENSION(:), ALLOCATABLE :: mmol     ! mole mass of tracer (g/mol-1)
    12        real, DIMENSION(:), ALLOCATABLE :: radius   ! dust and ice particle radius (m)
    1312       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
    1813
    19 !$OMP THREADPRIVATE(noms,mmol,radius,rho_q,qext,alpha_lift,alpha_devil,qextrhor)
     14!$OMP THREADPRIVATE(noms,mmol,rho_q)
    2015
    2116! tracer indexes: these are initialized in initracer and should be 0 if the
Note: See TracChangeset for help on using the changeset viewer.