nmpc_cgmres
CgmresProblem.h
Go to the documentation of this file.
1 /* Author: Masaki Murooka */
2 
3 #pragma once
4 
5 #include <fstream>
6 #include <iostream>
7 
8 #include <Eigen/Core>
9 #include <Eigen/Dense>
10 
11 namespace nmpc_cgmres
12 {
15 {
16 public:
18  using RefFunc = std::function<void(double, Eigen::Ref<Eigen::VectorXd>)>;
19 
20 public:
21  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
22 
25 
27  virtual void stateEquation(double t,
28  const Eigen::Ref<const Eigen::VectorXd> & x,
29  const Eigen::Ref<const Eigen::VectorXd> & u,
30  Eigen::Ref<Eigen::VectorXd> dotx) = 0;
31 
33  virtual void costateEquation(double t,
34  const Eigen::Ref<const Eigen::VectorXd> & lmd,
35  const Eigen::Ref<const Eigen::VectorXd> & xu,
36  Eigen::Ref<Eigen::VectorXd> dotlmd) = 0;
37 
39  virtual void calcDphiDx(double t,
40  const Eigen::Ref<const Eigen::VectorXd> & x,
41  Eigen::Ref<Eigen::VectorXd> DphiDx) = 0;
42 
44  virtual void calcDhDu(double t,
45  const Eigen::Ref<const Eigen::VectorXd> & x,
46  const Eigen::Ref<const Eigen::VectorXd> & u,
47  const Eigen::Ref<const Eigen::VectorXd> & lmd,
48  Eigen::Ref<Eigen::VectorXd> DhDu) = 0;
49 
51  virtual void dumpData(std::ofstream & ofs)
52  {
53  ofs << "\"state_eq_param\": [" << state_eq_param_.format(vecfmt_dump_) << "]," << std::endl;
54  }
55 
56 public:
57  int dim_x_;
58  int dim_u_;
59  int dim_c_;
60  int dim_uc_;
61 
62  Eigen::VectorXd state_eq_param_;
63 
64  Eigen::VectorXd x_initial_;
65  Eigen::VectorXd u_initial_;
66 
67  const Eigen::IOFormat vecfmt_dump_ = Eigen::IOFormat(Eigen::StreamPrecision, 0, ", ", ", ", "", "", "", "");
68 };
69 } // namespace nmpc_cgmres
Eigen::VectorXd state_eq_param_
Definition: CgmresProblem.h:62
Eigen::VectorXd u_initial_
Definition: CgmresProblem.h:65
EIGEN_MAKE_ALIGNED_OPERATOR_NEW CgmresProblem()
Constructor.
Definition: CgmresProblem.h:24
std::function< void(double, Eigen::Ref< Eigen::VectorXd >)> RefFunc
Type of function to return reference state.
Definition: CgmresProblem.h:18
virtual void stateEquation(double t, const Eigen::Ref< const Eigen::VectorXd > &x, const Eigen::Ref< const Eigen::VectorXd > &u, Eigen::Ref< Eigen::VectorXd > dotx)=0
Calculate the state equation.
virtual void calcDhDu(double t, const Eigen::Ref< const Eigen::VectorXd > &x, const Eigen::Ref< const Eigen::VectorXd > &u, const Eigen::Ref< const Eigen::VectorXd > &lmd, Eigen::Ref< Eigen::VectorXd > DhDu)=0
Calculate .
virtual void dumpData(std::ofstream &ofs)
Dump model parameters.
Definition: CgmresProblem.h:51
Eigen::VectorXd x_initial_
Definition: CgmresProblem.h:64
const Eigen::IOFormat vecfmt_dump_
Definition: CgmresProblem.h:67
virtual void costateEquation(double t, const Eigen::Ref< const Eigen::VectorXd > &lmd, const Eigen::Ref< const Eigen::VectorXd > &xu, Eigen::Ref< Eigen::VectorXd > dotlmd)=0
Calculate the costate equation.
virtual void calcDphiDx(double t, const Eigen::Ref< const Eigen::VectorXd > &x, Eigen::Ref< Eigen::VectorXd > DphiDx)=0
Calculate .