#[derive(Debug, Clone, Copy)]
pub struct XcInput<'a> {
pub rho: &'a [f64],
pub sigma: Option<&'a [f64]>,
pub lapl: Option<&'a [f64]>,
pub tau: Option<&'a [f64]>,
}
impl<'a> XcInput<'a> {
pub fn lda(rho: &'a [f64]) -> Self {
Self {
rho,
sigma: None,
lapl: None,
tau: None,
}
}
pub fn gga(rho: &'a [f64], sigma: &'a [f64]) -> Self {
Self {
rho,
sigma: Some(sigma),
lapl: None,
tau: None,
}
}
}
#[derive(Debug, Clone, Default, PartialEq)]
pub struct XcResult {
pub exc: Vec<f64>,
pub vrho: Vec<f64>,
pub vsigma: Vec<f64>,
pub vtau: Vec<f64>,
pub vlapl: Vec<f64>,
}