33 #ifndef __H__UG__LIB_DISC__SPATIAL_DISC__DOMAIN_DISC_INTERFACE__
34 #define __H__UG__LIB_DISC__SPATIAL_DISC__DOMAIN_DISC_INTERFACE__
49 template <
typename TAlgebra>
83 const std::vector<number>& vScaleMass,
84 const std::vector<number>& vScaleStiff,
91 const std::vector<number>& vScaleMass,
92 const std::vector<number>& vScaleStiff,
105 template <
typename TDomain>
134 template <
typename TAlgebra>
276 const std::vector<number>& vScaleMass,
277 const std::vector<number>& vScaleStiff,
281 const std::vector<number>& vScaleMass,
282 const std::vector<number>& vScaleStiff,
288 const std::vector<number>& vScaleMass,
289 const std::vector<number>& vScaleStiff)
305 const std::vector<number>& vScaleMass,
306 const std::vector<number>& vScaleStiff,
310 const std::vector<number>& vScaleMass,
311 const std::vector<number>& vScaleStiff,
317 const std::vector<number>& vScaleMass,
318 const std::vector<number>& vScaleStiff)
333 const std::vector<number>& vScaleMass,
334 const std::vector<number>& vScaleStiff,
338 const std::vector<number>& vScaleMass,
339 const std::vector<number>& vScaleStiff,
345 const std::vector<number>& vScaleMass,
346 const std::vector<number>& vScaleStiff)
Definition: smart_pointer.h:296
Definition: smart_pointer.h:108
Definition: grid_level.h:42
Interface providing Jacobian and Defect of a discretization.
Definition: assemble_interface.h:110
TAlgebra::vector_type vector_type
Type of algebra vector.
Definition: assemble_interface.h:119
TAlgebra::matrix_type matrix_type
Type of algebra matrix.
Definition: assemble_interface.h:116
Interface for domain discretization.
Definition: domain_disc_interface.h:136
virtual SmartPtr< IConstraint< TAlgebra > > constraint(size_t i)=0
returns the i'th post process
virtual void assemble_linear(matrix_type &A, vector_type &b, const GridLevel &gl)=0
Assembles Matrix and Right-Hand-Side for a linear problem.
virtual void assemble_defect(vector_type &d, const vector_type &u, const GridLevel &gl)=0
assembles Defect
virtual void assemble_jacobian(matrix_type &J, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const number s_a, const GridLevel &gl)=0
assembles Jacobian (or Approximation of Jacobian)
virtual void assemble_jacobian(matrix_type &J, const vector_type &u, ConstSmartPtr< DoFDistribution > dd)=0
virtual void prepare_timestep_elem(ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const GridLevel &gl)=0
virtual void prepare_timestep(ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, number future_time)
Definition: domain_disc_interface.h:223
virtual void assemble_defect(vector_type &d, const vector_type &u, ConstSmartPtr< DoFDistribution > dd)=0
virtual void prepare_timestep(ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, number future_time, ConstSmartPtr< DoFDistribution > dd)=0
prepares time step
virtual void assemble_mass_matrix(matrix_type &M, const vector_type &u, const GridLevel &gl)=0
assembles the mass matrix
algebra_type::vector_type vector_type
Type of algebra vector.
Definition: domain_disc_interface.h:147
virtual void assemble_rhs(vector_type &b, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, ConstSmartPtr< DoFDistribution > dd)=0
virtual void finish_timestep_elem(ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, ConstSmartPtr< DoFDistribution > dd)=0
virtual void assemble_mass_matrix(matrix_type &M, const vector_type &u, ConstSmartPtr< DoFDistribution > dd)=0
virtual void finish_timestep_elem(ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const GridLevel &gl)=0
finishes timestep
virtual void assemble_rhs(vector_type &b, ConstSmartPtr< DoFDistribution > dd)=0
void prepare_timestep_elem(ConstSmartPtr< VectorTimeSeries< vector_type > > vSol)
prepares timestep on surface level
Definition: domain_disc_interface.h:237
void assemble_jacobian(matrix_type &J, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const number s_a)
assembles jacobian on surface level
Definition: domain_disc_interface.h:258
virtual void assemble_rhs(vector_type &b, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, const GridLevel &gl)=0
Assembles Right-Hand-Side for a linear problem.
void assemble_linear(matrix_type &A, vector_type &b, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff)
assembles linear on surface level
Definition: domain_disc_interface.h:315
virtual void prepare_timestep_elem(ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, ConstSmartPtr< DoFDistribution > dd)=0
prepares time step element-wise
virtual void assemble_linear(matrix_type &A, vector_type &b, ConstSmartPtr< DoFDistribution > dd)=0
virtual void assemble_defect(vector_type &d, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, ConstSmartPtr< DoFDistribution > dd)=0
virtual size_t num_constraints() const =0
returns the number of post processes
virtual ~IDomainDiscretization()
Definition: domain_disc_interface.h:148
TAlgebra algebra_type
Algebra type.
Definition: domain_disc_interface.h:141
void assemble_rhs(vector_type &b, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff)
assembles rhs on surface level
Definition: domain_disc_interface.h:343
void finish_timestep_elem(ConstSmartPtr< VectorTimeSeries< vector_type > > vSol)
finishes timestep on surface level
Definition: domain_disc_interface.h:389
virtual void finish_timestep(ConstSmartPtr< VectorTimeSeries< vector_type > > vSol)
Definition: domain_disc_interface.h:375
virtual void adjust_solution(vector_type &u, const GridLevel &gl)=0
sets dirichlet values in solution vector
void assemble_defect(vector_type &d, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff)
assembles defect on surface level
Definition: domain_disc_interface.h:286
virtual void assemble_linear(matrix_type &A, vector_type &b, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, ConstSmartPtr< DoFDistribution > dd)=0
virtual void assemble_defect(vector_type &d, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, const GridLevel &gl)=0
assembles Defect
virtual void finish_timestep(ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, ConstSmartPtr< DoFDistribution > dd)=0
finishes time step
virtual void assemble_rhs(vector_type &b, const GridLevel &gl)=0
assembles the rhs
virtual void assemble_jacobian(matrix_type &J, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const number s_a0, ConstSmartPtr< DoFDistribution > dd)=0
virtual void assemble_rhs(vector_type &rhs, const vector_type &u, const GridLevel &gl)=0
assembles the rhs
virtual void adjust_solution(vector_type &u, number time, ConstSmartPtr< DoFDistribution > dd)=0
algebra_type::matrix_type matrix_type
Type of algebra matrix.
Definition: domain_disc_interface.h:144
virtual void assemble_jacobian(matrix_type &J, const vector_type &u, const GridLevel &gl)=0
assembles Jacobian (or Approximation of Jacobian)
virtual void assemble_rhs(vector_type &rhs, const vector_type &u, ConstSmartPtr< DoFDistribution > dd)=0
virtual void assemble_stiffness_matrix(matrix_type &A, const vector_type &u, const GridLevel &gl)=0
assembles the stiffness matrix
virtual void prepare_timestep(ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, number future_time, const GridLevel &gl)=0
virtual void adjust_solution(vector_type &u, ConstSmartPtr< DoFDistribution > dd)=0
virtual void adjust_solution(vector_type &u, number time, const GridLevel &gl)=0
sets dirichlet values in solution vector
virtual void finish_timestep(ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const GridLevel &gl)=0
virtual void assemble_stiffness_matrix(matrix_type &A, const vector_type &u, ConstSmartPtr< DoFDistribution > dd)=0
void adjust_solution(vector_type &u, number time)
adjust solution on surface level
Definition: domain_disc_interface.h:362
virtual void assemble_linear(matrix_type &A, vector_type &b, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, const GridLevel &gl)=0
Assembles matrix_type and Right-Hand-Side for a linear problem.
Interface for an object that can estimate the (global) error.
Definition: domain_disc_interface.h:51
virtual void calc_error(const vector_type &u, ConstSmartPtr< DoFDistribution > dd, error_vector_type *u_vtk=NULL)=0
virtual void calc_error(const vector_type &u, const GridLevel &gl, error_vector_type *u_vtk=NULL)=0
virtual void calc_error(ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, const GridLevel &gl, error_vector_type *u_vtk)=0
Transient version.
virtual ~IDomainErrorIndicator()
Definition: domain_disc_interface.h:60
virtual bool is_error_valid()=0
returns whether current error values are valid
virtual void invalidate_error()=0
marks error indicators as invalid
TAlgebra::vector_type vector_type
Type of algebra vector.
Definition: domain_disc_interface.h:54
CPUAlgebra::vector_type error_vector_type
Type of error vector.
Definition: domain_disc_interface.h:57
virtual void calc_error(ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, ConstSmartPtr< DoFDistribution > dd, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, error_vector_type *u_vtk)=0
Transient version.
Interface for an object that can mark elements based on a strategy.
Definition: domain_disc_interface.h:107
virtual void mark_with_strategy(IRefiner &refiner, SmartPtr< element_marking_strategy_type > spMarkingStrategy)=0
virtual ~IDomainMarker()
Definition: domain_disc_interface.h:113
IElementMarkingStrategy< TDomain > element_marking_strategy_type
Type of algebra vector.
Definition: domain_disc_interface.h:110
Abstract base class for element marking (in adaptive refinement)
Definition: error_elem_marking_strategy.h:125
The refiner interface allows to mark elements for refinement and to call refine.
Definition: refiner_interface.h:67
time series of solutions and corresponding time point
Definition: solution_time_series.h:59
double number
Definition: types.h:124