OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
oofem::BSplineInterpolation Class Reference

Interpolation for B-splines. More...

#include <feibspline.h>

+ Inheritance diagram for oofem::BSplineInterpolation:
+ Collaboration diagram for oofem::BSplineInterpolation:

Public Member Functions

 BSplineInterpolation (int nsd)
 
virtual ~BSplineInterpolation ()
 
virtual integrationDomain giveIntegrationDomain () const
 Returns the integration domain of the interpolator. More...
 
virtual Element_Geometry_Type giveGeometryType () const
 Returns the geometry type fo the interpolator. More...
 
virtual integrationDomain giveBoundaryIntegrationDomain (int ib) const
 Returns boundary integration domain. More...
 
virtual integrationDomain giveBoundarySurfaceIntegrationDomain (int isurf) const
 Returns boundary integration domain. More...
 
virtual integrationDomain giveBoundaryEdgeIntegrationDomain (int iedge) const
 Returns boundary integration domain. More...
 
virtual int giveNsd ()
 Returns number of spatial dimensions. More...
 
virtual IRResultType initializeFrom (InputRecord *ir)
 Initializes receiver according to object description stored in input record. More...
 
virtual void boundaryEdgeGiveNodes (IntArray &answer, int boundary)
 Gives the boundary nodes for requested boundary number. More...
 
