MUQ  0.4.3
HessianOperator.h
Go to the documentation of this file.
1 #ifndef HESSIANOPERATOR_H
2 #define HESSIANOPERATOR_H
3 
5 
6 #include <memory>
7 
8 namespace muq
9 {
10 namespace Modeling
11 {
12 
13 
21 public:
22 
23  HessianOperator(std::shared_ptr<ModPiece> const& pieceIn,
24  std::vector<Eigen::VectorXd> const& inputsIn,
25  unsigned int outWrtIn,
26  unsigned int inWrt1In,
27  unsigned int inWrt2In,
28  Eigen::VectorXd const& sensIn,
29  double scaleIn=1.0,
30  double nuggetIn=0.0);
31 
32  virtual ~HessianOperator() = default;
33 
35  virtual Eigen::MatrixXd Apply(Eigen::Ref<const Eigen::MatrixXd> const& x) override;
36 
38  virtual Eigen::MatrixXd ApplyTranspose(Eigen::Ref<const Eigen::MatrixXd> const& x) override;
39 
40 protected:
41  std::shared_ptr<ModPiece> basePiece;
42 
43  const std::vector<Eigen::VectorXd> inputs;
44 
45  const unsigned int outWrt;
46  const unsigned int inWrt1;
47  const unsigned int inWrt2;
48  const Eigen::VectorXd sens;
49  const double scale;
50  const double nugget;
51 
52 };
53 
54 } // namespace Modeling
55 } // namespace MUQ
56 
57 
58 
59 #endif
Creates a linear operator for the action of the Hessian of a ModPiece on a vector....
HessianOperator(std::shared_ptr< ModPiece > const &pieceIn, std::vector< Eigen::VectorXd > const &inputsIn, unsigned int outWrtIn, unsigned int inWrt1In, unsigned int inWrt2In, Eigen::VectorXd const &sensIn, double scaleIn=1.0, double nuggetIn=0.0)
const Eigen::VectorXd sens
const std::vector< Eigen::VectorXd > inputs
virtual Eigen::MatrixXd Apply(Eigen::Ref< const Eigen::MatrixXd > const &x) override
virtual ~HessianOperator()=default
std::shared_ptr< ModPiece > basePiece
virtual Eigen::MatrixXd ApplyTranspose(Eigen::Ref< const Eigen::MatrixXd > const &x) override
Generic linear operator base class.