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 
20 class SIMbase;
21 
22 
27 class NodeVecFunc : public VecFunc
28 {
29 public:
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 
49 protected:
51  virtual Vec3 evaluate(const Vec3& X) const;
52 
54  std::pair<int,int> getPointIndex(const Vec3& Xp) const;
55 
56 private:
57  const std::map<int,int>* idMap;
58  mutable std::map<Vec3,int> ptMap;
59 
60 protected:
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