castep_param_io/param/population_analysis/
mod.rs

1use crate::param::KeywordDisplay;
2use castep_param_derive::ParamDisplay;
3use derive_builder::Builder;
4use pdos_calculate_weights::PDOSCalculateWeights;
5use popn_bond_cutoff::PopnBondCutoff;
6use popn_calculate::PopnCalculate;
7use popn_write::PopnWrite;
8use serde::{Deserialize, Serialize};
9
10mod pdos_calculate_weights;
11mod popn_bond_cutoff;
12mod popn_calculate;
13mod popn_write;
14
15#[derive(
16    Debug,
17    Clone,
18    Serialize,
19    Deserialize,
20    PartialEq,
21    PartialOrd,
22    Copy,
23    ParamDisplay,
24    Builder,
25    Default,
26)]
27#[builder(setter(into, strip_option), default)]
28pub struct PopulationAnalysis {
29    pub pdos_calculate_weights: Option<PDOSCalculateWeights>,
30    pub popn_bond_cutoff: Option<PopnBondCutoff>,
31    pub popn_calculate: Option<PopnCalculate>,
32    pub popn_write: Option<PopnWrite>,
33}
34
35#[cfg(test)]
36mod test {
37    use super::{
38        popn_bond_cutoff::PopnBondCutoff, popn_write::PopnWrite, PopulationAnalysisBuilder,
39    };
40
41    #[test]
42    fn popn_analysis() {
43        let p = PopulationAnalysisBuilder::default()
44            .pdos_calculate_weights(true)
45            .popn_bond_cutoff(PopnBondCutoff::default())
46            .popn_calculate(true)
47            .popn_write(PopnWrite::Summary)
48            .build()
49            .unwrap();
50        println!("{p}")
51    }
52}