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 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}