1#ifndef __SIIMPLE_GENERAL_ITER_DECON__
2#define __SIIMPLE_GENERAL_ITER_DECON__
3#include "mspass/algorithms/TimeWindow.h"
4#include "mspass/algorithms/deconvolution/ComplexArray.h"
5#include "mspass/algorithms/deconvolution/FFTDeconOperator.h"
6#include "mspass/algorithms/deconvolution/ScalarDecon.h"
7#include "mspass/seismic/CoreTimeSeries.h"
8#include "mspass/seismic/Seismogram.h"
9#include "mspass/utility/AntelopePf.h"
10#include "mspass/utility/Metadata.h"
11#include "mspass/utility/dmatrix.h"
13namespace mspass::algorithms::deconvolution {
19enum IterDeconType { WATER_LEVEL, LEAST_SQ, MULTI_TAPER };
78 this->preprocessor->changeparameter(md);
96 return this->preprocessor->ideal_output();
126 int ndwin, nnwin, nfft;
138 std::list<ThreeCSpike> spikes;
145 std::vector<double> lag_weights;
148 std::vector<double> wtf;
170 std::vector<double> winv_fir, actual_o_fir;
172 IterDeconType decon_type;
187 void update_lag_weights(
int col);
193 double compute_resid_linf_floor();
196 bool has_not_converged();
202 double lw_linf_initial, lw_linf_prev;
203 double lw_l2_initial, lw_l2_prev;
204 double resid_linf_initial, resid_linf_prev;
205 double resid_l2_initial, resid_l2_prev;
207 int iter_count, iter_max;
210 double lw_linf_floor, lw_l2_floor;
213 double resid_linf_prob, resid_linf_floor;
217 std::vector<double> lw_linf_history, lw_l2_history, resid_l2_history,
219 void print_convergence_history(std::ostream &ofs) {
220 ofs <<
"lw_inf lw_l2 resid_l2, resid_linf" << std::endl;
221 for (
int i = 0; i < iter_count; ++i) {
222 if (i < lw_linf_history.size()) {
223 ofs << lw_linf_history[i] <<
" ";
227 if (i < lw_l2_history.size()) {
228 ofs << lw_l2_history[i] <<
" ";
232 if (i < resid_linf_history.size()) {
233 ofs << resid_linf_history[i] <<
" ";
237 if (i < resid_l2_history.size()) {
238 ofs << resid_l2_history[i] <<
" ";
Defines a time window.
Definition TimeWindow.h:12
Implements the Generalized Iterative Method of Wang and Pavlis.
Definition GeneralIterDecon.h:66
mspass::seismic::CoreTimeSeries inverse_wavelet()
Return a FIR represention of the inverse filter.
Definition GeneralIterDecon.h:101
mspass::seismic::CoreTimeSeries actual_output()
Return the actual output of the deconvolution operator.
Definition GeneralIterDecon.h:98
mspass::utility::Metadata QCMetrics()
Return appropriate quality measures.
Definition GeneralIterDecon.cc:738
Base class decon operator for single station 3C decon (receiver functions).
Definition ScalarDecon.h:29
virtual mspass::seismic::CoreTimeSeries inverse_wavelet()=0
Return a FIR represention of the inverse filter.
virtual mspass::seismic::CoreTimeSeries actual_output()=0
Return the actual output of the deconvolution operator.
Frequency domain shaping wavelet.
Definition ShapingWavelet.h:21
Definition GeneralIterDecon.h:20
double amp
Definition GeneralIterDecon.h:28
double u[3]
Definition GeneralIterDecon.h:26
ThreeCSpike & operator=(const ThreeCSpike &parent)
Definition ThreeCSpike.cc:27
int col
Definition GeneralIterDecon.h:24
Vector (three-component) seismogram data object.
Definition CoreSeismogram.h:39
Scalar time series data object.
Definition CoreTimeSeries.h:17
C++ object version of a parameter file.
Definition AntelopePf.h:61
Lightweight, simple matrix object.
Definition dmatrix.h:104