![]() |
Garfield 0.3
Toolkit for the detailed simulation of particle detectors based on ionization measurement in gases and semiconductors
|
Interpolation in a field map created by Sentaurus Device. More...
#include <ComponentTcadBase.hh>
Classes | |
struct | Defect |
struct | Element |
struct | Region |
Public Member Functions | |
ComponentTcadBase ()=delete | |
Default constructor. | |
ComponentTcadBase (const std::string &name) | |
Constructor. | |
virtual | ~ComponentTcadBase () |
Destructor. | |
bool | Initialise (const std::string &gridfilename, const std::string &datafilename) |
Import mesh and field map from files. | |
bool | SetWeightingField (const std::string &datfile1, const std::string &datfile2, const double dv, const std::string &label) |
Import field maps defining the prompt weighting field and potential. | |
bool | SetWeightingPotential (const std::string &datfile1, const std::string &datfile2, const double dv, const std::string &label) |
Import field maps defining the prompt weighting field and potential. | |
bool | SetWeightingFieldShift (const std::string &label, const double x, const double y, const double z) |
Shift the maps of weighting field/potential for a given electrode with respect to the original mesh. | |
bool | SetDynamicWeightingPotential (const std::string &datfile1, const std::string &datfile2, const double dv, const double t, const std::string &label) |
Import time-dependent weighting potentials at t >= 0. | |
bool | SetDynamicWeightingField (const std::string &datfile1, const std::string &datfile2, const double dv, const double t, const std::string &label) |
Import time-dependent weighting fields at t >= 0. | |
void | PrintRegions () const |
List all currently defined regions. | |
size_t | GetNumberOfRegions () const |
Get the number of regions in the device. | |
void | GetRegion (const size_t ireg, std::string &name, bool &active) const |
Get the name and "active volume" flag of a region. | |
void | SetDriftRegion (const size_t ireg) |
Make a region active ("driftable"). | |
void | UnsetDriftRegion (const size_t ireg) |
Make a region inactive. | |
void | SetMedium (const size_t ireg, Medium *m) |
Set the medium to be associated to a given region. | |
void | SetMedium (const std::string &material, Medium *m) |
Set the medium to be associated to all regions with a given material. | |
size_t | GetNumberOfElements () const override |
bool | GetElementNodes (const size_t i, std::vector< size_t > &nodes) const override |
bool | GetElementRegion (const size_t i, size_t ®ion, bool &active) const override |
size_t | GetNumberOfNodes () const override |
void | EnableVelocityMap (const bool on) |
Switch use of the imported velocity map on/off. | |
size_t | GetNumberOfDonors () |
Get the number of donor states found in the map. | |
size_t | GetNumberOfAcceptors () |
Get the number of acceptor states found in the map. | |
bool | SetDonor (const size_t donorNumber, const double exsec, const double hxsec, const double concentration) |
Set the properties of a donor-type defect state. | |
bool | SetAcceptor (const size_t acceptorNumber, const double exsec, const double hxsec, const double concentration) |
Set the properties of an acceptor-type defect state. | |
void | EnableAlphaMap (const bool on=true) |
Use the imported impact ionisation map or not. | |
void | EnableTrapOccupationMap (const bool on=true) |
Use the imported trapping map or not. | |
void | EnableLifetimeMap (const bool on=true) |
Use the imported lifetime map or not. | |
bool | GetElectronMobility (const double x, const double y, const double z, double &mob) |
Get the electron mobility at a given point in the mesh. | |
bool | GetHoleMobility (const double x, const double y, const double z, double &mob) |
Get the hole mobility at a given point in the mesh. | |
double | ElectronLifetime (const double x, const double y, const double z) |
double | HoleLifetime (const double x, const double y, const double z) |
void | WeightingField (const double x, const double y, const double z, double &wx, double &wy, double &wz, const std::string &label) override |
double | WeightingPotential (const double x, const double y, const double z, const std::string &label) override |
const std::vector< double > & | DelayedSignalTimes (const std::string &label) override |
void | DelayedWeightingField (const double x, const double y, const double z, const double t, double &wx, double &wy, double &wz, const std::string &label) override |
double | DelayedWeightingPotential (const double x, const double y, const double z, const double t, const std::string &label) override |
bool | GetVoltageRange (double &vmin, double &vmax) override |
bool | HasVelocityMap () const override |
bool | ElectronVelocity (const double x, const double y, const double z, double &vx, double &vy, double &vz) override |
bool | HoleVelocity (const double x, const double y, const double z, double &vx, double &vy, double &vz) override |
bool | HasTownsendMap () const override |
bool | HasAttachmentMap () const override |
bool | HasMobilityMap () const override |
bool | ElectronAttachment (const double x, const double y, const double z, double &eta) override |
bool | HoleAttachment (const double x, const double y, const double z, double &eta) override |
bool | ElectronMobility (const double x, const double y, const double z, double &mu) override |
bool | HoleMobility (const double x, const double y, const double z, double &mu) override |
bool | ElectronTownsend (const double x, const double y, const double z, double &alpha) override |
bool | HoleTownsend (const double x, const double y, const double z, double &alpha) override |
Protected Member Functions | |
void | UpdatePeriodicity () override |
void | Cleanup () |
virtual bool | Interpolate (const double x, const double y, const double z, const std::vector< double > &field, double &f)=0 |
virtual bool | Interpolate (const double x, const double y, const double z, const std::vector< std::array< double, N > > &field, double &fx, double &fy, double &fz)=0 |
virtual void | FillTree ()=0 |
size_t | FindRegion (const std::string &name) const |
void | MapCoordinates (std::array< double, N > &x, std::array< bool, N > &mirr) const |
bool | InBoundingBox (const std::array< double, N > &x) const |
void | UpdateAttachment () |
void | ComputeEtaFromLifetime () |
void | ComputeEtaFromTraps () |
bool | GetOffset (const std::string &label, double &dx, double &dy, double &dz) const |
bool | LoadGrid (const std::string &gridfilename) |
bool | LoadData (const std::string &datafilename) |
bool | ReadDataset (std::ifstream &datafile, const std::string &dataset) |
bool | LoadWeightingField (const std::string &datafilename, std::vector< std::array< double, N > > &wf, std::vector< double > &wp) |
Static Protected Member Functions | |
static unsigned int | ElementVertices (const Element &element) |
Protected Attributes | |
std::vector< Region > | m_regions |
std::vector< std::array< double, N > > | m_vertices |
std::vector< Element > | m_elements |
std::vector< double > | m_epot |
std::vector< std::array< double, N > > | m_efield |
std::map< std::string, std::vector< std::array< double, N > > > | m_wfield |
std::map< std::string, std::vector< double > > | m_wpot |
std::map< std::string, std::vector< double > > | m_wshift |
std::map< std::string, std::vector< std::vector< std::array< double, N > > > > | m_dwf |
std::map< std::string, std::vector< std::vector< double > > > | m_dwp |
std::map< std::string, std::vector< double > > | m_dwtf |
std::map< std::string, std::vector< double > > | m_dwtp |
std::vector< std::array< double, N > > | m_eVelocity |
std::vector< std::array< double, N > > | m_hVelocity |
std::vector< double > | m_eMobility |
std::vector< double > | m_hMobility |
std::vector< double > | m_eAlpha |
std::vector< double > | m_hAlpha |
std::vector< double > | m_eLifetime |
std::vector< double > | m_hLifetime |
std::vector< std::vector< float > > | m_donorOcc |
std::vector< std::vector< float > > | m_acceptorOcc |
std::vector< double > | m_eEta |
std::vector< double > | m_hEta |
std::vector< Defect > | m_donors |
std::vector< Defect > | m_acceptors |
bool | m_useVelocityMap = false |
bool | m_useTrapOccMap = false |
bool | m_useLifetimeMap = false |
bool | m_useAlphaMap = false |
std::array< double, 3 > | m_bbMin = {{0., 0., 0.}} |
std::array< double, 3 > | m_bbMax = {{0., 0., 0.}} |
double | m_pMin = 0. |
double | m_pMax = 0. |
Static Protected Attributes | |
static constexpr size_t | nMaxVertices = 4 |
Interpolation in a field map created by Sentaurus Device.
Definition at line 15 of file ComponentTcadBase.hh.
|
delete |
Default constructor.
|
inline |
Constructor.
Definition at line 20 of file ComponentTcadBase.hh.
|
inlinevirtual |
|
protected |
|
protected |
|
protected |
|
inlineoverride |
Definition at line 135 of file ComponentTcadBase.hh.
|
override |
|
override |
|
override |
double Garfield::ComponentTcadBase< N >::ElectronLifetime | ( | const double | x, |
const double | y, | ||
const double | z ) |
|
override |
|
override |
|
override |
|
inlinestaticprotected |
Definition at line 299 of file ComponentTcadBase.hh.
|
inline |
void Garfield::ComponentTcadBase< N >::EnableLifetimeMap | ( | const bool | on = true | ) |
Use the imported lifetime map or not.
void Garfield::ComponentTcadBase< N >::EnableTrapOccupationMap | ( | const bool | on = true | ) |
Use the imported trapping map or not.
void Garfield::ComponentTcadBase< N >::EnableVelocityMap | ( | const bool | on | ) |
Switch use of the imported velocity map on/off.
|
protectedpure virtual |
Implemented in Garfield::ComponentTcad2d, and Garfield::ComponentTcad3d.
|
protected |
bool Garfield::ComponentTcadBase< N >::GetElectronMobility | ( | const double | x, |
const double | y, | ||
const double | z, | ||
double & | mob ) |
Get the electron mobility at a given point in the mesh.
|
override |
|
override |
bool Garfield::ComponentTcadBase< N >::GetHoleMobility | ( | const double | x, |
const double | y, | ||
const double | z, | ||
double & | mob ) |
Get the hole mobility at a given point in the mesh.
|
inline |
Get the number of acceptor states found in the map.
Definition at line 98 of file ComponentTcadBase.hh.
|
inline |
Get the number of donor states found in the map.
Definition at line 96 of file ComponentTcadBase.hh.
|
inlineoverride |
Definition at line 85 of file ComponentTcadBase.hh.
|
inlineoverride |
Definition at line 90 of file ComponentTcadBase.hh.
|
inline |
|
protected |
void Garfield::ComponentTcadBase< N >::GetRegion | ( | const size_t | ireg, |
std::string & | name, | ||
bool & | active ) const |
Get the name and "active volume" flag of a region.
|
override |
|
inlineoverride |
Definition at line 161 of file ComponentTcadBase.hh.
|
inlineoverride |
Definition at line 165 of file ComponentTcadBase.hh.
|
inlineoverride |
Definition at line 158 of file ComponentTcadBase.hh.
|
inlineoverride |
Definition at line 150 of file ComponentTcadBase.hh.
|
override |
double Garfield::ComponentTcadBase< N >::HoleLifetime | ( | const double | x, |
const double | y, | ||
const double | z ) |
|
override |
|
override |
|
override |
|
inlineprotected |
Definition at line 312 of file ComponentTcadBase.hh.
bool Garfield::ComponentTcadBase< N >::Initialise | ( | const std::string & | gridfilename, |
const std::string & | datafilename ) |
Import mesh and field map from files.
gridfilename | name of the .grd file containing the mesh |
datafilename | name of the .dat file containing the nodal solution |
|
protectedpure virtual |
Implemented in Garfield::ComponentTcad2d, and Garfield::ComponentTcad3d.
|
protectedpure virtual |
|
protected |
|
protected |
|
protected |
|
protected |
void Garfield::ComponentTcadBase< N >::PrintRegions | ( | ) | const |
List all currently defined regions.
|
protected |
bool Garfield::ComponentTcadBase< N >::SetAcceptor | ( | const size_t | acceptorNumber, |
const double | exsec, | ||
const double | hxsec, | ||
const double | concentration ) |
Set the properties of an acceptor-type defect state.
bool Garfield::ComponentTcadBase< N >::SetDonor | ( | const size_t | donorNumber, |
const double | exsec, | ||
const double | hxsec, | ||
const double | concentration ) |
Set the properties of a donor-type defect state.
donorNumber | index of the donor |
exsec | cross-section [cm2] for electrons |
hxsec | cross-section [cm2] for holes |
concentration | defect density [cm-3] |
void Garfield::ComponentTcadBase< N >::SetDriftRegion | ( | const size_t | ireg | ) |
Make a region active ("driftable").
bool Garfield::ComponentTcadBase< N >::SetDynamicWeightingField | ( | const std::string & | datfile1, |
const std::string & | datfile2, | ||
const double | dv, | ||
const double | t, | ||
const std::string & | label ) |
Import time-dependent weighting fields at t >= 0.
bool Garfield::ComponentTcadBase< N >::SetDynamicWeightingPotential | ( | const std::string & | datfile1, |
const std::string & | datfile2, | ||
const double | dv, | ||
const double | t, | ||
const std::string & | label ) |
Import time-dependent weighting potentials at t >= 0.
void Garfield::ComponentTcadBase< N >::SetMedium | ( | const size_t | ireg, |
Medium * | m ) |
Set the medium to be associated to a given region.
void Garfield::ComponentTcadBase< N >::SetMedium | ( | const std::string & | material, |
Medium * | m ) |
Set the medium to be associated to all regions with a given material.
bool Garfield::ComponentTcadBase< N >::SetWeightingField | ( | const std::string & | datfile1, |
const std::string & | datfile2, | ||
const double | dv, | ||
const std::string & | label ) |
Import field maps defining the prompt weighting field and potential.
datfile1 | .dat file containing the field map at nominal bias. |
datfile2 | .dat file containing the field map for a configuration with the potential at the electrode to be read out increased by a small voltage dv. |
dv | increase in electrode potential between the two field maps. |
label | name of the electrode |
The field maps must use the same mesh as the drift field.
bool Garfield::ComponentTcadBase< N >::SetWeightingFieldShift | ( | const std::string & | label, |
const double | x, | ||
const double | y, | ||
const double | z ) |
Shift the maps of weighting field/potential for a given electrode with respect to the original mesh.
If the electrode does not exist yet, a new one will be added to the list.
|
inline |
Import field maps defining the prompt weighting field and potential.
Definition at line 50 of file ComponentTcadBase.hh.
void Garfield::ComponentTcadBase< N >::UnsetDriftRegion | ( | const size_t | ireg | ) |
Make a region inactive.
|
protected |
|
overrideprotected |
|
override |
|
override |
|
protected |
Definition at line 262 of file ComponentTcadBase.hh.
|
protected |
Definition at line 276 of file ComponentTcadBase.hh.
|
protected |
Definition at line 289 of file ComponentTcadBase.hh.
|
protected |
Definition at line 288 of file ComponentTcadBase.hh.
|
protected |
Definition at line 261 of file ComponentTcadBase.hh.
|
protected |
Definition at line 275 of file ComponentTcadBase.hh.
|
protected |
Definition at line 242 of file ComponentTcadBase.hh.
|
protected |
Definition at line 243 of file ComponentTcadBase.hh.
|
protected |
Definition at line 245 of file ComponentTcadBase.hh.
|
protected |
Definition at line 246 of file ComponentTcadBase.hh.
|
protected |
Definition at line 255 of file ComponentTcadBase.hh.
|
protected |
Definition at line 264 of file ComponentTcadBase.hh.
|
protected |
Definition at line 232 of file ComponentTcadBase.hh.
|
protected |
Definition at line 227 of file ComponentTcadBase.hh.
|
protected |
Definition at line 258 of file ComponentTcadBase.hh.
|
protected |
Definition at line 252 of file ComponentTcadBase.hh.
|
protected |
Definition at line 230 of file ComponentTcadBase.hh.
|
protected |
Definition at line 249 of file ComponentTcadBase.hh.
|
protected |
Definition at line 256 of file ComponentTcadBase.hh.
|
protected |
Definition at line 265 of file ComponentTcadBase.hh.
|
protected |
Definition at line 259 of file ComponentTcadBase.hh.
|
protected |
Definition at line 253 of file ComponentTcadBase.hh.
|
protected |
Definition at line 250 of file ComponentTcadBase.hh.
|
protected |
Definition at line 293 of file ComponentTcadBase.hh.
|
protected |
Definition at line 292 of file ComponentTcadBase.hh.
|
protected |
Definition at line 197 of file ComponentTcadBase.hh.
|
protected |
Definition at line 285 of file ComponentTcadBase.hh.
|
protected |
Definition at line 283 of file ComponentTcadBase.hh.
|
protected |
Definition at line 281 of file ComponentTcadBase.hh.
|
protected |
Definition at line 279 of file ComponentTcadBase.hh.
|
protected |
Definition at line 200 of file ComponentTcadBase.hh.
|
protected |
Definition at line 235 of file ComponentTcadBase.hh.
|
protected |
Definition at line 236 of file ComponentTcadBase.hh.
|
protected |
Definition at line 238 of file ComponentTcadBase.hh.
|
staticconstexprprotected |
Definition at line 184 of file ComponentTcadBase.hh.