|
IFEM
90A354
|
Abstract interface for 2D spline patches. More...
#include <ASM2D.h>

Public Types | |
| typedef std::vector< unsigned char > | CharVec |
| Convenience type. | |
Public Member Functions | |
| virtual | ~ASM2D () |
| Empty destructor. | |
| ASMbase * | clone (const CharVec &nf=CharVec()) const |
| Returns a copy of this patch with identical FE discretization. More... | |
| virtual bool | checkRightHandSystem () |
| Checks that the patch is modelled in a right-hand-side system. | |
| virtual bool | uniformRefine (int dir, int nInsert)=0 |
| Refines the parametrization by inserting extra knots uniformly. More... | |
| virtual bool | raiseOrder (int ru, int rv)=0 |
| Raises the order of the spline object for this patch. More... | |
| virtual bool | refine (int dir, const std::vector< double > &xi, double scale=1.0)=0 |
| Refines the parametrization by inserting extra knots. More... | |
| virtual void | constrainEdge (int dir, bool open, int dof, int code=0, char basis=1)=0 |
| Constrains all DOFs on a given boundary edge. More... | |
| virtual size_t | constrainEdgeLocal (int dir, bool open, int dof, int code=0, bool project=false)=0 |
| Constrains all DOFs in local directions on a given boundary edge. More... | |
| virtual void | constrainCorner (int I, int J, int dof, int code=0, char basis=1)=0 |
| Constrains a corner node identified by the two parameter indices. More... | |
| virtual void | constrainNode (double xi, double eta, int dof, int code=0)=0 |
| Constrains a node identified by two relative parameter values. More... | |
| virtual bool | getGridParameters (std::vector< double > &prm, int dir, int nSegSpan) const =0 |
| Calculates parameter values for visualization nodal points. More... | |
| virtual int | getCorner (int I, int J, int basis) const =0 |
| Returns the node index for a given corner. | |
| virtual bool | connectPatch (int edge, ASM2D &neighbor, int nedge, bool revers, int=0, bool coordCheck=true, int thick=1)=0 |
| Connects all matching nodes on two adjacent boundary edges. More... | |
Static Public Member Functions | |
| static ASMbase * | create (ASM::Discretization type, unsigned char nd, const CharVec &nf, bool mixedFEM=false) |
| Creates a two-parametric patch of specified discretization type. More... | |
| static ASMbase * | create (ASM::Discretization type, unsigned char nf=1) |
| Creates a two-parametric patch of specified discretization type. More... | |
Protected Member Functions | |
| ASM2D () | |
| The constructor is protected to allow objects of sub-classes only. | |
Static Protected Member Functions | |
| static double | getElementSize (const std::vector< Vec3 > &XC) |
| Returns characteristic element size based on corner coordinates. | |
Abstract interface for 2D spline patches.
This class contains an interface to methods common for structured and unstructured 2D patches, such that these methods can be invoked without the need to type-cast the patch object to the actual class type.
Returns a copy of this patch with identical FE discretization.
| [in] | nf | Number of unknown per basis function in the patch |
Referenced by SIM2D::clonePatches(), and ASMbase::cloneUnShared().
|
pure virtual |
Connects all matching nodes on two adjacent boundary edges.
| [in] | edge | Local edge index of this patch, in range [1,4] |
| neighbor | The neighbor patch | |
| [in] | nedge | Local edge index of neighbor patch, in range [1,4] |
| [in] | revers | Indicates whether the two edges have opposite directions |
| [in] | coordCheck | False to disable coordinate checks (periodic connections) |
| [in] | thick | Thickness of connection |
Implemented in ASMu2D, ASMs2D, ASMu2Dmx, ASMs2DmxLag, and ASMs2Dmx.
Referenced by SIM2D::connectPatches().
|
pure virtual |
Constrains a corner node identified by the two parameter indices.
| [in] | I | Parameter index in u-direction |
| [in] | J | Parameter index in v-direction |
| [in] | dof | Which DOFs to constrain at the node |
| [in] | code | Inhomogeneous dirichlet condition code |
| [in] | basis | Which basis to constrain edge for |
The sign of the two indices is used to define whether we want the node at the beginning or the end of that parameter direction. The magnitude of the indices are not used.
Implemented in ASMu2D, and ASMs2D.
Referenced by SIM2D::addConstraint().
|
pure virtual |
Constrains all DOFs on a given boundary edge.
| [in] | dir | Parameter direction defining the edge to constrain |
| [in] | open | If true, exclude the end points of the edge |
| [in] | dof | Which DOFs to constrain at each node on the edge |
| [in] | code | Inhomogeneous dirichlet condition code |
| [in] | basis | Which basis to constrain edge for |
Implemented in ASMs2DC1, ASMu2DC1, ASMu2D, ASMs2DLag, and ASMs2D.
Referenced by SIM2D::addConstraint().
|
pure virtual |
Constrains all DOFs in local directions on a given boundary edge.
| [in] | dir | Parameter direction defining the edge to constrain |
| [in] | open | If true, exclude the end points of the edge |
| [in] | dof | Which local DOFs to constrain at each node on the edge |
| [in] | code | Inhomogeneous dirichlet condition code |
| [in] | project | If true, the local axis directions are projected |
Implemented in ASMu2D, and ASMs2D.
Referenced by SIM2D::addConstraint().
|
pure virtual |
Constrains a node identified by two relative parameter values.
| [in] | xi | Parameter in u-direction |
| [in] | eta | Parameter in v-direction |
| [in] | dof | Which DOFs to constrain at the node |
| [in] | code | Inhomogeneous dirichlet condition code |
The parameter values have to be in the domain [0.0,1.0], where 0.0 means the beginning of the domain and 1.0 means the end. For values in between, the actual index is taken as the integer value closest to r*n, where r denotes the given relative parameter value, and n is the number of nodes along that parameter direction.
Implemented in ASMs2DC1, ASMu2D, and ASMs2D.
Referenced by SIM2D::parse(), and SIM2D::parseBCTag().
|
static |
Creates a two-parametric patch of specified discretization type.
| [in] | type | The discretization method to use |
| [in] | nd | Number of spatial dimensions |
| [in] | nf | Number of unknowns per basis function in the patch |
| [in] | mixedFEM | If true, force mixed formulation even if nf[1]=0 |
Referenced by create(), FieldFuncHDF5::load(), SIM2D::parseGeometryTag(), and SIM2D::readPatch().
|
static |
Creates a two-parametric patch of specified discretization type.
| [in] | type | The discretization method to use |
| [in] | nf | Number of unknowns per basis function in the patch |
References create().
|
pure virtual |
Calculates parameter values for visualization nodal points.
| [out] | prm | Parameter values in given direction for all points |
| [in] | dir | Parameter direction (0,1) |
| [in] | nSegSpan | Number of visualization segments over each knot-span |
|
pure virtual |
Raises the order of the spline object for this patch.
| [in] | ru | Number of times to raise the order in u-direction |
| [in] | rv | Number of times to raise the order in v-direction |
Implemented in ASMu2D, and ASMs2D.
Referenced by SIM2D::parse(), and SIM2D::parseGeometryTag().
|
pure virtual |
Refines the parametrization by inserting extra knots.
| [in] | dir | Parameter direction to refine |
| [in] | xi | Relative positions of added knots in each existing knot span |
| [in] | scale | Scaling factor for the added knot values |
Referenced by SIM2D::parse(), and SIM2D::parseGeometryTag().
|
pure virtual |
Refines the parametrization by inserting extra knots uniformly.
| [in] | dir | Parameter direction to refine |
| [in] | nInsert | Number of extra knots to insert in each knot-span |
Implemented in ASMu2D, and ASMs2D.
Referenced by SIM2D::parse(), and SIM2D::parseGeometryTag().