<div dir="ltr"><span style="font-family:arial,sans-serif;font-size:13px">Hi,</span><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">Using the C++ VTK library for writing an .vtr file, I'm able to create the mesh, but not assign any skalars/vectors to the grid points. This is more or less given in the example file RGrid.cxx.</div>
<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">But how do I assign values at the mesh-points?</div><div style="font-family:arial,sans-serif;font-size:13px">
<br></div><div style="font-family:arial,sans-serif;font-size:13px">Write the mesh:</div><div style="font-family:arial,sans-serif;font-size:13px"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>#include <stdio.h></div>
<div>#include <vtkRectilinearGrid.h></div><div>#include <vtkXMLRectilinearGridWriter.h></div><div>#include <vtkDoubleArray.h></div><div>#include <vtkIntArray.h></div><div>#include <vtkSmartPointer.h></div>
<div><br></div><div>int main(){</div><div>Â int nx = 3, ny = 3, nz = 3;</div><div><br></div><div>Â // coordinates</div><div>Â vtkDoubleArray *xCoords = vtkDoubleArray::New();</div><div>Â for (int i=0; i<nx; i++) xCoords->InsertNextValue(i);</div>
<div>Â vtkDoubleArray *yCoords = vtkDoubleArray::New();</div><div>Â for (int i=0; i<ny; i++) yCoords->InsertNextValue(i);</div><div>Â vtkDoubleArray *zCoords = vtkDoubleArray::New();</div><div>Â for (int i=0; i<nz; i++) zCoords->InsertNextValue(i);</div>
<div><br></div><div>Â // The coordinates are assigned to the rectilinear grid.</div><div>Â vtkRectilinearGrid *rgrid = vtkRectilinearGrid::New();</div><div>Â rgrid->SetDimensions(nx,ny,nz);</div><div>Â rgrid->SetXCoordinates(xCoords);</div>
<div>Â rgrid->SetYCoordinates(yCoords);</div><div>Â rgrid->SetZCoordinates(zCoords);</div><div><br></div><div>Â /* Write to file */</div><div>Â vtkSmartPointer<vtkXMLRectilinearGridWriter></div><div>Â Â writer = vtkSmartPointer<vtkXMLRectilinearGridWriter>::New();</div>
<div>Â writer->SetFileName("test.vtr");</div><div><br></div><div>#if VTK_MAJOR_VERSION <= 5</div><div>Â writer->SetInput(rgrid);</div><div>#else</div><div>Â writer->SetInputData(rgrid);</div><div>#endif</div>
<div>Â writer->Write();</div><div><br></div><div>Â /* clean up */</div><div>Â xCoords->Delete();</div><div>Â yCoords->Delete();</div><div>Â zCoords->Delete();</div><div>Â rgrid->Delete();</div><div><br></div>
<div>Â printf("DONE printing\n");</div><div>}</div><div><br></div></blockquote>For setting values at the mesh-points, I assumed something like:</div><div style="font-family:arial,sans-serif;font-size:13px"><div>
  vtkIntArray* temperature = vtkIntArray::New();</div><div>  temperature->SetName("Temperature");</div><div>  temperature->SetNumberOfComponents(1);</div><div>  temperature->SetNumberOfTuples(nx*ny*nz);</div>
<div>Â Â for(int i=0;i<mesh.nn;i++){</div><div>Â Â Â Â temperature->SetValue(i,10); // set everything to 10</div><div>Â Â }</div></div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">
  rgrid->GetPointData()->SetScalars(temperature);</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">But that doesn't work. As expected, when looking at <a href="http://www.vtk.org/doc/nightly/html/classvtkRectilinearGrid.html" target="_blank">http://www.vtk.org/doc/nightly/html/classvtkRectilinearGrid.html</a></div>
<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">So how do I set values/vectors for all the points in the mesh.</div><div style="font-family:arial,sans-serif;font-size:13px">
<br></div><div style="font-family:arial,sans-serif;font-size:13px">Regards,</div><div style="font-family:arial,sans-serif;font-size:13px">Paw</div></div>