// This file is generated by WOK (CPPExt). // Please do not edit this file; modify original file instead. // The copyright and license terms as defined for the original file apply to // this header file considered to be the "object code" form of the original source. #ifndef _math_Uzawa_HeaderFile #define _math_Uzawa_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _math_Vector_HeaderFile #include #endif #ifndef _math_Matrix_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif #ifndef _Standard_OStream_HeaderFile #include #endif class StdFail_NotDone; class Standard_ConstructionError; class math_Matrix; class math_Vector; //! This class implements a system resolution C*X = B with
//! an approach solution X0. There are no conditions on the
//! number of equations. The algorithm used is the Uzawa
//! algorithm. It is possible to have equal or inequal (<)
//! equations to solve. The resolution is done with a
//! minimization of Norm(X-X0).
//! If there are only equal equations, the resolution is directly
//! done and is similar to Gauss resolution with an optimisation
//! because the matrix is a symmetric matrix.
//! (The resolution is done with Crout algorithm)
class math_Uzawa { public: void* operator new(size_t,void* anAddress) { return anAddress; } void* operator new(size_t size) { return Standard::Allocate(size); } void operator delete(void *anAddress) { if (anAddress) Standard::Free((Standard_Address&)anAddress); } //! Given an input matrix Cont, two input vectors Secont
//! and StartingPoint, it solves Cont*X = Secont (only
//! = equations) with a minimization of Norme(X-X0).
//! The maximun iterations number allowed is fixed to
//! NbIterations.
//! The tolerance EpsLic is fixed for the dual variable
//! convergence. The tolerance EpsLix is used for the
//! convergence of X.
//! Exception ConstuctionError is raised if the line number
//! of Cont is different from the length of Secont.
Standard_EXPORT math_Uzawa(const math_Matrix& Cont,const math_Vector& Secont,const math_Vector& StartingPoint,const Standard_Real EpsLix = 1.0e-06,const Standard_Real EpsLic = 1.0e-06,const Standard_Integer NbIterations = 500); //! Given an input matrix Cont, two input vectors Secont
//! and StartingPoint, it solves Cont*X = Secont (the Nce
//! first equations are equal equations and the Nci last
//! equations are inequalities <) with a minimization
//! of Norme(X-X0).
//! The maximun iterations number allowed is fixed to
//! NbIterations.
//! The tolerance EpsLic is fixed for the dual variable
//! convergence. The tolerance EpsLix is used for the
//! convergence of X.
//! There are no conditions on Nce and Nci.
//! Exception ConstuctionError is raised if the line number
//! of Cont is different from the length of Secont and from
//! Nce + Nci.
Standard_EXPORT math_Uzawa(const math_Matrix& Cont,const math_Vector& Secont,const math_Vector& StartingPoint,const Standard_Integer Nci,const Standard_Integer Nce,const Standard_Real EpsLix = 1.0e-06,const Standard_Real EpsLic = 1.0e-06,const Standard_Integer NbIterations = 500); //! Returns true if the computations are successful, otherwise returns false.
Standard_Boolean IsDone() const; //! Returns the vector solution of the system above.
//! An exception is raised if NotDone.
const math_Vector& Value() const; //! Returns the initial error Cont*StartingPoint-Secont.
//! An exception is raised if NotDone.
const math_Vector& InitialError() const; //! returns the duale variables V of the systeme.
Standard_EXPORT void Duale(math_Vector& V) const; //! Returns the difference between X solution and the
//! StartingPoint.
//! An exception is raised if NotDone.
const math_Vector& Error() const; //! returns the number of iterations really done.
//! An exception is raised if NotDone.
Standard_Integer NbIterations() const; //! returns the inverse matrix of (C * Transposed(C)).
//! This result is needed for the computation of the gradient
//! when approximating a curve.
const math_Matrix& InverseCont() const; //! Prints information on the current state of the object.
Standard_EXPORT void Dump(Standard_OStream& o) const; protected: //! Is used internally by the two constructors above.
Standard_EXPORT void Perform(const math_Matrix& Cont,const math_Vector& Secont,const math_Vector& StartingPoint,const Standard_Integer Nci,const Standard_Integer Nce,const Standard_Real EpsLix = 1.0e-06,const Standard_Real EpsLic = 1.0e-06,const Standard_Integer NbIterations = 500) ; private: math_Vector Resul; math_Vector Erruza; math_Vector Errinit; math_Vector Vardua; math_Matrix CTCinv; Standard_Integer NbIter; Standard_Boolean Done; }; #include // other Inline functions and methods (like "C++: function call" methods) #endif