24 #ifndef SOLVER_INTERFACE_H_
25 #define SOLVER_INTERFACE_H_
35 #include <numerics/data_out.h>
37 #include <lac/vector.h>
42 template<
typename VECTOR>
43 class DOpEOutputHandler;
44 template<
typename VECTOR>
45 class DOpEExceptionHandler;
51 template<
typename VECTOR>
52 class ReducedProblemInterface_Base
57 ExceptionHandler_ = NULL;
58 OutputHandler_ = NULL;
86 WriteToFile(
const VECTOR &v, std::string name, std::string outfile,
87 std::string dof_type, std::string filetype)=0;
102 std::string , std::string ,
105 throw DOpEException(
"NotImplemented",
"WriteToFileElementwise");
119 std::string dof_type)=0;
130 WriteToFile(
const std::vector<double> &v, std::string outfile) =0;
140 ExceptionHandler_ = OH;
146 assert(ExceptionHandler_);
147 return ExceptionHandler_;
152 assert(OutputHandler_);
153 return OutputHandler_;
167 typename std::map<std::string, unsigned int>::const_iterator it =
172 "Did not find " + name +
" in the list of functionals.",
173 "ReducedProblemInterface_Base::GetFunctionalValue");
175 unsigned int pos = it->second;
181 "Apparently the Functional in question was never evaluated!",
182 "ReducedProblemInterface_Base::GetFunctionalValue");
185 "The Functional has been evaluated too many times! \n\tMaybe you should use GetTimeFunctionalValue.",
186 "ReducedProblemInterface_Base::GetFunctionalValue");
202 const std::vector<double>&
205 typename std::map<std::string, unsigned int>::const_iterator it =
210 "Did not find " + name +
" in the list of functionals.",
211 "ReducedProblemInterface_Base::GetFunctionalValue");
213 unsigned int pos = it->second;
219 "Apparently the Functional in question was never evaluated!",
220 "ReducedProblemInterface_Base::GetTimeFunctionalValue");
223 "The Functional has been evaluated too many times! \n\tMaybe you should use GetTimeFunctionalValue.",
224 "ReducedProblemInterface_Base::GetTimeFunctionalValue");
244 if (user_domain_data_.find(name) != user_domain_data_.end())
247 "Adding multiple Data with name " + name +
" is prohibited!",
248 "ReducedProblemInterface::AddUserDomainData");
250 user_domain_data_.insert(
251 std::pair<std::string, const VECTOR*>(name, new_data));
262 typename std::map<std::string, const VECTOR *>::iterator it =
263 user_domain_data_.find(name);
264 if (it == user_domain_data_.end())
267 "Deleting Data " + name +
" is impossible! Data not found",
268 "Integrator::DeleteDomainData");
270 user_domain_data_.erase(it);
288 std::vector<std::vector<double> >&
291 return functional_values_;
294 const std::vector<std::vector<double> >&
297 return functional_values_;
300 const std::map<std::string, const VECTOR*>&
303 return user_domain_data_;
316 virtual const std::map<std::string, unsigned int>&
320 "ReducedProblemInterface_Base::GetFunctionalPosition");
327 std::vector<std::vector<double> > functional_values_;
328 std::map<std::string, const VECTOR*> user_domain_data_;
335 template<
typename PROBLEM,
typename VECTOR>
343 base_priority_ = base_priority;
344 post_index_ =
"_" + this->
GetProblem()->GetName();
452 "ReducedProblemInterface::ComputeReducedHessianInverseVector");
477 "ReducedProblemInterface::ComputeReducedGradientOfGlobalConstraints");
508 dwrc.Initialize(
GetProblem()->GetSpaceTimeHandler(),
516 virtual const std::map<std::string, unsigned int>&
529 return base_priority_;
534 std::string post_index_;
Definition: constraintvector.h:48
DOpEExceptionHandler< VECTOR > * GetExceptionHandler()
Definition: reducedprobleminterface.h:144
void DeleteUserDomainData(std::string name)
Definition: reducedprobleminterface.h:259
virtual void WriteToFile(const VECTOR &v, std::string name, std::string outfile, std::string dof_type, std::string filetype)=0
virtual void StateSizeInfo(std::stringstream &out)=0
virtual bool ComputeReducedConstraints(const ControlVector< VECTOR > &q, ConstraintVector< VECTOR > &g)=0
void RegisterExceptionHandler(DOpEExceptionHandler< VECTOR > *OH)
Definition: reducedprobleminterface.h:138
Definition: optproblemcontainer.h:70
void InitializeFunctionalValues(unsigned int N)
Definition: reducedprobleminterface.h:279
Definition: controlvector.h:49
DOpEOutputHandler< VECTOR > * GetOutputHandler()
Definition: reducedprobleminterface.h:150
virtual void ComputeReducedHessianVector(const ControlVector< VECTOR > &q, const ControlVector< VECTOR > &direction, ControlVector< VECTOR > &hessian_direction, ControlVector< VECTOR > &hessian_direction_transposed)=0
PROBLEM * GetProblem()
Definition: reducedprobleminterface.h:491
void AddUserDomainData(std::string name, const VECTOR *new_data)
Definition: reducedprobleminterface.h:242
Definition: outputhandler.h:42
virtual const std::map< std::string, unsigned int > & GetFunctionalPosition() const
Definition: reducedprobleminterface.h:317
std::string GetPostIndex() const
Definition: reducedprobleminterface.h:522
double GetFunctionalValue(std::string name) const
Definition: reducedprobleminterface.h:165
std::vector< std::vector< double > > & GetFunctionalValues()
Definition: reducedprobleminterface.h:289
virtual void ComputeReducedHessianInverseVector(const ControlVector< VECTOR > &, const ControlVector< VECTOR > &, ControlVector< VECTOR > &)
Definition: reducedprobleminterface.h:447
void InitializeDWRC(DWRC &dwrc)
Definition: reducedprobleminterface.h:506
virtual void ComputeReducedGradientOfGlobalConstraints(unsigned int, const ControlVector< VECTOR > &, const ConstraintVector< VECTOR > &, ControlVector< VECTOR > &, ControlVector< VECTOR > &)
Definition: reducedprobleminterface.h:469
void RegisterOutputHandler(DOpEOutputHandler< VECTOR > *OH)
Definition: reducedprobleminterface.h:133
virtual void WriteToFileElementwise(const Vector< double > &, std::string, std::string, std::string, std::string)
Definition: reducedprobleminterface.h:101
ReducedProblemInterface(PROBLEM *OP, int base_priority=0)
Definition: reducedprobleminterface.h:339
~ReducedProblemInterface()
Definition: reducedprobleminterface.h:346
Definition: reducedprobleminterface.h:336
const std::map< std::string, const VECTOR * > & GetUserDomainData() const
Definition: reducedprobleminterface.h:301
virtual const std::map< std::string, unsigned int > & GetFunctionalPosition() const
Definition: reducedprobleminterface.h:517
int GetBasePriority() const
Definition: reducedprobleminterface.h:527
virtual void ComputeReducedFunctionals(const ControlVector< VECTOR > &q)=0
const std::vector< double > & GetTimeFunctionalValue(std::string name) const
Definition: reducedprobleminterface.h:203
virtual double ComputeReducedCostFunctional(const ControlVector< VECTOR > &q)=0
const std::vector< std::vector< double > > & GetFunctionalValues() const
Definition: reducedprobleminterface.h:295
void SetProblemType(std::string type, unsigned int num=0)
Definition: reducedprobleminterface.h:486
virtual void ComputeReducedGradient(const ControlVector< VECTOR > &q, ControlVector< VECTOR > &gradient, ControlVector< VECTOR > &gradient_transposed)=0
const PROBLEM * GetProblem() const
Definition: reducedprobleminterface.h:497
Definition: dopeexception.h:35
ReducedProblemInterface_Base()
Definition: reducedprobleminterface.h:55
virtual void GetControlBoxConstraints(ControlVector< VECTOR > &lb, ControlVector< VECTOR > &ub)=0
virtual ~ReducedProblemInterface_Base()
Definition: reducedprobleminterface.h:62
virtual void ReInit()
Definition: reducedprobleminterface.h:358
Definition: optproblemcontainer.h:72