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

Interpolation class for NURBS. More...

#include <feinurbs.h>

+ Inheritance diagram for oofem::NURBSInterpolation:
+ Collaboration diagram for oofem::NURBSInterpolation:

Public Member Functions

 NURBSInterpolation (int nsd)
 
virtual ~NURBSInterpolation ()
 
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 const char * giveClassName () const
 
- Public Member Functions inherited from oofem::BSplineInterpolation
 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 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 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...
 
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...
 

Additional Inherited Members

- Protected Member Functions inherited from oofem::BSplineInterpolation
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 inherited from oofem::BSplineInterpolation
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 class for NURBS.

Definition at line 47 of file feinurbs.h.

Constructor & Destructor Documentation

oofem::NURBSInterpolation::NURBSInterpolation ( int  nsd)
inline

Definition at line 50 of file feinurbs.h.

oofem::NURBSInterpolation::~NURBSInterpolation ( )
virtual

Definition at line 45 of file feinurbs.C.

Member Function Documentation

double oofem::NURBSInterpolation::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.

Reimplemented from oofem::BSplineInterpolation.

Definition at line 118 of file feinurbs.C.

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

void oofem::NURBSInterpolation::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.

Reimplemented from oofem::BSplineInterpolation.

Definition at line 48 of file feinurbs.C.

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

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

Reimplemented from oofem::BSplineInterpolation.

Definition at line 62 of file feinurbs.h.

virtual int oofem::NURBSInterpolation::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.

Reimplemented from oofem::BSplineInterpolation.

Definition at line 56 of file feinurbs.h.

References OOFEM_ERROR.

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

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:39 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011