Changes in / [df96ea65:2753a5c] in flexpart.git


Ignore:
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • options/COMMAND

    r6d73c4b r6d73c4b  
    1616 ITSPLIT=        99999999, ! Interval of particle splitting (s)
    1717 LSYNCTIME=           900, ! All processes are synchronized to this time interval (s)
    18  CTL=          -5.0000000, ! Times step smaller than Lagr. time scale, LSYNCTIME if CTL<0, but can be shorter 
     18 CTL=          -5.0000000, ! CTL>1, ABL time step = (Lagrangian timescale (TL))/CTL, uses LSYNCTIME if CTL<0
    1919 IFINE=                 4, ! Reduction for time step in vertical transport, used only if CTL>1
    2020 IOUT=                  1, ! Output type: [1]mass 2]pptv 3]1&2 4]plume 5]1&4, +8 for NetCDF output     
    2121 IPOUT=                 0, ! Particle position output: 0]no 1]every output 2]only at end   
    2222 LSUBGRID=              0, ! Increase of ABL heights due to sub-grid scale orographic variations;[0]off 1]on
    23  LCONVECTION=           0, ! Switch for convection parameterization;[0]off 1]on   
     23 LCONVECTION=           1, ! Switch for convection parameterization;0]off [1]on   
    2424 LAGESPECTRA=           0, ! Switch for calculation of age spectra (needs AGECLASSES);[0]off 1]on 
    25  IPIN=                  0, ! Warm start from particle dump (needs previous partposit_end file); 0]no [1]yes 
     25 IPIN=                  0, ! Warm start from particle dump (needs previous partposit_end file); [0]no 1]yes 
    2626 IOUTPUTFOREACHRELEASE= 1, ! Separate output fields for each location in the RELEASE file; [0]no 1]yes
    2727 IFLUX=                 0, ! Output of mass fluxes through output grid box boundaries
    2828 MDOMAINFILL=           0, ! Switch for domain-filling, if limited-area particles generated at boundary
    29  IND_SOURCE=            1, ! Unit to be used at the ource   ;  [1]mass 2]mass mixing ratio
    30  IND_RECEPTOR=          1, ! Unit to be used at the receptor;  [1]mass 2]mass mixing ratio
     29 IND_SOURCE=            1, ! Unit to be used at the source   ;  [1]mass 2]mass mixing ratio
     30 IND_RECEPTOR=          1, ! Unit to be used at the receptor; [1]mass 2]mass mixing ratio 3]wet depo. 4]dry depo.
    3131 MQUASILAG=             0, ! Quasi-Lagrangian mode to track individual numbered particles
    3232 NESTED_OUTPUT=         0, ! Output also for a nested domain
    33  LINIT_COND=            0, ! Output sensitivity to initial conditions (backwards mode only)
     33 LINIT_COND=            0, ! Output sensitivity to initial conditions (bkw mode only) [0]off 1]conc 2]mmr
    3434 SURF_ONLY=             0, ! Output only for the lowest model layer, used w/ LINIT_COND=1 or 2
    3535 CBLFLAG=               0, ! Skewed, not Gaussian turbulence in the convective ABL, need large CTL and IFINE
  • options/RELEASES

    r6d73c4b r6d73c4b  
    1 *************************************************************************
    2 *                                                                       *
    3 *                                                                       *
    4 *                                                                       *
    5 *   Input file for the Lagrangian particle dispersion model FLEXPART    *
    6 *                        Please select your options                     *
    7 *                                                                       *
    8 *                                                                       *
    9 *                                                                       *
    10 *************************************************************************
     1***************************************************************************************************************
     2*                                                                                                             *
     3*                                                                                                             *
     4*                                                                                                             *
     5*   Input file for the Lagrangian particle dispersion model FLEXPART                                          *
     6*                        Please select your options                                                           *
     7*                                                                                                             *
     8*                                                                                                             *
     9*                                                                                                             *
     10***************************************************************************************************************
    1111&RELEASES_CTRL
    12  NSPEC      =           1,
    13  SPECNUM_REL=          24,
     12 NSPEC      =           1, ! Total number of species
     13 SPECNUM_REL=          24, ! Species numbers in directory SPECIES
    1414 /
    15 &RELEASE
    16  IDATE1  =       20120101,
    17  ITIME1  =         090000,
    18  IDATE2  =       20120101,
    19  ITIME2  =         090000,
    20  LON1    =          0.000,
    21  LON2    =          0.000,
    22  LAT1    =         20.000,
    23  LAT2    =         20.000,
    24  Z1      =         50.000,
    25  Z2      =         50.000,
    26  ZKIND   =              1,
    27  MASS    =       1.0000E8,
    28  PARTS   =          10000,
    29  COMMENT =    "RELEASE 1",
     15&RELEASE                   ! For each release
     16 IDATE1  =       20120101, ! Release start date, YYYYMMDD: YYYY=year, MM=month, DD=day
     17 ITIME1  =         090000, ! Release start time in UTC HHMISS: HH hours, MI=minutes, SS=seconds
     18 IDATE2  =       20120101, ! Release end date, same as IDATE1
     19 ITIME2  =         090000, ! Release end time, same as ITIME1
     20 LON1    =          0.000, ! Left longitude of release box -180 < LON1 <180
     21 LON2    =          0.000, ! Right longitude of release box, same as LON1
     22 LAT1    =         20.000, ! Lower latitude of release box, -90 < LAT1 < 90
     23 LAT2    =         20.000, ! Upper latitude of release box same format as LAT1
     24 Z1      =         50.000, ! Lower height of release box meters/hPa above reference level
     25 Z2      =         50.000, ! Upper height of release box meters/hPa above reference level
     26 ZKIND   =              1, ! Reference level 1=above ground, 2=above sea level, 3 for pressure in hPa
     27 MASS    =       1.0000E8, ! Total mass emitted, only relevant for fwd simulations
     28 PARTS   =          10000, ! Total number of particles to be released
     29 COMMENT =    "RELEASE 1", ! Comment, written in the outputfile
    3030 /
  • options/SPECIES/SPECIES_008

    r8594fb8 r79996be9  
    1919 POHDCONST=-9.9,              ! OH Reaction rate - D [K]
    2020 POHNCONST=2.0,               !  OH Reaction rate -  N (no unit)
    21  PAREA_HOUR=0.578, 0.491, 0.428, 0.329, 0.384, 0.485, 0.763, 1.103, 1.084, 1.047, 1.096, 1.196, 1.298, 1.357, 1.447, 1.565, 1.636, 1.662, 1.401, 1.168, 1.031, 0.926, 0.816, 0.709
    22  PAREA_DOW=1.060, 1.060, 1.060, 1.060, 1.060, 0.900, 0.000
     21 PAREA_HOUR=0.578, 0.491, 0.428, 0.329, 0.384, 0.485, 0.763, 1.103, 1.084, 1.047, 1.096, 1.196, 1.298, 1.357, 1.447, 1.565, 1.636, 1.662, 1.401, 1.168, 1.031, 0.926, 0.816, 0.709,
     22 PPOINT_HOUR=0.845, 0.806, 0.786, 0.779, 0.793, 0.832, 0.895, 0.977, 1.031, 1.071, 1.105, 1.118, 1.131, 1.136, 1.143, 1.141, 1.133, 1.118, 1.097, 1.091, 1.079, 1.036, 0.966, 0.892,
     23 PAREA_DOW=1.060, 1.060, 1.060, 1.060, 1.060, 0.900, 0.000,
     24 PPOINT_DOW=1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000,
    2325 /
  • src/FLEXPART.f90

    r50958b8 r50958b8  
    455455  call timemanager(metdata_format)
    456456
     457  if (verbosity.gt.0) then
    457458! NIK 16.02.2005
    458   do i=1,nspec
    459     write(*,*) '**********************************************'
    460     write(*,*) 'Scavenging statistics for species ', species(i), ':'
    461     write(*,*) 'Total number of occurences of below-cloud scavenging', &
    462          & tot_blc_count(i)
    463     write(*,*) 'Total number of occurences of in-cloud    scavenging', &
    464          & tot_inc_count(i)
    465     write(*,*) '**********************************************'
    466   end do
     459    do i=1,nspec
     460      if (tot_inc_count(i).gt.0) then
     461         write(*,*) '**********************************************'
     462         write(*,*) 'Scavenging statistics for species ', species(i), ':'
     463         write(*,*) 'Total number of occurences of below-cloud scavenging', &
     464           & tot_blc_count(i)
     465         write(*,*) 'Total number of occurences of in-cloud    scavenging', &
     466           & tot_inc_count(i)
     467         write(*,*) '**********************************************'
     468      endif
     469    end do
     470    write (*,*) 'timemanager> call wetdepo'
     471  endif
    467472 
    468473  write(*,*) 'CONGRATULATIONS: YOU HAVE SUCCESSFULLY COMPLETED A FLE&
  • src/com_mod.f90

    rc2bd55e re9e0f06  
    174174  real :: ri(5,numclass),rac(5,numclass),rcl(maxspec,5,numclass)
    175175  real :: rgs(maxspec,5,numclass),rlu(maxspec,5,numclass)
    176   real :: rm(maxspec),dryvel(maxspec),kao(maxspec)
     176  real :: rm(maxspec),dryvel(maxspec)
    177177  real :: ohcconst(maxspec),ohdconst(maxspec),ohnconst(maxspec)
    178   ! se  it is possible to associate a species with a second one to make transfer from gas to aerosol
    179   integer :: spec_ass(maxspec)
    180178
    181179  real :: area_hour(maxspec,24),point_hour(maxspec,24)
  • src/get_wetscav.f90

    r79e0349 re9e0f06  
    151151      if (height(il).gt.ztra1(jpart)) then
    152152        hz=il-1
    153 !        goto 26
    154153        exit
    155154      endif
    156155    end do
    157 !26  continue
    158 
    159156
    160157    if (ngrid.eq.0) then
     
    203200
    204201
    205 !ZHG oct 2014 : Calculated for 1) both 2) lsp 3) convp
     202!ZHG oct 2014 : Calculated for 1) both 2) lsp 3) convp - 2 and 3 not used removed by SE
    206203! Tentatively differentiate the grfraction for lsp and convp for treating differently the two forms
    207204! for now they are treated the same
    208205    grfraction(1)=max(0.05,cc*(lsp*lfr(i)+convp*cfr(j))/(lsp+convp))
    209     grfraction(2)=max(0.05,cc*(lfr(i)))
    210     grfraction(3)=max(0.05,cc*(cfr(j)))
    211 
    212206
    213207! 2) Computation of precipitation rate in sub-grid cell
    214208!******************************************************
    215209    prec(1)=(lsp+convp)/grfraction(1)
    216     prec(2)=(lsp)/grfraction(2)
    217     prec(3)=(convp)/grfraction(3)
    218 
    219210
    220211! 3) Computation of scavenging coefficients for all species
    221212!    Computation of wet deposition
    222213!**********************************************************
    223 
    224214
    225215      if (ngrid.gt.0) then
     
    237227!******************************************************************
    238228        if ((dquer(ks).le.0.).and.(weta_gas(ks).gt.0..or.wetb_gas(ks).gt.0.)) then
    239           !        if (weta(ks).gt.0. .or. wetb(ks).gt.0.) then
    240229          blc_count(ks)=blc_count(ks)+1
    241230          wetscav=weta_gas(ks)*prec(1)**wetb_gas(ks)
     
    271260          endif
    272261         
    273 !             write(*,*) 'bl-cloud, act_temp=',act_temp, ',prec=',prec(1),',wetscav=', wetscav, ', jpart=',jpart
    274 
    275262        endif ! gas or particle
    276263!      endif ! positive below-cloud scavenging parameters given in Species file
     
    285272        if ((ccn_aero(ks).gt.0. .or. in_aero(ks).gt.0.).or.(henry(ks).gt.0.and.dquer(ks).le.0)) then
    286273          inc_count(ks)=inc_count(ks)+1
    287 !          write(*,*) 'Incloud: ',inc_count
    288274! if negative coefficients (turned off) set to zero for use in equation
    289275          if (ccn_aero(ks).lt.0.) ccn_aero(ks)=0.
     
    300286! sec test
    301287!           cl=1E6*1E-7*prec(1)**0.3 !Sec GFS new
    302             cl=1E6*2E-7*prec(1)**0.36 !Sec ECMWF new
     288            cl=1E6*2E-7*prec(1)**0.36 !Sec ECMWF new, is also suitable for GFS
    303289!           cl=2E-7*prec(1)**0.36 !Andreas
    304290!           cl=1.6E-6*prec(1)**0.36 !Henrik
     
    322308          if (dquer(ks).gt.0.) then
    323309            S_i= frac_act/cl
    324 !           write(*,*) 'Si: ',S_i
    325 
    326310! GAS
    327311!****
    328312          else
    329 
    330313            cle=(1-cl)/(henry(ks)*(r_air/3500.)*act_temp)+cl
    331 !REPLACE to switch old/ new scheme
    332           ! S_i=frac_act/cle
    333314            S_i=1/cle
    334315          endif ! gas or particle
    335316
    336317! scavenging coefficient based on Hertel et al 1995 - using the S_i for either gas or aerosol
    337 !OLD
    338           if ((readclouds.and.ngrid.eq.0).or.(readclouds_this_nest.and.ngrid.gt.0)) then
     318!SEC wetscav fix, the cloud height is no longer needed, it gives wrong results
    339319            wetscav=incloud_ratio*S_i*(prec(1)/3.6E6)
    340           else
    341 !SEC wetscav fix
    342              wetscav=incloud_ratio*S_i*(prec(1)/3.6E6)
    343 !            wetscav=incloud_ratio*S_i*(prec(1)/3.6E6)/clouds_h
    344           endif
    345320        endif ! positive in-cloud scavenging parameters given in Species file
    346321      endif !incloud
  • src/netcdf_output_mod.f90

    rae43937 r4ad96c5  
    6767                       ccn_aero,in_aero, & ! wetc_in,wetd_in, &
    6868                       reldiff,henry,f0,density,dquer,dsigma,dryvel,&
    69 !                       weightmolar,ohreact,spec_ass,kao,vsetaver,&
    70                        weightmolar,ohcconst,ohdconst,spec_ass,kao,vsetaver,&
     69                       weightmolar,ohcconst,ohdconst,vsetaver,&
    7170                       ! for concoutput_netcdf and concoutput_nest_netcdf
    7271                       nxmin1,nymin1,nz,oro,oron,rho,rhon,&
     
    114113  logical, parameter :: write_area = .false.
    115114
     115  ! coordinate transformation from internal to world coord
     116  real :: xp1,yp1,xp2,yp2
    116117contains
    117118
     
    512513        call nf90_err(nf90_put_att(ncid, sID, 'ohcconst', ohcconst(i)))
    513514        call nf90_err(nf90_put_att(ncid, sID, 'ohdconst', ohdconst(i)))
    514         call nf90_err(nf90_put_att(ncid, sID, 'kao', kao(i)))
    515515        call nf90_err(nf90_put_att(ncid, sID, 'vsetaver', vsetaver(i)))
    516         call nf90_err(nf90_put_att(ncid, sID, 'spec_ass', spec_ass(i)))
    517516
    518517        if (lnest) then
     
    535534        call nf90_err(nf90_put_att(ncid, sID, 'ohcconst', ohcconst(i)))
    536535        call nf90_err(nf90_put_att(ncid, sID, 'ohdconst', ohdconst(i)))
    537         call nf90_err(nf90_put_att(ncid, sID, 'kao', kao(i)))
    538536        call nf90_err(nf90_put_att(ncid, sID, 'vsetaver', vsetaver(i)))
    539         call nf90_err(nf90_put_att(ncid, sID, 'spec_ass', spec_ass(i)))
    540537
    541538        if (lnest) then
     
    673670       call nf90_err(nf90_put_var(ncid, relendID, ireleaseend(i), (/i/)))
    674671       call nf90_err(nf90_put_var(ncid, relkindzID, kindz(i), (/i/)))
    675        call nf90_err(nf90_put_var(ncid, rellng1ID, xpoint1(i), (/i/)))
    676        call nf90_err(nf90_put_var(ncid, rellng2ID, xpoint2(i), (/i/)))
    677        call nf90_err(nf90_put_var(ncid, rellat1ID, ypoint1(i), (/i/)))
    678        call nf90_err(nf90_put_var(ncid, rellat2ID, ypoint2(i), (/i/)))
     672       xp1=xpoint1(i)*dx+xlon0
     673       yp1=ypoint1(i)*dy+ylat0
     674       xp2=xpoint2(i)*dx+xlon0
     675       yp2=ypoint2(i)*dy+ylat0
     676       call nf90_err(nf90_put_var(ncid, rellng1ID, xp1, (/i/)))
     677       call nf90_err(nf90_put_var(ncid, rellng2ID, xp2, (/i/)))
     678       call nf90_err(nf90_put_var(ncid, rellat1ID, yp1, (/i/)))
     679       call nf90_err(nf90_put_var(ncid, rellat2ID, yp2, (/i/)))
    679680       call nf90_err(nf90_put_var(ncid, relzz1ID, zpoint1(i), (/i/)))
    680681       call nf90_err(nf90_put_var(ncid, relzz2ID, zpoint2(i), (/i/)))
  • src/readspecies.f90

    raa8c34a rd6a245b  
    6767  character(len=16) :: pspecies
    6868  real :: pdecay, pweta_gas, pwetb_gas, preldiff, phenry, pf0, pdensity, pdquer
    69   real :: pdsigma, pdryvel, pweightmolar, pohcconst, pohdconst, pohnconst, pkao
     69  real :: pdsigma, pdryvel, pweightmolar, pohcconst, pohdconst, pohnconst
    7070  real :: pcrain_aero, pcsnow_aero, pccn_aero, pin_aero
    71   integer :: readerror, pspec_ass
     71  real :: parea_dow(7), parea_hour(24), ppoint_dow(7), ppoint_hour(24)
     72  integer :: readerror
    7273
    7374! declare namelist
     
    7677       pcrain_aero, pcsnow_aero, pccn_aero, pin_aero, &
    7778       preldiff, phenry, pf0, pdensity, pdquer, &
    78        pdsigma, pdryvel, pweightmolar, pohcconst, pohdconst, pohnconst, pspec_ass, pkao
     79       pdsigma, pdryvel, pweightmolar, pohcconst, pohdconst, pohnconst, &
     80       parea_dow, parea_hour, ppoint_dow, ppoint_hour
    7981
    8082  pspecies="" ! read failure indicator value
     
    9698  pohdconst=-9.9E-09
    9799  pohnconst=2.0
    98   pspec_ass=-9
    99   pkao=-99.99
    100100  pweightmolar=-999.9
    101101
     102  do j=1,24           ! initialize everything to no variation
     103    area_hour(pos_spec,j)=1.
     104    point_hour(pos_spec,j)=1.
     105  end do
     106  do j=1,7
     107    area_dow(pos_spec,j)=1.
     108    point_dow(pos_spec,j)=1.
     109  end do
     110
     111  if (readerror.ne.0) then ! text format input
    102112! Open the SPECIES file and read species names and properties
    103113!************************************************************
     
    164174    read(unitspecies,'(f8.2)',end=22) ohnconst(pos_spec)
    165175!  write(*,*) ohnconst(pos_spec)
    166     read(unitspecies,'(i18)',end=22) spec_ass(pos_spec)
    167 !  write(*,*) spec_ass(pos_spec)
    168     read(unitspecies,'(f18.2)',end=22) kao(pos_spec)
    169 !       write(*,*) kao(pos_spec)
     176
     177! Read in daily and day-of-week variation of emissions, if available
     178!*******************************************************************
     179
     180    read(unitspecies,*,end=22)
     181    do j=1,24     ! 24 hours, starting with 0-1 local time
     182      read(unitspecies,*) ihour,area_hour(pos_spec,j),point_hour(pos_spec,j)
     183    end do
     184    read(unitspecies,*)
     185    do j=1,7      ! 7 days of the week, starting with Monday
     186      read(unitspecies,*) idow,area_dow(pos_spec,j),point_dow(pos_spec,j)
     187    end do
    170188
    171189    pspecies=species(pos_spec)
     
    188206    pohdconst=ohdconst(pos_spec)
    189207    pohnconst=ohnconst(pos_spec)
    190     pspec_ass=spec_ass(pos_spec)
    191     pkao=kao(pos_spec)
    192 
    193   else
     208
     209
     210    do j=1,24     ! 24 hours, starting with 0-1 local time
     211      parea_hour(j)=area_hour(pos_spec,j)
     212      ppoint_hour(j)=point_hour(pos_spec,j)
     213    end do
     214    do j=1,7      ! 7 days of the week, starting with Monday
     215      parea_dow(j)=area_dow(pos_spec,j)
     216      ppoint_dow(j)=point_dow(pos_spec,j)
     217    end do
     218
     219  else ! namelist available
    194220
    195221    species(pos_spec)=pspecies
     
    212238    ohdconst(pos_spec)=pohdconst
    213239    ohnconst(pos_spec)=pohnconst
    214     spec_ass(pos_spec)=pspec_ass
    215     kao(pos_spec)=pkao
     240
     241    do j=1,24     ! 24 hours, starting with 0-1 local time
     242      area_hour(pos_spec,j)=parea_hour(j)
     243      point_hour(pos_spec,j)=ppoint_hour(j)
     244    end do
     245    do j=1,7      ! 7 days of the week, starting with Monday
     246      area_dow(pos_spec,j)=parea_dow(j)
     247      point_dow(pos_spec,j)=ppoint_dow(j)
     248    end do
    216249
    217250  endif
     
    303336  end if
    304337
    305   if (spec_ass(pos_spec).gt.0) then
    306     spec_found=.FALSE.
    307     do j=1,pos_spec-1
    308       if (spec_ass(pos_spec).eq.specnum(j)) then
    309         spec_ass(pos_spec)=j
    310         spec_found=.TRUE.
    311         ASSSPEC=.TRUE.
    312       endif
    313     end do
    314     if (spec_found.eqv..false.) then
    315       goto 997
    316     endif
    317   endif
    318 
    319   if (dsigma(i).eq.1.) dsigma(i)=1.0001   ! avoid floating exception
    320338  if (dsigma(i).eq.0.) dsigma(i)=1.0001   ! avoid floating exception
    321339
     
    330348
    331349
    332 ! Read in daily and day-of-week variation of emissions, if available
    333 !*******************************************************************
    334 ! HSO: This is not yet implemented as namelist parameters
    335 
    336   do j=1,24           ! initialize everything to no variation
    337     area_hour(i,j)=1.
    338     point_hour(i,j)=1.
    339   end do
    340   do j=1,7
    341     area_dow(i,j)=1.
    342     point_dow(i,j)=1.
    343   end do
    344 
    345   if (readerror.ne.0) then ! text format input
    346 
    347     read(unitspecies,*,end=22)
    348     do j=1,24     ! 24 hours, starting with 0-1 local time
    349       read(unitspecies,*) ihour,area_hour(i,j),point_hour(i,j)
    350     end do
    351     read(unitspecies,*)
    352     do j=1,7      ! 7 days of the week, starting with Monday
    353       read(unitspecies,*) idow,area_dow(i,j),point_dow(i,j)
    354     end do
    355 
    356350  endif
    357351
  • src/timemanager.f90

    ra9cf4b1 rc7d1052  
    449449
    450450        !write(*,46) float(itime)/3600,itime,numpart
    451 45      format(i13,' SECONDS SIMULATED: ',i13, ' PARTICLES:    Uncertainty: ',3f7.3)
     45145      format(i13,' Seconds simulated: ',i13, ' Particles:    Uncertainty: ',3f7.3)
    45245246      format(' Simulated ',f7.1,' hours (',i13,' s), ',i13, ' particles')
    453453        if (ipout.ge.1) call partoutput(itime)    ! dump particle positions
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG