1#![no_std]
2
3extern crate alloc;
4
5use alloc::string::String;
6use alloc::vec::Vec;
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Serialize, Deserialize)]
11pub struct XrayDatabase {
12 pub version: Vec<VersionRecord>,
13 pub elements: Vec<ElementRecord>,
14 pub xray_levels: Vec<XrayLevelRecord>,
15 pub xray_transitions: Vec<XrayTransitionRecord>,
16 pub coster_kronig: Vec<CosterKronigRecord>,
17 pub photoabsorption: Vec<PhotoabsorptionRecord>,
18 pub scattering: Vec<ScatteringRecord>,
19 pub chantler: Vec<ChantlerRecord>,
20 pub waasmaier: Vec<WaasmaierRecord>,
21 pub compton_energies: ComptonEnergiesRecord,
22 pub keski_rahkonen_krause: Vec<CoreWidthRecord>,
23 pub krause_oliver: Vec<CoreWidthRecord>,
24 pub corelevel_widths: Vec<CoreWidthRecord>,
25 pub ionization_potentials: Vec<IonizationPotentialRecord>,
26}
27
28#[derive(Debug, Serialize, Deserialize)]
29pub struct VersionRecord {
30 pub tag: String,
31 pub date: String,
32 pub notes: String,
33}
34
35#[derive(Debug, Serialize, Deserialize)]
36pub struct ElementRecord {
37 pub atomic_number: u16,
38 pub symbol: String,
39 pub name: String,
40 pub molar_mass: f64,
41 pub density: f64,
42}
43
44#[derive(Debug, Serialize, Deserialize)]
45pub struct XrayLevelRecord {
46 pub element: String,
47 pub iupac_symbol: String,
48 pub absorption_edge: f64,
49 pub fluorescence_yield: f64,
50 pub jump_ratio: f64,
51}
52
53#[derive(Debug, Serialize, Deserialize)]
54pub struct XrayTransitionRecord {
55 pub element: String,
56 pub iupac_symbol: String,
57 pub siegbahn_symbol: String,
58 pub initial_level: String,
59 pub final_level: String,
60 pub emission_energy: f64,
61 pub intensity: f64,
62}
63
64#[derive(Debug, Serialize, Deserialize)]
65pub struct CosterKronigRecord {
66 pub element: String,
67 pub initial_level: String,
68 pub final_level: String,
69 pub transition_probability: f64,
70 pub total_transition_probability: f64,
71}
72
73#[derive(Debug, Serialize, Deserialize)]
74pub struct PhotoabsorptionRecord {
75 pub element: String,
76 pub log_energy: Vec<f64>,
77 pub log_photoabsorption: Vec<f64>,
78 pub log_photoabsorption_spline: Vec<f64>,
79}
80
81#[derive(Debug, Serialize, Deserialize)]
82pub struct ScatteringRecord {
83 pub element: String,
84 pub log_energy: Vec<f64>,
85 pub log_coherent_scatter: Vec<f64>,
86 pub log_coherent_scatter_spline: Vec<f64>,
87 pub log_incoherent_scatter: Vec<f64>,
88 pub log_incoherent_scatter_spline: Vec<f64>,
89}
90
91#[derive(Debug, Serialize, Deserialize)]
92pub struct ChantlerRecord {
93 pub element: String,
94 pub sigma_mu: f64,
95 pub mue_f2: f64,
96 pub density: f64,
97 pub corr_henke: f64,
98 pub corr_cl35: f64,
99 pub corr_nucl: f64,
100 pub energy: Vec<f64>,
101 pub f1: Vec<f64>,
102 pub f2: Vec<f64>,
103 pub mu_photo: Vec<f64>,
104 pub mu_incoh: Vec<f64>,
105 pub mu_total: Vec<f64>,
106}
107
108#[derive(Debug, Serialize, Deserialize)]
109pub struct WaasmaierRecord {
110 pub atomic_number: u16,
111 pub element: String,
112 pub ion: String,
113 pub offset: f64,
114 pub scale: Vec<f64>,
115 pub exponents: Vec<f64>,
116}
117
118#[derive(Debug, Serialize, Deserialize)]
119pub struct ComptonEnergiesRecord {
120 pub incident: Vec<f64>,
121 pub xray_90deg: Vec<f64>,
122 pub xray_mean: Vec<f64>,
123 pub electron_mean: Vec<f64>,
124}
125
126#[derive(Debug, Serialize, Deserialize)]
127pub struct CoreWidthRecord {
128 pub atomic_number: u16,
129 pub element: String,
130 pub edge: String,
131 pub width: f64,
132}
133
134#[derive(Debug, Serialize, Deserialize)]
135pub struct IonizationPotentialRecord {
136 pub gas: String,
137 pub potential: f64,
138}