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

📄 cogenerator.hxx

📁 有限元学习研究用源代码(老外的),供科研人员参考
💻 HXX
字号:
#ifndef cogenerator_hxx
#define cogenerator_hxx

#include "wzpoint.hxx"
#include "wzgrid.hxx"
#include "ibgtypes.hxx"

#ifndef wzchart_hxx
#include "wzchart.hxx"
#endif
#ifndef wzmetric_hxx
#include "wzmetric.hxx"
#endif
#ifndef wztensorgrid_hxx
#include "wztensorgrid.hxx"
#endif
class CogenOctree;
class CogenRefine;
class CogenChart;
class CogenComposite;
class CogenPoints;
typedef wzProxy<CogenOctree> cogenOctree;
typedef wzProxy<CogenChart> cogenChart;
typedef wzProxy<CogenRefine> cogenRefine;
typedef wzProxy<CogenComposite> cogenComposite;
typedef wzProxy<CogenPoints> cogenPoints;

class Cogenerator
  :public virtual wzProxyTarget
{
public:
  virtual cogeometry	geometry() const {return 0;}
  virtual wzmetric	refinement() const {return 0;}
  virtual wzchart	chart() const {return 0;}
  virtual wzFloat	chi(const wzPoint&) const {return -1;};
  virtual wzpoints	generatePoints(cogeometry g,wzmetric r,wzchart c) const;
  virtual wzgrid	generateGrid(cogeometry g,wzpoints plist) const;
  virtual cogenOctree		cogenoctree() const;
  virtual cogenChart		cogenchart() const;
  virtual cogenRefine		cogenrefine() const;
  virtual cogenComposite	cogencomposite() const;
  virtual cogenPoints		cogenpoints() const;
  virtual void		endInitialization() {}
  virtual 		~Cogenerator() {}
  // calls:
  wzgrid	generateGrid(cogeometry g,wzmetric r,wzchart c) const;
  wzgrid	generateGrid(char* pointlistfile) const;
  wzgrid	generateGrid(wzpoints plist) const;
  wzgrid	generateGrid1(wzpoints plist) const;
  // operator() calls give a message, generateGrid not:
  wzgrid 	operator()(cogeometry g,wzmetric r,wzchart c) const;
  wzgrid 	operator()(cogeometry g) const
  {return operator()(g,refinement(),chart());}
  wzgrid	operator()(wzmetric ref) const
  {return operator()(geometry(),ref,chart());}
  wzgrid	operator()() const
  {return operator()(geometry(),refinement(),chart());}
};

typedef wzProxy<Cogenerator> cogenerator;

class CogenDecorator
  :public Cogenerator
{
protected:
  virtual void initialize(){}
  cogenerator original;
public:
  virtual cogenOctree		cogenoctree() const;
  virtual cogenChart		cogenchart() const;
  virtual cogenRefine		cogenrefine() const;
  virtual cogenComposite	cogencomposite() const;
  virtual cogenPoints		cogenpoints() const;
  virtual cogeometry	geometry() const {return original->geometry();}
  virtual wzmetric	refinement() const {return original->refinement();}
  virtual wzchart	chart() const {return original->chart();}
  virtual wzFloat 	chi(const wzPoint& p) const {return original->chi(p);}
  CogenDecorator(cogenerator content);//:original(content){initialize();}
  cogenerator getContent() const {return original;}
  void replaceContent(cogenerator c){original = c; initialize();}
  virtual wzpoints	generatePoints(cogeometry g,wzmetric m,wzchart c) const
  {return original->generatePoints(g,m,c);}
  virtual void	endInitialization() 
  {original->endInitialization();}
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -