Open CASCADE Technology 7.8.2.dev
|
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 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) = H(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_HermitJacobi.hxx>
Public Member Functions | |
PLib_HermitJacobi (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. | |
Standard_Real | MaxError (const Standard_Integer Dimension, Standard_Real &HermJacCoeff, 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 &HermJacCoeff, Standard_Integer &NewDegree, Standard_Real &MaxError) const override |
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 &HermJacCoeff, const Standard_Integer NewDegree) const |
void | ToCoefficients (const Standard_Integer Dimension, const Standard_Integer Degree, const TColStd_Array1OfReal &HermJacCoeff, TColStd_Array1OfReal &Coefficients) const override |
Convert the polynomial P(t) = H(t) + W(t) Q(t) in the canonical base. | |
void | D0 (const Standard_Real U, TColStd_Array1OfReal &BasisValue) override |
Compute the values of the basis functions in u. | |
void | D1 (const Standard_Real U, TColStd_Array1OfReal &BasisValue, TColStd_Array1OfReal &BasisD1) override |
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) override |
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) override |
Compute the values and the derivatives values of the basis functions in u. | |
Standard_Integer | WorkDegree () const override |
returns WorkDegree | |
Standard_Integer | NivConstr () const |
returns NivConstr | |
Public Member Functions inherited from PLib_Base | |
Public Member Functions inherited from Standard_Transient | |
Standard_Transient () | |
Empty constructor. | |
Standard_Transient (const Standard_Transient &) | |
Copy constructor – does nothing. | |
Standard_Transient & | operator= (const Standard_Transient &) |
Assignment operator, needed to avoid copying reference counter. | |
virtual | ~Standard_Transient () |
Destructor must be virtual. | |
virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
Returns a type descriptor about this object. | |
Standard_Boolean | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
Returns a true value if this is an instance of Type. | |
Standard_Boolean | IsInstance (const Standard_CString theTypeName) const |
Returns a true value if this is an instance of TypeName. | |
Standard_Boolean | IsKind (const opencascade::handle< Standard_Type > &theType) const |
Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism. | |
Standard_Boolean | IsKind (const Standard_CString theTypeName) const |
Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism. | |
Standard_Transient * | This () const |
Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero. | |
Standard_Integer | GetRefCount () const noexcept |
Get the reference counter of this object. | |
void | IncrementRefCounter () noexcept |
Increments the reference counter of this object. | |
Standard_Integer | DecrementRefCounter () noexcept |
Decrements the reference counter of this object; returns the decremented value. | |
virtual void | Delete () const |
Memory deallocator for transient classes. | |
Additional Inherited Members | |
Public Types inherited from Standard_Transient | |
typedef void | base_type |
Returns a type descriptor about this object. | |
Static Public Member Functions inherited from Standard_Transient | |
static constexpr const char * | get_type_name () |
Returns a type descriptor about this object. | |
static const opencascade::handle< Standard_Type > & | get_type_descriptor () |
Returns type descriptor of Standard_Transient class. | |
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 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) = H(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:
The coefficients
represents the part of the polynomial in the Hermit's base: H(t)
The following coefficients represents the part of the polynomial in the Jacobi base ie Q(t)
PLib_HermitJacobi::PLib_HermitJacobi | ( | 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.
Standard_Real PLib_HermitJacobi::AverageError | ( | const Standard_Integer | Dimension, |
Standard_Real & | HermJacCoeff, | ||
const Standard_Integer | NewDegree ) const |
|
overridevirtual |
Compute the values of the basis functions in u.
Implements PLib_Base.
|
overridevirtual |
Compute the values and the derivatives values of the basis functions in u.
Implements PLib_Base.
|
overridevirtual |
Compute the values and the derivatives values of the basis functions in u.
Implements PLib_Base.
|
overridevirtual |
Compute the values and the derivatives values of the basis functions in u.
Implements PLib_Base.
Standard_Real PLib_HermitJacobi::MaxError | ( | const Standard_Integer | Dimension, |
Standard_Real & | HermJacCoeff, | ||
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.
Standard_Integer PLib_HermitJacobi::NivConstr | ( | ) | const |
returns NivConstr
|
overridevirtual |
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.
Implements PLib_Base.
|
overridevirtual |
Convert the polynomial P(t) = H(t) + W(t) Q(t) in the canonical base.
Implements PLib_Base.
|
overridevirtual |
returns WorkDegree
Implements PLib_Base.