📄 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 + -