pub struct CrystalSpec {
pub layers: Vec<usize>,
pub preset: CrystalPreset,
pub normal: [i32; 3],
pub reference: [i32; 3],
pub wafer_rotation_deg: f64,
pub thermal: Option<CrystalThermalSpec>,
pub p_max_nm: Option<f64>,
pub q_max_nm: Option<f64>,
pub search_length_nm: Option<f64>,
}Expand description
[[crystal]]: one cubic crystal filling some stack layers; every layer
not named stays amorphous. Several entries may describe different
crystals in different layers.
[[crystal]]
layers = [0] # indices into the stack: finite layers, then the substrate
preset = "Si"
normal = [0, 0, 1] # (hkl), inward surface normal
reference = [0, 1, 0] # [uvw] in the surface plane: the zero of the azimuthThe beam’s tilt_deg and azimuth_deg are the engine’s tilt and twist
(docs/crystal-orientation.md); there is no second beam direction.
Fields§
§layers: Vec<usize>Stack layer indices (front to back; the substrate is the last index) filled by this crystal.
preset: CrystalPresetLattice preset.
normal: [i32; 3]Miller indices (hkl) of the surface plane; the inward normal.
reference: [i32; 3]Direction [uvw] in the surface plane (h u + k v + l w = 0) that is
lab +y at zero wafer rotation. Required: the azimuth has no hidden
zero.
wafer_rotation_deg: f64Wafer rotation about the surface normal, degrees. Default 0.
thermal: Option<CrystalThermalSpec>Thermal vibration. Default: static lattice.
p_max_nm: Option<f64>Largest partner impact parameter, nm. Default: the nearest-neighbour distance.
q_max_nm: Option<f64>Largest path distance between simultaneous partners, nm. Default: 5 % of the nearest-neighbour distance.
search_length_nm: Option<f64>Length of one search segment, nm (speed only). Default: the lattice constant.
Trait Implementations§
Source§impl Clone for CrystalSpec
impl Clone for CrystalSpec
Source§fn clone(&self) -> CrystalSpec
fn clone(&self) -> CrystalSpec
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 CrystalSpec
impl Debug for CrystalSpec
Source§impl<'de> Deserialize<'de> for CrystalSpec
impl<'de> Deserialize<'de> for CrystalSpec
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 CrystalSpec
impl PartialEq for CrystalSpec
Source§impl Serialize for CrystalSpec
impl Serialize for CrystalSpec
impl StructuralPartialEq for CrystalSpec
Auto Trait Implementations§
impl Freeze for CrystalSpec
impl RefUnwindSafe for CrystalSpec
impl Send for CrystalSpec
impl Sync for CrystalSpec
impl Unpin for CrystalSpec
impl UnsafeUnpin for CrystalSpec
impl UnwindSafe for CrystalSpec
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