runmat_analysis_core/problem/
interfaces.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4pub struct ContactInterfaceModel {
5 pub penalty_stiffness_scale: f64,
6 pub max_penetration_ratio: f64,
7 pub friction_coefficient: f64,
8}
9
10#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
11pub struct FluidStructureInterfaceModel {
12 pub normal_stiffness_pa_per_m: f64,
13 pub damping_ratio: f64,
14 pub relaxation_factor: f64,
15}
16
17#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
18pub struct ConjugateHeatTransferInterfaceModel {
19 pub thermal_conductance_w_per_m2k: f64,
20 pub contact_resistance_m2k_per_w: f64,
21 pub relaxation_factor: f64,
22}
23
24#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
25#[serde(rename_all = "snake_case")]
26pub enum AnalysisInterfaceKind {
27 Contact(ContactInterfaceModel),
28 FluidStructure(FluidStructureInterfaceModel),
29 ConjugateHeatTransfer(ConjugateHeatTransferInterfaceModel),
30}
31
32#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
33pub struct AnalysisInterface {
34 pub interface_id: String,
35 pub primary_region_id: String,
36 pub secondary_region_id: String,
37 pub kind: AnalysisInterfaceKind,
38}