STFINV library: seek source wavelet correction filter
stfinv::STFEngineFiniteCausal Class Reference

Engine to find a finite, causal source time-history in time domain. More...

#include <stfinvfinitecausal.h>

Inheritance diagram for stfinv::STFEngineFiniteCausal:
Collaboration diagram for stfinv::STFEngineFiniteCausal:

Public Types

typedef stfinv::STFBaseEngine Tbase
 typedef to refer to base class More...
 

Public Member Functions

 STFEngineFiniteCausal (const stfinv::Tvectoroftriples &triples, const stfinv::Waveform &stf, const std::string &parameters)
 Constructor. More...
 
virtual ~STFEngineFiniteCausal ()
 abstract base requires virtual destructor More...
 
virtual void exec ()
 Start engine. More...
 
virtual void help (std::ostream &os=std::cout) const
 print online help More...
 
virtual const char * name () const
 return name of engine More...
 
Shape query functions
unsigned int nsamples () const
 return number of samples used in time series More...
 
unsigned int nreceivers () const
 return number of receiver signals in use More...
 
unsigned int npairs () const
 return number of additional signals to be convolved More...
 
double dt () const
 return sampling interval More...
 
Data query functions
Tseries stf () const
 return source correction filter series More...
 
Tseries::Tcoc recording (const unsigned int &i) const
 return recorded data at receiver i More...
 
Tseries::Tcoc synthetic (const unsigned int &i) const
 return synthetic data at receiver i More...
 
Tseries convolvedsynthetic (const unsigned int &i) const
 return synthetic data convolved with stf at receiver i More...
 
Tseries::Tcoc series (const unsigned int &i) const
 return synthetic data of pair i More...
 
Tseries convolvedseries (const unsigned int &i) const
 return synthetic data convolved with stf for pair i More...
 

Static Public Member Functions

static void classhelp (std::ostream &os=std::cout)
 print online help More...
 

Static Public Attributes

static const char *const description
 short description of this engine More...
 
static const char *const ID
 ID used to select thsi engine. More...
 

Protected Member Functions

Functions presented to derived classes
std::string parameter (const std::string &key, const std::string &defvalue="false") const
 return the value of a parameters More...
 
bool parameterisset (const std::string &key) const
 check is parameter was set by user More...
 
void checkreceiverindex (const unsigned int &i) const
 check for vaid receiver index More...
 
void checkseriesindex (const unsigned int &i) const
 check for vaid index off additional time series pair More...
 
double weight (const unsigned int &i) const
 return weight for signal at receiver i More...
 
aff::Series< double > weights () const
 return weights array More...
 

Protected Attributes

int Mdebug
 debug level More...
 
stfinv::Tvectorofpairs Mpairs
 Waveform pairs. More...
 
stfinv::Waveform Mstf
 source correction filter. More...
 
stfinv::Tvectoroftriples Mtriples
 Waveform triples. More...
 
int Mverbose
 verbose level More...
 

Private Member Functions

void initialize ()
 initialize work space More...
 

Private Attributes

bool Mscaleenergy
 scale energy More...
 

Basic interface for users

See also
Information for users of libstfinv (programmers)
stfinv::Waveform run ()
 Start engine and return reference to source correction filter. More...
 
virtual void usage (std::ostream &os=std::cout) const
 print detailed description More...
 
static void classusage (std::ostream &os=std::cout)
 print detailed description More...
 

Detailed Description

Engine to find a finite, causal source time-history in time domain.

Attention
This engine is not yet implemented. The concept of the approach is drafted in the comments to the class declaration. As long a stfinv::STFEngineFiniteCausal is not made available through stfinv::STFEngine::initialize it must be regarded as a stub.
Concept behin this engine
  • $d_l$: data samples
  • $s_l$: raw synthetics
  • $q_l$: source time-history to be derived
  • $s^c_l=\sum\limits_k s_{(l-k)} q_k$: convolved synthetics
  • $E=\sum\limits_l (d_l-s^c_l)^2$: misfit to be minized

    \[ \frac{\partial E}{\partial q_j} =\frac{\partial}{\partial q_j} \left(\sum\limits_l \left(d_l-\sum\limits_k s_{(l-k)} q_k\right)^2\right) = \sum\limits_l \frac{\partial}{\partial q_j} \left(d_l-\sum\limits_k s_{(l-k)} q_k\right)^2 = -2 \sum\limits_l s_{(l-j)} \left(d_l-\sum\limits_k s_{(l-k)} q_k\right) = -2 \sum\limits_l s_{(l-j)} d_l +2 \sum\limits_l s_{(l-j)} \sum\limits_k s_{(l-k)} q_k \]

Least-squares condition:

\[ \frac{\partial E}{\partial q_j}\stackrel{!}{=}0,\quad \forall j \]

\[ \sum\limits_l s_{(l-j)} \sum\limits_k s_{(l-k)} q_k = \sum\limits_l s_{(l-j)} d_l ,\quad \forall j \]

System of linear equations:

\[ \sum\limits_k \underbrace{\left(\sum\limits_l s_{(l-j)} s_{(l-k)}\right)}_{=M_{jk}} q_k = \underbrace{\sum\limits_l s_{(l-j)} d_l}_{=r_j} \]

Next:

  • index range is defined on base of index range for data and desired finite length of source time-history
  • additional traces are to be added by adding further terms to the misfit function, which results in further terms in the system of linear equations. These terms should be given appropriate weights
  • data should be normalized, such that a misfit of 1 is meaningful; this is easily done, by scaling all seismograms samples with the same factor (data as well as synthetics)
  • an additional constraint could be applied to the $q_l$ by adding a term $\sum\limits_l\left(Q_l q_l\right)^2$ to the msifit $E$; this will result in a simple additional term on the left-hand-side of the system of linear equations; a reasonable weight must be given to this term
Todo:
STFEngineTDCausalConvolution is a rudiment to be filled with reasonable code. To date the source code file is used to develop the theory.

Definition at line 108 of file stfinvfinitecausal.h.


The documentation for this class was generated from the following file: