36#ifndef __H__UG__PLUGINS__LEVEL_SET_FILTER_LINKER_H__
37#define __H__UG__PLUGINS__LEVEL_SET_FILTER_LINKER_H__
53template <
typename TDomain,
typename TAlgebra,
typename TData>
55:
public StdDataLinker< LSFilterLinker<TDomain, TAlgebra, TData>, TData, TDomain::dim>
62 static const int dim = TDomain::dim;
84 if (spData.invalid ())
85 UG_THROW (
"LSFilterLinker: No valid data specified.");
88 m_spDData = spData.template cast_dynamic<DependentUserData<data_type, dim> > ();
96 UG_THROW (
"LSFilterLinker needs the grid element.");
121 (rRefElem.
num(0), elem, si,
false, vCornerCoords,
time) == 0)
123 (* m_spData) (vValue, vGlobIP,
time, si, elem, vCornerCoords, vLocIP, nip, u, vJT);
129 for (
size_t ip = 0;
ip < nip; ++
ip)
133 template <
int refDim>
147 std::vector<std::vector<data_type> > vvvDeriv[],
158 (rRefElem.
num(0), elem, si,
false, vCornerCoords,
time) == 0)
161 for (
size_t i = 0; i < nip; i++)
165 if (! bDeriv)
continue;
166 for (
size_t fct = 0; fct <
m_spDData->num_fct(); fct++)
170 for (
size_t sh = 0; sh < this->num_sh (c_fct); sh++)
171 vvvDeriv[i][c_fct][sh] = vDData [sh];
179 for (
size_t ip = 0;
ip < nip; ++
ip)
182 this->set_zero (vvvDeriv, nip);
201template <
typename TDomain,
typename TAlgebra,
typename TData>
203:
public StdDataLinker< LSFilterLinker2<TDomain, TAlgebra, TData>, TData, TDomain::dim>
210 static const int dim = TDomain::dim;
233 if (spData_ce.invalid () || spData_we.invalid ())
234 UG_THROW (
"LSFilterLinker2: No valid data specified.");
238 m_spDData_ce = spData_ce.template cast_dynamic<DependentUserData<data_type, dim> > ();
239 this->
set_input (0, spData_ce, spData_ce);
242 m_spDData_we = spData_we.template cast_dynamic<DependentUserData<data_type, dim> > ();
243 this->
set_input (1, spData_we, spData_we);
250 UG_THROW (
"LSFilterLinker2 needs the grid element.");
253 template <
int refDim>
275 (rRefElem.
num(0), elem, si,
false, vCornerCoords,
time) == 0)
277 (* m_spData_ce) (vValue, vGlobIP,
time, si, elem, vCornerCoords, vLocIP, nip, u, vJT);
283 (* m_spData_we) (vValue, vGlobIP,
time, si, elem, vCornerCoords, vLocIP, nip, u, vJT);
286 template <
int refDim>
300 std::vector<std::vector<data_type> > vvvDeriv[],
311 (rRefElem.
num(0), elem, si,
false, vCornerCoords,
time) == 0)
314 for (
size_t i = 0; i < nip; i++)
318 if (! bDeriv)
continue;
319 for (
size_t fct = 0; fct <
m_spDData_ce->num_fct(); fct++)
323 for (
size_t sh = 0; sh < this->num_sh (c_fct); sh++)
324 vvvDeriv[i][c_fct][sh] = vDData [sh];
333 for (
size_t i = 0; i < nip; i++)
337 if (! bDeriv)
continue;
338 for (
size_t fct = 0; fct <
m_spDData_we->num_fct(); fct++)
342 for (
size_t sh = 0; sh < this->num_sh (c_fct); sh++)
343 vvvDeriv[i][c_fct][sh] = vDData [sh];
parameterString s
Definition Biogas.lua:2
TData & value(size_t s, size_t ip)
virtual ReferenceObjectID reference_object_id() const=0
const MathVector< dim > & ip(size_t s, size_t ip) const
Definition ls_filinker.h:204
static const int dim
Definition ls_filinker.h:210
void evaluate(data_type &value, const MathVector< dim > &globIP, number time, int si) const
Definition ls_filinker.h:246
TDomain domain_type
Definition ls_filinker.h:213
StdDataLinker< LSFilterLinker< TDomain, TAlgebra, TData >, TData, TDomain::dim > base_type
Definition ls_filinker.h:205
SmartPtr< DependentUserData< data_type, dim > > m_spDData_we
Definition ls_filinker.h:359
TAlgebra algebra_type
Definition ls_filinker.h:216
SmartPtr< DependentUserData< data_type, dim > > m_spDData_ce
Definition ls_filinker.h:355
LSFilterLinker2(SmartPtr< CplUserData< data_type, dim > > spData_ce, SmartPtr< CplUserData< data_type, dim > > spData_we, SmartPtr< extrapol_type > spExtrapol)
Definition ls_filinker.h:226
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 ls_filinker.h:288
SmartPtr< extrapol_type > m_spExtrapolation
Definition ls_filinker.h:351
TData data_type
Definition ls_filinker.h:222
SmartPtr< CplUserData< data_type, dim > > m_spData_ce
Definition ls_filinker.h:354
IInterfaceExtrapolation< domain_type, algebra_type > extrapol_type
Definition ls_filinker.h:219
void evaluate(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, const MathMatrix< refDim, dim > *vJT=NULL) const
Definition ls_filinker.h:255
SmartPtr< CplUserData< data_type, dim > > m_spData_we
Definition ls_filinker.h:358
Definition ls_filinker.h:56
TAlgebra algebra_type
Definition ls_filinker.h:68
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 ls_filinker.h:135
SmartPtr< DependentUserData< data_type, dim > > m_spDData
Definition ls_filinker.h:192
static const int dim
Definition ls_filinker.h:62
TData data_type
Definition ls_filinker.h:74
IInterfaceExtrapolation< domain_type, algebra_type > extrapol_type
Definition ls_filinker.h:71
SmartPtr< extrapol_type > m_spExtrapolation
Definition ls_filinker.h:188
TDomain domain_type
Definition ls_filinker.h:65
void evaluate(data_type &value, const MathVector< dim > &globIP, number time, int si) const
Definition ls_filinker.h:92
SmartPtr< CplUserData< data_type, dim > > m_spData
Definition ls_filinker.h:191
void evaluate(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, const MathMatrix< refDim, dim > *vJT=NULL) const
Definition ls_filinker.h:101
StdDataLinker< LSFilterLinker< TDomain, TAlgebra, TData >, TData, TDomain::dim > base_type
Definition ls_filinker.h:57
LSFilterLinker(SmartPtr< CplUserData< data_type, dim > > spData, SmartPtr< extrapol_type > spExtrapol)
Definition ls_filinker.h:78
size_t num(int dim) const
void set_num_input(size_t num)
size_t input_common_fct(size_t i, size_t fct) const
virtual void set_input(size_t i, SmartPtr< ICplUserData< dim > > input, SmartPtr< UserDataInfo > info)
virtual bool zero_derivative() const