Struct DFTD3RationalDampingParamBuilder

Source
pub struct DFTD3RationalDampingParamBuilder { /* private fields */ }
Expand description

Implementations§

Source§

impl DFTD3RationalDampingParamBuilder

Source

pub fn s6(self, value: f64) -> Self

optional, default 1.0

Source

pub fn s8(self, value: f64) -> Self

Examples found in repository?
examples/test_interface.rs (line 269)
226fn test_pair_resolved() {
227    let thr = 1.0e-8;
228
229    let numbers = vec![16, 16, 16, 16, 16, 16, 16, 16];
230    #[rustfmt::skip]
231    let positions = vec![
232        -4.15128787379191,  1.71951973863958, -0.93066267097296,
233        -4.15128787379191, -1.71951973863958,  0.93066267097296,
234        -1.71951973863958, -4.15128787379191, -0.93066267097296,
235         1.71951973863958, -4.15128787379191,  0.93066267097296,
236         4.15128787379191, -1.71951973863958, -0.93066267097296,
237         4.15128787379191,  1.71951973863958,  0.93066267097296,
238         1.71951973863958,  4.15128787379191, -0.93066267097296,
239        -1.71951973863958,  4.15128787379191,  0.93066267097296,
240    ];
241
242    #[rustfmt::skip]
243    let pair_disp2 = [
244        [-0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111],
245        [-0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052],
246        [-0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865],
247        [-0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796],
248        [-0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865],
249        [-0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052],
250        [-0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111],
251        [-0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000],
252    ];
253
254    #[rustfmt::skip]
255    let pair_disp3 = [
256        [0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07],
257        [1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07],
258        [2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07],
259        [3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07],
260        [3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07],
261        [3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07],
262        [2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07],
263        [1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00],
264    ];
265
266    let model = DFTD3Model::new(&numbers, &positions, None, None);
267    let param = DFTD3RationalDampingParamBuilder::default()
268        .a1(0.5545)
269        .s8(2.2609)
270        .a2(3.2297)
271        .build()
272        .unwrap()
273        .new_param();
274
275    let res = model.get_pairwise_dispersion(&param);
276
277    // Flatten the expected matrices for comparison
278    let expected_pairs2: Vec<f64> = pair_disp2.into_iter().flatten().collect();
279    let expected_pairs3: Vec<f64> = pair_disp3.into_iter().flatten().collect();
280
281    res.pair_energy2.iter().zip(expected_pairs2.iter()).for_each(|(x, y)| {
282        assert_abs_diff_eq!(x, y, epsilon = thr);
283    });
284    res.pair_energy3.iter().zip(expected_pairs3.iter()).for_each(|(x, y)| {
285        assert_abs_diff_eq!(x, y, epsilon = thr);
286    });
287}
Source

pub fn s9(self, value: f64) -> Self

optional, default 1.0

Source

pub fn a1(self, value: f64) -> Self

Examples found in repository?
examples/test_interface.rs (line 268)
226fn test_pair_resolved() {
227    let thr = 1.0e-8;
228
229    let numbers = vec![16, 16, 16, 16, 16, 16, 16, 16];
230    #[rustfmt::skip]
231    let positions = vec![
232        -4.15128787379191,  1.71951973863958, -0.93066267097296,
233        -4.15128787379191, -1.71951973863958,  0.93066267097296,
234        -1.71951973863958, -4.15128787379191, -0.93066267097296,
235         1.71951973863958, -4.15128787379191,  0.93066267097296,
236         4.15128787379191, -1.71951973863958, -0.93066267097296,
237         4.15128787379191,  1.71951973863958,  0.93066267097296,
238         1.71951973863958,  4.15128787379191, -0.93066267097296,
239        -1.71951973863958,  4.15128787379191,  0.93066267097296,
240    ];
241
242    #[rustfmt::skip]
243    let pair_disp2 = [
244        [-0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111],
245        [-0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052],
246        [-0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865],
247        [-0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796],
248        [-0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865],
249        [-0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052],
250        [-0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111],
251        [-0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000],
252    ];
253
254    #[rustfmt::skip]
255    let pair_disp3 = [
256        [0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07],
257        [1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07],
258        [2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07],
259        [3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07],
260        [3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07],
261        [3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07],
262        [2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07],
263        [1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00],
264    ];
265
266    let model = DFTD3Model::new(&numbers, &positions, None, None);
267    let param = DFTD3RationalDampingParamBuilder::default()
268        .a1(0.5545)
269        .s8(2.2609)
270        .a2(3.2297)
271        .build()
272        .unwrap()
273        .new_param();
274
275    let res = model.get_pairwise_dispersion(&param);
276
277    // Flatten the expected matrices for comparison
278    let expected_pairs2: Vec<f64> = pair_disp2.into_iter().flatten().collect();
279    let expected_pairs3: Vec<f64> = pair_disp3.into_iter().flatten().collect();
280
281    res.pair_energy2.iter().zip(expected_pairs2.iter()).for_each(|(x, y)| {
282        assert_abs_diff_eq!(x, y, epsilon = thr);
283    });
284    res.pair_energy3.iter().zip(expected_pairs3.iter()).for_each(|(x, y)| {
285        assert_abs_diff_eq!(x, y, epsilon = thr);
286    });
287}
Source

pub fn a2(self, value: f64) -> Self

