Commit 941baab4 authored by thomas.forbriger's avatar thomas.forbriger Committed by thomas.forbriger
Browse files

making notes

This is a legacy commit from before 2015-03-01.
It may be incomplete as well as inconsistent.
See COPYING.legacy and README.history for details.

SVN Path:
SVN Revision: 3966
SVN UUID:     67feda4a-a26e-11df-9d6e-31afc202ad0c
parent f8c1660e
......@@ -254,7 +254,7 @@ endif
$(TESTCCBIN): %: tests/%.o libstfinv.a
$(CXX) $(FLAGS) -o $@ $^ -I$(LOCINCLUDEDIR) \
-ltfxx -laff \
-ltfxx -lfourierxx -lfftw3 -laff \
# ----- END OF Makefile -----
......@@ -99,7 +99,7 @@ $Id$
time function.
For the implementation there are some \ref tools provided in the library.
Do not forget to provide an unique ID like stfinv::STFEngineIdentity::ID
Do not forget to provide a unique ID like stfinv::STFEngineIdentity::ID
and a short description like in stfinv::STFEngineIdentity::description.
Further an online help text like produced by
stfinv::STFEngineIdentity::classhelp() are recommended.
......@@ -113,6 +113,35 @@ namespace stfinv {
/*! \brief Abstract base class for engines to derive source time functions
* \ingroup cxxinterface
* \par Initialization of engines
* The following happens in a sequence, when engines are initialized:
* -# The desired engine ins initialized either by the user directly
* or within the frame of STFEngine.
* -# The constructor of this engine immediatly calls teh constructor of its
* base class.
* This again calls the constructor of its base class such passing down
* initialization to STFBaseEngine::STFBaseEngine
* -# The constructor of STFBaseEngine takes the references to the storage
* locations for signal data as well as a parameter string.
* -# It fills its own references to the data storage locations and checks
* the consistency of parameters passed (size of arrays, sampling rates,
* etc).
* -# It then parses the parameter string and places its contents in the
* Mparamap parameter map.
* -# Then the base class parameters are set either from defaults or form
* values in the parameter map.
* -# Initialization then continues at the next higher level in the class
* hierarchy.
* -# In the next level constructor additional workspace can be allocated
* based on the already available references to signal data and
* parameter values.
* -# Further level specific parameters are set due to defaults or
* values passed in the parameter string.
* \par Handling of parameters
* See STFBaseEngine::parameter() and STFBaseEngine::parameterisset()
* for a description on how parameters are handled within engine classes.
* \sa
* \ref sec_page_design_initialization
......@@ -42,6 +42,29 @@
namespace stfinv {
* - Refernces to signal storage are available
* - Parameters are parsed and available through the base class
* What has to be done here:
* -# The FFT engine must be initialized appropriately
* -# Time domain padding has to be read from the parameters
* -# Number of sample modulo has to be read from parameters
* -# number of samples must be calculated from these values
* -# based on these values workspace arrays must be constructed
* -# The FFT engine must be constructed from the workspace arrays.
* This requires a copy constructor for the FFT engine, which
* currently is not present.
* Alternatively, we could only use a pointer to the engine.
STFFourierDomainEngine::STFFourierDomainEngine(const stfinv::Tvectoroftriples& triples,
const stfinv::Waveform& stf,
const std::string& parameters)
:Tbase(triples, stf, parameters),
STFINV_abort("STFFourierDomainEngine constructor not yet implemented");
} // STFFourierDomainEngine::STFFourierDomainEngine
stfinv::Waveform STFFourierDomainEngine::run()
......@@ -44,6 +44,7 @@
#include <stfinv/stfinvbase.h>
#include <aff/array.h>
#include <fourier/fftwaffar.h>
namespace stfinv {
......@@ -52,20 +53,27 @@ namespace stfinv {
* This is just a base class.
* The constructor is protected and should only be called from a derived
* class.
* This class maintains a workspace for Fourier transforms.
* It provides the FFT from input signals to the workspace through a member
* functions as well as the convolution of the synthetic data with a given
* source wavelet Fourier transform and a subsequent FFT to time domain for
* the convolved synthetics as well as the source time function separately.
class STFFourierDomainEngine: public stfinv::STFBaseEngine {
//! \brief typedef to refer to base class
typedef stfinv::STFBaseEngine Tbase;
//! \brief type of underlying Fourier engine
typedef fourier::fft::DRFFTWAFFArrayEngine Tfftengine;
/*! \brief Constructor.
STFFourierDomainEngine(const stfinv::Tvectoroftriples& triples,
const stfinv::Waveform& stf,
const std::string& parameters)
:Tbase(triples, stf, parameters) { }
//! \brief abstract base requires virtual destructor
const std::string& parameters);
//! \brief abstract base requires virtual destructor
virtual ~STFFourierDomainEngine() { }
//! \brief Start engine and return source time function.
virtual stfinv::Waveform run();
......@@ -83,8 +91,8 @@ namespace stfinv {
// member data
// -----------
Tfftengine Mfftengine;
}; // class STFFourierDomainEngine
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment