castep_param_io/param/population_analysis/
mod.rs1use 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}