37#ifndef fang2017filter_wDF_H
38#define fang2017filter_wDF_H
42#include "ensembleClass.H"
49class Fang2017filter_wDF
54 int parameterSize = 0;
55 int observationSize = 0;
63 bool initialStateFlag = 0;
64 bool parameterPriorFlag = 0;
65 bool modelErrorFlag = 0;
66 bool measurementNoiseFlag = 0;
69 Eigen::VectorXd initialStateMean;
72 Eigen::MatrixXd initialStateCov;
75 Eigen::VectorXd parameterPriorMean;
78 Eigen::MatrixXd parameterPriorCov;
81 Eigen::MatrixXd parameterMean;
84 Eigen::MatrixXd stateMean;
87 Eigen::VectorXd timeVector;
96 Eigen::VectorXi observationBoolVec;
99 Eigen::MatrixXd observations;
102 std::shared_ptr<muq::Modeling::Gaussian> initialStateDensity;
105 std::shared_ptr<muq::Modeling::Gaussian> parameterPriorDensity;
112 bool univariateInitStateDensFlag = 0;
117 Fang2017filter_wDF();
119 Fang2017filter_wDF(
int _Nsamples);
121 virtual ~Fang2017filter_wDF() =
default;
165 double getTime(
int _timeStepI);
197 void setTime(
double _startTime,
double _deltaTime,
double _endTime);
214 bool _univariateFlag = 0);
231 std::shared_ptr<muq::Modeling::Gaussian> _density);
239 virtual void stateProjection() = 0;
243 virtual void observeState() = 0;
247 void setObservationSize(
int _size);
251 void setStateSize(
int _size);
259 void setParameterSize(
int _size);
263 int getParameterSize();
267 void updateJointEns(Eigen::VectorXd _observation);
271 void run(
int innerLoopMax, word outputFolder);
Header file of the ITHACAutilities namespace.
Eigen::MatrixXd parameter_minConf
parameter minimum confidence level
void setObservations(Eigen::MatrixXd _observations)
Set the observations matrix.
Eigen::MatrixXd parameter_maxConf
parameter maximum confidence level
void setMeasNoise(double cov)
Setup of the measurement noise distribution.
void run(int innerLoopMax, word outputFolder)
Run the filtering.
ensemble stateEns
State ensemble.
Eigen::MatrixXd getStateMean()
Return state mean.
Eigen::MatrixXd getParameterMaxConf()
Return parameter Max Confidence.
void setModelError(double cov, bool univariate=0)
Setup of the model error distribution.
void sampleInitialState()
Create initial state ensemble.
void setObservationTime(int _observationStart, int _observationDelta)
Setup the observation vector.
Eigen::MatrixXd getParameterMinConf()
Return parameter Min Confidence.
double getTime()
Return time.
std::shared_ptr< muq::Modeling::Gaussian > measNoiseDensity
Measurement noise density.
ensemble jointEns
Joint state and parameter ensemble.
int getTimeStep()
Return timestep.
std::shared_ptr< muq::Modeling::Gaussian > modelErrorDensity
Model noise density.
void setParameterPriorDensity(Eigen::VectorXd _mean, Eigen::MatrixXd _cov)
Create parameter ensemble.
Eigen::MatrixXd ensembleFromDensity(std::shared_ptr< muq::Modeling::Gaussian > _density)
General class to sample from an input density.
void buildJointEns()
Concatenate state and parameter ensambles to create the joint ensamble.
ensemble parameterEns
Parameter ensemble.
Eigen::MatrixXd state_minConf
State minimum confidence level.
int getNumberOfSamples()
Return number of samples per ensamble.
void setInitialStateDensity(Eigen::VectorXd _mean, Eigen::MatrixXd _cov, bool _univariateFlag=0)
Create initial state ensemble.
void sampleParameterDist()
Create parameter ensemble.
Eigen::MatrixXd getParameterMean()
Return parameter mean.
ensemble observationEns
Observation ensemble.
void setTime(double _startTime, double _deltaTime, double _endTime)
Setup the time vector.
Eigen::MatrixXd state_maxConf
State maximum confidence level.
Eigen::VectorXd getTimeVector()
Return time vector.
Class for ensembles, each column is a sample.
Header file of the muq2ithaca namespace.