runmat-meshing-core 0.6.0

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

use super::{StageEvidence, TopologyEntityId};

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CurveMesh {
    pub mesh_id: String,
    #[serde(default)]
    pub nodes: Vec<CurveMeshNode>,
    #[serde(default)]
    pub elements: Vec<CurveMeshElement>,
    pub evidence: StageEvidence,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CurveMeshNode {
    pub node_id: TopologyEntityId,
    pub source_edge_id: TopologyEntityId,
    #[serde(default)]
    pub source_vertex_id: Option<TopologyEntityId>,
    pub parameter: f64,
    pub coordinates_m: [f64; 3],
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CurveMeshElement {
    pub element_id: TopologyEntityId,
    pub source_edge_id: TopologyEntityId,
    pub node_ids: [TopologyEntityId; 2],
    pub length_m: f64,
}