DFTD3OptimizedPowerDampingParam

Struct DFTD3OptimizedPowerDampingParam 

Source
pub struct DFTD3OptimizedPowerDampingParam {
    pub s6: f64,
    pub s8: f64,
    pub s9: f64,
    pub a1: f64,
    pub a2: f64,
    pub alp: f64,
    pub bet: f64,
}
Expand description

Optimized power version of the rational damping parameters.

The functional form of the damping function is modified by adding an additional zero-damping like power function 1.

This constructor allows to automatically load the reparameterized damping function from the library rather than the original one. Providing the parameter bet=0 is equivalent to using rational the DFTD3RationalDampingParam constructor.

§Common API documentation for custom damping parameter specification

If your task is to retrive damping parameters of some specific xc-functionals, you may wish to try dftd3_load_param function.

In this crate, you may have three ways to define customized parameters:

  • By DFTD3***DampingParam struct. In this way, all parameters (include optional parameters with default value) must be provided. For example of B3-Zero:

    let param = DFTD3ZeroDampingParam {
        s6: 1.0,
        s8: 1.683,
        rs6: 1.139,
        rs8: 1.0,
        alp: 14.0,
        s9: if atm { 1.0 } else { 0.0 },
    };
    let param = param.new_param();
    // this will give param: DFTD3Param
  • By DFTD3***DampingParamBuilder struct. In this way, optional parameters can be omitted. For example of B3-Zero:

    let param = DFTD3ZeroDampingParamBuilder::default()
        .s8(1.683)
        .rs6(1.139)
        .s9(if atm { 1.0 } else { 0.0 })
        .init();
    // this will give param: DFTD3Param
  • By DFTD3Param utility. In this way, all parameters must be provided. For example of B3-Zero:

    let param = DFTD3Param::new_zero_damping(
        1.0,                         // s6
        1.683,                       // s8
        if atm { 1.0 } else { 0.0 }, // s9
        1.139,                       // rs6
        1.0,                         // rs8
        14.0,                        // alp
    );

Please note that different DFT-D3 versions may have different parameters, for example modified zero damping have another parameter bet for beta, and rational damping (D3-BJ) have parameter name a1, a2 instead of rs6, rs8.


  1. Witte, J.; Mardirossian, N.; Neaton, J. B.; Head-Gordon, M. Assessing DFT-D3 damping functions across widely used density functionals: Can we do better? J. Chem. Theory Comput., 2017, 13(5), 2043–2052. doi: 10.1021/acs.jctc.7b00176

Fields§

§s6: f64

optional, default 1.0

§s8: f64§s9: f64

optional, default 1.0

§a1: f64§a2: f64§alp: f64

optional, default 14.0

§bet: f64

Trait Implementations§

Source§

impl Clone for DFTD3OptimizedPowerDampingParam

Source§

fn clone(&self) -> DFTD3OptimizedPowerDampingParam

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl DFTD3LoadParamAPI for DFTD3OptimizedPowerDampingParam

Source§

impl DFTD3ParamAPI for DFTD3OptimizedPowerDampingParam

Source§

impl Debug for DFTD3OptimizedPowerDampingParam

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.