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");
121 std::string outfile, std::string dof_type, std::string filetype)=0;
132 WriteToFile(
const std::vector<double> &v, std::string outfile) =0;
142 _ExceptionHandler = OH;
148 assert(_ExceptionHandler);
149 return _ExceptionHandler;
154 assert(_OutputHandler);
155 return _OutputHandler;
169 typename std::map<std::string, unsigned int>::const_iterator it =
174 "Did not find " + name +
" in the list of functionals.",
175 "ReducedProblemInterface_Base::GetFunctionalValue");
177 unsigned int pos = it->second;
183 "Apparently the Functional in question was never evaluated!",
184 "ReducedProblemInterface_Base::GetFunctionalValue");
187 "The Functional has been evaluated too many times! \n\tMaybe you should use GetTimeFunctionalValue.",
188 "ReducedProblemInterface_Base::GetFunctionalValue");
204 const std::vector<double>&
207 typename std::map<std::string, unsigned int>::const_iterator it =
212 "Did not find " + name +
" in the list of functionals.",
213 "ReducedProblemInterface_Base::GetFunctionalValue");
215 unsigned int pos = it->second;
221 "Apparently the Functional in question was never evaluated!",
222 "ReducedProblemInterface_Base::GetTimeFunctionalValue");
225 "The Functional has been evaluated too many times! \n\tMaybe you should use GetTimeFunctionalValue.",
226 "ReducedProblemInterface_Base::GetTimeFunctionalValue");
246 if (_user_domain_data.find(name) != _user_domain_data.end())
249 "Adding multiple Data with name " + name +
" is prohibited!",
250 "ReducedProblemInterface::AddUserDomainData");
252 _user_domain_data.insert(
253 std::pair<std::string, const VECTOR*>(name, new_data));
264 typename std::map<std::string, const VECTOR *>::iterator it =
265 _user_domain_data.find(name);
266 if (it == _user_domain_data.end())
269 "Deleting Data " + name +
" is impossible! Data not found",
270 "Integrator::DeleteDomainData");
272 _user_domain_data.erase(it);
290 std::vector<std::vector<double> >&
293 return _functional_values;
296 const std::vector<std::vector<double> >&
299 return _functional_values;
302 const std::map<std::string, const VECTOR*>&
305 return _user_domain_data;
318 virtual const std::map<std::string, unsigned int>&
322 "ReducedProblemInterface_Base::GetFunctionalPosition");
329 std::vector<std::vector<double> > _functional_values;
330 std::map<std::string, const VECTOR*> _user_domain_data;
337 template<
typename PROBLEM,
typename VECTOR>
345 _base_priority = base_priority;
346 _post_index =
"_" + this->
GetProblem()->GetName();
454 "ReducedProblemInterface::ComputeReducedHessianInverseVector");
479 "ReducedProblemInterface::ComputeReducedGradientOfGlobalConstraints");
510 dwrc.Initialize(
GetProblem()->GetSpaceTimeHandler(),
518 virtual const std::map<std::string, unsigned int>&
531 return _base_priority;
536 std::string _post_index;
Definition: constraintvector.h:47
DOpEExceptionHandler< VECTOR > * GetExceptionHandler()
Definition: reducedprobleminterface.h:146
void DeleteUserDomainData(std::string name)
Definition: reducedprobleminterface.h:261
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:140
Definition: optproblemcontainer.h:70
void InitializeFunctionalValues(unsigned int N)
Definition: reducedprobleminterface.h:281
Definition: controlvector.h:48
DOpEOutputHandler< VECTOR > * GetOutputHandler()
Definition: reducedprobleminterface.h:152
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:493
void AddUserDomainData(std::string name, const VECTOR *new_data)
Definition: reducedprobleminterface.h:244
Definition: outputhandler.h:42
virtual const std::map< std::string, unsigned int > & GetFunctionalPosition() const
Definition: reducedprobleminterface.h:319
std::string GetPostIndex() const
Definition: reducedprobleminterface.h:524
double GetFunctionalValue(std::string name) const
Definition: reducedprobleminterface.h:167
std::vector< std::vector< double > > & GetFunctionalValues()
Definition: reducedprobleminterface.h:291
virtual void ComputeReducedHessianInverseVector(const ControlVector< VECTOR > &, const ControlVector< VECTOR > &, ControlVector< VECTOR > &)
Definition: reducedprobleminterface.h:449
void InitializeDWRC(DWRC &dwrc)
Definition: reducedprobleminterface.h:508
virtual void ComputeReducedGradientOfGlobalConstraints(unsigned int, const ControlVector< VECTOR > &, const ConstraintVector< VECTOR > &, ControlVector< VECTOR > &, ControlVector< VECTOR > &)
Definition: reducedprobleminterface.h:471
void RegisterOutputHandler(DOpEOutputHandler< VECTOR > *OH)
Definition: reducedprobleminterface.h:135
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:341
~ReducedProblemInterface()
Definition: reducedprobleminterface.h:348
Definition: reducedprobleminterface.h:338
const std::map< std::string, const VECTOR * > & GetUserDomainData() const
Definition: reducedprobleminterface.h:303
virtual const std::map< std::string, unsigned int > & GetFunctionalPosition() const
Definition: reducedprobleminterface.h:519
int GetBasePriority() const
Definition: reducedprobleminterface.h:529
virtual void ComputeReducedFunctionals(const ControlVector< VECTOR > &q)=0
const std::vector< double > & GetTimeFunctionalValue(std::string name) const
Definition: reducedprobleminterface.h:205
virtual double ComputeReducedCostFunctional(const ControlVector< VECTOR > &q)=0
const std::vector< std::vector< double > > & GetFunctionalValues() const
Definition: reducedprobleminterface.h:297
void SetProblemType(std::string type, unsigned int num=0)
Definition: reducedprobleminterface.h:488
virtual void ComputeReducedGradient(const ControlVector< VECTOR > &q, ControlVector< VECTOR > &gradient, ControlVector< VECTOR > &gradient_transposed)=0
const PROBLEM * GetProblem() const
Definition: reducedprobleminterface.h:499
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:360
Definition: optproblemcontainer.h:72