33 #ifndef __H__UG__LIB_DISC__SPATIAL_DISC__DATA_LINKER__
34 #define __H__UG__LIB_DISC__SPATIAL_DISC__DATA_LINKER__
36 #include "../std_user_data.h"
49 template <
typename TImpl,
typename TData,
int dim>
51 :
public StdUserData< StdDataLinker<TImpl, TData, dim>,
53 DependentUserData<TData, dim> >
188 std::vector<FunctionIndexMapping>
m_vMap;
195 TImpl&
getImpl() {
return static_cast<TImpl&
>(*this);}
198 const TImpl&
getImpl()
const {
return static_cast<const TImpl&
>(*this);}
Definition: smart_pointer.h:296
Definition: smart_pointer.h:108
const TData & value(size_t s, size_t ip) const
returns the value at ip
Definition: user_data.h:512
The base class for all geometric objects, such as vertices, edges, faces, volumes,...
Definition: grid_base_objects.h:157
Base class for UserData.
Definition: user_data.h:260
number time() const
get the current evaluation time
Definition: user_data.h:285
Definition: local_algebra.h:198
time series of local vectors
Definition: solution_time_series.h:167
A class for fixed size, dense matrices.
Definition: math_matrix.h:52
combines several UserDatas to a new UserData of a specified type
Definition: linker.h:54
void eval_deriv(LocalVector *u, GridObject *elem, const MathVector< dim > vCornerCoords[], bool bDeriv=false)
Definition: linker_impl.h:82
const TImpl & getImpl() const
const access to implementation
Definition: linker.h:198
TImpl & getImpl()
access to implementation
Definition: linker.h:195
void set_num_input(size_t num)
sets the number of inputs
Definition: linker.h:107
std::vector< FunctionIndexMapping > m_vMap
Function mapping for each input relative to common FunctionGroup.
Definition: linker.h:188
bool zero_derivative(size_t i) const
returns if the derivative of the i'th input is zero
Definition: linker.h:100
virtual void local_ips_changed(const size_t seriesID, const size_t newNumIP)
forwards the local positions to the data inputs
Definition: linker_impl.h:290
std::vector< SmartPtr< ICplUserData< dim > > > m_vspICplUserData
data input
Definition: linker.h:182
virtual void local_ip_series_to_be_cleared()
requests cleaning of the ip series in the data inputs
Definition: linker_impl.h:321
std::vector< std::vector< size_t > > m_vvSeriesID
series id the linker uses to get data from input
Definition: linker.h:191
size_t series_id(size_t i, size_t s) const
returns the series id set for the i'th input
Definition: linker.h:161
virtual size_t num_input() const
number of inputs
Definition: linker.h:124
virtual SmartPtr< ICplUserData< dim > > needed_data(size_t i)
return needed data
Definition: linker.h:130
size_t input_common_fct(size_t i, size_t fct) const
returns the number in the common FctGrp for a fct of an input
Definition: linker.h:153
std::vector< SmartPtr< UserDataInfo > > m_vspUserDataInfo
data input casted to IDependend data
Definition: linker.h:185
virtual void set_function_pattern(ConstSmartPtr< FunctionPattern > fctPatt)
updates the function group
Definition: linker_impl.h:198
virtual void set_input(size_t i, SmartPtr< ICplUserData< dim > > input, SmartPtr< UserDataInfo > info)
sets an input
Definition: linker.h:114
virtual void operator()(TData &value, const MathVector< dim > &globIP, number time, int si) const
returns value for a global position
Definition: linker_impl.h:46
virtual bool zero_derivative() const
returns if derivative is zero
Definition: linker_impl.h:179
virtual void global_ips_changed(const size_t seriesID, const MathVector< dim > *vPos, const size_t numIP)
forwards the global positions to the data inputs
Definition: linker_impl.h:338
virtual void local_ip_series_added(const size_t seriesID)
requests series id's from input data
Definition: linker_impl.h:242
virtual void check_setup() const
returns if data is ok
Definition: linker_impl.h:188
virtual void compute(LocalVector *u, GridObject *elem, const MathVector< dim > vCornerCoords[], bool bDeriv=false)
compute values (and derivatives iff compDeriv == true)
Definition: linker_impl.h:130
void evaluate(TData vValue[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< refDim > vLocIP[], const size_t nip, LocalVector *u, const MathMatrix< refDim, dim > *vJT=NULL) const
Definition: linker_impl.h:66
virtual bool requires_grid_fct() const
returns that a grid function is needed for evaluation
Definition: linker_impl.h:161
virtual size_t num_needed_data() const
number of other Data this data depends on
Definition: linker.h:127
size_t input_num_fct(size_t i) const
returns number of functions the input depends on
Definition: linker.h:145
virtual bool continuous() const
returns if provided data is continuous over geometric object boundaries
Definition: linker_impl.h:170
Definition: std_user_data.h:63
size_t num_fct() const
number of functions this export depends on
Definition: user_data.h:81
#define UG_ASSERT(expr, msg)
Definition: assert.h:70
double number
Definition: types.h:124