Open CASCADE Technology 6.6.0
|
This class provides method to work with Jacobi Polynomials
relativly to an order of constraint
q = myWorkDegree-2*(myNivConstr+1)
Jk(t) for k=0,q compose the Jacobi Polynomial base relativly to the weigth W(t)
iorder is the integer value for the constraints:
iorder = 0 <=> ConstraintOrder = GeomAbs_C0
iorder = 1 <=> ConstraintOrder = GeomAbs_C1
iorder = 2 <=> ConstraintOrder = GeomAbs_C2
P(t) = R(t) + W(t) * Q(t) Where W(t) = (1-t**2)**(2*iordre+2)
the coefficients JacCoeff represents P(t) JacCoeff are stored as follow:
c0(1) c0(2) .... c0(Dimension)
c1(1) c1(2) .... c1(Dimension)
cDegree(1) cDegree(2) .... cDegree(Dimension)
The coefficients
c0(1) c0(2) .... c0(Dimension)
c2*ordre+1(1) ... c2*ordre+1(dimension)
represents the part of the polynomial in the
canonical base: R(t)
R(t) = c0 + c1 t + ...+ c2*iordre+1 t**2*iordre+1
The following coefficients represents the part of the
polynomial in the Jacobi base ie Q(t)
Q(t) = c2*iordre+2 J0(t) + ...+ cDegree JDegree-2*iordre-2
#include <PLib_JacobiPolynomial.hxx>
Public Member Functions | |
PLib_JacobiPolynomial (const Standard_Integer WorkDegree, const GeomAbs_Shape ConstraintOrder) | |
Initialize the polynomial class Degree has to be <= 30 ConstraintOrder has to be GeomAbs_C0 GeomAbs_C1 GeomAbs_C2 | |
void | Points (const Standard_Integer NbGaussPoints, TColStd_Array1OfReal &TabPoints) const |
returns the Jacobi Points for Gauss integration ie the positive values of the Legendre roots by increasing values NbGaussPoints is the number of points choosen for the integral computation. TabPoints (0,NbGaussPoints/2) TabPoints (0) is loaded only for the odd values of NbGaussPoints The possible values for NbGaussPoints are : 8, 10, 15, 20, 25, 30, 35, 40, 50, 61 NbGaussPoints must be greater than Degree | |
void | Weights (const Standard_Integer NbGaussPoints, TColStd_Array2OfReal &TabWeights) const |
returns the Jacobi weigths for Gauss integration only for the positive values of the Legendre roots in the order they are given by the method Points NbGaussPoints is the number of points choosen for the integral computation. TabWeights (0,NbGaussPoints/2,0,Degree) TabWeights (0,.) are only loaded for the odd values of NbGaussPoints The possible values for NbGaussPoints are : 8 , 10 , 15 ,20 ,25 , 30, 35 , 40 , 50 , 61 NbGaussPoints must be greater than Degree | |
void | MaxValue (TColStd_Array1OfReal &TabMax) const |
this method loads for k=0,q the maximum value of abs ( W(t)*Jk(t) )for t bellonging to [-1,1] This values are loaded is the array TabMax(0,myWorkDegree-2*(myNivConst+1)) MaxValue ( me ; TabMaxPointer : in out Real ); | |
Standard_Real | MaxError (const Standard_Integer Dimension, Standard_Real &JacCoeff, const Standard_Integer NewDegree) const |
This method computes the maximum error on the polynomial W(t) Q(t) obtained by missing the coefficients of JacCoeff from NewDegree +1 to Degree | |
void | ReduceDegree (const Standard_Integer Dimension, const Standard_Integer MaxDegree, const Standard_Real Tol, Standard_Real &JacCoeff, Standard_Integer &NewDegree, Standard_Real &MaxError) const |
Compute NewDegree <= MaxDegree so that MaxError is lower than Tol. MaxError can be greater than Tol if it is not possible to find a NewDegree <= MaxDegree. In this case NewDegree = MaxDegree | |
Standard_Real | AverageError (const Standard_Integer Dimension, Standard_Real &JacCoeff, const Standard_Integer NewDegree) const |
void | ToCoefficients (const Standard_Integer Dimension, const Standard_Integer Degree, const TColStd_Array1OfReal &JacCoeff, TColStd_Array1OfReal &Coefficients) const |
Convert the polynomial P(t) = R(t) + W(t) Q(t) in the canonical base. | |
void | D0 (const Standard_Real U, TColStd_Array1OfReal &BasisValue) |
Compute the values of the basis functions in u | |
void | D1 (const Standard_Real U, TColStd_Array1OfReal &BasisValue, TColStd_Array1OfReal &BasisD1) |
Compute the values and the derivatives values of the basis functions in u | |
void | D2 (const Standard_Real U, TColStd_Array1OfReal &BasisValue, TColStd_Array1OfReal &BasisD1, TColStd_Array1OfReal &BasisD2) |
Compute the values and the derivatives values of the basis functions in u | |
void | D3 (const Standard_Real U, TColStd_Array1OfReal &BasisValue, TColStd_Array1OfReal &BasisD1, TColStd_Array1OfReal &BasisD2, TColStd_Array1OfReal &BasisD3) |
Compute the values and the derivatives values of the basis functions in u | |
Standard_Integer | WorkDegree () const |
returns WorkDegree | |
Standard_Integer | NivConstr () const |
returns NivConstr |
PLib_JacobiPolynomial::PLib_JacobiPolynomial | ( | const Standard_Integer | WorkDegree, |
const GeomAbs_Shape | ConstraintOrder | ||
) |
Standard_Real PLib_JacobiPolynomial::AverageError | ( | const Standard_Integer | Dimension, |
Standard_Real & | JacCoeff, | ||
const Standard_Integer | NewDegree | ||
) | const |
void PLib_JacobiPolynomial::D0 | ( | const Standard_Real | U, |
TColStd_Array1OfReal & | BasisValue | ||
) | [virtual] |
Implements PLib_Base.
void PLib_JacobiPolynomial::D1 | ( | const Standard_Real | U, |
TColStd_Array1OfReal & | BasisValue, | ||
TColStd_Array1OfReal & | BasisD1 | ||
) | [virtual] |
Implements PLib_Base.
void PLib_JacobiPolynomial::D2 | ( | const Standard_Real | U, |
TColStd_Array1OfReal & | BasisValue, | ||
TColStd_Array1OfReal & | BasisD1, | ||
TColStd_Array1OfReal & | BasisD2 | ||
) | [virtual] |
Implements PLib_Base.
void PLib_JacobiPolynomial::D3 | ( | const Standard_Real | U, |
TColStd_Array1OfReal & | BasisValue, | ||
TColStd_Array1OfReal & | BasisD1, | ||
TColStd_Array1OfReal & | BasisD2, | ||
TColStd_Array1OfReal & | BasisD3 | ||
) | [virtual] |
Implements PLib_Base.
Standard_Real PLib_JacobiPolynomial::MaxError | ( | const Standard_Integer | Dimension, |
Standard_Real & | JacCoeff, | ||
const Standard_Integer | NewDegree | ||
) | const |
void PLib_JacobiPolynomial::MaxValue | ( | TColStd_Array1OfReal & | TabMax | ) | const |
Standard_Integer PLib_JacobiPolynomial::NivConstr | ( | ) | const |
void PLib_JacobiPolynomial::Points | ( | const Standard_Integer | NbGaussPoints, |
TColStd_Array1OfReal & | TabPoints | ||
) | const |
void PLib_JacobiPolynomial::ReduceDegree | ( | const Standard_Integer | Dimension, |
const Standard_Integer | MaxDegree, | ||
const Standard_Real | Tol, | ||
Standard_Real & | JacCoeff, | ||
Standard_Integer & | NewDegree, | ||
Standard_Real & | MaxError | ||
) | const [virtual] |
Implements PLib_Base.
void PLib_JacobiPolynomial::ToCoefficients | ( | const Standard_Integer | Dimension, |
const Standard_Integer | Degree, | ||
const TColStd_Array1OfReal & | JacCoeff, | ||
TColStd_Array1OfReal & | Coefficients | ||
) | const [virtual] |
Implements PLib_Base.
void PLib_JacobiPolynomial::Weights | ( | const Standard_Integer | NbGaussPoints, |
TColStd_Array2OfReal & | TabWeights | ||
) | const |
Standard_Integer PLib_JacobiPolynomial::WorkDegree | ( | ) | const [virtual] |
Implements PLib_Base.