|
dune-fem 2.12-git
|
Loading...
Searching...
No Matches
localfunctionadapter.hh
Go to the documentation of this file.
58 // store the local function object by value if it can be copy constructed - otherwise store a reference
59 static constexpr bool localFunctionHasCopyConstructor = std::is_copy_constructible<LocalFunctionImpl>::value;
60 typedef typename LocalFuncType< LocalFunctionImpl, localFunctionHasCopyConstructor >::Type LocalFuncStorageType;
135 : public Function< typename LocalFunctionImpl::FunctionSpaceType, LocalFunctionAdapter< LocalFunctionImpl > >,
396 Hybrid::ifElse( hasCopyConstructor, [ & ]( auto&& ){ argInitializer_->initialize( localFunctionPtr ); } );
479 LocalFunctionAdapterLocalFunction ( const EntityType &entity, const DiscreteFunctionType &adapter )
588 -> std::enable_if_t< std::is_same< std::decay_t< decltype(result[ 0 ] ) >, JacobianRangeType >::value >
655 typedef std::function<RangeType(const DomainType&,double,const EntityType&)> AnalyticalFunctionType;
656 typedef std::function<JacobianRangeType(const DomainType&,double,const EntityType&)> AnalyticalJacobianType;
657 typedef std::function<HessianRangeType(const DomainType&,double,const EntityType&)> AnalyticalHessianType;
660 LocalAnalyticalFunctionBinder(const AnalyticalFunctionType& f=[](const auto& ,auto ,const auto& ){return RangeType(0.0);},
661 const AnalyticalJacobianType& j=[](const auto& ,auto ,const auto& ){return JacobianRangeType(0.0);},
662 const AnalyticalHessianType& h=[](const auto& ,auto ,const auto& ){return HessianRangeType(0.0);},
decltype(auto) ifElse(const Condition &condition, IfFunc &&ifFunc, ElseFunc &&elseFunc)
std::ptrdiff_t index() const
#define DUNE_THROW(E,...)
const GlobalIndex & global() const
constexpr auto get(std::integer_sequence< T, II... >, std::integral_constant< std::size_t, pos >={})
GridPartType::GridType GridType
Definition localfunctionadapter.hh:69
LocalFunctionAdapterLocalFunction< LocalFunctionImpl > LocalFunctionType
Definition localfunctionadapter.hh:79
ThisType DiscreteFunctionType
Definition localfunctionadapter.hh:144
DiscreteFunctionType & operator/=(const RangeFieldType &scalar)
devide all DoFs by a scalar factor
Definition localfunctionadapter.hh:381
DiscreteFunctionSpaceType::DomainFieldType DomainFieldType
Definition localfunctionadapter.hh:649
~LocalFunctionAdapterLocalFunction()
destructor
Definition localfunctionadapter.hh:504
LocalFunctionAdapter(const std::string &name, LocalFunctionImplType &localFunctionImpl, const GridPartType &gridPart, unsigned int order=DiscreteFunctionSpaceType::polynomialOrder)
Definition localfunctionadapter.hh:212
FunctionSpaceType::DomainType DomainType
Definition localfunctionadapter.hh:647
LocalAnalyticalFunctionBinder< DiscreteFunctionSpaceType > ThisType
Definition localfunctionadapter.hh:641
DiscreteFunctionSpaceType::GridPartType GridPartType
Definition localfunctionadapter.hh:644
static constexpr bool localFunctionHasCopyConstructor
Definition localfunctionadapter.hh:59
void init(const EntityType &entity)
initialize entity
Definition localfunctionadapter.hh:735
AnalyticalFunctionType & function()
get local function
Definition localfunctionadapter.hh:678
Traits::LocalFunctionType LocalFunctionType
type of local function to export
Definition localfunctionadapter.hh:177
Traits::RangeFieldType RangeFieldType
range type
Definition localfunctionadapter.hh:462
void jacobian(const PointType &x, JacobianRangeType &ret) const
jacobian of local function
Definition localfunctionadapter.hh:525
LocalFunctionImpl::FunctionSpaceType FunctionSpaceType
Definition localfunctionadapter.hh:42
Traits::GridType GridType
type of grid
Definition localfunctionadapter.hh:162
void jacobianQuadrature(const QuadratureType &quad, Vectors &... result) const
Definition localfunctionadapter.hh:546
LocalFunctionType localFunction(const EntityType &entity)
Definition localfunctionadapter.hh:317
void jacobian(const PointType &x, JacobianRangeType &ret) const
evaluate jacobian local function
Definition localfunctionadapter.hh:722
Traits::RangeType RangeType
range type
Definition localfunctionadapter.hh:466
void hessian(const PointType &x, HessianRangeType &ret) const
evaluate hessian local function
Definition localfunctionadapter.hh:729
Traits::HessianRangeType HessianRangeType
hessian type
Definition localfunctionadapter.hh:470
LocalFunctionAdapter(const std::string &name, const LocalFunctionImplType &localFunctionImpl, const GridPartType &gridPart, unsigned int order=DiscreteFunctionSpaceType::polynomialOrder)
constructor taking a const reference instance of the local function class
Definition localfunctionadapter.hh:225
AnalyticalJacobianType & jacobian()
get jacobian local function
Definition localfunctionadapter.hh:690
Traits::DomainFieldType DomainFieldType
domain type
Definition localfunctionadapter.hh:164
std::unique_ptr< ArgumentIF > argInitializer_
Definition localfunctionadapter.hh:438
DiscreteFunctionType & operator+=(const DFType &g)
Definition localfunctionadapter.hh:346
LocalFunctionAdapterLocalFunction(const ThisType &other)
copy constructor
Definition localfunctionadapter.hh:496
Traits::DiscreteFunctionSpaceType DiscreteFunctionSpaceType
type of discrete function space
Definition localfunctionadapter.hh:159
FunctionSpaceType::RangeType RangeType
Definition localfunctionadapter.hh:648
Traits::DomainType DomainType
domain type
Definition localfunctionadapter.hh:464
LocalFunctionAdapter(const ThisType &other)
Definition localfunctionadapter.hh:277
void init(const EntityType &entity)
init local function
Definition localfunctionadapter.hh:554
LocalFuncStorageType localFunctionImpl_
Definition localfunctionadapter.hh:436
LocalFunctionAdapterLocalFunction(const DiscreteFunctionType &adapter)
constructor
Definition localfunctionadapter.hh:488
std::function< HessianRangeType(const DomainType &, double, const EntityType &)> AnalyticalHessianType
Definition localfunctionadapter.hh:657
const ArgType arg_
Definition localfunctionadapter.hh:191
FunctionSpaceType::JacobianRangeType JacobianRangeType
Definition localfunctionadapter.hh:652
double time() const
get time
Definition localfunctionadapter.hh:748
void registerLocalFunction(LocalFunctionType *lf) const
add LocalFunction to list of local functions
Definition localfunctionadapter.hh:403
T & Type
Definition localfunctionadapter.hh:49
auto evaluateQuadrature(const QuadratureType &quad, VectorType &result) const -> std::enable_if_t< std::is_same< std::decay_t< decltype(result[0]) >, RangeType >::value >
Definition localfunctionadapter.hh:578
Traits::EntityType EntityType
Definition localfunctionadapter.hh:473
T Type
Definition localfunctionadapter.hh:55
LocalFunctionAdapter< LocalFunctionImpl > DiscreteFunctionType
Definition localfunctionadapter.hh:78
LocalFuncType< LocalFunctionImpl, localFunctionHasCopyConstructor >::Type LocalFuncStorageType
Definition localfunctionadapter.hh:60
DiscreteFunctionSpaceType::RangeFieldType RangeFieldType
Definition localfunctionadapter.hh:650
LocalFunctionAdapter(const std::string &name, const GridPartType &gridPart, const std::tuple< Args &... > &args, unsigned int order, std::index_sequence< index... >)
Definition localfunctionadapter.hh:422
const std::string & name() const
obtain the name of the discrete function
Definition localfunctionadapter.hh:329
DiscreteFunctionType & operator-=(const DFType &g)
substract all degrees of freedom from given discrete function using the dof iterators
Definition localfunctionadapter.hh:357
const EntityType & entity() const
get entity
Definition localfunctionadapter.hh:560
ThisType & operator=(ThisType &&)=default
const double time_
Definition localfunctionadapter.hh:192
Traits::DomainFieldType DomainFieldType
domain type
Definition localfunctionadapter.hh:460
void evaluate(const PointType &x, RangeType &ret) const
evaluate local function
Definition localfunctionadapter.hh:518
LocalFunctionImpl LocalFunctionImplType
type of local function implementation
Definition localfunctionadapter.hh:452
LocalFunctionAdapter(const std::string &name, LocalFunctionImplType &&localFunctionImpl, const GridPartType &gridPart, unsigned int order=DiscreteFunctionSpaceType::polynomialOrder)
constructor taking a r-value reference instance of the local function class
Definition localfunctionadapter.hh:238
LocalFunctionImpl LocalFunctionImplType
Evaluate class.
Definition localfunctionadapter.hh:147
Traits::DomainType DomainType
domain type
Definition localfunctionadapter.hh:168
void initialize(Arg &&, double time)
initialize time
Definition localfunctionadapter.hh:742
FunctionSpaceType::DomainType DomainType
Definition localfunctionadapter.hh:65
void initialize(const ArgumentType &arg, double time)
Definition localfunctionadapter.hh:572
unsigned int order() const
return the order of the space
Definition localfunctionadapter.hh:287
ArgumentInitializer(const ArgType &arg, double time)
Definition localfunctionadapter.hh:194
void evaluate(const PointType &x, RangeType &ret) const
evaluate local function
Definition localfunctionadapter.hh:715
virtual void initialize(LocalFunctionType *lf) const
Definition localfunctionadapter.hh:201
LocalFunctionAdapterLocalFunction(const EntityType &entity, const DiscreteFunctionType &adapter)
constructor initializing local function
Definition localfunctionadapter.hh:479
const DiscreteFunctionType & adapter_
Definition localfunctionadapter.hh:607
GridPartType::template Codim< 0 >::EntityType EntityType
Definition localfunctionadapter.hh:70
Traits::FunctionSpaceType FunctionSpaceType
Definition localfunctionadapter.hh:457
FunctionSpaceType::JacobianRangeType JacobianRangeType
Definition localfunctionadapter.hh:66
void hessian(const PointType &x, HessianRangeType &ret) const
Definition localfunctionadapter.hh:532
EntityType::Geometry Geometry
Definition localfunctionadapter.hh:474
FunctionSpaceType::HessianRangeType HessianRangeType
Definition localfunctionadapter.hh:67
Traits::RangeType RangeType
range type
Definition localfunctionadapter.hh:170
DiscreteFunctionSpaceAdapter< FunctionSpaceType, GridPartType > DiscreteFunctionSpaceType
Definition localfunctionadapter.hh:76
LocalAnalyticalFunctionBinder(ThisType &&)=default
void evaluateQuadrature(const QuadratureType &quad, Vectors &... result) const
Definition localfunctionadapter.hh:538
Traits::JacobianRangeType JacobianRangeType
jacobian type
Definition localfunctionadapter.hh:468
LocalAnalyticalFunctionBinder(const ThisType &)=default
~ArgumentInitializer()
Definition localfunctionadapter.hh:198
std::function< JacobianRangeType(const DomainType &, double, const EntityType &)> AnalyticalJacobianType
Definition localfunctionadapter.hh:656
const LocalFuncStorageType & localFunctionImpl() const
Definition localfunctionadapter.hh:596
unsigned int order() const
return order of the space
Definition localfunctionadapter.hh:511
Traits::EntityType EntityType
type of codim 0 entity
Definition localfunctionadapter.hh:174
LocalFunctionAdapter(const std::string &name, const GridPartType &gridPart, const std::tuple< Args &... > &args, unsigned int order=DiscreteFunctionSpaceType::polynomialOrder)
Definition localfunctionadapter.hh:269
const DiscreteFunctionSpaceType & space() const
Definition localfunctionadapter.hh:334
LocalFunctionAdapterTraits< LocalFunctionImplType > Traits
traits class
Definition localfunctionadapter.hh:153
std::function< RangeType(const DomainType &, double, const EntityType &)> AnalyticalFunctionType
Definition localfunctionadapter.hh:655
GridPartType::template Codim< 0 >::IteratorType IteratorType
type of iterator
Definition localfunctionadapter.hh:72
AnalyticalHessianType & hessian()
get hessian local function
Definition localfunctionadapter.hh:702
FunctionSpaceType::RangeFieldType RangeFieldType
Definition localfunctionadapter.hh:62
ThisType & operator=(const ThisType &)=default
void deleteLocalFunction(LocalFunctionType *lf) const
remove LocalFunction to list of local functions
Definition localfunctionadapter.hh:414
Traits::LocalFuncStorageType LocalFuncStorageType
Definition localfunctionadapter.hh:207
const AnalyticalJacobianType & jacobian() const
get jacobian local function
Definition localfunctionadapter.hh:696
DiscreteFunctionSpaceType::FunctionSpaceType FunctionSpaceType
Definition localfunctionadapter.hh:643
LocalFunctionAdapter(const std::string &name, const GridPartType &gridPart, unsigned int order, Args &... args)
Definition localfunctionadapter.hh:253
LocalFuncStorageType & localFunctionImpl()
Definition localfunctionadapter.hh:601
Traits::GridPartType GridPartType
type of grid part
Definition localfunctionadapter.hh:156
LocalFunctionAdapterTraits< LocalFunctionImplType > Traits
type of the traits class
Definition localfunctionadapter.hh:455
virtual ~ArgumentIF()
Definition localfunctionadapter.hh:184
const Geometry & geometry() const
get entity
Definition localfunctionadapter.hh:566
Traits::DiscreteFunctionType DiscreteFunctionType
Definition localfunctionadapter.hh:472
LocalAnalyticalFunctionBinder(const AnalyticalFunctionType &f=[](const auto &, auto, const auto &){return RangeType(0.0);}, const AnalyticalJacobianType &j=[](const auto &, auto, const auto &){return JacobianRangeType(0.0);}, const AnalyticalHessianType &h=[](const auto &, auto, const auto &){return HessianRangeType(0.0);}, double t=0.0)
constructor
Definition localfunctionadapter.hh:660
const unsigned int order_
Definition localfunctionadapter.hh:440
Traits::JacobianRangeType JacobianRangeType
jacobian type
Definition localfunctionadapter.hh:172
GridPartType::IndexSetType IndexSetType
type of IndexSet
Definition localfunctionadapter.hh:74
const LocalFunctionType localFunction(const EntityType &entity) const
Definition localfunctionadapter.hh:323
const AnalyticalHessianType & hessian() const
get hessian local function
Definition localfunctionadapter.hh:708
DiscreteFunctionSpaceImpl DiscreteFunctionSpaceType
Definition localfunctionadapter.hh:640
bool continuous() const
return true, probably
Definition localfunctionadapter.hh:293
FunctionSpaceType::HessianRangeType HessianRangeType
Definition localfunctionadapter.hh:653
DiscreteFunctionType & operator*=(const RangeFieldType &scalar)
multiply all DoFs with a scalar factor
Definition localfunctionadapter.hh:369
DiscreteFunctionSpaceType space_
Definition localfunctionadapter.hh:435
const LocalFuncStorageType & localFunctionImpl() const
return local function implementation
Definition localfunctionadapter.hh:299
FunctionSpaceType::DomainFieldType DomainFieldType
Definition localfunctionadapter.hh:63
Traits::LocalFuncStorageType LocalFuncStorageType
Definition localfunctionadapter.hh:476
const AnalyticalFunctionType & function() const
get local function
Definition localfunctionadapter.hh:684
FunctionSpaceType::RangeType RangeType
Definition localfunctionadapter.hh:64
virtual void initialize(LocalFunctionType *) const =0
DiscreteFunctionSpaceType::EntityType EntityType
Definition localfunctionadapter.hh:645
BaseType::FunctionType FunctionType
type of function
Definition localfunctionadapter.hh:150
std::set< LocalFunctionType * > lfList_
Definition localfunctionadapter.hh:437
LocalFuncStorageType localFunctionImpl_
Definition localfunctionadapter.hh:608
Traits::RangeFieldType RangeFieldType
range type
Definition localfunctionadapter.hh:166
LocalFunctionImpl::GridPartType GridPartType
Definition localfunctionadapter.hh:43
const GridPartType & gridPart() const
Definition localfunctionadapter.hh:339
void evaluate(const DomainType &global, RangeType &result) const
evaluate function on local coordinate local
Definition localfunctionadapter.hh:311
void initialize(const ArgumentType &arg, double time)
initialize local function with argument and time
Definition localfunctionadapter.hh:389
LocalFuncStorageType & localFunctionImpl()
return local function implementation
Definition localfunctionadapter.hh:305
STL namespace.
base class for determing whether a function has local functions or not
Definition common/discretefunction.hh:57
FunctionImp FunctionType
type of the implementation (Barton-Nackman)
Definition common/function.hh:59
LocalFunctionAdapter wrapped a class with a local evaluate method into a grid function.
Definition localfunctionadapter.hh:137
Definition localfunctionadapter.hh:447
auto evaluateQuadrature(const QuadratureType &quad, VectorType &result) const -> std::enable_if_t< std::is_same< std::decay_t< decltype(result[0]) >, JacobianRangeType >::value >
Definition localfunctionadapter.hh:587
traits of DiscreteFunctionAdapter
Definition localfunctionadapter.hh:41
Definition localfunctionadapter.hh:48
Definition localfunctionadapter.hh:181
Definition localfunctionadapter.hh:190
LocalAnalyticalFunctionBinder binds a C++ local analytical function (and also its Jacobian and Hessia...
Definition localfunctionadapter.hh:637
bool continuous() const
returns true if the space contains only globally continuous functions
Definition discretefunctionspace.hh:1093
const GridPartType & gridPart() const
get a reference to the associated grid partition
Definition discretefunctionspace.hh:1075
@ polynomialOrder
Definition discretefunctionspace.hh:1013
implementation of entity and geometry storage for basis function set and local functions
Definition entitygeometry.hh:35
const Entity & entity() const
return entity
Definition entitygeometry.hh:101
const Geometry & geometry() const
return geometry
Definition entitygeometry.hh:111
void unbind()
release entity and geometry object
Definition entitygeometry.hh:164
void bind(const EntityType &entity)
set new entity object and geometry if enabled
Definition entitygeometry.hh:135
T forward(T... args)
T make_tuple(T... args)
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8