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

📄 dielectr.h

📁 pic 模拟程序!面向对象
💻 H
字号:
#ifndef	__DIELECTR_H#define	__DIELECTR_H/*====================================================================dielectric.hThis class represents a general dielectric surface.0.99	(NTG, 12-29-93) Separated into individual module from		pic.h.0.991	(JohnV 01-11-94) Add collect().0.992 (JohnV 08-09-95) Add DielectricRegion0.993 (JohnV 09-02-95) Move secondary params into setSecondary().1.001	(JohnV 05-07-96) Add toNodes() for DielectricRegion.1.1   (JohnV 10-09-96) Add reflection = fraction of particles reflected.1.11  (JohnV 12-16-96) Add refMaxE = Energy ceiling for reflection.2.0   (JohnV 08-19-97) Extend for multiple secondary packages.2.1   (JohnV 06-15-98) Added Secondary::threshold and Eemit2.2   (JohnV 09-01-98) Moved Secondary to secondary.h.2.3   (JohnV 04-Mar-2002) Added transparency.====================================================================*/#include "boundary.h"class Secondary;class Dielectric : public Boundary{protected:   oopicList<Secondary> secondaryList;   Vector2 _delta; // offset for secondary emission   Scalar *Q;  // Charge accumulated on the dielectric   int QuseFlag;  //boolean   Scalar reflection; // fraction of particles to reflect   Scalar refMaxE; // energy ceiling for reflection   Scalar transparency; // fraction of particles which pass through   int nPoints;	// number of elements in Q array   Scalar epsilon; // the dielectric constantpublic:   Dielectric(oopicList <LineSegment> *segments, Scalar er, 	      int QuseFlag=0, Scalar reflection=0, Scalar refMaxE=1e10);   virtual ~Dielectric();   virtual void addSecondary(Secondary* secondary);   virtual Vector2 delta(Particle& p) {return _delta;};   virtual ParticleList& emit(Scalar t,Scalar dt, Species* species) {return particleList;};   virtual void setPassives();   virtual void applyFields(Scalar t,Scalar dt) {};   virtual void setQ(Scalar _QQ, int j) { Q[j]=_QQ; };   virtual Scalar* getQ() { return Q; };   virtual void putCharge_and_Current(Scalar t);   virtual void putCharge();    virtual void collect(Particle& p, Vector3& dxMKS);   void setQuseFlag(int flag) { QuseFlag = flag; };   void set_reflection(Scalar r) {reflection = r;}   void set_refMaxE(Scalar energy) {refMaxE = energy;}   void set_transparency(Scalar t) {transparency = t;}   virtual void setFields(Fields &f);   virtual int Restore_2_00(FILE* DMPFile, int j1, int k1, int j2, int k2);#ifdef HAVE_HDF5   virtual int dumpH5(dumpHDF5 &dumpObj,int number);   int restoreH5(dumpHDF5 &restoreObj,int bType,string whichBoundary,int nQuads);#endif   int Restore(FILE *DMPFile, int BoundaryType,	       Scalar A1,Scalar A2, Scalar B1, Scalar B2,int nQuads);    virtual int Dump(FILE* DMPFile);   virtual void toNodes() {Boundary::toNodes();}};//================================================================//	DielectricRegion represents an ideal volume dielectric materialclass DielectricRegion : public Dielectric{   enum EDGE {LEFT, RIGHT, BOTTOM, TOP};   virtual void setPassives();   void setEpsilon();   void addQ(EDGE edge, int j, Scalar w, Scalar q);   int getIndex(int j, int k);			// convert from j, k to index into Qpublic:   DielectricRegion(oopicList <LineSegment> *segments, Scalar er, 		    int QuseFlag=1, Scalar reflection=0, Scalar refMaxE=1e10);   virtual ~DielectricRegion();   virtual void collect(Particle& p, Vector3& dxMKS);#ifdef HAVE_HDF5   virtual int dumpH5(dumpHDF5 &dumpObj,int number);   int restoreH5(dumpHDF5 &restoreObj,int bType,string whichBoundary,int nQuads);#endif   virtual int Dump(FILE* DMPFile);   virtual void putCharge_and_Current(Scalar t);   virtual void putCharge();    int Restore(FILE *DMPFile, int BoundaryType,	       Scalar A1,Scalar A2, Scalar B1, Scalar B2,int nQuads);   virtual int Restore_2_00(FILE* DMPFile, int j1, int k1, int j2, int k2);   virtual void setBoundaryMask(Grid &grid);   virtual void setFields(Fields &f) {Boundary::setFields(f); setEpsilon();};   virtual void toNodes();};class DielectricTriangle : public Dielectric{  virtual void setPassives();  void setEpsilon(); public:  DielectricTriangle(oopicList <LineSegment> *segments, Scalar _er,		     int _QuseFlag=0);  virtual void setFields(Fields &f) {Boundary::setFields(f); setEpsilon();};  virtual void collect(Particle &p, Vector3& dxMKS);  virtual void putCharge_and_Current(Scalar t) {};  virtual void setBoundaryMask(Grid &grid);  virtual int Restore_2_00(FILE* DMPFile, int j1, int k1, int j2, int k2){return 0;};  virtual int Restore(FILE *DMPFile, int BoundaryType,                 Scalar A1,Scalar A2, Scalar B1, Scalar B2,int nQuads) { #ifndef _MSC_VER     cout << "Dump/Restore for dielectric triangles not implemented."; #endif     return 0;  };   virtual int Dump(FILE* DMPFile);};#endif	//	ifndef __DIELECTR_H

⌨️ 快捷键说明

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