Changes in / [2753a5c:df96ea65] 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, ! CTL>1, ABL time step = (Lagrangian timescale (TL))/CTL, uses LSYNCTIME if CTL<0
     18 CTL=          -5.0000000, ! Times step smaller than Lagr. time scale, LSYNCTIME if CTL<0, but can be shorter 
    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=           1, ! Switch for convection parameterization;0]off [1]on   
     23 LCONVECTION=           0, ! 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 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.
     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
    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 (bkw mode only) [0]off 1]conc 2]mmr
     33 LINIT_COND=            0, ! Output sensitivity to initial conditions (backwards mode only)
    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, ! Total number of species
    13  SPECNUM_REL=          24, ! Species numbers in directory SPECIES
     12 NSPEC      =           1,
     13 SPECNUM_REL=          24,
    1414 /
    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
     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",
    3030 /
  • options/SPECIES/SPECIES_008

    r79996be9 r8594fb8  
    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  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,
     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
    2523 /
  • src/FLEXPART.f90

    r50958b8 r50958b8  
    455455  call timemanager(metdata_format)
    456456
    457   if (verbosity.gt.0) then
    458457! NIK 16.02.2005
    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
     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
    472467 
    473468  write(*,*) 'CONGRATULATIONS: YOU HAVE SUCCESSFULLY COMPLETED A FLE&
  • src/com_mod.f90

    re9e0f06 rc2bd55e  
    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)
     176  real :: rm(maxspec),dryvel(maxspec),kao(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)
    178180
    179181  real :: area_hour(maxspec,24),point_hour(maxspec,24)
  • src/get_wetscav.f90

    re9e0f06 r79e0349  
    151151      if (height(il).gt.ztra1(jpart)) then
    152152        hz=il-1
     153!        goto 26
    153154        exit
    154155      endif
    155156    end do
     157!26  continue
     158
    156159
    157160    if (ngrid.eq.0) then
     
    200203
    201204
    202 !ZHG oct 2014 : Calculated for 1) both 2) lsp 3) convp - 2 and 3 not used removed by SE
     205!ZHG oct 2014 : Calculated for 1) both 2) lsp 3) convp
    203206! Tentatively differentiate the grfraction for lsp and convp for treating differently the two forms
    204207! for now they are treated the same
    205208    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
    206212
    207213! 2) Computation of precipitation rate in sub-grid cell
    208214!******************************************************
    209215    prec(1)=(lsp+convp)/grfraction(1)
     216    prec(2)=(lsp)/grfraction(2)
     217    prec(3)=(convp)/grfraction(3)
     218
    210219
    211220! 3) Computation of scavenging coefficients for all species
    212221!    Computation of wet deposition
    213222!**********************************************************
     223
    214224
    215225      if (ngrid.gt.0) then
     
    227237!******************************************************************
    228238        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
    229240          blc_count(ks)=blc_count(ks)+1
    230241          wetscav=weta_gas(ks)*prec(1)**wetb_gas(ks)
     
    260271          endif
    261272         
     273!             write(*,*) 'bl-cloud, act_temp=',act_temp, ',prec=',prec(1),',wetscav=', wetscav, ', jpart=',jpart
     274
    262275        endif ! gas or particle
    263276!      endif ! positive below-cloud scavenging parameters given in Species file
     
    272285        if ((ccn_aero(ks).gt.0. .or. in_aero(ks).gt.0.).or.(henry(ks).gt.0.and.dquer(ks).le.0)) then
    273286          inc_count(ks)=inc_count(ks)+1
     287!          write(*,*) 'Incloud: ',inc_count
    274288! if negative coefficients (turned off) set to zero for use in equation
    275289          if (ccn_aero(ks).lt.0.) ccn_aero(ks)=0.
     
    286300! sec test
    287301!           cl=1E6*1E-7*prec(1)**0.3 !Sec GFS new
    288             cl=1E6*2E-7*prec(1)**0.36 !Sec ECMWF new, is also suitable for GFS
     302            cl=1E6*2E-7*prec(1)**0.36 !Sec ECMWF new
    289303!           cl=2E-7*prec(1)**0.36 !Andreas
    290304!           cl=1.6E-6*prec(1)**0.36 !Henrik
     
    308322          if (dquer(ks).gt.0.) then
    309323            S_i= frac_act/cl
     324!           write(*,*) 'Si: ',S_i
     325
    310326! GAS
    311327!****
    312328          else
     329
    313330            cle=(1-cl)/(henry(ks)*(r_air/3500.)*act_temp)+cl
     331!REPLACE to switch old/ new scheme
     332          ! S_i=frac_act/cle
    314333            S_i=1/cle
    315334          endif ! gas or particle
    316335
    317336! scavenging coefficient based on Hertel et al 1995 - using the S_i for either gas or aerosol
    318 !SEC wetscav fix, the cloud height is no longer needed, it gives wrong results
     337!OLD
     338          if ((readclouds.and.ngrid.eq.0).or.(readclouds_this_nest.and.ngrid.gt.0)) then
    319339            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
    320345        endif ! positive in-cloud scavenging parameters given in Species file
    321346      endif !incloud
  • src/netcdf_output_mod.f90

    r4ad96c5 rae43937  
    6767                       ccn_aero,in_aero, & ! wetc_in,wetd_in, &
    6868                       reldiff,henry,f0,density,dquer,dsigma,dryvel,&
    69                        weightmolar,ohcconst,ohdconst,vsetaver,&
     69!                       weightmolar,ohreact,spec_ass,kao,vsetaver,&
     70                       weightmolar,ohcconst,ohdconst,spec_ass,kao,vsetaver,&
    7071                       ! for concoutput_netcdf and concoutput_nest_netcdf
    7172                       nxmin1,nymin1,nz,oro,oron,rho,rhon,&
     
    113114  logical, parameter :: write_area = .false.
    114115
    115   ! coordinate transformation from internal to world coord
    116   real :: xp1,yp1,xp2,yp2
    117116contains
    118117
     
    513512        call nf90_err(nf90_put_att(ncid, sID, 'ohcconst', ohcconst(i)))
    514513        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)))
    516517
    517518        if (lnest) then
     
    534535        call nf90_err(nf90_put_att(ncid, sID, 'ohcconst', ohcconst(i)))
    535536        call nf90_err(nf90_put_att(ncid, sID, 'ohdconst', ohdconst(i)))
     537        call nf90_err(nf90_put_att(ncid, sID, 'kao', kao(i)))
    536538        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)))
    537540
    538541        if (lnest) then
     
    670673       call nf90_err(nf90_put_var(ncid, relendID, ireleaseend(i), (/i/)))
    671674       call nf90_err(nf90_put_var(ncid, relkindzID, kindz(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/)))
     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/)))
    680679       call nf90_err(nf90_put_var(ncid, relzz1ID, zpoint1(i), (/i/)))
    681680       call nf90_err(nf90_put_var(ncid, relzz2ID, zpoint2(i), (/i/)))
  • src/readspecies.f90

    rd6a245b raa8c34a  
    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
     69  real :: pdsigma, pdryvel, pweightmolar, pohcconst, pohdconst, pohnconst, pkao
    7070  real :: pcrain_aero, pcsnow_aero, pccn_aero, pin_aero
    71   real :: parea_dow(7), parea_hour(24), ppoint_dow(7), ppoint_hour(24)
    72   integer :: readerror
     71  integer :: readerror, pspec_ass
    7372
    7473! declare namelist
     
    7776       pcrain_aero, pcsnow_aero, pccn_aero, pin_aero, &
    7877       preldiff, phenry, pf0, pdensity, pdquer, &
    79        pdsigma, pdryvel, pweightmolar, pohcconst, pohdconst, pohnconst, &
    80        parea_dow, parea_hour, ppoint_dow, ppoint_hour
     78       pdsigma, pdryvel, pweightmolar, pohcconst, pohdconst, pohnconst, pspec_ass, pkao
    8179
    8280  pspecies="" ! read failure indicator value
     
    9896  pohdconst=-9.9E-09
    9997  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
    112102! Open the SPECIES file and read species names and properties
    113103!************************************************************
     
    174164    read(unitspecies,'(f8.2)',end=22) ohnconst(pos_spec)
    175165!  write(*,*) ohnconst(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
     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)
    188170
    189171    pspecies=species(pos_spec)
     
    206188    pohdconst=ohdconst(pos_spec)
    207189    pohnconst=ohnconst(pos_spec)
    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
     190    pspec_ass=spec_ass(pos_spec)
     191    pkao=kao(pos_spec)
     192
     193  else
    220194
    221195    species(pos_spec)=pspecies
     
    238212    ohdconst(pos_spec)=pohdconst
    239213    ohnconst(pos_spec)=pohnconst
    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
     214    spec_ass(pos_spec)=pspec_ass
     215    kao(pos_spec)=pkao
    249216
    250217  endif
     
    336303  end if
    337304
     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
    338320  if (dsigma(i).eq.0.) dsigma(i)=1.0001   ! avoid floating exception
    339321
     
    348330
    349331
     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
    350356  endif
    351357
  • src/timemanager.f90

    rc7d1052 ra9cf4b1  
    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