From 035ba9cf8aa0d450094cc815636fb71fdde1b5ac Mon Sep 17 00:00:00 2001
From: Martin Genet <martin.genet@polytechnique.edu>
Date: Wed, 19 Jun 2019 13:10:48 +0200
Subject: [PATCH] Use dolfin::Array instead of double[]

---
 generated_image_expressions_cpp.py | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/generated_image_expressions_cpp.py b/generated_image_expressions_cpp.py
index d85cda4..57fd7f5 100644
--- a/generated_image_expressions_cpp.py
+++ b/generated_image_expressions_cpp.py
@@ -47,20 +47,19 @@ class MyExpr : public Expression
     unsigned int k_point;
     unsigned int image_n_points;
 
+    mutable Array<double>  X;
     mutable Array<double> UX; // MG20190521: these guys cannot be public for some reason
-    mutable Array<double> x;  // MG20190521: these guys cannot be public for some reason
+    mutable Array<double>  x; // MG20190521: these guys cannot be public for some reason
+    mutable Array<double> ux;
 
     double static_scaling;
-    mutable Array<double> X;
-    // double x[3];
-    double ux['''+str(im_dim)+'''];
     double m[1];
     double I[1];
 
     vtkSmartPointer<vtkXMLImageDataReader> reader;
     vtkSmartPointer<vtkImageData> image;
     vtkSmartPointer<vtkDataArray> array_image_scalars;
-    vtkSmartPointer<vtkImageData> image_probed;
+    // vtkSmartPointer<vtkImageData> image_probed; // MG20190607: does not work for some reason
     vtkSmartPointer<vtkDataArray> array_probed_mask;
     vtkSmartPointer<vtkDataArray> array_probed_disp;
     vtkSmartPointer<vtkImageInterpolator> interpolator;
@@ -75,13 +74,14 @@ public:
 
     MyExpr():
         Expression(),
+        X(3),
+        UX('''+str(im_dim)+'''),
+        x(3),
+        ux('''+str(im_dim)+'''),
         reader(vtkSmartPointer<vtkXMLImageDataReader>::New()),
         interpolator(vtkSmartPointer<vtkImageInterpolator>::New()),
         warp(vtkSmartPointer<vtkWarpVector>::New()),
-        probe(vtkSmartPointer<vtkProbeFilter>::New()),
-        X(3),
-        UX('''+str(im_dim)+'''),
-        x(3)
+        probe(vtkSmartPointer<vtkProbeFilter>::New())
     {
     }
 
@@ -153,6 +153,9 @@ public:
 
     void generate_image()
     {
+        // std::cout << "n_points = " << ugrid->GetNumberOfPoints() << std::endl;
+        // std::cout << "n_cells  = " << ugrid->GetNumberOfCells()  << std::endl;
+
         warp->SetInputData(ugrid);
         warp->Update();
 
@@ -174,8 +177,7 @@ public:
             else
             {
                 image->GetPoint(k_point, x.data());
-                // image->GetPoint(k_point, x);
-                array_probed_disp->GetTuple(k_point, ux);'''+('''
+                array_probed_disp->GetTuple(k_point, ux.data());'''+('''
                 X[0] = x[0] - ux[0];
                 X[1] = x[1] - ux[1];''')*(im_dim==2)+('''
                 X[0] = x[0] - ux[0];
-- 
GitLab