IFEM  90A354
ASMs1DLag.h
Go to the documentation of this file.
1 // $Id$
2 //==============================================================================
12 //==============================================================================
13 
14 #ifndef _ASM_S1D_LAG_H
15 #define _ASM_S1D_LAG_H
16 
17 #include "ASMs1D.h"
18 #include "ASMLagBase.h"
19 
20 
26 class ASMs1DLag : public ASMs1D, protected ASMLagBase
27 {
28 public:
30  explicit ASMs1DLag(unsigned char n_s = 1, unsigned char n_f = 1);
32  ASMs1DLag(const ASMs1DLag& patch, unsigned char n_f);
34  ASMs1DLag(const ASMs1DLag& patch);
36  virtual ~ASMs1DLag() {}
37 
38 
39  // Methods for model generation
40  // ============================
41 
43  virtual bool write(std::ostream& os, int = 0) const;
44 
47  virtual bool generateOrientedFEModel(const Vec3& Zaxis);
48 
52  virtual void clear(bool retainGeometry = false);
53 
58  virtual bool getElementCoordinates(Matrix& X, int iel, bool = true) const;
59 
63  virtual void getNodalCoordinates(Matrix& X, bool = false) const;
64 
67  virtual Vec3 getCoord(size_t inod) const;
68 
70  virtual Vec3 getElementCenter(int iel) const;
71 
74  virtual bool updateCoords(const Vector& displ);
75 
76 
77  // Methods for integration of finite element quantities.
78  // These are the main computational methods of the ASM class hierarchy.
79  // ====================================================================
80 
85  virtual bool integrate(Integrand& integrand,
86  GlobalIntegral& glbInt, const TimeDomain& time);
87 
93  virtual bool integrate(Integrand& integrand, int lIndex,
94  GlobalIntegral& glbInt, const TimeDomain& time);
95 
96 
97  // Post-processing methods
98  // =======================
99 
105  virtual int evalPoint(const double* xi, double* param, Vec3& X) const;
106 
110  virtual bool tesselate(ElementBlock& grid, const int*) const;
111 
112  using ASMs1D::evalSolution;
119  virtual bool evalSolution(Matrix& sField, const Vector& locSol,
120  const int*, int, bool) const;
121 
125  virtual bool evalSolution(Matrix& sField, const Vector& locSol,
126  const RealArray*, bool, int, int) const;
127 
134  virtual bool evalSolution(Matrix& sField, const IntegrandBase& integrand,
135  const int*, char) const;
136 
142  virtual bool evalSolution(Matrix& sField, const IntegrandBase& integrand,
143  const RealArray*, bool regular) const;
144 
145  using ASMs1D::getSize;
147  virtual int getSize(int = 0) const { return nx; }
148 
150  virtual IntMat getElmNodes(int) const;
151 
152 private:
154  static void createMNPC(size_t nel, int p1, IntMat& MNPC);
155 
156 protected:
157  size_t nx;
158  int p1;
159 };
160 
161 #endif
Common base class for Lagrange FE models.
std::vector< IntVec > IntMat
General 2D integer matrix.
Definition: ASMbase.h:26
Driver for assembly of structured 1D spline FE models.
std::vector< Real > RealArray
A real-valued array without algebraic operations.
Definition: ImmersedBoundaries.h:29
Common base class for Lagrange FE models.
Definition: ASMLagBase.h:27
size_t nel
Number of regular elements in this patch.
Definition: ASMbase.h:1035
const IntMat & MNPC
Matrix of Nodal Point Correspondance.
Definition: ASMbase.h:1040
Driver for assembly of 1D Lagrange FE models.
Definition: ASMs1DLag.h:27
virtual IntMat getElmNodes(int) const
Returns the matrix of nodal point correspondance.
Definition: ASMs1DLag.C:578
virtual bool updateCoords(const Vector &displ)
Updates the nodal coordinates for this patch.
Definition: ASMs1DLag.C:176
virtual bool evalSolution(Matrix &sField, const Vector &locSol, const int *npe, int, bool) const
Evaluates the primary solution field at all visualization points.
Definition: ASMs1D.C:1565
virtual bool getElementCoordinates(Matrix &X, int iel, bool=true) const
Returns a matrix with nodal coordinates for an element.
Definition: ASMs1DLag.C:147
static void createMNPC(size_t nel, int p1, IntMat &MNPC)
Creates matrix of nodal point correspondance for a structured grid.
Definition: ASMs1DLag.C:586
virtual Vec3 getCoord(size_t inod) const
Returns the global coordinates for the given node.
Definition: ASMs1DLag.C:122
virtual int getSize(int=0) const
Returns the number of nodal points in the patch.
Definition: ASMs1DLag.h:147
virtual int evalPoint(const double *xi, double *param, Vec3 &X) const
Evaluates the geometry at a specified point.
Definition: ASMs1DLag.C:434
virtual void clear(bool retainGeometry=false)
Clears the contents of the patch, making it empty.
Definition: ASMs1DLag.C:53
int p1
Polynomial order of the basis.
Definition: ASMs1DLag.h:158
virtual Vec3 getElementCenter(int iel) const
Returns the geometric center of an element.
Definition: ASMs1DLag.C:131
virtual bool integrate(Integrand &integrand, GlobalIntegral &glbInt, const TimeDomain &time)
Evaluates an integral over the interior patch domain.
Definition: ASMs1DLag.C:199
virtual ~ASMs1DLag()
Empty destructor.
Definition: ASMs1DLag.h:36
virtual void getNodalCoordinates(Matrix &X, bool=false) const
Returns a matrix with all nodal coordinates within the patch.
Definition: ASMs1DLag.C:167
ASMs1DLag(unsigned char n_s=1, unsigned char n_f=1)
Default constructor.
Definition: ASMs1DLag.C:30
virtual bool generateOrientedFEModel(const Vec3 &Zaxis)
Generates a beam finite element model for the patch.
Definition: ASMs1DLag.C:63
virtual bool write(std::ostream &os, int=0) const
Writes the FEM basis to given stream.
Definition: ASMs1DLag.C:572
size_t nx
Number of nodes.
Definition: ASMs1DLag.h:157
virtual bool tesselate(ElementBlock &grid, const int *) const
Creates a line element model of this patch for visualization.
Definition: ASMs1DLag.C:453
Driver for assembly of structured 1D spline FE models.
Definition: ASMs1D.h:36
virtual int getSize(int=0) const
Returns the number of nodal points in the patch.
Definition: ASMs1D.C:983
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
Class for storage of a standard FE grid block.
Definition: ElementBlock.h:27
Abstract base class representing a system level integrated quantity.
Definition: GlobalIntegral.h:29
Base class representing a system level integrated quantity.
Definition: IntegrandBase.h:42
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