1#ifndef __FFT_DECON_OPERATOR_H__
2#define __FFT_DECON_OPERATOR_H__
3#include "mspass/algorithms/TimeWindow.h"
4#include "mspass/algorithms/deconvolution/ComplexArray.h"
5#include "mspass/seismic/CoreTimeSeries.h"
6#include "mspass/utility/Metadata.h"
7#include <boost/archive/text_iarchive.hpp>
8#include <boost/archive/text_oarchive.hpp>
9#include <gsl/gsl_errno.h>
10#include <gsl/gsl_fft_complex.h>
12namespace mspass::algorithms::deconvolution {
28 void change_size(
const int nfft_new);
29 void change_shift(
const int shift) { sample_shift = shift; };
30 int get_size() {
return nfft; };
31 int get_shift() {
return sample_shift; };
32 int operator_size() {
return static_cast<int>(nfft); };
33 int operator_shift() {
return sample_shift; };
34 double df(
const double dt) {
36 period =
static_cast<double>(nfft) * dt;
49 const double t0parent);
54 gsl_fft_complex_wavetable *wavetable;
55 gsl_fft_complex_workspace *workspace;
59 friend boost::serialization::access;
60 template <
class Archive>
61 void save(Archive &ar,
const unsigned int version)
const {
68 template <
class Archive>
void load(Archive &ar,
const unsigned int version) {
71 ar &this->sample_shift;
75 this->wavetable = gsl_fft_complex_wavetable_alloc(this->nfft);
77 this->workspace = gsl_fft_complex_workspace_alloc(this->nfft);
80 BOOST_SERIALIZATION_SPLIT_MEMBER()
97std::vector<double> circular_shift(
const std::vector<double> &d,
const int i0);
118unsigned int nextPowerOf2(
unsigned int n);
Defines a time window.
Definition TimeWindow.h:12
Definition ComplexArray.h:37
Object to hold components needed in all fft based decon algorithms.
Definition FFTDeconOperator.h:20
mspass::seismic::CoreTimeSeries FourierInverse(const ComplexArray &winv, const ComplexArray &sw, const double dt, const double t0parent)
Return inverse wavelet for Fourier methods.
Definition FFTDeconOperator.cc:115
Scalar time series data object.
Definition CoreTimeSeries.h:17