|
IFEM
90A354
|
Driver for assembly of structured 3D Lagrange mixed FE models. More...
#include <ASMs3DmxLag.h>


Classes | |
| class | BasisFunctionCache |
| Implementation of basis function cache. More... | |
Public Member Functions | |
| ASMs3DmxLag (const CharVec &n_f) | |
| The constructor initializes the dimension of each basis. | |
| ASMs3DmxLag (const ASMs3DmxLag &patch, const CharVec &n_f=CharVec(2, 0)) | |
| Copy constructor. | |
| virtual | ~ASMs3DmxLag () |
| Empty destructor. | |
| virtual bool | generateFEMTopology () |
| Generates the finite element topology data for the patch. More... | |
| virtual void | clear (bool retainGeometry) |
| Clears the contents of the patch, making it empty. More... | |
| virtual size_t | getNoBasis () const |
| Returns the number of bases. | |
| virtual size_t | getNoNodes (int basis) const |
| Returns the total number of nodes in this patch. | |
| virtual unsigned char | getNoFields (int basis) const |
| Returns the number of solution fields. | |
| virtual unsigned char | getNodalDOFs (size_t inod) const |
| Returns the number of DOFs per node. More... | |
| virtual char | getNodeType (size_t inod) const |
| Returns the classification of a node. More... | |
| virtual void | initMADOF (const int *sysMadof) |
| Initializes the patch level MADOF array for mixed problems. | |
| virtual bool | connectPatch (int face, ASM3D &neighbor, int nface, int norient, int basis, bool coordCheck, int thick) |
| Connects all matching nodes on two adjacent boundary faces. More... | |
| virtual void | closeBoundaries (int dir, int, int) |
| Makes two opposite boundary faces periodic. More... | |
| virtual bool | integrate (Integrand &integrand, GlobalIntegral &glbInt, const TimeDomain &time) |
| Evaluates an integral over the interior patch domain. More... | |
| virtual bool | integrate (Integrand &integrand, int lIndex, GlobalIntegral &glbInt, const TimeDomain &time) |
| Evaluates a boundary integral over a patch face. More... | |
| virtual bool | getSolution (Matrix &sField, const Vector &locSol, const IntVec &nodes) const |
| Extract the primary solution field at the specified nodes. More... | |
| virtual bool | evalSolution (Matrix &sField, const IntegrandBase &integrand, const int *, char=0) const |
| Evaluates the secondary solution field at all visualization points. More... | |
| virtual bool | evalSolution (Matrix &sField, const Vector &locSol, const RealArray *, bool, int, int nf) const |
| Evaluates the primary solution field at the given points. More... | |
| virtual bool | evalSolution (Matrix &sField, const IntegrandBase &integrand, const RealArray *gpar, bool) const |
| Evaluates the secondary solution field at the given points. More... | |
| virtual void | extractNodeVec (const RealArray &globVec, RealArray &nodeVec, unsigned char, int basis) const |
| Extracts nodal results for this patch from the global vector. More... | |
| virtual bool | evalSolution (Matrix &sField, const Vector &locSol, const int *, int n_f, bool) const |
| Evaluates the primary solution field at all visualization points. More... | |
| virtual bool | evalSolution (Matrix &sField, const Vector &locSol, const RealArray *gpar, bool regular, int, int) const |
| Evaluates the primary solution field at the given points. More... | |
| virtual bool | evalSolution (Matrix &sField, const IntegrandBase &integrand, const int *, char) const |
| Evaluates the secondary solution field at all visualization points. More... | |
| virtual bool | evalSolution (Matrix &sField, const IntegrandBase &integrand, const RealArray *gpar, bool regular) const |
| Evaluates the secondary solution field at the given points. More... | |
| virtual bool | evalSolution (Matrix &sField, const Vector &locSol, const int *npe, int n_f, bool piola) const |
| Evaluates the primary solution field at all visualization points. More... | |
| virtual bool | evalSolution (Matrix &sField, const Vector &locSol, const RealArray *gpar, bool regular=true, int deriv=0, int=0) const |
| Evaluates the primary solution field at the given points. More... | |
| virtual bool | evalSolution (Matrix &sField, const IntegrandBase &integrand, const int *npe=nullptr, char project=0) const |
| Evaluates the secondary solution field at all visualization points. More... | |
| virtual Go::GeomObject * | evalSolution (const IntegrandBase &integrand) const |
| Projects the secondary solution field onto the primary basis. More... | |
| virtual bool | evalSolution (Matrix &sField, const IntegrandBase &integrand, const RealArray *gpar, bool regular=true) const |
| Evaluates the secondary solution field at the given points. More... | |
Public Member Functions inherited from ASMs3DLag | |
| ASMs3DLag (unsigned char n_f=3) | |
| Default constructor. | |
| ASMs3DLag (const ASMs3D &patch, unsigned char n_f) | |
| Special constructor creating a Lagrang patch from a Spline patch,. | |
| ASMs3DLag (const ASMs3DLag &patch, unsigned char n_f) | |
| Special copy constructor for sharing of FE data. | |
| ASMs3DLag (const ASMs3DLag &patch) | |
| Default copy constructor copying everything. | |
| virtual | ~ASMs3DLag () |
| Empty destructor. | |
| virtual bool | write (std::ostream &os, int=0) const |
| Writes the FEM basis to given stream. | |
| virtual bool | addXElms (short int dim, short int item, size_t nXn, IntVec &nodes) |
| Adds extraordinary elements associated with a patch boundary. More... | |
| virtual bool | getElementCoordinates (Matrix &X, int iel, bool=true) const |
| Returns a matrix with nodal coordinates for an element. More... | |
| virtual void | getNodalCoordinates (Matrix &X, bool=false) const |
| Returns a matrix with all nodal coordinates within the patch. More... | |
| virtual Vec3 | getCoord (size_t inod) const |
| Returns the global coordinates for the given node. More... | |
| virtual Vec3 | getElementCenter (int iel) const |
| Returns the geometric center of an element. | |
| virtual bool | getGridParameters (RealArray &prm, int dir, int nSegSpan) const |
| Calculates parameter values for visualization nodal points. More... | |
| virtual void | constrainFace (int dir, bool open, int dof, int code=0, char basis=1) |
| Constrains all DOFs on a given boundary face. More... | |
| virtual void | constrainEdge (int lEdge, bool open, int dof, int code=0, char basis=1) |
| Constrains all DOFs on a given boundary edge. More... | |
| virtual bool | updateCoords (const Vector &displ) |
| Updates the nodal coordinates for this patch. More... | |
| virtual bool | integrateEdge (Integrand &integrand, int lEdge, GlobalIntegral &glbInt, const TimeDomain &time) |
| Evaluates a boundary integral over a patch edge. More... | |
| virtual int | evalPoint (const double *xi, double *param, Vec3 &X) const |
| Evaluates the geometry at a specified point. More... | |
| virtual bool | tesselate (ElementBlock &grid, const int *) const |
| Creates a hexahedron element model of this patch for visualization. More... | |
| virtual bool | evalSolution (Matrix &sField, const Vector &locSol, const int *, int n_f, bool) const |
| Evaluates the primary solution field at all visualization points. More... | |
| virtual bool | evaluate (const ASMbase *basis, const Vector &locVec, RealArray &vec, int basisNum) const |
| Evaluates and interpolates a field over a given geometry. More... | |
| virtual bool | getOrder (int &pu, int &pv, int &pw) const |
| Returns the polynomial order in each parameter direction. More... | |
| virtual void | generateThreadGroups (const Integrand &, bool, bool) |
| Generates element groups for multi-threading of interior integrals. | |
| virtual void | generateThreadGroups (char lIndex, bool, bool) |
| Generates element groups for multi-threading of boundary integrals. More... | |
| virtual IntMat | getElmNodes (int basis) const |
| Returns the matrix of nodal point correspondance for given basis. | |
| virtual size_t | getNoBoundaryElms (char lIndex, char ldim) const |
| Returns the number of elements on a boundary. | |
| virtual size_t | getNoProjectionNodes () const |
| Returns the number of projection nodes for this patch. | |
| virtual bool | assembleL2matrices (SystemMatrix &A, SystemVector &B, const L2Integrand &integrand, bool continuous) const |
| Assembles L2-projection matrices for the secondary solution. More... | |
| void | updateOrigin (const Vec3 &origin) |
| Updates patch origin by adding a constant to all nodes. More... | |
| virtual bool | evalSolution (Matrix &sField, const Vector &locSol, const int *npe, int n_f, bool piola) const |
| Evaluates the primary solution field at all visualization points. More... | |
| virtual bool | evalSolution (Matrix &sField, const Vector &locSol, const RealArray *gpar, bool regular=true, int deriv=0, int=0) const |
| Evaluates the primary solution field at the given points. More... | |
| virtual bool | evalSolution (Matrix &sField, const IntegrandBase &integrand, const int *npe=nullptr, char project=0) const |
| Evaluates the secondary solution field at all visualization points. More... | |
| virtual Go::GeomObject * | evalSolution (const IntegrandBase &integrand) const |
| Projects the secondary solution field onto the primary basis. More... | |
| virtual bool | evalSolution (Matrix &sField, const IntegrandBase &integrand, const RealArray *gpar, bool regular=true) const |
| Evaluates the secondary solution field at the given points. More... | |
Public Member Functions inherited from ASMs3D | |
| ASMs3D (unsigned char n_f=3) | |
| Default constructor. | |
| ASMs3D (const ASMs3D &patch, unsigned char n_f) | |
| Special copy constructor for sharing of FE data. | |
| ASMs3D (const ASMs3D &patch) | |
| Default copy constructor copying everything. | |
| virtual | ~ASMs3D () |
| Empty destructor. | |
| virtual Go::SplineSurface * | getBoundary (int dir, int=1) |
| Returns the spline surface representing a boundary of this patch. More... | |
| virtual Go::SplineVolume * | getBasis (int basis=1) |
| Returns the spline volume representing a basis of this patch. | |
| virtual const Go::SplineVolume * | getBasis (int basis=1) const |
| Returns the spline volume representing a basis of this patch. | |
| virtual void | copyParameterDomain (const ASMbase *other) |
| Copies the parameter domain from the other patch. | |
| virtual bool | read (std::istream &) |
| Creates an instance by reading the given input stream. | |
| virtual size_t | getNodeIndex (int globalNum, bool noAddedNodes=false) const |
| Returns local 1-based index of the node with given global number. More... | |
| virtual int | getNodeID (size_t inod, bool noAddedNodes=false) const |
| Returns the global node number for the given node. More... | |
| virtual void | getBoundaryNodes (int lIndex, IntVec &nodes, int basis, int thick=1, int=0, bool local=false) const |
| Finds the global (or patch-local) node numbers on a patch boundary. More... | |
| virtual void | getBoundary1Nodes (int lEdge, IntVec &nodes, int basis, int=0, bool local=false, bool open=false) const |
| Finds the global (or patch-local) node numbers on a patch boundary. More... | |
| virtual int | getCorner (int I, int J, int K, int basis) const |
| Returns the node index for a given corner. More... | |
| bool | assignNodeNumbers (BlockNodes &nodes, int basis=0) |
| Assigns new global node numbers for all nodes of the patch. More... | |
| virtual bool | checkRightHandSystem () |
| Checks that the patch is modelled in a right-hand-side system. More... | |
| virtual bool | refine (int dir, const RealArray &xi) |
| Refines the parametrization by inserting extra knots. More... | |
| virtual bool | uniformRefine (int dir, int nInsert) |
| Refines the parametrization by inserting extra knots uniformly. More... | |
| virtual bool | raiseOrder (int ru, int rv, int rw, bool setOrder=false) |
| Raises the order of the SplineVolume object for this patch. More... | |
| virtual bool | createProjectionBasis (bool init) |
| Creates a separate projection basis for this patch. More... | |
| virtual bool | separateProjectionBasis () const |
| Checks if a separate projection basis is used for this patch. | |
| virtual size_t | constrainFaceLocal (int dir, bool open, int dof, int code=0, bool project=false, char T1='\0') |
| Constrains all DOFs in local directions on a given boundary face. More... | |
| virtual void | constrainLine (int fdir, int ldir, double xi, int dof, int code=0, char basis=1) |
| Constrains all DOFs along a line on a given boundary face. More... | |
| virtual void | constrainCorner (int I, int J, int K, int dof, int code=0, char basis=1) |
| Constrains a corner node identified by the three parameter indices. More... | |
| virtual void | constrainNode (double xi, double eta, double zeta, int dof, int code=0) |
| Constrains a node identified by three relative parameter values. More... | |
| virtual bool | collapseFace (int face, int edge=0, int basis=1) |
| Collapses a degenerated face into a single node or edge. More... | |
| virtual bool | addRigidCpl (int lindx, int ldim, int basis, int &gMaster, const Vec3 &Xmaster, bool extraPt) |
| Adds MPCs representing a rigid coupling to this patch. More... | |
| virtual void | setNodeNumbers (const IntVec &nodes) |
| Sets the global node numbers for this patch. More... | |
| virtual bool | updateDirichlet (const std::map< int, RealFunc * > &func, const std::map< int, VecFunc * > &vfunc, double time, const std::map< int, int > *g2l=nullptr) |
| Updates the time-dependent in-homogeneous Dirichlet coefficients. More... | |
| virtual int | findElementContaining (const double *param) const |
| Returns the element that contains a specified spatial point. More... | |
| virtual double | findPoint (Vec3 &X, double *param) const |
| Searches for the specified Cartesian point in the patch. More... | |
| virtual bool | evalProjSolution (Matrix &sField, const Vector &locSol, const int *npe, int n_f) const |
| Evaluates the projected solution field at all visualization points. More... | |
| virtual bool | evaluate (const Field *field, RealArray &vec, int basisNum) const |
| Evaluates and interpolates a field over a given geometry. More... | |
| virtual bool | evaluate (const FunctionBase *func, RealArray &vec, int basisNum, double time) const |
| Evaluates and interpolates a function over a given geometry. More... | |
| virtual Go::GeomObject * | evalSolution (const IntegrandBase &integrand) const |
| Projects the secondary solution field onto the primary basis. More... | |
| virtual void | generateThreadGroupsFromElms (const IntVec &elms) |
| Generates element groups from a partition. | |
| virtual void | generateProjThreadGroupsFromElms (const IntVec &elms) |
| Generate element groups from a partition. | |
| virtual bool | getNoStructElms (int &n1, int &n2, int &n3) const |
| Returns the number of elements in each parameter direction. More... | |
| virtual void | getElmConnectivities (IntMat &neigh, int basis=ASM::INTEGRATION_BASIS) const |
| Calculates the matrix of element neighbour connectivities. More... | |
| virtual bool | getParameterDomain (Real2DMat &u, IntVec *corners) const |
| Returns parameter values and node numbers of the domain corners. More... | |
| virtual void | evaluateBasis (double u, double v, double w, Vector &N) const |
| Evaluates the basis functions at the specified point. More... | |
| void | extractBasis (double u, double v, double w, Vector &N, Matrix &dNdu, bool fromRight=true) const |
| Establishes matrices with basis functions and 1st derivatives. More... | |
| void | extractBasis (double u, double v, double w, Vector &N, Matrix &dNdu, Matrix3D &d2Ndu2, bool fromRight=true) const |
| Establishes matrices with basis functions, 1st and 2nd derivatives. More... | |
| void | extractBasis (double u, double v, double w, int dir, int p, Vector &dN, bool fromRight=true) const |
| Establishes a vector with basis function derivatives. More... | |
| virtual Field * | getProjectedField (const Vector &coefs) const |
| Returns a field using the projection basis. More... | |
| virtual Fields * | getProjectedFields (const Vector &coefs, size_t=0) const |
| Returns a field using the projection basis. More... | |
Public Member Functions inherited from ASMstruct | |
| virtual | ~ASMstruct () |
| The destructor frees the dynamically allocated spline objects. | |
| virtual bool | empty () const |
| Checks if the patch is empty. | |
| virtual bool | diracPoint (Integrand &integr, GlobalIntegral &glInt, const double *u, const Vec3 &pval) |
| Integrates a spatial dirac-delta function over a patch. More... | |
| virtual void | swapProjectionBasis () |
| Swaps between the first and second projection basis. | |
| 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. More... | |
| virtual bool | evalSolution (Matrix &sField, const Vector &locSol, const RealArray *gpar, bool regular=true, int deriv=0, int n_f=0) const |
| Evaluates the primary solution field at the given points. More... | |
| virtual bool | evalSolution (Matrix &sField, const IntegrandBase &integrand, const int *npe=nullptr, char project=0) const |
| Evaluates the secondary solution field at all visualization points. More... | |
| virtual bool | evalSolution (Matrix &sField, const IntegrandBase &integrand, const RealArray *gpar, bool regular=true) const |
| Evaluates the secondary solution field at the given points. More... | |
| virtual bool | evalSolution (Matrix &sField, const IntegrandBase &integrand, const IntVec &elements) const |
| Evaluates the secondary solution field at element centers. More... | |
Public Member Functions inherited from ASMbase | |
| virtual | ~ASMbase () |
| The destructor frees the dynamically allocated data objects. | |
| ASMbase * | cloneUnShared () const |
| Returns a copy of this patch with identical FE discretization. More... | |
| virtual bool | readBasis (std::istream &, size_t) |
| Reads a basis from the given input stream. | |
| virtual void | addHole (double, double, double) |
| Adds a circular immersed boundary in the physical geometry. | |
| virtual void | addHole (double, double, double, double, double) |
| Adds an oval immersed boundary in the physical geometry. | |
| virtual bool | setGeometry (RealFunc *, double, double) |
| Defines the immersed geometry from a scalar function. | |
| bool | addLagrangeMultipliers (size_t iel, const IntVec &mGLag, unsigned char nnLag=1) |
| Adds a set of Lagrange multipliers to the specified element. More... | |
| bool | addGlobalLagrangeMultipliers (const IntVec &mGLag, unsigned char nnLag=1) |
| Adds global Lagrange multipliers to the system. More... | |
| virtual void | setGauss (int ng) |
| Defines the numerical integration scheme nGauss in the patch. | |
| void | setNoFields (unsigned char n) |
| Defines the number of solution fields in the patch. More... | |
| void | setElementActivator (IntFunc *efunc) |
| Sets the element activation function. | |
| const IntFunc * | getElementActivator () const |
| Returns a pointer to the element activation function. | |
| virtual void | setMinimumSize (double) |
| Sets the minimum element size for adaptive refinement. | |
| virtual double | getMinimumSize (int=0) const |
| Defines the minimum element size for adaptive refinement. | |
| virtual bool | checkElementSize (int, bool=true) const |
| Checks if the specified element is larger than the minimum size. | |
| unsigned char | getNoSpaceDim () const |
| Returns the number of spatial dimensions. | |
| unsigned char | getNoParamDim () const |
| Returns the number of parameter dimensions. | |
| unsigned char | getNoLagPerNode () const |
| Returns the number of Lagrange multipliers per node. | |
| size_t | getElmIndex (int globalNum) const |
| Returns local 1-based index of element with given global number. More... | |
| int | getElmID (size_t iel) const |
| Returns the global element number for the given element. More... | |
| bool | isLMn (size_t n) const |
| Returns true if node n is a Lagrange multiplier node. | |
| bool | isRMn (size_t n) const |
| Returns true if node n is a master node of a rigid coupling. | |
| char | getLMType (size_t inod) const |
| Returns the type of a Lagrange multiplier node. More... | |
| void | getBoundaryElms (int lIndex, IntVec &elms, int orient=-1, bool local=false) const |
| Finds the global (or patch-local) element numbers on a boundary. More... | |
| virtual int | getNodeSetIdx (const std::string &) const |
| Returns (1-based) index of a predefined node set in the patch. | |
| virtual const IntVec & | getNodeSet (int) const |
| Returns an indexed predefined node set. | |
| virtual bool | isInNodeSet (int, int) const |
| Checks if a node is within a predefined node set. | |
| virtual int | parseNodeSet (const std::string &, const char *) |
| Defines a node set by parsing a list of node numbers. | |
| virtual int | parseNodeBox (const std::string &, const char *) |
| Defines a node set by parsing a 3D bounding box. | |
| virtual int | getElementSetIdx (const std::string &) const |
| Returns (1-based) index of a predefined element set in the patch. | |
| virtual const IntVec & | getElementSet (int) const |
| Returns an indexed predefined element set. | |
| virtual bool | getElementSet (int, std::string &) const |
| Returns the name of an indexed predefined element set. | |
| virtual bool | isInElementSet (int, int) const |
| Checks if an element is within a predefined element set. | |
| virtual int | parseElemSet (const std::string &, const char *) |
| Defines an element set by parsing a list of element numbers. | |
| virtual int | parseElemBox (const std::string &, const std::string &, const char *) |
| Defines an element set by parsing a 3D bounding box. | |
| virtual std::pair< size_t, double > | findClosestNode (const Vec3 &) const |
| Finds the node that is closest to the given point. | |
| void | printNodes (std::ostream &os) const |
| Prints out the nodal coordinates of this patch to the given stream. | |
| void | printElements (std::ostream &os) const |
| Prints out element connections of this patch to the given stream. | |
| virtual void | printElmInfo (int, const IntegrandBase *) const |
| Prints out additional app-dependent element information. | |
| virtual void | shiftGlobalNodeNums (int nshift) |
| Increase all global node numbers by nshift. | |
| void | setGlobalNodeNums (const IntVec &nodes) |
| Sets the global node numbers for this patch. | |
| const IntVec & | getMyNodeNums () const |
| Returns the actual global node numbers of this patch. | |
| const IntVec & | getGlobalNodeNums () const |
| Returns the global node numbers of this patch. | |
| virtual void | shiftGlobalElmNums (int eshift) |
| Increase all global element numbers by eshift. | |
| const IntVec & | getGlobalElementNums () const |
| Returns the global element numbers of this patch. | |
| void | setActiveElements (IntVec *active) |
| Sets the list of active elements during assembly. | |
| bool | isElementActive (int iel, double time=-1.0) const |
| Returns true if element with 0-based index iel is active. | |
| bool | inActive (double time) const |
| Returns true if none of the elements in the patch are active. | |
| double | getAge (int iel, double time) const |
| Returns the age of the element with 0-based index iel. | |
| bool | isElementInPartition (int iel) const |
| Returns true if element is in process partition. More... | |
| const IntVec & | getElementNodes (int iel) const |
| Returns the nodal point correspondance array for an element. More... | |
| size_t | getNoElms (bool includeZeroVolElms=false, bool includeXElms=false) const |
| Returns the total number of elements in this patch. More... | |
| int | getMaxElmNo () const |
| Returns the highest external element number in this patch. | |
| size_t | getNoMPCs () const |
| Returns the total number of multi-point constraint equations. | |
| virtual void | getNoIntPoints (size_t &nPt, size_t &nIPt) |
| Computes the total number of integration points in this patch. | |
| virtual void | getNoBouPoints (size_t &nPt, char ldim, char lindx) |
| Computes the number of boundary integration points in this patch. | |
| BCVec::const_iterator | begin_BC () const |
| Returns the beginning of the BCode array. | |
| BCVec::const_iterator | end_BC () const |
| Returns the end of the BCode array. | |
| IntMat::const_iterator | begin_elm () const |
| Returns the beginning of the MNPC array. | |
| IntMat::const_iterator | end_elm () const |
| Returns the end of the MNPC array. | |
| MPCIter | begin_MPC () const |
| Returns the beginning of the mpcs set. | |
| MPCIter | end_MPC () const |
| Returns the end of the mpcs set. | |
| MPC * | findMPC (int node, int dof) const |
| Returns a pointer to the MPC object for a specified slave, if any. More... | |
| bool | isShared () const |
| Returns true if this patch shares FE data with another patch. | |
| bool | hasXNodes () const |
| Returns true if this patch has additional (extraordinary) nodes. | |
| bool | mergeNodes (size_t inod, int globalNum, bool verbose=true) |
| Merges a given node in this patch with a given global node. More... | |
| int | renumberNodes (std::map< int, int > &old2new, int &nNod) |
| Renumbers the global node numbers in this patch. More... | |
| bool | renumberNodes (const std::map< int, int > &old2new, const std::vector< int > &new2old={}, int renumGN=0, std::map< int, int > *degenElm=nullptr) |
| Renumbers the global node numbers referred by this patch. More... | |
| virtual bool | initConstraints () |
| Initializes the multi-point constraint coefficients. | |
| bool | hasTimeDependentDirichlet (const std::map< int, RealFunc * > &func, const std::map< int, VecFunc * > &vfunc) |
| Checks for time-dependent in-homogeneous Dirichlet conditions. More... | |
| virtual bool | transform (const Matrix &) |
| Applies a transformation matrix from local to global system. | |
| virtual bool | validateThreadGroups (const SAM *) const |
| Validates the threading groups based on the assembly data in SAM. | |
| virtual ElementBlock * | immersedGeometry (char *) const |
| Returns an additional geometry to visualize (immersed boundaries). | |
| virtual ElementBlock * | extraGeometry (char *) const |
| Returns an additional geometry to visualize (spiders, etc.). | |
| virtual void | filterResults (Matrix &, const ElementBlock *) const |
| Filters out result point values that are outside physical domain. | |
| virtual bool | immersedSolution (Matrix &, const Vector &) const |
| Evaluates the primary solution at the immersed geometry points. | |
| virtual bool | extraSolution (Matrix &, const Vector &) const |
| Evaluates the primary solution at the extra geometry points. | |
| virtual bool | evalSolutionPiola (Matrix &sField, const Vector &locSol, const RealArray *gpar, bool regular) const |
| Evaluates the primary solution field with Piola mapping. More... | |
| virtual bool | evalSolution (Matrix &sField, const IntegrandBase &integrand, const IntVec &elements) const |
| Evaluates the secondary solution field at element centers. More... | |
| bool | globalL2projection (Matrix &sField, const L2Integrand &integrand, bool continuous=false, bool enforceEnds=false) const |
| Projects the secondary solution using a (discrete) global L2-fit. More... | |
| bool | L2projection (Matrix &sField, IntegrandBase *integrand, const TimeDomain &time) |
| Projects the secondary solution using a continuous global L2-fit. More... | |
| bool | L2projection (Matrix &fVals, FunctionBase *function, double t=0.0) |
| Projects an explicit function using a continuous global L2-fit. More... | |
| bool | L2projection (const std::vector< Matrix * > &fVals, const std::vector< FunctionBase * > &function, double t=0.0) |
| Projects explicit functions using a continuous global L2-fit. More... | |
| virtual size_t | getNoRefineNodes () const |
| Returns the number of nodes on refinement basis for this patch. | |
| virtual size_t | getNoRefineElms () const |
| Returns the number of elements on refinement basis for this patch. | |
| virtual void | extractElmRes (const Vector &globRes, Vector &elmRes, size_t internalFirst=0) const |
| Extracts element results for this patch from a global vector. More... | |
| virtual void | extractElmRes (const Matrix &globRes, Matrix &elmRes, size_t internalFirst=0) const |
| Extracts element results for this patch from a global vector. More... | |
| bool | extractNodalVec (const RealArray &globVec, RealArray &nodeVec, const int *madof, int ngnod=-1) const |
| Extracts nodal results for this patch from the global vector. More... | |
| virtual bool | injectNodeVec (const RealArray &nodeVec, RealArray &globVec, unsigned char nndof=0, int basis=0) const |
| Injects nodal results for this patch into the global vector. More... | |
| bool | injectNodalVec (const RealArray &nodeVec, RealArray &globVec, const IntVec &madof, int basis=0) const |
| Injects nodal results for this patch into the global vector. More... | |
| bool | add2PC (int slave, int dir, int master, int code=0) |
| Creates and adds a two-point constraint to this patch. More... | |
| bool | addMPC (MPC *&mpc, int code=0, bool verbose=false, bool overrideD=false) |
| Adds a general multi-point-constraint (MPC) equation to this patch. More... | |
| void | addRigidCouplings (int gMaster, const Vec3 &Xmaster, const IntVec &slaveNodes) |
| Adds MPC-equations representing a rigid coupling to this patch. More... | |
| void | constrainPatch (int dof, int code=0) |
| Constrains all nodes in the patch. More... | |
| void | constrainNodes (const IntVec &nodes, int dof, int code=0, bool overrideD=false) |
| Constrains a list of nodes in the patch. More... | |
| bool | constrainXnode (int node, int dof, int code=0) |
| Constrains an extraordinary node in the patch. More... | |
| int | prescribe (size_t inod, int dirs, int code, bool overrideD=false) |
| Constrains DOFs in the given node to the given value. More... | |
| int | fix (size_t inod, int dirs=123) |
| Constrains DOFs in the given node to zero. More... | |
| bool | isFixed (int node, int dof, bool all=false) const |
| Checks if the given DOFs are fixed. More... | |
Public Member Functions inherited from ASM3D | |
| virtual | ~ASM3D () |
| Empty destructor. | |
| ASMbase * | clone (const CharVec &nf=CharVec()) const |
| Returns a copy of this patch with identical FE discretization. More... | |
| virtual bool | refine (int dir, const std::vector< double > &xi)=0 |
| Refines the parametrization by inserting extra knots. More... | |
| virtual bool | getGridParameters (std::vector< double > &prm, int dir, int nSegSpan) const =0 |
| Calculates parameter values for visualization nodal points. More... | |
Protected Member Functions | |
| virtual bool | getSize (int &n1, int &n2, int &n3, int basis) const |
| Returns the number of nodal points in each parameter direction. More... | |
Protected Member Functions inherited from ASMs3DLag | |
| void | setCoord (size_t inod, const Vec3 &Xnod) |
| Assigned global coordinates for the given node. More... | |
| virtual void | findBoundaryElms (IntVec &elms, int lIndex, int=0) const |
| Finds the patch-local element numbers on a patch boundary. More... | |
| virtual int | findElement (double u, double v, double w, double *xi=nullptr, double *eta=nullptr, double *zeta=nullptr) const |
| Finds the element containing specified parametric point. More... | |
| virtual bool | evalSolPt (int iel, double xi, double eta, double zeta, size_t nCmp, const Vector &pchSol, RealArray &ptSol, RealArray &N) const |
| Evaluates a nodal solution field at specified point in an element. More... | |
Protected Member Functions inherited from ASMs3D | |
| bool | integrate (Integrand &integrand, GlobalIntegral &glbInt, const TimeDomain &time, const Real3DMat &itgPts) |
| Evaluates an integral over the interior patch domain. More... | |
| bool | integrate (Integrand &integrand, GlobalIntegral &glbInt, const TimeDomain &time, const ASM::InterfaceChecker &iChk) |
| Evaluates an integral over element interfaces in the patch. More... | |
| bool | connectBasis (int face, ASMs3D &neighbor, int nface, int norient, int basis=1, int slave=0, int master=0, bool coordCheck=true, int thick=1) |
| Connects all matching nodes on two adjacent boundary faces. More... | |
| void | getGaussPointParameters (RealArray &uGP, int dir, int nGauss, const double *xi) const |
| Extracts parameter values of the Gauss points in one direction. More... | |
| bool | getGrevilleParameters (RealArray &prm, int dir, int basisNum=1) const |
| Calculates parameter values for the Greville points. More... | |
| bool | getQuasiInterplParameters (RealArray &prm, int dir) const |
| Calculates parameter values for the Quasi-Interpolation points. More... | |
| bool | getElementCoordinatesPrm (Matrix &X, double u, double v, double w) const |
| Returns a matrix with nodal coordinates for element spanning given parameters. More... | |
| double | getParametricVolume (int iel) const |
| Returns the volume in the parameter space for an element. More... | |
| double | getParametricArea (int iel, int dir) const |
| Returns boundary face area in the parameter space for an element. More... | |
| virtual void | getElementBorders (int iel, double *u) const |
| Computes the element border parameters. More... | |
| void | getElementBorders (int i1, int i2, int i3, double *u, double *v, double *w) const |
| Computes the element border parameters. More... | |
| double | getElementCorners (int i1, int i2, int i3, std::vector< Vec3 > &XC, RealArray *uC=nullptr) const |
| Computes the element corner coordinates. More... | |
| void | getCornerPoints (int i1, int i2, int i3, std::vector< utl::Point > &XC) const |
| Computes the element corner coordinates and parameters. More... | |
| void | generateThreadGroups (size_t strip1, size_t strip2, size_t strip3, bool silence, bool ignoreGlobalLM) |
| Generates element groups for multi-threading of interior integrals. More... | |
| void | generateThreadGroups (size_t strip1, size_t strip2, size_t strip3, char lIndex, bool silence, bool) |
| Generates element groups for multi-threading of boundary integrals. More... | |
| virtual void | changeNumThreads () |
| Hook for changing number of threads. | |
| virtual int | getFirstItgElmNode () const |
| Returns 0-based index of first node on integration basis. | |
| virtual int | getLastItgElmNode () const |
| Returns 0-based index of last node on integration basis. | |
Protected Member Functions inherited from ASMstruct | |
| ASMstruct (unsigned char n_p, unsigned char n_s, unsigned char n_f) | |
| The constructor sets the number of space dimensions and fields. More... | |
| ASMstruct (const ASMstruct &patch, unsigned char n_f) | |
| Special copy constructor for sharing of FE data. More... | |
| bool | addXNodes (unsigned short int dim, size_t nXn, IntVec &nodes) |
| Adds extraordinary nodes associated with a patch boundary. More... | |
| bool | checkThreadGroups (const std::vector< std::set< int >> &nodes, int group, bool ignoreGlobalLM) |
| Performs a sanity check on the thread groups. More... | |
Protected Member Functions inherited from ASMbase | |
| ASMbase (unsigned char n_p, unsigned char n_s, unsigned char n_f) | |
| The constructor sets the number of space dimensions and fields. More... | |
| ASMbase (const ASMbase &patch, unsigned char n_f) | |
| Special copy constructor for sharing of FE data. More... | |
| ASMbase (const ASMbase &patch) | |
| Default copy constructor, copying everything except neighbors. More... | |
| void | addLocal2GlobalCpl (int iSlave, int master, const Tensor &Tlg) |
| Creates constraint equations coupling global DOFs to local DOFs. More... | |
| bool | add3PC (int slave, int dir, int master1, int master2, int code=0) |
| Creates and adds a three-point constraint to this patch. More... | |
| bool | addPeriodicity (size_t master, size_t slave, int dir) |
| Creates and adds a periodicity constraint to this patch. More... | |
| void | makePeriodic (size_t master, size_t slave, int dirs=123) |
| Creates periodicity constraints between two nodes in this patch. More... | |
| void | addNeighbor (ASMbase *pch) |
| Adds a patch to the list of neighbors of this patch. More... | |
| bool | createRgdMasterNode (int &gMaster, const Vec3 &Xmaster) |
| Creates an additional master node for a rigid coupling. More... | |
| void | addRigidMPC (int gSlave, int gMaster, const Vec3 &dX) |
| Adds MPC-equations representing a rigid arm to a 6-DOF node. More... | |
| int | getNoGaussPt (int p, bool neumann=false) const |
| Returns the number of Gauss points to use in one direction. More... | |
| int | searchCtrlPt (RealArray::const_iterator cit, RealArray::const_iterator end, const Vec3 &X, int dimension, double tol=0.001) const |
| Helper method used by evalPoint to search for a control point. More... | |
| bool | allDofs (int dirs) const |
| Returns true if dirs constains all local DOFs in the patch. | |
| bool | writeLagBasis (std::ostream &os, const char *type) const |
| Writes a Lagrangian basis to the given stream. | |
Protected Member Functions inherited from ASM3D | |
| ASM3D () | |
| The constructor is protected to allow objects of sub-classes only. | |
Protected Member Functions inherited from ASMLagBase | |
| ASMLagBase () | |
| Default constructor. | |
| ASMLagBase (const ASMLagBase &patch, bool cpCoord=true) | |
| Copy constructor. | |
| virtual | ~ASMLagBase () |
| Empty destructor. | |
| bool | nodalField (Matrix &field, const Vector &sol, size_t nno) const |
| Direct nodal evaluation of a solution field. | |
| Vec3 | getGeometricCenter (const std::vector< int > &MNPC) const |
| Returns the geometric center of an element. | |
| bool | updateCoords (const Vector &displ, unsigned char nsd) |
| Updates the nodal coordinates for this patch. More... | |
| void | updateOrigin (const Vec3 &origin) |
| Updates patch origin by adding a constant to all nodes. More... | |
Private Attributes | |
| std::vector< size_t > | nxx |
| Basis dimensions in 1st parameter direction. | |
| std::vector< size_t > | nyx |
| Basis dimensions in 2nd parameter direction. | |
| std::vector< size_t > | nzx |
| Basis dimensions in 3rd parameter direction. | |
| std::vector< std::array< size_t, 3 > > | elem_sizes |
| Size on each basis. | |
Private Attributes inherited from ASMmxBase | |
| bool | piola = false |
| True if last used integrand was Piola mapped. | |
| std::vector< size_t > | elem_size |
| Number of basis functions per element in each basis. | |
| std::vector< size_t > | nb |
| Total number of basis functions in each basis. | |
| std::vector< unsigned char > | nfx |
| Number of fields on each basis. | |
Additional Inherited Members | |
Public Types inherited from ASMbase | |
| using | BCVec = std::vector< BC > |
| Nodal boundary condition container. | |
Public Types inherited from ASM3D | |
| typedef std::vector< unsigned char > | CharVec |
| Convenience type. | |
Static Public Member Functions inherited from ASMs3D | |
| static void | scatterInd (int n1, int n2, int n3, int p1, int p2, int p3, const int *start, IntVec &index) |
| Auxilliary function for computation of basis function indices. | |
Static Public Member Functions inherited from ASMbase | |
| static void | resetNumbering (int n=0) |
| Resets the global element and node counters. | |
| static int | renumberNodes (const ASMVec &model, std::map< int, int > &old2new) |
| Renumbers all global node numbers in the entire model. More... | |
| static void | mergeAndGetAllMPCs (const ASMVec &model, MPCSet &allMPCs) |
| Computes the set of all MPC-equations over the whole model. More... | |
| static void | resolveMPCchains (const MPCSet &allMPCs, const ASMVec &model, bool setPtrOnly=false) |
| Resolves (possibly multi-level) chaining in MPC-equations. More... | |
Static Public Member Functions inherited from ASM3D | |
| static ASMbase * | create (ASM::Discretization type, const CharVec &nf, bool mixedFEM=false) |
| Creates a three-parametric patch of specified discretization type. More... | |
| static ASMbase * | create (ASM::Discretization type, unsigned char nf=1) |
| Creates a three-parametric patch of specified discretization type. More... | |
Public Attributes inherited from ASMbase | |
| size_t | idx |
| Index of this patch in the multi-patch model. | |
Static Public Attributes inherited from ASMbase | |
| static bool | fixHomogeneousDirichlet = true |
| If true, pre-eliminate fixed DOFs. | |
| static int | dbgElm = 0 |
| One-based element index to print debugging info for. | |
| static double | modelSize = 1.0 |
| Characteristic model size. More... | |
Protected Types inherited from ASMbase | |
| using | XYZ = std::array< double, 3 > |
| Convenience type definition. | |
Static Protected Member Functions inherited from ASMbase | |
| static bool | deformedConfig (const Matrix &Xnod, Vectors &eVec, bool force2nd=false) |
| Calculates the deformed configuration for current element. More... | |
| static bool | collapseNodes (ASMbase &pch1, int node1, ASMbase &pch2, int node2) |
| Collapses the given two nodes into one. More... | |
Static Protected Member Functions inherited from ASM3D | |
| static double | getElementSize (const std::vector< Vec3 > &XC) |
| Returns characteristic element size based on corner coordinates. | |
Protected Attributes inherited from ASMs3DLag | |
| size_t | nx |
| Number of nodes in first parameter direction. | |
| size_t | ny |
| Number of nodes in second parameter direction. | |
| size_t | nz |
| Number of nodes in third parameter direction. | |
| int | p1 |
| Polynomial order in first parameter direction. | |
| int | p2 |
| Polynomial order in second parameter direction. | |
| int | p3 |
| Polynomial order in third parameter direction. | |
Protected Attributes inherited from ASMs3D | |
| std::shared_ptr< Go::SplineVolume > | svol |
| The actual spline volume object. | |
| bool | swapW |
| Has the w-parameter direction been swapped? | |
| const IndexVec & | nodeInd |
| IJK-triplets for the control points (nodes) | |
| IndexVec | myNodeInd |
| The actual IJK-triplet container. | |
| std::map< size_t, size_t > | xnMap |
| Node index map used by getCoord() | |
| std::map< size_t, size_t > | nxMap |
| Node index map used by getNodeID() | |
| std::vector< DirichletFace > | dirich |
| Inhomogeneous Dirichlet boundary condition data. | |
| ThreadGroups | threadGroupsVol |
| Element groups for multi-threaded volume assembly. | |
| std::map< char, ThreadGroups > | threadGroupsFace |
| Element groups for multi-threaded face assembly. | |
| std::vector< std::unique_ptr< BasisFunctionCache > > | myCache |
| Basis function cache. | |
Protected Attributes inherited from ASMstruct | |
| std::shared_ptr< Go::GeomObject > | geomB |
| Pointer to spline object of the geometry basis. | |
| std::shared_ptr< Go::GeomObject > | projB |
| Pointer to spline object of the projection basis. | |
| std::shared_ptr< Go::GeomObject > | projB2 |
| Pointer to spline object of the secondary projection basis. | |
| ThreadGroups | projThreadGroups |
| Element groups for multi-threaded assembly - projection basis. | |
| ThreadGroups | proj2ThreadGroups |
| Element groups for multi-threaded assembly - second projection basis. | |
Protected Attributes inherited from ASMbase | |
| unsigned char | ndim |
| Number of parametric dimensions (1, 2 or 3) | |
| unsigned char | nsd |
| Number of space dimensions (ndim <= nsd <= 3) | |
| unsigned char | nf |
| Number of primary solution fields (1 or larger) | |
| unsigned char | nLag |
| Number of Lagrange multipliers per node. | |
| size_t | nel |
| Number of regular elements in this patch. | |
| size_t | nnod |
| Number of regular nodes in this patch. | |
| const IntVec & | MLGE |
| Matrix of Local to Global Element numbers. | |
| const IntVec & | MLGN |
| Matrix of Local to Global Node numbers. | |
| const IntMat & | MNPC |
| Matrix of Nodal Point Correspondance. | |
| const char | shareFE |
| Flag telling whether this patch shares its data with another patch. More... | |
| BCVec | BCode |
| Array of Boundary Condition codes. | |
| MPCMap | dCode |
| Inhomogeneous Dirichlet condition codes for the MPCs. | |
| MPCSet | mpcs |
| All multi-point constraints with the slave in this patch. | |
| IntVec | myMLGE |
| The actual Matrix of Local to Global Element numbers. | |
| IntVec | myMLGN |
| The actual Matrix of Local to Global Node numbers. | |
| IntMat | myMNPC |
| The actual Matrix of Nodal Point Correspondance. | |
| IntVec | myElms |
| Elements on patch - used with partitioning. | |
| int | nGauss |
| Numerical integration scheme for this patch. More... | |
| size_t | firstEl |
| Global index to first element within this patch. | |
| size_t | firstIp |
| Global index to first interior integration point. | |
| std::map< char, size_t > | firstBp |
| Global indices to first integration point for the Neumann boundaries. | |
| ASMVec | neighbors |
| Patches having nodes in common with this one. | |
| std::map< size_t, XYZ > | myRmaster |
| Rigid master nodal points. | |
Protected Attributes inherited from ASMLagBase | |
| const Vec3Vec & | coord |
| Const reference to the nodal coordinate container. | |
| Vec3Vec | myCoord |
| Nodal coordinate container. | |
Static Protected Attributes inherited from ASMbase | |
| static std::map< int, int > | xNode |
| Auxilliary node number map used when establishing Dirichlet constraints. | |
| static int | gEl = 0 |
| Global element counter. | |
| static int | gNod = 0 |
| Global node counter. | |
Private Types inherited from ASMmxBase | |
| enum | MixedType { NONE = 0 , FULL_CONT_RAISE_BASIS1 , REDUCED_CONT_RAISE_BASIS1 , FULL_CONT_RAISE_BASIS2 , REDUCED_CONT_RAISE_BASIS2 , DIV_COMPATIBLE , SUBGRID } |
| Enum defining available mixed formulation types. More... | |
| typedef std::vector< std::shared_ptr< Go::SplineSurface > > | SurfaceVec |
| Convenience type. | |
| typedef std::vector< std::shared_ptr< Go::SplineVolume > > | VolumeVec |
| Convenience type. | |
Private Member Functions inherited from ASMmxBase | |
| ASMmxBase (const std::vector< unsigned char > &n_f) | |
| The constructor sets the number of field variables. More... | |
| void | initMx (const std::vector< int > &MLGN, const int *sysMadof) |
| Initializes the patch level MADOF array. More... | |
| void | extractNodeVecMx (const RealArray &glbVec, RealArray &nodVec, int basis) const |
| Extracts nodal results for this patch from the global vector. More... | |
| void | injectNodeVecMx (RealArray &glbVec, const RealArray &nodVec, int basis) const |
| Injects nodal results for this patch into a global vector. More... | |
| bool | getSolutionMx (Matrix &sField, const Vector &locSol, const std::vector< int > &nodes) const |
| Extracts the primary solution field at the specified nodes. More... | |
Static Private Member Functions inherited from ASMmxBase | |
| static SurfaceVec | establishBases (Go::SplineSurface *surf, MixedType type) |
| Establish mixed bases in 2D. More... | |
| static VolumeVec | establishBases (Go::SplineVolume *svol, MixedType type) |
| Establish mixed bases in 3D. More... | |
| static Go::SplineSurface * | adjustBasis (const Go::SplineSurface &surf, const std::array< SplineUtils::AdjustOp, 2 > &ops) |
| Returns a C^p-1 basis of one degree higher than *surf. | |
| static Go::SplineVolume * | adjustBasis (const Go::SplineVolume &svol, const std::array< SplineUtils::AdjustOp, 3 > &ops) |
| Returns a C^p-1 basis of one degree higher than *svol. | |
Static Private Attributes inherited from ASMmxBase | |
| static MixedType | Type = ASMmxBase::FULL_CONT_RAISE_BASIS1 |
| Type of mixed formulation used. | |
| static char | itgBasis = 2 |
| 1-based index of basis representing the integration elements | |
| static bool | includeExtra = false |
| True to include extra basis (geometry/projection) as FE basis. | |
Driver for assembly of structured 3D Lagrange mixed FE models.
This class implements a two-field mixed formulation with Lagrangian basis functions. The geometry and the first field are of equal order and is one order higher than the second field.
|
virtual |
Clears the contents of the patch, making it empty.
| [in] | retainGeometry | If true, the spline geometry is not cleared. This is used to reinitialize the patch after it has been refined. |
Reimplemented from ASMs3DLag.
References ASMs3DLag::clear(), nxx, nyx, and nzx.
|
virtual |
Makes two opposite boundary faces periodic.
| [in] | dir | Parameter direction defining the periodic faces |
Reimplemented from ASMs3D.
References ASMs3D::closeBoundaries(), ASMmxBase::nb, and nxx.
|
virtual |
Connects all matching nodes on two adjacent boundary faces.
| [in] | face | Local face index of this patch, in range [1,6] |
| neighbor | The neighbor patch | |
| [in] | nface | Local face index of neighbor patch, in range [1,6] |
| [in] | norient | Relative face orientation flag (see class ASMs3D) |
| [in] | basis | Which basis to connect, or 0 for all. |
| [in] | coordCheck | False to disable coordinate checks (periodic connections) |
| [in] | thick | Thickness of connection |
Reimplemented from ASMs3D.
References ASMbase::addNeighbor(), ASMs3D::connectBasis(), ASMmxBase::nb, nxx, and ASMs3D::swapW.
| Go::GeomObject * ASMs3D::evalSolution |
Projects the secondary solution field onto the primary basis.
| [in] | integrand | Object with problem-specific data and methods |
References SystemMatrix::assemble(), SystemVector::assemble(), SplineUtils::extractBasis(), ASMs3D::getElementCoordinates(), ASMs3D::getElementCoordinatesPrm(), ASMs3D::getParametricVolume(), utl::Jacobian(), ASMbase::nnod, utl::matrix< T >::outer_product(), ASMstruct::projThreadGroups, and utl::matrix< T >::rows().
| bool ASMs3DLag::evalSolution |
Evaluates the secondary solution field at all visualization points.
| [out] | sField | Solution field |
| [in] | integrand | Object with problem-specific data and methods |
The number of visualization points is the same as the order of the Lagrange elements by default.
|
virtual |
Evaluates the secondary solution field at all visualization points.
| [out] | sField | Solution field |
| [in] | integrand | Object with problem-specific data and methods |
The number of visualization points is the same as the order of the Lagrange elements by default.
Reimplemented from ASMs3DLag.
References MxFiniteElement::basis(), Lagrange::computeBasis(), ASMmxBase::elem_size, elem_sizes, utl::matrixBase< T >::empty(), ItgPoint::eta, IntegrandBase::evalSol(), utl::matrix< T >::fillColumn(), ASMs3DLag::getElementCoordinates(), ASMmxBase::itgBasis, MxFiniteElement::Jacobian(), ASMbase::MNPC, ASMmxBase::nb, ASMbase::nel, nxx, ASMs3DLag::p1, ASMs3DLag::p2, ASMs3DLag::p3, utl::matrix< T >::resize(), utl::vector< T >::size(), ItgPoint::xi, and ItgPoint::zeta.
| bool ASMs3D::evalSolution |
Evaluates the secondary solution field at all visualization points.
| [out] | sField | Solution field |
| [in] | integrand | Object with problem-specific data and methods |
| [in] | npe | Number of visualization nodes over each knot span |
| [in] | project | Flag indicating result recovery method (0=none, 'D'=direct evaluation, 'S'=superconvergent recovery) |
The secondary solution is derived from the primary solution, which is assumed to be stored within the integrand for current patch. If npe is null, the solution is recovered or evaluated at the Greville points and then projected onto the spline basis to obtain the control point values, which then are returned through sField. If npe is not null and project is defined, the solution is also projected onto the spline basis, and then evaluated at the npe points.
| bool ASMs3DLag::evalSolution |
Evaluates the secondary solution field at the given points.
| [out] | sField | Solution field |
| [in] | integrand | Object with problem-specific data and methods |
| [in] | gpar | Parameter values of the result sampling points |
| [in] | regular | Flag indicating how the sampling points are defined |
We assume that the parameter value array gpar contains the u v and w parameters directly for each sampling point. If gpar is null or empty and regular is true, the solution is instead evaluated at all element centers.
References ASMLagBase::coord, utl::matrix< T >::fillColumn(), and utl::matrix< T >::resize().
| bool ASMs3D::evalSolution |
Evaluates the secondary solution field at the given points.
| [out] | sField | Solution field |
| [in] | integrand | Object with problem-specific data and methods |
| [in] | gpar | Parameter values of the result sampling points |
| [in] | regular | Flag indicating how the sampling points are defined |
The secondary solution is derived from the primary solution, which is assumed to be stored within the integrand for current patch. When regular is true, it is assumed that the parameter value array gpar forms a regular tensor-product point grid of dimension gpar[0].size() X gpar[1].size() X gpar[2].size(). Otherwise, we assume that it contains the u, v and w parameters directly for each sampling point.
|
virtual |
Evaluates the secondary solution field at the given points.
| [out] | sField | Solution field |
| [in] | integrand | Object with problem-specific data and methods |
| [in] | gpar | Parameter values of the result sampling points |
Reimplemented from ASMs3DLag.
References MxFiniteElement::basis(), Lagrange::computeBasis(), ASMmxBase::elem_size, elem_sizes, utl::matrixBase< T >::empty(), ItgPoint::eta, IntegrandBase::evalSol(), utl::matrix< T >::fillColumn(), ASMs3DLag::findElement(), ASMbase::firstEl, ASMs3DLag::getElementCoordinates(), ItgPoint::idx, ItgPoint::iel, ASMmxBase::itgBasis, MxFiniteElement::Jacobian(), ASMbase::MLGE, ASMbase::MNPC, ASMmxBase::nb, nxx, utl::matrix< T >::resize(), utl::vector< T >::size(), ItgPoint::u, ItgPoint::v, ItgPoint::w, ItgPoint::xi, and ItgPoint::zeta.
| bool ASMs3DLag::evalSolution |
Evaluates the primary solution field at all visualization points.
| [out] | sField | Solution field |
| [in] | locSol | Solution vector in DOF-order |
| [in] | n_f | If nonzero, mixed evaluates n_f fields on first basis |
The number of visualization points is the same as the order of the Lagrange elements by default.
| bool ASMs3D::evalSolution |
Evaluates the primary solution field at all visualization points.
| [out] | sField | Solution field |
| [in] | locSol | Solution vector in DOF-order |
| [in] | npe | Number of visualization nodes over each knot span |
| [in] | n_f | If nonzero, mixed evaluates n_f fields on first basis |
| [in] | piola | If true, use piola mapping |
|
virtual |
Evaluates the primary solution field at the given points.
| [out] | sField | Solution field |
| [in] | locSol | Solution vector local to current patch |
| [in] | nf | If non-zero evaluates nf fields on first basis |
Reimplemented from ASMs3DLag.
References ASMmxBase::nb, ASMbase::nf, ASMmxBase::nfx, utl::matrix< T >::resize(), and utl::vector< T >::size().
| bool ASMs3DLag::evalSolution |
Evaluates the primary solution field at the given points.
| [out] | sField | Solution field |
| [in] | locSol | Solution vector local to current patch |
| [in] | gpar | Parameter values of the result sampling points |
| [in] | regular | Flag indicating how the sampling points are defined |
If gpar is null, the nodal point values for the solution are returned if regular is false and the element center values are returned if regular is true. If gpar is not null, we assume that it contains the u and v parameters for each sampling point.
| bool ASMs3D::evalSolution |
Evaluates the primary solution field at the given points.
| [out] | sField | Solution field |
| [in] | locSol | Solution vector local to current patch |
| [in] | gpar | Parameter values of the result sampling points |
| [in] | regular | Flag indicating how the sampling points are defined |
| [in] | deriv | Derivative order to return |
When regular is true, it is assumed that the parameter value array gpar forms a regular tensor-product point grid of dimension gpar[0].size() X gpar[1].size() X gpar[2].size(). Otherwise, we assume that it contains the u, v and w parameters directly for each sampling point.
|
virtual |
Extracts nodal results for this patch from the global vector.
| [in] | globVec | Global solution vector in DOF-order |
| [out] | nodeVec | Nodal result vector for this patch |
| [in] | basis | Which basis (or 0 for both) to extract nodal values for |
Reimplemented from ASMbase.
References ASMmxBase::extractNodeVecMx().
|
virtual |
Generates the finite element topology data for the patch.
The data generated are the element-to-node connectivity array, the nodal coordinate array, as well as global node and element numbers.
Reimplemented from ASMs3DLag.
References ASMmxBase::elem_size, elem_sizes, ASMs3DLag::generateFEMTopology(), ASMs3DLag::getGridParameters(), ASMbase::gNod, ASMmxBase::itgBasis, ASMbase::MLGN, ASMbase::myMLGN, ASMbase::myMNPC, ASMmxBase::nb, ASMbase::nnod, ASMs3DLag::nx, nxx, ASMs3DLag::ny, nyx, ASMs3DLag::nz, nzx, ASMs3DLag::p1, ASMs3DLag::p2, ASMs3DLag::p3, and ASMbase::shareFE.
|
virtual |
Returns the number of DOFs per node.
| [in] | inod | 1-based node index local to current patch |
Reimplemented from ASMbase.
References ASMbase::isLMn(), ASMmxBase::nb, ASMmxBase::nfx, and ASMbase::nLag.
|
virtual |
Returns the classification of a node.
| [in] | inod | 1-based node index local to current patch |
Reimplemented from ASMbase.
References ASMbase::isLMn(), and ASMmxBase::nb.
|
protectedvirtual |
Returns the number of nodal points in each parameter direction.
| [out] | n1 | Number of nodes in first (u) direction |
| [out] | n2 | Number of nodes in second (v) direction |
| [out] | n3 | Number of nodes in third (w) direction |
| [in] | basis | Which basis to return size parameters for |
Reimplemented from ASMs3DLag.
|
virtual |
Extract the primary solution field at the specified nodes.
| [out] | sField | Solution field |
| [in] | locSol | Solution vector local to current patch |
| [in] | nodes | 1-based local node numbers to extract solution for |
Reimplemented from ASMbase.
References ASMmxBase::getSolutionMx().
|
virtual |
Evaluates an integral over the interior patch domain.
| integrand | Object with problem-specific data and methods | |
| glbInt | The integrated quantity | |
| [in] | time | Parameters for nonlinear/time-dependent simulations |
Reimplemented from ASMs3DLag.
References GlobalIntegral::assemble(), Vec4::assign(), MxFiniteElement::basis(), BasisFunctionCache< Dim >::coord(), LocalIntegral::destruct(), FiniteElement::detJxW, ASMmxBase::elem_size, Integrand::ELEMENT_CORNERS, ASMstruct::empty(), ItgPoint::eta, Integrand::evalIntMx(), Integrand::finalizeElement(), ASMbase::firstEl, ASMbase::firstIp, ASMs3DLag::getElementCoordinates(), ASMs3D::getElementCorners(), Integrand::getIntegrandType(), Integrand::getLocalIntegral(), getNoBasis(), BasisFunctionCache< Dim >::getParam(), FiniteElement::h, ItgPoint::idx, ItgPoint::iel, ItgPoint::iGP, Integrand::initElement(), ASMmxBase::itgBasis, MxFiniteElement::Jacobian(), ASMbase::MLGE, ASMbase::MNPC, ASMs3D::myCache, ASMmxBase::nb, BasisFunctionCache< Dim >::nGauss(), ASMs3D::BasisFunctionCache::noElms(), ASMs3DLag::p1, ASMs3DLag::p2, ASMs3DLag::p3, LocalIntegral::ref(), ThreadGroups::size(), TimeDomain::t, ASMs3D::threadGroupsVol, ItgPoint::u, ItgPoint::v, ItgPoint::w, BasisFunctionCache< Dim >::weight(), FiniteElement::XC, ItgPoint::xi, and ItgPoint::zeta.
|
virtual |
Evaluates a boundary integral over a patch face.
| integrand | Object with problem-specific data and methods | |
| [in] | lIndex | Local index [1,6] of the boundary face |
| glbInt | The integrated quantity | |
| [in] | time | Parameters for nonlinear/time-dependent simulations |
Reimplemented from ASMs3DLag.
References GlobalIntegral::assemble(), Vec4::assign(), MxFiniteElement::basis(), Lagrange::computeBasis(), LocalIntegral::destruct(), FiniteElement::detJxW, ASMmxBase::elem_size, elem_sizes, ASMstruct::empty(), Integrand::evalBouMx(), Integrand::finalizeElementBou(), ASMbase::firstBp, ASMbase::firstEl, GaussQuadrature::getCoord(), ASMs3DLag::getElementCoordinates(), Integrand::getLocalIntegral(), GaussQuadrature::getWeight(), ItgPoint::idx, ItgPoint::iel, ItgPoint::iGP, Integrand::initElementBou(), ASMmxBase::itgBasis, MxFiniteElement::Jacobian(), ASMbase::MLGE, ASMbase::MNPC, ASMmxBase::nb, ASMbase::nGauss, nxx, nyx, LocalIntegral::ref(), Integrand::setNeumannOrder(), ThreadGroups::size(), TimeDomain::t, and ASMs3D::threadGroupsFace.