5 #ifndef _CAPTUREDISCRETIZATION_H_
6 #define _CAPTUREDISCRETIZATION_H_
40 template <
class X,
class Diag,
class OffDiag>
55 const Field& varField,
56 const Field& capturecrossField,
80 const XArray& xCell =
dynamic_cast<const XArray&
>(xField[cVarIndex]);
82 XArray& rCell =
dynamic_cast<XArray&
>(rField[cVarIndex]);
98 for(
int c=0; c<nCells; c++){
100 for (
int i=0; i<nTrap; i++){
102 T_Scalar fluxCoeff = cellVolume[c] * velocity * free_electron_capture_cross[c][i];
104 rCell[c][i] += fluxCoeff * xCell[c][nTrap] * (electron_trapdensity[i] - xCell[c][i]);
105 diag[c](i,i) -= fluxCoeff * xCell[c][nTrap];
107 diag[c](i,nTrap) += fluxCoeff * (electron_trapdensity[i]-xCell[c][i]);
110 rCell[c][nTrap] -= fluxCoeff * xCell[c][nTrap] * (electron_trapdensity[i] - xCell[c][i]);
111 diag[c](nTrap,nTrap) -= fluxCoeff * (electron_trapdensity[i]-xCell[c][i]);
113 diag[c](nTrap,i) += fluxCoeff * xCell[c][nTrap];
Matrix & getMatrix(const Index &rowIndex, const Index &colIndex)
CaptureDiscretization(const MeshList &meshes, const GeomFields &geomFields, const Field &varField, const Field &capturecrossField, const ElectricModelConstants< T_Scalar > &constants)
const Field & _capturecrossField
CRMatrix< Diag, OffDiag, X > CCMatrix
CCMatrix::DiagArray DiagArray
Array< Diag > & getDiag()
CCMatrix::OffDiagArray OffDiagArray
Tangent sqrt(const Tangent &a)
Array< Vector< T_Scalar, 3 > > VectorTNArray
pair< const Field *, const StorageSite * > ArrayIndex
vector< T > electron_trapdensity
const ElectricModelConstants< T_Scalar > & _constants
void discretize(const Mesh &mesh, MultiFieldMatrix &mfmatrix, MultiField &xField, MultiField &rField)
const StorageSite & getCells() const
const GeomFields & _geomFields
vector< Mesh * > MeshList
NumTypeTraits< X >::T_Scalar T_Scalar