pub struct Parameters<const DIM: usize> {
pub T: Array1<f64>,
pub mu: Array1<f64>,
pub eta: f64,
pub kmesh: [usize; DIM],
pub omega: Array1<f64>,
pub spin: Option<SpinDirection>,
pub direction: Array2<f64>,
pub integration: Integration,
pub field_symmetry: FieldSymmetry,
}Expand description
Unified physical parameters for every response calculation.
One structure is shared by hall_conductivity, quantum_geometry,
optical_conductivity, extrinsic_nonlinear_hall and
intrinsic_nonlinear_hall. Each method reads only the fields it needs;
the remaining fields are silently ignored.
Fields§
§T: Array1<f64>Temperature in kelvin. T[0] == 0.0 selects the exact zero-temperature
step function; T[0] > 0.0 selects Fermi-Dirac occupation at that
temperature. Only T[0] is currently used.
mu: Array1<f64>Chemical potential(s) in eV. Methods that expect a single chemical
potential (optical conductivity) use mu[0] and require one element.
eta: f64Non-negative energy-denominator regularization in eV.
kmesh: [usize; DIM]Number of uniform samples along each reciprocal-lattice direction.
omega: Array1<f64>Photon / perturbation frequency(ies) in eV. Methods that expect a
single frequency use omega[0]; the optical conductivity scans all
frequencies.
spin: Option<SpinDirection>Spin-current polarization. None selects the charge current.
direction: Array2<f64>Direction matrix with shape (rank, DIM):
rank = 2for rank-two tensors (Hall, quantum geometry, optical component): row 0 = first tensor index, row 1 = second tensor index.rank = 3for rank-three tensors (nonlinear Hall): row 0 = current direction, rows 1-2 = field directions.
integration: IntegrationBrillouin-zone integration algorithm.
field_symmetry: FieldSymmetryOrdering convention for the two field indices of the extrinsic nonlinear Hall response. Ignored by all other methods.
Implementations§
Source§impl<const DIM: usize> Parameters<DIM>
impl<const DIM: usize> Parameters<DIM>
Sourcepub fn new(kmesh: [usize; DIM], direction: Array2<f64>, mu: Array1<f64>) -> Self
pub fn new(kmesh: [usize; DIM], direction: Array2<f64>, mu: Array1<f64>) -> Self
Construct a zero-temperature charge-response parameter set with
1e-3 eV broadening, DC frequency and direct integration.
Sourcepub fn at_mu(kmesh: [usize; DIM], direction: Array2<f64>, mu: f64) -> Self
pub fn at_mu(kmesh: [usize; DIM], direction: Array2<f64>, mu: f64) -> Self
Convenience constructor for a single chemical potential.
Sourcepub fn rank2(
kmesh: [usize; DIM],
direction_a: [f64; DIM],
direction_b: [f64; DIM],
mu: Array1<f64>,
) -> Self
pub fn rank2( kmesh: [usize; DIM], direction_a: [f64; DIM], direction_b: [f64; DIM], mu: Array1<f64>, ) -> Self
Rank-two charge response from two const-generic direction vectors.
Sourcepub fn rank3(
kmesh: [usize; DIM],
current: [f64; DIM],
field_1: [f64; DIM],
field_2: [f64; DIM],
mu: Array1<f64>,
) -> Self
pub fn rank3( kmesh: [usize; DIM], current: [f64; DIM], field_1: [f64; DIM], field_2: [f64; DIM], mu: Array1<f64>, ) -> Self
Rank-three charge response from const-generic current and field vectors. Row 0 is the current, rows 1-2 the fields.
Sourcepub fn with_temperature(self, kelvin: f64) -> Self
pub fn with_temperature(self, kelvin: f64) -> Self
Set the temperature in kelvin.
Sourcepub fn with_spin(self, spin: SpinDirection) -> Self
pub fn with_spin(self, spin: SpinDirection) -> Self
Select the spin-current polarization.
Sourcepub fn with_frequency(self, omega: f64) -> Self
pub fn with_frequency(self, omega: f64) -> Self
Set a single frequency in eV.
Sourcepub fn with_integration(self, integration: Integration) -> Self
pub fn with_integration(self, integration: Integration) -> Self
Select the Brillouin-zone integration algorithm.
Trait Implementations§
Source§impl<const DIM: usize> Clone for Parameters<DIM>
impl<const DIM: usize> Clone for Parameters<DIM>
Auto Trait Implementations§
impl<const DIM: usize> Freeze for Parameters<DIM>
impl<const DIM: usize> RefUnwindSafe for Parameters<DIM>
impl<const DIM: usize> Send for Parameters<DIM>
impl<const DIM: usize> Sync for Parameters<DIM>
impl<const DIM: usize> Unpin for Parameters<DIM>
impl<const DIM: usize> UnsafeUnpin for Parameters<DIM>
impl<const DIM: usize> UnwindSafe for Parameters<DIM>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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