castep_param_io/param/general/
mod.rs1use super::KeywordDisplay;
2use castep_param_derive::ParamDisplay;
3use serde::{Deserialize, Serialize};
4
5mod backup_setting;
6mod calculate_props;
7mod castep_task;
8mod charge_unit;
9mod checkpoint;
10mod comment;
11mod continuation;
12mod data_distribution;
13mod iprint;
14mod opt_strategy;
15mod page_wvfns;
16mod print_clock;
17mod print_memory_usage;
18mod rand_seed;
19mod run_time;
20mod stop;
21mod write_checkpoint;
22mod write_props;
23
24pub use backup_setting::BackUpSetting;
25pub use calculate_props::*;
26pub use castep_task::CastepTask;
27pub use charge_unit::ChargeUnit;
28pub use checkpoint::Checkpoint;
29pub use comment::Comment;
30#[allow(unused_imports)]
31pub use continuation::{Continuation, ContinueReuse, Reuse};
32pub use data_distribution::DataDistribution;
33pub use derive_builder::Builder;
34pub use iprint::IPrint;
35pub use opt_strategy::OptStrategy;
36pub use page_wvfns::PageWvfns;
37pub use print_clock::PrintClock;
38pub use print_memory_usage::PrintMemoryUsage;
39pub use rand_seed::RandSeed;
40pub use run_time::RunTime;
41pub use stop::Stop;
42pub use write_checkpoint::*;
43pub use write_props::*;
44
45#[derive(
46 Debug,
47 Clone,
48 PartialEq,
49 Eq,
50 PartialOrd,
51 Ord,
52 Default,
53 Hash,
54 Serialize,
55 Deserialize,
56 Builder,
57 ParamDisplay,
58)]
59#[builder(setter(into, strip_option), default)]
60pub struct General {
62 pub task: Option<CastepTask>, #[param_display(use_ref = true)]
64 pub comment: Option<Comment>, #[param_display(use_ref = true)]
66 pub continuation_reuse: Option<ContinueReuse>, pub backup: Option<BackUpSetting>,
68 pub charge_unit: Option<ChargeUnit>, #[param_display(use_ref = true)]
70 pub checkpoint: Option<Checkpoint>, pub data_distribution: Option<DataDistribution>, pub iprint: Option<IPrint>, pub opt_strategy: Option<OptStrategy>, pub page_wvfns: Option<PageWvfns>, pub print_clock: Option<PrintClock>, pub print_memory_usage: Option<PrintMemoryUsage>, pub rand_seed: Option<RandSeed>, pub run_time: Option<RunTime>, pub stop: Option<Stop>, pub write_checkpoint: Option<WriteCheckpoint>,
81 #[param_display(display=to_string())]
82 pub calculate_props: Option<CalculateProperties>, pub write_props: Option<WriteProperties>, }
85
86#[cfg(test)]
87mod test {
88
89 use crate::param::{
90 general::{
91 calculate_props::CalculatePropertiesBuilder, write_props::WritePropertiesBuilder,
92 CastepTask, GeneralBuilder, OptStrategy,
93 },
94 Continuation,
95 };
96
97 use super::General;
98
99 #[test]
100 fn general_keywords() {
101 let g = General::default();
102 let gb = GeneralBuilder::default()
103 .opt_strategy(OptStrategy::default())
104 .task(CastepTask::GeometryOptimization)
105 .continuation_reuse(Continuation::Default)
106 .write_props(
107 WritePropertiesBuilder::default()
108 .formatted_elf(true)
109 .formatted_density(true)
110 .build()
111 .unwrap(),
112 )
113 .calculate_props(
114 CalculatePropertiesBuilder::default()
115 .stress(false)
116 .densdiff(false)
117 .elf(false)
118 .hirshfeld(false)
119 .build()
120 .unwrap(),
121 )
122 .build()
123 .unwrap();
124 assert!(g.to_string().is_empty());
125 println!("{gb}");
126 }
127}