Skip to main content

xraydb_data/
lib.rs

1#![no_std]
2
3extern crate alloc;
4
5use alloc::string::String;
6use alloc::vec::Vec;
7use serde::{Deserialize, Serialize};
8
9/// The complete XrayDB database, deserialized from the embedded blob.
10#[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}