11#ifndef __H__UG__LIB_DISC__SPATIAL_DISC__D3F_LINKER__
12#define __H__UG__LIB_DISC__SPATIAL_DISC__D3F_LINKER__
57 (*m_spVelocity)(q, globIP,
time, si);
58 (*m_spDispersion)(D, globIP,
time, si);
67 value = (qnorm*qnorm*qnorm*L)/qtDq;
86 number size = ElementSize<dim>(roid, vCornerCoords);
89 std::vector<MathVector<dim> > vVelocity(nip);
90 std::vector<MathMatrix<dim,dim> > vDispersion(nip);
92 (*m_spVelocity)(&vVelocity[0], vGlobIP,
time, si,
93 elem, vCornerCoords, vLocIP, nip, u, vJT);
94 (*m_spDispersion)(&vDispersion[0], vGlobIP,
time, si,
95 elem, vCornerCoords, vLocIP, nip, u, vJT);
97 for(
size_t ip = 0;
ip < nip; ++
ip)
106 vValue[
ip] = qnorm_ip*qnorm_ip*qnorm_ip*hL;
107 vValue[
ip] /= qtDq_ip;
115 template <
int refDim>
126 std::vector<std::vector<number > > vvvDeriv[]
137 UG_ASSERT(0,
"eval_and_deriv not implemented.");
139 this->set_zero(vvvDeriv, nip);
203 (*m_spDispersion)(dispersion, globIP,
time, si);
210 template <
int refDim>
221 std::vector<MathMatrix<dim,dim> > vDispersion(nip);
222 (*m_spDispersion)(&vDispersion[0], vGlobIP,
time, si,
223 elem, vCornerCoords, vLocIP, nip, u, vJT);
225 for(
size_t ip = 0;
ip < nip; ++
ip)
229 UG_LOG(
"aniso_evaluate2:" << vValue[
ip] << std::endl);
234 template <
int refDim>
245 std::vector<std::vector<number > > vvvDeriv[]
256 UG_ASSERT(0,
"eval_and_deriv not implemented.");
258 this->set_zero(vvvDeriv, nip);
298 virtual void operator() (MathVector<dim>& value,
299 const MathVector<dim>& globIP,
300 number time, int si) const
301 { UG_THROW("global operator() not implemented."); }
305 virtual void operator()(MathVector<dim> vValue[],
306 const MathVector<dim> vGlobIP[],
307 number time, int si, const size_t nip) const
308 { UG_THROW("global operator() not implemented."); }
335 template <
int refDim>
346 std::vector<std::vector<data_type > > vvvDeriv[],
352 ElementExtensionsSq<dim>(roid, ext, vCornerCoords);
353 for(
size_t ip = 0;
ip < nip; ++
ip)
366 UG_ASSERT(0,
"eval_and_deriv not implemented.");
374 virtual void compute(LocalVector* u, GridObject* elem,
375 const MathVector<dim> vCornerCoords[], bool bDeriv = false)
377 ReferenceObjectID roid=elem->reference_object_id();
379 ElementExtensionsSq<dim>(roid, ext, vCornerCoords);
381 for(size_t s = 0; s < this->num_series(); ++s)
382 for(size_t ip = 0; ip < this->num_ip(s); ++ip)
383 this->value(s,ip) = ext;
384 UG_ASSERT(0, "TODO: Implementation as 'UserData' is missing.");
387 virtual void compute(LocalVectorTimeSeries* u, GridObject* elem,
388 const MathVector<dim> vCornerCoords[], bool bDeriv = false)
390 ReferenceObjectID roid=elem->reference_object_id();
392 ElementExtensionsSq<dim>(roid, ext, vCornerCoords);
394 UG_ASSERT(0, "TODO: Implementation as 'UserData' is missing.");
parameterString s
Definition Biogas.lua:2
TData & value(size_t s, size_t ip)
Computes degree of anisotropy per element.
Definition d3f_debug_linker.h:187
DFAnisotropy()
Definition d3f_debug_linker.h:192
void evaluate(number 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 d3f_debug_linker.h:211
void eval_and_deriv(number 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, bool bDeriv, int s, std::vector< std::vector< number > > vvvDeriv[]) const
Definition d3f_debug_linker.h:235
SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > m_spDispersion
import for dispersion tensor
Definition d3f_debug_linker.h:277
void evaluate(number &value, const MathVector< dim > &globIP, number time, int si) const
Definition d3f_debug_linker.h:198
void set_dispersion(number val)
Definition d3f_debug_linker.h:271
void set_dispersion(SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > data)
set permeability import
Definition d3f_debug_linker.h:264
@ _DISPERSION_
Definition d3f_debug_linker.h:275
StdDataLinker< DFAnisotropy< dim >, number, dim > base_type
Base class type.
Definition d3f_debug_linker.h:189
Computes grid Peclet number (for d3f)
Definition d3f_debug_linker.h:35
void evaluate(number 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 d3f_debug_linker.h:75
StdDataLinker< DFPecletNumber< dim >, number, dim > base_type
Base class type.
Definition d3f_debug_linker.h:37
DFPecletNumber()
Definition d3f_debug_linker.h:40
void set_length_scale(number l)
Definition d3f_debug_linker.h:163
number m_dLengthScale
Definition d3f_debug_linker.h:176
void eval_and_deriv(number 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, bool bDeriv, int s, std::vector< std::vector< number > > vvvDeriv[]) const
Definition d3f_debug_linker.h:116
void set_dispersion(SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > data)
set permeability import
Definition d3f_debug_linker.h:145
SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > m_spDispersion
import for dispersion tensor
Definition d3f_debug_linker.h:169
@ _VELOCITY_
Definition d3f_debug_linker.h:167
@ _DISPERSION_
Definition d3f_debug_linker.h:167
void set_velocity(SmartPtr< CplUserData< MathVector< dim >, dim > > data)
set pressure gradient import
Definition d3f_debug_linker.h:156
SmartPtr< CplUserData< MathVector< dim >, dim > > m_spVelocity
import for Darcy velocity
Definition d3f_debug_linker.h:173
void set_dispersion(number val)
Definition d3f_debug_linker.h:152
void evaluate(number &value, const MathVector< dim > &globIP, number time, int si) const
Definition d3f_debug_linker.h:50
TODO: This is no linker!!!
Definition d3f_debug_linker.h:287
virtual bool constant() const
returns if data is constant
Definition d3f_debug_linker.h:399
virtual bool requires_grid_fct() const
returns if grid function is needed for evaluation
Definition d3f_debug_linker.h:402
void eval_and_deriv(data_type 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, bool bDeriv, int s, std::vector< std::vector< data_type > > vvvDeriv[], const MathMatrix< refDim, dim > *vJT=NULL) const
Definition d3f_debug_linker.h:336
ElementExtensions()
Definition d3f_debug_linker.h:294
MathVector< dim > data_type
Definition d3f_debug_linker.h:291
virtual bool continuous() const
returns if provided data is continuous over geometric object boundaries
Definition d3f_debug_linker.h:405
StdDependentUserData< ElementExtensions< dim >, MathVector< dim >, dim > base_type
Base class type.
Definition d3f_debug_linker.h:290
virtual ReferenceObjectID reference_object_id() const=0
const MathVector< dim > & ip(size_t s, size_t ip) const
virtual bool zero_derivative() const
void set_num_input(size_t num)
virtual void set_input(size_t i, SmartPtr< ICplUserData< dim > > input, SmartPtr< UserDataInfo > info)
virtual bool zero_derivative() const
MathMatrix< N, M, T >::value_type MinAbsEigenvalue(const MathMatrix< M, N, T > &m)
#define UG_ASSERT(expr, msg)
void MatVecMult(vector_t_out &vOut, const matrix_t &m, const vector_t_in &v)
vector_t::value_type VecTwoNorm(const vector_t &v)
vector_t::value_type VecDot(const vector_t &v1, const vector_t &v2)
MathMatrix< 1, 1, T >::value_type MaxAbsEigenvalue(const MathMatrix< 1, 1, T > &m)
SmartPtr< T, FreePolicy > make_sp(T *inst)