Skip to main content

runmat_analysis_core/problem/
loads.rs

1use serde::{Deserialize, Serialize};
2
3fn default_em_source_amplitude_scale() -> f64 {
4    1.0
5}
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8#[serde(rename_all = "snake_case")]
9pub enum LoadKind {
10    Force {
11        fx: f64,
12        fy: f64,
13        fz: f64,
14    },
15    Moment {
16        mx: f64,
17        my: f64,
18        mz: f64,
19    },
20    Pressure {
21        magnitude_pa: f64,
22    },
23    BodyForce {
24        gx: f64,
25        gy: f64,
26        gz: f64,
27    },
28    CurrentDensity {
29        jx: f64,
30        jy: f64,
31        jz: f64,
32        #[serde(default)]
33        phase_rad: f64,
34        #[serde(default = "default_em_source_amplitude_scale")]
35        amplitude_scale: f64,
36    },
37    CoilCurrent {
38        current_a: f64,
39        #[serde(default)]
40        phase_rad: f64,
41        #[serde(default = "default_em_source_amplitude_scale")]
42        amplitude_scale: f64,
43    },
44    HeatSource {
45        volumetric_w_per_m3: f64,
46    },
47}
48
49#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
50pub struct LoadCase {
51    pub load_id: String,
52    pub region_id: String,
53    pub kind: LoadKind,
54}