5 #ifndef _EMISSIONDISCRETIZATION_H_
6 #define _EMISSIONDISCRETIZATION_H_
40 template <
class X,
class Diag,
class OffDiag>
55 const Field& varField,
56 const Field& electricField,
84 XArray& rCell =
dynamic_cast<XArray&
>(rField[cVarIndex]);
90 const T_Scalar optical_dielectric_constant =
_constants[
"optical_dielectric_constant"];
92 const T_Scalar poole_frenkel_emission_frequency =
_constants[
"poole_frenkel_emission_frequency"];
97 for(
int c=0; c<nCells; c++){
99 for (
int i=0; i<nTrap; i++){
101 T_Scalar expt = (electron_trapdepth[i] - beta *
sqrt(
mag(electric_field[c]))) *
QE / (
K_SI * temperature);
108 T_Scalar fluxCoeff = cellVolume[c] * poole_frenkel_emission_frequency * exp(-expt);
110 rCell[c][i] -= (fluxCoeff * xCell[c][i]);
112 diag[c](i,i) -= fluxCoeff;
115 rCell[c][nTrap] += fluxCoeff * xCell[c][i];
const Field & _electricField
Matrix & getMatrix(const Index &rowIndex, const Index &colIndex)
NumTypeTraits< X >::T_Scalar T_Scalar
T mag(const Vector< T, 3 > &a)
CRMatrix< Diag, OffDiag, X > CCMatrix
Array< Diag > & getDiag()
CCMatrix::OffDiagArray OffDiagArray
const ElectricModelConstants< T_Scalar > & _constants
Tangent sqrt(const Tangent &a)
CCMatrix::DiagArray DiagArray
pair< const Field *, const StorageSite * > ArrayIndex
const StorageSite & getCells() const
EmissionDiscretization(const MeshList &meshes, const GeomFields &geomFields, const Field &varField, const Field &electricField, const ElectricModelConstants< T_Scalar > &constants)
const GeomFields & _geomFields
void discretize(const Mesh &mesh, MultiFieldMatrix &mfmatrix, MultiField &xField, MultiField &rField)
Array< Vector< T_Scalar, 3 > > VectorT3Array
vector< T > electron_trapdepth
vector< Mesh * > MeshList