runmat-meshing-core 0.6.0

Deterministic meshing preparation contracts for RunMat
Documentation
use serde::{Deserialize, Serialize};

use super::provenance::MeshEntityProvenance;

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct BoundaryMeshTriangle {
    pub triangle_id: u32,
    pub node_ids: [u32; 3],
    #[serde(default)]
    pub region_ids: Vec<String>,
    #[serde(default)]
    pub material_region_ids: Vec<String>,
    #[serde(default)]
    pub provenance: Vec<MeshEntityProvenance>,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct BoundaryMeshInput {
    pub mesh_id: String,
    pub source_geometry_id: String,
    pub source_geometry_revision: u32,
    pub source_geometry_sha256: Option<String>,
    pub vertices: Vec<[f64; 3]>,
    pub triangles: Vec<BoundaryMeshTriangle>,
    pub bounds_min_m: [f64; 3],
    pub bounds_max_m: [f64; 3],
    #[serde(default)]
    pub region_ids: Vec<String>,
    #[serde(default)]
    pub material_region_ids: Vec<String>,
}