Examples found in repository?
examples/test_interface.rs (line 270)
226fn test_pair_resolved() {
227    let thr = 1.0e-8;
228
229    let numbers = vec![16, 16, 16, 16, 16, 16, 16, 16];
230    #[rustfmt::skip]
231    let positions = vec![
232        -4.15128787379191,  1.71951973863958, -0.93066267097296,
233        -4.15128787379191, -1.71951973863958,  0.93066267097296,
234        -1.71951973863958, -4.15128787379191, -0.93066267097296,
235         1.71951973863958, -4.15128787379191,  0.93066267097296,
236         4.15128787379191, -1.71951973863958, -0.93066267097296,
237         4.15128787379191,  1.71951973863958,  0.93066267097296,
238         1.71951973863958,  4.15128787379191, -0.93066267097296,
239        -1.71951973863958,  4.15128787379191,  0.93066267097296,
240    ];
241
242    #[rustfmt::skip]
243    let pair_disp2 = [
244        [-0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111],
245        [-0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052],
246        [-0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865],
247        [-0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796],
248        [-0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865],
249        [-0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052],
250        [-0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111],
251        [-0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000],
252    ];
253
254    #[rustfmt::skip]
255    let pair_disp3 = [
256        [0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07],
257        [1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07],
258        [2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07],
259        [3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07],
260        [3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07],
261        [3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07],
262        [2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07],
263        [1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00],
264    ];
265
266    let model = DFTD3Model::new(&numbers, &positions, None, None);
267    let param = DFTD3RationalDampingParamBuilder::default()
268        .a1(0.5545)
269        .s8(2.2609)
270        .a2(3.2297)
271        .build()
272        .unwrap()
273        .new_param();
274
275    let res = model.get_pairwise_dispersion(&param);
276
277    // Flatten the expected matrices for comparison
278    let expected_pairs2: Vec<f64> = pair_disp2.into_iter().flatten().collect();
279    let expected_pairs3: Vec<f64> = pair_disp3.into_iter().flatten().collect();
280
281    res.pair_energy2.iter().zip(expected_pairs2.iter()).for_each(|(x, y)| {
282        assert_abs_diff_eq!(x, y, epsilon = thr);
283    });
284    res.pair_energy3.iter().zip(expected_pairs3.iter()).for_each(|(x, y)| {
285        assert_abs_diff_eq!(x, y, epsilon = thr);
286    });
287}
Source

pub fn alp(self, value: f64) -> Self

optional, default 14.0

Source

pub fn build(self) -> Result<DFTD3RationalDampingParam, DFTD3Error>

Builds a new DFTD3RationalDampingParam.

§Errors

If a required field has not been initialized.

Examples found in repository?
examples/test_interface.rs (line 271)
226fn test_pair_resolved() {
227    let thr = 1.0e-8;
228
229    let numbers = vec![16, 16, 16, 16, 16, 16, 16, 16];
230    #[rustfmt::skip]
231    let positions = vec![
232        -4.15128787379191,  1.71951973863958, -0.93066267097296,
233        -4.15128787379191, -1.71951973863958,  0.93066267097296,
234        -1.71951973863958, -4.15128787379191, -0.93066267097296,
235         1.71951973863958, -4.15128787379191,  0.93066267097296,
236         4.15128787379191, -1.71951973863958, -0.93066267097296,
237         4.15128787379191,  1.71951973863958,  0.93066267097296,
238         1.71951973863958,  4.15128787379191, -0.93066267097296,
239        -1.71951973863958,  4.15128787379191,  0.93066267097296,
240    ];
241
242    #[rustfmt::skip]
243    let pair_disp2 = [
244        [-0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111],
245        [-0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052],
246        [-0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865],
247        [-0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865, -0.00023796],
248        [-0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052, -0.00032865],
249        [-0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111, -0.00108052],
250        [-0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000, -0.00153111],
251        [-0.00153111, -0.00108052, -0.00032865, -0.00023796, -0.00032865, -0.00108052, -0.00153111, -0.00000000],
252    ];
253
254    #[rustfmt::skip]
255    let pair_disp3 = [
256        [0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07],
257        [1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07],
258        [2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07],
259        [3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07],
260        [3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07, 3.95872130e-07],
261        [3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07, 2.91526483e-07],
262        [2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00, 1.08616452e-07],
263        [1.08616452e-07, 2.91526483e-07, 3.95872130e-07, 3.18133443e-07, 3.95872130e-07, 2.91526483e-07, 1.08616452e-07, 0.00000000e-00],
264    ];
265
266    let model = DFTD3Model::new(&numbers, &positions, None, None);
267    let param = DFTD3RationalDampingParamBuilder::default()
268        .a1(0.5545)
269        .s8(2.2609)
270        .a2(3.2297)
271        .build()
272        .unwrap()
273        .new_param();
274
275    let res = model.get_pairwise_dispersion(&param);
276
277    // Flatten the expected matrices for comparison
278    let expected_pairs2: Vec<f64> = pair_disp2.into_iter().flatten().collect();
279    let expected_pairs3: Vec<f64> = pair_disp3.into_iter().flatten().collect();
280
281    res.pair_energy2.iter().zip(expected_pairs2.iter()).for_each(|(x, y)| {
282        assert_abs_diff_eq!(x, y, epsilon = thr);
283    });
284    res.pair_energy3.iter().zip(expected_pairs3.iter()).for_each(|(x, y)| {
285        assert_abs_diff_eq!(x, y, epsilon = thr);
286    });
287}
Source§

impl DFTD3RationalDampingParamBuilder

Trait Implementations§

Source§

impl Default for DFTD3RationalDampingParamBuilder

Source§

fn default() -> Self

Returns the “default value” for a type. 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> 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, 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.