pub struct ChargeReport {
pub incident: u64,
pub total: ChargeCounts,
pub per_layer: ChargeCells,
pub escaped_front: EscapedCharge,
pub escaped_back: EscapedCharge,
pub escaped_side: EscapedCharge,
pub imbalance: i64,
pub cartesian: Option<CartesianCharge>,
pub cylindrical: Option<CylindricalCharge>,
}Expand description
Where the electrons of a run came to rest and where holes were left, as integer counts, and the balance against the incident electrons.
Charge is counted in units of the electron’s, per electron number:
- every electron that ends inside the target counts
+1where it ends: every terminal fate except escape (stopped below the layer’s threshold, trapped without an interaction, absorbed at the back face, polaron trapped, cut off by the collision cap); - every liberated electron (a secondary-model event with
liberated = true) counts-1at the event, the hole it leaves, whether or not the electron is followed. A liberated electron below the stopping threshold is not followed, it is dropped and counted+1where it was created, so its-1and+1cancel; - an electron leaving through a face carries its charge out and is counted
in
escaped_front/escaped_back.
The balance is exact in integers: incident + created = stopped + escaped, so imbalance is zero on every run and the net electron number
deposited in the target, stopped - created, equals incident - escaped.
Generation: primary is the incident electron, secondary every electron
created by the secondary model. A secondary below the cutoff is not
followed and is therefore counted where it is dropped (see
ElectronTallyMetadata::cutoff_ev).
Fields§
§incident: u64Incident electrons (primary histories).
total: ChargeCountsTotals over the target.
per_layer: ChargeCellsPer layer.
escaped_front: EscapedChargeElectrons that left through the front face.
escaped_back: EscapedChargeElectrons that left through the back face.
escaped_side: EscapedChargeElectrons that left through the lateral boundary of a non-slab geometry.
imbalance: i64incident + created - stopped - escaped; zero if every electron was
counted exactly once.
cartesian: Option<CartesianCharge>The Cartesian grid, if the run has one.
cylindrical: Option<CylindricalCharge>The cylindrical grid, if the run has one.
Trait Implementations§
Source§impl Clone for ChargeReport
impl Clone for ChargeReport
Source§fn clone(&self) -> ChargeReport
fn clone(&self) -> ChargeReport
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ChargeReport
impl Debug for ChargeReport
Source§impl Default for ChargeReport
impl Default for ChargeReport
Source§fn default() -> ChargeReport
fn default() -> ChargeReport
Source§impl<'de> Deserialize<'de> for ChargeReport
impl<'de> Deserialize<'de> for ChargeReport
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for ChargeReport
impl PartialEq for ChargeReport
Source§impl Serialize for ChargeReport
impl Serialize for ChargeReport
impl StructuralPartialEq for ChargeReport
Auto Trait Implementations§
impl Freeze for ChargeReport
impl RefUnwindSafe for ChargeReport
impl Send for ChargeReport
impl Sync for ChargeReport
impl Unpin for ChargeReport
impl UnsafeUnpin for ChargeReport
impl UnwindSafe for ChargeReport
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more