IFEM 90A354
NodeVecFunc.h
Go to the documentation of this file.
1// $Id$
2//==============================================================================
12//==============================================================================
13
14#ifndef _NODE_VEC_FUNC_H
15#define _NODE_VEC_FUNC_H
16
17#include "Function.h"
18#include <map>
19
20class SIMbase;
21
22
27class NodeVecFunc : public VecFunc
28{
29public:
31 NodeVecFunc(const SIMbase& m, const std::vector<double>& v,
32 const std::map<int,int>* nodeIdMap = nullptr)
33 : idMap(nodeIdMap), model(m), value(&v) {}
35 NodeVecFunc(const SIMbase& m, const std::vector<double>* v,
36 const std::map<int,int>& nodeIdMap)
37 : idMap(&nodeIdMap), model(m), value(v) {}
39 NodeVecFunc() = delete;
41 NodeVecFunc(const NodeVecFunc&) = delete;
42
44 virtual bool isZero() const;
45
47 virtual bool isConstant() const { return false; }
48
49protected:
51 virtual Vec3 evaluate(const Vec3& X) const;
52
54 std::pair<int,int> getPointIndex(const Vec3& Xp) const;
55
56private:
57 const std::map<int,int>* idMap;
58 mutable std::map<Vec3,int> ptMap;
59
60protected:
61 const SIMbase& model;
62 const std::vector<double>* value;
63};
64
65#endif
General functions with arbitrary argument and value type.
A class that wraps a nodal field as a vector-valued spatial function.
Definition NodeVecFunc.h:28
const std::map< int, int > * idMap
Map of node indices.
Definition NodeVecFunc.h:57
const std::vector< double > * value
The nodal field values.
Definition NodeVecFunc.h:62
NodeVecFunc()=delete
No default constructor.
NodeVecFunc(const SIMbase &m, const std::vector< double > *v, const std::map< int, int > &nodeIdMap)
Alternative constructor providing the vector through a pointer.
Definition NodeVecFunc.h:35
std::pair< int, int > getPointIndex(const Vec3 &Xp) const
Returns the node index (if any) matching the given coordinates.
Definition NodeVecFunc.C:43
virtual bool isZero() const
Returns whether the function is identically zero or not.
Definition NodeVecFunc.C:20
virtual Vec3 evaluate(const Vec3 &X) const
Evaluates the function at the point X.
Definition NodeVecFunc.C:26
NodeVecFunc(const SIMbase &m, const std::vector< double > &v, const std::map< int, int > *nodeIdMap=nullptr)
The constructor initializes the references.
Definition NodeVecFunc.h:31
NodeVecFunc(const NodeVecFunc &)=delete
No copy constructor.
std::map< Vec3, int > ptMap
Map of evaluated nodal points.
Definition NodeVecFunc.h:58
virtual bool isConstant() const
Returns that this function is time-dependent and not constant.
Definition NodeVecFunc.h:47
const SIMbase & model
FE model on which the field is defined.
Definition NodeVecFunc.h:61
Base class for NURBS-based FEM simulators.
Definition SIMbase.h:72
Simple class for representing a point in 3D space.
Definition Vec3.h:27
Vector-valued unary function of a spatial point.
Definition Function.h:242