src/fe_model/p2_local_model.rs

branch
dev
changeset 86
d5b0e496b72f
parent 63
f7b87d84864d
--- 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>,

mercurial