gosh_adaptor/
lib.rs

1// imports
2// #+name: 1650f65e
3
4use gosh_core::*;
5
6use gchemol::prelude::*;
7use gchemol::{Atom, Molecule};
8
9// mods
10// #+name: 3022ca5d
11
12mod ckpts;
13mod gaussian;
14mod gulp;
15mod mopac;
16mod null;
17mod siesta;
18mod vasp;
19
20mod parquet;
21
22//mod xtb;
23
24mod common {
25    pub use gosh_core::gut::prelude::*;
26    pub use std::path::{Path, PathBuf};
27}
28
29// pub/trait
30// #+name: 395f043c
31
32use gosh_core::gut::prelude::*;
33use gosh_model::ModelProperties;
34use std::path::Path;
35
36/// Common interface for model adaptors
37pub trait ModelAdaptor {
38    /// Parse the last entry of ModelProperties from a calculation output file
39    ///
40    /// # Return
41    ///
42    /// - ModelProperties, the calculated properties, including energy, forces, ...
43    fn parse_last<P: AsRef<Path>>(&self, _outfile: P) -> Result<ModelProperties>;
44
45    /// Parse all properties in multi-step calculation, sush as optimization or
46    /// multi-molecule batch calculation.
47    ///
48    /// # Return
49    ///
50    /// - a list of ModelProperties
51    fn parse_all<P: AsRef<Path>>(&self, _outfile: P) -> Result<Vec<ModelProperties>>;
52}
53
54// exports
55// #+name: 111a01d3
56
57pub use crate::ckpts::Ckpts;
58pub use crate::gaussian::Gaussian;
59pub use crate::gulp::Gulp;
60pub use crate::mopac::Mopac;
61pub use crate::null::Null;
62pub use crate::siesta::Siesta;
63pub use crate::vasp::Vasp;
64
65// pub use crate::repl::repl_enter_main;
66
67/// Write parsed results in parquet format.
68pub use crate::parquet::WriteParquet;
69
70// exports/docs
71// #+name: cfaadb2d
72
73#[cfg(feature = "adhoc")]
74/// Docs for local mods
75pub mod docs {
76    macro_rules! export_doc {
77        ($l:ident) => {
78            pub mod $l {
79                pub use crate::$l::*;
80            }
81        };
82    }
83
84    export_doc!(vasp);
85}