template<class X, class Diag, class OffDiag>
class DriftDiscretization< X, Diag, OffDiag >
Definition at line 18 of file DriftDiscretization.h.
template<class X , class Diag , class OffDiag >
Implements Discretization.
Definition at line 47 of file DriftDiscretization.h.
References DriftDiscretization< X, Diag, OffDiag >::_convectingFluxField, DriftDiscretization< X, Diag, OffDiag >::_nTrap, DriftDiscretization< X, Diag, OffDiag >::_varField, Mesh::getAllFaceCells(), Mesh::getCells(), CRMatrix< T_Diag, T_OffDiag, X >::PairWiseAssembler::getCoeff01(), CRMatrix< T_Diag, T_OffDiag, X >::PairWiseAssembler::getCoeff10(), StorageSite::getCount(), CRMatrix< T_Diag, T_OffDiag, X >::getDiag(), Mesh::getFaces(), MultiFieldMatrix::getMatrix(), CRMatrix< T_Diag, T_OffDiag, X >::getPairWiseAssembler(), and Field::hasArray().
59 const TArray& convectingFlux =
68 CCAssembler& assembler = matrix.getPairWiseAssembler(faceCells);
72 const XArray& xCell =
dynamic_cast<const XArray&
>(xField[cVarIndex]);
74 XArray& rCell =
dynamic_cast<XArray&
>(rField[cVarIndex]);
83 for(
int f=0; f<nFaces; f++)
85 const int c0 = faceCells(f,0);
86 const int c1 = faceCells(f,1);
87 const T_Scalar faceCFlux = convectingFlux[f];
93 varFlux = faceCFlux*xCell[c0][nTrap];
94 diag[c0](nTrap,nTrap) -= faceCFlux;
95 assembler.getCoeff10(f)(nTrap,nTrap) += faceCFlux;
102 varFlux = faceCFlux*xCell[c1][nTrap];
103 diag[c1](nTrap,nTrap) += faceCFlux;
104 assembler.getCoeff01(f)(nTrap,nTrap) -= faceCFlux;
110 rCell[c0][nTrap] -= varFlux;
111 rCell[c1][nTrap] += varFlux;
Matrix & getMatrix(const Index &rowIndex, const Index &colIndex)
bool hasArray(const StorageSite &s) const
const CRConnectivity & getAllFaceCells() const
NumTypeTraits< X >::T_Scalar T_Scalar
const Field & _convectingFluxField
pair< const Field *, const StorageSite * > ArrayIndex
CCMatrix::PairWiseAssembler CCAssembler
CCMatrix::DiagArray DiagArray
const StorageSite & getFaces() const
const StorageSite & getCells() const
CRMatrix< Diag, OffDiag, X > CCMatrix