24 #ifndef SOLVER_INTERFACE_H_
25 #define SOLVER_INTERFACE_H_
35 #include <deal.II/numerics/data_out.h>
36 #include <deal.II/lac/vector.h>
41 template<
typename VECTOR>
42 class DOpEOutputHandler;
43 template<
typename VECTOR>
44 class DOpEExceptionHandler;
50 template<
typename VECTOR>
51 class ReducedProblemInterface_Base
56 ExceptionHandler_ = NULL;
57 OutputHandler_ = NULL;
85 WriteToFile(
const VECTOR &v, std::string name, std::string outfile,
86 std::string dof_type, std::string filetype)=0;
101 std::string , std::string ,
104 throw DOpEException(
"NotImplemented",
"WriteToFileElementwise");
118 std::string dof_type)=0;
129 WriteToFile(
const std::vector<double> &v, std::string outfile) =0;
139 ExceptionHandler_ = OH;
145 assert(ExceptionHandler_);
146 return ExceptionHandler_;
151 assert(OutputHandler_);
152 return OutputHandler_;
166 typename std::map<std::string, unsigned int>::const_iterator it =
171 "Did not find " + name +
" in the list of functionals.",
172 "ReducedProblemInterface_Base::GetFunctionalValue");
174 unsigned int pos = it->second;
180 "Apparently the Functional in question was never evaluated!",
181 "ReducedProblemInterface_Base::GetFunctionalValue");
184 "The Functional has been evaluated too many times! \n\tMaybe you should use GetTimeFunctionalValue.",
185 "ReducedProblemInterface_Base::GetFunctionalValue");
201 const std::vector<double>&
204 typename std::map<std::string, unsigned int>::const_iterator it =
209 "Did not find " + name +
" in the list of functionals.",
210 "ReducedProblemInterface_Base::GetFunctionalValue");
212 unsigned int pos = it->second;
218 "Apparently the Functional in question was never evaluated!",
219 "ReducedProblemInterface_Base::GetTimeFunctionalValue");
222 "The Functional has been evaluated too many times! \n\tMaybe you should use GetTimeFunctionalValue.",
223 "ReducedProblemInterface_Base::GetTimeFunctionalValue");
243 if (user_domain_data_.find(name) != user_domain_data_.end())
246 "Adding multiple Data with name " + name +
" is prohibited!",
247 "ReducedProblemInterface::AddUserDomainData");
249 user_domain_data_.insert(
250 std::pair<std::string, const VECTOR*>(name, new_data));
261 typename std::map<std::string, const VECTOR *>::iterator it =
262 user_domain_data_.find(name);
263 if (it == user_domain_data_.end())
266 "Deleting Data " + name +
" is impossible! Data not found",
267 "Integrator::DeleteDomainData");
269 user_domain_data_.erase(it);
287 std::vector<std::vector<double> >&
290 return functional_values_;
293 const std::vector<std::vector<double> >&
296 return functional_values_;
299 const std::map<std::string, const VECTOR*>&
302 return user_domain_data_;
315 virtual const std::map<std::string, unsigned int>&
319 "ReducedProblemInterface_Base::GetFunctionalPosition");
326 std::vector<std::vector<double> > functional_values_;
327 std::map<std::string, const VECTOR*> user_domain_data_;
334 template<
typename PROBLEM,
typename VECTOR>
342 base_priority_ = base_priority;
343 post_index_ =
"_" + this->
GetProblem()->GetName();
451 "ReducedProblemInterface::ComputeReducedHessianInverseVector");
476 "ReducedProblemInterface::ComputeReducedGradientOfGlobalConstraints");
507 dwrc.Initialize(
GetProblem()->GetSpaceTimeHandler(),
515 virtual const std::map<std::string, unsigned int>&
528 return base_priority_;
533 std::string post_index_;
Definition: constraintvector.h:48
DOpEExceptionHandler< VECTOR > * GetExceptionHandler()
Definition: reducedprobleminterface.h:143
void DeleteUserDomainData(std::string name)
Definition: reducedprobleminterface.h:258
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:137
Definition: optproblemcontainer.h:70
void InitializeFunctionalValues(unsigned int N)
Definition: reducedprobleminterface.h:278
Definition: controlvector.h:49
DOpEOutputHandler< VECTOR > * GetOutputHandler()
Definition: reducedprobleminterface.h:149
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:490
void AddUserDomainData(std::string name, const VECTOR *new_data)
Definition: reducedprobleminterface.h:241
Definition: outputhandler.h:42
virtual const std::map< std::string, unsigned int > & GetFunctionalPosition() const
Definition: reducedprobleminterface.h:316
std::string GetPostIndex() const
Definition: reducedprobleminterface.h:521
double GetFunctionalValue(std::string name) const
Definition: reducedprobleminterface.h:164
std::vector< std::vector< double > > & GetFunctionalValues()
Definition: reducedprobleminterface.h:288
virtual void ComputeReducedHessianInverseVector(const ControlVector< VECTOR > &, const ControlVector< VECTOR > &, ControlVector< VECTOR > &)
Definition: reducedprobleminterface.h:446
void InitializeDWRC(DWRC &dwrc)
Definition: reducedprobleminterface.h:505
virtual void ComputeReducedGradientOfGlobalConstraints(unsigned int, const ControlVector< VECTOR > &, const ConstraintVector< VECTOR > &, ControlVector< VECTOR > &, ControlVector< VECTOR > &)
Definition: reducedprobleminterface.h:468
void RegisterOutputHandler(DOpEOutputHandler< VECTOR > *OH)
Definition: reducedprobleminterface.h:132
virtual void WriteToFileElementwise(const Vector< double > &, std::string, std::string, std::string, std::string)
Definition: reducedprobleminterface.h:100
ReducedProblemInterface(PROBLEM *OP, int base_priority=0)
Definition: reducedprobleminterface.h:338
~ReducedProblemInterface()
Definition: reducedprobleminterface.h:345
Definition: reducedprobleminterface.h:335
const std::map< std::string, const VECTOR * > & GetUserDomainData() const
Definition: reducedprobleminterface.h:300
virtual const std::map< std::string, unsigned int > & GetFunctionalPosition() const
Definition: reducedprobleminterface.h:516
int GetBasePriority() const
Definition: reducedprobleminterface.h:526
virtual void ComputeReducedFunctionals(const ControlVector< VECTOR > &q)=0
const std::vector< double > & GetTimeFunctionalValue(std::string name) const
Definition: reducedprobleminterface.h:202
virtual double ComputeReducedCostFunctional(const ControlVector< VECTOR > &q)=0
const std::vector< std::vector< double > > & GetFunctionalValues() const
Definition: reducedprobleminterface.h:294
void SetProblemType(std::string type, unsigned int num=0)
Definition: reducedprobleminterface.h:485
virtual void ComputeReducedGradient(const ControlVector< VECTOR > &q, ControlVector< VECTOR > &gradient, ControlVector< VECTOR > &gradient_transposed)=0
const PROBLEM * GetProblem() const
Definition: reducedprobleminterface.h:496
Definition: dopeexception.h:35
ReducedProblemInterface_Base()
Definition: reducedprobleminterface.h:54
virtual void GetControlBoxConstraints(ControlVector< VECTOR > &lb, ControlVector< VECTOR > &ub)=0
virtual ~ReducedProblemInterface_Base()
Definition: reducedprobleminterface.h:61
virtual void ReInit()
Definition: reducedprobleminterface.h:357
Definition: optproblemcontainer.h:72