virtual void boundaryEdgeEvalN (FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates the basis functions on the requested boundary. More...
 
virtual double boundaryEdgeGiveTransformationJacobian (int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates the determinant of the transformation Jacobian on the requested boundary. More...
 
virtual void boundaryEdgeLocal2Global (FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Maps the local boundary coordinates to global. More...
 
virtual void boundaryGiveNodes (IntArray &answer, int boundary)
 Gives the boundary nodes for requested boundary number. More...
 
virtual void boundaryEvalN (FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates the basis functions on the requested boundary. More...
 
virtual double boundaryEvalNormal (FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates the normal on the requested boundary. More...
 
virtual double boundaryGiveTransformationJacobian (int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates the determinant of the transformation Jacobian on the requested boundary. More...
 
virtual void boundaryLocal2Global (FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Maps the local boundary coordinates to global. More...
 
virtual int giveNumberOfKnotSpans (int dim)
 Returns the number of knot spans of the receiver. More...
 
virtual int giveNumberOfControlPoints (int dim)
 
virtual const double *const * giveKnotVector ()
 Returns the subdivision of patch parametric space. More...
 
virtual const IntArraygiveKnotMultiplicity (int dim)
 Returns the knot multiplicity of the receiver. More...
 
virtual const FloatArraygiveKnotValues (int dim)
 Returns the knot values of the receiver. More...
 
virtual void evalN (FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates the array of interpolation functions (shape functions) at given point. More...
 
virtual double evaldNdx (FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point. More...
 
virtual void local2global (FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates global coordinates from given local ones. More...
 
virtual int global2local (FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates local coordinates from given global ones. More...
 
virtual void giveJacobianMatrixAt (FloatMatrix &jacobianMatrix, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Gives the jacobian matrix at the local coordinates. More...
 
virtual int giveKnotSpanBasisFuncMask (const IntArray &knotSpan, IntArray &mask)
 Returns indices (zero based) of nonzero basis functions for given knot span. More...
 
virtual int giveNumberOfKnotSpanBasisFunctions (const IntArray &knotSpan)
 Returns the number of nonzero basis functions at individual knot span,. More...
 
virtual const char * giveClassName () const
 
virtual bool hasSubPatchFormulation ()
 Returns true, if receiver is formulated on sub-patch basis. More...
 
virtual IntegrationRulegiveIntegrationRule (int order)
 Sets up a suitable integration rule for numerical integrating over volume. More...
 
virtual IntegrationRulegiveBoundaryIntegrationRule (int order, int boundary)
 Sets up a suitable integration rule for integrating over the requested boundary. More...
 
virtual IntegrationRulegiveBoundaryEdgeIntegrationRule (int order, int boundary)
 Sets up a suitable integration rule for integrating over the requested boundary. More...
 
Surface interpolation services
virtual void boundarySurfaceEvalN (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates the array of edge interpolation functions (shape functions) at given point. More...
 
virtual void boundarySurfaceEvaldNdx (FloatMatrix &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates the matrix of derivatives of edge interpolation functions (shape functions) at given point. More...
 
virtual double boundarySurfaceEvalNormal (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates the normal out of the surface at given point. More...
 
virtual void boundarySurfaceLocal2global (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates edge global coordinates from given local ones. More...
 
virtual double boundarySurfaceGiveTransformationJacobian (int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates the edge jacobian of transformation between local and global coordinates. More...
 
virtual void boundarySurfaceGiveNodes (IntArray &answer, int boundary)
 Gives the boundary nodes for requested boundary number. More...
 
- Public Member Functions inherited from oofem::FEInterpolation
 FEInterpolation (int o)
 
virtual ~FEInterpolation ()
 
virtual int giveNumberOfNodes () const
 Returns the number of geometric nodes of the receiver. More...
 
std::string errorInfo (const char *func) const
 
int giveInterpolationOrder ()
 Returns the interpolation order. More...
 
virtual void evald2Ndx2 (FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates the matrix of second derivatives of interpolation functions (shape functions) at given point. More...
 
virtual void evaldNdxi (FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point. More...
 
virtual void giveLocalNodeCoords (FloatMatrix &answer)
 Returns a matrix containing the local coordinates for each node corresponding to the interpolation. More...
 
virtual double giveTransformationJacobian (const FloatArray &lcoords, const FEICellGeometry &cellgeo)
 Evaluates the determinant of the transformation. More...
 
virtual IntegrationRulegiveBoundarySurfaceIntegrationRule (int order, int boundary)
 Sets up a suitable integration rule for integrating over the requested boundary. More...
 
virtual double evalNXIntegral (int boundary, const FEICellGeometry &cellgeo)
 Computes the integral $ \int_S n \cdot x \mathrm{d}s $. More...
 
virtual int giveNumberOfEdges () const
 Returns number of edges. More...
 

Protected Member Functions

void basisFuns (FloatArray &N, int span, double u, int p, const double *U)
 Evaluates the nonvanishing basis functions of 1d BSpline (algorithm A2.2 from NURBS book) More...
 
void dersBasisFuns (int n, double u, int span, int p, double *const U, FloatMatrix &ders)
 Computes nonzero basis functions and their derivatives at u. More...
 
int findSpan (int n, int p, double u, const double *U) const
 Determines the knot span index (Algorithm A2.1 from the NURBS book) More...
 
void giveNonzeroBasisFuncInterval (int span, int deg, int &s, int &e)
 Returns the range of nonzero basis functions for given knot span and given degree. More...
 

Protected Attributes

int nsd
 Number of spatial directions. More...
 
int * degree
 Degree in each direction. More...
 
FloatArrayknotValues
 Knot values [nsd]. More...
 
IntArrayknotMultiplicity
 Knot multiplicity [nsd]. More...
 
int * numberOfControlPoints
 numberOfControlPoints[nsd] More...
 
double ** knotVector
 Knot vectors [nsd][knot_vector_size]. More...
 
int * numberOfKnotSpans
 Nonzero spans in each directions [nsd]. More...
 
- Protected Attributes inherited from oofem::FEInterpolation
int order
 

Detailed Description

Interpolation for B-splines.

Definition at line 60 of file feibspline.h.

Constructor & Destructor Documentation

oofem::BSplineInterpolation::BSplineInterpolation ( int  nsd)
inline

Definition at line 82 of file feibspline.h.

oofem::BSplineInterpolation::~BSplineInterpolation ( )
virtual

Member Function Documentation

void oofem::BSplineInterpolation::basisFuns ( FloatArray N,
int  span,
double  u,
int  p,
const double *  U 
)
protected

Evaluates the nonvanishing basis functions of 1d BSpline (algorithm A2.2 from NURBS book)

Parameters
spanKnot span index (zero based).
uValue at which to evaluate.
pDegree.
UKnot vector.
NComputed p+1 nonvanishing functions (N_{span-p,p}-N_{span,p})
Warning
Parameter u and span must be in a valid range.

Definition at line 660 of file feibspline.C.

References N, and oofem::FloatArray::resize().

Referenced by oofem::TSplineInterpolation::basisFunction(), oofem::NURBSInterpolation::evalN(), evalN(), oofem::NURBSInterpolation::local2global(), and local2global().

virtual void oofem::BSplineInterpolation::boundaryEdgeEvalN ( FloatArray answer,
int  boundary,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
inlinevirtual

Evaluates the basis functions on the requested boundary.

Only basis functions that are nonzero anywhere on the boundary are given. Ordering can be obtained from giveBoundaryNodes. Boundaries are defined as the corner nodes for 1D geometries, edges for 2D geometries and surfaces for 3D geometries.

Parameters
answerBasis functions Array to be filled with the boundary nodes.
boundaryBoundary number.
lcoordsThe local coordinates (on the boundary local coordinate system).
cellgeoUnderlying cell geometry.
Todo:

Implements oofem::FEInterpolation.

Definition at line 135 of file feibspline.h.

References OOFEM_ERROR.

virtual void oofem::BSplineInterpolation::boundaryEdgeGiveNodes ( IntArray answer,
int  boundary 
)
inlinevirtual

Gives the boundary nodes for requested boundary number.

Parameters
answerArray to be filled with the boundary nodes.
boundaryBoundary number.

Implements oofem::FEInterpolation.

Definition at line 133 of file feibspline.h.

References OOFEM_ERROR.

virtual double oofem::BSplineInterpolation::boundaryEdgeGiveTransformationJacobian ( int  boundary,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
inlinevirtual

Evaluates the determinant of the transformation Jacobian on the requested boundary.

Boundaries are defined as the corner nodes for 1D geometries, edges for 2D geometries and surfaces for 3D geometries.

Parameters
boundaryBoundary number.
lcoordsThe local coordinates (on the boundary local coordinate system).
cellgeoUnderlying cell geometry.
Returns
The determinant of the boundary transformation Jacobian.

Implements oofem::FEInterpolation.

Definition at line 137 of file feibspline.h.

References OOFEM_ERROR.

virtual void oofem::BSplineInterpolation::boundaryEdgeLocal2Global ( FloatArray answer,
int  boundary,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
inlinevirtual

Maps the local boundary coordinates to global.

Boundaries are defined as the corner nodes for 1D geometries, edges for 2D geometries and surfaces for 3D geometries.

Parameters
answerGlobal coordinates.
boundaryBoundary number.
lcoordsThe local coordinates (on the boundary local coordinate system).
cellgeoUnderlying cell geometry.

Implements oofem::FEInterpolation.

Definition at line 140 of file feibspline.h.

References OOFEM_ERROR.

virtual void oofem::BSplineInterpolation::boundaryEvalN ( FloatArray answer,
int  boundary,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
inlinevirtual

Evaluates the basis functions on the requested boundary.

Only basis functions that are nonzero anywhere on the boundary are given. Ordering can be obtained from giveBoundaryNodes. Boundaries are defined as the corner nodes for 1D geometries, edges for 2D geometries and surfaces for 3D geometries.

Parameters
answerBasis functions Array to be filled with the boundary nodes.
boundaryBoundary number.
lcoordsThe local coordinates (on the boundary local coordinate system).
cellgeoUnderlying cell geometry.

Implements oofem::FEInterpolation.

Definition at line 169 of file feibspline.h.

References OOFEM_ERROR.

virtual double oofem::BSplineInterpolation::boundaryEvalNormal ( FloatArray answer,
int  boundary,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
inlinevirtual

Evaluates the normal on the requested boundary.

Parameters
answerThe evaluated normal.
boundaryBoundary number.
lcoordsThe local coordinates (on the boundary local coordinate system).
cellgeoUnderlying cell geometry.
Returns
The boundary transformation Jacobian.

Implements oofem::FEInterpolation.

Definition at line 171 of file feibspline.h.

References OOFEM_ERROR.

virtual void oofem::BSplineInterpolation::boundaryGiveNodes ( IntArray answer,
int  boundary 
)
inlinevirtual

Gives the boundary nodes for requested boundary number.

Boundaries are defined as the corner nodes for 1D geometries, edges for 2D geometries and surfaces for 3D geometries.

Parameters
answerArray to be filled with the boundary nodes.
boundaryBoundary number.

Implements oofem::FEInterpolation.

Definition at line 167 of file feibspline.h.

References OOFEM_ERROR.

virtual double oofem::BSplineInterpolation::boundaryGiveTransformationJacobian ( int  boundary,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
inlinevirtual

Evaluates the determinant of the transformation Jacobian on the requested boundary.

Boundaries are defined as the corner nodes for 1D geometries, edges for 2D geometries and surfaces for 3D geometries.

Parameters
boundaryBoundary number.
lcoordsThe local coordinates (on the boundary local coordinate system).
cellgeoUnderlying cell geometry.
Returns
The determinant of the boundary transformation Jacobian.

Implements oofem::FEInterpolation.

Definition at line 174 of file feibspline.h.

References OOFEM_ERROR.

virtual void oofem::BSplineInterpolation::boundaryLocal2Global ( FloatArray answer,
int  boundary,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
inlinevirtual

Maps the local boundary coordinates to global.

Boundaries are defined as the corner nodes for 1D geometries, edges for 2D geometries and surfaces for 3D geometries.

Parameters
answerGlobal coordinates.
boundaryBoundary number.
lcoordsThe local coordinates (on the boundary local coordinate system).
cellgeoUnderlying cell geometry.

Implements oofem::FEInterpolation.

Definition at line 177 of file feibspline.h.

References OOFEM_ERROR.

virtual void oofem::BSplineInterpolation::boundarySurfaceEvaldNdx ( FloatMatrix answer,
int  isurf,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
inlinevirtual

Evaluates the matrix of derivatives of edge interpolation functions (shape functions) at given point.

These derivatives are in global coordinate system (where the nodal coordinates are defined).

Parameters
answerContains resulting matrix of derivatives, the member at i,j position contains value of dNj/dxi.
isurfDetermines the surface number.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.

Implements oofem::FEInterpolation.

Definition at line 147 of file feibspline.h.

References OOFEM_ERROR.

virtual void oofem::BSplineInterpolation::boundarySurfaceEvalN ( FloatArray answer,
int  isurf,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
inlinevirtual

Evaluates the array of edge interpolation functions (shape functions) at given point.

Parameters
answerContains resulting array of evaluated interpolation functions.
isurfSurface number.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.

Implements oofem::FEInterpolation.

Definition at line 146 of file feibspline.h.

References OOFEM_ERROR.

virtual double oofem::BSplineInterpolation::boundarySurfaceEvalNormal ( FloatArray answer,
int  isurf,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
inlinevirtual

Evaluates the normal out of the surface at given point.

Parameters
answerContains resulting normal vector.
isurfDetermines the surface number.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.
Returns
Surface mapping jacobian.

Implements oofem::FEInterpolation.

Definition at line 150 of file feibspline.h.

References OOFEM_ERROR.

virtual void oofem::BSplineInterpolation::boundarySurfaceGiveNodes ( IntArray answer,
int  boundary 
)
inlinevirtual

Gives the boundary nodes for requested boundary number.

Parameters
answerArray to be filled with the boundary nodes.
boundaryBoundary number.

Implements oofem::FEInterpolation.

Definition at line 159 of file feibspline.h.

References OOFEM_ERROR.

virtual double oofem::BSplineInterpolation::boundarySurfaceGiveTransformationJacobian ( int  isurf,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
inlinevirtual

Evaluates the edge jacobian of transformation between local and global coordinates.

Parameters
isurfDetermines the surface number.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.
Returns
Determinant of the transformation.

Implements oofem::FEInterpolation.

Definition at line 156 of file feibspline.h.

References OOFEM_ERROR.

virtual void oofem::BSplineInterpolation::boundarySurfaceLocal2global ( FloatArray answer,
int  isurf,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
inlinevirtual

Evaluates edge global coordinates from given local ones.

These derivatives are in global coordinate system (where the nodal coordinates are defined).

Parameters
answerContains resulting global coordinates.
isurfDetermines the surface number.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.

Implements oofem::FEInterpolation.

Definition at line 153 of file feibspline.h.

References OOFEM_ERROR.

void oofem::BSplineInterpolation::dersBasisFuns ( int  n,
double  u,
int  span,
int  p,
double *const  U,
FloatMatrix ders 
)
protected

Computes nonzero basis functions and their derivatives at u.

For information on the algorithm, see A2.3 on p72 of the NURBS book. The result is stored in the ders matrix, where ders is of size (n+1,p+1) and the derivative

\begin{align*} N(u) &= \mathit{ders}(0,span-p+j) \quad\text{where } j=0...p \ \ N'(u) &= \mathit{ders}(1,span-p+j) \quad\text{where } j=0...p \ \ N''(u) &= \mathit{ders}(2,span-p+j) \quad\text{where } j=0...p \end{align*}

Parameters
nDegree of the derivation.
uParametric value.
spanKnot span index (zero based).
pDegree.
UKnot vector.
dersMatrix containing the derivatives of the basis functions.
Warning
Parameters n, u and span must be in a valid range.

Definition at line 692 of file feibspline.C.

References oofem::FloatMatrix::resize().

Referenced by oofem::TSplineInterpolation::dersBasisFunction(), oofem::NURBSInterpolation::evaldNdx(), evaldNdx(), oofem::NURBSInterpolation::giveJacobianMatrixAt(), and giveJacobianMatrixAt().

double oofem::BSplineInterpolation::evaldNdx ( FloatMatrix answer,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
virtual

Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point.

These derivatives are in global coordinate system (where the nodal coordinates are defined)

Parameters
answerContains resulting matrix of derivatives, the member at i,j position contains value of dNi/dxj.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.
Returns
Determinant of the Jacobian.

Implements oofem::FEInterpolation.

Reimplemented in oofem::TSplineInterpolation, and oofem::NURBSInterpolation.

Definition at line 228 of file feibspline.C.

References oofem::FloatArray::at(), degree, dersBasisFuns(), findSpan(), oofem::FloatMatrix::giveDeterminant(), giveNumberOfKnotSpanBasisFunctions(), oofem::FEICellGeometry::giveVertexCoordinates(), oofem::FEIIGAElementGeometryWrapper::knotSpan, knotVector, nsd, numberOfControlPoints, OOFEM_ERROR, oofem::FloatMatrix::resize(), oofem::FloatArray::zero(), and oofem::FloatMatrix::zero().

void oofem::BSplineInterpolation::evalN ( FloatArray answer,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
virtual

Evaluates the array of interpolation functions (shape functions) at given point.

Parameters
answerContains resulting array of evaluated interpolation functions.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.

Implements oofem::FEInterpolation.

Reimplemented in oofem::TSplineInterpolation, and oofem::NURBSInterpolation.

Definition at line 181 of file feibspline.C.

References oofem::FloatArray::at(), basisFuns(), degree, findSpan(), giveNumberOfKnotSpanBasisFunctions(), oofem::FEIIGAElementGeometryWrapper::knotSpan, knotVector, N, nsd, numberOfControlPoints, OOFEM_ERROR, and oofem::FloatArray::resize().

int oofem::BSplineInterpolation::findSpan ( int  n,
int  p,
double  u,
const double *  U 
) const
protected

Determines the knot span index (Algorithm A2.1 from the NURBS book)

Determines the knot span for which there exists non-zero basis functions. The span is the index k for which the parameter u is valid in the (u_k,u_{k+1}] range.

Parameters
nNumber of control points - 1.
uParametric value.
pDegree.
UKnot vector.
Returns
Span index at u (zero based).
Warning
Parameter u must be in a valid range.

Definition at line 792 of file feibspline.C.

Referenced by oofem::TSplineInterpolation::basisFunction(), oofem::TSplineInterpolation::dersBasisFunction(), oofem::NURBSInterpolation::evaldNdx(), oofem::TSplineInterpolation::evaldNdx(), evaldNdx(), oofem::NURBSInterpolation::evalN(), oofem::TSplineInterpolation::evalN(), evalN(), oofem::NURBSInterpolation::giveJacobianMatrixAt(), oofem::TSplineInterpolation::giveJacobianMatrixAt(), giveJacobianMatrixAt(), oofem::NURBSInterpolation::local2global(), oofem::TSplineInterpolation::local2global(), and local2global().

virtual integrationDomain oofem::BSplineInterpolation::giveBoundaryEdgeIntegrationDomain ( int  boundary) const
inlinevirtual

Returns boundary integration domain.

Implements oofem::FEInterpolation.

Definition at line 120 of file feibspline.h.

References oofem::_Line, and oofem::_UnknownIntegrationDomain.

virtual IntegrationRule* oofem::BSplineInterpolation::giveBoundaryEdgeIntegrationRule ( int  order,
int  boundary 
)
inlinevirtual

Sets up a suitable integration rule for integrating over the requested boundary.

The required polynomial order for the determinant of the jacobian is added automatically.

Parameters
orderPolynomial order of the integrand (should NOT including determinant of jacobian).
boundaryBoundary number.

Reimplemented from oofem::FEInterpolation.

Definition at line 208 of file feibspline.h.

References N, and OOFEM_ERROR.

virtual integrationDomain oofem::BSplineInterpolation::giveBoundaryIntegrationDomain ( int  boundary) const
inlinevirtual

Returns boundary integration domain.

Implements oofem::FEInterpolation.

Definition at line 100 of file feibspline.h.

References oofem::_Line, oofem::_Point, oofem::_Square, and oofem::_UnknownIntegrationDomain.

virtual IntegrationRule* oofem::BSplineInterpolation::giveBoundaryIntegrationRule ( int  order,
int  boundary 
)
inlinevirtual

Sets up a suitable integration rule for integrating over the requested boundary.

The required polynomial order for the determinant of the jacobian is added automatically.

Parameters
orderPolynomial order of the integrand (should NOT including determinant of jacobian).
boundaryBoundary number.

Reimplemented from oofem::FEInterpolation.

Definition at line 205 of file feibspline.h.

References OOFEM_ERROR.

virtual integrationDomain oofem::BSplineInterpolation::giveBoundarySurfaceIntegrationDomain ( int  boundary) const
inlinevirtual

Returns boundary integration domain.

Implements oofem::FEInterpolation.

Definition at line 111 of file feibspline.h.

References oofem::_Square, and oofem::_UnknownIntegrationDomain.

virtual const char* oofem::BSplineInterpolation::giveClassName ( ) const
inlinevirtual

Reimplemented in oofem::TSplineInterpolation, and oofem::NURBSInterpolation.

Definition at line 199 of file feibspline.h.

virtual Element_Geometry_Type oofem::BSplineInterpolation::giveGeometryType ( ) const
inlinevirtual

Returns the geometry type fo the interpolator.

Implements oofem::FEInterpolation.

Definition at line 98 of file feibspline.h.

virtual integrationDomain oofem::BSplineInterpolation::giveIntegrationDomain ( ) const
inlinevirtual

Returns the integration domain of the interpolator.

Implements oofem::FEInterpolation.

Definition at line 87 of file feibspline.h.

References oofem::_Cube, oofem::_Line, oofem::_Square, and oofem::_UnknownIntegrationDomain.

virtual IntegrationRule* oofem::BSplineInterpolation::giveIntegrationRule ( int  order)
inlinevirtual

Sets up a suitable integration rule for numerical integrating over volume.

The required polynomial order for the determinant of the jacobian is added automatically.

Parameters
orderPolynomial order of integrand (should NOT including determinant of jacobian).

Reimplemented from oofem::FEInterpolation.

Definition at line 202 of file feibspline.h.

References OOFEM_ERROR.

void oofem::BSplineInterpolation::giveJacobianMatrixAt ( FloatMatrix jacobianMatrix,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
virtual

Gives the jacobian matrix at the local coordinates.

Parameters
jacobianMatrixThe requested matrix.
lcoordsLocal coordinates.
cellgeoElement geometry.

Reimplemented from oofem::FEInterpolation.

Reimplemented in oofem::TSplineInterpolation, and oofem::NURBSInterpolation.

Definition at line 495 of file feibspline.C.

References oofem::FloatArray::add(), oofem::FloatArray::at(), degree, dersBasisFuns(), findSpan(), oofem::FEICellGeometry::giveVertexCoordinates(), oofem::FEIIGAElementGeometryWrapper::knotSpan, knotVector, nsd, numberOfControlPoints, OOFEM_ERROR, oofem::FloatMatrix::resize(), oofem::FloatArray::zero(), and oofem::FloatMatrix::zero().

virtual const IntArray* oofem::BSplineInterpolation::giveKnotMultiplicity ( int  dim)
inlinevirtual

Returns the knot multiplicity of the receiver.

Reimplemented from oofem::FEInterpolation.

Definition at line 186 of file feibspline.h.

int oofem::BSplineInterpolation::giveKnotSpanBasisFuncMask ( const IntArray knotSpan,
IntArray mask 
)
virtual

Returns indices (zero based) of nonzero basis functions for given knot span.

The knot span identifies the sub-region of the finite element.

Returns
Nonzero if mask is provided, zero otherwise meaning that all basis functions are generally nonzero.

Reimplemented from oofem::FEInterpolation.

Reimplemented in oofem::TSplineInterpolation.

Definition at line 602 of file feibspline.C.

References oofem::IntArray::at(), degree, giveNumberOfKnotSpanBasisFunctions(), nsd, numberOfControlPoints, OOFEM_ERROR, and oofem::IntArray::resize().

virtual const FloatArray* oofem::BSplineInterpolation::giveKnotValues ( int  dim)
inlinevirtual
virtual const double* const* oofem::BSplineInterpolation::giveKnotVector ( )
inlinevirtual

Returns the subdivision of patch parametric space.

Reimplemented from oofem::FEInterpolation.

Definition at line 183 of file feibspline.h.

void oofem::BSplineInterpolation::giveNonzeroBasisFuncInterval ( int  span,
int  deg,
int &  s,
int &  e 
)
inlineprotected

Returns the range of nonzero basis functions for given knot span and given degree.

Definition at line 263 of file feibspline.h.

virtual int oofem::BSplineInterpolation::giveNsd ( )
inlinevirtual

Returns number of spatial dimensions.

Implements oofem::FEInterpolation.

Definition at line 130 of file feibspline.h.

virtual int oofem::BSplineInterpolation::giveNumberOfControlPoints ( int  dim)
inlinevirtual
int oofem::BSplineInterpolation::giveNumberOfKnotSpanBasisFunctions ( const IntArray knotSpan)
virtual

Returns the number of nonzero basis functions at individual knot span,.

Returns
Zero in case of all basis functions generally nonzero, answer otherwise.
Todo:
This loop seems meaningless. It just returns degree[nsd-1]+1 in the end ?

Reimplemented from oofem::FEInterpolation.

Reimplemented in oofem::TSplineInterpolation.

Definition at line 641 of file feibspline.C.

References degree, and nsd.

Referenced by oofem::NURBSInterpolation::evaldNdx(), evaldNdx(), oofem::NURBSInterpolation::evalN(), evalN(), and giveKnotSpanBasisFuncMask().

virtual int oofem::BSplineInterpolation::giveNumberOfKnotSpans ( int  dim)
inlinevirtual

Returns the number of knot spans of the receiver.

Reimplemented from oofem::FEInterpolation.

Definition at line 181 of file feibspline.h.

virtual int oofem::BSplineInterpolation::global2local ( FloatArray answer,
const FloatArray gcoords,
const FEICellGeometry cellgeo 
)
inlinevirtual

Evaluates local coordinates from given global ones.

If local coordinates cannot be found (generate elements, or point far outside geometry, then the center coordinate will be used as a last resort, and the return value will be zero.

Parameters
answerContains evaluated local coordinates.
gcoordsArray containing global coordinates.
cellgeoUnderlying cell geometry.
Returns
Nonzero is returned if point is within the element geometry, zero otherwise.

Implements oofem::FEInterpolation.

Reimplemented in oofem::TSplineInterpolation, and oofem::NURBSInterpolation.

Definition at line 191 of file feibspline.h.

References OOFEM_ERROR.

virtual bool oofem::BSplineInterpolation::hasSubPatchFormulation ( )
inlinevirtual

Returns true, if receiver is formulated on sub-patch basis.

Reimplemented from oofem::FEInterpolation.

Definition at line 200 of file feibspline.h.

void oofem::BSplineInterpolation::local2global ( FloatArray answer,
const FloatArray lcoords,
const FEICellGeometry cellgeo 
)
virtual

Evaluates global coordinates from given local ones.

Parameters
answerContains resulting global coordinates.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.

Implements oofem::FEInterpolation.

Reimplemented in oofem::TSplineInterpolation, and oofem::NURBSInterpolation.

Definition at line 411 of file feibspline.C.

References oofem::FloatArray::add(), oofem::FloatArray::at(), basisFuns(), degree, findSpan(), oofem::FEICellGeometry::giveVertexCoordinates(), oofem::FEIIGAElementGeometryWrapper::knotSpan, knotVector, N, nsd, numberOfControlPoints, OOFEM_ERROR, oofem::FloatArray::resize(), and oofem::FloatArray::zero().

Member Data Documentation

IntArray* oofem::BSplineInterpolation::knotMultiplicity
protected

Knot multiplicity [nsd].

Definition at line 70 of file feibspline.h.

Referenced by initializeFrom(), and ~BSplineInterpolation().

int* oofem::BSplineInterpolation::numberOfKnotSpans
protected

Nonzero spans in each directions [nsd].

Definition at line 80 of file feibspline.h.

Referenced by initializeFrom(), and ~BSplineInterpolation().


The documentation for this class was generated from the following files:

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:33 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011