3#ifndef G_COMPONENT_TCAD_2D_H
4#define G_COMPONENT_TCAD_2D_H
18 void ElectricField(
const double x,
const double y,
const double z,
double& ex,
19 double& ey,
double& ez,
double& v,
Medium*& m,
21 void ElectricField(
const double x,
const double y,
const double z,
double& ex,
22 double& ey,
double& ez,
Medium*& m,
int& status);
27 bool GetBoundingBox(
double& xmin,
double& ymin,
double& zmin,
double& xmax,
28 double& ymax,
double& zmax);
29 void SetRangeZ(
const double zmin,
const double zmax);
32 bool Initialise(
const std::string gridfilename,
33 const std::string datafilename);
39 void GetRegion(
const int i, std::string& name,
bool& active);
48 bool GetElement(
const int i,
double& vol,
double& dmin,
double& dmax,
50 bool GetElement(
const int i,
double& vol,
double& dmin,
double& dmax,
51 int& type,
int& node1,
int& node2,
int& node3,
int& node4,
54 bool GetNode(
const int i,
double& x,
double& y,
double& v,
double& ex,
58 bool GetMobility(
const double x,
const double y,
const double z,
double& emob,
63 static const int nMaxVertices = 4;
74 std::vector<region> regions;
88 std::vector<vertex> vertices;
94 int vertex[nMaxVertices];
106 std::vector<int> neighbours;
108 std::vector<element> elements;
113 bool hasElectronMobility;
114 bool hasHoleMobility;
121 double xMinBoundingBox, yMinBoundingBox, zMinBoundingBox;
122 double xMaxBoundingBox, yMaxBoundingBox, zMaxBoundingBox;
128 double w[nMaxVertices];
133 void UpdatePeriodicity();
135 bool CheckRectangle(
const double x,
const double y,
const int i);
136 bool CheckTriangle(
const double x,
const double y,
const int i);
137 bool CheckLine(
const double x,
const double y,
const int i);
139 bool LoadGrid(
const std::string gridfilename);
140 bool LoadData(
const std::string datafilename);
141 void FindNeighbours();
bool GetNode(const int i, double &x, double &y, double &v, double &ex, double &ey)
int GetNumberOfElements() const
void SetDriftRegion(const int ireg)
void UnsetDriftRegion(const int ireg)
void SetMedium(const int ireg, Medium *m)
bool GetElement(const int i, double &vol, double &dmin, double &dmax, int &type)
bool GetVoltageRange(double &vmin, double &vmax)
bool GetBoundingBox(double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax)
bool Initialise(const std::string gridfilename, const std::string datafilename)
void ElectricField(const double x, const double y, const double z, double &ex, double &ey, double &ez, double &v, Medium *&m, int &status)
int GetNumberOfRegions() const
void SetRangeZ(const double zmin, const double zmax)
Medium * GetMedium(const double &x, const double &y, const double &z)
void GetRegion(const int i, std::string &name, bool &active)
int GetNumberOfNodes() const
bool GetMobility(const double x, const double y, const double z, double &emob, double &hmob)