IFEM  90A354
ASMsupel.h
Go to the documentation of this file.
1 // $Id$
2 //==============================================================================
12 //==============================================================================
13 
14 #ifndef _ASM_SUPEL_H
15 #define _ASM_SUPEL_H
16 
17 #include "ASMbase.h"
18 #include "ASMutils.h"
19 #include "ElmMats.h"
20 #include "Vec3.h"
21 
22 
29 class ASMsupel : public ASMbase
30 {
31 public:
33  explicit ASMsupel(unsigned char n_f = 6) : ASMbase(0,3,n_f) {}
35  ASMsupel(const ASMsupel& patch, unsigned char n_f) : ASMbase(patch,n_f) {}
37  ASMsupel(const ASMsupel& patch) : ASMbase(patch) {}
39  virtual ~ASMsupel() {}
40 
42  virtual bool read(std::istream& is);
44  virtual bool write(std::ostream&, int) const;
46  virtual bool generateFEMTopology();
48  virtual bool empty() const { return myElmMat.empty(); }
49 
51  virtual int getNodeSetIdx(const std::string& setName) const;
53  virtual const IntVec& getNodeSet(int iset) const;
55  virtual int parseNodeSet(const std::string& setName, const char* cset);
56 
60  virtual Vec3 getCoord(size_t inod) const;
64  virtual void getNodalCoordinates(Matrix& X, bool = false) const;
69  virtual bool getElementCoordinates(Matrix& X, int iel, bool = false) const;
70 
75  virtual void getBoundaryNodes(int lIndex, IntVec& nodes,
76  int, int, int, bool local) const;
77 
79  virtual void findBoundaryElms(IntVec&, int, int) const {}
81  virtual bool getParameterDomain(Real2DMat&, IntVec*) const { return false; }
83  virtual void getElmConnectivities(IntMat&, int) const {}
85  virtual bool updateCoords(const Vector&) { return false; }
87  virtual Vec3 getElementCenter(int) const { return Vec3(); }
88 
92  virtual bool integrate(Integrand& integrand, GlobalIntegral& glbInt,
93  const TimeDomain&);
94 
96  virtual bool integrate(Integrand&, int, GlobalIntegral&,
97  const TimeDomain&) { return false; }
98 
100  virtual int evalPoint(const double*, double*, Vec3&) const { return 0; }
102  virtual int findElementContaining(const double*) const { return 0; }
104  virtual double findPoint(Vec3&, double*) const { return -1.0; }
105 
108  virtual bool tesselate(ElementBlock& grid, const int*) const;
109 
110  using ASMbase::evalSolution;
114  virtual bool evalSolution(Matrix& sField, const Vector& locSol,
115  const int*, int, bool) const;
116 
118  virtual bool transform(const Matrix& Tlg);
119 
120 private:
123 
124  std::vector<ASM::NodeSet> nodeSets;
125 };
126 
127 #endif
Base class for spline-based finite element (FE) assembly drivers.
std::vector< int > IntVec
General integer vector.
Definition: ASMbase.h:25
std::vector< IntVec > IntMat
General 2D integer matrix.
Definition: ASMbase.h:26
Various utilities for assembly scope.
Representation of the element matrices for a FEM problem.
std::vector< RealArray > Real2DMat
A real-valued two-dimensional array without algebraic operations.
Definition: ImmersedBoundaries.h:34
Representation of a point in 3D space with some basic operations.
std::vector< Vec3 > Vec3Vec
An array of point vectors.
Definition: Vec3.h:318
Base class for spline-based finite element (FE) assembly drivers.
Definition: ASMbase.h:70
virtual bool evalSolution(Matrix &sField, const Vector &locSol, const int *npe, int n_f=0, bool piola=false) const
Evaluates the primary solution field at all visualization points.
Definition: ASMbase.C:1735
Driver for assembly of general superelements.
Definition: ASMsupel.h:30
virtual const IntVec & getNodeSet(int iset) const
Returns an indexed pre-defined node set.
Definition: ASMsupel.C:138
ASMsupel(unsigned char n_f=6)
Default constructor.
Definition: ASMsupel.h:33
virtual bool tesselate(ElementBlock &grid, const int *) const
Creates a standard FE model of this patch for visualization.
Definition: ASMsupel.C:224
ASMsupel(const ASMsupel &patch)
Default copy constructor copying everything.
Definition: ASMsupel.h:37
virtual int findElementContaining(const double *) const
Dummy method doing nothing.
Definition: ASMsupel.h:102
virtual double findPoint(Vec3 &, double *) const
Dummy method doing nothing.
Definition: ASMsupel.h:104
virtual bool integrate(Integrand &integrand, GlobalIntegral &glbInt, const TimeDomain &)
Evaluates an integral over the interior patch domain.
Definition: ASMsupel.C:211
virtual bool getElementCoordinates(Matrix &X, int iel, bool=false) const
Returns a matrix with nodal coordinates for an element.
Definition: ASMsupel.C:201
virtual bool empty() const
Checks if this patch is empty.
Definition: ASMsupel.h:48
virtual bool generateFEMTopology()
Generates the finite element topology data for this patch.
Definition: ASMsupel.C:101
virtual bool write(std::ostream &, int) const
Writes the geometry of the patch to the given stream.
Definition: ASMsupel.C:86
virtual void getBoundaryNodes(int lIndex, IntVec &nodes, int, int, int, bool local) const
Finds the global (or patch-local) node numbers on a patch boundary.
Definition: ASMsupel.C:162
virtual void findBoundaryElms(IntVec &, int, int) const
Dummy method doing nothing.
Definition: ASMsupel.h:79
virtual int evalPoint(const double *, double *, Vec3 &) const
Dummy method doing nothing.
Definition: ASMsupel.h:100
virtual bool getParameterDomain(Real2DMat &, IntVec *) const
Dummy method doing nothing.
Definition: ASMsupel.h:81
virtual bool transform(const Matrix &Tlg)
Applies a transformation matrix from local to global system.
Definition: ASMsupel.C:256
Vec3Vec myNodes
Supernode coordinates.
Definition: ASMsupel.h:121
virtual int getNodeSetIdx(const std::string &setName) const
Returns (1-based) index of a predefined node set in the patch.
Definition: ASMsupel.C:125
ElmMats myElmMat
Duperelement matrices.
Definition: ASMsupel.h:122
virtual void getNodalCoordinates(Matrix &X, bool=false) const
Returns a matrix with all nodal coordinates within the patch.
Definition: ASMsupel.C:189
virtual int parseNodeSet(const std::string &setName, const char *cset)
Defines a node set by parsing a list of node numbers.
Definition: ASMsupel.C:147
std::vector< ASM::NodeSet > nodeSets
Node sets for Dirichlet BCs.
Definition: ASMsupel.h:124
virtual bool integrate(Integrand &, int, GlobalIntegral &, const TimeDomain &)
Dummy method (patch patch boundaries are not defined).
Definition: ASMsupel.h:96
virtual Vec3 getCoord(size_t inod) const
Returns the global coordinates for the given node.
Definition: ASMsupel.C:172
virtual ~ASMsupel()
Empty destructor.
Definition: ASMsupel.h:39
virtual bool read(std::istream &is)
Creates an instance by reading the given input stream.
Definition: ASMsupel.C:23
ASMsupel(const ASMsupel &patch, unsigned char n_f)
Special copy constructor for sharing of FE data.
Definition: ASMsupel.h:35
virtual bool updateCoords(const Vector &)
Dummy method doing nothing.
Definition: ASMsupel.h:85
virtual void getElmConnectivities(IntMat &, int) const
Dummy method doing nothing.
Definition: ASMsupel.h:83
virtual bool evalSolution(Matrix &sField, const Vector &locSol, const int *npe, int n_f=0, bool piola=false) const
Evaluates the primary solution field at all visualization points.
Definition: ASMbase.C:1735
virtual Vec3 getElementCenter(int) const
Dummy method doing nothing.
Definition: ASMsupel.h:87
Class for storage of a standard FE grid block.
Definition: ElementBlock.h:27
Class collecting the element matrices associated with a FEM problem.
Definition: ElmMats.h:34
virtual bool empty() const
Checks if the element matrices are empty.
Definition: ElmMats.h:52
Abstract base class representing a system level integrated quantity.
Definition: GlobalIntegral.h:29
Abstract base class representing a system level integrated quantity.
Definition: Integrand.h:44
Simple class for representing a point in 3D space.
Definition: Vec3.h:27
A vector class with some added algebraic operations.
Definition: matrix.h:64
Struct representing the time domain.
Definition: TimeDomain.h:23