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    Wrench {
21        fx: f64,
22        fy: f64,
23        fz: f64,
24        mx: f64,
25        my: f64,
26        mz: f64,
27        px: f64,
28        py: f64,
29        pz: f64,
30    },
31    Pressure {
32        magnitude_pa: f64,
33    },
34    BodyForce {
35        gx: f64,
36        gy: f64,
37        gz: f64,
38    },
39    CurrentDensity {
40        jx: f64,
41        jy: f64,
42        jz: f64,
43        #[serde(default)]
44        phase_rad: f64,
45        #[serde(default = "default_em_source_amplitude_scale")]
46        amplitude_scale: f64,
47    },
48    CoilCurrent {
49        current_a: f64,
50        #[serde(default)]
51        phase_rad: f64,
52        #[serde(default = "default_em_source_amplitude_scale")]
53        amplitude_scale: f64,
54    },
55    HeatSource {
56        volumetric_w_per_m3: f64,
57    },
58}
59
60#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
61pub struct LoadCase {
62    pub load_id: String,
63    pub region_id: String,
64    pub kind: LoadKind,
65}