📄 ibgcriteria.hxx
字号:
#ifndef ibgcriteria_hxx
#define ibgcriteria_hxx
#include "wzmetric.hxx"
#ifndef ibgtypes_hxx
#include "ibgtypes.hxx"
#endif
/*
class ibgCriteria; // abstract basic class
// typedef ibgCriteria* ibgcriteria;
class ibgCriteria: public wzMetric{
public:
ibgBoolean relativeToCoarseGrid;
ibgFloat globalMinimalLength;
static const ibgFloat defaultMinimalLength;
protected:
friend class wzProxy<ibgCriteria>;
ibgCriteria();
// these functions should be implemented by derived classes:
public:
virtual void maximalLengthInRegion(ibgFloat& length,
const ibgPoint& region_point)const=0;
virtual void maximalLengthNearFace(ibgFloat& orthogonal,ibgFloat& tangential,
const ibgPoint& point_on_face,
const ibgPoint& point_before_face,
const ibgPoint& point_after_face)const=0;
virtual void maximalLengthNearLine(ibgFloat& orthogonal,ibgFloat& tangential,
const ibgPoint& point_on_line)const=0;
virtual void maximalLengthNearVertex(ibgFloat& length,
const ibgPoint& vertex_point)const=0;
virtual ibgBoolean refineBetween(const ibgPoint&,const ibgPoint&)const=0;
// the remaining is for the internal usage only:
ibgFloat fx[3],dmin;
void initializeBox(ibgFloat lx=1.0, ibgFloat ly=1.0, ibgFloat lz=1.0);
void refineRegion(ibgFloat* length,
const ibgPoint& region_point)const;
void refinlFace(ibgFloat& orthogonal,ibgFloat& tangential,
const ibgPoint& point_on_face,
const ibgPoint& point_before_face,
const ibgPoint& point_after_face)const;
void refineLine(ibgFloat& orthogonal,ibgFloat& tangential,
const ibgPoint& point_on_line)const;
void refineVertex(ibgFloat& length,
const ibgPoint& vertex_point)const;
ibgBoolean refinePair(const ibgPoint&,const ibgPoint&)const;
};
*/
typedef wzProxy<wzMetric> ibgcriteria;
/*
class ibgCriteriaHomogeneous: public ibgCriteria{
virtual void maximalLengthInRegion(ibgFloat& length,
const ibgPoint& region_point)const;
virtual void maximalLengthNearFace(ibgFloat& orthogonal,ibgFloat& tangential,
const ibgPoint& point_on_face,
const ibgPoint& point_before_face,
const ibgPoint& point_after_face)const;
virtual void maximalLengthNearLine(ibgFloat& orthogonal,ibgFloat& tangential,
const ibgPoint& point_on_line)const;
virtual void maximalLengthNearVertex(ibgFloat& length,
const ibgPoint& vertex_point)const;
virtual ibgBoolean refineBetween(const ibgPoint&,const ibgPoint&)const;
public:
ibgCriteriaHomogeneous();
ibgFloat regionLength;
ibgFloat faceBetween;
ibgFloat faceOrthogonal;
ibgFloat faceTangential;
ibgFloat lineOrthogonal;
ibgFloat lineTangential;
ibgFloat vertexLength;
ibgFloat anisotropic[3];
};
// not yet implemented:
static const ibgIndex MaxFunctions = 50;
static const ibgIndex MaxValues = 50;
class ibgCriteriaFromFile: public ibgCriteriaHomogeneous{
public:
// some functions used for refinement criteria:
ibgIndex Number;
ibgIndex Type[MaxFunctions];
ibgIndex Dir[MaxFunctions];
ibgIndex Region[MaxFunctions];
ibgFloat Value[MaxFunctions];
ibgFloat Pos[MaxFunctions][6];
ibgFloat Fac[MaxFunctions][6];
ibgCriteriaFromFile(char *filename);
virtual void maximalLengthInRegion(ibgFloat& length,
const ibgPoint& region_point)const;
virtual ibgBoolean refineBetween(const ibgPoint&,const ibgPoint&)const;
};
class ibgCriteriaByFunction:
public ibgCriteriaHomogeneous
{
const cogPointToFloat& f;
public:
ibgCriteriaByFunction(const wzPointToFloat& func)
:f(func){;}
virtual void maximalLengthInRegion(ibgFloat& length,
const ibgPoint& region_point) const
{length = f(region_point);}
};
class ibgCriteriaSimpleFunction:
public ibgCriteriaHomogeneous
{
wzFloat (*f)(const wzPoint& p);
virtual void maximalLengthInRegion(ibgFloat& length,
const ibgPoint& region_point) const
{length = f(region_point);}
public:
ibgCriteriaSimpleFunction(wzFloat (*func)(const wzPoint& p))
:f(func){;}
};
*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -