[Paraview] CoProcessing with Fortran and ParaView 3.98

Berk Geveci berk.geveci at kitware.com
Tue Mar 19 19:48:35 EDT 2013


You can simply delete this line:

Grid->SetNumberOfScalarComponents(2);

It is redundant given the following later:

field->SetNumberOfComponents(2);

You also need to #include <vtkSmartPointer.h>.

Best,
-berk



On Tue, Mar 19, 2013 at 2:31 PM, Pettey . Lucas <LPettey at drc.com> wrote:

> Hello everyone,
>
> I am trying to run a simple Fortran coprocessing example with a complex
> data type. I am following the example here:
>
>
> http://en.wikibooks.org/wiki/Parallel_Spectral_Numerical_Methods/Visualization_with_ParaView_CoProcessing#ParaView_CoProcessing_Resources
>
> I have written a basic Fortran code that outputs the data in binary,
> opened that in ParaView, output the coprocessing script and then written
> the adaptor following the example in the above link. My adaptor looks like:
>
> extern "C" void createcpimagedata_(int* nx, int* ny, int* nz)
> {
>   if (!ParaViewCoProcessing::GetCoProcessorData()) {
>     vtkGenericWarningMacro("Unable to access CoProcessorData.");
>     return;
>   }
>
>   // The simulation grid is a 2-dimensional topologically and geometrically
>   // regular grid. In VTK/ParaView, this is considered an image data set.
>   vtkImageData* Grid = vtkImageData::New();
>
>   // assuming dimZ == 1 for now
>   Grid->SetDimensions(*nx, *ny, *nz);
>   Grid->SetNumberOfScalarComponents(2);
>
>   // Setting the Origin and Spacing are also options.
>
>   // Name should be consistent between here, Fortran and Python client
> script.
>
> ParaViewCoProcessing::GetCoProcessorData()->GetInputDescriptionByName("input")->SetGrid(Grid);
> }
>
> // Add field(s) to the data container.
> // Separate from above because this will be dynamic, grid is static.
> // Might be an issue, VTK probably assumes row major, but
> // omeg probably passed column major...
> // by hand name mangling for fortran
> extern "C" void addfield_(double* scalars, char* name)
> {
>   vtkCPInputDataDescription *idd =
> ParaViewCoProcessing::GetCoProcessorData()->GetInputDescriptionByName("input");
>
>   vtkImageData* Image = vtkImageData::SafeDownCast(idd->GetGrid());
>
>   if (!Image) {
>     vtkGenericWarningMacro("No adaptor grid to attach field data to.");
>     return;
>   }
>
>
>   // field name must match that in the fortran code.
>   if (idd->IsFieldNeeded(name)) {
>     vtkSmartPointer<vtkDoubleArray> field =
> vtkSmartPointer<vtkDoubleArray>::New();
>     field->SetNumberOfComponents(2);
>     field->SetName(name);
>     field->SetArray(scalars, 2* Image->GetNumberOfPoints(), 1);
>     Image->GetPointData()->AddArray(field);
>
>   }
> }
>
> I am getting some errors from the Makefile generated by Cmake:
>
> /Users/lucaspettey/codes/BEC/coprocVTK.cxx:40:38: error: too few arguments
> to function call, expected 2, have 1
>   Grid->SetNumberOfScalarComponents(2);
>   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^
> /Users/lucaspettey/ParaView-git/ParaView/VTK/Common/DataModel/vtkImageData.h:298:3:
> note: 'SetNumberOfScalarComponents' declared here
>   static void SetNumberOfScalarComponents( int n, vtkInformation*
> meta_data);
>   ^
> /Users/lucaspettey/codes/BEC/coprocVTK.cxx:67:5: error: unknown type name
> 'vtkSmartPointer'; did you mean 'vtkSmartPointerBase'?
>     vtkSmartPointer<vtkDoubleArray> field =
> vtkSmartPointer<vtkDoubleArray>::New();
>     ^~~~~~~~~~~~~~~
>     vtkSmartPointerBase
> /Users/lucaspettey/ParaView-git/ParaView/VTK/Common/Core/vtkOStreamWrapper.h:36:7:
> note: 'vtkSmartPointerBase' declared here
> class vtkSmartPointerBase;
>       ^
> /Users/lucaspettey/codes/BEC/coprocVTK.cxx:67:20: error: expected
> unqualified-id
>     vtkSmartPointer<vtkDoubleArray> field =
> vtkSmartPointer<vtkDoubleArray>::New();
>                    ^
> /Users/lucaspettey/codes/BEC/coprocVTK.cxx:68:5: error: use of undeclared
> identifier 'field'
>     field->SetNumberOfComponents(2);
>     ^
> /Users/lucaspettey/codes/BEC/coprocVTK.cxx:69:5: error: use of undeclared
> identifier 'field'
>     field->SetName(name);
>     ^
> /Users/lucaspettey/codes/BEC/coprocVTK.cxx:70:5: error: use of undeclared
> identifier 'field'
>     field->SetArray(scalars, 2* Image->GetNumberOfPoints(), 1);
>     ^
> /Users/lucaspettey/codes/BEC/coprocVTK.cxx:71:37: error: use of undeclared
> identifier 'field'
>     Image->GetPointData()->AddArray(field);
>                                     ^
>
> Any help is appreciated.
>
> Thanks,
> Lucas
>
> ________________________________
> This electronic message transmission and any attachments that accompany it
> contain information from DRC® (Dynamics Research Corporation) or its
> subsidiaries, or the intended recipient, which is privileged, proprietary,
> business confidential, or otherwise protected from disclosure and is the
> exclusive property of DRC and/or the intended recipient. The information in
> this email is solely intended for the use of the individual or entity that
> is the intended recipient. If you are not the intended recipient, any use,
> dissemination, distribution, retention, or copying of this communication,
> attachments, or substance is prohibited. If you have received this
> electronic transmission in error, please immediately reply to the author
> via email that you received the message by mistake and also promptly and
> permanently delete this message and all copies of this email and any
> attachments. We thank you for your assistance and apologize for any
> inconvenience.
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at:
> http://paraview.org/Wiki/ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://www.paraview.org/mailman/listinfo/paraview
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20130319/f831a408/attachment-0001.htm>


More information about the ParaView mailing list