castep_param_io/param/general/
calculate_props.rs1use crate::param::KeywordDisplay;
2
3use castep_param_derive::{KeywordDisplay, ParamDisplay};
4use derive_builder::Builder;
5use serde::{Deserialize, Serialize};
6
7#[derive(
8 Debug,
9 Clone,
10 Copy,
11 PartialEq,
12 Eq,
13 PartialOrd,
14 Ord,
15 Hash,
16 Serialize,
17 Deserialize,
18 Default,
19 Builder,
20 ParamDisplay,
21)]
22#[builder(setter(into, strip_option), default)]
23pub struct CalculateProperties {
24 pub stress: Option<CalculateStress>,
25 pub densdiff: Option<CalculateDensdiff>,
26 pub elf: Option<CalculateELF>,
27 pub hirshfeld: Option<CalculateHirshfeld>,
28}
29
30#[derive(
31 Debug,
32 Clone,
33 Copy,
34 PartialEq,
35 Eq,
36 PartialOrd,
37 Ord,
38 Hash,
39 Serialize,
40 Deserialize,
41 Default,
42 KeywordDisplay,
43)]
44#[keyword_display(field="CALCULATE_STRESS",from=bool,value=bool)]
45pub struct CalculateStress(bool);
46#[derive(
47 Debug,
48 Clone,
49 Copy,
50 PartialEq,
51 Eq,
52 PartialOrd,
53 Ord,
54 Hash,
55 Serialize,
56 Deserialize,
57 Default,
58 KeywordDisplay,
59)]
60#[keyword_display(field="CALCULATE_DENSDIFF",from=bool,value=bool)]
61pub struct CalculateDensdiff(bool);
62#[derive(
63 Debug,
64 Clone,
65 Copy,
66 PartialEq,
67 Eq,
68 PartialOrd,
69 Ord,
70 Hash,
71 Serialize,
72 Deserialize,
73 Default,
74 KeywordDisplay,
75)]
76#[keyword_display(field="CALCULATE_ELF",from=bool,value=bool)]
77pub struct CalculateELF(bool);
78#[derive(
79 Debug,
80 Clone,
81 Copy,
82 PartialEq,
83 Eq,
84 PartialOrd,
85 Ord,
86 Hash,
87 Serialize,
88 Deserialize,
89 Default,
90 KeywordDisplay,
91)]
92#[keyword_display(field="CALCULATE_HIRSHFELD", from=bool, value=bool)]
93pub struct CalculateHirshfeld(bool);
94
95#[cfg(test)]
96mod test {
97 use crate::param::general::calculate_props::CalculatePropertiesBuilder;
98
99 use super::CalculateProperties;
100
101 #[test]
102 fn calc_props() {
103 let p = CalculateProperties::default();
104 assert!(p.to_string().is_empty());
105 let p = CalculatePropertiesBuilder::default()
106 .densdiff(true)
107 .stress(false)
108 .build()
109 .unwrap();
110 let target = "CALCULATE_STRESS : false\nCALCULATE_DENSDIFF : true";
111 assert_eq!(target, p.to_string());
112 }
113}