43 #define _IFT_BSplineInterpolation_degree "degree" 44 #define _IFT_BSplineInterpolation_knotVectorU "knotvectoru" 45 #define _IFT_BSplineInterpolation_knotVectorV "knotvectorv" 46 #define _IFT_BSplineInterpolation_knotVectorW "knotvectorw" 47 #define _IFT_BSplineInterpolation_knotMultiplicityU "knotmultiplicityu" 48 #define _IFT_BSplineInterpolation_knotMultiplicityV "knotmultiplicityv" 49 #define _IFT_BSplineInterpolation_knotMultiplicityW "knotmultiplicityw" 90 }
else if ( nsd == 2 ) {
92 }
else if ( nsd == 1 ) {
103 }
else if ( nsd == 2 ) {
105 }
else if ( nsd == 1 ) {
114 }
else if ( nsd == 2 ) {
134 {
OOFEM_ERROR(
"Functions not supported for this interpolator."); }
136 {
OOFEM_ERROR(
"Functions not supported for this interpolator."); }
138 {
OOFEM_ERROR(
"Functions not supported for this interpolator.");
141 {
OOFEM_ERROR(
"Functions not supported for this interpolator."); }
149 {
OOFEM_ERROR(
"Functions not supported for this interpolator."); }
152 {
OOFEM_ERROR(
"Functions not supported for this interpolator."); }
155 {
OOFEM_ERROR(
"Functions not supported for this interpolator."); }
158 {
OOFEM_ERROR(
"Functions not supported for this interpolator."); }
160 {
OOFEM_ERROR(
"Functions not supported for this interpolator."); }
175 {
OOFEM_ERROR(
"boundaryGiveTransformationJacobian - Not implemented");
178 {
OOFEM_ERROR(
"boundaryLocal2Global - Not implemented"); }
184 return this->knotVector;
196 virtual int giveKnotSpanBasisFuncMask(
const IntArray &knotSpan,
IntArray &mask);
197 virtual int giveNumberOfKnotSpanBasisFunctions(
const IntArray &knotSpan);
199 virtual const char *
giveClassName()
const {
return "BSplineInterpolation"; }
222 void basisFuns(
FloatArray &
N,
int span,
double u,
int p,
const double *U);
244 void dersBasisFuns(
int n,
double u,
int span,
int p,
double *
const U,
FloatMatrix &ders);
259 int findSpan(
int n,
int p,
double u,
const double *U)
const;
269 #endif // feibspline_h IntArray * knotMultiplicity
Knot multiplicity [nsd].
integrationDomain
Used by integrator class to supply integration points for proper domain to be integrated (Area...
Interpolation for B-splines.
virtual double boundarySurfaceEvalNormal(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the normal out of the surface at given point.
virtual void boundarySurfaceGiveNodes(IntArray &answer, int boundary)
Gives the boundary nodes for requested boundary number.
Element_Geometry_Type
Enumerative type used to classify element geometry Possible values are: EGT_point - point in space EG...
virtual const FloatArray * giveKnotValues(int dim)
Returns the knot values of the receiver.
int * numberOfKnotSpans
Nonzero spans in each directions [nsd].
virtual int giveNumberOfControlPoints(int dim)
int * degree
Degree in each direction.
Class representing a general abstraction for cell geometry.
virtual const char * giveClassName() const
virtual Element_Geometry_Type giveGeometryType() const
Returns the geometry type fo the interpolator.
virtual const IntArray * giveKnotMultiplicity(int dim)
Returns the knot multiplicity of the receiver.
virtual void boundaryEdgeGiveNodes(IntArray &answer, int boundary)
Gives the boundary nodes for requested boundary number.
Class implementing an array of integers.
virtual double boundaryGiveTransformationJacobian(int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the determinant of the transformation Jacobian on the requested boundary.
Abstract base class representing integration rule.
Class representing a general abstraction for finite element interpolation class.
virtual int giveNsd()
Returns number of spatial dimensions.
virtual const double *const * giveKnotVector()
Returns the subdivision of patch parametric space.
double ** knotVector
Knot vectors [nsd][knot_vector_size].
virtual double boundarySurfaceGiveTransformationJacobian(int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the edge jacobian of transformation between local and global coordinates.
virtual void boundaryEdgeLocal2Global(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Maps the local boundary coordinates to global.
FloatArray * knotValues
Knot values [nsd].
virtual integrationDomain giveBoundarySurfaceIntegrationDomain(int isurf) const
Returns boundary integration domain.
virtual void boundaryGiveNodes(IntArray &answer, int boundary)
Gives the boundary nodes for requested boundary number.
virtual IntegrationRule * giveIntegrationRule(int order)
Sets up a suitable integration rule for numerical integrating over volume.
virtual double boundaryEvalNormal(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the normal on the requested boundary.
virtual integrationDomain giveBoundaryEdgeIntegrationDomain(int iedge) const
Returns boundary integration domain.
virtual IntegrationRule * giveBoundaryEdgeIntegrationRule(int order, int boundary)
Sets up a suitable integration rule for integrating over the requested boundary.
virtual bool hasSubPatchFormulation()
Returns true, if receiver is formulated on sub-patch basis.
Class representing vector of real numbers.
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...
virtual integrationDomain giveBoundaryIntegrationDomain(int ib) const
Returns boundary integration domain.
virtual void boundaryEvalN(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the basis functions on the requested boundary.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
virtual int global2local(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates local coordinates from given global ones.
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.
virtual integrationDomain giveIntegrationDomain() const
Returns the integration domain of the interpolator.
virtual int giveNumberOfKnotSpans(int dim)
Returns the number of knot spans of the receiver.
BSplineInterpolation(int nsd)
virtual IntegrationRule * giveBoundaryIntegrationRule(int order, int boundary)
Sets up a suitable integration rule for integrating over the requested boundary.
virtual double boundaryEdgeGiveTransformationJacobian(int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the determinant of the transformation Jacobian on the requested boundary.
virtual void boundaryEdgeEvalN(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the basis functions on the requested boundary.
virtual void boundaryLocal2Global(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Maps the local boundary coordinates to global.
int * numberOfControlPoints
numberOfControlPoints[nsd]
the oofem namespace is to define a context or scope in which all oofem names are defined.
void giveNonzeroBasisFuncInterval(int span, int deg, int &s, int &e)
Returns the range of nonzero basis functions for given knot span and given degree.
virtual void boundarySurfaceLocal2global(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates edge global coordinates from given local ones.
int nsd
Number of spatial directions.