src/forward_model/sensor_grid.rs

changeset 72
e9a460a0e638
parent 61
4f468d35fa29
--- a/src/forward_model/sensor_grid.rs	Fri May 15 14:40:02 2026 -0500
+++ b/src/forward_model/sensor_grid.rs	Sun Jul 19 07:34:39 2026 +0200
@@ -118,14 +118,7 @@
     ) -> Self {
         let base_sensor = Convolution(sensor.clone(), spread.clone());
         let bt = BT::new(domain, depth);
-        let mut sensorgrid = SensorGrid {
-            domain,
-            sensor_count,
-            sensor,
-            spread,
-            base_sensor,
-            bt,
-        };
+        let mut sensorgrid = SensorGrid { domain, sensor_count, sensor, spread, base_sensor, bt };
 
         for (x, id) in sensorgrid.grid().into_iter().zip(0usize..) {
             let s = sensorgrid.shifted_sensor(x);
@@ -173,7 +166,7 @@
         });
         w.iter()
             .zip(d.iter())
-            .map(|(&wi, &di)| (wi / di).ceil())
+            .map(|(&wi, &di)| (wi / di).ceil() + F::ONE)
             .reduce(F::mul)
             .unwrap()
     }
@@ -349,14 +342,15 @@
     for<'b> <Convolution<S, P> as DifferentiableMapping<Loc<N, F>>>::Differential<'b>:
         Lipschitz<L2, FloatType = F>,
 {
-    fn basic_curvature_bound_components(&self) -> (DynResult<F>, DynResult<F>) {
+    fn basic_curvature_bound_components(&self) -> (DynResult<F>, DynResult<F>, DynResult<F>) {
         let n_ψ = self.max_overlapping();
         let ψ_diff_lip = self.base_sensor.diff_ref().lipschitz_factor(L2);
         let ψ_lip = self.base_sensor.lipschitz_factor(L2);
-        let ℓ_F0 = ψ_diff_lip.map(|l| (2.0 * n_ψ).sqrt() * l);
+        let ℓ_gradv_0 = ψ_diff_lip.map(|l| n_ψ * l);
         let Θ2 = ψ_lip.map(|l| 4.0 * n_ψ * l.powi(2));
+        let ℓ_F = Ok(0.0); // convex problem
 
-        (ℓ_F0, Θ2)
+        (ℓ_F, ℓ_gradv_0, Θ2)
     }
 }
 

mercurial