1#ifndef G_COMPONENT_TCAD_2D_H
2#define G_COMPONENT_TCAD_2D_H
20 void ElectricField(
const double x,
const double y,
const double z,
double& ex,
21 double& ey,
double& ez,
double& v,
Medium*& m,
22 int& status)
override;
24 void ElectricField(
const double x,
const double y,
const double z,
double& ex,
25 double& ey,
double& ez,
Medium*& m,
int& status)
override {
30 Medium*
GetMedium(
const double x,
const double y,
const double z)
override;
33 double& xmax,
double& ymax,
double& zmax)
override;
35 double& xmax,
double& ymax,
double& zmax)
override;
37 void SetRangeZ(
const double zmin,
const double zmax);
48 bool GetElement(
const size_t i,
double& vol,
double& dmin,
double& dmax,
49 int& type, std::vector<size_t>& nodes,
int& reg)
const;
52 bool GetNode(
const size_t i,
double& x,
double& y,
double& v,
53 double& ex,
double& ey)
const;
57 bool m_hasRangeZ =
false;
60 std::unique_ptr<QuadTree> m_tree;
62 void Reset()
override {
68 size_t FindElement(
const double x,
const double y,
69 std::array<double, nMaxVertices>& w)
const;
72 bool InElement(
const double x,
const double y,
const Element& element,
73 std::array<double, nMaxVertices>& w)
const;
74 bool InRectangle(
const double x,
const double y,
const Element& element,
75 std::array<double, nMaxVertices>& w)
const;
76 bool InTriangle(
const double x,
const double y,
const Element& element,
77 std::array<double, nMaxVertices>& w)
const;
78 bool OnLine(
const double x,
const double y,
const Element& element,
79 std::array<double, nMaxVertices>& w)
const;
80 bool AtPoint(
const double x,
const double y,
const Element& element,
81 std::array<double, nMaxVertices>& w)
const;
83 bool Interpolate(
const double x,
const double y,
const double z,
84 const std::vector<double>& field,
double& f)
override;
85 bool Interpolate(
const double x,
const double y,
const double z,
86 const std::vector<std::array<double, 2> >& field,
87 double& fx,
double& fy,
double& fz)
override;
88 void FillTree()
override;
Interpolation in a two-dimensional field map created by Sentaurus Device.
~ComponentTcad2d()
Destructor.
bool GetBoundingBox(double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax) override
Get the bounding box coordinates.
ComponentTcad2d()
Constructor.
void SetRangeZ(const double zmin, const double zmax)
Set the z-extent of the bounding box (default: unlimited).
void ElectricField(const double x, const double y, const double z, double &ex, double &ey, double &ez, Medium *&m, int &status) override
bool GetElement(const size_t i, double &vol, double &dmin, double &dmax, int &type, std::vector< size_t > &nodes, int ®) const
bool GetNode(const size_t i, double &x, double &y, double &v, double &ex, double &ey) const
Medium * GetMedium(const double x, const double y, const double z) override
Get the medium at a given location (x, y, z).
void ElectricField(const double x, const double y, const double z, double &ex, double &ey, double &ez, double &v, Medium *&m, int &status) override
Calculate the drift field [V/cm] and potential [V] at (x, y, z).
bool GetElementaryCell(double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax) override
Get the coordinates of the elementary cell.
Interpolation in a field map created by Sentaurus Device.
bool m_ready
Ready for use?
Abstract base class for media.