polsim/
from_toml.rs

1#[derive(Debug, Deserialize, Serialize)]
2#[serde(deny_unknown_fields)]
3pub struct SystemDef {
4    pub beam: BeamDef,
5    pub elements: Vec<ElemDef>,
6}
7
8#[derive(Debug, Deserialize, Serialize)]
9pub struct BeamDef {
10    pub polarization: PolType,
11    pub angle: Option<f64>,
12    pub angle_units: Option<AngleType>,
13    pub x_mag: Option<f64>,
14    pub x_phase: Option<f64>,
15    pub y_mag: Option<f64>,
16    pub y_phase: Option<f64>,
17    pub phase_units: Option<AngleType>,
18    pub handedness: Option<HandednessType>,
19}
20
21#[derive(Debug, Deserialize, Serialize)]
22pub struct ElemDef {
23    pub element_type: ElemType,
24    pub phase: Option<f64>,
25    pub phase_units: Option<AngleType>,
26    pub angle: Option<f64>,
27    pub angle_units: Option<AngleType>,
28}
29
30#[derive(Debug, Deserialize, Serialize, Copy, Clone, PartialEq)]
31#[serde(rename_all = "lowercase")]
32pub enum ElemType {
33    Polarizer,
34    Rotator,
35    Retarder,
36    HWP,
37    QWP,
38}
39
40#[derive(Debug, Deserialize, Serialize, Copy, Clone, PartialEq)]
41#[serde(rename_all = "lowercase")]
42pub enum PolType {
43    Linear,
44    Circular,
45    Elliptical,
46}
47
48#[derive(Debug, Deserialize, Serialize, Copy, Clone, PartialEq)]
49#[serde(rename_all = "lowercase")]
50pub enum AngleType {
51    Degrees,
52    Radians,
53}
54
55#[derive(Debug, Deserialize, Serialize, Copy, Clone, PartialEq)]
56#[serde(rename_all = "lowercase")]
57pub enum HandednessType {
58    Left,
59    Right,
60}