⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ibgcriteria.hxx

📁 有限元学习研究用源代码(老外的),供科研人员参考
💻 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 + -