dftd3 0.2.1

FFI bindings and wrappers of simple-dftd3
Documentation
//! FFI bindings for simple-dftd3.
//!
//! # API Version Features
//!
//! This crate provides versioned FFI bindings through cargo features:
//!
//! - `api-v0_2`: Base API (default)
//! - `api-v0_3`: Extends api-v0_2
//! - `api-v0_4`: Extends api-v0_3, adds damping parameter functions
//! - `api-v0_5`: Extends api-v0_4, adds optimized power damping and pairwise
//!   dispersion
//! - `api-v1_3`: Full API, adds CSO damping and GCP functions
//!
//! Features are cumulative: enabling `api-v0_5` also enables all functions from
//! earlier versions (api-v0_2, api-v0_3, api-v0_4).

#![allow(non_camel_case_types)]

use core::ffi::{c_char, c_int};

/* automatically generated by rust-bindgen 0.72.1 */

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _dftd3_error {
    _unused: [u8; 0],
}
#[doc = " Error handle class"]
pub type dftd3_error = *mut _dftd3_error;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _dftd3_structure {
    _unused: [u8; 0],
}
#[doc = " Molecular structure data class"]
pub type dftd3_structure = *mut _dftd3_structure;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _dftd3_model {
    _unused: [u8; 0],
}
#[doc = " Dispersion model class"]
pub type dftd3_model = *mut _dftd3_model;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _dftd3_gcp {
    _unused: [u8; 0],
}
#[doc = " Counter-poisecorrection parameters class"]
pub type dftd3_gcp = *mut _dftd3_gcp;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _dftd3_param {
    _unused: [u8; 0],
}
#[doc = " Damping parameter class"]
pub type dftd3_param = *mut _dftd3_param;
unsafe extern "C" {
    #[cfg(feature = "api-v0_2")]
    #[doc = " Obtain library version as major * 10000 + minor * 100 + patch"]
    pub fn dftd3_get_version() -> c_int;
    #[cfg(feature = "api-v0_2")]
    #[doc = " Create new error handle object"]
    pub fn dftd3_new_error() -> dftd3_error;
    #[cfg(feature = "api-v0_2")]
    #[doc = " Check error handle status"]
    pub fn dftd3_check_error(arg1: dftd3_error) -> c_int;
    #[cfg(feature = "api-v0_2")]
    #[doc = " Get error message from error handle"]
    pub fn dftd3_get_error(arg1: dftd3_error, arg2: *mut c_char, arg3: *const c_int);
    #[cfg(feature = "api-v0_2")]
    #[doc = " Delete error handle object"]
    pub fn dftd3_delete_error(arg1: *mut dftd3_error);
    #[cfg(feature = "api-v0_2")]
    #[doc = " Create new molecular structure data (quantities in Bohr)"]
    pub fn dftd3_new_structure(
        arg1: dftd3_error,
        arg2: c_int,
        arg3: *const c_int,
        arg4: *const f64,
        arg5: *const f64,
        arg6: *const bool,
    ) -> dftd3_structure;
    #[cfg(feature = "api-v0_2")]
    #[doc = " Delete molecular structure data"]
    pub fn dftd3_delete_structure(arg1: *mut dftd3_structure);
    #[cfg(feature = "api-v0_2")]
    #[doc = " Update coordinates and lattice parameters (quantities in Bohr)"]
    pub fn dftd3_update_structure(
        arg1: dftd3_error,
        arg2: dftd3_structure,
        arg3: *const f64,
        arg4: *const f64,
    );
    #[cfg(feature = "api-v0_2")]
    #[doc = " Create new D3 dispersion model"]
    pub fn dftd3_new_d3_model(arg1: dftd3_error, arg2: dftd3_structure) -> dftd3_model;
    #[cfg(feature = "api-v0_5")]
    #[doc = " Set realspace cutoffs (quantities in Bohr)"]
    pub fn dftd3_set_model_realspace_cutoff(
        arg1: dftd3_error,
        arg2: dftd3_model,
        arg3: f64,
        arg4: f64,
        arg5: f64,
    );
    #[cfg(feature = "api-v0_2")]
    #[doc = " Delete dispersion model"]
    pub fn dftd3_delete_model(arg1: *mut dftd3_model);
    #[cfg(feature = "api-v0_4")]
    #[doc = " Create new zero damping parameters"]
    pub fn dftd3_new_zero_damping(
        arg1: dftd3_error,
        arg2: f64,
        arg3: f64,
        arg4: f64,
        arg5: f64,
        arg6: f64,
        arg7: f64,
    ) -> dftd3_param;
    #[cfg(feature = "api-v0_4")]
    #[doc = " Load zero damping parameters from internal storage"]
    pub fn dftd3_load_zero_damping(arg1: dftd3_error, arg2: *mut c_char, arg3: bool)
        -> dftd3_param;
    #[cfg(feature = "api-v0_4")]
    #[doc = " Create new rational damping parameters"]
    pub fn dftd3_new_rational_damping(
        arg1: dftd3_error,
        arg2: f64,
        arg3: f64,
        arg4: f64,
        arg5: f64,
        arg6: f64,
        arg7: f64,
    ) -> dftd3_param;
    #[cfg(feature = "api-v0_4")]
    #[doc = " Load rational damping parameters from internal storage"]
    pub fn dftd3_load_rational_damping(
        arg1: dftd3_error,
        arg2: *mut c_char,
        arg3: bool,
    ) -> dftd3_param;
    #[cfg(feature = "api-v0_4")]
    #[doc = " Create new modified zero damping parameters"]
    pub fn dftd3_new_mzero_damping(
        arg1: dftd3_error,
        arg2: f64,
        arg3: f64,
        arg4: f64,
        arg5: f64,
        arg6: f64,
        arg7: f64,
        arg8: f64,
    ) -> dftd3_param;
    #[cfg(feature = "api-v0_4")]
    #[doc = " Load modified zero damping parameters from internal storage"]
    pub fn dftd3_load_mzero_damping(
        arg1: dftd3_error,
        arg2: *mut c_char,
        arg3: bool,
    ) -> dftd3_param;
    #[cfg(feature = "api-v0_4")]
    #[doc = " Create new modified rational damping parameters"]
    pub fn dftd3_new_mrational_damping(
        arg1: dftd3_error,
        arg2: f64,
        arg3: f64,
        arg4: f64,
        arg5: f64,
        arg6: f64,
        arg7: f64,
    ) -> dftd3_param;
    #[cfg(feature = "api-v0_4")]
    #[doc = " Load modified rational damping parameters from internal storage"]
    pub fn dftd3_load_mrational_damping(
        arg1: dftd3_error,
        arg2: *mut c_char,
        arg3: bool,
    ) -> dftd3_param;
    #[cfg(feature = "api-v0_5")]
    #[doc = " Create new optimized power damping parameters"]
    pub fn dftd3_new_optimizedpower_damping(
        arg1: dftd3_error,
        arg2: f64,
        arg3: f64,
        arg4: f64,
        arg5: f64,
        arg6: f64,
        arg7: f64,
        arg8: f64,
    ) -> dftd3_param;
    #[cfg(feature = "api-v0_5")]
    #[doc = " Load optimized power damping parameters from internal storage"]
    pub fn dftd3_load_optimizedpower_damping(
        arg1: dftd3_error,
        arg2: *mut c_char,
        arg3: bool,
    ) -> dftd3_param;
    #[cfg(feature = "api-v1_3")]
    #[doc = " Create new CSO damping parameters"]
    pub fn dftd3_new_cso_damping(
        arg1: dftd3_error,
        arg2: f64,
        arg3: f64,
        arg4: f64,
        arg5: f64,
        arg6: f64,
        arg7: f64,
        arg8: f64,
    ) -> dftd3_param;
    #[cfg(feature = "api-v1_3")]
    #[doc = " Load CSO damping parameters from internal storage"]
    pub fn dftd3_load_cso_damping(arg1: dftd3_error, arg2: *mut c_char, arg3: bool) -> dftd3_param;
    #[cfg(feature = "api-v0_2")]
    #[doc = " Delete damping parameters"]
    pub fn dftd3_delete_param(arg1: *mut dftd3_param);
    #[cfg(feature = "api-v1_3")]
    #[doc = " Load geometric counter-poise parameters from internal storage"]
    pub fn dftd3_load_gcp_param(
        arg1: dftd3_error,
        arg2: dftd3_structure,
        arg3: *mut c_char,
        arg4: *mut c_char,
    ) -> dftd3_gcp;
    #[cfg(feature = "api-v1_3")]
    #[doc = " Set realspace cutoffs (quantities in Bohr)"]
    pub fn dftd3_set_gcp_realspace_cutoff(arg1: dftd3_error, arg2: dftd3_gcp, arg3: f64, arg4: f64);
    #[cfg(feature = "api-v1_3")]
    #[doc = " Delete counter-poise parameters"]
    pub fn dftd3_delete_gcp(arg1: *mut dftd3_gcp);
    #[cfg(feature = "api-v0_2")]
    #[doc = " Evaluate the dispersion energy and its derivatives"]
    pub fn dftd3_get_dispersion(
        arg1: dftd3_error,
        arg2: dftd3_structure,
        arg3: dftd3_model,
        arg4: dftd3_param,
        arg5: *mut f64,
        arg6: *mut f64,
        arg7: *mut f64,
    );
    #[cfg(feature = "api-v0_5")]
    #[doc = " Evaluate the pairwise representation of the dispersion energy"]
    pub fn dftd3_get_pairwise_dispersion(
        arg1: dftd3_error,
        arg2: dftd3_structure,
        arg3: dftd3_model,
        arg4: dftd3_param,
        arg5: *mut f64,
        arg6: *mut f64,
    );
    #[cfg(feature = "api-v1_3")]
    #[doc = " Evaluate the dispersion energy and its derivatives"]
    pub fn dftd3_get_counterpoise(
        arg1: dftd3_error,
        arg2: dftd3_structure,
        arg3: dftd3_gcp,
        arg4: *mut f64,
        arg5: *mut f64,
        arg6: *mut f64,
    );
}