castep_param_io/param/general/
data_distribution.rs

1
2use castep_param_derive::KeywordDisplay;
3use serde::{Deserialize, Serialize};
4
5#[derive(
6    Debug,
7    Default,
8    Clone,
9    Copy,
10    Hash,
11    Serialize,
12    Deserialize,
13    PartialEq,
14    Eq,
15    PartialOrd,
16    Ord,
17    KeywordDisplay,
18)]
19/// This keyword determines the parallelization strategy used. Available options are:
20/// `Kpoint` - only k-point parallelization will be used (best scalability)
21/// `Gvector` - only g-vector parallelization will be used (worst scalability)
22/// `Mixed` - a combination of k-point and g-vector parallelization will be used
23/// `Default` - the optimal parallelization strategy for the architecture will be used
24/// The Default setting is appropriate in most situations.
25/// The Kpoint option is available only when the number of processors is a factor of the number of k-points.
26/// The Gvector option is appropriate for calculations involving large systems where often only one k-point is used.
27/// The Mixed option is available when the number of processors and the number of k-points have a common factor (for example 6 k-points and 4 processors).
28/// The differences in the scaling properties of the different schemes dictate the number of processors that should be used. For example, a calculation that uses 16 k-points is likely to finish faster on 4 processors (using Kpoint distribution) than on 6 processors (using Mixed distribution) and most likely faster than on 9 processors (using Gvector distribution).
29/// # Default
30/// `Default`
31/// # Example
32/// `DATA_DISTRIBUTION : Gvector`
33#[keyword_display(field = "DATA_DISTRIBUTION")]
34pub enum DataDistribution {
35    Kpoint,
36    Gvector,
37    Mixed,
38    #[default]
39    Default,
40}