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
nmpc_cgmres
Definition: CgmresProblem.h:11
nmpc_cgmres::CgmresProblem::x_initial_
Eigen::VectorXd x_initial_
Definition: CgmresProblem.h:64
nmpc_cgmres::CgmresProblem::RefFunc
std::function< void(double, Eigen::Ref< Eigen::VectorXd >)> RefFunc
Type of function to return reference state.
Definition: CgmresProblem.h:18
nmpc_cgmres::CgmresProblem::CgmresProblem
EIGEN_MAKE_ALIGNED_OPERATOR_NEW CgmresProblem()
Constructor.
Definition: CgmresProblem.h:24
nmpc_cgmres::CgmresProblem
C/GMRES problem.
Definition: CgmresProblem.h:14
nmpc_cgmres::CgmresProblem::calcDphiDx
virtual void calcDphiDx(double t, const Eigen::Ref< const Eigen::VectorXd > &x, Eigen::Ref< Eigen::VectorXd > DphiDx)=0
Calculate .
nmpc_cgmres::CgmresProblem::dumpData
virtual void dumpData(std::ofstream &ofs)
Dump model parameters.
Definition: CgmresProblem.h:51
nmpc_cgmres::CgmresProblem::calcDhDu
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 .
nmpc_cgmres::CgmresProblem::state_eq_param_
Eigen::VectorXd state_eq_param_
Definition: CgmresProblem.h:62
nmpc_cgmres::CgmresProblem::vecfmt_dump_
const Eigen::IOFormat vecfmt_dump_
Definition: CgmresProblem.h:67
nmpc_cgmres::CgmresProblem::stateEquation
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.
nmpc_cgmres::CgmresProblem::dim_c_
int dim_c_
Definition: CgmresProblem.h:59
nmpc_cgmres::CgmresProblem::dim_uc_
int dim_uc_
Definition: CgmresProblem.h:60
nmpc_cgmres::CgmresProblem::u_initial_
Eigen::VectorXd u_initial_
Definition: CgmresProblem.h:65
nmpc_cgmres::CgmresProblem::costateEquation
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.
nmpc_cgmres::CgmresProblem::dim_x_
int dim_x_
Definition: CgmresProblem.h:57
nmpc_cgmres::CgmresProblem::dim_u_
int dim_u_
Definition: CgmresProblem.h:58