1#ifndef G_COMPONENT_TCAD_2D_H
2#define G_COMPONENT_TCAD_2D_H
22 void SetRangeZ(
const double zmin,
const double zmax);
31 bool GetElement(
const size_t i,
double& vol,
double& dmin,
double& dmax,
34 bool GetNode(
const size_t i,
double& x,
double& y,
double& z)
const override;
36 void ElectricField(
const double x,
const double y,
const double z,
double& ex,
37 double& ey,
double& ez,
double& v, Medium*& m,
38 int& status)
override;
40 void ElectricField(
const double x,
const double y,
const double z,
double& ex,
41 double& ey,
double& ez, Medium*& m,
int& status)
override {
45 using Component::ElectricField;
46 Medium*
GetMedium(
const double x,
const double y,
const double z)
override;
48 const double z,
const std::string& label,
49 std::vector<double>& dwp)
override;
52 double& ymax,
double& zmax)
override;
54 double& ymax,
double& zmax)
override;
70 std::array<double, nMaxVertices>& w)
const;
73 bool InElement(
const double x,
const double y,
const Element& element,
74 std::array<double, nMaxVertices>& w)
const;
75 bool InRectangle(
const double x,
const double y,
const Element& element,
76 std::array<double, nMaxVertices>& w)
const;
77 bool InTriangle(
const double x,
const double y,
const Element& element,
78 std::array<double, nMaxVertices>& w)
const;
79 bool OnLine(
const double x,
const double y,
const Element& element,
80 std::array<double, nMaxVertices>& w)
const;
81 bool AtPoint(
const double x,
const double y,
const Element& element,
82 std::array<double, nMaxVertices>& w)
const;
84 bool Interpolate(
const double x,
const double y,
const double z,
85 const std::vector<double>& field,
double& f)
override;
86 bool Interpolate(
const double x,
const double y,
const double z,
87 const std::vector<std::array<double, 2> >& field,
double& fx,
88 double& fy,
double& fz)
override;
~ComponentTcad2d()
Destructor.
bool GetBoundingBox(double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax) override
ComponentTcad2d()
Constructor.
size_t FindElement(const double x, const double y, std::array< double, nMaxVertices > &w) const
void SetRangeZ(const double zmin, const double zmax)
Set the z-extent of the bounding box (default: unlimited).
bool OnLine(const double x, const double y, const Element &element, std::array< double, nMaxVertices > &w) const
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) const
Retrieve the properties of an element.
bool InElement(const double x, const double y, const Element &element, std::array< double, nMaxVertices > &w) const
bool Interpolate(const double x, const double y, const double z, const std::vector< std::array< double, 2 > > &field, double &fx, double &fy, double &fz) override
std::unique_ptr< QuadTree > m_tree
Medium * GetMedium(const double x, const double y, const double z) override
bool Interpolate(const double x, const double y, const double z, const std::vector< double > &field, double &f) override
bool InRectangle(const double x, const double y, const Element &element, std::array< double, nMaxVertices > &w) const
bool GetNode(const size_t i, double &x, double &y, double &z) const override
Get the coordinates of a mesh node.
void ElectricField(const double x, const double y, const double z, double &ex, double &ey, double &ez, double &v, Medium *&m, int &status) override
void DelayedWeightingPotentials(const double x, const double y, const double z, const std::string &label, std::vector< double > &dwp) override
bool InTriangle(const double x, const double y, const Element &element, std::array< double, nMaxVertices > &w) const
bool GetElementaryCell(double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax) override
bool AtPoint(const double x, const double y, const Element &element, std::array< double, nMaxVertices > &w) const
ComponentTcadBase()=delete