Garfield++ 4.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
|
Base class for components based on finite-element field maps. More...
#include <ComponentFieldMap.hh>
Classes | |
struct | Element |
struct | Material |
struct | Node |
Public Member Functions | |
ComponentFieldMap ()=delete | |
Default constructor. | |
ComponentFieldMap (const std::string &name) | |
Constructor. | |
virtual | ~ComponentFieldMap () |
Destructor. | |
virtual void | SetRange () |
Calculate x, y, z, V and angular ranges. | |
void | PrintRange () |
Show x, y, z, V and angular ranges. | |
bool | IsInBoundingBox (const double x, const double y, const double z) const |
bool | GetBoundingBox (double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax) override |
Get the bounding box coordinates. | |
bool | GetElementaryCell (double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax) override |
Get the coordinates of the elementary cell. | |
bool | GetVoltageRange (double &vmin, double &vmax) override |
Calculate the voltage range [V]. | |
void | PrintMaterials () |
List all currently defined materials. | |
void | DriftMedium (const unsigned int imat) |
Flag a field map material as a drift medium. | |
void | NotDriftMedium (const unsigned int imat) |
Flag a field map materials as a non-drift medium. | |
size_t | GetNumberOfMaterials () const |
Return the number of materials in the field map. | |
double | GetPermittivity (const unsigned int imat) const |
Return the permittivity of a field map material. | |
double | GetConductivity (const unsigned int imat) const |
Return the conductivity of a field map material. | |
void | SetMedium (const unsigned int imat, Medium *medium) |
Associate a field map material with a Medium class. | |
Medium * | GetMedium (const unsigned int i) const |
Return the Medium associated to a field map material. | |
virtual size_t | GetNumberOfElements () const |
Return the number of mesh elements. | |
bool | GetElement (const size_t i, double &vol, double &dmin, double &dmax) |
Return the volume and aspect ratio of a mesh element. | |
virtual bool | GetElement (const size_t i, size_t &mat, bool &drift, std::vector< size_t > &nodes) const |
Return the material and node indices of a mesh element. | |
virtual size_t | GetNumberOfNodes () const |
virtual bool | GetNode (const size_t i, double &x, double &y, double &z) const |
void | EnableCheckMapIndices (const bool on=true) |
void | EnableDeleteBackgroundElements (const bool on=true) |
Option to eliminate mesh elements in conductors (default: on). | |
void | EnableTetrahedralTreeForElementSearch (const bool on=true) |
void | EnableConvergenceWarnings (const bool on=true) |
virtual Medium * | GetMedium (const double x, const double y, const double z) |
Get the medium at a given location (x, y, z). | |
Public Member Functions inherited from Garfield::Component | |
Component ()=delete | |
Default constructor. | |
Component (const std::string &name) | |
Constructor. | |
virtual | ~Component () |
Destructor. | |
virtual void | SetGeometry (Geometry *geo) |
Define the geometry. | |
virtual void | Clear () |
Reset. | |
virtual Medium * | GetMedium (const double x, const double y, const double z) |
Get the medium at a given location (x, y, z). | |
virtual void | ElectricField (const double x, const double y, const double z, double &ex, double &ey, double &ez, Medium *&m, int &status)=0 |
virtual void | ElectricField (const double x, const double y, const double z, double &ex, double &ey, double &ez, double &v, Medium *&m, int &status)=0 |
Calculate the drift field [V/cm] and potential [V] at (x, y, z). | |
virtual bool | GetVoltageRange (double &vmin, double &vmax)=0 |
Calculate the voltage range [V]. | |
virtual void | WeightingField (const double x, const double y, const double z, double &wx, double &wy, double &wz, const std::string &label) |
virtual double | WeightingPotential (const double x, const double y, const double z, const std::string &label) |
virtual void | DelayedWeightingField (const double x, const double y, const double z, const double t, double &wx, double &wy, double &wz, const std::string &label) |
virtual double | DelayedWeightingPotential (const double x, const double y, const double z, const double t, const std::string &label) |
virtual void | MagneticField (const double x, const double y, const double z, double &bx, double &by, double &bz, int &status) |
void | SetMagneticField (const double bx, const double by, const double bz) |
Set a constant magnetic field. | |
virtual bool | IsReady () |
Ready for use? | |
virtual bool | GetBoundingBox (double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax) |
Get the bounding box coordinates. | |
virtual bool | GetElementaryCell (double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax) |
Get the coordinates of the elementary cell. | |
double | IntegrateFluxCircle (const double xc, const double yc, const double r, const unsigned int nI=50) |
double | IntegrateFluxSphere (const double xc, const double yc, const double zc, const double r, const unsigned int nI=20) |
double | IntegrateFluxParallelogram (const double x0, const double y0, const double z0, const double dx1, const double dy1, const double dz1, const double dx2, const double dy2, const double dz2, const unsigned int nU=20, const unsigned int nV=20) |
double | IntegrateWeightingFluxParallelogram (const std::string &label, const double x0, const double y0, const double z0, const double dx1, const double dy1, const double dz1, const double dx2, const double dy2, const double dz2, const unsigned int nU=20, const unsigned int nV=20) |
double | IntegrateFluxLine (const double x0, const double y0, const double z0, const double x1, const double y1, const double z1, const double xp, const double yp, const double zp, const unsigned int nI, const int isign=0) |
virtual bool | IsWireCrossed (const double x0, const double y0, const double z0, const double x1, const double y1, const double z1, double &xc, double &yc, double &zc, const bool centre, double &rc) |
virtual bool | IsInTrapRadius (const double q0, const double x0, const double y0, const double z0, double &xw, double &yw, double &rw) |
void | EnablePeriodicityX (const bool on=true) |
Enable simple periodicity in the direction. | |
void | EnablePeriodicityY (const bool on=true) |
Enable simple periodicity in the direction. | |
void | EnablePeriodicityZ (const bool on=true) |
Enable simple periodicity in the direction. | |
void | IsPeriodic (bool &perx, bool &pery, bool &perz) |
Return periodicity flags. | |
void | EnableMirrorPeriodicityX (const bool on=true) |
Enable mirror periodicity in the direction. | |
void | EnableMirrorPeriodicityY (const bool on=true) |
Enable mirror periodicity in the direction. | |
void | EnableMirrorPeriodicityZ (const bool on=true) |
Enable mirror periodicity in the direction. | |
void | IsMirrorPeriodic (bool &perx, bool &pery, bool &perz) |
Return mirror periodicity flags. | |
void | EnableAxialPeriodicityX (const bool on=true) |
Enable axial periodicity in the direction. | |
void | EnableAxialPeriodicityY (const bool on=true) |
Enable axial periodicity in the direction. | |
void | EnableAxialPeriodicityZ (const bool on=true) |
Enable axial periodicity in the direction. | |
void | IsAxiallyPeriodic (bool &perx, bool &pery, bool &perz) |
Return axial periodicity flags. | |
void | EnableRotationSymmetryX (const bool on=true) |
Enable rotation symmetry around the axis. | |
void | EnableRotationSymmetryY (const bool on=true) |
Enable rotation symmetry around the axis. | |
void | EnableRotationSymmetryZ (const bool on=true) |
Enable rotation symmetry around the axis. | |
void | IsRotationSymmetric (bool &rotx, bool &roty, bool &rotz) |
Return rotation symmetry flags. | |
void | EnableDebugging () |
Switch on debugging messages. | |
void | DisableDebugging () |
Switch off debugging messages. | |
virtual bool | HasAttachmentMap () const |
Does the component have attachment maps? | |
virtual bool | HasVelocityMap () const |
Does the component have velocity maps? | |
virtual bool | ElectronAttachment (const double, const double, const double, double &eta) |
Get the electron attachment coefficient. | |
virtual bool | HoleAttachment (const double, const double, const double, double &eta) |
Get the hole attachment coefficient. | |
virtual bool | ElectronVelocity (const double, const double, const double, double &vx, double &vy, double &vz) |
Get the electron drift velocity. | |
virtual bool | HoleVelocity (const double, const double, const double, double &vx, double &vy, double &vz) |
Get the hole drift velocity. | |
virtual bool | GetElectronLifetime (const double, const double, const double, double &etau) |
virtual bool | GetHoleLifetime (const double, const double, const double, double &htau) |
Protected Member Functions | |
void | Reset () override |
Reset the component. | |
void | Prepare () |
void | UpdatePeriodicity2d () |
void | UpdatePeriodicityCommon () |
bool | SetDefaultDriftMedium () |
Find lowest epsilon, check for eps = 0, set default drift media flags. | |
int | FindElement5 (const double x, const double y, const double z, double &t1, double &t2, double &t3, double &t4, double jac[4][4], double &det) |
Find the element for a point in curved quadratic quadrilaterals. | |
int | FindElement13 (const double x, const double y, const double z, double &t1, double &t2, double &t3, double &t4, double jac[4][4], double &det) |
Find the element for a point in curved quadratic tetrahedra. | |
int | FindElementCube (const double x, const double y, const double z, double &t1, double &t2, double &t3, TMatrixD *&jac, std::vector< TMatrixD * > &dN) |
Find the element for a point in a cube. | |
void | MapCoordinates (double &xpos, double &ypos, double &zpos, bool &xmirrored, bool &ymirrored, bool &zmirrored, double &rcoordinate, double &rotation) const |
Move (xpos, ypos, zpos) to field map coordinates. | |
void | UnmapFields (double &ex, double &ey, double &ez, double &xpos, double &ypos, double &zpos, bool &xmirrored, bool &ymirrored, bool &zmirrored, double &rcoordinate, double &rotation) const |
Move (ex, ey, ez) to global coordinates. | |
int | ReadInteger (char *token, int def, bool &error) |
double | ReadDouble (char *token, double def, bool &error) |
virtual double | GetElementVolume (const unsigned int i)=0 |
virtual void | GetAspectRatio (const unsigned int i, double &dmin, double &dmax)=0 |
size_t | GetWeightingFieldIndex (const std::string &label) const |
size_t | GetOrCreateWeightingFieldIndex (const std::string &label) |
void | PrintWarning (const std::string &header) |
void | PrintNotReady (const std::string &header) const |
void | PrintCouldNotOpen (const std::string &header, const std::string &filename) const |
void | PrintElement (const std::string &header, const double x, const double y, const double z, const double t1, const double t2, const double t3, const double t4, const Element &element, const unsigned int n, const int iw=-1) const |
Protected Member Functions inherited from Garfield::Component | |
virtual void | Reset ()=0 |
Reset the component. | |
virtual void | UpdatePeriodicity ()=0 |
Verify periodicities. | |
Static Protected Member Functions | |
static double | ScalingFactor (std::string unit) |
Protected Attributes | |
bool | m_is3d = true |
std::vector< Element > | m_elements |
std::vector< Node > | m_nodes |
std::vector< Material > | m_materials |
std::vector< std::string > | m_wfields |
std::vector< bool > | m_wfieldsOk |
std::vector< bool > | m_dwfieldsOk |
std::vector< double > | m_wdtimes |
bool | m_hasBoundingBox = false |
std::array< double, 3 > | m_minBoundingBox |
std::array< double, 3 > | m_maxBoundingBox |
std::array< double, 3 > | m_mapmin |
std::array< double, 3 > | m_mapmax |
std::array< double, 3 > | m_mapamin |
std::array< double, 3 > | m_mapamax |
std::array< double, 3 > | m_mapna |
std::array< double, 3 > | m_cells |
double | m_mapvmin = 0. |
double | m_mapvmax = 0. |
std::array< bool, 3 > | m_setang |
bool | m_deleteBackground = true |
bool | m_warning = false |
unsigned int | m_nWarnings = 0 |
bool | m_printConvergenceWarnings = true |
Protected Attributes inherited from Garfield::Component | |
std::string | m_className = "Component" |
Class name. | |
Geometry * | m_geometry = nullptr |
Pointer to the geometry. | |
std::array< double, 3 > | m_b0 = {{0., 0., 0.}} |
Constant magnetic field. | |
bool | m_ready = false |
Ready for use? | |
bool | m_debug = false |
Switch on/off debugging messages. | |
std::array< bool, 3 > | m_periodic = {{false, false, false}} |
Simple periodicity in x, y, z. | |
std::array< bool, 3 > | m_mirrorPeriodic = {{false, false, false}} |
Mirror periodicity in x, y, z. | |
std::array< bool, 3 > | m_axiallyPeriodic = {{false, false, false}} |
Axial periodicity in x, y, z. | |
std::array< bool, 3 > | m_rotationSymmetric = {{false, false, false}} |
Rotation symmetry around x-axis, y-axis, z-axis. | |
Friends | |
class | ViewFEMesh |
Base class for components based on finite-element field maps.
Definition at line 16 of file ComponentFieldMap.hh.
|
delete |
Default constructor.
Garfield::ComponentFieldMap::ComponentFieldMap | ( | const std::string & | name | ) |
|
virtual |
void Garfield::ComponentFieldMap::DriftMedium | ( | const unsigned int | imat | ) |
Flag a field map material as a drift medium.
Definition at line 50 of file ComponentFieldMap.cc.
|
inline |
Definition at line 76 of file ComponentFieldMap.hh.
|
inline |
Enable or disable warnings that the calculation of the local coordinates did not achieve the requested precision.
Definition at line 93 of file ComponentFieldMap.hh.
|
inline |
Option to eliminate mesh elements in conductors (default: on).
Definition at line 81 of file ComponentFieldMap.hh.
|
inline |
Enable or disable the usage of the tetrahedral tree for searching the element in the mesh.
Definition at line 87 of file ComponentFieldMap.hh.
|
protected |
Find the element for a point in curved quadratic tetrahedra.
Definition at line 337 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentComsol::DelayedWeightingPotential(), Garfield::ComponentAnsys123::ElectricField(), Garfield::ComponentComsol::ElectricField(), Garfield::ComponentElmer::ElectricField(), Garfield::ComponentAnsys123::GetMedium(), Garfield::ComponentComsol::GetMedium(), Garfield::ComponentElmer::GetMedium(), Garfield::ComponentAnsys123::WeightingField(), Garfield::ComponentComsol::WeightingField(), Garfield::ComponentElmer::WeightingField(), Garfield::ComponentAnsys123::WeightingPotential(), Garfield::ComponentComsol::WeightingPotential(), and Garfield::ComponentElmer::WeightingPotential().
|
protected |
Find the element for a point in curved quadratic quadrilaterals.
Definition at line 190 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentAnsys121::ElectricField(), Garfield::ComponentElmer2D::ElectricField(), Garfield::ComponentAnsys121::GetMedium(), Garfield::ComponentElmer2D::GetMedium(), Garfield::ComponentAnsys121::WeightingField(), Garfield::ComponentElmer2D::WeightingField(), Garfield::ComponentAnsys121::WeightingPotential(), and Garfield::ComponentElmer2D::WeightingPotential().
|
protected |
Find the element for a point in a cube.
Definition at line 448 of file ComponentFieldMap.cc.
|
protectedpure virtual |
Implemented in Garfield::ComponentAnsys121, Garfield::ComponentAnsys123, Garfield::ComponentComsol, Garfield::ComponentCST, Garfield::ComponentElmer, and Garfield::ComponentElmer2D.
Referenced by GetElement().
|
overridevirtual |
Get the bounding box coordinates.
Reimplemented from Garfield::Component.
Definition at line 1993 of file ComponentFieldMap.cc.
double Garfield::ComponentFieldMap::GetConductivity | ( | const unsigned int | imat | ) | const |
Return the conductivity of a field map material.
Definition at line 87 of file ComponentFieldMap.cc.
bool Garfield::ComponentFieldMap::GetElement | ( | const size_t | i, |
double & | vol, | ||
double & | dmin, | ||
double & | dmax | ||
) |
Return the volume and aspect ratio of a mesh element.
Definition at line 124 of file ComponentFieldMap.cc.
|
virtual |
Return the material and node indices of a mesh element.
Reimplemented in Garfield::ComponentCST.
Definition at line 136 of file ComponentFieldMap.cc.
|
overridevirtual |
Get the coordinates of the elementary cell.
Reimplemented from Garfield::Component.
Definition at line 2007 of file ComponentFieldMap.cc.
|
protectedpure virtual |
Implemented in Garfield::ComponentAnsys121, Garfield::ComponentAnsys123, Garfield::ComponentComsol, Garfield::ComponentCST, Garfield::ComponentElmer, and Garfield::ComponentElmer2D.
Referenced by GetElement().
|
virtual |
Get the medium at a given location (x, y, z).
Reimplemented from Garfield::Component.
Definition at line 28 of file Component.cc.
Medium * Garfield::ComponentFieldMap::GetMedium | ( | const unsigned int | i | ) | const |
Return the Medium associated to a field map material.
Definition at line 115 of file ComponentFieldMap.cc.
|
virtual |
Reimplemented in Garfield::ComponentCST.
Definition at line 150 of file ComponentFieldMap.cc.
|
inlinevirtual |
Return the number of mesh elements.
Reimplemented in Garfield::ComponentCST.
Definition at line 66 of file ComponentFieldMap.hh.
|
inline |
Return the number of materials in the field map.
Definition at line 54 of file ComponentFieldMap.hh.
|
inlinevirtual |
|
protected |
Definition at line 2357 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentComsol::SetDelayedWeightingPotential(), Garfield::ComponentComsol::SetWeightingField(), Garfield::ComponentAnsys121::SetWeightingField(), Garfield::ComponentAnsys123::SetWeightingField(), Garfield::ComponentElmer::SetWeightingField(), and Garfield::ComponentElmer2D::SetWeightingField().
double Garfield::ComponentFieldMap::GetPermittivity | ( | const unsigned int | imat | ) | const |
Return the permittivity of a field map material.
Definition at line 78 of file ComponentFieldMap.cc.
|
inlineoverridevirtual |
Calculate the voltage range [V].
Implements Garfield::Component.
Definition at line 41 of file ComponentFieldMap.hh.
Referenced by Garfield::ViewFEMesh::Plot().
|
protected |
Definition at line 2348 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentComsol::DelayedWeightingPotential(), Garfield::ComponentAnsys121::WeightingField(), Garfield::ComponentAnsys123::WeightingField(), Garfield::ComponentComsol::WeightingField(), Garfield::ComponentElmer::WeightingField(), Garfield::ComponentElmer2D::WeightingField(), Garfield::ComponentAnsys121::WeightingPotential(), Garfield::ComponentAnsys123::WeightingPotential(), Garfield::ComponentComsol::WeightingPotential(), Garfield::ComponentElmer::WeightingPotential(), and Garfield::ComponentElmer2D::WeightingPotential().
|
inline |
Definition at line 30 of file ComponentFieldMap.hh.
|
protected |
Move (xpos, ypos, zpos) to field map coordinates.
Definition at line 2021 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentCST::Coordinate2Index(), Garfield::ComponentComsol::DelayedWeightingPotential(), Garfield::ComponentAnsys121::ElectricField(), Garfield::ComponentAnsys123::ElectricField(), Garfield::ComponentComsol::ElectricField(), Garfield::ComponentElmer::ElectricField(), Garfield::ComponentElmer2D::ElectricField(), Garfield::ComponentAnsys121::GetMedium(), Garfield::ComponentAnsys123::GetMedium(), Garfield::ComponentComsol::GetMedium(), Garfield::ComponentElmer::GetMedium(), Garfield::ComponentElmer2D::GetMedium(), Garfield::ComponentAnsys121::WeightingField(), Garfield::ComponentAnsys123::WeightingField(), Garfield::ComponentComsol::WeightingField(), Garfield::ComponentElmer::WeightingField(), Garfield::ComponentElmer2D::WeightingField(), Garfield::ComponentAnsys121::WeightingPotential(), Garfield::ComponentAnsys123::WeightingPotential(), Garfield::ComponentComsol::WeightingPotential(), Garfield::ComponentElmer::WeightingPotential(), and Garfield::ComponentElmer2D::WeightingPotential().
void Garfield::ComponentFieldMap::NotDriftMedium | ( | const unsigned int | imat | ) |
Flag a field map materials as a non-drift medium.
Definition at line 64 of file ComponentFieldMap.cc.
|
protected |
Definition at line 1713 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentElmer::Initialise(), Garfield::ComponentElmer2D::Initialise(), Garfield::ComponentComsol::Initialise(), Garfield::ComponentCST::Initialise(), Garfield::ComponentAnsys121::Initialise(), and Garfield::ComponentAnsys123::Initialise().
|
protected |
Definition at line 2388 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentElmer::Initialise(), Garfield::ComponentElmer2D::Initialise(), Garfield::ComponentComsol::Initialise(), Garfield::ComponentCST::Initialise(), Garfield::ComponentAnsys121::Initialise(), Garfield::ComponentAnsys123::Initialise(), Garfield::ComponentComsol::SetWeightingField(), Garfield::ComponentAnsys121::SetWeightingField(), Garfield::ComponentAnsys123::SetWeightingField(), Garfield::ComponentElmer::SetWeightingField(), Garfield::ComponentElmer2D::SetWeightingField(), and Garfield::ComponentCST::SetWeightingField().
|
protected |
Definition at line 2395 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentComsol::DelayedWeightingPotential(), Garfield::ComponentAnsys121::ElectricField(), Garfield::ComponentAnsys123::ElectricField(), Garfield::ComponentComsol::ElectricField(), Garfield::ComponentElmer::ElectricField(), Garfield::ComponentElmer2D::ElectricField(), FindElement13(), FindElement5(), FindElementCube(), Garfield::ComponentAnsys121::GetMedium(), Garfield::ComponentAnsys123::GetMedium(), Garfield::ComponentComsol::GetMedium(), Garfield::ComponentElmer::GetMedium(), Garfield::ComponentElmer2D::GetMedium(), Garfield::ComponentAnsys121::WeightingField(), Garfield::ComponentAnsys123::WeightingField(), Garfield::ComponentComsol::WeightingField(), Garfield::ComponentElmer::WeightingField(), Garfield::ComponentElmer2D::WeightingField(), Garfield::ComponentAnsys121::WeightingPotential(), Garfield::ComponentAnsys123::WeightingPotential(), Garfield::ComponentComsol::WeightingPotential(), Garfield::ComponentElmer::WeightingPotential(), and Garfield::ComponentElmer2D::WeightingPotential().
void Garfield::ComponentFieldMap::PrintMaterials | ( | ) |
List all currently defined materials.
Definition at line 20 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentCST::Initialise(), Garfield::ComponentAnsys121::Initialise(), and Garfield::ComponentAnsys123::Initialise().
|
protected |
Definition at line 2383 of file ComponentFieldMap.cc.
Referenced by DriftMedium(), Garfield::ComponentAnsys121::ElectricField(), Garfield::ComponentAnsys123::ElectricField(), Garfield::ComponentComsol::ElectricField(), Garfield::ComponentElmer::ElectricField(), Garfield::ComponentElmer2D::ElectricField(), Garfield::ComponentAnsys121::GetMedium(), Garfield::ComponentComsol::GetMedium(), Garfield::ComponentElmer::GetMedium(), Garfield::ComponentElmer2D::GetMedium(), NotDriftMedium(), PrintMaterials(), Garfield::ComponentAnsys121::SetWeightingField(), Garfield::ComponentAnsys123::SetWeightingField(), Garfield::ComponentElmer::SetWeightingField(), Garfield::ComponentElmer2D::SetWeightingField(), UpdatePeriodicity2d(), and UpdatePeriodicityCommon().
void Garfield::ComponentFieldMap::PrintRange | ( | ) |
Show x, y, z, V and angular ranges.
Definition at line 1964 of file ComponentFieldMap.cc.
Referenced by SetRange(), and UpdatePeriodicityCommon().
|
protected |
Definition at line 2375 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentComsol::DelayedWeightingPotential(), Garfield::ComponentAnsys121::ElectricField(), Garfield::ComponentAnsys123::ElectricField(), Garfield::ComponentComsol::ElectricField(), Garfield::ComponentElmer::ElectricField(), Garfield::ComponentElmer2D::ElectricField(), Garfield::ComponentAnsys121::GetMedium(), Garfield::ComponentAnsys123::GetMedium(), Garfield::ComponentComsol::GetMedium(), Garfield::ComponentElmer::GetMedium(), Garfield::ComponentElmer2D::GetMedium(), Garfield::ComponentAnsys121::WeightingField(), Garfield::ComponentAnsys123::WeightingField(), Garfield::ComponentComsol::WeightingField(), Garfield::ComponentCST::WeightingField(), Garfield::ComponentElmer::WeightingField(), Garfield::ComponentElmer2D::WeightingField(), Garfield::ComponentAnsys121::WeightingPotential(), Garfield::ComponentAnsys123::WeightingPotential(), Garfield::ComponentComsol::WeightingPotential(), Garfield::ComponentElmer::WeightingPotential(), and Garfield::ComponentElmer2D::WeightingPotential().
|
protected |
Definition at line 2236 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentElmer::Initialise(), Garfield::ComponentElmer2D::Initialise(), Garfield::ComponentCST::Initialise(), Garfield::ComponentAnsys121::Initialise(), Garfield::ComponentAnsys123::Initialise(), Garfield::ComponentAnsys121::SetWeightingField(), Garfield::ComponentAnsys123::SetWeightingField(), Garfield::ComponentElmer::SetWeightingField(), Garfield::ComponentElmer2D::SetWeightingField(), and Garfield::ComponentCST::SetWeightingField().
|
protected |
Definition at line 2227 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentElmer::Initialise(), Garfield::ComponentElmer2D::Initialise(), Garfield::ComponentCST::Initialise(), Garfield::ComponentAnsys121::Initialise(), Garfield::ComponentAnsys123::Initialise(), Garfield::ComponentAnsys121::SetWeightingField(), Garfield::ComponentAnsys123::SetWeightingField(), and Garfield::ComponentCST::SetWeightingField().
|
overrideprotectedvirtual |
Reset the component.
Implements Garfield::Component.
Definition at line 1695 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentElmer::Initialise(), Garfield::ComponentElmer2D::Initialise(), Garfield::ComponentComsol::Initialise(), Garfield::ComponentCST::Initialise(), Garfield::ComponentAnsys121::Initialise(), and Garfield::ComponentAnsys123::Initialise().
|
staticprotected |
Definition at line 2213 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentElmer::Initialise(), Garfield::ComponentElmer2D::Initialise(), Garfield::ComponentComsol::Initialise(), Garfield::ComponentCST::Initialise(), Garfield::ComponentAnsys121::Initialise(), and Garfield::ComponentAnsys123::Initialise().
|
protected |
Find lowest epsilon, check for eps = 0, set default drift media flags.
Definition at line 162 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentElmer::Initialise(), Garfield::ComponentElmer2D::Initialise(), Garfield::ComponentComsol::Initialise(), Garfield::ComponentCST::Initialise(), Garfield::ComponentAnsys121::Initialise(), and Garfield::ComponentAnsys123::Initialise().
void Garfield::ComponentFieldMap::SetMedium | ( | const unsigned int | imat, |
Medium * | medium | ||
) |
Associate a field map material with a Medium class.
Definition at line 96 of file ComponentFieldMap.cc.
Referenced by main().
|
virtual |
Calculate x, y, z, V and angular ranges.
Reimplemented in Garfield::ComponentCST.
Definition at line 1873 of file ComponentFieldMap.cc.
Referenced by Prepare().
|
protected |
Move (ex, ey, ez) to global coordinates.
Definition at line 2138 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentAnsys121::ElectricField(), Garfield::ComponentAnsys123::ElectricField(), Garfield::ComponentComsol::ElectricField(), Garfield::ComponentElmer::ElectricField(), Garfield::ComponentElmer2D::ElectricField(), Garfield::ComponentAnsys121::WeightingField(), Garfield::ComponentAnsys123::WeightingField(), Garfield::ComponentComsol::WeightingField(), Garfield::ComponentElmer::WeightingField(), and Garfield::ComponentElmer2D::WeightingField().
|
protected |
Definition at line 1845 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentAnsys121::UpdatePeriodicity(), Garfield::ComponentCST::UpdatePeriodicity(), and Garfield::ComponentElmer2D::UpdatePeriodicity().
|
protected |
Definition at line 1726 of file ComponentFieldMap.cc.
Referenced by Garfield::ComponentAnsys121::UpdatePeriodicity(), Garfield::ComponentAnsys123::UpdatePeriodicity(), Garfield::ComponentComsol::UpdatePeriodicity(), Garfield::ComponentCST::UpdatePeriodicity(), Garfield::ComponentElmer::UpdatePeriodicity(), and Garfield::ComponentElmer2D::UpdatePeriodicity().
|
friend |
Definition at line 97 of file ComponentFieldMap.hh.
|
protected |
Definition at line 157 of file ComponentFieldMap.hh.
Referenced by PrintRange(), and UpdatePeriodicityCommon().
|
protected |
Definition at line 165 of file ComponentFieldMap.hh.
Referenced by Garfield::ComponentCST::ComponentCST(), EnableDeleteBackgroundElements(), Garfield::ComponentAnsys121::Initialise(), and Garfield::ComponentAnsys123::Initialise().
|
protected |
Definition at line 142 of file ComponentFieldMap.hh.
|
protected |
Definition at line 113 of file ComponentFieldMap.hh.
Referenced by Garfield::ComponentComsol::DelayedWeightingPotential(), Garfield::ComponentAnsys121::ElectricField(), Garfield::ComponentAnsys123::ElectricField(), Garfield::ComponentComsol::ElectricField(), Garfield::ComponentElmer::ElectricField(), Garfield::ComponentElmer2D::ElectricField(), FindElement13(), FindElement5(), FindElementCube(), Garfield::ComponentAnsys121::GetAspectRatio(), Garfield::ComponentAnsys123::GetAspectRatio(), Garfield::ComponentComsol::GetAspectRatio(), Garfield::ComponentElmer::GetAspectRatio(), Garfield::ComponentElmer2D::GetAspectRatio(), GetElement(), Garfield::ComponentAnsys121::GetElementVolume(), Garfield::ComponentAnsys123::GetElementVolume(), Garfield::ComponentComsol::GetElementVolume(), Garfield::ComponentElmer::GetElementVolume(), Garfield::ComponentElmer2D::GetElementVolume(), Garfield::ComponentAnsys121::GetMedium(), Garfield::ComponentAnsys123::GetMedium(), Garfield::ComponentComsol::GetMedium(), Garfield::ComponentElmer::GetMedium(), Garfield::ComponentElmer2D::GetMedium(), GetNumberOfElements(), Garfield::ComponentElmer::Initialise(), Garfield::ComponentElmer2D::Initialise(), Garfield::ComponentComsol::Initialise(), Garfield::ComponentAnsys121::Initialise(), Garfield::ComponentAnsys123::Initialise(), Reset(), Garfield::ComponentAnsys121::WeightingField(), Garfield::ComponentAnsys123::WeightingField(), Garfield::ComponentComsol::WeightingField(), Garfield::ComponentElmer::WeightingField(), Garfield::ComponentElmer2D::WeightingField(), Garfield::ComponentAnsys121::WeightingPotential(), Garfield::ComponentAnsys123::WeightingPotential(), Garfield::ComponentComsol::WeightingPotential(), Garfield::ComponentElmer::WeightingPotential(), and Garfield::ComponentElmer2D::WeightingPotential().
|
protected |
Definition at line 147 of file ComponentFieldMap.hh.
Referenced by Reset(), SetRange(), and Garfield::ComponentCST::SetRange().
|
protected |
Definition at line 100 of file ComponentFieldMap.hh.
Referenced by Garfield::ComponentAnsys121::ComponentAnsys121(), Garfield::ComponentElmer2D::ComponentElmer2D(), SetRange(), and Garfield::ComponentCST::SetRange().
|
protected |
Definition at line 155 of file ComponentFieldMap.hh.
Referenced by MapCoordinates(), SetRange(), and UpdatePeriodicityCommon().
|
protected |
Definition at line 154 of file ComponentFieldMap.hh.
Referenced by MapCoordinates(), SetRange(), and UpdatePeriodicityCommon().
|
protected |
Definition at line 153 of file ComponentFieldMap.hh.
Referenced by GetElementaryCell(), MapCoordinates(), PrintRange(), SetRange(), Garfield::ComponentCST::SetRange(), Garfield::ComponentAnsys121::SetRangeZ(), Garfield::ComponentElmer2D::SetRangeZ(), and UpdatePeriodicityCommon().
|
protected |
Definition at line 152 of file ComponentFieldMap.hh.
Referenced by GetElementaryCell(), MapCoordinates(), PrintRange(), SetRange(), Garfield::ComponentCST::SetRange(), Garfield::ComponentAnsys121::SetRangeZ(), Garfield::ComponentElmer2D::SetRangeZ(), and UpdatePeriodicityCommon().
|
protected |
Definition at line 156 of file ComponentFieldMap.hh.
Referenced by PrintRange(), and UpdatePeriodicityCommon().
|
protected |
Definition at line 160 of file ComponentFieldMap.hh.
Referenced by GetVoltageRange(), PrintRange(), SetRange(), and Garfield::ComponentCST::SetRange().
|
protected |
Definition at line 159 of file ComponentFieldMap.hh.
Referenced by GetVoltageRange(), PrintRange(), SetRange(), and Garfield::ComponentCST::SetRange().
|
protected |
Definition at line 138 of file ComponentFieldMap.hh.
Referenced by DriftMedium(), Garfield::ComponentAnsys121::ElectricField(), Garfield::ComponentAnsys123::ElectricField(), Garfield::ComponentComsol::ElectricField(), Garfield::ComponentElmer::ElectricField(), Garfield::ComponentElmer2D::ElectricField(), GetConductivity(), GetElement(), Garfield::ComponentCST::GetElement(), Garfield::ComponentAnsys121::GetMedium(), Garfield::ComponentAnsys123::GetMedium(), Garfield::ComponentComsol::GetMedium(), Garfield::ComponentCST::GetMedium(), Garfield::ComponentElmer::GetMedium(), Garfield::ComponentElmer2D::GetMedium(), GetMedium(), GetNumberOfMaterials(), GetPermittivity(), Garfield::ComponentElmer::Initialise(), Garfield::ComponentElmer2D::Initialise(), Garfield::ComponentComsol::Initialise(), Garfield::ComponentCST::Initialise(), Garfield::ComponentAnsys121::Initialise(), Garfield::ComponentAnsys123::Initialise(), NotDriftMedium(), PrintMaterials(), Reset(), SetDefaultDriftMedium(), SetMedium(), and Garfield::ComponentCST::WeightingField().
|
protected |
Definition at line 149 of file ComponentFieldMap.hh.
Referenced by Garfield::ComponentAnsys121::ComponentAnsys121(), Garfield::ComponentCST::ComponentCST(), Garfield::ComponentElmer2D::ComponentElmer2D(), Garfield::ComponentAnsys121::ElectricField(), Garfield::ComponentElmer2D::ElectricField(), GetBoundingBox(), Garfield::ComponentAnsys121::GetMedium(), Garfield::ComponentElmer2D::GetMedium(), IsInBoundingBox(), SetRange(), Garfield::ComponentCST::SetRange(), Garfield::ComponentAnsys121::SetRangeZ(), Garfield::ComponentCST::SetRangeZ(), Garfield::ComponentElmer2D::SetRangeZ(), UpdatePeriodicityCommon(), Garfield::ComponentElmer2D::WeightingField(), and Garfield::ComponentElmer2D::WeightingPotential().
|
protected |
Definition at line 148 of file ComponentFieldMap.hh.
Referenced by Garfield::ComponentAnsys121::ComponentAnsys121(), Garfield::ComponentCST::ComponentCST(), Garfield::ComponentElmer2D::ComponentElmer2D(), Garfield::ComponentAnsys121::ElectricField(), Garfield::ComponentElmer2D::ElectricField(), GetBoundingBox(), Garfield::ComponentAnsys121::GetMedium(), Garfield::ComponentElmer2D::GetMedium(), IsInBoundingBox(), SetRange(), Garfield::ComponentCST::SetRange(), Garfield::ComponentAnsys121::SetRangeZ(), Garfield::ComponentCST::SetRangeZ(), Garfield::ComponentElmer2D::SetRangeZ(), UpdatePeriodicityCommon(), Garfield::ComponentElmer2D::WeightingField(), and Garfield::ComponentElmer2D::WeightingPotential().
|
protected |
Definition at line 126 of file ComponentFieldMap.hh.
Referenced by Garfield::ComponentComsol::DelayedWeightingPotential(), Garfield::ComponentAnsys121::ElectricField(), Garfield::ComponentAnsys123::ElectricField(), Garfield::ComponentComsol::ElectricField(), Garfield::ComponentElmer::ElectricField(), Garfield::ComponentElmer2D::ElectricField(), FindElementCube(), Garfield::ComponentAnsys121::GetAspectRatio(), Garfield::ComponentAnsys123::GetAspectRatio(), Garfield::ComponentComsol::GetAspectRatio(), Garfield::ComponentElmer::GetAspectRatio(), Garfield::ComponentElmer2D::GetAspectRatio(), Garfield::ComponentAnsys121::GetElementVolume(), Garfield::ComponentAnsys123::GetElementVolume(), Garfield::ComponentComsol::GetElementVolume(), Garfield::ComponentElmer::GetElementVolume(), Garfield::ComponentElmer2D::GetElementVolume(), GetNode(), GetNumberOfNodes(), GetOrCreateWeightingFieldIndex(), Garfield::ComponentElmer::Initialise(), Garfield::ComponentElmer2D::Initialise(), Garfield::ComponentComsol::Initialise(), Garfield::ComponentAnsys121::Initialise(), Garfield::ComponentAnsys123::Initialise(), PrintElement(), Reset(), Garfield::ComponentComsol::SetDelayedWeightingPotential(), SetRange(), Garfield::ComponentComsol::SetWeightingField(), Garfield::ComponentAnsys121::SetWeightingField(), Garfield::ComponentAnsys123::SetWeightingField(), Garfield::ComponentElmer::SetWeightingField(), Garfield::ComponentElmer2D::SetWeightingField(), Garfield::ComponentAnsys121::WeightingField(), Garfield::ComponentAnsys123::WeightingField(), Garfield::ComponentComsol::WeightingField(), Garfield::ComponentElmer::WeightingField(), Garfield::ComponentElmer2D::WeightingField(), Garfield::ComponentAnsys121::WeightingPotential(), Garfield::ComponentAnsys123::WeightingPotential(), Garfield::ComponentComsol::WeightingPotential(), Garfield::ComponentElmer::WeightingPotential(), and Garfield::ComponentElmer2D::WeightingPotential().
|
protected |
Definition at line 169 of file ComponentFieldMap.hh.
Referenced by PrintWarning(), and Reset().
|
protected |
Definition at line 173 of file ComponentFieldMap.hh.
Referenced by EnableConvergenceWarnings().
|
protected |
Definition at line 162 of file ComponentFieldMap.hh.
Referenced by SetRange().
|
protected |
Definition at line 168 of file ComponentFieldMap.hh.
Referenced by Garfield::ComponentComsol::DelayedWeightingPotential(), Garfield::ComponentAnsys121::ElectricField(), Garfield::ComponentAnsys123::ElectricField(), Garfield::ComponentComsol::ElectricField(), Garfield::ComponentElmer::ElectricField(), Garfield::ComponentElmer2D::ElectricField(), Garfield::ComponentAnsys121::GetMedium(), Garfield::ComponentAnsys123::GetMedium(), Garfield::ComponentComsol::GetMedium(), Garfield::ComponentElmer::GetMedium(), Garfield::ComponentElmer2D::GetMedium(), PrintWarning(), Reset(), UpdatePeriodicity2d(), UpdatePeriodicityCommon(), Garfield::ComponentAnsys121::WeightingField(), Garfield::ComponentAnsys123::WeightingField(), Garfield::ComponentComsol::WeightingField(), Garfield::ComponentCST::WeightingField(), Garfield::ComponentElmer::WeightingField(), Garfield::ComponentElmer2D::WeightingField(), Garfield::ComponentAnsys121::WeightingPotential(), Garfield::ComponentAnsys123::WeightingPotential(), Garfield::ComponentComsol::WeightingPotential(), Garfield::ComponentElmer::WeightingPotential(), and Garfield::ComponentElmer2D::WeightingPotential().
|
protected |
Definition at line 144 of file ComponentFieldMap.hh.
Referenced by Garfield::ComponentComsol::DelayedWeightingPotential(), Garfield::ComponentComsol::SetDelayedWeightingPotential(), and Garfield::ComponentComsol::SetTimeInterval().
|
protected |
Definition at line 140 of file ComponentFieldMap.hh.
Referenced by Garfield::ComponentComsol::DelayedWeightingPotential(), GetOrCreateWeightingFieldIndex(), GetWeightingFieldIndex(), Garfield::ComponentElmer2D::Initialise(), Garfield::ComponentComsol::Initialise(), Reset(), Garfield::ComponentComsol::SetDelayedWeightingPotential(), Garfield::ComponentComsol::SetWeightingField(), Garfield::ComponentAnsys121::SetWeightingField(), Garfield::ComponentAnsys123::SetWeightingField(), Garfield::ComponentElmer::SetWeightingField(), Garfield::ComponentElmer2D::SetWeightingField(), Garfield::ComponentCST::SetWeightingField(), Garfield::ComponentAnsys121::WeightingField(), Garfield::ComponentAnsys123::WeightingField(), Garfield::ComponentComsol::WeightingField(), Garfield::ComponentElmer::WeightingField(), Garfield::ComponentElmer2D::WeightingField(), Garfield::ComponentAnsys121::WeightingPotential(), Garfield::ComponentAnsys123::WeightingPotential(), Garfield::ComponentComsol::WeightingPotential(), Garfield::ComponentElmer::WeightingPotential(), and Garfield::ComponentElmer2D::WeightingPotential().
|
protected |
Definition at line 141 of file ComponentFieldMap.hh.
Referenced by GetOrCreateWeightingFieldIndex(), Garfield::ComponentElmer2D::Initialise(), Garfield::ComponentComsol::Initialise(), Reset(), Garfield::ComponentComsol::SetDelayedWeightingPotential(), Garfield::ComponentComsol::SetWeightingField(), Garfield::ComponentAnsys121::SetWeightingField(), Garfield::ComponentAnsys123::SetWeightingField(), Garfield::ComponentElmer::SetWeightingField(), Garfield::ComponentElmer2D::SetWeightingField(), Garfield::ComponentCST::SetWeightingField(), Garfield::ComponentAnsys121::WeightingField(), Garfield::ComponentAnsys123::WeightingField(), Garfield::ComponentComsol::WeightingField(), Garfield::ComponentCST::WeightingField(), Garfield::ComponentElmer::WeightingField(), Garfield::ComponentElmer2D::WeightingField(), Garfield::ComponentAnsys121::WeightingPotential(), Garfield::ComponentAnsys123::WeightingPotential(), Garfield::ComponentCST::WeightingPotential(), Garfield::ComponentElmer::WeightingPotential(), and Garfield::ComponentElmer2D::WeightingPotential().