pub struct SlaterKosterModel {
pub dim_r: usize,
pub lat: Array2<f64>,
pub atoms: Vec<SkAtom>,
pub spin: bool,
pub neighbor_search_range: i32,
}Expand description
Slater-Koster model precursor containing only crystal structure information.
This struct holds the geometric information needed to construct a tight-binding model
using Slater-Koster parameters. The actual hopping integrals are added later through
the build_model method with specific parameter values.
Fields§
§dim_r: usizeReal space dimensionality (1, 2, or 3)
lat: Array2<f64>Lattice vectors where lat.row(i) is the i-th basis vector $\mathbf{a}_i$
atoms: Vec<SkAtom>List of atoms in the unit cell with positions and orbital information
spin: boolWhether the model includes spin degrees of freedom
neighbor_search_range: i32Maximum lattice vector range for neighbor search
Implementations§
Source§impl SlaterKosterModel
impl SlaterKosterModel
Sourcepub fn new(
dim_r: usize,
lat: Array2<f64>,
atoms: Vec<SkAtom>,
spin: bool,
) -> Self
pub fn new( dim_r: usize, lat: Array2<f64>, atoms: Vec<SkAtom>, spin: bool, ) -> Self
创建一个新的 Slater-Koster 模型 Create a new Slater-Koster model with the given crystal structure.
§Arguments
dim_r- Real space dimensionality (1, 2, or 3)lat- Lattice vectors as a $d \times d$ matrixatoms- List of atoms with positions and orbital projectionsspin- Whether to include spin degrees of freedom
§Returns
A SlaterKosterModel instance with default neighbor search range
Sourcepub fn with_search_range(self, range: i32) -> Result<Self>
pub fn with_search_range(self, range: i32) -> Result<Self>
Trait Implementations§
Source§impl Clone for SlaterKosterModel
impl Clone for SlaterKosterModel
Source§fn clone(&self) -> SlaterKosterModel
fn clone(&self) -> SlaterKosterModel
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SlaterKosterModel
impl Debug for SlaterKosterModel
Source§impl Default for SlaterKosterModel
impl Default for SlaterKosterModel
Source§impl ToTbModel for SlaterKosterModel
impl ToTbModel for SlaterKosterModel
Source§fn build_model(
&self,
n_neighbors: usize,
params: &HashMap<(AtomType, AtomType, usize), SkParams>,
) -> Result<Model>
fn build_model( &self, n_neighbors: usize, params: &HashMap<(AtomType, AtomType, usize), SkParams>, ) -> Result<Model>
Implementation of the tight-binding model construction using Slater-Koster formalism.
This method:
- Flattens all orbitals from all atoms into a single list
- Finds neighbor shells up to the specified order
- Computes hopping integrals using directional cosines and SK parameters
- Constructs the Hamiltonian matrix in real space
The hopping integrals are computed using the formula: $$ V_{ll’m} = \sum_{\mu} V_{ll’\mu} \cdot f_\mu(\cos\theta) $$ where $f_\mu$ are the angular dependence functions for sigma, pi, delta bonds.
Auto Trait Implementations§
impl Freeze for SlaterKosterModel
impl RefUnwindSafe for SlaterKosterModel
impl Send for SlaterKosterModel
impl Sync for SlaterKosterModel
impl Unpin for SlaterKosterModel
impl UnwindSafe for SlaterKosterModel
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