39 ASMs1D(
unsigned char n_s = 1,
unsigned char n_f = 1);
53 virtual bool read(std::istream&);
55 virtual bool write(std::ostream&,
int = 0)
const;
73 virtual void clear(
bool retainGeometry =
false);
76 virtual int getSize(
int = 0)
const;
98 const Go::SplineCurve* crv)
const;
126 int,
int thick,
int,
bool local)
const;
133 virtual bool isInNodeSet(
int iset,
int inod)
const;
135 virtual int parseNodeSet(
const std::string& setName,
const char* cset);
233 virtual int evalPoint(
const double* xi,
double* param,
Vec3& X)
const;
257 const IntVec& nodes)
const;
264 const int* npe,
int,
bool)
const;
273 int deriv = 0,
int = 0)
const;
280 const int* npe,
int)
const;
288 int,
double time)
const;
304 const int* npe =
nullptr,
char project = 0)
const;
325 const RealArray* gpar,
bool =
true)
const;
378 bool continuous)
const;
425 virtual bool getOrder(
int& p1,
int& p2,
int& p3)
const;
432 virtual bool getSize(
int& n1,
int& n2,
int& n3,
int basis)
const;
441 virtual size_t getNoNodes(
int basis = 0)
const;
464 std::shared_ptr<Go::SplineCurve>
curv;
465 std::shared_ptr<Go::SplineCurve>
proj;
Abstract interface for 1D patches.
std::vector< int > IntVec
General integer vector.
Definition: ASMbase.h:25
std::vector< IntVec > IntMat
General 2D integer matrix.
Definition: ASMbase.h:26
std::vector< Tensor > TensorVec
An array of non-symmetric tensors.
Definition: ASMs1D.h:23
Base class for structured spline-based FE assembly drivers.
Abstract interface for unstructured FE assembly drivers.
Various utilities for assembly scope.
std::vector< RealArray > Real2DMat
A real-valued two-dimensional array without algebraic operations.
Definition: ImmersedBoundaries.h:34
std::vector< Real > RealArray
A real-valued array without algebraic operations.
Definition: ImmersedBoundaries.h:29
std::vector< Vector > Vectors
An array of real-valued vectors with algebraic operations.
Definition: MatVec.h:37
Representation of second-order tensors with some basic operations.
Abstract interface for 1D spline patches.
Definition: ASM1D.h:31
const IntMat & MNPC
Matrix of Nodal Point Correspondance.
Definition: ASMbase.h:1040
virtual bool evaluate(const ASMbase *basis, const Vector &locVec, RealArray &vec, int basisNum=1) const
Evaluates and interpolates a field over a given geometry.
Definition: ASMbase.C:1779
Driver for assembly of structured 1D spline FE models.
Definition: ASMs1D.h:36
virtual bool getNoStructElms(int &n1, int &n2, int &n3) const
Returns the number of elements in each parameter direction.
Definition: ASMs1D.C:1928
const Tensor & getRotation(size_t inod) const
Returns the current rotation tensor for the given node.
Definition: ASMs1D.C:684
virtual size_t getNoProjectionNodes() const
Returns the number of projection nodes for this patch.
Definition: ASMs1D.C:991
virtual int getNodeSetIdx(const std::string &setName) const
Returns (1-based) index of a predefined node set in the patch.
Definition: ASMs1D.C:431
virtual bool write(std::ostream &, int=0) const
Writes the geometry of the SplineCurve object to given stream.
Definition: ASMs1D.C:106
virtual std::pair< size_t, double > findClosestNode(const Vec3 &X) const
Finds the node that is closest to the given point.
Definition: ASMs1D.C:871
static void scatterInd(int p1, int start, IntVec &index)
Auxilliary function for computation of basis function indices.
Definition: ASMs1D.C:1536
std::map< size_t, size_t > nxMap
Node index map used by getNodeID()
Definition: ASMs1D.h:468
virtual int constrainNode(double xi, int dof, int code)
Constrains a node identified by a relative parameter value.
Definition: ASMs1D.C:553
bool connectBasis(ASMs1D &neighbor, int slave, int master, int thick=1)
Connects matching nodes on two adjacent vertices.
Definition: ASMs1D.C:517
bool getGrevilleParameters(RealArray &prm) const
Calculates parameter values for the Greville points.
Definition: ASMs1D.C:1485
IntVec projMLGE
Matrix of Local to Global Element numbers for projection.
Definition: ASMs1D.h:471
virtual void getElmConnectivities(IntMat &neigh, int basis=ASM::INTEGRATION_BASIS) const
Calculates the matrix of element neighbour connectivities.
Definition: ASMs1D.C:1970
virtual IntMat getElmNodes(int basis) const
Returns the matrix of nodal point correspondance for given basis.
Definition: ASMs1D.C:1989
TensorVec prevT
Nodal rotation tensors of last converged configuration.
Definition: ASMs1D.h:478
virtual int findElementContaining(const double *param) const
Returns the element that contains a specified spatial point.
Definition: ASMs1D.C:1445
bool getElementNodalRotations(TensorVec &T, size_t iel) const
Returns nodal rotation matrices for an element, if any.
Definition: ASMs1D.C:736
virtual void getBoundaryNodes(int lIndex, IntVec &nodes, int, int thick, int, bool local) const
Finds the global (or patch-local) node number on a patch end.
Definition: ASMs1D.C:835
virtual bool generateOrientedFEModel(const Vec3 &Zaxis)
Generates a beam finite element model for the patch.
Definition: ASMs1D.C:285
virtual int getSize(int=0) const
Returns the number of nodal points in the patch.
Definition: ASMs1D.C:983
virtual bool tesselate(ElementBlock &grid, const int *npe) const
Creates a line element model of this patch for visualization.
Definition: ASMs1D.C:1499
virtual bool getSolution(Matrix &sField, const Vector &locSol, const IntVec &nodes) const
Extract the primary solution field at the specified nodes.
Definition: ASMs1D.C:1543
TensorVec myCS
The actual element coordinate systems.
Definition: ASMs1D.h:476
double getKnotSpan(int i) const
Returns the parametric length on the i'th knot-span.
Definition: ASMs1D.C:660
virtual bool generateFEMTopology()
Generates the finite element topology data for the patch.
Definition: ASMs1D.C:271
virtual bool isInNodeSet(int iset, int inod) const
Checks if node inod is within predefined node set iset.
Definition: ASMs1D.C:458
Tensor getLocal2Global(double u) const
Returns the local-to-global transformation at a parametric point.
Definition: ASMs1D.C:619
virtual size_t constrainEndLocal(int dir, int dof, int code)
Constrains all DOFs in local directions at a given end point.
Definition: ASMs1D.C:567
virtual void clear(bool retainGeometry=false)
Clears the contents of the patch, making it empty.
Definition: ASMs1D.C:117
virtual bool updateCoords(const Vector &displ)
Updates the nodal coordinates for this patch.
Definition: ASMs1D.C:769
std::shared_ptr< Go::SplineCurve > curv
The actual spline curve object.
Definition: ASMs1D.h:464
virtual bool integrate(Integrand &integrand, GlobalIntegral &glbInt, const TimeDomain &time)
Evaluates an integral over the interior patch domain.
Definition: ASMs1D.C:1119
virtual Vec3 getElementCenter(int iel) const
Returns the coordinate of the element center.
Definition: ASMs1D.C:822
virtual bool refine(const LR::RefineData &prm, Vectors &)
Refines the mesh adaptively.
Definition: ASMs1D.C:143
static void createMNPC(const Go::SplineCurve *crv, IntMat &MNPC)
Creates matrix of nodal point correspondance for a spline curve.
Definition: ASMs1D.C:1997
void updateRotations()
Updates the previous nodal rotations for this patch at convergence.
Definition: ASMs1D.h:115
virtual bool getParameterDomain(Real2DMat &u, IntVec *corners) const
Returns parameter values and node numbers of the domain corners.
Definition: ASMs1D.C:999
TensorVec myT
The actual nodal rotation tensors.
Definition: ASMs1D.h:477
virtual bool createProjectionBasis(bool init)
Creates a separate projection basis for this patch.
Definition: ASMs1D.C:256
void extractBasis(double u, Vector &N) const
Establishes the vector with basis function values.
Definition: ASMs1D.C:1064
virtual bool connectPatch(int vertex, ASM1D &neighbor, int nvertex, int thick=1)
Connects matching nodes on two adjacent vertices.
Definition: ASMs1D.C:501
IntMat projMNPC
Matrix of Nodal Point Correspondance for projection.
Definition: ASMs1D.h:470
virtual bool getOrder(int &p1, int &p2, int &p3) const
Returns the polynomial order in each parameter direction.
Definition: ASMs1D.C:965
Go::SplineCurve * getCurve() const
Returns the spline curve representing the geometry of this patch.
Definition: ASMs1D.h:46
double getElementEnds(int i, std::vector< Vec3 > &XC) const
Computes the element end coordinates.
Definition: ASMs1D.C:1027
virtual bool getElementCoordinates(Matrix &X, int iel, bool=false) const
Returns a matrix with nodal coordinates for an element.
Definition: ASMs1D.C:694
virtual bool initLocalElementAxes(const Vec3 &Zaxis)
Initializes the local element axes for a patch of beam elements.
Definition: ASMs1D.C:389
std::pair< int, double > findElement(const Vec3 &X) const
Finds the element that contains the given point.
Definition: ASMs1D.C:909
virtual int parseNodeSet(const std::string &setName, const char *cset)
Defines a node set by parsing a list of node numbers.
Definition: ASMs1D.C:470
virtual Fields * getProjectedFields(const Vector &coefs, size_t=0) const
Returns a field using the projection basis.
Definition: ASMs1D.C:1954
virtual double findPoint(Vec3 &X, double *param) const
Searches for the specified Cartesian point in the patch.
Definition: ASMs1D.C:853
std::vector< ASM::NodeSet > nodeSets
Node sets for Dirichlet BCs.
Definition: ASMs1D.h:480
virtual bool evalProjSolution(Matrix &sField, const Vector &locSol, const int *npe, int) const
Evaluates the projected solution field at all visualization points.
Definition: ASMs1D.C:1635
virtual void getNodalCoordinates(Matrix &X, bool=false) const
Returns a matrix with all nodal coordinates within the patch.
Definition: ASMs1D.C:760
virtual void getElementBorders(int iel, double *u) const
Computes the element border parameters.
Definition: ASMs1D.C:1016
std::map< size_t, size_t > xnMap
Node index map used by getCoord()
Definition: ASMs1D.h:467
virtual int evalPoint(const double *xi, double *param, Vec3 &X) const
Evaluates the geometry at a specified point.
Definition: ASMs1D.C:1432
virtual void closeBoundaries(int, int basis, int master)
Makes the two end vertices of the curve periodic.
Definition: ASMs1D.C:545
virtual void findBoundaryElms(IntVec &elms, int lIndex, int=0) const
Finds the path-local element numbers on a patch boundary.
Definition: ASMs1D.C:1983
virtual ~ASMs1D()
Empty destructor.
Definition: ASMs1D.h:43
virtual void evaluateBasis(double u, double, double, Vector &N) const
Evaluates the basis functions at the specified point.
Definition: ASMs1D.C:1058
const TensorVec & nodalT
Nodal rotation tensors (for 3D beams)
Definition: ASMs1D.h:474
virtual bool uniformRefine(int nInsert)
Refines the parametrization by inserting extra knots uniformly.
Definition: ASMs1D.C:209
bool updatedT
If true, nodal rotation matrices have been updated.
Definition: ASMs1D.h:483
Go::SplineCurve * projectSolution(const IntegrandBase &integrand) const
Projects the secondary solution field onto the primary basis.
Definition: ASMs1D.C:1716
virtual size_t getNoNodes(int basis=0) const
Returns the total number of nodes in this patch.
Definition: ASMs1D.C:133
virtual const IntVec & getNodeSet(int iset) const
Returns an indexed pre-defined node set.
Definition: ASMs1D.C:444
std::shared_ptr< Go::SplineCurve > proj
Spline curve for projection basis.
Definition: ASMs1D.h:465
ASMs1D(unsigned char n_s=1, unsigned char n_f=1)
Default constructor.
Definition: ASMs1D.C:39
virtual bool evaluate(const ASMbase *basis, const Vector &locVec, RealArray &vec, int basisNum=1) const
Evaluates and interpolates a field over a given geometry.
Definition: ASMbase.C:1779
virtual bool raiseOrder(int ru)
Raises the order of the SplineCurve object for this patch.
Definition: ASMs1D.C:234
virtual bool getGridParameters(RealArray &prm, int nSegSpan) const
Calculates parameter values for visualization nodal points.
Definition: ASMs1D.C:1451
void applyTwist(const RealFunc &twist)
Applies a twist angle to the beam transformation matrices.
Definition: ASMs1D.C:410
virtual bool assembleL2matrices(SystemMatrix &A, SystemVector &B, const L2Integrand &integrand, bool continuous) const
Assembles L2-projection matrices for the secondary solution.
Definition: ASMs1D.C:1838
virtual bool read(std::istream &)
Creates an instance by reading the given input stream.
Definition: ASMs1D.C:62
virtual Vec3 getCoord(size_t inod) const
Returns the global coordinates for the given node.
Definition: ASMs1D.C:670
const TensorVec & elmCS
Element coordinate systems (for 3D beams)
Definition: ASMs1D.h:473
Base class for structured spline-based FE assembly drivers.
Definition: ASMstruct.h:32
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
Abstract interface for unstructured spline patches.
Definition: ASMunstruct.h:64
Class for storage of a standard FE grid block.
Definition: ElementBlock.h:27
Base class for vector fields.
Definition: Fields.h:35
Base class for unary spatial functions of arbitrary result type.
Definition: Function.h:147
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
Abstract class for evaluating integrand or function.
Definition: GlbL2projector.h:39
Scalar-valued unary function of a spatial point.
Definition: Function.h:193
Base class for representing a system matrix on different formats.
Definition: SystemMatrix.h:220
Base class for representing a system vector on different formats.
Definition: SystemMatrix.h:32
Simple class for representing a non-symmetric second-order tensor.
Definition: Tensor.h:28
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
@ INTEGRATION_BASIS
Integration basis.
Definition: ASMenums.h:58
Go::SplineCurve * project(const Go::SplineCurve *curve, const FunctionBase &f, int nComp=1, Real time=Real(0))
Projects a spatial function onto a spline curve.
Definition: SplineUtils.C:204
A struct of data to control the mesh refinement.
Definition: ASMunstruct.h:44
Struct representing the time domain.
Definition: TimeDomain.h:23