// 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 _AppDef_MyCriterionOfTheVariational_HeaderFile
#define _AppDef_MyCriterionOfTheVariational_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_DefineHandle_HeaderFile
#include <Standard_DefineHandle.hxx>
#endif
#ifndef _Handle_AppDef_MyCriterionOfTheVariational_HeaderFile
#include <Handle_AppDef_MyCriterionOfTheVariational.hxx>
#endif

#ifndef _AppDef_MultiLine_HeaderFile
#include <AppDef_MultiLine.hxx>
#endif
#ifndef _Handle_TColStd_HArray1OfReal_HeaderFile
#include <Handle_TColStd_HArray1OfReal.hxx>
#endif
#ifndef _Handle_FEmTool_ElementaryCriterion_HeaderFile
#include <Handle_FEmTool_ElementaryCriterion.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _TColStd_Array1OfReal_HeaderFile
#include <TColStd_Array1OfReal.hxx>
#endif
#ifndef _Handle_FEmTool_Curve_HeaderFile
#include <Handle_FEmTool_Curve.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _AppParCurves_SmoothCriterion_HeaderFile
#include <AppParCurves_SmoothCriterion.hxx>
#endif
#ifndef _Handle_FEmTool_HAssemblyTable_HeaderFile
#include <Handle_FEmTool_HAssemblyTable.hxx>
#endif
#ifndef _Handle_TColStd_HArray2OfInteger_HeaderFile
#include <Handle_TColStd_HArray2OfInteger.hxx>
#endif
class TColStd_HArray1OfReal;
class FEmTool_ElementaryCriterion;
class FEmTool_Curve;
class Standard_NotImplemented;
class Standard_DomainError;
class AppDef_MultiLine;
class AppDef_MyLineTool;
class FEmTool_HAssemblyTable;
class TColStd_HArray2OfInteger;
class math_Matrix;
class math_Vector;
class TColStd_Array1OfReal;



class AppDef_MyCriterionOfTheVariational : public AppParCurves_SmoothCriterion {

public:

  
  Standard_EXPORT   AppDef_MyCriterionOfTheVariational(const AppDef_MultiLine& SSP,const Standard_Integer FirstPoint,const Standard_Integer LastPoint);
  
  Standard_EXPORT     void SetParameters(const Handle(TColStd_HArray1OfReal)& Parameters) ;
  
  Standard_EXPORT     void SetCurve(const Handle(FEmTool_Curve)& C) ;
  
  Standard_EXPORT     void GetCurve(Handle(FEmTool_Curve)& C) const;
  
  Standard_EXPORT     void SetEstimation(const Standard_Real E1,const Standard_Real E2,const Standard_Real E3) ;
  
  Standard_EXPORT     Standard_Real& EstLength() ;
  
  Standard_EXPORT     void GetEstimation(Standard_Real& E1,Standard_Real& E2,Standard_Real& E3) const;
  
  Standard_EXPORT     Handle_FEmTool_HAssemblyTable AssemblyTable() const;
  
  Standard_EXPORT     Handle_TColStd_HArray2OfInteger DependenceTable() const;
  
  Standard_EXPORT     Standard_Integer QualityValues(const Standard_Real J1min,const Standard_Real J2min,const Standard_Real J3min,Standard_Real& J1,Standard_Real& J2,Standard_Real& J3) ;
  
  Standard_EXPORT     void ErrorValues(Standard_Real& MaxError,Standard_Real& QuadraticError,Standard_Real& AverageError) ;
  
  Standard_EXPORT     void Hessian(const Standard_Integer Element,const Standard_Integer Dimension1,const Standard_Integer Dimension2,math_Matrix& H) ;
  
  Standard_EXPORT     void Gradient(const Standard_Integer Element,const Standard_Integer Dimension,math_Vector& G) ;
  
  Standard_EXPORT     void InputVector(const math_Vector& X,const Handle(FEmTool_HAssemblyTable)& AssTable) ;
  
  Standard_EXPORT     void SetWeight(const Standard_Real QuadraticWeight,const Standard_Real QualityWeight,const Standard_Real percentJ1,const Standard_Real percentJ2,const Standard_Real percentJ3) ;
  
  Standard_EXPORT     void GetWeight(Standard_Real& QuadraticWeight,Standard_Real& QualityWeight) const;
  
  Standard_EXPORT     void SetWeight(const TColStd_Array1OfReal& Weight) ;




  DEFINE_STANDARD_RTTI(AppDef_MyCriterionOfTheVariational)

protected:




private: 

  
  Standard_EXPORT     void BuildCache(const Standard_Integer E) ;

AppDef_MultiLine mySSP;
Handle_TColStd_HArray1OfReal myParameters;
Handle_TColStd_HArray1OfReal myCache;
Handle_FEmTool_ElementaryCriterion myCriteria[3];
Standard_Real myEstimation[3];
Standard_Real myQuadraticWeight;
Standard_Real myQualityWeight;
Standard_Real myPercent[3];
TColStd_Array1OfReal myPntWeight;
Handle_FEmTool_Curve myCurve;
Standard_Real myLength;
Standard_Integer myE;
Standard_Integer IF;
Standard_Integer IL;


};





// other Inline functions and methods (like "C++: function call" methods)


#endif
