24 #ifndef HIGHER_ORDER_DWRC_CONTROL_H_
25 #define HIGHER_ORDER_DWRC_CONTROL_H_
28 #include <deal.II/fe/fe_tools.h>
38 template<
class STH,
class IDC,
class EDC,
class FDC,
typename VECTOR>
60 higher_order_sth), idc_higher_order_(higher_order_idc), res_eval_(res_eval),
61 PI_h_u_(NULL), PI_h_z_(NULL), PI_h_q_(NULL)
68 state_behavior, param_reader);
75 state_behavior, param_reader);
98 return "DWR-Estimator-with-Control";
104 std::vector<unsigned int>& control_block_component,
105 unsigned int state_n_blocks,
106 std::vector<unsigned int>& state_block_component)
108 sth_ =
dynamic_cast<STH*
>(sth);
109 control_n_blocks_ = control_n_blocks;
110 control_block_component_ = &control_block_component;
111 state_n_blocks_ = state_n_blocks;
112 state_block_component_ = &state_block_component;
120 ReInit(
unsigned int n_elements);
172 u_high.reinit(
GetPI_h_u().GetSpacialVector());
174 dealii::FETools::extrapolate(
175 GetSTH().GetStateDoFHandler().GetDEALDoFHandler(),
180 dealii::FETools::interpolate(
181 GetSTH().GetStateDoFHandler().GetDEALDoFHandler(),
185 GetPI_h_u().GetSpacialVector().add(-1., u_high);
192 u_high.reinit(
GetPI_h_u().GetSpacialVector());
194 dealii::FETools::extrapolate(
195 GetSTH().GetStateDoFHandler().GetDEALDoFHandler(), u,
199 dealii::FETools::interpolate(
200 GetSTH().GetStateDoFHandler().GetDEALDoFHandler(), u,
203 GetPI_h_u().GetSpacialVector().add(-1., u_high);
215 z_high.reinit(
GetPI_h_z().GetSpacialVector());
217 dealii::FETools::extrapolate(
218 GetSTH().GetStateDoFHandler().GetDEALDoFHandler(),
224 dealii::FETools::interpolate(
225 GetSTH().GetStateDoFHandler().GetDEALDoFHandler(),
230 GetPI_h_z().GetSpacialVector().add(-1., z_high);
242 q_high.reinit(
GetPI_h_q().GetSpacialVector());
244 dealii::FETools::extrapolate(
245 GetSTH().GetControlDoFHandler().GetDEALDoFHandler(),
251 dealii::FETools::interpolate(
252 GetSTH().GetControlDoFHandler().GetDEALDoFHandler(),
257 GetPI_h_q().GetSpacialVector().add(-1., q_high);
333 return sth_higher_order_;
339 return sth_higher_order_;
345 return idc_higher_order_;
351 return idc_higher_order_;
355 unsigned int control_n_blocks_, state_n_blocks_;
356 std::vector<unsigned int>* control_block_component_;
357 std::vector<unsigned int>* state_block_component_;
359 STH& sth_higher_order_;
361 IDC& idc_higher_order_;
369 template<
class STH,
class IDC,
class EDC,
class FDC,
typename VECTOR>
372 unsigned int n_elements)
376 GetHigherOrderSTH().ReInit(control_n_blocks_, *control_block_component_, state_n_blocks_, *state_block_component_);
381 GetPI_h_z().ReInit();
387 GetPI_h_u().ReInit();
391 GetPI_h_q().ReInit();
Definition: dopetypes.h:68
STH & GetHigherOrderSTH()
Definition: higher_order_dwrc_control.h:331
void PreparePI_h_q(const ControlVector< VECTOR > &q)
Definition: higher_order_dwrc_control.h:239
const STH & GetWeightSTH() const
Definition: higher_order_dwrc_control.h:129
HigherOrderDWRContainerControl(STH &higher_order_sth, IDC &higher_order_idc, DOpEtypes::VectorStorageType control_behavior, DOpEtypes::VectorStorageType state_behavior, ParameterReader ¶m_reader, DOpEtypes::EETerms ee_terms=DOpEtypes::EETerms::mixed, DOpEtypes::ResidualEvaluation res_eval=DOpEtypes::strong_residual)
Definition: higher_order_dwrc_control.h:55
void PreparePI_h_u(const VECTOR &u)
Definition: higher_order_dwrc_control.h:189
Definition: higher_order_dwrc_control.h:39
bool NeedDual() const
Definition: higher_order_dwrc_control.h:284
VECTOR & GetSpacialVector()
Definition: statevector.cc:383
std::string GetName() const
Definition: higher_order_dwrc_control.h:96
Definition: parameterreader.h:36
const STH & GetHigherOrderSTH() const
Definition: higher_order_dwrc_control.h:337
const IDC & GetHigherOrderIDC() const
Definition: higher_order_dwrc_control.h:349
virtual DOpEtypes::ResidualEvaluation GetResidualEvaluation() const
Definition: higher_order_dwrc_control.h:302
void VectorResidualModifier(dealii::Vector< double > &)
Definition: higher_order_dwrc_control.h:318
IDC & GetWeightIDC()
Definition: higher_order_dwrc_control.h:135
Definition: dopetypes.h:68
void PreparePI_h_u(const StateVector< VECTOR > &u)
Definition: higher_order_dwrc_control.h:169
StateVector< VECTOR > & GetPI_h_z()
Definition: higher_order_dwrc_control.h:153
STH & GetSTH()
Definition: higher_order_dwrc_control.h:325
Definition: controlvector.h:49
Definition: dopetypes.h:82
const IDC & GetWeightIDC() const
Definition: higher_order_dwrc_control.h:141
Definition: dopetypes.h:68
Definition: dopetypes.h:93
DOpEtypes::EETerms GetEETerms() const
Definition: dwrdatacontainer.h:365
virtual FDC & GetFaceWeight() const
Definition: higher_order_dwrc_control.h:275
virtual DOpEtypes::WeightComputation GetWeightComputation() const
Definition: higher_order_dwrc_control.h:293
EETerms
Definition: dopetypes.h:66
Definition: dopetypes.h:68
void Initialize(STH2 *sth, unsigned int control_n_blocks, std::vector< unsigned int > &control_block_component, unsigned int state_n_blocks, std::vector< unsigned int > &state_block_component)
Definition: higher_order_dwrc_control.h:103
Definition: statevector.h:50
STH & GetWeightSTH()
Definition: higher_order_dwrc_control.h:123
virtual EDC & GetElementWeight() const
Definition: higher_order_dwrc_control.h:266
VECTOR & GetSpacialVector()
******************************************************/
Definition: controlvector.cc:204
virtual ~HigherOrderDWRContainerControl()
Definition: higher_order_dwrc_control.h:85
ResidualEvaluation
Definition: dopetypes.h:91
void ResidualModifier(double &)
Definition: higher_order_dwrc_control.h:313
VectorStorageType
Definition: dopetypes.h:120
ControlVector< VECTOR > & GetPI_h_q()
Definition: higher_order_dwrc_control.h:158
WeightComputation
Definition: dopetypes.h:80
virtual void ReInit(unsigned int n_elements)
Definition: dwrdatacontainer.h:530
StateVector< VECTOR > & GetPI_h_u()
Definition: higher_order_dwrc_control.h:147
IDC & GetHigherOrderIDC()
Definition: higher_order_dwrc_control.h:343
Definition: dwrdatacontainer.h:545
void PreparePI_h_z(const StateVector< VECTOR > &z)
Definition: higher_order_dwrc_control.h:212
void ReInit(unsigned int n_elements)
Definition: higher_order_dwrc_control.h:371