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
26class ASMs1DLag : public ASMs1D, protected ASMLagBase
27{
28public:
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
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
152private:
154 static void createMNPC(size_t nel, int p1, IntMat& MNPC);
155
156protected:
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:32
Common base class for Lagrange FE models.
Definition ASMLagBase.h:27
size_t nel
Number of regular elements in this patch.
Definition ASMbase.h:1059
const IntMat & MNPC
Matrix of Nodal Point Correspondance.
Definition ASMbase.h:1064
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 evalSolution(Matrix &sField, const Vector &locSol, const int *, int, bool) const
Evaluates the primary solution field at all visualization points.
Definition ASMs1DLag.C:478
virtual bool updateCoords(const Vector &displ)
Updates the nodal coordinates for this patch.
Definition ASMs1DLag.C:176
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
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:35
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:1505
virtual int getSize(int=0) const
Returns the number of nodal points in the patch.
Definition ASMs1D.C:923
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