Skip to main content

runmat_analysis_core/problem/
interfaces.rs

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