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