![]() |
Open CASCADE Technology Reference Manual 8.0.0
|
This class provides method to work with Jacobi Polynomials relatively to an order of constraint q = myWorkDegree-2*(myNivConstr+1) Jk(t) for k=0,q compose the Jacobi Polynomial base relatively to the weight 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: More...
#include <PLib_JacobiPolynomial.hxx>
Public Member Functions | |
| PLib_JacobiPolynomial (const int theWorkDegree, const GeomAbs_Shape theConstraintOrder) | |
| Initialize the polynomial class Degree has to be <= 30 ConstraintOrder has to be GeomAbs_C0 GeomAbs_C1 GeomAbs_C2. | |
| void | Points (const int theNbGaussPoints, NCollection_Array1< double > &theTabPoints) 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 chosen 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 int theNbGaussPoints, NCollection_Array2< double > &theTabWeights) const |
| returns the Jacobi weights 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 chosen 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 (NCollection_Array1< double > &theTabMax) 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 ); | |
| double | MaxError (const int theDimension, double &theJacCoeff, const int theNewDegree) 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 int theDimension, const int theMaxDegree, const double theTol, double &theJacCoeff, int &theNewDegree, double &theMaxError) 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. | |
| double | AverageError (const int theDimension, double &theJacCoeff, const int theNewDegree) const |
| void | ToCoefficients (const int theDimension, const int theDegree, const NCollection_Array1< double > &theJacCoeff, NCollection_Array1< double > &theCoefficients) const |
| Convert the polynomial P(t) = R(t) + W(t) Q(t) in the canonical base. | |
| void | D0 (const double theU, NCollection_Array1< double > &theBasisValue) const |
| Compute the values of the basis functions in u. | |
| void | D1 (const double theU, NCollection_Array1< double > &theBasisValue, NCollection_Array1< double > &theBasisD1) const |
| Compute the values and the derivatives values of the basis functions in u. | |
| void | D2 (const double theU, NCollection_Array1< double > &theBasisValue, NCollection_Array1< double > &theBasisD1, NCollection_Array1< double > &theBasisD2) const |
| Compute the values and the derivatives values of the basis functions in u. | |
| void | D3 (const double theU, NCollection_Array1< double > &theBasisValue, NCollection_Array1< double > &theBasisD1, NCollection_Array1< double > &theBasisD2, NCollection_Array1< double > &theBasisD3) const |
| Compute the values and the derivatives values of the basis functions in u. | |
| int | WorkDegree () const noexcept |
| returns WorkDegree | |
| int | NivConstr () const noexcept |
| returns NivConstr | |
Protected Member Functions | |
| void | D0123 (const int theNDeriv, const double theU, NCollection_Array1< double > &theBasisValue, NCollection_Array1< double > &theBasisD1, NCollection_Array1< double > &theBasisD2, NCollection_Array1< double > &theBasisD3) const |
| Compute the values and the derivatives values of the basis functions in u. | |
This class provides method to work with Jacobi Polynomials relatively to an order of constraint q = myWorkDegree-2*(myNivConstr+1) Jk(t) for k=0,q compose the Jacobi Polynomial base relatively to the weight 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
| PLib_JacobiPolynomial::PLib_JacobiPolynomial | ( | const int | theWorkDegree, |
| const GeomAbs_Shape | theConstraintOrder ) |
Initialize the polynomial class Degree has to be <= 30 ConstraintOrder has to be GeomAbs_C0 GeomAbs_C1 GeomAbs_C2.
| double PLib_JacobiPolynomial::AverageError | ( | const int | theDimension, |
| double & | theJacCoeff, | ||
| const int | theNewDegree ) const |
| void PLib_JacobiPolynomial::D0 | ( | const double | theU, |
| NCollection_Array1< double > & | theBasisValue ) const |
Compute the values of the basis functions in u.
|
protected |
Compute the values and the derivatives values of the basis functions in u.
| void PLib_JacobiPolynomial::D1 | ( | const double | theU, |
| NCollection_Array1< double > & | theBasisValue, | ||
| NCollection_Array1< double > & | theBasisD1 ) const |
Compute the values and the derivatives values of the basis functions in u.
| void PLib_JacobiPolynomial::D2 | ( | const double | theU, |
| NCollection_Array1< double > & | theBasisValue, | ||
| NCollection_Array1< double > & | theBasisD1, | ||
| NCollection_Array1< double > & | theBasisD2 ) const |
Compute the values and the derivatives values of the basis functions in u.
| void PLib_JacobiPolynomial::D3 | ( | const double | theU, |
| NCollection_Array1< double > & | theBasisValue, | ||
| NCollection_Array1< double > & | theBasisD1, | ||
| NCollection_Array1< double > & | theBasisD2, | ||
| NCollection_Array1< double > & | theBasisD3 ) const |
Compute the values and the derivatives values of the basis functions in u.
| double PLib_JacobiPolynomial::MaxError | ( | const int | theDimension, |
| double & | theJacCoeff, | ||
| const int | theNewDegree ) 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 PLib_JacobiPolynomial::MaxValue | ( | NCollection_Array1< double > & | theTabMax | ) | 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 );
|
inlinenoexcept |
returns NivConstr
| void PLib_JacobiPolynomial::Points | ( | const int | theNbGaussPoints, |
| NCollection_Array1< double > & | theTabPoints ) 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 chosen 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 PLib_JacobiPolynomial::ReduceDegree | ( | const int | theDimension, |
| const int | theMaxDegree, | ||
| const double | theTol, | ||
| double & | theJacCoeff, | ||
| int & | theNewDegree, | ||
| double & | theMaxError ) 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.
| void PLib_JacobiPolynomial::ToCoefficients | ( | const int | theDimension, |
| const int | theDegree, | ||
| const NCollection_Array1< double > & | theJacCoeff, | ||
| NCollection_Array1< double > & | theCoefficients ) const |
Convert the polynomial P(t) = R(t) + W(t) Q(t) in the canonical base.
| void PLib_JacobiPolynomial::Weights | ( | const int | theNbGaussPoints, |
| NCollection_Array2< double > & | theTabWeights ) const |
returns the Jacobi weights 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 chosen 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
|
inlinenoexcept |
returns WorkDegree