NAME

     qifl - do forward Q modeling or inverse Q filtering


SYNOPSIS

     qifl [ -Nntap ] [ -Ootap ] [ -Dcardin ] [ -qtqtap ] [ -qq0 ]
     [  -nullqnull  ]  [  -mdmode  ]  [ -ababsol ] [ -phphase ] [
     -fcfcut ] [ -fpfpass ] [ -samp ] [ -scitype ] [ -smsmh  ]  [
     -lwlw ] [ -rsnrst ] [ -renred ] [ -noscl ] [ -rec ] [ -R ] [
     -V ] [ -? ]


DESCRIPTION

     qifl computes and applies a continuously time varying filter
     to  remove  (or  model) the effects of anelastic attenuation
     and dispersion (Q). The theory is described in two  Stanford
     Exploration  Project  reports  by  Dave  Hale:  An Inverse Q
     Filter and Q-Adaptive Deconvolution, vols 26 and 30.   There
     is  also  an excellent description of the details in the SIS
     bluebook.

     qifl  assumes  a  seismic  trace  of   the   form   x(t)   =
     r(t)*w(t)*q(t),  where r(t) is the earth response or reflec-
     tion coefficients, w(t) is the time invariant  wavelet,  and
     q(t)  is  a time varying function describing the absorption-
     dispersion effects.

     qifl  accepts  input   functions   in   card   file   format
     (1,...,9QTIM cards described below), in seismic trace format
     (i.e. analogous to a velocity tape), or constant Q as  input
     on  the command line.  For the prestack case each Q function
     will apply to an input gather. For the case of input seismic
     format Q functions the Q traces must be in the same order on
     disk (or in a pipe) as the input seismic gathers (stacked or
     unstacked)  and  if you run short of Q-traces before the end
     of the input data the last Q trace  will  be  used  for  the
     remainder  of  the run. Also for q traces if each Q trace is
     shorter than the input seismic traces then the last Q sample
     will be used to pad out the Q trace.

     If the Q-trace input format is chosen the program checks  to
     see  if the input Q traces are sampled the same as the input
     data. If the Q-traces have a coarser  sample  interval  they
     are  interpolated  on the fly to the same sample interval as
     the input data. This  allows  estimating  Q  (using  program
     qest)  at a coarser sample interval, say 8ms instead of 4ms,
     speeding up the estimation step. It is not critical to  have
     the Q estimated at every input sample.

     In the case of post stack data you may flag the  program  to
     assume  each  input  data trace will be processed using each
     successive Q trace. In the case of prestack data each  input
     record will be processed by each input Q trace.

     Due to the realities of this type of numerical filtering  it
     is  next to impossible to strictly control the output energy
     of the filtered traces.  This can result  in  variations  in
     the  overall  energy  of  the  output  traces resulting in a
     striped appearance.  The fix is to look at the energy of the
     input  trace  and  try to force the output trace to have the
     same.  The default is to use the ratios  of  the  input  and
     output envelopes as a gain compensation function.

     Regardless of the  internal  gain  compensation  one  should
     always  follow qifl with a broad brush gain correction, e.g.
     avgain with a long (2000ms) time window and a long (1/3  the
     number  of traces/rec) spatial window. This has no effect on
     relative amplitudes but gets everything to  the  same  back-
     ground.   I addition one should look at the output amplitude
     spectra (ampspec | usp xgraph) for a sample record.  If  the
     spectra  after  qifl  are too skewed to the high frequencies
     then consider running a rho filter,  e.g.  program  dafd  -R
     -fl2 -fh100 -sf2 -ep-.5 ..., or program rhof.

     The rho filter with a negative exponent will skew the  spec-
     tra  back  to be more balanced with more equal contributions
     from both  highs  and  lows.  This  rho  filter  process  is
     entirely  AVO  friendly since it does exactly the same thing
     to every trace.

     qest may be run on the seismic data to estimate the  Q  (you
     will have to editt off the first trace of each record to get
     the Q-traces.

     qifl gets its parameters from command line arguments and its
     Q-function  from  card  images in a flat file.  The cmommand
     line arguments specify  the  input,  output,  the  modes  of
     operation,  the start and end processing limits, and verbose
     printout, if desired.

  Command line arguments
     -N ntap
          Enter the input data set name or file immediately after
          typing -N unless the input is from a pipe in which case
          the -N entry must be omitted.  This input  file  should
          include the complete path name if the file resides in a
          different directory.  Example -N/b/vsp/dummy tells  the
          program to look for file 'dummy' in directory '/b/vsp'.

     -O otap
          Enter the output data  set  name  or  file  immediately
          after typing -O.  This output file is not required when
          piping the output to another process.  The output  data
          set also requires the full path name (see above).


     -Q   Enter the command line argument '-Q' to specify input Q
          functions  in  seismic  trace format. Otherwise input Q
          functions will be either from card file or  as  a  con-
          stant on the command line.

     -qt qtap
          Enter the input data seismic format Q data set name  or
          file immediately after typing -qt. The Q traces must be
          in the same order on disk (or in a pipe) as  the  input
          seismic  gathers  (stacked or unstacked) and if you run
          short of Q-traces before the end of the input data  the
          last Q trace will be used for the remainder of the run.
          Also for q traces if each Q trace is shorter  than  the
          input  seismic  traces  then  the last Q sample will be
          used to pad out the Q trace. It is recommended that the
          Q  traces  be smoothed (e.g. using vsm) before input to
          qifl.

     -D cardin
          For non-seismic Q function input: enter the name of the
          flat  file  containing the 1QTIM - 9QTIM card images of
          the Q functions (in the manner of TDFN cards for  velo-
          city functions).  These have the format:
          nQTIM (cc 1-5)
          TIME (ms) (cc 6-10, 16-20, ..., 77-70
          Q (cc 11-15, 21-25, ..., 71-75), sequential rec  #  (cc
          76-80)

          Each function consists of a  series  of  1QTIM,  2QTIM,
          ...,  9QTIM  cards  with the last (or first if there is
          only 1) being a 9QTIM.  Up to 64 T-Q pairs can be  used
          for  each  function.  The last 5 columns is the sequen-
          tial record number for this function.  Up to  70  func-
          tions  may be specified along a line with linear inter-
          polation of the functions between record control points
          (the same function will be applied to each record).

     -null qnull
          For mute zones where input Q  values  is  zero  replace
          zero Qs with this value. Default = 500.

     -q q0
          For non-seismic Q function input:  enter  the  optional
          constant   Q-value  (Q-function  inout  file  above  is
          ignored). This is useful in building constant Q panels.
          Default = 0.0 (i.e. look for Q-function file).

     -md mode
          Enter the mode.  Mode = 0: do inverse Q filtering; mode
          = 1: do forward Q modeling.  Default = 0


     -ph phase
          Enter  the  phase-type  of  the  low-pass   stabilizing
          filter:  0  = zero phase, 1 = minimum phase.  Default =
          0.  Inverse Q filtering is an inherently unstable  pro-
          cess since we are attempting to boost frequency content
          with increasing time.  To counter  this  instability  a
          low-pass filter must be applied.

     -fc fcut
          Enter the high end cutoff  frequency  of  the  low-pass
          filter  (Hz).   Default  is to try to find an average Q
          and an  average  time  and  to  calculate  this  value.
          Depending  on  the type of Q-function you have this may
          or may not work.  In general the higher this value  the
          sooner  (in time) the Q filter deteriorates for a given
          Q.

     -fp fpass
          Enter the high end frequency at which the  power  spec-
          trum  gain becomes constant.  If a value is entered for
          this parameter, the -fc  parameter  is  ignored  and  a
          high-cut  filter may be applied later to accomplish the
          function of the -fc parameter.  (Default = 0.)

     -sc itype
          Enter  the  type  of  output  gain  compensation:  0  =
          envelope  ratios,  1 = agc ratios.  Inverse Q filtering
          can subtely alter the  overall  energy  of  the  output
          traces  due  to  noise  in the data and small numerical
          variations of the iqf filters. One way to fix  this  is
          to  look at the energy behavior of the input trace over
          time and try to transfer this behavior  to  the  output
          trace.   Two  methods  are used: (1) the default, is to
          take the ratio of the envelopes of the input and output
          and apply this to the output, (2) compute the ratios of
          the agc curves and apply that.

     -sm smh
          Enter the  order  of  the  smoother  to  apply  to  the
          evelopes  prior  to computing the output gain compensa-
          tion.  Default is no smoothing since tests  have  shown
          it is genrally unhelpful.

     -lw lw
          If the agc ratio energy compensation  method  has  been
          chosen  enter  the length of the agc window.  Default =
          1000ms

     -s amp
          If the agc ratio energy compensation  method  has  been
          chosen enter the % of 2047 to scale samples.  Default =
          15%

     -scl scl
          Enter the scale factor to apply to the input  Q  traces
          (only good for seismic trace format Q input). Default =
          1.0

     -ab absol
          Enter the type of Q function: 0 = interpolate  in  time
          between time-Q control points; 1 = do a running average
          over time.  Default = 0.

     -rs nrst
          Enter start sequential process record number.   Sequen-
          tial  record  numbers below this value will not be fil-
          tered but will be passed. Default value  is  the  first
          record.

     -re nred
          Enter end sequential process record number.  Sequential
          record  numbers  above  this value will not be filtered
          but will be passed. Default value is last record.

     -noscl
          Enter the command line argument '-noscl'  to  turn  off
          restore  scaling.   The  default is to restore the post
          iqf trace scaling to whatever the  input  was.   Either
          the  envelope  trace (default) of both input and output
          is computed and these are used to compute a scale  fac-
          tor  for  every  sample  or the ration of the input and
          output agc curves is used.   Without  internal  scaling
          the  output  will  have  to  be put through an externam
          scaling process  like  avgain.  Internal  scaling  will
          almost  always  eliminate  stripiness sometimes seen in
          iqf outputs.

     -rec Enter the command line argument  '-rec'  to  read  each
          input  gather  (record)  and apply one Q trace from the
          -qt[] file.  The default is to read and apply a Q trace
          for each input trace.

     -R   Enter the command line argument '-R' to apply a restore
          on-mute time out of header word VPick1. As the Q traces
          are output the time to  the  first  nonzero  sample  is
          placed in the restore mute trace header word VPick1 for
          subsequent optional application in the inverse Q filter
          program  qifl.  This  is because subsequent Q smoothing
          could introduce funny Q values at this transition  zone
          (this could cause the inverse Q filting problems). This
          disturbed zone will exist above the mute line so it can
          be corrected by flagging qifl with a -R which will zero
          out the Q traces down to the VPick1 time.


     -V   Enter the command line argument '-V' to get  additional
          printout.

     -?   Enter the command line  argument  '-?'  to  get  online
          help.   The program terminates after the help screen is
          printed.


EXAMPLE

     First estimate the Q for the input data:

     qest -Nidata -w00 -Oqdata

     where we have used a sliding window of 300ms  and  with  the
     default  fourier  spectral  method. We now take the Q traces
     and do the Q compensation step:

     First smooth the Q-traces

     vsm -Nqdata -Oqdata_sm -dxv25 -dzv25 -rsm500

     where the trace and sample step sizes have been chosen  more
     or  less arbitrarily (and equal). The important ratio is the
     step size to the radial smoothing distance since that deter-
     mines the smoothing length is samples and traces.

     Next apply the Q inverse filter

     qifl -Nidata -qqdata_sm -Oodata -fc50 -Q -R

     where we have used a cut off frequency of 50Hz, we assume  a
     Q-trace  for  each  input data trace, and where we apply the
     restore on-mute time qest stored in the Q-trace header  word
     VPick1.


BUGS

     Watch out for filter instabilities.  Run tests  on  a  small
     data subset.


AUTHOR

     Original code by Richard Crider,  ES&S;  USP  mods  by  Paul
     Gutowski, APR


COPYRIGHT

     copyright 2001, Amoco Production Company
               All Rights Reserved
          an affiliate of BP America Inc.







Man(1) output converted with man2html