pub struct ChemistryModelingLibrary { /* private fields */ }Expand description
Chemistry Modeling Library Manager
Implementations§
Source§impl ChemistryModelingLibrary
impl ChemistryModelingLibrary
Sourcepub fn attach_dependencies(
&mut self,
linear_algebra: Arc<Mutex<LinearAlgebraLibrary>>,
statistical_computing: Arc<Mutex<StatisticalComputingLibrary>>,
csd_manager: Arc<Mutex<CsdManager>>,
zns_manager: Arc<Mutex<ZnsZoneManager>>,
)
pub fn attach_dependencies( &mut self, linear_algebra: Arc<Mutex<LinearAlgebraLibrary>>, statistical_computing: Arc<Mutex<StatisticalComputingLibrary>>, csd_manager: Arc<Mutex<CsdManager>>, zns_manager: Arc<Mutex<ZnsZoneManager>>, )
Attach the Phase 2 cross-library dependencies (linear algebra, statistical
computing, CSD computational storage, ZNS zero-copy storage). This is the
wiring point called after new once the caller has constructed
the shared library handles. Sub-components read them through this library.
Sourcepub fn initialize(&mut self) -> Result<(), ChemistryError>
pub fn initialize(&mut self) -> Result<(), ChemistryError>
Initialize the library
Sourcepub fn run_molecular_dynamics(
&mut self,
config: SimulationConfig,
molecule: Molecule,
) -> Result<ChemistryOperationResult<SimulationTrajectory>, ChemistryError>
pub fn run_molecular_dynamics( &mut self, config: SimulationConfig, molecule: Molecule, ) -> Result<ChemistryOperationResult<SimulationTrajectory>, ChemistryError>
Run molecular dynamics simulation
Sourcepub fn calculate_quantum_properties(
&mut self,
molecule: Molecule,
method: QuantumMethodType,
) -> Result<ChemistryOperationResult<QuantumProperties>, ChemistryError>
pub fn calculate_quantum_properties( &mut self, molecule: Molecule, method: QuantumMethodType, ) -> Result<ChemistryOperationResult<QuantumProperties>, ChemistryError>
Calculate quantum properties
Sourcepub fn analyze_reaction_kinetics(
&mut self,
reaction: Reaction,
conditions: ReactionConditions,
) -> Result<ChemistryOperationResult<KineticsResults>, ChemistryError>
pub fn analyze_reaction_kinetics( &mut self, reaction: Reaction, conditions: ReactionConditions, ) -> Result<ChemistryOperationResult<KineticsResults>, ChemistryError>
Analyze reaction kinetics
Sourcepub fn predict_properties(
&mut self,
molecule: Molecule,
properties: Vec<PropertyType>,
) -> Result<ChemistryOperationResult<PredictedProperties>, ChemistryError>
pub fn predict_properties( &mut self, molecule: Molecule, properties: Vec<PropertyType>, ) -> Result<ChemistryOperationResult<PredictedProperties>, ChemistryError>
Predict molecular properties
Sourcepub fn get_performance_stats(&self) -> ChemistryPerformanceMetrics
pub fn get_performance_stats(&self) -> ChemistryPerformanceMetrics
Get performance statistics
Sourcepub fn list_force_fields(&self) -> Vec<String>
pub fn list_force_fields(&self) -> Vec<String>
List available force fields
Sourcepub fn get_molecule_info(&self, molecule_id: &str) -> Option<Molecule>
pub fn get_molecule_info(&self, molecule_id: &str) -> Option<Molecule>
Get molecule information
Sourcepub fn molecular_mass(&self, molecule: &Molecule) -> f64
pub fn molecular_mass(&self, molecule: &Molecule) -> f64
Total molecular mass in amu, summed from IUPAC standard atomic weights by
element (falling back to the atom’s own declared mass when the element
is outside the built-in table). Reproducible and independent of whatever
per-atom mass the caller happened to set.
Sourcepub fn molecular_formula(&self, molecule: &Molecule) -> String
pub fn molecular_formula(&self, molecule: &Molecule) -> String
Molecular formula in Hill notation: carbon first, then hydrogen, then all
remaining elements in alphabetical order, each with its count (count of 1
omitted). E.g. water → H2O, methane → CH4, ethanol → C2H6O.
Sourcepub fn nuclear_repulsion_energy(
&self,
molecule: &Molecule,
) -> Result<f64, ChemistryError>
pub fn nuclear_repulsion_energy( &self, molecule: &Molecule, ) -> Result<f64, ChemistryError>
Nuclear repulsion energy E_nn = Σ_{i<j} Z_i·Z_j / r_ij.
This is the exact classical Coulomb repulsion between the point nuclei; it
is returned in atomic units (Hartree) when the atom coordinates are in
bohr. A single atom (or none) has no nuclear pairs and returns 0.0.
Refuses (rather than inventing a value) when any atom has a zero nuclear
charge, a malformed coordinate vector, or two nuclei coincide.
Sourcepub fn bond_length(
&self,
molecule: &Molecule,
i: usize,
j: usize,
) -> Result<f64, ChemistryError>
pub fn bond_length( &self, molecule: &Molecule, i: usize, j: usize, ) -> Result<f64, ChemistryError>
Bond length (Euclidean distance) between atoms i and j, in the same
length unit as the coordinates.
Sourcepub fn bond_angle(
&self,
molecule: &Molecule,
i: usize,
j: usize,
k: usize,
) -> Result<f64, ChemistryError>
pub fn bond_angle( &self, molecule: &Molecule, i: usize, j: usize, k: usize, ) -> Result<f64, ChemistryError>
Bond angle i–j–k in radians, with j the vertex. Computed from the exact
dot-product definition θ = acos((u·v)/(|u||v|)), u = r_i−r_j, v = r_k−r_j.
Sourcepub fn center_of_mass(
&self,
molecule: &Molecule,
) -> Result<[f64; 3], ChemistryError>
pub fn center_of_mass( &self, molecule: &Molecule, ) -> Result<[f64; 3], ChemistryError>
Center of mass, mass-weighted by standard atomic weights (falling back to
the atom’s declared mass). Same length unit as the coordinates.
Sourcepub fn principal_moments_of_inertia(
&self,
molecule: &Molecule,
) -> Result<[f64; 3], ChemistryError>
pub fn principal_moments_of_inertia( &self, molecule: &Molecule, ) -> Result<[f64; 3], ChemistryError>
Principal moments of inertia (ascending), in amu·(length unit)². Builds the
exact inertia tensor about the center of mass and diagonalizes it with the
tested scf::jacobi_diagonalization (real symmetric 3×3).
Sourcepub fn structural_properties(
&self,
molecule: &Molecule,
) -> Result<StructuralProperties, ChemistryError>
pub fn structural_properties( &self, molecule: &Molecule, ) -> Result<StructuralProperties, ChemistryError>
Aggregate the exact structural / mass properties into one result. The
nuclear repulsion energy is only meaningful when the coordinates are in
bohr; it is included here as Some when computable and None (with the
reason discarded) when the geometry cannot support it.
Auto Trait Implementations§
impl Freeze for ChemistryModelingLibrary
impl RefUnwindSafe for ChemistryModelingLibrary
impl Send for ChemistryModelingLibrary
impl Sync for ChemistryModelingLibrary
impl Unpin for ChemistryModelingLibrary
impl UnsafeUnpin for ChemistryModelingLibrary
impl UnwindSafe for ChemistryModelingLibrary
Blanket Implementations§
§impl<S, A> Aggregate<Result<S, Error>> for Awhere
A: Aggregate<S>,
impl<S, A> Aggregate<Result<S, Error>> for Awhere
A: Aggregate<S>,
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<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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