castep_param_io/param/general/
castep_task.rs

1
2use castep_param_derive::KeywordDisplay;
3use serde::{Deserialize, Serialize};
4
5
6#[derive(
7    Debug,
8    Clone,
9    Copy,
10    Default,
11    PartialEq,
12    Eq,
13    PartialOrd,
14    Ord,
15    Hash,
16    Serialize,
17    Deserialize,
18    KeywordDisplay,
19)]
20#[keyword_display(field = "TASK")]
21#[non_exhaustive]
22pub enum CastepTask {
23    BandStructure,        // calculates band structure properties.
24    GeometryOptimization, // searches for a minimum energy structure.
25    #[default]
26    SinglePoint, // performs a single-point energy calculation.
27                          //  TODO: Future
28                          // MolecularDynamics,      // performs a molecular dynamics calculation.
29                          // Optics,                 // calculates optical properties.
30                          // Phonon, // performs a linear response calculation to determine phonon frequencies and eigenvectors.
31                          // Efield, // performs an electric field linear response calculation to determine dielectric permittivity and polarizability.
32                          // PhononEfield, // performs a linear response calculation to determine phonon frequencies and eigenvectors, and an electric field linear response calculation to determine dielectric permittivity and polarizability.
33                          // TransitionStateSearch, // performs a transition-state search.
34                          // MagRes,       // performs an NMR calculation.
35                          // Elnes,        // performs core level spectroscopy calculation.
36                          // ElectronicSpectroscopy, // performs electronic spectroscopy calculation.
37                          // Autosolvation, // performs a free energy of solvation calculation.
38}
39
40#[cfg(test)]
41mod test {
42    use crate::param::KeywordDisplay;
43
44    use super::CastepTask;
45
46    #[test]
47    fn castep_task() {
48        let task = CastepTask::default();
49        assert_eq!("TASK : SinglePoint", task.output());
50        let bandstr = CastepTask::BandStructure;
51        assert_eq!("TASK : BandStructure", bandstr.output());
52        let geom_opt = CastepTask::GeometryOptimization;
53        assert_eq!("TASK : GeometryOptimization", geom_opt.output());
54    }
55}