42 #ifndef __H__UG__LIB_DISC__SPACIAL_DISCRETIZATION__ELEM_DISC__NEUMANN_BOUNDARY__FV1__INNER_BOUNDARY__
43 #define __H__UG__LIB_DISC__SPACIAL_DISCRETIZATION__ELEM_DISC__NEUMANN_BOUNDARY__FV1__INNER_BOUNDARY__
45 #include <boost/function.hpp>
79 std::vector<size_t>
to;
89 std::vector<std::vector<std::pair<size_t,number> > >
fluxDeriv;
91 std::vector<size_t>
to;
95 template <
typename TImpl,
typename TDomain>
156 virtual void prepare_setting(
const std::vector<LFEID>& vLfeID,
bool bNonRegularGrid)
override;
164 template <
typename TAlgebra>
173 template<
typename TElem,
typename TFVGeom>
182 template<
typename TElem,
typename TFVGeom>
186 template<
typename TElem,
typename TFVGeom>
190 template<
typename TElem,
typename TFVGeom>
194 template<
typename TElem,
typename TFVGeom>
198 template<
typename TElem,
typename TFVGeom>
202 template<
typename TElem,
typename TFVGeom>
206 template<
typename TElem,
typename TFVGeom>
210 template <
typename TElem,
typename TFVGeom>
214 template <
typename TElem,
typename TFVGeom>
218 template <
typename TElem,
typename TFVGeom>
222 template <
typename TElem,
typename TFVGeom>
231 template <
typename TElem,
typename TFVGeom>
248 template <
typename List>
253 static const bool isEmpty = boost::mpl::empty<List>::value;
254 (
typename boost::mpl::if_c<isEmpty, RegEnd, RegNext>::type(
p));
264 typedef typename boost::mpl::front<List>::type
AlgebraType;
265 typedef typename boost::mpl::pop_front<List>::type NextList;
268 p->set_prep_timestep_fct(aid, &this_type::template prep_timestep<AlgebraType>);
288 UG_ASSERT(sh <
sideVals[ip].size(),
"Requested data for shape fct " << sh <<
", but only " <<
sideVals[ip].size() <<
" shape fcts present.");
Definition: smart_pointer.h:108
class describing the type of an algebra
Definition: algebra_type.h:49
Type based UserData.
Definition: user_data.h:501
Definition: inner_boundary.h:98
virtual ~FV1InnerBoundaryElemDisc()
Destructor.
Definition: inner_boundary.h:142
FV1InnerBoundaryElemDisc(const std::vector< std::string > &functions, const std::vector< std::string > &subsets)
Constructor with functions.
Definition: inner_boundary.h:135
MultipleSideAndElemErrEstData< domain_type > err_est_type
error estimator type
Definition: inner_boundary.h:122
void prep_elem_loop(const ReferenceObjectID roid, const int si)
prepares the loop over all elements
Definition: inner_boundary_impl.h:124
int m_si
Definition: inner_boundary.h:310
void prep_err_est_elem_loop(const ReferenceObjectID roid, const int si)
prepares the loop over all elements of one type for the computation of the error estimator
Definition: inner_boundary_impl.h:367
TDomain domain_type
Domain type.
Definition: inner_boundary.h:105
void register_all_fv1_funcs()
Definition: inner_boundary_impl.h:581
virtual void prepare_setting(const std::vector< LFEID > &vLfeID, bool bNonRegularGrid) override
type of trial space for each function used
Definition: inner_boundary_impl.h:74
DataImport< number, dim > m_fluxScale
Definition: inner_boundary.h:226
void register_fv1_func()
Definition: inner_boundary_impl.h:594
void prep_timestep(number future_time, number time, VectorProxyBase *upb)
prepare the time step
Definition: inner_boundary_impl.h:104
SmartPtr< VectorProxyBase > m_spOldSolutionProxy
Definition: inner_boundary.h:304
void add_def_M_elem(LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[])
assembles the mass part of the local defect
Definition: inner_boundary_impl.h:350
FV1InnerBoundaryElemDisc< TImpl, TDomain > this_type
own type
Definition: inner_boundary.h:112
LocalVector m_locUOld
Definition: inner_boundary.h:303
void add_def_A_elem(LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[])
assembles the stiffness part of the local defect
Definition: inner_boundary_impl.h:281
void add_jac_M_elem(LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[])
assembles the local mass matrix using a finite volume scheme
Definition: inner_boundary_impl.h:274
InnerBoundaryFluxCond FluxCond
Definition: inner_boundary.h:100
void previous_solution_required(bool b)
Definition: inner_boundary_impl.h:95
virtual bool use_hanging() const override
returns if hanging nodes are used
Definition: inner_boundary_impl.h:88
static const int dim
World dimension.
Definition: inner_boundary.h:116
void add_rhs_elem(LocalVector &rhs, GridObject *elem, const MathVector< dim > vCornerCoords[])
assembles the local right hand side
Definition: inner_boundary_impl.h:356
void fsh_elem_loop()
finishes the loop over all elements
Definition: inner_boundary_impl.h:144
InnerBoundaryFluxDerivCond FluxDerivCond
Definition: inner_boundary.h:101
IElemDisc< domain_type > base_type
Base class type.
Definition: inner_boundary.h:109
std::vector< LocalVector::value_type > m_uOldAtCorner
Definition: inner_boundary.h:308
void add_jac_A_elem(LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[])
assembles the local stiffness matrix using a finite volume scheme
Definition: inner_boundary_impl.h:205
void set_flux_scale(number scale)
Setting the flux function.
Definition: inner_boundary_impl.h:47
struct ug::FV1InnerBoundaryElemDisc::ShapeValues m_shapeValues
FV1InnerBoundaryElemDisc(const char *functions="", const char *subsets="")
Constructor with c-strings.
Definition: inner_boundary.h:128
base_type::position_type position_type
Position type.
Definition: inner_boundary.h:119
void compute_err_est_A_elem(const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale)
computes the error estimator contribution for one element
Definition: inner_boundary_impl.h:491
void prep_elem(const LocalVector &u, GridObject *elem, const ReferenceObjectID roid, const MathVector< dim > vCornerCoords[])
prepares the element for assembling
Definition: inner_boundary_impl.h:151
bool m_bNonRegularGrid
Definition: inner_boundary.h:299
void prep_err_est_elem(const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[])
prepares the element for assembling the error estimator
Definition: inner_boundary_impl.h:430
std::vector< LocalVector::value_type > m_uAtCorner
Definition: inner_boundary.h:307
bool m_bCurrElemIsHSlave
Definition: inner_boundary.h:300
bool m_bPrevSolRequired
Definition: inner_boundary.h:302
void fsh_err_est_elem_loop()
postprocesses the loop over all elements of one type in the computation of the error estimator
Definition: inner_boundary_impl.h:565
Definition: fv1_geom.h:1194
The base class for all geometric objects, such as vertices, edges, faces, volumes,...
Definition: grid_base_objects.h:157
Definition: hfv1_geom.h:976
number time() const
returns currently set timepoint
Definition: elem_disc_interface.h:677
TDomain::position_type position_type
Position type.
Definition: elem_disc_interface.h:479
TDomain domain_type
Domain type.
Definition: elem_disc_interface.h:476
Definition: elem_disc_interface.h:800
static const int dim
Definition: elem_disc_interface.h:803
Definition: local_algebra.h:422
Definition: local_algebra.h:198
Definition: err_est_data.h:506
#define UG_ASSERT(expr, msg)
Definition: assert.h:70
double number
Definition: types.h:124
ReferenceObjectID
these ids are used to identify the shape of a geometric object.
Definition: grid_base_objects.h:74
Definition: inner_boundary.h:235
this_type * m_pThis
Definition: inner_boundary.h:238
void operator()(TElem &)
Definition: inner_boundary.h:239
RegisterAssemblingFuncs(this_type *pThis)
Definition: inner_boundary.h:237
Definition: inner_boundary.h:257
RegEnd(this_type *)
Definition: inner_boundary.h:258
Definition: inner_boundary.h:261
RegNext(this_type *p)
Definition: inner_boundary.h:262
Definition: inner_boundary.h:250
RegisterPrepTimestep(this_type *p)
Definition: inner_boundary.h:251
struct holding values of shape functions in IPs
Definition: inner_boundary.h:277
void resize(size_t nSip, size_t _nSh)
Definition: inner_boundary.h:279
number & shapeAtSideIP(size_t sh, size_t ip)
Definition: inner_boundary.h:285
number * shapesAtSideIP(size_t ip)
Definition: inner_boundary.h:291
size_t num_sh()
Definition: inner_boundary.h:292
std::vector< std::vector< number > > sideVals
Definition: inner_boundary.h:295
size_t nSh
Definition: inner_boundary.h:294
Definition: inner_boundary.h:66
static const size_t _IGNORE_
index value for which a flux is ignored
Definition: inner_boundary.h:69
struct that holds information about the flux densities and from where to where the flux occurs
Definition: inner_boundary.h:75
std::vector< size_t > from
Definition: inner_boundary.h:78
std::vector< number > flux
Definition: inner_boundary.h:77
std::vector< size_t > to
Definition: inner_boundary.h:79
Definition: inner_boundary.h:85
std::vector< size_t > from
Definition: inner_boundary.h:90
std::vector< std::vector< std::pair< size_t, number > > > fluxDeriv
Definition: inner_boundary.h:89
std::vector< size_t > to
Definition: inner_boundary.h:91
Proxy struct for generic passing of any vector type.
Definition: elem_disc_interface.h:70
size_t id()
Definition: util_algebra_dependent.h:130
static AlgebraTypeIDProvider & instance()
Definition: util_algebra_dependent.h:107