1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, Debug, Clone, Default)]
5pub struct GcPcSaftRecord {
6 pub m: f64,
8 pub sigma: f64,
10 pub epsilon_k: f64,
12 #[serde(default)]
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub mu: Option<f64>,
16 #[serde(default)]
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub kappa_ab: Option<f64>,
20 #[serde(default)]
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub epsilon_k_ab: Option<f64>,
24 #[serde(default)]
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub na: Option<f64>,
28 #[serde(default)]
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub nb: Option<f64>,
32 #[serde(default)]
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub psi_dft: Option<f64>,
36}
37
38impl GcPcSaftRecord {
39 pub fn new(
40 m: f64,
41 sigma: f64,
42 epsilon_k: f64,
43 mu: Option<f64>,
44 kappa_ab: Option<f64>,
45 epsilon_k_ab: Option<f64>,
46 na: Option<f64>,
47 nb: Option<f64>,
48 psi_dft: Option<f64>,
49 ) -> Self {
50 Self {
51 m,
52 sigma,
53 epsilon_k,
54 mu,
55 kappa_ab,
56 epsilon_k_ab,
57 na,
58 nb,
59 psi_dft,
60 }
61 }
62}
63
64impl std::fmt::Display for GcPcSaftRecord {
65 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
66 write!(f, "GcPcSaftRecord(m={}", self.m)?;
67 write!(f, ", sigma={}", self.sigma)?;
68 write!(f, ", epsilon_k={}", self.epsilon_k)?;
69 if let Some(n) = &self.mu {
70 write!(f, ", mu={}", n)?;
71 }
72 if let Some(n) = &self.kappa_ab {
73 write!(f, ", kappa_ab={}", n)?;
74 }
75 if let Some(n) = &self.epsilon_k_ab {
76 write!(f, ", epsilon_k_ab={}", n)?;
77 }
78 if let Some(n) = &self.na {
79 write!(f, ", na={}", n)?;
80 }
81 if let Some(n) = &self.nb {
82 write!(f, ", nb={}", n)?;
83 }
84 write!(f, ")")
85 }
86}