pub struct ThetaHarmonic;Expand description
Theta Harmonic potential for bond angles.
§Physics
Models the angle bending energy using a harmonic approximation directly on the angle $\theta$ (in radians).
- Formula: $$ E = \frac{1}{2} K (\theta - \theta_0)^2 $$
- Derivative Factor (
diff): $$ \Gamma = \frac{dE}{d(\cos\theta)} = -K \frac{\theta - \theta_0}{\sin\theta} $$
§Parameters
k_half: Half force constant $K_{half} = K/2$.theta0: The equilibrium angle $\theta_0$ in radians.
§Inputs
cos_theta: Cosine of the bond angle $\theta_{ijk}$.
§Implementation Notes
- Uses
k_halfto save one multiplication in the energy step. - Handles $\theta=0$ and $\theta=\pi$ analytically using L’Hopital’s rule.
- Needs a single
acoscall for angle calculation.
Trait Implementations§
Source§impl<T: Real> AngleKernel<T> for ThetaHarmonic
impl<T: Real> AngleKernel<T> for ThetaHarmonic
Source§fn diff(cos_theta: T, (k_half, theta0): Self::Params) -> T
fn diff(cos_theta: T, (k_half, theta0): Self::Params) -> T
Computes only the derivative factor $\Gamma$.
§Formula
$$ \Gamma = -2 K_{half} \frac{\theta - \theta_0}{\sin\theta} $$
This factor allows computing forces via the chain rule: $$ \vec{F} = -\Gamma \cdot \nabla (\cos\theta) $$
Source§fn compute(cos_theta: T, (k_half, theta0): Self::Params) -> EnergyDiff<T>
fn compute(cos_theta: T, (k_half, theta0): Self::Params) -> EnergyDiff<T>
Computes both energy and derivative factor efficiently.
This method reuses intermediate calculations to minimize operations.
Source§impl Clone for ThetaHarmonic
impl Clone for ThetaHarmonic
Source§fn clone(&self) -> ThetaHarmonic
fn clone(&self) -> ThetaHarmonic
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 ThetaHarmonic
impl Debug for ThetaHarmonic
Source§impl Default for ThetaHarmonic
impl Default for ThetaHarmonic
Source§fn default() -> ThetaHarmonic
fn default() -> ThetaHarmonic
Returns the “default value” for a type. Read more
impl Copy for ThetaHarmonic
Auto Trait Implementations§
impl Freeze for ThetaHarmonic
impl RefUnwindSafe for ThetaHarmonic
impl Send for ThetaHarmonic
impl Sync for ThetaHarmonic
impl Unpin for ThetaHarmonic
impl UnwindSafe for ThetaHarmonic
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