runmat_analysis_core/problem/
loads.rs1use 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}