--- a/src/fe_model/p2_local_model.rs Mon Dec 30 15:46:28 2024 -0500 +++ b/src/fe_model/p2_local_model.rs Mon Jan 06 20:29:25 2025 -0500 @@ -2,6 +2,7 @@ Second order polynomical (P2) models on real intervals and planar 2D simplices. */ +use serde::{Serialize, Deserialize}; use crate::types::*; use crate::loc::Loc; use crate::sets::{Set,NPolygon,SpannedHalfspace}; @@ -16,6 +17,11 @@ /// /// The type parameter `D` indicates the number of nodes. (Rust's const generics do not currently /// allow its automatic calculation from `N`.) +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(bound( + serialize = "[Loc<F, N>; D] : Serialize", + deserialize = "[Loc<F, N>; D] : for<'a> Deserialize<'a>", +))] pub struct Simplex<F : Float, const N : usize, const D : usize>(pub [Loc<F, N>; D]); /// A two-dimensional planar simplex pub type PlanarSimplex<F> = Simplex<F, 2, 3>; @@ -119,6 +125,15 @@ } /// A local second order polynomical model of dimension `N` with `E` edges +#[derive(Serialize, Deserialize, Debug, Clone)] +#[serde(bound( + serialize = "F : Serialize, + Loc<F, N> : Serialize, + Loc<F, E> : Serialize", + deserialize = "F : for<'a> Deserialize<'a>, + Loc<F, N> : for<'a> Deserialize<'a>, + Loc<F, E> : for<'a> Deserialize<'a>", +))] pub struct P2LocalModel<F : Num, const N : usize, const E : usize/*, const V : usize, const Q : usize*/> { a0 : F, a1 : Loc<F, N>,