MUQ  0.4.3
PyModPiece.h
Go to the documentation of this file.
1 #ifndef PYMODPIECE_H
2 #define PYMODPIECE_H
3 
5 
6 namespace muq {
7  namespace Modeling {
8 
9  class PyModPiece : public ModPiece {
10 
11  public:
12  PyModPiece(Eigen::VectorXi const& inputSizes,
13  Eigen::VectorXi const& outputSizes);
14 
15  protected:
16  virtual void EvaluateImpl(ref_vector<Eigen::VectorXd> const& input) override;
17 
18  virtual void EvaluateImpl(std::vector<Eigen::VectorXd> const& input) = 0;
19 
20  virtual void GradientImpl(unsigned int const outputDimWrt,
21  unsigned int const inputDimWrt,
22  ref_vector<Eigen::VectorXd> const& input,
23  Eigen::VectorXd const& sensitivity) override;
24 
25  virtual void GradientImpl(unsigned int const outputDimWrt,
26  unsigned int const inputDimWrt,
27  std::vector<Eigen::VectorXd> const& input,
28  Eigen::VectorXd const& sensitivity);
29 
30  virtual void JacobianImpl(unsigned int const outputDimWrt,
31  unsigned int const inputDimWrt,
32  ref_vector<Eigen::VectorXd> const& input) override;
33 
34  virtual void JacobianImpl(unsigned int const outputDimWrt,
35  unsigned int const inputDimWrt,
36  std::vector<Eigen::VectorXd> const& input);
37 
38  virtual void ApplyJacobianImpl(unsigned int const outputDimWrt,
39  unsigned int const inputDimWrt,
40  ref_vector<Eigen::VectorXd> const& input,
41  Eigen::VectorXd const& vec) override;
42 
43  virtual void ApplyJacobianImpl(unsigned int const outputDimWrt,
44  unsigned int const inputDimWrt,
45  std::vector<Eigen::VectorXd> const& input,
46  Eigen::VectorXd const& vec);
47 
48  virtual void ApplyHessianImpl(unsigned int const outputDimWrt,
49  unsigned int const inputDimWrt1,
50  unsigned int const inputDimWrt2,
51  std::vector<Eigen::VectorXd> const& input,
52  Eigen::VectorXd const& sens,
53  Eigen::VectorXd const& vec);
54 
55  virtual void ApplyHessianImpl(unsigned int const outputDimWrt,
56  unsigned int const inputDimWrt1,
57  unsigned int const inputDimWrt2,
58  ref_vector<Eigen::VectorXd> const& input,
59  Eigen::VectorXd const& sens,
60  Eigen::VectorXd const& vec) override;
61 
62  private:
63 
64  };
65  }
66 }
67 
68 #endif
Provides an abstract interface for defining vector-valued model components.
Definition: ModPiece.h:148
const Eigen::VectorXi inputSizes
Definition: ModPiece.h:469
const Eigen::VectorXi outputSizes
Definition: ModPiece.h:472
virtual void GradientImpl(unsigned int const outputDimWrt, unsigned int const inputDimWrt, ref_vector< Eigen::VectorXd > const &input, Eigen::VectorXd const &sensitivity) override
Definition: PyModPiece.cpp:13
virtual void EvaluateImpl(std::vector< Eigen::VectorXd > const &input)=0
virtual void ApplyJacobianImpl(unsigned int const outputDimWrt, unsigned int const inputDimWrt, ref_vector< Eigen::VectorXd > const &input, Eigen::VectorXd const &vec) override
Definition: PyModPiece.cpp:42
virtual void EvaluateImpl(ref_vector< Eigen::VectorXd > const &input) override
Definition: PyModPiece.cpp:9
virtual void ApplyHessianImpl(unsigned int const outputDimWrt, unsigned int const inputDimWrt1, unsigned int const inputDimWrt2, std::vector< Eigen::VectorXd > const &input, Eigen::VectorXd const &sens, Eigen::VectorXd const &vec)
Definition: PyModPiece.cpp:67
virtual void JacobianImpl(unsigned int const outputDimWrt, unsigned int const inputDimWrt, ref_vector< Eigen::VectorXd > const &input) override
Definition: PyModPiece.cpp:28
PyModPiece(Eigen::VectorXi const &inputSizes, Eigen::VectorXi const &outputSizes)
Definition: PyModPiece.cpp:5
std::vector< std::reference_wrapper< const T > > ref_vector
A vector of references to something ...
Definition: WorkPiece.h:37