pub struct TrResidual {
matrices: [StoredBlock; 2],
incident: DMatrix<Complex>,
ports: TrPorts,
forward: TrForward,
fixed_q: bool,
}Expand description
What tr saves for its pullback: copies of the transmission and reflection blocks
of the illumination direction, the incident fields, the ports and the forward
results.
Fields§
§matrices: [StoredBlock; 2]§incident: DMatrix<Complex>§ports: TrPorts§forward: TrForward§fixed_q: boolImplementations§
Source§impl TrResidual
impl TrResidual
Source§impl TrResidual
impl TrResidual
Sourcepub const fn value(&self) -> &DMatrix<f64>
pub const fn value(&self) -> &DMatrix<f64>
Transmittance and reflectance: the rows, with one column per illumination. The pullback reads them.
Sourcepub fn shape(&self) -> (usize, usize)
pub fn shape(&self) -> (usize, usize)
Rows (transmittance, reflectance) and independent illuminations.
Sourcepub fn input_shape(&self) -> (usize, usize, usize)
pub fn input_shape(&self) -> (usize, usize, usize)
Numbers of modes, independent illumination columns and diffraction groups.
Sourcepub fn pushforward(
&self,
matrices: &Blocks,
incident: &DMatrix<Complex>,
ks: [[Complex; 2]; 2],
zs: [Complex; 2],
q: &[[f64; 2]],
) -> Result<DMatrix<f64>>
pub fn pushforward( &self, matrices: &Blocks, incident: &DMatrix<Complex>, ks: [[Complex; 2]; 2], zs: [Complex; 2], q: &[[f64; 2]], ) -> Result<DMatrix<f64>>
Propagate matrix, illumination and port-geometry directions together. Local one-direction jets include the real power pairing and lossy-port interference.
Trait Implementations§
Source§impl Debug for TrResidual
impl Debug for TrResidual
Source§impl SavedState for TrResidual
impl SavedState for TrResidual
Auto Trait Implementations§
impl Freeze for TrResidual
impl RefUnwindSafe for TrResidual
impl Send for TrResidual
impl Sync for TrResidual
impl Unpin for TrResidual
impl UnwindSafe for TrResidual
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.