pub struct UmbrellaInversion;Expand description
Umbrella inversion potential for sp³ centers.
§Physics
Models a specific pyramidal geometry for sp³ hybridized atoms (e.g., amines, phosphines). The central atom $I$ is bonded to three neighbors $J, K, L$, and the potential penalizes deviations from the target out-of-plane angle $\psi_0$.
- Formula: $$ E = \frac{1}{2} C (\cos\psi - \cos\psi_0)^2 $$
- Derivative Factor (
diff): $$ \Gamma = \frac{dE}{d(\cos\psi)} = C (\cos\psi - \cos\psi_0) $$
§Parameters
c_half: Half force constant $C_{half} = C/2$.cos_psi0: Equilibrium value $\cos\psi_0 \neq 0$.
§Inputs
cos_psi: Cosine of the out-of-plane angle $\psi$.
§Implementation Notes
- Pure polynomial evaluation; no trigonometric functions required.
- All intermediate calculations are shared between energy and force computations.
- Branchless and panic-free.
- DREIDING convention: force constant $C = K_{inv}/3$ (split among three permutations).
Trait Implementations§
Source§impl<T: Real> AngleKernel<T> for UmbrellaInversion
impl<T: Real> AngleKernel<T> for UmbrellaInversion
Source§fn diff(cos_psi: T, (c_half, cos_psi0): Self::Params) -> T
fn diff(cos_psi: T, (c_half, cos_psi0): Self::Params) -> T
Computes only the derivative factor $\Gamma$.
§Formula
$$ \Gamma = 2 C_{half} (\cos\psi - \cos\psi_0) $$
This factor allows computing forces via the chain rule: $$ \vec{F} = -\Gamma \cdot \nabla (\cos\psi) $$
Source§fn compute(cos_psi: T, (c_half, cos_psi0): Self::Params) -> EnergyDiff<T>
fn compute(cos_psi: T, (c_half, cos_psi0): Self::Params) -> EnergyDiff<T>
Computes both energy and derivative factor efficiently.
This method reuses intermediate calculations to minimize operations.
Source§impl Clone for UmbrellaInversion
impl Clone for UmbrellaInversion
Source§fn clone(&self) -> UmbrellaInversion
fn clone(&self) -> UmbrellaInversion
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for UmbrellaInversion
impl Debug for UmbrellaInversion
Source§impl Default for UmbrellaInversion
impl Default for UmbrellaInversion
Source§fn default() -> UmbrellaInversion
fn default() -> UmbrellaInversion
Returns the “default value” for a type. Read more
impl Copy for UmbrellaInversion
Auto Trait Implementations§
impl Freeze for UmbrellaInversion
impl RefUnwindSafe for UmbrellaInversion
impl Send for UmbrellaInversion
impl Sync for UmbrellaInversion
impl Unpin for UmbrellaInversion
impl UnwindSafe for UmbrellaInversion
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