<p><b>cahrens@lanl.gov</b> 2010-09-21 19:07:51 -0600 (Tue, 21 Sep 2010)</p><p>Initial version of MPAS reader which can view data in either sphere or latlon view and either single or multilayer view.  After more testing, I plan to send to Kitware for incorporation into ParaView.  It will be an update to the MPAS reader that is already in there that just shows sphere view, single layer.<br>
</p><hr noshade><pre><font color="gray">Added: branches/ocean_projects/graphics/paraview/reader/readers.xml
===================================================================
--- branches/ocean_projects/graphics/paraview/reader/readers.xml                                (rev 0)
+++ branches/ocean_projects/graphics/paraview/reader/readers.xml        2010-09-22 01:07:51 UTC (rev 508)
@@ -0,0 +1,6370 @@
+&lt;ServerManagerConfiguration&gt;
+
+  &lt;ProxyGroup name=&quot;internal_sources&quot;&gt;
+   &lt;SourceProxy name=&quot;AVSucdReader&quot; 
+                class=&quot;vtkAVSucdReader&quot;
+                label=&quot;AVS UCD Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read a dataset in AVS UCD format.&quot;
+       long_help=&quot;Read binary or ASCII files stored in AVS UCD format.&quot;&gt;
+       The AVS UCD reader reads binary or ASCII files stored in AVS UCD format.
+       The default file extension is .inp. The output of this reader is
+       unstructured grid.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the AVS UCD reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;CellArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;CellArrayStatus&quot;
+        command=&quot;SetCellArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;CellArrayInfo&quot;
+        label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property contains a list of the cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;PointArrayInfo&quot;
+        label=&quot;Point Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property contains a list of the point-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+   &lt;!-- End AVSucdReader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;legacyreader&quot; 
+                class=&quot;vtkPDataSetReader&quot;
+                label=&quot;Legacy VTK Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read legacy VTK files.&quot;
+       long_help=&quot;Read files stored in VTK's legacy file format.&quot;&gt;
+       The Legacy VTK reader loads files stored in VTK's legacy file format. The expected file extension is .vtk. The type of the dataset may be structured grid, uniform rectilinear grid (image/volume), non-uniform rectiinear grid, unstructured grid, or polygonal.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the Legacy VTK reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+   &lt;!-- End legacyreader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;XMLPolyDataReaderCore&quot; 
+                class=&quot;vtkXMLPolyDataReader&quot;
+                label=&quot;XML PolyData Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read VTK XML polydata files.&quot;
+       long_help=&quot;Read serial VTK XML polydata files.&quot;&gt;
+       The XML Polydata reader reads the VTK XML polydata file format. The standard extension is .vtp.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the VTK XML polygonal dataset reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty 
+        name=&quot;TimestepValues&quot;
+        repeatable=&quot;1&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;CellArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;CellArrayStatus&quot;
+        command=&quot;SetCellArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;CellArrayInfo&quot;
+        label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;PointArrayInfo&quot;
+        label=&quot;Point Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which point-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+   &lt;!-- End XMLPolyDataReaderCore --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;XMLUnstructuredGridReaderCore&quot; 
+                class=&quot;vtkXMLUnstructuredGridReader&quot;
+                label=&quot;XML Unstructured Grid reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read VTK XML unstructured grid data files.&quot;
+       long_help=&quot;Read serial VTK XML unstructured grid data files.&quot;&gt;
+       The XML Unstructured Grid reader reads the VTK XML unstructured grid data file format. The standard extension is .vtu.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the VTK XML unstructured grid reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty 
+        name=&quot;TimestepValues&quot;
+        repeatable=&quot;1&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;CellArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;CellArrayStatus&quot;
+        command=&quot;SetCellArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;CellArrayInfo&quot;
+        label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;PointArrayInfo&quot;
+        label=&quot;Point Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which point-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+   &lt;!-- End XMLUnstructuredGridReaderCore --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;XMLImageDataReaderCore&quot; 
+                class=&quot;vtkXMLImageDataReader&quot;
+                label=&quot;XML Image Data Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read VTK XML image data files.&quot;
+       long_help=&quot;Read serial VTK XML image data files.&quot;&gt;
+       The XML Image Data reader reads the VTK XML image data file format. The standard extension is .vti.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the VTK XML uniform rectilinear (image/volume) data reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty 
+        name=&quot;TimestepValues&quot;
+        repeatable=&quot;1&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;CellArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;CellArrayStatus&quot;
+        command=&quot;SetCellArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;CellArrayInfo&quot;
+        label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;PointArrayInfo&quot;
+        label=&quot;Point Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which point-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+   &lt;!-- End XMLImageDataReaderCore --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;XMLStructuredGridReaderCore&quot; 
+                class=&quot;vtkXMLStructuredGridReader&quot;
+                label=&quot;XML Structured Grid Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read VTK XML structured grid data files.&quot;
+       long_help=&quot;Read serial VTK XML structured grid data files.&quot;&gt;
+       The XML Structured Grid reader reads the VTK XML structured grid data file format. The standard extension is .vts.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the VTK XML structured grid reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty 
+        name=&quot;TimestepValues&quot;
+        repeatable=&quot;1&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;CellArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;CellArrayStatus&quot;
+        command=&quot;SetCellArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;CellArrayInfo&quot;
+        label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;PointArrayInfo&quot;
+        label=&quot;Point Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which point-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+   &lt;!-- End XMLStructuredGridReaderCore --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;XMLRectilinearGridReaderCore&quot; 
+                class=&quot;vtkXMLRectilinearGridReader&quot;
+                label=&quot;XML Rectilinear Grid Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read VTK XML rectilinear grid data files.&quot;
+       long_help=&quot;Read serial VTK XML rectilinear grid data files.&quot;&gt;
+       The XML Rectilinear Grid reader reads the VTK XML rectilinear grid data file format. The standard extension is .vtr.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the VTK XML non-uniform rectilinear grid reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty 
+        name=&quot;TimestepValues&quot;
+        repeatable=&quot;1&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;CellArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;CellArrayStatus&quot;
+        command=&quot;SetCellArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;CellArrayInfo&quot;
+        label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;PointArrayInfo&quot;
+        label=&quot;Point Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which point-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+   &lt;!-- End XMLRectilinearGridReaderCore --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;XMLPPolyDataReaderCore&quot; 
+                class=&quot;vtkXMLPPolyDataReader&quot;
+                label=&quot;XML Partitioned Polydata Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read partitioned VTK XML polydata files.&quot;
+       long_help=&quot;Read the summary file and the associated VTK XML polydata files.&quot;&gt;
+       The XML Partitioned Polydata reader reads the partitioned VTK polydata file format. It reads the partitioned format's summary file and then the associated VTK XML polydata files. The expected file extension is .pvtp.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the partitioned VTK XML polygonal dataset reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;CellArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;CellArrayStatus&quot;
+        command=&quot;SetCellArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;CellArrayInfo&quot;
+        label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;PointArrayInfo&quot;
+        label=&quot;Point Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which point-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+   &lt;!-- End XMLPPolyDataReaderCore --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;XMLPUnstructuredGridReaderCore&quot; 
+                class=&quot;vtkXMLPUnstructuredGridReader&quot;
+                label=&quot;XML Partitioned Unstructured Grid Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read partitioned VTK XML unstructured grid files.&quot;
+       long_help=&quot;Read the summary file and the associated VTK XML unstructured grid files.&quot;&gt;
+       The XML Partitioned Unstructured Grid reader reads the partitioned VTK unstructured grid data file format. It reads the partitioned format's summary file and then the associated VTK XML unstructured grid data files. The expected file extension is .pvtu.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the partitioned VTK XML unstructured grid reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;CellArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;CellArrayStatus&quot;
+        command=&quot;SetCellArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;CellArrayInfo&quot;
+        label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;PointArrayInfo&quot;
+        label=&quot;Point Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which point-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+   &lt;!-- End XMLPUnstructuredGridReaderCore --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;XMLPImageDataReaderCore&quot; 
+                class=&quot;vtkXMLPImageDataReader&quot;
+                label=&quot;XML Partitioned Image Data Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read partitioned VTK XML image data files.&quot;
+       long_help=&quot;Read the summary file and the associated VTK XML image data files.&quot;&gt;
+       The XML Partitioned Image Data reader reads the partitioned VTK image data file format. It reads the partitioned format's summary file and then the associated VTK XML image data files. The expected file extension is .pvti.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the partitioned VTK XML uniform rectilinear grid (image/volume) reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;CellArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;CellArrayStatus&quot;
+        command=&quot;SetCellArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;CellArrayInfo&quot;
+        label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This propert lists which cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;PointArrayInfo&quot;
+        label=&quot;Point Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which point-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+   &lt;!-- End XMLPImageDataReaderCore --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;XMLPStructuredGridReaderCore&quot; 
+                class=&quot;vtkXMLPStructuredGridReader&quot;
+                label=&quot;XML Partitioned Structured Grid Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read partitioned VTK XML structured grid files.&quot;
+       long_help=&quot;Read the summary file and the associated VTK XML structured grid files.&quot;&gt;
+       The XML Partitioned Structured Grid reader reads the partitioned VTK structured grid data file format. It reads the partitioned format's summary file and then the associated VTK XML structured grid data files. The expected file extension is .pvts.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the partitioned VTK XML structured grid reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;CellArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;CellArrayStatus&quot;
+        command=&quot;SetCellArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;CellArrayInfo&quot;
+        label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;PointArrayInfo&quot;
+        label=&quot;Point Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which point-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+   &lt;!-- End XMLPStructuredGridReaderCore --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;XMLPRectilinearGridReaderCore&quot; 
+                class=&quot;vtkXMLPRectilinearGridReader&quot;
+                label=&quot;XML Partitioned Rectilinear Grid Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read partitioned VTK XML rectilinear grid files.&quot;
+       long_help=&quot;Read the summary file and the associated VTK XML rectilinear grid files.&quot;&gt;
+       The XML Partitioned Rectilinear Grid reader reads the partitioned VTK rectilinear grid file format. It reads the partitioned format's summary file and then the associated VTK XML rectilinear grid files. The expected file extension is .pvtr.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the partitioned VTK XML non-uniform rectilinear grid reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;CellArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;CellArrayStatus&quot;
+        command=&quot;SetCellArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;CellArrayInfo&quot;
+        label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;PointArrayInfo&quot;
+        label=&quot;Point Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which point-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+   &lt;!-- End XMLPRectilinearGridReaderCore --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;stlreadercore&quot; class=&quot;vtkSTLReader&quot; label=&quot;STL Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read STL files.&quot;
+       long_help=&quot;Read ASCII or binary stereo lithography (STL) files.&quot;&gt;
+       The STL reader reads ASCII or binary stereo lithography (STL) files. The expected file extension is .stl. The output of this reader is a polygonal dataset.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the STL reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+      &lt;IntVectorProperty name=&quot;ScalarTags&quot;
+        command=&quot;SetScalarTags&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+        &lt;Documentation&gt;
+          When set to true, the reader will include cell data describing which solid a cell belongs to.
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+   &lt;!-- End stlreader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;CSVReaderCore&quot; class=&quot;vtkDelimitedTextReader&quot; label=&quot;CSV Reader&quot;&gt;
+      &lt;Documentation
+        short_help=&quot;Read a comma-separated values file.&quot;
+        long_help=&quot;Read a comma-separated values file into a 1D rectilinear grid.&quot;&gt;
+        The CSV reader reads a comma-separated values file into a 1D rectilinear
+        grid. If the file was saved using the CSVWriter, then the rectilinear
+        grid's points and point data can be restored as well as the cell data.
+        Otherwise all the data in the CSV file is treated as cell data. The
+        default file extension is .csv.
+      &lt;/Documentation&gt;
+      &lt;StringVectorProperty name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot; &gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the CSV (Command Separated Values) reader.
+        &lt;/Documentation&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;IntVectorProperty name=&quot;DetectNumericColumns&quot;
+        command=&quot;SetDetectNumericColumns&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+        &lt;Documentation&gt;
+          When set to true, the reader will detect numeric columns and create
+          vtkDoubleArray or vtkIntArray for those instead of vtkStringArray.
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;IntVectorProperty name=&quot;UseStringDelimiter&quot;
+        command=&quot;SetUseStringDelimiter&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+        &lt;Documentation&gt;
+          This property indicates whether to use the string delimiter.
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;IntVectorProperty name=&quot;HaveHeaders&quot;
+        command=&quot;SetHaveHeaders&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+        &lt;Documentation&gt;
+          If the value of this property is 1, treat the first line of the file as headers.
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;StringVectorProperty name=&quot;FieldDelimiterCharacters&quot;
+        command=&quot;SetFieldDelimiterCharacters&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;,&quot;&gt;
+        &lt;Documentation&gt;
+          This property lists the characters that may be used to separate fields.  For
+          example, a value of &quot;,&quot; indicates a comma-separated value file.  A
+          value of &quot;.:;&quot; indicates that columns may be separated by a
+          period, colon or semicolon.  The order of the characters in the text
+          string does not matter.
+        &lt;/Documentation&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;!-- End of CSVReaderCore --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;XMLMultiBlockDataReaderCore&quot; 
+                class=&quot;vtkXMLMultiBlockDataReader&quot;
+                label=&quot;XML Multi-Block Data reader&quot;&gt;
+     &lt;Documentation&gt;
+        Internal proxy used by XMLMultiBlockDataWriter.
+     &lt;/Documentation&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the VTK multi-block reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+   &lt;!-- End MultiBlockDataReader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;XMLHierarchicalBoxDataReaderCore&quot; 
+                class=&quot;vtkXMLHierarchicalBoxDataReader&quot;
+                label=&quot;XML Hierarchical Box Data reader&quot;&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the VTK hierarchical box data reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+   &lt;!-- End HierarchicalBoxDataReader --&gt;
+   &lt;/SourceProxy&gt;
+
+    &lt;SourceProxy name=&quot;SLACParticleReaderCore&quot;
+                 class=&quot;vtkSLACParticleReader&quot;
+                 label=&quot;SLAC Particle Data Reader&quot;&gt;
+      &lt;Documentation&gt;
+        The SLAC Particle data reader.
+      &lt;/Documentation&gt;
+
+      &lt;StringVectorProperty name=&quot;FileName&quot;
+                            command=&quot;SetFileName&quot;
+                            animateable=&quot;0&quot;
+                            number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot; /&gt;
+        &lt;Documentation&gt;
+          The name of the file to load.
+        &lt;/Documentation&gt;
+      &lt;/StringVectorProperty&gt;
+    &lt;/SourceProxy&gt; &lt;!-- SLACParticleReaderCore --&gt;
+
+
+    &lt;SourceProxy name=&quot;ParticleReaderCore&quot;
+      class=&quot;vtkParticleReader&quot;
+      label=&quot;VTK Particle Reader&quot;&gt;
+      &lt;Documentation&gt;
+        Core for ParticleReader.
+      &lt;/Documentation&gt;
+
+      &lt;StringVectorProperty name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot; /&gt;
+        &lt;Documentation&gt;
+          The name of the file to load.
+        &lt;/Documentation&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;IntVectorProperty name=&quot;ByteOrder&quot;
+        command=&quot;SetDataByteOrder&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot;&gt;
+        &lt;Documentation&gt;
+        Set/Get the byte ordering of the file you are trying to read in.
+        &lt;/Documentation&gt;
+        &lt;EnumerationDomain name=&quot;enum&quot;&gt;
+          &lt;Entry text=&quot;BigEndian&quot; value=&quot;0&quot; /&gt;
+          &lt;Entry text=&quot;LittleEndian&quot; value=&quot;1&quot; /&gt;
+        &lt;/EnumerationDomain&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;IntVectorProperty name=&quot;HasScalar&quot;
+        command=&quot;SetHasScalar&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot;&gt;
+        &lt;Documentation&gt;
+          Default: 1. If 1 then each particle has a value associated with it.
+        &lt;/Documentation&gt;
+        &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;IntVectorProperty name=&quot;FileType&quot;
+        command=&quot;SetFileType&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot;&gt;
+        &lt;Documentation&gt;
+          Set the file type.  The options are:
+          - Unknown (0) (default) the reader will attempt to determine the file
+            type. If this fails then you should set the file type yourself.
+          - Text (1) the file type is text.
+          - Binary (2) the file type is binary.
+        &lt;/Documentation&gt;
+        &lt;EnumerationDomain name=&quot;enum&quot;&gt;
+          &lt;Entry text=&quot;Unknown&quot; value=&quot;0&quot; /&gt;
+          &lt;Entry text=&quot;Text&quot; value=&quot;1&quot; /&gt;
+          &lt;Entry text=&quot;Binary&quot; value=&quot;2&quot; /&gt;
+        &lt;/EnumerationDomain&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;IntVectorProperty name=&quot;DataType&quot;
+        command=&quot;SetDataType&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;10&quot;&gt;
+        &lt;Documentation&gt;
+          Get/Set the data type.  The options are:
+          - Float (10) (default) single precision floating point.
+          - Double (11) double precision floating point.
+        &lt;/Documentation&gt;
+        &lt;EnumerationDomain name=&quot;enum&quot;&gt;
+          &lt;Entry text=&quot;Float&quot; value=&quot;10&quot; /&gt;
+          &lt;Entry text=&quot;Double&quot; value=&quot;11&quot; /&gt;
+        &lt;/EnumerationDomain&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;!-- ParticleReaderCore --&gt;
+    &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;ExodusIIReaderCore&quot; 
+                class=&quot;vtkPExodusIIReader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read Exodus II files.&quot;
+       long_help=&quot;Read an Exodus II file to produce an unstructured grid.&quot;&gt;
+        The Exodus reader loads Exodus II files and produces an unstructured grid output. The default file extensions are .g, .e, .ex2, .ex2v2, .exo, .gen, .exoII, .exii, .0, .00, .000, and .0000 .
+     &lt;/Documentation&gt;
+     
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;
+        animateable=&quot;0&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the Exodus reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;FilePrefixInfo&quot;
+        command=&quot;GetFilePrefix&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;SimpleStringInformationHelper/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FilePrefix&quot;
+        command=&quot;SetFilePrefix&quot;
+        number_of_elements=&quot;1&quot;
+        animateable=&quot;0&quot;
+        information_property=&quot;FilePrefixInfo&quot; &gt;
+       &lt;FileListDomain name=&quot;default_value&quot; optional=&quot;1&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;FilePrefixInfo&quot; function=&quot;Prefix&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/FileListDomain&gt;
+        &lt;Documentation&gt;
+          This property specifies the file root used with the file pattern to format a file name. (See the File Pattern property.)
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;FilePatternInfo&quot;
+        command=&quot;GetFilePattern&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;SimpleStringInformationHelper/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FilePattern&quot;
+        command=&quot;SetFilePattern&quot;
+        number_of_elements=&quot;1&quot;
+        animateable=&quot;0&quot;
+        information_property=&quot;FilePatternInfo&quot; &gt;
+       &lt;FileListDomain name=&quot;default_value&quot; optional=&quot;1&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;FilePatternInfo&quot; function=&quot;Pattern&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/FileListDomain&gt;
+       &lt;Documentation&gt;
+         This property contains a text string specifying the pattern used to load files. There are two parts to it: the prefix (%s) and the file number (%i). The format used is the same as that used for printf.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;FileRangeInfo&quot;
+        command=&quot;GetFileRange&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;SimpleIntInformationHelper/&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;FileRange&quot;
+        command=&quot;SetFileRange&quot;
+        number_of_elements=&quot;2&quot; 
+        default_values=&quot;-1 -1&quot;
+        animateable=&quot;0&quot;
+        information_property=&quot;FileRangeInfo&quot; &gt;
+       &lt;IntRangeDomain name=&quot;range&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;FileRangeInfo&quot; function=&quot;Range&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/IntRangeDomain&gt;
+       &lt;Documentation&gt;
+         This property controls the indices of the first and last files to be read.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;XMLFileNameInfo&quot;
+        command=&quot;GetXMLFileName&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;SimpleStringInformationHelper/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;XMLFileName&quot;
+        command=&quot;SetXMLFileName&quot;
+        number_of_elements=&quot;1&quot;
+        animateable=&quot;0&quot;
+        label=&quot;XML File Name&quot;&gt;
+       &lt;FileListDomain name=&quot;default_value&quot; optional=&quot;1&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;XMLFileNameInfo&quot; function=&quot;XMLFileName&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/FileListDomain&gt;
+       &lt;Documentation&gt;
+         This property specifies the name of an XML file containing part and material descriptions and a mapping to element blocks.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty name=&quot;HasModeShapes&quot;
+                        command=&quot;SetHasModeShapes&quot;
+                        number_of_elements=&quot;1&quot;
+                        default_values=&quot;0&quot;&gt;
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         Some simulations overload the Exodus time steps to represent mode
+         shapes.  In this case, it does not make sense to iterate over the
+         &quot;time steps&quot;, because they are not meant to be played in order.
+         Rather, each represents the vibration at a different &quot;mode.&quot;
+         Setting the value of this property to 1 changes the semantics of the reader to not
+         report the time steps to downstream filters.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty name=&quot;AnimateVibrations&quot;
+                        command=&quot;SetAnimateModeShapes&quot;
+                        number_of_elements=&quot;1&quot;
+                        default_values=&quot;1&quot;
+                        animateable=&quot;0&quot;
+                        label=&quot;Animate Vibrations&quot;&gt;
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         If this flag is on and HasModeShapes is also on, then this reader
+         will report a continuous time range [0,1] and animate the
+         displacements in a periodic sinusoid.  If this flag is off and
+         HasModeShapes is on, this reader ignores time.  This flag has no
+         effect if HasModeShapes is off.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;!-- The following two properties magically send time information --&gt;
+     &lt;!-- to the animation panel.  Usually you only need one (the former --&gt;
+     &lt;!-- for discrete time, the latter for continuous time), but changing --&gt;
+     &lt;!-- the HasModeShapes ivar switches between discrete and continuous --&gt;
+     &lt;!-- time. --&gt;
+     &lt;DoubleVectorProperty 
+         name=&quot;TimestepValues&quot; 
+         repeatable=&quot;1&quot;
+         information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+     &lt;/DoubleVectorProperty&gt;
+     &lt;DoubleVectorProperty name=&quot;TimeRange&quot; information_only=&quot;1&quot;&gt;
+       &lt;TimeRangeInformationHelper/&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;IntVectorProperty name=&quot;ModeShape&quot;
+                        command=&quot;SetModeShape&quot;
+                        number_of_elements=&quot;1&quot;
+                        default_values=&quot;1&quot;
+                        information_property=&quot;TimestepValues&quot;&gt;
+       &lt;IntRangeDomain name=&quot;range&quot;&gt;
+         &lt;RequiredProperties&gt;
+           &lt;Property name=&quot;TimeStepRangeInfo&quot; function=&quot;Range&quot;/&gt;
+         &lt;/RequiredProperties&gt;
+       &lt;/IntRangeDomain&gt;
+       &lt;Documentation&gt;
+         Specify the current mode shape when HasModeShapes in on.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;Property name=&quot;Refresh&quot;
+               command=&quot;UpdateTimeInformation&quot;
+               is_internal=&quot;1&quot;&gt;
+       &lt;Documentation&gt;
+          Read in more time information if its available. Useful while running a simulation.
+       &lt;/Documentation&gt;
+     &lt;/Property&gt;
+     
+     &lt;StringVectorProperty 
+        name=&quot;EdgeBlocksInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;EdgeBlock&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty
+        name=&quot;EdgeBlocks&quot;
+        command=&quot;SetEdgeBlockArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;EdgeBlockArrayInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;EdgeBlocksInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty 
+        name=&quot;FaceBlocksInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;FaceBlock&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty
+        name=&quot;FaceBlocks&quot;
+        command=&quot;SetFaceBlockArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;FaceBlockArrayInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;FaceBlocksInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty name=&quot;SILUpdateStamp&quot;
+        command=&quot;GetSILUpdateStamp&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;SimpleIntInformationHelper /&gt;
+        &lt;Documentation&gt;
+          Information property indicating the update stamp of the SIL. Every
+          time the SIL is rebuild, this time stamp is changed.
+        &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;ElementBlocksInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;GlobalResult&quot;/&gt;
+        &lt;SILInformationHelper
+          timestamp_command=&quot;GetSILUpdateStamp&quot;
+          subtree=&quot;Blocks&quot;&gt;
+        &lt;/SILInformationHelper&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty
+        name=&quot;ElementBlocks&quot;
+        command=&quot;SetElementBlockArrayStatus&quot;
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; &gt;
+       &lt;SILDomain name=&quot;array_list&quot; subtree=&quot;Blocks&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;ElementBlocksInfo&quot; function=&quot;ArrayList&quot; /&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/SILDomain&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;GlobalVariablesInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;GlobalResult&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;GlobalVariables&quot;
+        command=&quot;SetGlobalResultArrayStatus&quot;
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;GlobalVariablesInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;GlobalVariablesInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty 
+        name=&quot;PointVariablesInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;PointResult&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointVariables&quot;
+        command=&quot;SetPointResultArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;PointVariablesInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointVariablesInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty 
+        name=&quot;EdgeVariablesInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;EdgeResult&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;EdgeVariables&quot;
+        command=&quot;SetEdgeResultArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;EdgeVariablesInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;EdgeVariablesInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty 
+        name=&quot;FaceVariablesInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;FaceResult&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FaceVariables&quot;
+        command=&quot;SetFaceResultArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;FaceVariablesInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;FaceVariablesInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty 
+        name=&quot;ElementVariablesInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;ElementResult&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;ElementVariables&quot;
+        command=&quot;SetElementResultArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;ElementVariablesInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;ElementVariablesInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+      
+     &lt;StringVectorProperty 
+        name=&quot;NodeMapInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;NodeMap&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;NodeMapArrayStatus&quot;
+        command=&quot;SetNodeMapArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;NodeMapInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;NodeMapInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty 
+        name=&quot;EdgeMapInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;EdgeMap&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;EdgeMapArrayStatus&quot;
+        command=&quot;SetEdgeMapArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;EdgeMapInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;EdgeMapInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty 
+        name=&quot;FaceMapInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;FaceMap&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FaceMapArrayStatus&quot;
+        command=&quot;SetFaceMapArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;FaceMapInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;FaceMapInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty 
+        name=&quot;ElementMapInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;ElementMap&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;ElementMapArrayStatus&quot;
+        command=&quot;SetElementMapArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;ElementMapInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;ElementMapInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+      
+     &lt;StringVectorProperty 
+        name=&quot;NodeSetInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;NodeSet&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;NodeSetArrayStatus&quot;
+        command=&quot;SetNodeSetArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;NodeSetInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;NodeSetInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty 
+        name=&quot;SideSetInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;SideSet&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;SideSetArrayStatus&quot;
+        command=&quot;SetSideSetArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;SideSetInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;SideSetInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty 
+        name=&quot;FaceSetInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;FaceSet&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FaceSetArrayStatus&quot;
+        command=&quot;SetFaceSetArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;FaceSetInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;FaceSetInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty 
+        name=&quot;EdgeSetInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;EdgeSet&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;EdgeSetArrayStatus&quot;
+        command=&quot;SetEdgeSetArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;EdgeSetInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;EdgeSetInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty 
+        name=&quot;ElementSetInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;ElementSet&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;ElementSetArrayStatus&quot;
+        command=&quot;SetElementSetArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;ElementSetInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;ElementSetInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;ElementSetResultArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;ElementSetResult&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;ElementSetResultArrayStatus&quot;
+        command=&quot;SetElementSetResultArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;ElementSetResultArrayInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;ElementSetResultArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty 
+        name=&quot;SideSetResultArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;SideSetResult&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;SideSetResultArrayStatus&quot;
+        command=&quot;SetSideSetResultArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;SideSetResultArrayInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;SideSetResultArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty 
+        name=&quot;FaceSetResultArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;FaceSetResult&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FaceSetResultArrayStatus&quot;
+        command=&quot;SetFaceSetResultArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;FaceSetResultArrayInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;FaceSetResultArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty 
+        name=&quot;EdgeSetResultArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;EdgeSetResult&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;EdgeSetResultArrayStatus&quot;
+        command=&quot;SetEdgeSetResultArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;EdgeSetResultArrayInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;EdgeSetResultArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty 
+        name=&quot;NodeSetResultArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;NodeSetResult&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;NodeSetResultArrayStatus&quot;
+        command=&quot;SetNodeSetResultArrayStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;NodeSetResultArrayInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;NodeSetResultArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;ApplyDisplacements&quot; 
+        command=&quot;SetApplyDisplacements&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot; &gt; 
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         Geometric locations can include displacements. When this option is on, the nodal positions are 'displaced' by the standard exodus displacement vector. If displacements are turned 'off', the user can explicitly add them by applying a warp filter.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;DoubleVectorProperty 
+        name=&quot;DisplacementMagnitude&quot; 
+        command=&quot;SetDisplacementMagnitude&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot; &gt; 
+       &lt;DoubleRangeDomain name=&quot;range&quot;/&gt;
+       &lt;Documentation&gt;
+         When displacements are being applied, they are scaled by this amount.  Set to 1 for no scaling.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+     
+     &lt;IntVectorProperty 
+        name=&quot;GenerateObjectIdCellArray&quot; 
+        command=&quot;SetGenerateObjectIdCellArray&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot; &gt; 
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;GenerateGlobalNodeIdArray&quot; 
+        command=&quot;SetGenerateGlobalNodeIdArray&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot; &gt; 
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+     &lt;/IntVectorProperty&gt;
+     
+     &lt;IntVectorProperty 
+        name=&quot;GenerateGlobalElementIdArray&quot; 
+        command=&quot;SetGenerateGlobalElementIdArray&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot; &gt; 
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;GenerateImplicitNodeIdArray&quot; 
+        command=&quot;SetGenerateImplicitNodeIdArray&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot; &gt; 
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+     &lt;/IntVectorProperty&gt;
+     
+     &lt;IntVectorProperty 
+        name=&quot;GenerateImplicitElementIdArray&quot; 
+        command=&quot;SetGenerateImplicitElementIdArray&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot; &gt; 
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;GenerateFileIdArray&quot; 
+        command=&quot;SetGenerateFileIdArray&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot; &gt; 
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;ExodusModelMetadata&quot; 
+        command=&quot;SetExodusModelMetadata&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot; &gt; 
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;Hints&gt;
+       &lt;Property name=&quot;Refresh&quot; show=&quot;0&quot;/&gt;
+     &lt;/Hints&gt;
+
+   &lt;!-- End ExodusIIReaderCore --&gt;
+   &lt;/SourceProxy&gt;
+      
+   &lt;SourceProxy name=&quot;TecplotReaderCore&quot; 
+                class=&quot;vtkTecplotReader&quot;
+                label=&quot;VTK Tecplot Reader&quot;&gt;
+       &lt;Documentation&gt;
+          Core for TecplotReader
+       &lt;/Documentation&gt;
+      
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          The name of the file to load
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;DataArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Data&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;DataArrayStatus&quot;
+        command=&quot;SetDataArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;DataArrayInfo&quot;
+        label=&quot;Data Arrays&quot;&gt;
+      
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;DataArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       
+       &lt;Documentation&gt;
+         This property lists what dataset attribute arrays (point data and cell data) to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+     &lt;!-- End TecplotReaderCore--&gt;
+   &lt;/SourceProxy&gt;
+   
+   &lt;SourceProxy name=&quot;CosmoReaderCore&quot; 
+                class=&quot;vtkPCosmoReader&quot;
+                label=&quot;COSMO Reader&quot;&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the COSMO reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;CosmoFormat&quot;
+        command=&quot;SetCosmoFormat&quot;
+        label=&quot;Cosmo Format&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot; &gt;
+     &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+       &lt;Documentation&gt;
+       If checked, the data will be read as the LANL Cosmo format.  If unchecked, the data will be read as Gadget-2 format.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;DoubleVectorProperty
+        name=&quot;RL&quot;
+        command=&quot;SetRL&quot;
+        label=&quot;rL (physical box side length)&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;90.140846&quot; &gt;
+     &lt;DoubleRangeDomain name=&quot;range&quot; min=&quot;0&quot; /&gt;
+       &lt;Documentation&gt;
+       The box side length used to wrap particles around if they exceed rL (or less than 0) in any dimension.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;DoubleVectorProperty
+        name=&quot;Overlap&quot;
+        command=&quot;SetOverlap&quot;
+        label=&quot;overlap (shared point/ghost cell gap distance)&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;5&quot; &gt;
+     &lt;DoubleRangeDomain name=&quot;range&quot; min=&quot;0&quot; /&gt;
+       &lt;Documentation&gt;
+       The space in rL units to extend processor particle ownership for ghost particles/cells.  Needed for correct halo calculation when halos cross processor boundaries in parallel computation.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;PNGReaderCore&quot;
+                class=&quot;vtkPNGReader&quot;
+                label=&quot;PNG Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read a PNG file.&quot;
+       long_help=&quot;Read a PNG file into an image data.&quot;&gt;
+       The PNG reader reads PNG (Portable Network Graphics) files, and the output is a uniform rectilinear (image/volume) dataset. The default file extension is .png.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the PNG reader.
+        &lt;/Documentation&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;Hints&gt;
+        &lt;ReaderFactory extensions=&quot;png&quot;
+          file_description=&quot;PNG Image Files&quot; /&gt;
+      &lt;/Hints&gt;
+     &lt;!-- End PNGReader --&gt;
+   &lt;/SourceProxy&gt;
+
+    &lt;SourceProxy name=&quot;netCDFReaderCore&quot;
+                 class=&quot;vtkNetCDFCFReader&quot;&gt;
+
+      &lt;StringVectorProperty name=&quot;FileName&quot;
+                            command=&quot;SetFileName&quot;
+                            animateable=&quot;0&quot;
+                            number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot; /&gt;
+        &lt;Documentation&gt;
+          The name of the file to load.
+        &lt;/Documentation&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty name=&quot;DimensionInfo&quot;
+                            command=&quot;GetAllDimensions&quot;
+                            information_only=&quot;1&quot;&gt;
+        &lt;StringArrayHelper /&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty name=&quot;Dimensions&quot;
+                            command=&quot;SetDimensions&quot;
+                            number_of_elements=&quot;1&quot;
+                            animatelable=&quot;0&quot;&gt;
+        &lt;StringListDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+            &lt;Property name=&quot;DimensionInfo&quot; function=&quot;ArrayList&quot; /&gt;
+          &lt;/RequiredProperties&gt;
+        &lt;/StringListDomain&gt;
+        &lt;Documentation&gt;
+          Load the grid with the given dimensions.  Any arrays that conform
+          to these dimensions will be loaded.
+        &lt;/Documentation&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty name=&quot;VariableDimensionInfo&quot;
+                            command=&quot;GetVariableDimensions&quot;
+                            information_only=&quot;1&quot;&gt;
+        &lt;StringArrayHelper /&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty name=&quot;VariableArrayInfo&quot;
+                            command=&quot;GetAllVariableArrayNames&quot;
+                            information_only=&quot;1&quot;&gt;
+        &lt;StringArrayHelper /&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;IntVectorProperty name=&quot;SphericalCoordinates&quot;
+                         command=&quot;SetSphericalCoordinates&quot;
+                         animateable=&quot;0&quot;
+                         number_of_elements=&quot;1&quot;
+                         default_values=&quot;1&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+        &lt;Documentation&gt;
+          If on, then data with latitude/longitude dimensions will be
+          read in as curvilinear data shaped like spherical coordinates.
+          If false, then the data will always be read in Cartesian
+          coordinates.
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;DoubleVectorProperty name=&quot;VerticalScale&quot;
+                            command=&quot;SetVerticalScale&quot;
+                            number_of_elements=&quot;1&quot;
+                            default_values=&quot;1&quot;&gt;
+        &lt;Documentation&gt;
+          The scale of the vertical component of spherical coordinates.  It
+          is common to write the vertical component with respect to
+          something other than the center of the sphere (for example, the
+          surface).  In this case, it might be necessary to scale and/or
+          bias the vertical height.  The height will become height*scale +
+          bias.  Keep in mind that if the positive attribute of the
+          vertical dimension is down, then the height is negated.  The
+          scaling will be adjusted if it results in invalid (negative)
+          vertical values.
+        &lt;/Documentation&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+      &lt;DoubleVectorProperty name=&quot;VerticalBias&quot;
+                            command=&quot;SetVerticalBias&quot;
+                            number_of_elements=&quot;1&quot;
+                            default_values=&quot;0&quot;&gt;
+        &lt;Documentation&gt;
+          The bias of the vertical component of spherical coordinates.  It
+          is common to write the vertical component with respect to
+          something other than the center of the sphere (for example, the
+          surface).  In this case, it might be necessary to scale and/or
+          bias the vertical height.  The height will become height*scale +
+          bias.  Keep in mind that if the positive attribute of the
+          vertical dimension is down, then the height is negated.  The
+          scaling will be adjusted if it results in invalid (negative)
+          vertical values.
+        &lt;/Documentation&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+      &lt;IntVectorProperty name=&quot;ReplaceFillValueWithNan&quot;
+                         command=&quot;SetReplaceFillValueWithNan&quot;
+                         number_of_elements=&quot;1&quot;
+                         default_values=&quot;0&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+        &lt;Documentation&gt;
+          If on, any float or double variable read that has a _FillValue
+          attribute will have that fill value replaced with a not-a-number
+          (NaN) value.  The advantage of setting these to NaN values is
+          that, if implemented properly by the system and careful math
+          operations are used, they can implicitly be ignored by
+          calculations like finding the range of the values.  That said,
+          this option should be used with caution as VTK does not fully
+          support NaN values and therefore odd calculations may occur.
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                            repeatable=&quot;1&quot;
+                            information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper /&gt;
+        &lt;Documentation&gt;
+          This magic property sends time information to the animation
+          panel.  ParaView will then automatically set up the animation to
+          visit the time steps defined in the file.
+        &lt;/Documentation&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+    &lt;/SourceProxy&gt; &lt;!-- netCDFReaderCore --&gt;
+
+   &lt;SourceProxy name=&quot;P3DReaderCore&quot; class=&quot;vtkMultiBlockPLOT3DReader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read PLOT3D files.&quot;
+       long_help=&quot;Read ASCII or binary PLOT3D files.&quot;&gt;
+       PLOT3D is a plotting package developed at NASA. The PLOT3D reader can read both ASCII and binary PLOT3D files. The default file extension for the geometry files is .xyz, and the default file extension for the solution files is .q. The output of this reader is a multi-block dataset containing curvilinear (structured grid) datasets.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the .xyz (geometry) file name for the PLOT3D reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;QFileName&quot;
+        command=&quot;SetQFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         This property specifies the .q (solution) file name for the PLOT3D reader.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;BinaryFile&quot;
+        command=&quot;SetBinaryFile&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot; &gt;
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         This property indicates whether the data files are binary.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;MultiGrid&quot;
+        command=&quot;SetMultiGrid&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot; &gt;
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         This property indicates whether these files have multiple-block information.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;HasByteCount&quot;
+        command=&quot;SetHasByteCount&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot; &gt;
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         This property indicates whether this file uses Fortran leading-trailing byte counts.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;IBlanking&quot;
+        command=&quot;SetIBlanking&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot; &gt;
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         This property indicates whether this dataset has visibility information.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;TwoDimensionalGeometry&quot;
+        command=&quot;SetTwoDimensionalGeometry&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot; &gt;
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         This property indicates whether the data is two- or three-dimensional.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;ForceRead&quot;
+        command=&quot;SetForceRead&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot; &gt;
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         This property indicates whether to attempt to read the file even if it appears corrupt
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;ByteOrder&quot;
+        command=&quot;SetByteOrder&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot; &gt;
+       &lt;EnumerationDomain name=&quot;enum&quot;&gt;
+         &lt;Entry value=&quot;0&quot; text=&quot;BigEndian&quot;/&gt;
+         &lt;Entry value=&quot;1&quot; text=&quot;LittleEndian&quot;/&gt;
+       &lt;/EnumerationDomain&gt;
+       &lt;Documentation&gt;
+         This property specifies the byte order of any binary file(s).
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;Functions&quot;
+        command=&quot;AddFunction&quot;
+        clean_command=&quot;RemoveAllFunctions&quot;
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;1&quot;&gt;
+       &lt;EnumerationDomain name=&quot;array_list&quot;&gt;
+         &lt;!-- &lt;Entry value=&quot;100&quot; text=&quot;Scalar - Density&quot;/&gt; --&gt;
+         &lt;Entry value=&quot;110&quot; text=&quot;Scalar - Pressure&quot;/&gt;
+         &lt;Entry value=&quot;120&quot; text=&quot;Scalar - Temperature&quot;/&gt;
+         &lt;Entry value=&quot;130&quot; text=&quot;Scalar - Enthalpy&quot;/&gt;
+         &lt;Entry value=&quot;140&quot; text=&quot;Scalar - Internal energy&quot;/&gt;
+         &lt;Entry value=&quot;144&quot; text=&quot;Scalar - Kinetic energy&quot;/&gt;
+         &lt;Entry value=&quot;153&quot; text=&quot;Scalar - Velocity magnitude&quot;/&gt;
+         &lt;!-- &lt;Entry value=&quot;163&quot; text=&quot;Scalar - Stagnation energy&quot;/&gt; --&gt;
+         &lt;Entry value=&quot;170&quot; text=&quot;Scalar - Entropy&quot;/&gt;
+         &lt;Entry value=&quot;184&quot; text=&quot;Scalar - Swirl.&quot;/&gt;
+         &lt;Entry value=&quot;200&quot; text=&quot;Vector - Velocity&quot;/&gt;
+         &lt;Entry value=&quot;201&quot; text=&quot;Vector - Vorticity&quot;/&gt;
+         &lt;!-- &lt;Entry value=&quot;202&quot; text=&quot;Vector - Momentum&quot;/&gt; --&gt;
+         &lt;Entry value=&quot;210&quot; text=&quot;Vector - Pressure gradient&quot;/&gt;
+       &lt;/EnumerationDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which functions (point-centered arrays) to compute.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+   &lt;!-- End P3DReaderCore --&gt;
+   &lt;/SourceProxy&gt;
+
+    &lt;!-- End of &quot;internal_sources&quot; --&gt;
+  &lt;/ProxyGroup&gt;
+
+  &lt;ProxyGroup name=&quot;sources&quot;&gt;
+
+   &lt;SourceProxy name=&quot;DEMReader&quot; 
+                class=&quot;vtkDEMReader&quot;
+                label=&quot;DEM Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read a dataset in DEM format&quot;
+       long_help=&quot;Read a DEM (Digital Elevation Model) file.&quot;&gt;
+       The DEM reader reads Digital Elevation Model files containing elevation values derived from the U. S. Geologic Survey. The default file extension is .dem. This reader produces uniform rectilinear (image/volume) data output.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the DEM (Digital Elevation Map) reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;dem&quot;
+          file_description=&quot;Digital Elevation Map Files&quot; /&gt;
+     &lt;/Hints&gt;
+
+   &lt;!-- End DEMReader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;PVDReader&quot; 
+                class=&quot;vtkPVDReader&quot;
+                label=&quot;PVD Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read a PVD file.&quot;
+       long_help=&quot;Load a dataset stored in ParaView's PVD file format.&quot;&gt;
+       The PVD reader reads data stored in ParaView's PVD file format. The .pvd file is essentially a header file that collects together other data files stored in VTK's XML-based file format.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the PVD reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+     &lt;DoubleVectorProperty 
+        name=&quot;TimestepValues&quot;
+        repeatable=&quot;1&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+        &lt;ReaderFactory extensions=&quot;pvd&quot; 
+          file_description=&quot;ParaView Data Files&quot;/&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End PVDReader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;XMLMultiBlockDataReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;XML MultiBlock Data Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read VTK XML multi-block datasets.&quot;
+       long_help=&quot;Read a VTK XML multi-block data file and the serial VTK XML data files to which it points.&quot;&gt;
+       The XML Multi-Block Data reader reads the VTK XML multi-block data file
+       format. XML multi-block data files are meta-files that point to a list of
+       serial VTK XML files. When reading in parallel, this reader will
+       distribute sub-blocks among processors. The expected file extensions are
+       .vtm and .vtmb.
+     &lt;/Documentation&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot;
+              proxyname=&quot;XMLMultiBlockDataReaderCore&quot;&gt;
+       &lt;/Proxy&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           clean_command=&quot;RemoveAllFileNames&quot;
+                           command=&quot;AddFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;0&quot;
+                           information_property=&quot;FileNameInfo&quot;
+                           repeat_command=&quot;1&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. Each file is expected to be
+         in the VTK XML polygonal dataset format. The standard extension is
+         .vtp. If more than 1 file is specified, the reader will switch to file
+         series mode in which it will pretend that it can support time and
+         provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                           repeatable=&quot;1&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+       &lt;Documentation&gt;
+         Available timestep values.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;vtm vtmb&quot;
+          file_description=&quot;VTK MultiBlock Data Files&quot; /&gt;
+     &lt;/Hints&gt;
+
+   &lt;!-- end of XMLMultiBlockDataReader --&gt;
+   &lt;/FileSeriesReaderProxy&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;XMLHierarchicalBoxDataReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;XML Hierarchical Box Data reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read a VTK data file containing a hierarchical box dataset.&quot;
+       long_help=&quot;Read a VTK XML-based data file containing a hierarchical dataset containing vtkUniformGrids.&quot;&gt;
+       The XML Hierarchical Box Data reader reads VTK's XML-based file format
+       containing a vtkHierarchicalBoxDataSet. The expected file extensions is
+       either .vthb or .vth.
+     &lt;/Documentation&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot;
+              proxyname=&quot;XMLHierarchicalBoxDataReaderCore&quot;&gt;
+       &lt;/Proxy&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           clean_command=&quot;RemoveAllFileNames&quot;
+                           command=&quot;AddFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;0&quot;
+                           information_property=&quot;FileNameInfo&quot;
+                           repeat_command=&quot;1&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. Each file is expected to be
+         in the VTK XML polygonal dataset format. The standard extension is
+         .vtp. If more than 1 file is specified, the reader will switch to file
+         series mode in which it will pretend that it can support time and
+         provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                           repeatable=&quot;1&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+       &lt;Documentation&gt;
+         Available timestep values.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;vthb vth&quot;
+          file_description=&quot;VTK Hierarchical Box Data Files&quot; /&gt;
+     &lt;/Hints&gt;
+
+   &lt;!-- end of XMLHierarchicalBoxDataReader --&gt;
+   &lt;/FileSeriesReaderProxy&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;XMLPolyDataReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;XML PolyData Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation short_help=&quot;Read VTK XML polydata files.&quot;
+                    long_help=&quot;Read serial VTK XML polydata files.&quot;&gt;
+       The XML Polydata reader reads the VTK XML polydata file format. The standard extension is .vtp.  This reader also supports file series.
+     &lt;/Documentation&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot; proxyname=&quot;XMLPolyDataReaderCore&quot;&gt;
+       &lt;/Proxy&gt;
+       &lt;ExposedProperties&gt;
+         &lt;Property name=&quot;CellArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;CellArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;PointArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;PointArrayStatus&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           clean_command=&quot;RemoveAllFileNames&quot;
+                           command=&quot;AddFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;0&quot;
+                           information_property=&quot;FileNameInfo&quot;
+                           repeat_command=&quot;1&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. Each file is expected to be in the VTK XML polygonal dataset format. The standard extension is .vtp. If more than 1 file is specified, the reader will switch to file series mode in which it will pretend that it can support time and provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                           repeatable=&quot;1&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+       &lt;Documentation&gt;
+         Available timestep values.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;vtp&quot;
+          file_description=&quot;VTK PolyData Files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;/FileSeriesReaderProxy&gt; &lt;!-- XMLPolyDataReader --&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;XMLUnstructuredGridReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;XML Unstructured Grid Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation short_help=&quot;Read VTK XML unstructured grid data files.&quot;
+                    long_help=&quot;Read serial VTK XML unstructured grid data files.&quot;&gt;
+       The XML Unstructured Grid reader reads the VTK XML unstructured grid data file format. The standard extension is .vtu. This reader also supports file series.
+     &lt;/Documentation&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot;
+              proxyname=&quot;XMLUnstructuredGridReaderCore&quot;&gt;
+       &lt;/Proxy&gt;
+       &lt;ExposedProperties&gt;
+         &lt;Property name=&quot;CellArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;CellArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;PointArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;PointArrayStatus&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           clean_command=&quot;RemoveAllFileNames&quot;
+                           command=&quot;AddFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;0&quot; 
+                           information_property=&quot;FileNameInfo&quot;
+                           repeat_command=&quot;1&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. Each file is expected to be in the VTK XML unstructured grid data format. The standard extension is .vtu. If more than 1 file is specified, the reader will switch to file series mode in which it will pretend that it can support time and provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                           repeatable=&quot;1&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+       &lt;Documentation&gt;
+         Available timestep values.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;vtu&quot;
+          file_description=&quot;VTK UnstructuredGrid Files&quot; /&gt;
+     &lt;/Hints&gt;
+
+   &lt;/FileSeriesReaderProxy&gt; &lt;!-- XMLUnstructuredGridReader --&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;XMLImageDataReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;XML Image Data Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation short_help=&quot;Read VTK XML image data files.&quot;
+                    long_help=&quot;Read serial VTK XML image data files.&quot;&gt;
+       The XML Image Data reader reads the VTK XML image data file format. The standard extension is .vti. This reader also supports file series.
+     &lt;/Documentation&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot;
+              proxyname=&quot;XMLImageDataReaderCore&quot;&gt;
+       &lt;/Proxy&gt;
+       &lt;ExposedProperties&gt;
+         &lt;Property name=&quot;CellArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;CellArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;PointArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;PointArrayStatus&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           clean_command=&quot;RemoveAllFileNames&quot;
+                           command=&quot;AddFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;0&quot; 
+                           repeat_command=&quot;1&quot;
+                           information_property=&quot;FileNameInfo&quot; &gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. Each file is expected to be in the VTK XML image data format. The standard extension is .vti. If more than 1 file is specified, the reader will switch to file series mode in which it will pretend that it can support time and provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                           repeatable=&quot;1&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+       &lt;Documentation&gt;
+         Available timestep values.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;vti&quot;
+          file_description=&quot;VTK ImageData Files&quot; /&gt;
+     &lt;/Hints&gt;
+
+   &lt;/FileSeriesReaderProxy&gt; &lt;!-- XMLImageDataReader --&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;XMLStructuredGridReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;XML Structured Grid Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation short_help=&quot;Read VTK XML structured grid data files.&quot;
+                    long_help=&quot;Read serial VTK XML structured grid data files.&quot;&gt;
+       The XML Structured Grid reader reads the VTK XML structured grid data file format. The standard extension is .vts. This reader also supports file series.
+     &lt;/Documentation&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot;
+              proxyname=&quot;XMLStructuredGridReaderCore&quot;&gt;
+       &lt;/Proxy&gt;
+       &lt;ExposedProperties&gt;
+         &lt;Property name=&quot;CellArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;CellArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;PointArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;PointArrayStatus&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           clean_command=&quot;RemoveAllFileNames&quot;
+                           command=&quot;AddFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;0&quot; 
+                           repeat_command=&quot;1&quot;
+                           information_property=&quot;FileNameInfo&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. Each file is expected to be in the VTK XML structured grid data format. The standard extension is .vts. If more than 1 file is specified, the reader will switch to file series mode in which it will pretend that it can support time and provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                           repeatable=&quot;1&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+       &lt;Documentation&gt;
+         Available timestep values.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;vts&quot;
+          file_description=&quot;VTK StructuredGrid Files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;/FileSeriesReaderProxy&gt; &lt;!-- XMLStructuredGridReader --&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;XMLRectilinearGridReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;XML Rectilinear Grid Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation short_help=&quot;Read VTK XML rectilinear grid data files.&quot;
+                    long_help=&quot;Read serial VTK XML rectilinear grid data files.&quot;&gt;
+       The XML Rectilinear Grid reader reads the VTK XML rectilinear grid data file format. The standard extension is .vtr. This reader also supports file series.
+     &lt;/Documentation&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot;
+              proxyname=&quot;XMLRectilinearGridReaderCore&quot;&gt;
+       &lt;/Proxy&gt;
+       &lt;ExposedProperties&gt;
+         &lt;Property name=&quot;CellArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;CellArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;PointArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;PointArrayStatus&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           clean_command=&quot;RemoveAllFileNames&quot;
+                           command=&quot;AddFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;0&quot; 
+                           repeat_command=&quot;1&quot;
+                           information_property=&quot;FileNameInfo&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. Each file is expected to be in the VTK XML rectilinear grid data format. The standard extension is .vtr. If more than 1 file is specified, the reader will switch to file series mode in which it will pretend that it can support time and provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                           repeatable=&quot;1&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+       &lt;Documentation&gt;
+         Available timestep values.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;vtr&quot;
+          file_description=&quot;VTK RectilinearGrid Files&quot; /&gt;
+     &lt;/Hints&gt;
+
+   &lt;/FileSeriesReaderProxy&gt; &lt;!-- XMLRectilinearGridReader --&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;XMLPPolyDataReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;XML Partitioned Polydata Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation short_help=&quot;Read partitioned VTK XML polydata files.&quot;
+                    long_help=&quot;Read the summary file and the assicoated VTK XML polydata files.&quot;&gt;
+       The XML Partitioned Polydata reader reads the partitioned VTK polydata file format. It reads the partitioned format's summary file and then the associated VTK XML polydata files. The expected file extension is .pvtp.  This reader also supports file series.
+     &lt;/Documentation&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot; proxyname=&quot;XMLPPolyDataReaderCore&quot;&gt;
+       &lt;/Proxy&gt;
+       &lt;ExposedProperties&gt;
+         &lt;Property name=&quot;CellArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;CellArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;PointArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;PointArrayStatus&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           clean_command=&quot;RemoveAllFileNames&quot;
+                           command=&quot;AddFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;0&quot; 
+                           repeat_command=&quot;1&quot;
+                           information_property=&quot;FileNameInfo&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. Each file is expected to be in the partitioned VTK XML polygonal dataset format. The standard extension is .pvtp. If more than 1 file is specified, the reader will switch to file series mode in which it will pretend that it can support time and provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                           repeatable=&quot;1&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+       &lt;Documentation&gt;
+         Available timestep values.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;pvtp&quot;
+          file_description=&quot;VTK PolyData Files (partitioned)&quot; /&gt;
+     &lt;/Hints&gt;
+
+   &lt;/FileSeriesReaderProxy&gt; &lt;!-- XMLPPolyDataReader --&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;XMLPUnstructuredGridReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;XML Partitioned Unstructured Grid Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation short_help=&quot;Read partitioned VTK XML unstructured grid data files.&quot;
+                    long_help=&quot;Read the summary file and the associated VTK XML unstructured grid data files.&quot;&gt;
+       The XML Partitioned Unstructured Grid reader reads the partitioned VTK unstructured grid data file format. It reads the partitioned format's summary file and then the associated VTK XML unstructured grid data files. The expected file extension is .pvtu. This reader also supports file series.
+     &lt;/Documentation&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot;
+              proxyname=&quot;XMLPUnstructuredGridReaderCore&quot;&gt;
+       &lt;/Proxy&gt;
+       &lt;ExposedProperties&gt;
+         &lt;Property name=&quot;CellArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;CellArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;PointArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;PointArrayStatus&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           clean_command=&quot;RemoveAllFileNames&quot;
+                           command=&quot;AddFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;0&quot; 
+                           repeat_command=&quot;1&quot;
+                           information_property=&quot;FileNameInfo&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. Each file is expected to be in the partitioned VTK XML unstructured grid data format. The standard extension is .pvtu. If more than 1 file is specified, the reader will switch to file series mode in which it will pretend that it can support time and provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                           repeatable=&quot;1&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+       &lt;Documentation&gt;
+         Available timestep values.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;pvtu&quot;
+          file_description=&quot;VTK UnstructuredGrid Files (partitioned)&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;/FileSeriesReaderProxy&gt; &lt;!-- XMLPUnstructuredGridReader --&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;XMLPImageDataReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;XML Partitioned Image Data Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation short_help=&quot;Read partitioned VTK XML image data files.&quot;
+                    long_help=&quot;Read the summary file and the associated VTK XML image data files.&quot;&gt;
+       The XML Partitioned Image Data reader reads the partitioned VTK image data file format. It reads the partitioned format's summary file and then the associated VTK XML image data files. The expected file extension is .pvti. This reader also supports file series.
+     &lt;/Documentation&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot;
+              proxyname=&quot;XMLPImageDataReaderCore&quot;&gt;
+       &lt;/Proxy&gt;
+       &lt;ExposedProperties&gt;
+         &lt;Property name=&quot;CellArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;CellArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;PointArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;PointArrayStatus&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           clean_command=&quot;RemoveAllFileNames&quot;
+                           command=&quot;AddFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;0&quot; 
+                           repeat_command=&quot;1&quot;
+                           information_property=&quot;FileNameInfo&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. Each file is expected to be in the partitioned VTK XML image data format. The standard extension is .pvti. If more than 1 file is specified, the reader will switch to file series mode in which it will pretend that it can support time and provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                           repeatable=&quot;1&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+       &lt;Documentation&gt;
+         Available timestep values.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;pvti&quot;
+          file_description=&quot;VTK ImageData Files (partitioned)&quot; /&gt;
+     &lt;/Hints&gt;
+
+   &lt;/FileSeriesReaderProxy&gt; &lt;!-- XMLPImageDataReader --&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;XMLPStructuredGridReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;XML Partitioned Structured Grid Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation short_help=&quot;Read partitioned VTK XML structured grid data files.&quot;
+                    long_help=&quot;Read the summary file and the associated VTK XML structured grid data files.&quot;&gt;
+       The XML Partitioned Structured Grid reader reads the partitioned VTK structured grid data file format. It reads the partitioned format's summary file and then the associated VTK XML structured grid data files. The expected file extension is .pvts. This reader also supports file series.
+     &lt;/Documentation&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot;
+              proxyname=&quot;XMLPStructuredGridReaderCore&quot;&gt;
+       &lt;/Proxy&gt;
+       &lt;ExposedProperties&gt;
+         &lt;Property name=&quot;CellArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;CellArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;PointArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;PointArrayStatus&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           clean_command=&quot;RemoveAllFileNames&quot;
+                           command=&quot;AddFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;0&quot; 
+                           repeat_command=&quot;1&quot;
+                           information_property=&quot;FileNameInfo&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. Each file is expected to be in the partitioned VTK XML structured grid data format. The standard extension is .pvts. If more than 1 file is specified, the reader will switch to file series mode in which it will pretend that it can support time and provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                           repeatable=&quot;1&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+       &lt;Documentation&gt;
+         Available timestep values.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;pvts&quot;
+          file_description=&quot;VTK StructuredGrid Files (partitioned)&quot; /&gt;
+     &lt;/Hints&gt;
+
+   &lt;/FileSeriesReaderProxy&gt; &lt;!-- XMLPStructuredGridReader --&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;XMLPRectilinearGridReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;XML Partitioned Rectilinear Grid Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation short_help=&quot;Read partitioned VTK XML rectilinear grid data files.&quot;
+                    long_help=&quot;Read the summary file and the associated VTK XML rectilinear grid data files.&quot;&gt;
+       The XML Partitioned Rectilinear Grid reader reads the partitioned VTK rectilinear grid file format. It reads the partitioned format's summary file and then the associated VTK XML rectilinear grid files. The expected file extension is .pvtr. This reader also supports file series.
+     &lt;/Documentation&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot;
+              proxyname=&quot;XMLPRectilinearGridReaderCore&quot;&gt;
+       &lt;/Proxy&gt;
+       &lt;ExposedProperties&gt;
+         &lt;Property name=&quot;CellArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;CellArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;PointArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;PointArrayStatus&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           clean_command=&quot;RemoveAllFileNames&quot;
+                           command=&quot;AddFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;0&quot; 
+                           repeat_command=&quot;1&quot;
+                           information_property=&quot;FileNameInfo&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. Each file is expected to be in the partitioned VTK XML rectilinear grid data format. The standard extension is .pvtr. If more than 1 file is specified, the reader will switch to file series mode in which it will pretend that it can support time and provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                           repeatable=&quot;1&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+       &lt;Documentation&gt;
+         Available timestep values.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;pvtr&quot;
+          file_description=&quot;VTK RectilinearGrid Files (partitioned)&quot; /&gt;
+     &lt;/Hints&gt;
+
+   &lt;/FileSeriesReaderProxy&gt; &lt;!-- XMLPRectilinearGridReader --&gt;
+
+   &lt;SourceProxy name=&quot;RTXMLPolyDataReader&quot;
+                class=&quot;vtkRTXMLPolyDataReader&quot;&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          Set the file name for the real-time VTK polygonal dataset reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;Location&quot;
+        command=&quot;SetLocation&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          Set the data directory containing real time data files.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;NextFileName&quot;
+        command=&quot;GetNextFileName&quot;
+        number_of_elements=&quot;1&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;SimpleStringInformationHelper/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;NewDataAvailable&quot;
+        command=&quot;NewDataAvailable&quot;
+        number_of_elements=&quot;1&quot;
+                    default_values=&quot;2&quot; 
+        information_only=&quot;1&quot;&gt;
+        &lt;SimpleIntInformationHelper/&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;Property
+        name=&quot;UpdateToNextFile&quot;
+        command=&quot;UpdateToNextFile&quot;&gt;
+     &lt;/Property&gt;
+
+     &lt;Property
+        name=&quot;ResetReader&quot;
+        command=&quot;ResetReader&quot;&gt;
+     &lt;/Property&gt;
+     &lt;!-- End of RTXMLPolyDataReader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;LegacyVTKFileReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;Legacy VTK Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read legacy VTK files.&quot;
+       long_help=&quot;Read files stored in VTK's legacy file format.&quot;&gt;
+       The Legacy VTK reader loads files stored in VTK's legacy file format (before VTK 4.2, although still supported). The expected file extension is .vtk. The type of the dataset may be structured grid, uniform rectilinear grid (image/volume), non-uniform rectiinear grid, unstructured grid, or polygonal. This reader also supports file series.
+     &lt;/Documentation&gt;
+      &lt;SubProxy&gt;
+        &lt;Proxy name=&quot;Reader&quot;
+          proxygroup=&quot;internal_sources&quot; proxyname=&quot;legacyreader&quot;&gt;
+        &lt;/Proxy&gt;
+      &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FileNames&quot;
+        clean_command=&quot;RemoveAllFileNames&quot;
+        command=&quot;AddFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        information_property=&quot;FileNameInfo&quot; &gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. If more than 1 file is specified, the reader will switch to file series mode in which it will pretend that it can support time and provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty 
+        name=&quot;TimestepValues&quot;
+        repeatable=&quot;1&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;vtk&quot;
+          file_description=&quot;Legacy VTK files&quot; /&gt;
+     &lt;/Hints&gt;
+     &lt;!-- End LegacyVTKFileReader --&gt;
+   &lt;/FileSeriesReaderProxy&gt;
+
+   &lt;SourceProxy name=&quot;pvtkfile&quot; 
+                class=&quot;vtkPDataSetReader&quot;
+                label=&quot;Partitioned Legacy VTK Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read partitioned legacy VTK files.&quot;
+       long_help=&quot;Read files stored in VTK partitioned legacy format.&quot;&gt;
+       The Partitioned Legacy VTK reader loads files stored in VTK's partitioned legac file format (before VTK 4.2, although still supported). The expected file extension is .pvtk. The type of the dataset may be structured grid, uniform rectilinear grid (image/volume), non-uniform rectilinear grid, unstructured grid, or polygonal.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         This property specifies the file name for the Partitioned Legacy VTK reader.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;pvtk&quot;
+          file_description=&quot;Legacy VTK Files (partitioned)&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End pvtkfile --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;ensight&quot; 
+                class=&quot;vtkPGenericEnSightReader&quot;
+                label=&quot;EnSight Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read EnSight files.&quot;
+       long_help=&quot;Read EnSight 6 and Gold files.&quot;&gt;
+       The EnSight reader reads files in the format produced by CEI's EnSight. EnSight 6 and Gold files (both ASCII and binary) are supported. The default extension is .case. The output of this reader is a multi-block dataset.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;CaseFileName&quot;
+        command=&quot;SetCaseFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the case file name for the EnSight reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty 
+        name=&quot;TimestepValues&quot;
+        repeatable=&quot;1&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;CellArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;CellArrayStatus&quot;
+        command=&quot;SetCellArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;CellArrayInfo&quot;
+        label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;PointArrayInfo&quot;
+        label=&quot;Point Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which point-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;case CASE Case&quot;
+          file_description=&quot;EnSight Files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End ensight --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;spcthreader&quot; class=&quot;vtkSpyPlotReader&quot;
+                label=&quot;Spy Plot Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read files in the Spy Plot format.&quot;
+       long_help=&quot;Read files in the SPCTH Spy Plot file format.&quot;&gt;
+       The Spy Plot reader loads an ASCII meta-file called the &quot;case&quot; file (extension .spcth). The case file lists all the binary files containing the dataset. This reader produces hierarchical datasets.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the Spy Plot reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty 
+        name=&quot;TimestepValues&quot;
+        repeatable=&quot;1&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;DownConvertVolumeFraction&quot; 
+        command=&quot;SetDownConvertVolumeFraction&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot; &gt; 
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         If this property is set to 0, the type of the volume fraction is float; is set to 1, the type is unsigned char.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;DistributeFiles&quot; 
+        command=&quot;SetDistributeFiles&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot; &gt; 
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         In parallel mode, if this property is set to 1, the reader will distribute files or blocks.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;GenerateLevelArray&quot; 
+        command=&quot;SetGenerateLevelArray&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot; &gt; 
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         If this property is set to 1, a cell array will be generated that stores the level of each block.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;GenerateActiveBlockArray&quot; 
+        command=&quot;SetGenerateActiveBlockArray&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot; &gt; 
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         If this property is set to 1, a cell array will be generated that stores the active status of a block.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;GenerateTracerArray&quot; 
+        command=&quot;SetGenerateTracerArray&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot; &gt; 
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         If this property is set to 1, a cell array will be generated that stores the coordinates of any tracers.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;GenerateBlockIdArray&quot; 
+        command=&quot;SetGenerateBlockIdArray&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot; &gt; 
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         If this property is set to 1, a cell array will be generated that stores a unique blockId for each block.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;MergeXYZComponents&quot;
+        command=&quot;SetMergeXYZComponents&quot;
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot; &gt;
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         If this property is set to 1, cell arrays named (for example) X velocity, Y velocity and Z velocity will be combined into a single vector array named velocity.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;CellArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;CellArrayStatus&quot;
+        command=&quot;SetCellArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;CellArrayInfo&quot;
+        label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;spcth 0&quot;
+          file_description=&quot;SpyPlot CTH dataset&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End spcthreader--&gt;
+   &lt;/SourceProxy&gt;
+
+  &lt;FileSeriesReaderProxy name=&quot;SPCTHRestartReader&quot;
+                         class=&quot;vtkFileSeriesReader&quot;
+                         label=&quot;Restarted Sim Spy Plot Reader&quot;
+                         file_name_method=&quot;SetFileName&quot;&gt;
+    &lt;Documentation short_help=&quot;Read SPCTH files from simulation restarts.&quot;
+                   long_help=&quot;Read collections of SPCTH files from simulations that were restarted.&quot;&gt;
+      When a CTH simulation is restarted, typically you get a new set of output files.  When you read them in your visualization, you often want to string these file sets together as if it was one continuous dump of files.  This reader allows you to specify a metadata file that will implicitly string the files together.
+    &lt;/Documentation&gt;
+    &lt;SubProxy&gt;
+      &lt;Proxy name=&quot;Reader&quot; proxygroup=&quot;sources&quot; proxyname=&quot;spcthreader&quot; /&gt;
+      &lt;ExposedProperties&gt;
+        &lt;Property name=&quot;DownConvertVolumeFraction&quot; /&gt;
+        &lt;Property name=&quot;DistributeFiles&quot; /&gt;
+        &lt;Property name=&quot;GenerateLevelArray&quot; /&gt;
+        &lt;Property name=&quot;GenerateActiveBlockArray&quot; /&gt;
+        &lt;Property name=&quot;GenerateBlockIdArray&quot; /&gt;
+        &lt;Property name=&quot;CellArrayInfo&quot; /&gt;
+        &lt;Property name=&quot;CellArrayStatus&quot; /&gt;
+      &lt;/ExposedProperties&gt;
+    &lt;/SubProxy&gt;
+
+    &lt;StringVectorProperty name=&quot;FileName&quot;
+                          animateable=&quot;0&quot;
+                          command=&quot;SetMetaFileName&quot;
+                          number_of_elements=&quot;1&quot;&gt;
+      &lt;FileListDomain name=&quot;files&quot; /&gt;
+      &lt;Documentation&gt;
+        This points to a special metadata file that lists the output files for each restart.
+      &lt;/Documentation&gt;
+    &lt;/StringVectorProperty&gt;
+
+    &lt;IntVectorProperty name=&quot;UseMetaFile&quot;
+                       command=&quot;SetUseMetaFile&quot;
+                       number_of_elements=&quot;1&quot;
+                       default_values=&quot;1&quot;&gt;
+      &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+      &lt;Documentation&gt;
+        This hidden property must always be set to 1 for this proxy to work.
+      &lt;/Documentation&gt;
+    &lt;/IntVectorProperty&gt;
+
+    &lt;DoubleVectorProperty name=&quot;TimestepValues&quot; 
+                          repeatable=&quot;1&quot;
+                          information_only=&quot;1&quot;&gt;
+      &lt;TimeStepsInformationHelper/&gt;
+    &lt;/DoubleVectorProperty&gt;
+
+    &lt;Hints&gt;
+      &lt;!-- This property is here simply to set it. --&gt;
+      &lt;Property name=&quot;UseMetaFile&quot; show=&quot;0&quot; /&gt;
+      &lt;ReaderFactory extensions=&quot;spcth-timeseries&quot;
+          file_description=&quot;Case file for restarted CTH outputs&quot; /&gt;
+    &lt;/Hints&gt;
+    &lt;!-- SPCTHRestartReader --&gt;
+  &lt;/FileSeriesReaderProxy&gt;
+
+
+   &lt;SourceProxy name=&quot;vrmlreader&quot; class=&quot;vtkVRMLSource&quot; label=&quot;VRML Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read VRML 2.0 files.&quot;
+       long_help=&quot;Load the geometry from a VRML 2.0 file.&quot;&gt;
+       The VRML reader loads only the geometry from a VRML (Virtual Reality Modeling Language) 2.0 file. The expected file extension is .wrl. The output of this reader is a polygonal dataset.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the VRML reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;wrl vrml&quot;
+          file_description=&quot;VRML 2 Files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End vrmlreader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;plyreader&quot; class=&quot;vtkPLYReader&quot; label=&quot;PLY Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read PLY polygonal files.&quot;
+       long_help=&quot;Read files stored in Stanford University's PLY polygonal file format.&quot;&gt;
+       The PLY reader reads files stored in the PLY polygonal file format developed at Stanford University. The PLY files that ParaView can read must have the elements &quot;vertex&quot; and &quot;face&quot; defined. The &quot;vertex&quot; elements must have the propertys &quot;x&quot;, &quot;y&quot;, and &quot;z&quot;. The &quot;face&quot; elements must have the property &quot;vertex_indices&quot; defined. The default file extension for this reader is .ply.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the PLY reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;ply&quot;
+          file_description=&quot;PLY Polygonal File Format&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End plyreader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;pdbreader&quot; class=&quot;vtkPDBReader&quot; label=&quot;PDB Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read PDB files.&quot;
+       long_help=&quot;Read PDB molecule files.&quot;&gt;
+       The PDB reader reads files in the format used by the Protein Data Bank (an archive of experimentally determined three-dimensional structures of biological macromolecules). The expected file extension is .pdb. The output datasets are polygonal.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the PDB reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;pdb&quot; file_description=&quot;Protein Data Bank Files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End pdbreader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;xyzreader&quot; class=&quot;vtkXYZMolReader&quot; label=&quot;XYZ Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read XYZ molecular data files.&quot;
+       long_help=&quot;Read XYZ molecular data files into a polygonal dataset.&quot;&gt;
+       The XYZ reader reads XYZ molecular data files. The expected file extension is .xyz. The output of this reader is a polygonal dataset.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the XYZ reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;TimeStep&quot;
+        command=&quot;SetTimeStep&quot;
+        number_of_elements=&quot;1&quot;
+        animateable=&quot;1&quot;
+        default_values=&quot;0&quot; &gt;
+       &lt;IntRangeDomain name=&quot;range&quot;/&gt;
+       &lt;Documentation&gt;
+         This property specifies the timestep the XYZ reader should load.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;xyz&quot;
+          file_description=&quot;XMol Molecule Files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End xyzreader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;PhastaReader&quot; 
+                class=&quot;vtkPPhastaReader&quot;
+                label=&quot;Phasta Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read datasets stored in the Phasta format.&quot;
+       long_help=&quot;Read the parallel Phasta meta-file and the underlying Phasta files.&quot;&gt;
+       This Phasta reader reads files stored in the Phasta (a CFD package) format. The expected file extension is .pht. The output of this reader is a multipiece data set.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the Phasta reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty 
+         name=&quot;TimestepValues&quot;
+         repeatable=&quot;1&quot;
+         information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;pht&quot;
+          file_description=&quot;Phasta Files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;/SourceProxy&gt;
+      
+   &lt;SourceProxy name=&quot;EnzoReader&quot; 
+                class=&quot;vtkEnzoReader&quot;
+                label=&quot;Enzo Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read multi-block dataset from an Enzo file.&quot;
+       long_help=&quot;Read multi-block dataset from an Enzo file.&quot;&gt;
+         This Enzo reader loads data stored in Enzo format. The output of this reader is a multi-block dataset.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+            This property specifies the file name for the Enzo reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+       
+     &lt;IntVectorProperty 
+       name=&quot;BlockOutputType&quot; 
+       command=&quot;SetBlockOutputType&quot;
+       number_of_elements=&quot;1&quot;
+       default_values=&quot;0&quot;
+       animateable=&quot;0&quot;&gt;
+       &lt;EnumerationDomain name=&quot;enum&quot;&gt;
+         &lt;Entry value=&quot;0&quot; text=&quot;Image Data&quot;/&gt;
+         &lt;Entry value=&quot;1&quot; text=&quot;Rectilinear Grid&quot;/&gt;
+       &lt;/EnumerationDomain&gt;
+       &lt;Documentation&gt;
+         The property indicates the output type of each block, either vtkImageData (by default) or vtkRectilinearGrid.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+       name=&quot;MaxLevel&quot; 
+       command=&quot;SetMaxLevel&quot; 
+       number_of_elements=&quot;1&quot;
+       default_values=&quot;100&quot; &gt; 
+       &lt;IntRangeDomain name=&quot;range&quot;/&gt;
+       &lt;Documentation&gt;
+         Do not blocks above this level.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty name=&quot;LoadParticles&quot;
+       command=&quot;SetLoadParticles&quot;
+       number_of_elements=&quot;1&quot;
+       default_values=&quot;1&quot;&gt;
+       &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+       &lt;Documentation&gt;
+         Load particles when on.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;boundary hierarchy&quot;
+          file_description=&quot;Enzo Files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;/SourceProxy&gt;
+      
+   &lt;SourceProxy name=&quot;FlashReader&quot; 
+                class=&quot;vtkFlashReader&quot;
+                label=&quot;Flash Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read multi-block dataset from a Flash file.&quot;
+       long_help=&quot;Read multi-block dataset from a Flash file.&quot;&gt;
+         This Flash reader loads data stored in Flash format. The output of this reader is a multi-block dataset.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+            This property specifies the file name for the Flash reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+       
+     &lt;IntVectorProperty 
+       name=&quot;BlockOutputType&quot; 
+       command=&quot;SetBlockOutputType&quot;
+       number_of_elements=&quot;1&quot;
+       default_values=&quot;0&quot;
+       animateable=&quot;0&quot;&gt;
+       &lt;EnumerationDomain name=&quot;enum&quot;&gt;
+         &lt;Entry value=&quot;0&quot; text=&quot;Image Data&quot;/&gt;
+         &lt;Entry value=&quot;1&quot; text=&quot;Rectilinear Grid&quot;/&gt;
+       &lt;/EnumerationDomain&gt;
+       &lt;Documentation&gt;
+         The property indicates the output type of each block, either vtkImageData (by default) or vtkRectilinearGrid.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty name=&quot;LoadParticles&quot;
+       command=&quot;SetLoadParticles&quot;
+       number_of_elements=&quot;1&quot;
+       default_values=&quot;1&quot;&gt;
+       &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+       &lt;Documentation&gt;
+         Load particles when on.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty name=&quot;LoadMortonCurve&quot;
+       command=&quot;SetLoadMortonCurve&quot;
+       number_of_elements=&quot;1&quot;
+       default_values=&quot;0&quot;&gt;
+       &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+       &lt;Documentation&gt;
+         Generate morton curve when on.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;Flash flash&quot;
+          file_description=&quot;Flash Files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;stlreader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;STL Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation
+         short_help=&quot;Read STL files.&quot;
+       long_help=&quot;Read ASCII or binary stereo lithography (STL) files.&quot;&gt;
+       The STL reader reads ASCII or binary stereo lithography (STL) files. The expected file extension is .stl. The output of this reader is a polygonal dataset. This reader also supports file series.
+     &lt;/Documentation&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot; proxyname=&quot;stlreadercore&quot;&gt;
+       &lt;/Proxy&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     
+     &lt;StringVectorProperty
+        name=&quot;FileNames&quot;
+        clean_command=&quot;RemoveAllFileNames&quot;
+        command=&quot;AddFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        information_property=&quot;FileNameInfo&quot; &gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. If more than 1 file is specified, the reader will switch to file series mode in which it will pretend that it can support time and provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty 
+        name=&quot;TimestepValues&quot;
+        repeatable=&quot;1&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;stl&quot;
+          file_description=&quot;Stereo Lithography&quot; /&gt;
+     &lt;/Hints&gt;
+     &lt;!-- End stlreader--&gt;
+   &lt;/FileSeriesReaderProxy&gt;
+
+   &lt;SourceProxy name=&quot;byureader&quot; class=&quot;vtkBYUReader&quot; label=&quot;BYU Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read Movie.BYU files.&quot;
+       long_help=&quot;Read Movie.BYU files to produce polygonal data.&quot;&gt;
+       The BYU reader reads data stored in Movie.BYU format. The expected file extension is .g. The datasets resulting from reading these files are polygonal.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the BYU reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;g&quot;
+          file_description=&quot;BYU Files&quot;/&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End byureader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;objreader&quot; class=&quot;vtkOBJReader&quot; label=&quot;Wavefront OBJ Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read Wavefront .OBJ files.&quot;
+       long_help=&quot;Read Wavefront .OBJ files to produce polygonal and line data.&quot;&gt;
+       The OBJ reader reads data stored in Wavefront .OBJ format.
+       The expected file extension is .obj, the datasets resulting
+       from reading these files are polygons and lines.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the OBJ reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;obj&quot;
+          file_description=&quot;Wavefront OBJ Files&quot;/&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End vtkOBJReader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;gaussiancubereader&quot; class=&quot;vtkGaussianCubeReader&quot;
+                label=&quot;Gaussian Cube Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read Gaussian Cube data files.&quot;
+       long_help=&quot;Produce polygonal data by reading a Gaussian Cube file.&quot;&gt;
+       The Gaussian Cube reader produces polygonal data by reading data files produced by the Gaussian software package. The expected file extension is .cube.
+     &lt;/Documentation&gt;
+
+     &lt;OutputPort name=&quot;Output&quot; index=&quot;0&quot; /&gt;
+     &lt;OutputPort name=&quot;Gridded Data&quot; index=&quot;1&quot; /&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the Gaussian Cube reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+      &lt;DoubleVectorProperty
+         name=&quot;HBScale&quot;
+         command=&quot;SetHBScale&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;1.0&quot; &gt;
+        &lt;DoubleRangeDomain name=&quot;range&quot;/&gt;
+        &lt;Documentation&gt;
+          A scaling factor to compute bonds with hydrogen atoms.
+        &lt;/Documentation&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+      &lt;DoubleVectorProperty
+         name=&quot;BScale&quot;
+         command=&quot;SetBScale&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;1.0&quot; &gt;
+        &lt;DoubleRangeDomain name=&quot;range&quot;/&gt;
+        &lt;Documentation&gt;
+          A scaling factor to compute bonds between non-hydrogen atoms
+        &lt;/Documentation&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;cube&quot;
+          file_description=&quot;Gaussian Cube Files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End gaussiancubereader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;popreader&quot; class=&quot;vtkPOPReader&quot; label=&quot;POP Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read POP data files.&quot;
+       long_help=&quot;Read data files from the Parallel Ocean Program (POP).&quot;&gt;
+       The POP reader reads data files from the Parallel Ocean Program (POP). The expected file extension is .pop. The output of this reader is a structured grid dataset. 
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the POP Ocean file reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+      &lt;DoubleVectorProperty
+         name=&quot;Radius&quot;
+         command=&quot;SetRadius&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;60000&quot; &gt;
+        &lt;DoubleRangeDomain name=&quot;range&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the radius of the dataset.
+        &lt;/Documentation&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;ClipExtent&quot; 
+        command=&quot;SetClipExtent&quot; 
+        number_of_elements=&quot;6&quot;
+        default_values=&quot;-2147483647 2147483647 -2147483647 2147483647 -2147483647 2147483647&quot; &gt; 
+       &lt;IntRangeDomain name=&quot;range&quot;/&gt;
+       &lt;Documentation&gt;
+         This property indicates the minimum and maximum extent in each dimension of the dataset (X, Y, and Z) to read.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;NumberOfGhostLevels&quot; 
+        command=&quot;SetNumberOfGhostLevels&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;1&quot; &gt; 
+       &lt;IntRangeDomain name=&quot;range&quot;/&gt;
+       &lt;Documentation&gt;
+         This property indicates the number of ghost levels to generate.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;pop&quot;
+          file_description=&quot;POP Ocean Files&quot;/&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End popreader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;ensightMS&quot; 
+                class=&quot;vtkPVEnSightMasterServerReader2&quot;
+                label=&quot;EnSight Master Server Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read parallel EnSight files.&quot;
+       long_help=&quot;Read files in EnSight's Master Server format.&quot;&gt;
+       The EnSight Master Server reader reads EnSight's parallel files. The master file ususally has a .sos extension and may point to multiple .case files. The output is a multi-block dataset.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;CaseFileName&quot;
+        command=&quot;SetCaseFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the name of the .sos file for the EnSight Master Server reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+       name=&quot;ByteOrder&quot; 
+       command=&quot;SetByteOrder&quot; 
+       number_of_elements=&quot;1&quot;
+       default_values=&quot;0&quot; &gt;
+       &lt;EnumerationDomain name=&quot;enum&quot;&gt;
+         &lt;Entry value=&quot;0&quot; text=&quot;BigEndian&quot;/&gt;
+         &lt;Entry value=&quot;1&quot; text=&quot;LittleEndian&quot;/&gt;
+       &lt;/EnumerationDomain&gt;
+       &lt;Documentation&gt;
+         This property indicates the byte order of the binary file(s).
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;  
+       
+     &lt;DoubleVectorProperty 
+       name=&quot;TimestepValues&quot;
+       repeatable=&quot;1&quot;
+       information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+       &lt;Documentation&gt;
+         Available timestep values.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;DoubleVectorProperty
+       name=&quot;SetTimeValue&quot;
+       command=&quot;SetTimeValue&quot;
+       number_of_elements=&quot;1&quot;
+       default_values=&quot;0.0&quot; 
+       animateable=&quot;1&quot;&gt;
+       &lt;DoubleRangeDomain name=&quot;range&quot;/&gt;
+       &lt;Documentation&gt;
+         This property indicates which time value to read.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+       name=&quot;CellArrayInfo&quot;
+       information_only=&quot;1&quot;&gt;
+       &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+    &lt;StringVectorProperty
+        name=&quot;CellArrayStatus&quot;
+        command=&quot;SetCellArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;CellArrayInfo&quot;
+        label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; 
+        information_property=&quot;PointArrayInfo&quot;
+        label=&quot;Point Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which point-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;sos SOS&quot;
+          file_description=&quot;EnSight Master Server Files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End ensightMS --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;ImageReader&quot; 
+                class=&quot;vtkMPIImageReader&quot;
+                label=&quot;Image Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read raw regular rectilinear grid data from a file.&quot; 
+       long_help=&quot;Read raw regular rectilinear grid data from a file. The dimensions and type of the data must be specified.&quot;&gt;
+       The Image reader reads raw regular rectilinear grid (image/volume) data from a file. Because no metadata is provided, the user must specify information about the size, spacing, dimensionality, etc. about the dataset.
+     &lt;/Documentation&gt;
+     &lt;!-- Unlike most readers, we need to show the &quot;filename&quot; so that users
+          can strip off the extension and replace it in the file pattern.
+          I'm creating this &quot;Property&quot; hint that has an attribute to force
+          whether the given property is shown in the GUI or not. --&gt;
+     &lt;Hints&gt;
+       &lt;Property name=&quot;FilePrefix&quot; show=&quot;1&quot;/&gt;
+       &lt;ReaderFactory extensions=&quot;raw&quot;
+          file_description=&quot;Raw (binary) Files&quot; /&gt;
+     &lt;/Hints&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FilePrefix&quot;
+        command=&quot;SetFilePrefix&quot;
+        number_of_elements=&quot;1&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The text string contained in this property specifies the file prefix (directory plus common initial part of file name) for the raw binary uniform rectilinear grid dataset.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FilePattern&quot;
+        command=&quot;SetFilePattern&quot;
+        number_of_elements=&quot;1&quot; 
+        default_values=&quot;%s&quot;&gt;
+        &lt;Documentation&gt;
+          The text string contained in the property specifies the format string to determine the file names necessary for reading this dataset. In creating the filenames, %s will be replaced by the prefix and %d by a digit which represents the slice number in Z. The format string is the same as that used by printf.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;DataScalarType&quot; 
+        command=&quot;SetDataScalarType&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;4&quot; &gt;
+       &lt;EnumerationDomain name=&quot;enum&quot;&gt;
+         &lt;Entry value=&quot;2&quot; text=&quot;char&quot;/&gt;
+         &lt;Entry value=&quot;3&quot; text=&quot;unsigned char&quot;/&gt;
+         &lt;Entry value=&quot;4&quot; text=&quot;short&quot;/&gt;
+         &lt;Entry value=&quot;5&quot; text=&quot;unsigned short&quot;/&gt;
+         &lt;Entry value=&quot;6&quot; text=&quot;int&quot;/&gt;
+         &lt;Entry value=&quot;7&quot; text=&quot;unsigned int&quot;/&gt;
+         &lt;Entry value=&quot;8&quot; text=&quot;long&quot;/&gt;
+         &lt;Entry value=&quot;9&quot; text=&quot;unsigned long&quot;/&gt;
+         &lt;Entry value=&quot;10&quot; text=&quot;float&quot;/&gt;
+         &lt;Entry value=&quot;11&quot; text=&quot;double&quot;/&gt;
+       &lt;/EnumerationDomain&gt;
+       &lt;Documentation&gt;
+         The value of this property indicates the scalar type of the pixels/voxels in the file(s): short, int, float ...
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;DataByteOrder&quot; 
+        command=&quot;SetDataByteOrder&quot; 
+        number_of_elements=&quot;1&quot;
+        default_values=&quot;0&quot; &gt;
+       &lt;EnumerationDomain name=&quot;enum&quot;&gt;
+         &lt;Entry value=&quot;0&quot; text=&quot;BigEndian&quot;/&gt;
+         &lt;Entry value=&quot;1&quot; text=&quot;LittleEndian&quot;/&gt;
+       &lt;/EnumerationDomain&gt;
+       &lt;Documentation&gt;
+         This property indicates the byte order of the binary file(s).
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;FileDimensionality&quot;
+        command=&quot;SetFileDimensionality&quot;
+        number_of_elements=&quot;1&quot; 
+        default_values=&quot;3&quot;&gt;
+       &lt;EnumerationDomain name=&quot;enum&quot;&gt;
+         &lt;Entry value=&quot;2&quot; text=&quot;2&quot;/&gt;
+         &lt;Entry value=&quot;3&quot; text=&quot;3&quot;/&gt;
+       &lt;/EnumerationDomain&gt;
+       &lt;Documentation&gt;
+         This property indicates whether the file(s) in this dataset contain slices (2D) or volumes (3D).
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+      &lt;DoubleVectorProperty
+         name=&quot;DataOrigin&quot;
+         command=&quot;SetDataOrigin&quot;
+         number_of_elements=&quot;3&quot;
+         default_values=&quot;0.0 0.0 0.0&quot; &gt;
+        &lt;DoubleRangeDomain name=&quot;range&quot;/&gt;
+        &lt;Documentation&gt;
+          The coordinate contained in this property specifies the position of the point with index (0,0,0).
+        &lt;/Documentation&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+      &lt;DoubleVectorProperty
+         name=&quot;DataSpacing&quot;
+         command=&quot;SetDataSpacing&quot;
+         number_of_elements=&quot;3&quot;
+         default_values=&quot;1.0 1.0 1.0&quot; &gt;
+        &lt;DoubleRangeDomain name=&quot;range&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the size of a voxel in each dimension.
+        &lt;/Documentation&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;DataExtent&quot;
+        command=&quot;SetDataExtent&quot;
+        number_of_elements=&quot;6&quot; 
+        default_values=&quot;0 0 0 0 0 0&quot; &gt;
+       &lt;IntRangeDomain name=&quot;range&quot;/&gt;
+       &lt;Documentation&gt;
+         This property specifies the minimum and maximum index values of the data in each dimension (xmin, xmax, ymin, ymax, zmin, zmax).
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+        name=&quot;NumberOfScalarComponents&quot;
+        command=&quot;SetNumberOfScalarComponents&quot;
+        number_of_elements=&quot;1&quot; 
+        default_values=&quot;1&quot; &gt;
+       &lt;IntRangeDomain name=&quot;range&quot;/&gt;
+       &lt;Documentation&gt;
+         This property specifies the number of componenets the scalar value at each pixel or voxel has (e.g., RGB - 3 scalar components).
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;ScalarArrayName&quot;
+        command=&quot;SetScalarArrayName&quot;
+        number_of_elements=&quot;1&quot; 
+        default_values=&quot;ImageFile&quot;&gt;
+        &lt;Documentation&gt;
+          This property contains a text string listing a name to assign to the point-centered data array read.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty name=&quot;FileLowerLeft&quot;
+                        command=&quot;SetFileLowerLeft&quot;
+                        number_of_elements=&quot;1&quot;
+                        default_values=&quot;1&quot;&gt;
+       &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+       &lt;Documentation&gt;
+         This property determines whether the data originates in the lower left corner (on) or the upper left corner (off).  Most scientific data is written with a right-handed axes that originates in the lower left corner.  However, several 2D image file formats write the image from the upper left corner.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+   &lt;!-- End ImageReader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;NrrdReader&quot;
+                class=&quot;vtkPNrrdReader&quot;
+                label=&quot;Nrrd Reader&quot;&gt;
+     &lt;Documentation short_help=&quot;Read raw image files with Nrrd meta data.&quot;
+                    long_help=&quot;Read raw image files with Nrrd meta data.&quot;&gt;
+       The Nrrd reader reads raw image data much like the Raw Image Reader
+       except that it will also read metadata information in the Nrrd format.
+       This means that the reader will automatically set information like file
+       dimensions.
+
+       There are several limitations on what type of nrrd files we can
+       read.  This reader only supports nrrd files in raw format.  Other
+       encodings like ascii and hex will result in errors.  When reading in
+       detached headers, this only supports reading one file that is
+       detached.
+     &lt;/Documentation&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           command=&quot;SetFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;1&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot; /&gt;
+       &lt;Documentation&gt;
+         The name of the file to read (or the meta data file that will
+         point to the actual file).
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty name=&quot;DataVOI&quot;
+                        command=&quot;SetDataVOI&quot;
+                        label=&quot;Data VOI&quot;
+                        number_of_elements=&quot;6&quot;
+                        default_values=&quot;0 0 0 0 0 0&quot;&gt;
+       &lt;Documentation&gt;
+         The data volume of interest (VOI).  The VOI is a sub-extent of the
+         data that you want loaded.  Setting a VOI is useful when reading
+         from a large data set and you are only interested in a small
+         portion of the data.  If left containing all 0's, then the reader
+         will load in the entire data set.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;Hints&gt;
+       &lt;ReaderFactory extensions=&quot;nrrd nhdr&quot;
+                      file_description=&quot;Nrrd Raw Image Files&quot; /&gt;
+     &lt;/Hints&gt;
+
+   &lt;/SourceProxy&gt; &lt;!-- NrrdReader --&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;PNGReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;PNG Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read a PNG file.&quot;
+       long_help=&quot;Read a PNG file into an image data.&quot;&gt;
+       The PNG reader reads PNG (Portable Network Graphics) files, and the output is a uniform rectilinear (image/volume) dataset. The default file extension is .png.
+     &lt;/Documentation&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FileNames&quot;
+        clean_command=&quot;RemoveAllFileNames&quot;
+        command=&quot;AddFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;0&quot;
+        repeat_command=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. If more than 1 file is specified,
+         the reader will switch to file series mode in which it will pretend that it
+         can support time and provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty
+        name=&quot;TimestepValues&quot;
+        repeatable=&quot;1&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;SubProxy&gt;
+        &lt;Proxy name=&quot;Reader&quot;
+          proxygroup=&quot;internal_sources&quot; proxyname=&quot;PNGReaderCore&quot;&gt;
+        &lt;/Proxy&gt;
+      &lt;/SubProxy&gt;
+
+     &lt;Hints&gt;
+        &lt;ReaderFactory extensions=&quot;png&quot;
+          file_description=&quot;PNG Image Files&quot; /&gt;
+     &lt;/Hints&gt;
+
+     &lt;!-- End FileSeriesPNGReader --&gt;
+   &lt;/FileSeriesReaderProxy&gt;
+
+   &lt;SourceProxy name=&quot;XdmfReader&quot; 
+                class=&quot;vtkXdmfReader&quot;
+                label=&quot;XDMF Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read XDMF data files.&quot;
+       long_help=&quot;Read XDMF (eXtensible Data Model and Format) files.&quot;&gt;
+       The XDMF reader reads files in XDMF format. The expected file extension
+       is .xmf. Metadata is stored in the XDMF file using an XML format, and
+       large attribute arrays are stored in a corresponding HDF5 file. The
+       output may be unstructured grid, structured grid, or rectiliner grid.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the XDMF reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+        information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;PointArrayInfo&quot;
+        animateable=&quot;0&quot;
+        label=&quot;Point Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which the point-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;CellArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;CellArrayStatus&quot;
+        command=&quot;SetCellArrayStatus&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;CellArrayInfo&quot;
+        animateable=&quot;0&quot;
+        label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which the cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty 
+        name=&quot;SetInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Set&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;SetStatus&quot;
+        label=&quot;Sets&quot;
+        command=&quot;SetSetStatus&quot;
+        number_of_elements=&quot;2&quot; 
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;SetInfo&quot;&gt; 
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;SetInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         Select the sets to be loaded from the dataset, if any.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;GridInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;SILInformationHelper
+          timestamp_command=&quot;GetSILUpdateStamp&quot;
+          subtree=&quot;Blocks&quot;&gt;
+        &lt;/SILInformationHelper&gt;
+     &lt;/StringVectorProperty&gt;
+     
+     &lt;StringVectorProperty
+        name=&quot;GridStatus&quot;
+        label=&quot;Grids&quot;
+        command=&quot;SetGridStatus&quot;
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot; &gt;
+       &lt;SILDomain name=&quot;array_list&quot; subtree=&quot;Grids&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;GridInfo&quot; function=&quot;ArrayList&quot; /&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/SILDomain&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;Stride&quot;
+        command=&quot;SetStride&quot;
+        number_of_elements=&quot;3&quot;
+        default_values=&quot;1 1 1&quot; 
+        animateable=&quot;0&quot;&gt;
+        &lt;IntRangeDomain name=&quot;range&quot; min=&quot;1 1 1&quot; /&gt;
+        &lt;Documentation&gt;
+         If loading structured data, this property indicate the number of
+         indices per dimension (X, Y, or Z) to skip between each point included
+         in this output.
+        &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;xmf xdmf&quot;
+          file_description=&quot;Xdmf Reader&quot; /&gt;
+     &lt;/Hints&gt;
+
+     &lt;!-- End of XdmfReader --&gt;
+   &lt;/SourceProxy&gt;
+
+#ifdef PARAVIEW_USE_SILO
+   &lt;SourceProxy name=&quot;SiloReader&quot; 
+                class=&quot;vtkSiloReader&quot;
+                label=&quot;Silo Reader&quot;&gt;
+     &lt;Documentation
+        short_help=&quot;Read a Silo data file.&quot;
+        long_help=&quot;Reads a Silo data file and generates multi block dataset.&quot;&gt;
+        The Silo reader loads Silo files and produces multi block data set output.  The default file extension is .silo.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+         name=&quot;FileName&quot;
+         animateable=&quot;0&quot;
+         command=&quot;SetFileName&quot;
+         number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+           This property specifies the file name for the Silo reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+     &lt;StringVectorProperty
+         name=&quot;TOCString&quot;
+         command=&quot;GetTOCString&quot;
+         information_only=&quot;1&quot;&gt;
+        &lt;Documentation&gt;
+           This property is a string representation of the table of contents.
+        &lt;/Documentation&gt;
+        &lt;SimpleStringInformationHelper/&gt;
+     &lt;/StringVectorProperty&gt;
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;silo&quot;
+          file_description=&quot;Silo Files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End SiloReader --&gt;
+   &lt;/SourceProxy&gt;
+#endif
+
+   &lt;FileSeriesReaderProxy name=&quot;ExodusIIReader&quot;
+                          class=&quot;vtkExodusFileSeriesReader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read Exodus II files.&quot;
+       long_help=&quot;Read an Exodus II file to produce an unstructured grid.&quot;&gt;
+        The Exodus reader loads Exodus II files and produces an unstructured grid output. The default file extensions are .g, .e, .ex2, .ex2v2, .exo, .gen, .exoII, .exii, .0, .00, .000, and .0000 .
+     &lt;/Documentation&gt;
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot; proxyname=&quot;ExodusIIReaderCore&quot; /&gt;
+       &lt;ExposedProperties&gt;
+         &lt;Property name=&quot;FilePrefix&quot; /&gt;
+         &lt;Property name=&quot;FilePrefixInfo&quot; /&gt;
+         &lt;Property name=&quot;FilePattern&quot; /&gt;
+         &lt;Property name=&quot;FilePatternInfo&quot; /&gt;
+         &lt;Property name=&quot;FileRange&quot; /&gt;
+         &lt;Property name=&quot;FileRangeInfo&quot; /&gt;
+         &lt;Property name=&quot;XMLFileName&quot; /&gt;
+         &lt;Property name=&quot;XMLFileNameInfo&quot; /&gt;
+         &lt;Property name=&quot;HasModeShapes&quot; /&gt;
+         &lt;Property name=&quot;ModeShape&quot; /&gt;
+         &lt;Property name=&quot;AnimateVibrations&quot; /&gt;
+         &lt;Property name=&quot;Refresh&quot; /&gt;
+         &lt;Property name=&quot;SILUpdateStamp&quot; /&gt;
+         &lt;Property name=&quot;EdgeBlocks&quot; /&gt;
+         &lt;Property name=&quot;EdgeBlocksInfo&quot; /&gt;
+         &lt;Property name=&quot;FaceBlocks&quot; /&gt;
+         &lt;Property name=&quot;FaceBlocksInfo&quot; /&gt;
+         &lt;Property name=&quot;ElementBlocks&quot; /&gt;
+         &lt;Property name=&quot;GlobalVariables&quot; /&gt;
+         &lt;Property name=&quot;GlobalVariablesInfo&quot; /&gt;
+         &lt;Property name=&quot;PointVariables&quot; /&gt;
+         &lt;Property name=&quot;PointVariablesInfo&quot; /&gt;
+         &lt;Property name=&quot;EdgeVariables&quot; /&gt;
+         &lt;Property name=&quot;EdgeVariablesInfo&quot; /&gt;
+         &lt;Property name=&quot;FaceVariables&quot; /&gt;
+         &lt;Property name=&quot;FaceVariablesInfo&quot; /&gt;
+         &lt;Property name=&quot;ElementVariables&quot; /&gt;
+         &lt;Property name=&quot;ElementVariablesInfo&quot; /&gt;
+         &lt;Property name=&quot;NodeMapInfo&quot; /&gt;
+         &lt;Property name=&quot;NodeMapArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;EdgeMapInfo&quot; /&gt;
+         &lt;Property name=&quot;EdgeMapArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;FaceMapInfo&quot; /&gt;
+         &lt;Property name=&quot;FaceMapArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;ElementMapInfo&quot; /&gt;
+         &lt;Property name=&quot;ElementMapArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;NodeSetInfo&quot; /&gt;
+         &lt;Property name=&quot;NodeSetArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;SideSetInfo&quot; /&gt;
+         &lt;Property name=&quot;SideSetArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;FaceSetInfo&quot; /&gt;
+         &lt;Property name=&quot;FaceSetArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;EdgeSetInfo&quot; /&gt;
+         &lt;Property name=&quot;EdgeSetArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;ElementSetInfo&quot; /&gt;
+         &lt;Property name=&quot;ElementSetArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;ElementSetResultArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;ElementSetResultArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;SideSetResultArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;SideSetResultArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;FaceSetResultArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;FaceSetResultArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;EdgeSetResultArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;EdgeSetResultArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;NodeSetResultArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;NodeSetResultArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;ApplyDisplacements&quot; /&gt;
+         &lt;Property name=&quot;DisplacementMagnitude&quot; /&gt;
+         &lt;Property name=&quot;GenerateObjectIdCellArray&quot; /&gt;
+         &lt;Property name=&quot;GenerateGlobalNodeIdArray&quot; /&gt;
+         &lt;Property name=&quot;GenerateGlobalElementIdArray&quot; /&gt;
+         &lt;Property name=&quot;ExodusModelMetadata&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+                           command=&quot;GetCurrentFileName&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           clean_command=&quot;RemoveAllFileNames&quot;
+                           command=&quot;AddFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;0&quot;
+                           information_property=&quot;FileNameInfo&quot;
+                           repeat_command=&quot;1&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot; /&gt;
+       &lt;Documentation&gt;
+         This property specifies the file name for the Exodus reader.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty name=&quot;UseMetaFile&quot;
+                        command=&quot;SetUseMetaFile&quot;
+                        number_of_elements=&quot;1&quot;
+                        default_values=&quot;0&quot;&gt;
+       &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+       &lt;Documentation&gt;
+         This hidden property must always be set to 1 for this proxy to work.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot; 
+                           repeatable=&quot;1&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+       &lt;!-- This property is here simply to set it. --&gt;
+       &lt;Property name=&quot;UseMetaFile&quot; show=&quot;0&quot; /&gt;
+       &lt;!-- This is for special GUI control. --&gt;
+       &lt;Property name=&quot;Refresh&quot; show=&quot;0&quot;/&gt;
+       &lt;ReaderFactory 
+          extensions=&quot;g e ex2 ex2v2 exo gen exoII 0 00 000 0000 exii&quot;
+          file_description=&quot;ExodusII&quot;/&gt;
+     &lt;/Hints&gt;
+     &lt;!-- ExodusIIReader --&gt;
+   &lt;/FileSeriesReaderProxy&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;ExodusRestartReader&quot;
+                          class=&quot;vtkExodusFileSeriesReader&quot;
+                          label=&quot;Restarted Sim Exodus Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation short_help=&quot;Read Exodus files from simulation restarts.&quot;
+                    long_help=&quot;Read collections of Exodus output files from simulations that were restarted.&quot;&gt;
+       When a simulation that outputs exodus files is restarted, typically you get a new set of output files.  When you read them in your visualization, you often want to string these file sets together as if it was one continuous dump of files.  This reader allows you to specify a metadata file that will implicitly string the files together.
+     &lt;/Documentation&gt;
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot; proxyname=&quot;ExodusIIReaderCore&quot; /&gt;
+       &lt;ExposedProperties&gt;
+         &lt;Property name=&quot;XMLFileNameInfo&quot; /&gt;
+         &lt;Property name=&quot;XMLFileName&quot; /&gt;
+         &lt;Property name=&quot;HasModeShapes&quot; /&gt;
+         &lt;Property name=&quot;ModeShape&quot; /&gt;
+         &lt;Property name=&quot;AnimateVibrations&quot; /&gt;
+         &lt;Property name=&quot;Refresh&quot; /&gt;
+         &lt;Property name=&quot;SILUpdateStamp&quot; /&gt;
+         &lt;Property name=&quot;EdgeBlocks&quot; /&gt;
+         &lt;Property name=&quot;EdgeBlocksInfo&quot; /&gt;
+         &lt;Property name=&quot;FaceBlocks&quot; /&gt;
+         &lt;Property name=&quot;FaceBlocksInfo&quot; /&gt;
+         &lt;Property name=&quot;ElementBlocks&quot; /&gt;
+         &lt;Property name=&quot;GlobalVariables&quot; /&gt;
+         &lt;Property name=&quot;GlobalVariablesInfo&quot; /&gt;
+         &lt;Property name=&quot;PointVariables&quot; /&gt;
+         &lt;Property name=&quot;PointVariablesInfo&quot; /&gt;
+         &lt;Property name=&quot;EdgeVariables&quot; /&gt;
+         &lt;Property name=&quot;EdgeVariablesInfo&quot; /&gt;
+         &lt;Property name=&quot;FaceVariables&quot; /&gt;
+         &lt;Property name=&quot;FaceVariablesInfo&quot; /&gt;
+         &lt;Property name=&quot;ElementVariables&quot; /&gt;
+         &lt;Property name=&quot;ElementVariablesInfo&quot; /&gt;
+         &lt;Property name=&quot;NodeMapInfo&quot; /&gt;
+         &lt;Property name=&quot;NodeMapArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;EdgeMapInfo&quot; /&gt;
+         &lt;Property name=&quot;EdgeMapArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;FaceMapInfo&quot; /&gt;
+         &lt;Property name=&quot;FaceMapArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;ElementMapInfo&quot; /&gt;
+         &lt;Property name=&quot;ElementMapArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;NodeSetInfo&quot; /&gt;
+         &lt;Property name=&quot;NodeSetArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;SideSetInfo&quot; /&gt;
+         &lt;Property name=&quot;SideSetArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;FaceSetInfo&quot; /&gt;
+         &lt;Property name=&quot;FaceSetArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;EdgeSetInfo&quot; /&gt;
+         &lt;Property name=&quot;EdgeSetArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;ElementSetInfo&quot; /&gt;
+         &lt;Property name=&quot;ElementSetArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;ElementSetResultArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;ElementSetResultArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;SideSetResultArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;SideSetResultArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;FaceSetResultArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;FaceSetResultArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;EdgeSetResultArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;EdgeSetResultArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;NodeSetResultArrayInfo&quot; /&gt;
+         &lt;Property name=&quot;NodeSetResultArrayStatus&quot; /&gt;
+         &lt;Property name=&quot;ApplyDisplacements&quot; /&gt;
+         &lt;Property name=&quot;DisplacementMagnitude&quot; /&gt;
+         &lt;Property name=&quot;GenerateObjectIdCellArray&quot; /&gt;
+         &lt;Property name=&quot;GenerateGlobalNodeIdArray&quot; /&gt;
+         &lt;Property name=&quot;GenerateGlobalElementIdArray&quot; /&gt;
+         &lt;Property name=&quot;ExodusModelMetadata&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+                           command=&quot;GetCurrentFileName&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           animateable=&quot;0&quot;
+                           command=&quot;SetMetaFileName&quot;
+                           information_property=&quot;FileNameInfo&quot;
+                           number_of_elements=&quot;1&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot; /&gt;
+       &lt;Documentation&gt;
+         This points to a special metadata file that lists the output files for each restart.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty name=&quot;UseMetaFile&quot;
+                        command=&quot;SetUseMetaFile&quot;
+                        number_of_elements=&quot;1&quot;
+                        default_values=&quot;1&quot;&gt;
+       &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+       &lt;Documentation&gt;
+         This hidden property must always be set to 1 for this proxy to work.
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot; 
+                           repeatable=&quot;1&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+       &lt;!-- This property is here simply to set it. --&gt;
+       &lt;Property name=&quot;UseMetaFile&quot; show=&quot;0&quot; /&gt;
+       &lt;!-- This is for special GUI control. --&gt;
+       &lt;Property name=&quot;Refresh&quot; show=&quot;0&quot;/&gt;
+
+      &lt;ReaderFactory extensions=&quot;ex-timeseries&quot;
+          file_description=&quot;Metafile for restarted exodus outputs&quot; /&gt;
+     &lt;/Hints&gt;
+     &lt;!-- ExodusRestartReader --&gt;
+   &lt;/FileSeriesReaderProxy&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;AVSucdSeriesReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;AVS UCD Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read a dataset in AVS UCD format.&quot;
+       long_help=&quot;Read binary or ASCII files stored in AVS UCD format.&quot;&gt;
+       The AVS UCD reader reads binary or ASCII files stored in AVS UCD format.
+       The default file extension is .inp. The output of this reader is
+       unstructured grid. This supports reading a file series.
+     &lt;/Documentation&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+         proxygroup=&quot;internal_sources&quot; proxyname=&quot;AVSucdReader&quot;&gt;
+       &lt;/Proxy&gt;
+       &lt;ExposedProperties&gt;
+          &lt;Property name=&quot;CellArrayInfo&quot; /&gt;
+          &lt;Property name=&quot;CellArrayStatus&quot; /&gt;
+          &lt;Property name=&quot;PointArrayInfo&quot; /&gt;
+          &lt;Property name=&quot;PointArrayStatus&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+
+     &lt;StringVectorProperty
+        name=&quot;FileNames&quot;
+        clean_command=&quot;RemoveAllFileNames&quot;
+        command=&quot;AddFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        information_property=&quot;FileNameInfo&quot; &gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader. If more than 1 file is
+         specified, the reader will switch to file series mode in which it will
+         pretend that it can support time and provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty 
+        name=&quot;TimestepValues&quot;
+        repeatable=&quot;1&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;inp&quot;
+          file_description=&quot;AVS UCD Binary/ASCII Files&quot;/&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End of AVSucdSeriesReader --&gt;
+   &lt;/FileSeriesReaderProxy&gt;
+
+   &lt;SourceProxy name=&quot;Facet Reader&quot; 
+                class=&quot;vtkFacetReader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read a dataset in Facet format.&quot;
+       long_help=&quot;Read ASCII files stored in Facet format.&quot;&gt;
+       The Facet Reader reads files in Facet format: a simple ASCII file format listing point coordinates and connectivity between these points. The default file extension is .facet. The output of the Facet Reader is polygonal.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the Facet reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;facet&quot;
+          file_description=&quot;Facet Polygonal Data Files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End Facet Reader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;MetaImageReader&quot; 
+                class=&quot;vtkMetaImageReader&quot;
+                label=&quot;Meta Image reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read UNC meta image data.&quot;
+       long_help=&quot;Read binary UNC meta image data.&quot;&gt;
+       The Meta Image Reader reads binary UNC meta image data, and produces uniform rectilinear (image/volume) data. The default file extensions are .mhd and .mha.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the Meta Image reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;mhd mha&quot;
+          file_description=&quot;Meta Image Data Files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End Meta Image Reader --&gt;
+   &lt;/SourceProxy&gt;
+
+  &lt;SourceProxy name=&quot;TIFFReader&quot; 
+                class=&quot;vtkTIFFReader&quot;
+                label=&quot;TIFF Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read a TIFF file.&quot;
+       long_help=&quot;Read a TIFF file into an image data.&quot;&gt;
+       The TIFF reader reads TIFF (Tagged Image File Format) files, and the output is a uniform rectilinear (image/volume) dataset. The default file extension is .png.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the TIFF reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;tif tiff&quot;
+          file_description=&quot;TIFF Image Files&quot;/&gt;
+     &lt;/Hints&gt;
+   &lt;!-- End TIFFReader --&gt;
+   &lt;/SourceProxy&gt;
+
+   &lt;SourceProxy name=&quot;SESAMEReader&quot;
+                class=&quot;vtkSESAMEReader&quot;
+                label=&quot;SESAME Reader&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read SESAME data files.&quot;
+       long_help=&quot;Read SESAME data files, producing rectilinear grids.&quot;&gt;
+       The SESAME reader reads SESAME data files, and outputs rectilinear grids. The expected file extension is .sesame.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name for the SESAME reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+     &lt;IntVectorProperty
+         name=&quot;TableId&quot;
+         command=&quot;SetTable&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;-1&quot;&gt;
+         &lt;EnumerationDomain name=&quot;enum&quot;&gt;
+           &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;TableIds&quot; function=&quot;Enumeration&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+         &lt;/EnumerationDomain&gt;
+         &lt;Documentation&gt;
+           This proeprty indicates which table to read.
+         &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+     &lt;IntVectorProperty
+         name=&quot;TableIds&quot;
+         command=&quot;GetTableIdsAsArray&quot;
+         information_only=&quot;1&quot;&gt;
+         &lt;IntArrayInformationHelper /&gt;
+     &lt;/IntVectorProperty&gt;
+     &lt;StringVectorProperty
+         name=&quot;TableArrayInfo&quot;
+         information_only=&quot;1&quot;&gt;
+         &lt;ArraySelectionInformationHelper attribute_name=&quot;Table&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;sesame&quot;
+          file_description=&quot;SESAME&quot; /&gt;
+     &lt;/Hints&gt;
+     &lt;!-- End SESAMEReader --&gt;
+   &lt;/SourceProxy&gt;
+    &lt;!-- Beginning of OpenFOAM Reader --&gt;
+    &lt;SourceProxy name=&quot;OpenFOAMReader&quot; class=&quot;vtkPOpenFOAMReader&quot;&gt;
+      &lt;StringVectorProperty
+         name=&quot;FileName&quot;
+         command=&quot;SetFileName&quot;
+         number_of_elements=&quot;1&quot;
+         animateable=&quot;0&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;Property
+         name=&quot;Refresh&quot;
+         command=&quot;SetRefresh&quot;
+         is_internal=&quot;1&quot;
+         animateable=&quot;0&quot;&gt;
+        &lt;Documentation&gt;
+          Refresh time information and selection list metadata. Useful when watching a running simulation.
+        &lt;/Documentation&gt;
+      &lt;/Property&gt;
+
+      &lt;IntVectorProperty 
+         name=&quot;CaseType&quot; 
+         command=&quot;SetCaseType&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;1&quot;
+         animateable=&quot;0&quot;&gt;
+        &lt;EnumerationDomain name=&quot;enum&quot;&gt;
+          &lt;Entry value=&quot;0&quot; text=&quot;Decomposed Case&quot;/&gt;
+          &lt;Entry value=&quot;1&quot; text=&quot;Reconstructed Case&quot;/&gt;
+        &lt;/EnumerationDomain&gt;
+        &lt;Documentation&gt;
+          The property indicates whether decomposed mesh or reconstructed mesh should be read
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;IntVectorProperty
+         name=&quot;CreateCellToPoint&quot;
+         command=&quot;SetCreateCellToPoint&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;1&quot;
+         label=&quot;Create cell-to-point filtered data&quot;
+         animateable=&quot;0&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+        &lt;Documentation&gt;
+          Create point data from cell data. Beware: the filter does not do inverse distance weighting.
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;IntVectorProperty
+         name=&quot;AddDimensionsToArrayNames&quot;
+         command=&quot;SetAddDimensionsToArrayNames&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;0&quot;
+         label=&quot;Add dimensional units to array names&quot;
+         animateable=&quot;0&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+        &lt;Documentation&gt;
+          Read dimensional units from field data and add them to array names as human-readable string.
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;DoubleVectorProperty
+         name=&quot;TimestepValues&quot;
+         repeatable=&quot;1&quot;
+         information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+      &lt;StringVectorProperty
+         name=&quot;PatchArrayInfo&quot;
+         information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Patch&quot;/&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty
+         name=&quot;MeshRegions&quot;
+         command=&quot;SetPatchArrayStatus&quot;
+         number_of_elements=&quot;0&quot;
+         repeat_command=&quot;1&quot;
+         number_of_elements_per_command=&quot;2&quot;
+         element_types=&quot;2 0&quot;
+         information_property=&quot;PatchArrayInfo&quot;
+         animateable=&quot;0&quot;&gt;
+        &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+            &lt;Property name=&quot;PatchArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+        &lt;/ArraySelectionDomain&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty
+         name=&quot;CellArrayInfo&quot;
+         information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+      &lt;/StringVectorProperty&gt;
+      &lt;StringVectorProperty
+         name=&quot;CellArrays&quot;
+         command=&quot;SetCellArrayStatus&quot;
+         number_of_elements=&quot;0&quot;
+         repeat_command=&quot;1&quot;
+         number_of_elements_per_command=&quot;2&quot;
+         element_types=&quot;2 0&quot;
+         information_property=&quot;CellArrayInfo&quot;
+         animateable=&quot;0&quot;&gt;
+        &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+            &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+        &lt;/ArraySelectionDomain&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty
+         name=&quot;PointArrayInfo&quot;
+         information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+      &lt;/StringVectorProperty&gt;
+      &lt;StringVectorProperty
+         name=&quot;PointArrays&quot;
+         command=&quot;SetPointArrayStatus&quot;
+         number_of_elements=&quot;0&quot;
+         repeat_command=&quot;1&quot;
+         number_of_elements_per_command=&quot;2&quot;
+         element_types=&quot;2 0&quot;
+         information_property=&quot;PointArrayInfo&quot;
+         animateable=&quot;0&quot;&gt;
+        &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+            &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+        &lt;/ArraySelectionDomain&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty
+         name=&quot;LagrangianArrayInfo&quot;
+         information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Lagrangian&quot;/&gt;
+      &lt;/StringVectorProperty&gt;
+      &lt;StringVectorProperty
+         name=&quot;LagrangianArrays&quot;
+         command=&quot;SetLagrangianArrayStatus&quot;
+         number_of_elements=&quot;0&quot;
+         repeat_command=&quot;1&quot;
+         number_of_elements_per_command=&quot;2&quot;
+         element_types=&quot;2 0&quot;
+         information_property=&quot;LagrangianArrayInfo&quot;
+         animateable=&quot;0&quot;&gt;
+        &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+            &lt;Property name=&quot;LagrangianArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+        &lt;/ArraySelectionDomain&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;IntVectorProperty
+         name=&quot;CacheMesh&quot;
+         command=&quot;SetCacheMesh&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;1&quot;
+         label=&quot;Cache mesh&quot;
+         animateable=&quot;0&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+        &lt;Documentation&gt;
+          Cache the OpenFOAM mesh between GUI selection changes.
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;IntVectorProperty
+         name=&quot;DecomposePolyhedra&quot;
+         command=&quot;SetDecomposePolyhedra&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;1&quot;
+         label=&quot;Decompose polyhedra&quot;
+         animateable=&quot;0&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+        &lt;Documentation&gt;
+          Decompose polyhedra into tetrahedra and pyramids.
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;IntVectorProperty
+         name=&quot;ListTimeStepsByControlDict&quot;
+         command=&quot;SetListTimeStepsByControlDict&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;0&quot;
+         label=&quot;List timesteps according to controlDict&quot;
+         animateable=&quot;0&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+        &lt;Documentation&gt;
+          List time directories listed according to the settings in controlDict.
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;IntVectorProperty
+         name=&quot;PositionsIsIn13Format&quot;
+         command=&quot;SetPositionsIsIn13Format&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;0&quot;
+         label=&quot;Lagrangian positions are in OF 1.3 binary format&quot;
+         animateable=&quot;0&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+        &lt;Documentation&gt;
+          Set if Lagrangian positions files are in OpenFOAM 1.3 binary format.
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;IntVectorProperty
+         name=&quot;ReadZones&quot;
+         command=&quot;SetReadZones&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;0&quot;
+         label=&quot;Read zones&quot;
+         animateable=&quot;0&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+        &lt;Documentation&gt;
+          Read point/face/cell-Zones?
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;Hints&gt;
+        &lt;ReaderFactory extensions=&quot;foam&quot;
+           file_description=&quot;OpenFOAM&quot; /&gt;
+        &lt;Property name=&quot;FileName&quot; show=&quot;1&quot;/&gt;
+        &lt;Property name=&quot;Refresh&quot; show=&quot;0&quot;/&gt;
+      &lt;/Hints&gt;
+
+    &lt;/SourceProxy&gt;
+    &lt;!-- End of OpenFOAM Reader --&gt;
+
+    &lt;!-- Beginning of MFIX Reader --&gt;
+    &lt;SourceProxy name=&quot;MFIXReader&quot; class=&quot;vtkMFIXReader&quot;&gt;
+      &lt;Documentation
+        short_help=&quot;Reads a dataset in MFIX file format.&quot;
+        long_help=&quot;Reads a dataset in MFIX file format.&quot; &gt;
+        vtkMFIXReader creates an unstructured grid dataset. It reads a restart
+        file and a set of sp files.  The restart file contains the mesh 
+        information.  MFIX meshes are either cylindrical or rectilinear, but 
+        this reader will convert them to an unstructured grid.  The sp files 
+        contain transient data for the cells.  Each sp file has one or more 
+        variables stored inside it.
+      &lt;/Documentation&gt;
+      &lt;StringVectorProperty name=&quot;FileName&quot; 
+                            command=&quot;SetFileName&quot; 
+                            animateable=&quot;0&quot; 
+                            number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          Set the file name for the MFIX reader.
+        &lt;/Documentation&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty name=&quot;CellArrayInfo&quot;
+                           information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty name=&quot;CellArrayStatus&quot;
+                            command=&quot;SetCellArrayStatus&quot;
+                            number_of_elements=&quot;0&quot;
+                            repeat_command=&quot;1&quot; 
+                            number_of_elements_per_command=&quot;2&quot;
+                            element_types=&quot;2 0&quot;
+                            information_property=&quot;CellArrayInfo&quot;
+                            label=&quot;Cell Arrays&quot;&gt;
+        &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+            &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+        &lt;/ArraySelectionDomain&gt;
+        &lt;Documentation&gt;
+          Select which cell-centered arrays to read.
+        &lt;/Documentation&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;DoubleVectorProperty 
+          name=&quot;TimestepValues&quot; 
+          repeatable=&quot;1&quot;
+          information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;RES&quot;
+          file_description=&quot;MFIX Unstructured Grid Files&quot; /&gt;
+     &lt;/Hints&gt;
+    &lt;/SourceProxy&gt;
+    &lt;!-- End of MFIX Reader --&gt;
+
+   &lt;!-- Beginning of FLUENT Reader --&gt;
+   &lt;SourceProxy name=&quot;FLUENTReader&quot;
+                class=&quot;vtkFLUENTReader&quot;&gt;
+     &lt;Documentation
+        short_help=&quot;Reads a dataset in Fluent file format.&quot;
+        long_help=&quot;Reads a dataset in Fluent file format.&quot; &gt;
+        FLUENTReader creates an unstructured grid dataset. It reads .cas and
+        .dat files stored in FLUENT native format.
+     &lt;/Documentation&gt;
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           command=&quot;SetFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;1&quot;&gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         Set the file  name for the FLUENT reader.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+     &lt;StringVectorProperty name=&quot;CellArrayInfo&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+     &lt;StringVectorProperty name=&quot;CellArrayStatus&quot;
+                           command=&quot;SetCellArrayStatus&quot;
+                           number_of_elements=&quot;0&quot;
+                           repeat_command=&quot;1&quot; 
+                           number_of_elements_per_command=&quot;2&quot;
+                           element_types=&quot;2 0&quot;
+                           information_property=&quot;CellArrayInfo&quot;
+                           label=&quot;Cell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+         &lt;RequiredProperties&gt;
+           &lt;Property name=&quot;CellArrayInfo&quot;
+                     function=&quot;ArrayList&quot;/&gt;
+         &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         Select which cell-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;cas&quot;
+          file_description=&quot;Fluent Case Files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;/SourceProxy&gt;
+   &lt;!-- End of FLUENT Reader --&gt;
+
+   &lt;!-- Beginning of LSDyna Reader --&gt;
+   &lt;SourceProxy name=&quot;LSDynaReader&quot; class=&quot;vtkLSDynaReader&quot;&gt;
+     &lt;Documentation
+      short_help=&quot;Read LS-Dyna databases (d3plot).&quot;
+      long_help=&quot;Read LS-Dyna databases (d3plot).&quot; &gt;
+      This reader reads LS-Dyna databases.
+     &lt;/Documentation&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot; 
+                           command=&quot;SetFileName&quot; 
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          Set the file name for the LSDyna reader.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty 
+         name=&quot;TimestepValues&quot; 
+         repeatable=&quot;1&quot;
+         information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;SolidArrayInfo&quot; information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Solid&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;SolidArrayStatus&quot; 
+                           command=&quot;SetSolidArrayStatus&quot; 
+                           number_of_elements=&quot;2&quot; 
+                           repeat_command=&quot;1&quot;
+                           number_of_elements_per_command=&quot;2&quot; 
+                           element_types=&quot;2 0&quot; 
+                           information_property=&quot;SolidArrayInfo&quot;
+                           label=&quot;Solid Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;SolidArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         Select which solid arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;ThickShellArrayInfo&quot; information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;ThickShell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;ThickShellArrayStatus&quot; 
+                           command=&quot;SetThickShellArrayStatus&quot; 
+                           number_of_elements=&quot;2&quot; 
+                           repeat_command=&quot;1&quot;
+                           number_of_elements_per_command=&quot;2&quot; 
+                           element_types=&quot;2 0&quot; 
+                           information_property=&quot;ThickShellArrayInfo&quot;
+                           label=&quot;Thick Shell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;ThickShellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         Select which thick shell arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;ShellArrayInfo&quot; information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Shell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;ShellArrayStatus&quot; 
+                           command=&quot;SetShellArrayStatus&quot;
+                           number_of_elements=&quot;2&quot; 
+                           repeat_command=&quot;1&quot;
+                           number_of_elements_per_command=&quot;2&quot; 
+                           element_types=&quot;2 0&quot; 
+                           information_property=&quot;ShellArrayInfo&quot;
+                           label=&quot;Shell Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;ShellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         Select which shell arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;RigidBodyArrayInfo&quot; information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;RigidBody&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;RigidBodyArrayStatus&quot; 
+                           command=&quot;SetRigidBodyArrayStatus&quot; 
+                           number_of_elements=&quot;2&quot; 
+                           repeat_command=&quot;1&quot;
+                           number_of_elements_per_command=&quot;2&quot; 
+                           element_types=&quot;2 0&quot; 
+                           information_property=&quot;RigidBodyArrayInfo&quot;
+                           label=&quot;Rigid Body Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;RigidBodyArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         Select which rigid body arrays to load.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;RoadSurfaceArrayInfo&quot; information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;RoadSurface&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;RoadSurfaceArrayStatus&quot; 
+                           command=&quot;SetRoadSurfaceArrayStatus&quot; 
+                           number_of_elements=&quot;2&quot; 
+                           repeat_command=&quot;1&quot;
+                           number_of_elements_per_command=&quot;2&quot;
+                           element_types=&quot;2 0&quot; 
+                           information_property=&quot;RoadSurfaceArrayInfo&quot;
+                           label=&quot;Road Surface Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;RoadSurfaceArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         Select which road surface arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;BeamArrayInfo&quot; information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Beam&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;BeamArrayStatus&quot; 
+                           command=&quot;SetBeamArrayStatus&quot; 
+                           number_of_elements=&quot;2&quot; 
+                           repeat_command=&quot;1&quot;
+                           number_of_elements_per_command=&quot;2&quot; 
+                           element_types=&quot;2 0&quot; 
+                           information_property=&quot;BeamArrayInfo&quot;
+                           label=&quot;Beam Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;BeamArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         Select which beam arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;ParticleArrayInfo&quot; information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Particle&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;ParticleArrayStatus&quot; 
+                           command=&quot;SetParticleArrayStatus&quot; 
+                           number_of_elements=&quot;2&quot; 
+                           repeat_command=&quot;1&quot;
+                           number_of_elements_per_command=&quot;2&quot; 
+                           element_types=&quot;2 0&quot; 
+                           information_property=&quot;ParticleArrayInfo&quot;
+                           label=&quot;Particle Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;ParticleArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         Select which particle arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;PointArrayInfo&quot; information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;PointArrayStatus&quot; 
+                           command=&quot;SetPointArrayStatus&quot; 
+                           number_of_elements=&quot;2&quot; repeat_command=&quot;1&quot;
+                           number_of_elements_per_command=&quot;2&quot; 
+                           element_types=&quot;2 0&quot; 
+                           information_property=&quot;PointArrayInfo&quot;
+                           label=&quot;Point Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         Select which point-centered arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;PartArrayInfo&quot; information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Part&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;PartArrayStatus&quot; 
+                           command=&quot;SetPartArrayStatus&quot; 
+                           number_of_elements=&quot;2&quot; 
+                           repeat_command=&quot;1&quot;
+                           number_of_elements_per_command=&quot;2&quot; 
+                           element_types=&quot;2 0&quot; 
+                           information_property=&quot;PartArrayInfo&quot;
+                           label=&quot;Part Arrays&quot;&gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PartArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         Select which part arrays to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty name=&quot;DeformedMesh&quot; 
+                        command=&quot;SetDeformedMesh&quot; 
+                        number_of_elements=&quot;1&quot; 
+                        default_values=&quot;1&quot; &gt;
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         Should the mesh be deformed over time (if the Deflection node array is set to load)?
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty name=&quot;RemoveDeletedCells&quot; 
+                        command=&quot;SetRemoveDeletedCells&quot; 
+                        number_of_elements=&quot;1&quot; 
+                        default_values=&quot;1&quot; &gt;
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         Should cells that have been deleted (failed structurally, for example) be removed from the mesh?
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty name=&quot;SplitByMaterialId&quot; 
+                        command=&quot;SetSplitByMaterialId&quot;
+                        number_of_elements=&quot;1&quot; 
+                        default_values=&quot;0&quot;
+                        label=&quot;Split by Material Id&quot;&gt;
+       &lt;BooleanDomain name=&quot;bool&quot;/&gt;
+       &lt;Documentation&gt;
+         Should each material have its own mesh, or should there be one mesh for all materials?
+       &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;k lsdyna d3plot&quot;
+        filename_patterns=&quot;d3plot&quot;
+        file_description=&quot;LSDyna&quot; /&gt;
+     &lt;/Hints&gt;
+
+   &lt;/SourceProxy&gt;
+   &lt;!-- End of LSDyna Reader --&gt;
+
+    &lt;FileSeriesReaderProxy name=&quot;netCDFReader&quot;
+                           class=&quot;vtkFileSeriesReader&quot;
+                           label=&quot;NetCDF Reader&quot;
+                           file_name_method=&quot;SetFileName&quot;&gt;
+      &lt;Documentation short_help=&quot;Read regular arrays from netCDF files.&quot;
+                     long_help=&quot;Read regular arrays from netCDF files.  Will also read any topological information specified by the COARDS and CF conventions.&quot;&gt;
+        Reads arrays from netCDF files into structured VTK data sets.  In
+        the absence of any other information, the files will be read as
+        image data.  This reader will also look for meta information
+        specified by the CF convention that specify things like topology
+        and time.  This information can cause the output to be a nonuniform
+        rectilinear grid or curvilinear (structured) grid.  Details on the
+        CF convention can be found at http://cf-pcmdi.llnl.gov/.  It should
+        be noted that the CF convention is a superset of the COARDS
+        convention, so COARDS conventions will also be recognized.
+      &lt;/Documentation&gt;
+
+      &lt;StringVectorProperty name=&quot;FileName&quot;
+                            clean_command=&quot;RemoveAllFileNames&quot;
+                            command=&quot;AddFileName&quot;
+                            animateable=&quot;0&quot;
+                            number_of_elements=&quot;0&quot;
+                            repeat_command=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot; /&gt;
+        &lt;Documentation&gt;
+          The name of the files to load.
+        &lt;/Documentation&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;SubProxy&gt;
+        &lt;Proxy name=&quot;Reader&quot;
+               proxygroup=&quot;internal_sources&quot; proxyname=&quot;netCDFReaderCore&quot; /&gt;
+        &lt;ExposedProperties&gt;
+          &lt;Property name=&quot;DimensionInfo&quot; /&gt;
+          &lt;Property name=&quot;Dimensions&quot; /&gt;
+          &lt;Property name=&quot;VariableDimensionInfo&quot; /&gt;
+          &lt;Property name=&quot;VariableArrayInfo&quot; /&gt;
+          &lt;Property name=&quot;SphericalCoordinates&quot; /&gt;
+          &lt;Property name=&quot;VerticalScale&quot; /&gt;
+          &lt;Property name=&quot;VerticalBias&quot; /&gt;
+          &lt;Property name=&quot;ReplaceFillValueWithNan&quot; /&gt;
+        &lt;/ExposedProperties&gt;
+      &lt;/SubProxy&gt;
+
+      &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                            repeatable=&quot;1&quot;
+                            information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper /&gt;
+        &lt;Documentation&gt;
+          This magic property sends time information to the animation
+          panel.  ParaView will then automatically set up the animation to
+          visit the time steps defined in the file.
+        &lt;/Documentation&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;ncdf nc&quot;
+          file_description=&quot;netCDF files generic and CF conventions&quot; /&gt;
+     &lt;/Hints&gt;
+
+    &lt;/FileSeriesReaderProxy&gt; &lt;!-- netCDFReader --&gt;
+
+    &lt;SourceProxy name=&quot;SLACReader&quot;
+                 class=&quot;vtkPSLACReader&quot;
+                 label=&quot;SLAC Data Reader&quot;&gt;
+      &lt;Documentation&gt;
+        A reader for a data format used by Omega3p, Tau3p, and several
+        other tools used at the Standford Linear Accelerator Center (SLAC).
+        The underlying format uses netCDF to store arrays, but also imposes
+        several conventions to form an unstructured grid of elements.
+      &lt;/Documentation&gt;
+
+      &lt;OutputPort name=&quot;External Surface&quot; index=&quot;0&quot; /&gt;
+      &lt;OutputPort name=&quot;Entire Volume&quot; index=&quot;1&quot; /&gt;
+
+      &lt;StringVectorProperty name=&quot;MeshFileName&quot;
+                            command=&quot;SetMeshFileName&quot;
+                            animateable=&quot;0&quot;
+                            number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot; /&gt;
+        &lt;Documentation&gt;
+          The name of the mesh file to load.
+        &lt;/Documentation&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty name=&quot;ModeFileName&quot;
+                            clean_command=&quot;RemoveAllModeFileNames&quot;
+                            command=&quot;AddModeFileName&quot;
+                            animateable=&quot;0&quot;
+                            number_of_elements=&quot;0&quot;
+                            repeat_command=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot; /&gt;
+        &lt;Documentation&gt;
+          The name of the mode files to load.  The points in the mode file should be the same as the mesh file.
+        &lt;/Documentation&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;IntVectorProperty name=&quot;ReadInternalVolume&quot;
+                         command=&quot;SetReadInternalVolume&quot;
+                         animateable=&quot;0&quot;
+                         number_of_elements=&quot;1&quot;
+                         default_values=&quot;0&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+        &lt;Documentation&gt;
+          If on, read the internal volume of the data set.
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;IntVectorProperty name=&quot;ReadExternalSurface&quot;
+                         command=&quot;SetReadExternalSurface&quot;
+                         animateable=&quot;0&quot;
+                         number_of_elements=&quot;1&quot;
+                         default_values=&quot;1&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+        &lt;Documentation&gt;
+          If on, read the external surfaces of the data set.
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+      &lt;IntVectorProperty name=&quot;ReadMidpoints&quot;
+                         command=&quot;SetReadMidpoints&quot;
+                         animateable=&quot;0&quot;
+                         number_of_elements=&quot;1&quot;
+                         default_values=&quot;0&quot;&gt;
+        &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+        &lt;Documentation&gt;
+          If on, reads midpoint information for external surfaces and builds
+          quadratic surface triangles.
+        &lt;/Documentation&gt;
+      &lt;/IntVectorProperty&gt;
+
+&lt;!--       &lt;StringVectorProperty name=&quot;VariableArrayStatus&quot; --&gt;
+&lt;!--                             command=&quot;SetVariableArrayStatus&quot; --&gt;
+&lt;!--                             number_of_elements=&quot;0&quot; --&gt;
+&lt;!--                             repeat_command=&quot;1&quot; --&gt;
+&lt;!--                             number_of_elements_per_command=&quot;2&quot; --&gt;
+&lt;!--                             element_types=&quot;2 0&quot; --&gt;
+&lt;!--                             information_property=&quot;VariableArrayInfo&quot; --&gt;
+&lt;!--                             label=&quot;Variables&quot;&gt; --&gt;
+&lt;!--         &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt; --&gt;
+&lt;!--           &lt;RequiredProperties&gt; --&gt;
+&lt;!--             &lt;Property name=&quot;VariableArrayInfo&quot; function=&quot;ArrayList&quot; /&gt; --&gt;
+&lt;!--           &lt;/RequiredProperties&gt; --&gt;
+&lt;!--         &lt;/ArraySelectionDomain&gt; --&gt;
+&lt;!--         &lt;Documentation&gt; --&gt;
+&lt;!--           This property lists which mode variables to load from the mode file. --&gt;
+&lt;!--         &lt;/Documentation&gt; --&gt;
+&lt;!--       &lt;/StringVectorProperty&gt; --&gt;
+
+      &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                            repeatable=&quot;1&quot;
+                            information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper /&gt;
+        &lt;Documentation&gt;
+          This magic property sends time information to the animation
+          panel.  ParaView will then automatically set up the animation to
+          visit the time steps defined in the file.
+        &lt;/Documentation&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+      &lt;DoubleVectorProperty name=&quot;TimeRange&quot; information_only=&quot;1&quot;&gt;
+        &lt;TimeRangeInformationHelper/&gt;
+        &lt;Documentation&gt;
+          This magic property sends time range information to the animation
+          panel.  ParaView uses this information to set the range of time
+          for the animation.  This property is important for when there are
+          no timesteps but you still want to give ParaView a range of
+          values to use.
+        &lt;/Documentation&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;ncdf nc&quot;
+          file_description=&quot;SLAC Mesh Files&quot; /&gt;
+        &lt;!-- Usually you want to look at the external surface, but the
+             volume is there for visualizing the internal fields. --&gt;
+        &lt;OutputPort index=&quot;1&quot; visible=&quot;0&quot; /&gt;
+     &lt;/Hints&gt;
+    &lt;/SourceProxy&gt; &lt;!-- SLACReader --&gt;
+
+    &lt;FileSeriesReaderProxy name=&quot;SLACParticleReader&quot;
+                           class=&quot;vtkFileSeriesReader&quot;
+                           label=&quot;SLAC Particle Data Reader&quot;
+                           file_name_method=&quot;SetFileName&quot;&gt;
+      &lt;Documentation&gt;
+        The SLAC Particle data reader.
+      &lt;/Documentation&gt;
+
+      &lt;SubProxy&gt;
+        &lt;Proxy name=&quot;Reader&quot;
+               proxygroup=&quot;internal_sources&quot; proxyname=&quot;SLACParticleReaderCore&quot;&gt;
+        &lt;/Proxy&gt;
+
+      &lt;/SubProxy&gt;
+
+      &lt;StringVectorProperty name=&quot;FileName&quot;
+                            clean_command=&quot;RemoveAllFileNames&quot;
+                            command=&quot;AddFileName&quot;
+                            animateable=&quot;0&quot;
+                            number_of_elements=&quot;0&quot;
+                            repeat_command=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot; /&gt;
+        &lt;Documentation&gt;
+          A list of files to be read in a time series.
+        &lt;/Documentation&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                            repeatable=&quot;1&quot;
+                            information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper /&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+       &lt;ReaderFactory extensions=&quot;ncdf netcdf&quot;
+          file_description=&quot;SLAC Particle Files&quot; /&gt;
+     &lt;/Hints&gt;
+    &lt;/FileSeriesReaderProxy&gt; &lt;!-- SLACParticleReader --&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;CSVReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;CSV Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+      &lt;Documentation
+        short_help=&quot;Read a comma-separated values file.&quot;
+        long_help=&quot;Read a comma-separated values file into a 1D rectilinear grid.&quot;&gt;
+        The CSV reader reads a comma-separated values file into a 1D rectilinear
+        grid. If the file was saved using the CSVWriter, then the rectilinear
+        grid's points and point data can be restored as well as the cell data.
+        Otherwise all the data in the CSV file is treated as cell data. The
+        default file extension is .csv.
+        This can read file series as well.
+      &lt;/Documentation&gt;
+
+      &lt;StringVectorProperty name=&quot;FileName&quot;
+                            clean_command=&quot;RemoveAllFileNames&quot;
+                            command=&quot;AddFileName&quot;
+                            animateable=&quot;0&quot;
+                            number_of_elements=&quot;0&quot; 
+                            repeat_command=&quot;1&quot;
+                            information_property=&quot;FileNameInfo&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          The list of files to be read by the reader. Each file is expected to be
+          a csv file. If more than 1 file is specified, the reader will switch to
+          file series mode in which it will pretend that it can support time and
+          provide 1 file per time step.
+        &lt;/Documentation&gt;
+      &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+

+      &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                            repeatable=&quot;1&quot;
+                            information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+      &lt;SubProxy&gt;
+        &lt;Proxy name=&quot;Reader&quot;
+               proxygroup=&quot;internal_sources&quot;
+               proxyname=&quot;CSVReaderCore&quot;&gt;
+        &lt;/Proxy&gt;
+        &lt;ExposedProperties&gt;
+          &lt;Property name=&quot;DetectNumericColumns&quot; /&gt;
+          &lt;Property name=&quot;UseStringDelimiter&quot; /&gt;
+          &lt;Property name=&quot;HaveHeaders&quot; /&gt;
+          &lt;Property name=&quot;FieldDelimiterCharacters&quot; /&gt;
+        &lt;/ExposedProperties&gt;
+      &lt;/SubProxy&gt;
+
+     &lt;Hints&gt;
+        &lt;!-- View can be used to specify the preferred view for the proxy --&gt;
+        &lt;View type=&quot;SpreadSheetView&quot; /&gt;
+        &lt;ReaderFactory extensions=&quot;csv&quot;
+          file_description=&quot;Comma-separated-values&quot; /&gt;
+     &lt;/Hints&gt;
+      &lt;!-- End of CSVReader --&gt;
+   &lt;/FileSeriesReaderProxy&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;ParticleReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;Particles Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+      &lt;Documentation short_help=&quot;Read particle data.&quot;
+        long_help=&quot;Read particle data.&quot;&gt;
+        vtkParticleReader reads either a binary or a text file of particles.
+        Each particle can have associated with it an optional scalar value. So
+        the format is: x, y, z, scalar (all floats or doubles). The text file
+        can consist of a comma delimited set of values. In most cases
+        vtkParticleReader can automatically determine whether the file is text
+        or binary.  The data can be either float or double.  Progress updates
+        are provided.  With respect to binary files, random access into the file
+        to read pieces is supported.
+      &lt;/Documentation&gt;
+
+      &lt;StringVectorProperty name=&quot;FileName&quot;
+                            clean_command=&quot;RemoveAllFileNames&quot;
+                            command=&quot;AddFileName&quot;
+                            animateable=&quot;0&quot;
+                            number_of_elements=&quot;0&quot; 
+                            repeat_command=&quot;1&quot;
+                            information_property=&quot;FileNameInfo&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          The list of files to be read by the reader.
+        &lt;/Documentation&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+      &lt;/StringVectorProperty&gt;
+

+      &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                            repeatable=&quot;1&quot;
+                            information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+      &lt;/DoubleVectorProperty&gt;
+
+      &lt;SubProxy&gt;
+        &lt;Proxy name=&quot;Reader&quot;
+               proxygroup=&quot;internal_sources&quot;
+               proxyname=&quot;ParticleReaderCore&quot;&gt;
+        &lt;/Proxy&gt;
+        &lt;ExposedProperties&gt;
+          &lt;Property name=&quot;ByteOrder&quot; /&gt;
+          &lt;Property name=&quot;HasScalar&quot; /&gt;
+          &lt;Property name=&quot;FileType&quot; /&gt;
+          &lt;Property name=&quot;DataType&quot; /&gt;
+        &lt;/ExposedProperties&gt;
+      &lt;/SubProxy&gt;
+
+     &lt;Hints&gt;
+        &lt;ReaderFactory extensions=&quot;particles&quot;
+          file_description=&quot;VTK Particle Files&quot; /&gt;
+     &lt;/Hints&gt;
+
+      &lt;!-- End of CSVReader --&gt;
+   &lt;/FileSeriesReaderProxy&gt;
+      
+   &lt;FileSeriesReaderProxy name=&quot;TecplotReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;Tecplot Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read files in the Tecplot ASCII file format.&quot;
+       long_help=&quot;Read files in the Tecplot ASCII file format.&quot;&gt;
+       The Tecplot reader extracts multiple zones (blocks) of data from a Tecplot ASCII file, in which a zone is stored in either point packing mode (i.e., tuple-based, with only point data supported) or block packing mode (i.e., component-based, with point data and cell data supported). The output of the reader is a vtkMultiBlockDataset, of which each block is either a vtkStructuredGrid or a vtkUnstructuredGrid. This supports reading a file series.
+     &lt;/Documentation&gt;
+       
+     &lt;StringVectorProperty
+        name=&quot;FileNames&quot;
+        clean_command=&quot;RemoveAllFileNames&quot;
+        command=&quot;AddFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;0&quot; 
+        repeat_command=&quot;1&quot;
+        information_property=&quot;FileNameInfo&quot; &gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+           The list of files to be read by the reader.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+       
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+       
+     &lt;DoubleVectorProperty 
+        name=&quot;TimestepValues&quot;
+        repeatable=&quot;1&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+         proxygroup=&quot;internal_sources&quot; proxyname=&quot;TecplotReaderCore&quot;&gt;
+       &lt;/Proxy&gt;
+       &lt;ExposedProperties&gt;
+          &lt;Property name=&quot;DataArrayInfo&quot; /&gt;
+          &lt;Property name=&quot;DataArrayStatus&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;Hints&gt;
+        &lt;ReaderFactory extensions=&quot;tec TEC Tec tp TP&quot;
+          file_description=&quot;Tecplot Files&quot; /&gt;
+     &lt;/Hints&gt;
+       
+   &lt;!-- End TecplotReader --&gt;
+   &lt;/FileSeriesReaderProxy&gt;
+
+   &lt;!-- Start vtkVPICReader --&gt;
+   &lt;SourceProxy name=&quot;VPICReader&quot; 
+                class=&quot;vtkVPICReader&quot;
+                label=&quot;VPIC Reader&quot;&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        command=&quot;SetFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;2&quot;
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;PointArrayInfo&quot; 
+        label=&quot;Point Arrays&quot;&gt;
+        &lt;ArraySelectionDomain name=&quot;array_list&quot; &gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+        &lt;/ArraySelectionDomain&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty
+         name=&quot;TimestepValues&quot;
+         repeatable=&quot;1&quot;
+         information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;IntVectorProperty
+         name=&quot;SetStride&quot;
+         label=&quot;Stride&quot;
+         command=&quot;SetStride&quot;
+         number_of_elements=&quot;3&quot;
+         default_values=&quot;1 1 1&quot;&gt;
+         &lt;IntRangeDomain name=&quot;range&quot; min=&quot;1&quot;/&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;DefaultXExtent&quot;
+        command=&quot;GetXLayout&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;SimpleIntInformationHelper/&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;DefaultYExtent&quot;
+        command=&quot;GetYLayout&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;SimpleIntInformationHelper/&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;DefaultZExtent&quot;
+        command=&quot;GetZLayout&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;SimpleIntInformationHelper/&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;XExtent&quot;
+        label=&quot;X Extent&quot;
+        command=&quot;SetXExtent&quot;
+        number_of_elements=&quot;2&quot;
+        animateable=&quot;1&quot;
+        default_values=&quot;-1 -1&quot;&gt;
+        &lt;IntRangeDomain name=&quot;XRange&quot;&gt;
+             &lt;RequiredProperties&gt;
+                 &lt;Property name=&quot;DefaultXExtent&quot; function=&quot;Range&quot;/&gt;
+             &lt;/RequiredProperties&gt;
+        &lt;/IntRangeDomain&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;YExtent&quot;
+        label=&quot;Y Extent&quot;
+        command=&quot;SetYExtent&quot;
+        number_of_elements=&quot;2&quot;
+        animateable=&quot;1&quot;
+        default_values=&quot;-1 -1&quot;&gt;
+        &lt;IntRangeDomain name=&quot;YRange&quot;&gt;
+             &lt;RequiredProperties&gt;
+                 &lt;Property name=&quot;DefaultYExtent&quot; function=&quot;Range&quot;/&gt;
+             &lt;/RequiredProperties&gt;
+        &lt;/IntRangeDomain&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;ZExtent&quot;
+        label=&quot;Z Extent&quot;
+        command=&quot;SetZExtent&quot;
+        number_of_elements=&quot;2&quot;
+        animateable=&quot;1&quot;
+        default_values=&quot;-1 -1&quot;&gt;
+        &lt;IntRangeDomain name=&quot;ZRange&quot;&gt;
+             &lt;RequiredProperties&gt;
+                 &lt;Property name=&quot;DefaultZExtent&quot; function=&quot;Range&quot;/&gt;
+             &lt;/RequiredProperties&gt;
+        &lt;/IntRangeDomain&gt;
+     &lt;/IntVectorProperty&gt;
+     
+     &lt;Hints&gt;
+        &lt;ReaderFactory extensions=&quot;vpc&quot;
+          file_description=&quot;VPIC Files&quot; /&gt;
+     &lt;/Hints&gt;
+
+   &lt;/SourceProxy&gt;
+   &lt;!-- End vtkVPICReader --&gt;
+   
+   &lt;!-- Start WindBladeReader --&gt;
+
+   &lt;SourceProxy name=&quot;WindBladeReader&quot;
+                class=&quot;vtkWindBladeReader&quot;
+                label=&quot;WindBlade reader&quot;&gt;
+
+     &lt;OutputPort name=&quot;Field&quot; index=&quot;0&quot; /&gt;
+     &lt;OutputPort name=&quot;Blade&quot; index=&quot;1&quot; /&gt;
+
+      &lt;StringVectorProperty name=&quot;FileName&quot;
+        command=&quot;SetFilename&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;1&quot; &gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+      &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty
+         name=&quot;TimestepValues&quot;
+         repeatable=&quot;1&quot;
+         information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+      &lt;StringVectorProperty
+        name=&quot;PointArrayInfo&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;StringVectorProperty
+        name=&quot;PointArrayStatus&quot;
+        command=&quot;SetPointArrayStatus&quot;
+        number_of_elements=&quot;2&quot;
+        repeat_command=&quot;1&quot;
+        number_of_elements_per_command=&quot;2&quot;
+        element_types=&quot;2 0&quot;
+        information_property=&quot;PointArrayInfo&quot; 
+        label=&quot;Point Arrays&quot;&gt;
+        &lt;ArraySelectionDomain name=&quot;array_list&quot; &gt;
+          &lt;RequiredProperties&gt;
+             &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+          &lt;/RequiredProperties&gt;
+        &lt;/ArraySelectionDomain&gt;
+      &lt;/StringVectorProperty&gt;
+
+      &lt;Hints&gt;
+        &lt;ReaderFactory extensions=&quot;wind&quot;
+          file_description=&quot;WindBlade Data&quot; /&gt;
+      &lt;/Hints&gt;
+
+   &lt;/SourceProxy&gt;
+   
+   &lt;!-- End WindBladeReader --&gt;
+   &lt;SourceProxy name=&quot;NetCDFPOPReader&quot;
+              class=&quot;vtkNetCDFPOPReader&quot;
+              label=&quot;NetCDF POP reader&quot;&gt;
+   &lt;Documentation
+     short_help=&quot;Read raw regular rectilinear grid data from a file.&quot;
+     long_help=&quot;Read raw regular rectilinear grid data from a file. The dimensions and type of the data must be specified.&quot;&gt;
+     The Image reader reads raw regular rectilinear grid (image/volume) data from a file. Because no metadata is provided, the user must specify information about the size, spacing, dimensionality, etc. about the dataset.
+   &lt;/Documentation&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;FileName&quot;
+        animateable=&quot;0&quot;
+        command=&quot;SetFileName&quot;
+        number_of_elements=&quot;1&quot;&gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          This property specifies the file name to read.
+        &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+    &lt;StringVectorProperty name=&quot;VariableArrayInfo&quot;
+                          information_only=&quot;1&quot;&gt;
+      &lt;ArraySelectionInformationHelper attribute_name=&quot;Variable&quot;/&gt;
+    &lt;/StringVectorProperty&gt;
+    &lt;StringVectorProperty name=&quot;VariableArrayStatus&quot;
+                          command=&quot;SetVariableArrayStatus&quot;
+                          number_of_elements=&quot;0&quot;
+                          repeat_command=&quot;1&quot;
+                          number_of_elements_per_command=&quot;2&quot;
+                          element_types=&quot;2 0&quot;
+                          information_property=&quot;VariableArrayInfo&quot;
+                          label=&quot;Variables&quot;&gt;
+      &lt;ArraySelectionDomain name=&quot;array_list&quot;&gt;
+        &lt;RequiredProperties&gt;
+          &lt;Property name=&quot;VariableArrayInfo&quot; function=&quot;ArrayList&quot; /&gt;
+        &lt;/RequiredProperties&gt;
+      &lt;/ArraySelectionDomain&gt;
+      &lt;Documentation&gt;
+        This property lists which netCDF variables to load.
+      &lt;/Documentation&gt;
+    &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;Stride&quot;
+        command=&quot;SetStride&quot;
+        number_of_elements=&quot;3&quot;
+        default_values=&quot;1 1 1&quot;
+        animateable=&quot;0&quot;&gt;
+        &lt;IntRangeDomain name=&quot;range&quot; min=&quot;1 1 1&quot; /&gt;
+        &lt;Documentation&gt;
+         This property indicate the number of indices per dimension (i,j,k) to skip between each point included
+         in this output.
+        &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+    
+    &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;ncdf nc&quot;
+          file_description=&quot;POP Ocean NetCDF (Rectilinear)&quot; /&gt;
+    &lt;/Hints&gt;
+      
+   &lt;/SourceProxy&gt;
+   &lt;!-- End NetCDFPOPReader --&gt;
+   
+   &lt;FileSeriesReaderProxy name=&quot;CosmoReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;COSMO Reader&quot;
+                          file_name_method=&quot;SetFileName&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read a cosmology file.&quot;
+       long_help=&quot;Read a cosmology file into a vtkUnstructuredGrid.&quot;&gt;
+       The Cosmology reader reads a binary file of particle location, 
+       velocity, and id creating a vtkUnstructuredGrid. The default 
+       file extension is .cosmo.  Reads LANL Cosmo format or Gadget format.
+     &lt;/Documentation&gt;
+
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot;
+              proxyname=&quot;CosmoReaderCore&quot;&gt;
+       &lt;/Proxy&gt;
+       &lt;ExposedProperties&gt;
+         &lt;Property name=&quot;CosmoFormat&quot; /&gt;
+         &lt;Property name=&quot;RL&quot; /&gt;
+         &lt;Property name=&quot;Overlap&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           clean_command=&quot;RemoveAllFileNames&quot;
+                           command=&quot;AddFileName&quot;
+                           animateable=&quot;0&quot;
+                           number_of_elements=&quot;0&quot; 
+                           repeat_command=&quot;1&quot;
+                           information_property=&quot;FileNameInfo&quot; &gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         The list of files to be read by the reader.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty name=&quot;TimestepValues&quot;
+                           repeatable=&quot;1&quot;
+                           information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+       &lt;Documentation&gt;
+         Available timestep values.
+       &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+       &lt;ReaderFactory extensions=&quot;cosmo gadget2&quot; file_description=&quot;Cosmology files&quot; /&gt;
+     &lt;/Hints&gt;
+   &lt;/FileSeriesReaderProxy&gt;
+
+   &lt;SourceProxy name=&quot;MPASReader&quot;
+                class=&quot;vtkMPASReader&quot;
+                label=&quot;NetCDF MPAS reader&quot;&gt;
+     &lt;Documentation
+         short_help=&quot;Read unstructured grid MPAS data from a file.&quot;
+         long_help=&quot;Read unstructured grid data from a file. &quot;&gt;
+       The Image reader reads unstructured grid from a file.  Grid is dual grid.
+     &lt;/Documentation&gt;
+
+     &lt;StringVectorProperty name=&quot;FileName&quot;
+                           command=&quot;SetFileName&quot;
+                           animateable=&quot;0&quot; &gt;
+       &lt;FileListDomain name=&quot;files&quot;/&gt;
+       &lt;Documentation&gt;
+         This property specifies the file name to read.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+         name=&quot;PointArrayInfo&quot;
+         information_only=&quot;1&quot;&gt;
+       &lt;ArraySelectionInformationHelper attribute_name=&quot;Point&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+         name=&quot;PointArrayStatus&quot;
+         command=&quot;SetPointArrayStatus&quot;
+         number_of_elements=&quot;2&quot;
+         repeat_command=&quot;1&quot;
+         number_of_elements_per_command=&quot;2&quot;
+         element_types=&quot;2 0&quot;
+         information_property=&quot;PointArrayInfo&quot; &gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot; &gt;
+         &lt;RequiredProperties&gt;
+           &lt;Property name=&quot;PointArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+         &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which netCDF dual-grid point variables to load.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+         name=&quot;CellArrayInfo&quot;
+         information_only=&quot;1&quot;&gt;
+       &lt;ArraySelectionInformationHelper attribute_name=&quot;Cell&quot;/&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+         name=&quot;CellArrayStatus&quot;
+         command=&quot;SetCellArrayStatus&quot;
+         number_of_elements=&quot;2&quot;
+         repeat_command=&quot;1&quot;
+         number_of_elements_per_command=&quot;2&quot;
+         element_types=&quot;2 0&quot;
+         information_property=&quot;CellArrayInfo&quot; &gt;
+       &lt;ArraySelectionDomain name=&quot;array_list&quot; &gt;
+         &lt;RequiredProperties&gt;
+           &lt;Property name=&quot;CellArrayInfo&quot; function=&quot;ArrayList&quot;/&gt;
+         &lt;/RequiredProperties&gt;
+       &lt;/ArraySelectionDomain&gt;
+       &lt;Documentation&gt;
+         This property lists which netCDF dual-grid cell variables to load.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+         name=&quot;ProjectLatLon&quot;
+         command=&quot;SetProjectLatLon&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;0&quot;&gt;
+       &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+         &lt;Documentation&gt;
+           This property indicates whether to do the lat/lon projection.
+         &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+         name=&quot;ShowMultilayerView&quot;
+         command=&quot;SetShowMultilayerView&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;0&quot;&gt;
+       &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+         &lt;Documentation&gt;
+           This property indicates whether to show multiple layers in one view.
+         &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty 
+         name=&quot;IsAtmosphere&quot;
+         command=&quot;SetIsAtmosphere&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;0&quot;&gt;
+       &lt;BooleanDomain name=&quot;bool&quot; /&gt;
+         &lt;Documentation&gt;
+           This property indicates whether data is atmospheric.
+         &lt;/Documentation&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;LayerThicknessRangeInfo&quot;
+        command=&quot;GetLayerThicknessRange&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;SimpleIntInformationHelper/&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+         name=&quot;LayerThickness&quot;
+         label=&quot;Layer Thickness&quot;
+         command=&quot;SetLayerThickness&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;10&quot;&gt;
+       &lt;IntRangeDomain name=&quot;LayerThicknessRange&quot;&gt;
+       &lt;RequiredProperties&gt;        
+         &lt;Property name=&quot;LayerThicknessRangeInfo&quot; function=&quot;Range&quot;/&gt;
+       &lt;/RequiredProperties&gt;
+       &lt;/IntRangeDomain&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+        name=&quot;CenterLonRangeInfo&quot;
+        command=&quot;GetCenterLonRange&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;SimpleIntInformationHelper/&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+         name=&quot;CenterLon&quot;
+         label=&quot;Center Longitude&quot;
+         command=&quot;SetCenterLon&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;180&quot;&gt;
+       &lt;IntRangeDomain name=&quot;CenterLonRange&quot;&gt;
+       &lt;RequiredProperties&gt;        
+         &lt;Property name=&quot;CenterLonRangeInfo&quot; function=&quot;Range&quot;/&gt;
+       &lt;/RequiredProperties&gt;
+       &lt;/IntRangeDomain&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+         name=&quot;VerticalLevelRangeInfo&quot;
+         command=&quot;GetVerticalLevelRange&quot;
+         information_only=&quot;1&quot;&gt;
+       &lt;SimpleIntInformationHelper/&gt;
+     &lt;/IntVectorProperty&gt;
+
+     &lt;IntVectorProperty
+         name=&quot;VerticalLevel&quot;
+         command=&quot;SetVerticalLevel&quot;
+         number_of_elements=&quot;1&quot;
+         default_values=&quot;0&quot;&gt;
+       &lt;IntRangeDomain name=&quot;range&quot; &gt;
+         &lt;RequiredProperties&gt;
+           &lt;Property name=&quot;VerticalLevelRangeInfo&quot; function=&quot;Range&quot;/&gt;
+         &lt;/RequiredProperties&gt;
+       &lt;/IntRangeDomain&gt;
+     &lt;/IntVectorProperty&gt;
+
+
+     &lt;DoubleVectorProperty
+         name=&quot;TimestepValues&quot;
+         repeatable=&quot;1&quot;
+         information_only=&quot;1&quot;&gt;
+       &lt;TimeStepsInformationHelper/&gt;
+     &lt;/DoubleVectorProperty&gt;
+
+     &lt;Hints&gt;
+       &lt;ReaderFactory extensions=&quot;nc&quot;
+                      file_description=&quot;MPAS NetCDF (Unstructured)&quot; /&gt;
+     &lt;/Hints&gt;
+
+   &lt;/SourceProxy&gt;
+   &lt;!-- End MPASReader --&gt;
+
+   &lt;FileSeriesReaderProxy name=&quot;P3DReader&quot;
+                          class=&quot;vtkFileSeriesReader&quot;
+                          label=&quot;PLOT3D Reader&quot;
+                          file_name_method=&quot;SetQFileName&quot;&gt;
+     &lt;Documentation
+       short_help=&quot;Read PLOT3D files.&quot;
+       long_help=&quot;Read ASCII or binary PLOT3D files.&quot;&gt;
+       PLOT3D is a plotting package developed at NASA. The PLOT3D reader can read both ASCII and binary PLOT3D files. The default file extension for the geometry files is .xyz, and the default file extension for the solution files is .q. The output of this reader is a multi-block dataset containing curvilinear (structured grid) datasets.
+     &lt;/Documentation&gt;
+     &lt;SubProxy&gt;
+       &lt;Proxy name=&quot;Reader&quot;
+              proxygroup=&quot;internal_sources&quot; proxyname=&quot;P3DReaderCore&quot;&gt;
+       &lt;/Proxy&gt;
+       &lt;ExposedProperties&gt;
+        &lt;Property name=&quot;FileName&quot; /&gt;
+        &lt;Property name=&quot;BinaryFile&quot; /&gt;
+        &lt;Property name=&quot;MultiGrid&quot; /&gt;
+        &lt;Property name=&quot;HasByteCount&quot; /&gt;
+        &lt;Property name=&quot;IBlanking&quot; /&gt;
+        &lt;Property name=&quot;TwoDimensionalGeometry&quot; /&gt;
+        &lt;Property name=&quot;ForceRead&quot; /&gt;
+        &lt;Property name=&quot;ByteOrder&quot; /&gt;
+        &lt;Property name=&quot;Functions&quot; /&gt;
+       &lt;/ExposedProperties&gt;
+     &lt;/SubProxy&gt;
+
+     &lt;StringVectorProperty name=&quot;FileNameInfo&quot;
+        command=&quot;GetCurrentFileName&quot;
+        information_only=&quot;1&quot; &gt;
+        &lt;SimpleStringInformationHelper /&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;StringVectorProperty
+        name=&quot;QFileName&quot;
+        clean_command=&quot;RemoveAllFileNames&quot;
+        command=&quot;AddFileName&quot;
+        animateable=&quot;0&quot;
+        number_of_elements=&quot;0&quot;
+        repeat_command=&quot;1&quot;
+        information_property=&quot;FileNameInfo&quot; &gt;
+        &lt;FileListDomain name=&quot;files&quot;/&gt;
+        &lt;Documentation&gt;
+          The list of .q (solution) files for the PLOT3D reader. This can be
+          more than 1. If more that 1 file is specified, the reader will switch
+          to file-series mode in which it will pretend that it can support time
+          and provide 1 file per time step.
+       &lt;/Documentation&gt;
+     &lt;/StringVectorProperty&gt;
+
+     &lt;DoubleVectorProperty
+        name=&quot;TimestepValues&quot;
+        repeatable=&quot;1&quot;
+        information_only=&quot;1&quot;&gt;
+        &lt;TimeStepsInformationHelper/&gt;
+        &lt;Documentation&gt;
+          Available timestep values.
+        &lt;/Documentation&gt;
+     &lt;/DoubleVectorProperty&gt;
+     &lt;Hints&gt;
+      &lt;ReaderFactory extensions=&quot;xyz&quot;
+          file_description=&quot;PLOT3D Files&quot; /&gt;
+      &lt;!-- This hint tells the GUI that the File | Open dialog sets the FileName
+           property --&gt;
+      &lt;DefaultFileNameProperty name=&quot;FileName&quot; /&gt;
+     &lt;/Hints&gt;
+     &lt;!-- End stlreader--&gt;
+   &lt;/FileSeriesReaderProxy&gt;
+
+  &lt;/ProxyGroup&gt;
+&lt;/ServerManagerConfiguration&gt;


Property changes on: branches/ocean_projects/graphics/paraview/reader/readers.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:keywords
   + Author Date ID Revision
Name: eol-style
   + native

Added: branches/ocean_projects/graphics/paraview/reader/vtkMPASReader.cxx
===================================================================
--- branches/ocean_projects/graphics/paraview/reader/vtkMPASReader.cxx                                (rev 0)
+++ branches/ocean_projects/graphics/paraview/reader/vtkMPASReader.cxx        2010-09-22 01:07:51 UTC (rev 508)
@@ -0,0 +1,1759 @@
+#include &quot;vtkMPASReader.h&quot;
+
+#include &quot;vtkCallbackCommand.h&quot;
+#include &quot;vtkCellData.h&quot;
+#include &quot;vtkCellType.h&quot;
+#include &quot;vtkCellArray.h&quot;
+#include &quot;vtkDataArraySelection.h&quot;
+#include &quot;vtkDataObject.h&quot;
+#include &quot;vtkErrorCode.h&quot;
+#include &quot;vtkDoubleArray.h&quot;
+#include &quot;vtkInformation.h&quot;
+#include &quot;vtkInformationDoubleVectorKey.h&quot;
+#include &quot;vtkInformationVector.h&quot;
+#include &quot;vtkIntArray.h&quot;
+#include &quot;vtkMath.h&quot;
+#include &quot;vtkObjectFactory.h&quot;
+#include &quot;vtkPointData.h&quot;
+#include &quot;vtkSmartPointer.h&quot;
+#include &quot;vtkStreamingDemandDrivenPipeline.h&quot;
+#include &quot;vtkStringArray.h&quot;
+#include &quot;vtkTableExtentTranslator.h&quot;
+#include &quot;vtkToolkits.h&quot;
+#include &quot;vtkUnstructuredGrid.h&quot;
+
+#include &quot;vtk_netcdfcpp.h&quot;
+
+#include &lt;iostream&gt;
+#include &lt;fstream&gt;
+#include &lt;sstream&gt;
+#include &quot;stdlib.h&quot;
+#include &lt;string&gt;
+#include &lt;cmath&gt;
+#include &lt;cfloat&gt;
+#include &lt;algorithm&gt;
+
+using namespace std;
+
+#define MAX_VARS 100
+#define DEFAULT_LAYER_THICKNESS 10
+double PI = 3.141592;
+
+
+class vtkInternals {
+public:
+  vtkInternals() :
+    ncFile(NULL)
+  {
+    for (int i = 0; i &lt; MAX_VARS; i++)
+      {
+      cellVars[i] = NULL;
+      pointVars[i] = NULL;
+      }
+  };
+
+  NcFile* ncFile;
+  NcVar* cellVars[MAX_VARS];
+  NcVar* pointVars[MAX_VARS];
+};
+
+#define CHECK_MALLOC(ptr) \
+  if (ptr == NULL)                  \
+    {                               \
+    vtkErrorMacro( &lt;&lt; &quot;malloc failed!&quot; &lt;&lt; endl);     \
+    return(0);                      \
+    }
+
+#define CHECK_DIM(ncFile, name) \
+  if (!isNcDim(ncFile, name))                                         \
+    {                                                                 \
+    vtkErrorMacro( &lt;&lt; &quot;Cannot find dimension: &quot; &lt;&lt; name &lt;&lt; endl);     \
+    return 0;                                                         \
+    }
+
+#define CHECK_VAR(ncFile, name)                                      \
+  if (!isNcVar(ncFile, name))                                        \
+    {                                                                \
+    vtkErrorMacro( &lt;&lt; &quot;Cannot find variable: &quot; &lt;&lt; name &lt;&lt; endl);     \
+    return 0;                                                        \
+    }
+
+// Check if there is a variable by that name
+
+bool isNcVar(NcFile *ncFile, NcToken name)
+{
+  int num_vars = ncFile-&gt;num_vars();
+  for (int i = 0; i &lt; num_vars; i++)
+    {
+    NcVar* ncVar = ncFile-&gt;get_var(i);
+    if ((strcmp(ncVar-&gt;name(), name)) == 0)
+      {
+      // we have a match, so return
+      return true;
+      }
+    }
+  return false;
+}
+
+// Check if there is a dimension by that name
+
+bool isNcDim(NcFile *ncFile, NcToken name)
+{
+  int num_dims = ncFile-&gt;num_dims();
+  //cerr &lt;&lt; &quot;looking for: &quot; &lt;&lt; name &lt;&lt; endl;
+  for (int i = 0; i &lt; num_dims; i++)
+    {
+    NcDim* ncDim = ncFile-&gt;get_dim(i);
+    //cerr &lt;&lt; &quot;checking &quot; &lt;&lt; ncDim-&gt;name() &lt;&lt; endl;
+    if ((strcmp(ncDim-&gt;name(), name)) == 0)
+      {
+      // we have a match, so return
+      return true;
+      }
+    }
+  return false;
+}
+
+int CartesianToSpherical(double x, double y, double z, double* rho, 
+    double* phi, double* theta)
+{
+  double trho, ttheta, tphi;
+
+  trho = sqrt( (x*x) + (y*y) + (z*z));
+  ttheta = atan2(y, x);
+  tphi = acos(z/(trho));
+  if (isnan(trho) || isnan(ttheta) || isnan(tphi)) {
+    return -1;
+  }
+  *rho = trho;
+  *theta = ttheta;
+  *phi = tphi;
+  return 0;
+
+}
+
+int SphericalToCartesian(double rho, double phi, double theta, double* x, 
+    double* y, double* z)
+{
+  double tx, ty, tz;
+
+  tx = rho* sin(phi) * cos(theta);
+  ty = rho* sin(phi) * sin(theta);
+  tz = rho* cos(phi);
+  if (isnan(tx) || isnan(ty) || isnan(tz)) {
+    return -1;
+  }
+
+  *x = tx;
+  *y = ty;
+  *z = tz;
+
+  return 0;
+}
+
+vtkStandardNewMacro(vtkMPASReader);
+
+//----------------------------------------------------------------------------
+// Constructor for vtkMPASReader
+//----------------------------------------------------------------------------
+
+vtkMPASReader::vtkMPASReader()
+{
+  this-&gt;Internals = new vtkInternals;
+
+  // Debugging
+  this-&gt;DebugOn();
+  vtkDebugMacro(&lt;&lt; &quot;Starting to create vtkMPASReader...&quot; &lt;&lt; endl);
+
+  this-&gt;SetNumberOfInputPorts(0);
+  this-&gt;SetNumberOfOutputPorts(1);
+
+  this-&gt;infoRequested = false;
+  this-&gt;dataRequested = false;
+
+  SetDefaults();
+
+  // Setup selection callback to modify this object when array selection changes
+  this-&gt;PointDataArraySelection = vtkDataArraySelection::New();
+  this-&gt;CellDataArraySelection = vtkDataArraySelection::New();
+  this-&gt;SelectionObserver = vtkCallbackCommand::New();
+  this-&gt;SelectionObserver-&gt;SetCallback(&amp;vtkMPASReader::SelectionCallback);
+  this-&gt;SelectionObserver-&gt;SetClientData(this);
+  this-&gt;CellDataArraySelection-&gt;AddObserver(vtkCommand::ModifiedEvent,
+                                            this-&gt;SelectionObserver);
+  this-&gt;PointDataArraySelection-&gt;AddObserver(vtkCommand::ModifiedEvent,
+                                             this-&gt;SelectionObserver);
+
+  vtkDebugMacro(&lt;&lt; &quot;MAX_VARS:&quot; &lt;&lt; MAX_VARS &lt;&lt; endl);
+
+  vtkDebugMacro(&lt;&lt; &quot;Created vtkMPASReader&quot; &lt;&lt; endl);
+}
+
+//----------------------------------------------------------------------------
+// Destructor for MPAS Reader
+//----------------------------------------------------------------------------
+
+vtkMPASReader::~vtkMPASReader()
+{
+  vtkDebugMacro(&lt;&lt; &quot;Destructing vtkMPASReader...&quot; &lt;&lt; endl);
+
+  if (this-&gt;FileName)
+    {
+    delete [] this-&gt;FileName;
+    }
+
+  if (this-&gt;Internals-&gt;ncFile)
+    {
+    delete this-&gt;Internals-&gt;ncFile;
+    }
+
+  vtkDebugMacro(&lt;&lt; &quot;Destructing cell var array...&quot; &lt;&lt; endl);
+  if (this-&gt;cellVarDataArray)
+    {
+    for (int i = 0; i &lt; this-&gt;numCellVars; i++)
+      {
+      if (this-&gt;cellVarDataArray[i] != NULL)
+        {
+        this-&gt;cellVarDataArray[i]-&gt;Delete();
+        }
+      }
+    delete [] this-&gt;cellVarData;
+    }
+
+  vtkDebugMacro(&lt;&lt; &quot;Destructing point var array...&quot; &lt;&lt; endl);
+  if (this-&gt;pointVarDataArray)
+    {
+    for (int i = 0; i &lt; this-&gt;numPointVars; i++)
+      {
+      if (this-&gt;pointVarDataArray[i] != NULL)
+        {
+        this-&gt;pointVarDataArray[i]-&gt;Delete();
+        }
+      }
+    delete [] this-&gt;pointVarDataArray;
+    }
+
+  vtkDebugMacro(&lt;&lt; &quot;Destructing other stuff...&quot; &lt;&lt; endl);
+  if (this-&gt;PointDataArraySelection)
+    {
+    this-&gt;PointDataArraySelection-&gt;Delete();
+    }
+  if (this-&gt;CellDataArraySelection)
+    {
+    this-&gt;CellDataArraySelection-&gt;Delete();
+    }
+  if (this-&gt;SelectionObserver)
+    {
+    this-&gt;SelectionObserver-&gt;Delete();
+    }
+
+  delete this-&gt;Internals;
+
+  // cma add more deletes
+
+  if (cellMap) free(cellMap);
+  if (pointMap) free(pointMap);
+  if (maxLevelPoint) free (maxLevelPoint);
+
+  vtkDebugMacro(&lt;&lt; &quot;Destructed vtkMPASReader&quot; &lt;&lt; endl);
+}
+
+
+//----------------------------------------------------------------------------
+// Verify that the file exists, get dimension sizes and variables
+//----------------------------------------------------------------------------
+
+int vtkMPASReader::RequestInformation(
+                                      vtkInformation *reqInfo,
+                                      vtkInformationVector **inVector,
+                                      vtkInformationVector *outVector)
+{
+  vtkDebugMacro(&lt;&lt; &quot;In vtkMPASReader::RequestInformation&quot; &lt;&lt; endl);
+
+  if (!this-&gt;Superclass::RequestInformation(reqInfo, inVector, outVector))
+    {
+    return 0;
+    }
+
+  // Verify that file exists
+  if ( !this-&gt;FileName )
+    {
+    vtkErrorMacro(&quot;No filename specified&quot;);
+    return 0;
+    }
+
+  vtkDebugMacro
+    (&lt;&lt; &quot;In vtkMPASReader::RequestInformation read filename okay&quot; &lt;&lt; endl);
+  // Get ParaView information pointer
+  vtkInformation* outInfo = outVector-&gt;GetInformationObject(0);
+
+  // RequestInformation() is called for every Modified() event which means
+  // when more variable data is selected it will be called again
+
+  if (!this-&gt;infoRequested)
+    {
+    this-&gt;infoRequested = true;
+
+    vtkDebugMacro(&lt;&lt; &quot;FileName: &quot; &lt;&lt; this-&gt;FileName &lt;&lt; endl);
+    this-&gt;Internals-&gt;ncFile = new NcFile(this-&gt;FileName);
+
+    if (!this-&gt;Internals-&gt;ncFile-&gt;is_valid())
+      {
+      vtkErrorMacro( &lt;&lt; &quot;Couldn't open file: &quot; &lt;&lt; this-&gt;FileName &lt;&lt; endl);
+      return 0;
+      }
+
+    vtkDebugMacro
+      (&lt;&lt; &quot;In vtkMPASReader::RequestInformation read file okay&quot; &lt;&lt; endl);
+
+    if (!GetNcDims()) return(0);
+
+    vtkDebugMacro
+      (&lt;&lt; &quot;In vtkMPASReader::RequestInformation setting VerticalLevelRange&quot;
+       &lt;&lt; endl);
+
+    if (!CheckParams()) return(0);
+
+    if (!BuildVarArrays())
+      {
+      return 0;
+      }
+
+
+    // Allocate the ParaView data arrays which will hold the variables
+    this-&gt;pointVarDataArray = new vtkDoubleArray*[this-&gt;numPointVars];
+    for (int i = 0; i &lt; this-&gt;numPointVars; i++)
+      {
+      this-&gt;pointVarDataArray[i] = NULL;
+      }
+    this-&gt;cellVarDataArray = new vtkDoubleArray*[this-&gt;numCellVars];
+    for (int i = 0; i &lt; this-&gt;numCellVars; i++)
+      {
+      this-&gt;cellVarDataArray[i] = NULL;
+      }
+
+    // Start with no data loaded into ParaView
+    DisableAllPointArrays();
+    DisableAllCellArrays();
+
+    // Collect temporal information
+
+    // At this time, MPAS doesn't have fine-grained time value, just
+    // the number of the step, so that is what I store here for TimeSteps.
+    if (this-&gt;TimeSteps != NULL)
+      {
+      delete[] this-&gt;TimeSteps;
+      }
+    this-&gt;TimeSteps = new double[this-&gt;NumberOfTimeSteps];
+    for (int step = 0; step &lt; this-&gt;NumberOfTimeSteps; step++)
+      {
+      this-&gt;TimeSteps[step] = (double) step;
+      }
+    // Tell the pipeline what steps are available
+    outInfo-&gt;Set(vtkStreamingDemandDrivenPipeline::TIME_STEPS(),
+                 this-&gt;TimeSteps, this-&gt;NumberOfTimeSteps);
+
+    double tRange[2];
+    tRange[0] = this-&gt;TimeSteps[0];
+    tRange[1] = this-&gt;TimeSteps[this-&gt;NumberOfTimeSteps-1];
+    outInfo-&gt;Set(vtkStreamingDemandDrivenPipeline::TIME_RANGE(),
+                 tRange,
+                 2);
+    }
+
+  return 1;
+}
+
+//----------------------------------------------------------------------------
+// Data is read into a vtkUnstructuredGrid
+//----------------------------------------------------------------------------
+
+    int vtkMPASReader::RequestData(
+            vtkInformation *vtkNotUsed(reqInfo),
+            vtkInformationVector **vtkNotUsed(inVector),
+            vtkInformationVector *outVector)
+{
+    vtkDebugMacro(&lt;&lt; &quot;In vtkMPASReader::RequestData&quot; &lt;&lt; endl);
+
+
+    // get the info object
+    vtkInformation *outInfo = outVector-&gt;GetInformationObject(0);
+
+    // Output will be an ImageData
+    vtkUnstructuredGrid *output = vtkUnstructuredGrid::SafeDownCast(
+            outInfo-&gt;Get(vtkDataObject::DATA_OBJECT()));
+
+    // Output the unstructured grid from the netCDF file
+    if (!ReadAndOutputGrid(true)) return 0;
+
+    // Collect the time step requested
+    double* requestedTimeSteps = NULL;
+    int numRequestedTimeSteps = 0;
+    vtkInformationDoubleVectorKey* timeKey =
+        static_cast&lt;vtkInformationDoubleVectorKey*&gt;
+        (vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEPS());
+    if (outInfo-&gt;Has(timeKey)) {
+        numRequestedTimeSteps = outInfo-&gt;Length(timeKey);
+        requestedTimeSteps = outInfo-&gt;Get(timeKey);
+    }
+
+    // print out how many steps are requested, just for my information
+    vtkDebugMacro
+      ( &lt;&lt; &quot;Num Time steps requested: &quot; &lt;&lt; numRequestedTimeSteps &lt;&lt; endl);
+
+    // At this time, it seems to only get one timestep of info, why?
+
+    this-&gt;dTime = requestedTimeSteps[0];
+    vtkDebugMacro(&lt;&lt; &quot;this-&gt;dTime: &quot; &lt;&lt; this-&gt;dTime &lt;&lt; endl);
+    double dTimeTemp = this-&gt;dTime;
+    output-&gt;GetInformation()-&gt;Set
+      (vtkDataObject::DATA_TIME_STEPS(), &amp;dTimeTemp, 1);
+    vtkDebugMacro(&lt;&lt; &quot;dTimeTemp: &quot; &lt;&lt; dTimeTemp &lt;&lt; endl);
+    this-&gt;dTime = dTimeTemp;
+
+    // Examine each variable to see if it is selected
+    for (int var = 0; var &lt; this-&gt;numPointVars; var++) {
+
+        // Is this variable requested
+        if (this-&gt;PointDataArraySelection-&gt;GetArraySetting(var)) {
+            vtkDebugMacro( &lt;&lt; &quot;Loading Point Variable: &quot; &lt;&lt; var &lt;&lt; endl);
+            LoadPointVarData(var, dTime);
+            output-&gt;GetPointData()-&gt;AddArray(this-&gt;pointVarDataArray[var]);
+
+        }
+    }
+
+    for (int var = 0; var &lt; this-&gt;numCellVars; var++) {
+        if (this-&gt;CellDataArraySelection-&gt;GetArraySetting(var)) {
+            vtkDebugMacro
+              ( &lt;&lt; &quot;Loading Cell Variable: &quot;
+                &lt;&lt; this-&gt;Internals-&gt;cellVars[var]-&gt;name() &lt;&lt; endl);
+            LoadCellVarData(var, dTime);
+            output-&gt;GetCellData()-&gt;AddArray(this-&gt;cellVarDataArray[var]);
+
+        }
+    }
+
+    this-&gt;dataRequested = true;
+
+    vtkDebugMacro( &lt;&lt; &quot;Returning from RequestData&quot; &lt;&lt; endl);
+    return 1;
+}
+
+void vtkMPASReader::SetDefaults() {
+
+  // put in defaults
+  this-&gt;VerticalLevelRange[0] = 0;
+  this-&gt;VerticalLevelRange[1] = 1;
+  this-&gt;VerticalLevelSelected = 0;
+
+  this-&gt;LayerThicknessRange[0] = 0;
+  this-&gt;LayerThicknessRange[1] = 200000;
+  this-&gt;LayerThickness = 100000;
+      vtkDebugMacro( &lt;&lt; &quot;SetDefaults: LayerThickness set to &quot; &lt;&lt; LayerThickness &lt;&lt; endl);
+
+  this-&gt;CenterLonRange[0] = 0;
+  this-&gt;CenterLonRange[1] = 360;
+  this-&gt;CenterLon = 180;
+
+  this-&gt;IsAtmosphere = false;
+  this-&gt;ProjectLatLon = false;
+  this-&gt;ShowMultilayerView = false;
+  this-&gt;IsZeroCentered = false;
+
+  this-&gt;includeTopography = false;
+  this-&gt;doBugFix = false;
+  this-&gt;centerRad = CenterLon * PI / 180.0;
+
+  this-&gt;pointX = NULL;
+  this-&gt;pointY = NULL;
+  this-&gt;pointZ = NULL;
+  this-&gt;origConnections = NULL;
+  this-&gt;modConnections = NULL;
+  this-&gt;cellMap = NULL;
+  this-&gt;pointMap = NULL;
+  this-&gt;maxLevelPoint = NULL;
+
+  this-&gt;FileName = NULL;
+  this-&gt;dTime = 0;
+  this-&gt;cellVarData = NULL;
+  this-&gt;pointVarData = NULL;
+  this-&gt;TimeSteps = NULL;
+
+}
+
+
+int vtkMPASReader::GetNcDims()
+{
+  NcFile *pnf = this-&gt;Internals-&gt;ncFile;
+
+  CHECK_DIM(pnf, &quot;nCells&quot;);
+  NcDim* nCells = pnf-&gt;get_dim(&quot;nCells&quot;);
+  numPoints = nCells-&gt;size();
+  pointOffset = 1;
+
+  CHECK_DIM(pnf, &quot;nVertices&quot;);
+  NcDim* nVertices = pnf-&gt;get_dim(&quot;nVertices&quot;);
+  numCells = nVertices-&gt;size();
+  cellOffset = 0;
+
+  CHECK_DIM(pnf, &quot;vertexDegree&quot;);
+  NcDim* vertexDegree = pnf-&gt;get_dim(&quot;vertexDegree&quot;);
+  pointsPerCell = vertexDegree-&gt;size();
+
+  CHECK_DIM(pnf, &quot;Time&quot;);
+  NcDim* Time = pnf-&gt;get_dim(&quot;Time&quot;);
+  NumberOfTimeSteps = Time-&gt;size();
+
+  CHECK_DIM(pnf, &quot;nVertLevels&quot;);
+  NcDim* nVertLevels = pnf-&gt;get_dim(&quot;nVertLevels&quot;);
+  maxNVertLevels = nVertLevels-&gt;size();
+}
+
+
+int vtkMPASReader::CheckParams()
+{
+
+  if ((pointsPerCell != 3) &amp;&amp; (pointsPerCell != 4))  {
+    vtkErrorMacro(&quot;This code is only for hexagonal or quad primal grids&quot; &lt;&lt; endl);
+    return(0);
+  }
+
+  /*
+  // double-check we can do multilayer
+  if ((ShowMultilayerView) &amp;&amp; (maxNVertLevels == 1)) {
+    ShowMultilayerView = false;
+  }
+
+  if (!ShowMultilayerView) {
+    maxNVertLevels = 1;    
+  }    
+  
+*/
+  // check params make sense
+  this-&gt;VerticalLevelRange[0] = 0;
+  this-&gt;VerticalLevelRange[1] = this-&gt;maxNVertLevels-1;
+
+  return(1);
+}
+
+int vtkMPASReader::GetNcVars (const char* cellDimName, const char* pointDimName)
+{
+  int cellVarIndex = -1;
+  int pointVarIndex = -1;
+
+  NcFile* ncFile =  this-&gt;Internals-&gt;ncFile;
+
+  int numVars = ncFile-&gt;num_vars();
+
+  for (int i = 0; i &lt; numVars; i++) {
+    NcVar* aVar = ncFile-&gt;get_var(i);
+
+    // must have 3 dims
+    // (Time, nCells | nVertices, nVertLevels | nVertLevelsP1)
+
+    int numDims = aVar-&gt;num_dims();
+    //cout &lt;&lt; &quot;Num Dims of var: &quot; &lt;&lt; aVar-&gt;name() &lt;&lt; &quot; is &quot; &lt;&lt; numDims &lt;&lt; endl;
+    if (numDims != 3) continue;
+
+
+    // TODO, check if it is a double
+    // assume a double for now
+
+    // check for Time dim 0
+    NcToken dim0Name = aVar-&gt;get_dim(0)-&gt;name();
+    if (strcmp(dim0Name, &quot;Time&quot;))
+      continue;
+
+    // check for dim 1 being cell or point
+    bool isCellData = false;
+    bool isPointData = false;
+    NcToken dim1Name = aVar-&gt;get_dim(1)-&gt;name();
+    if (!strcmp(dim1Name, cellDimName))
+      isCellData = true;
+    else if (!strcmp(dim1Name, pointDimName))
+      isPointData = true;
+    else continue;
+
+    // check if dim 2 is nVertLevels or nVertLevelsP1, too
+    NcToken dim2Name = aVar-&gt;get_dim(2)-&gt;name();
+    if ((strcmp(dim2Name, &quot;nVertLevels&quot;))
+        &amp;&amp; (strcmp(dim2Name, &quot;nVertLevelsP1&quot;))) {
+      continue;
+    }
+
+    // Add to cell or point var array
+    if (isCellData) {  // means it is cell data
+      cellVarIndex++;
+      if (cellVarIndex &gt; MAX_VARS-1) {
+        vtkErrorMacro( &lt;&lt; &quot;Exceeded number of cell vars.&quot; &lt;&lt; endl);
+        return(0);
+      }
+      this-&gt;Internals-&gt;cellVars[cellVarIndex] = aVar;
+      //cout &lt;&lt; &quot;Adding var &quot; &lt;&lt; aVar-&gt;name() &lt;&lt; &quot; to cellVars&quot; &lt;&lt; endl;
+    } else if (isPointData)
+    {
+
+      pointVarIndex++;
+      if (pointVarIndex &gt; MAX_VARS-1) {
+        vtkErrorMacro( &lt;&lt; &quot;Exceeded number of point vars.&quot; &lt;&lt; endl);
+        return(0);
+      }
+      this-&gt;Internals-&gt;pointVars[pointVarIndex] = aVar;
+      //cout &lt;&lt; &quot;Adding var &quot; &lt;&lt; aVar-&gt;name() &lt;&lt; &quot; to pointVars&quot; &lt;&lt; endl;
+    }
+  }
+
+  this-&gt;numPointVars = pointVarIndex+1;
+  this-&gt;numCellVars = cellVarIndex+1;
+  return(1);
+}
+
+//cma remove the nc part of this
+int vtkMPASReader::BuildVarArrays()
+{
+  vtkDebugMacro(&lt;&lt; &quot;In vtkMPASReader::BuildVarArrays&quot; &lt;&lt; endl);
+
+  // figure out what variables to visualize -
+  int retval = GetNcVars(&quot;nVertices&quot;, &quot;nCells&quot;);
+
+  if (!retval) return 0;
+
+  vtkDebugMacro( &lt;&lt; &quot;numCellVars: &quot; &lt;&lt; this-&gt;numCellVars
+                 &lt;&lt; &quot; numPointVars: &quot; &lt;&lt; this-&gt;numPointVars &lt;&lt; endl);
+
+  for (int var = 0; var &lt; this-&gt;numPointVars; var++)
+    {
+      this-&gt;PointDataArraySelection-&gt;
+        EnableArray((const char*)(this-&gt;Internals-&gt;pointVars[var]-&gt;name()));
+      vtkDebugMacro
+        (&lt;&lt; &quot;Adding point var: &quot;
+         &lt;&lt; this-&gt;Internals-&gt;pointVars[var]-&gt;name() &lt;&lt; endl);
+    }
+
+  for (int var = 0; var &lt; this-&gt;numCellVars; var++)
+    {
+    vtkDebugMacro
+      (&lt;&lt; &quot;Adding cell var: &quot;
+       &lt;&lt; this-&gt;Internals-&gt;cellVars[var]-&gt;name() &lt;&lt; endl);
+    this-&gt;CellDataArraySelection-&gt;
+      EnableArray((const char*)(this-&gt;Internals-&gt;cellVars[var]-&gt;name()));
+    }
+
+  vtkDebugMacro(&lt;&lt; &quot;Leaving vtkMPASReader::BuildVarArrays&quot; &lt;&lt; endl);
+
+  return(1);
+}
+
+
+int vtkMPASReader::ReadAndOutputGrid(bool init)
+{
+
+    vtkDebugMacro(&lt;&lt; &quot;In vtkMPASReader::ReadAndOutputGrid&quot; &lt;&lt; endl);
+
+    if (!ProjectLatLon) {
+      AllocSphereGeometry();
+    } else {
+      AllocLatLonGeometry();
+      ShiftLonData();
+      FixPoints();
+      EliminateXWrap();
+    }
+
+    OutputPoints(init);
+    OutputCells(init);
+
+    // Allocate the data arrays which will hold the NetCDF var data
+    //this-&gt;cellVarData = (double*) malloc(sizeof(double)*maxCells);
+    //CHECK_MALLOC(this-&gt;cellVarData);
+    vtkDebugMacro(&lt;&lt;&quot;pointVarData: Alloc &quot; &lt;&lt; maxPoints &lt;&lt; &quot; doubles&quot; &lt;&lt; endl);
+    this-&gt;pointVarData = (double*) malloc(sizeof(double)*maxPoints);
+    CHECK_MALLOC(this-&gt;pointVarData);
+
+    vtkDebugMacro(&lt;&lt; &quot;Leaving vtkMPASReader::ReadAndOutputGrid&quot; &lt;&lt; endl);
+
+    return(1);
+}
+
+
+// allocate into sphere view of dual geometry
+int vtkMPASReader::AllocSphereGeometry()
+{
+  vtkDebugMacro(&lt;&lt; &quot;In AllocSphereGeometry...&quot; &lt;&lt; endl);
+  NcFile* ncFile = this-&gt;Internals-&gt;ncFile;
+
+  CHECK_VAR(ncFile, &quot;xCell&quot;);
+  pointX = (double*)malloc(numPoints * sizeof(double));
+  CHECK_MALLOC(pointX);
+  NcVar*  xCellVar = ncFile-&gt;get_var(&quot;xCell&quot;);
+  xCellVar-&gt;get(pointX + pointOffset, numPoints);
+  // point 0 is 0.0
+  *pointX = 0.0;
+
+  CHECK_VAR(ncFile, &quot;yCell&quot;);
+  pointY = (double*)malloc(numPoints * sizeof(double));
+  CHECK_MALLOC(pointY);
+  NcVar*  yCellVar = ncFile-&gt;get_var(&quot;yCell&quot;);
+  yCellVar-&gt;get(pointY + pointOffset, numPoints);
+  // point 0 is 0.0
+  *pointY = 0.0;
+
+  CHECK_VAR(ncFile, &quot;zCell&quot;);
+  pointZ = (double*)malloc(numPoints * sizeof(double));
+  CHECK_MALLOC(pointZ);
+  NcVar*  zCellVar = ncFile-&gt;get_var(&quot;zCell&quot;);
+  zCellVar-&gt;get(pointZ + pointOffset, numPoints);
+  // point 0 is 0.0
+  *pointZ = 0.0;
+
+  CHECK_VAR(ncFile, &quot;cellsOnVertex&quot;);
+  origConnections = (int *) malloc(numCells * pointsPerCell *
+      sizeof(int));
+  CHECK_MALLOC(origConnections);
+  NcVar *connectionsVar = ncFile-&gt;get_var(&quot;cellsOnVertex&quot;);
+  connectionsVar-&gt;get(origConnections, numCells, pointsPerCell);
+
+  if (isNcVar(ncFile, &quot;maxLevelCell&quot;)) {
+    includeTopography = true;
+    maxLevelPoint = (int*)malloc((numPoints + pointOffset) * sizeof(int));
+    CHECK_MALLOC(maxLevelPoint);
+    NcVar *maxLevelPointVar = ncFile-&gt;get_var(&quot;maxLevelCell&quot;);
+    maxLevelPointVar-&gt;get(maxLevelPoint + pointOffset, numPoints);
+  }
+
+  currentExtraPoint = numPoints + pointOffset;
+  currentExtraCell = numCells + cellOffset;
+
+  if (ShowMultilayerView) {
+    maxCells = currentExtraCell*maxNVertLevels;
+    vtkDebugMacro(&lt;&lt; &quot;alloc sphere: multilayer: setting maxCells to &quot; &lt;&lt; maxCells &lt;&lt; endl);
+    maxPoints = currentExtraPoint*(maxNVertLevels+1);
+    vtkDebugMacro(&lt;&lt; &quot;alloc sphere: multilayer: setting maxPoints to &quot; &lt;&lt; maxPoints &lt;&lt; endl);
+  } else {
+    maxCells = currentExtraCell;
+    maxPoints = currentExtraPoint;
+    vtkDebugMacro(&lt;&lt; &quot;alloc sphere: singlelayer: setting maxPoints to &quot; &lt;&lt; maxPoints &lt;&lt; endl);
+  }
+  vtkDebugMacro(&lt;&lt; &quot;Leaving AllocSphereGeometry...&quot; &lt;&lt; endl);
+}
+
+// allocate into lat/lon projection of dual geometry
+int vtkMPASReader::AllocLatLonGeometry()
+{
+  vtkDebugMacro(&lt;&lt; &quot;In AllocLatLonGeometry...&quot; &lt;&lt; endl);
+  NcFile* ncFile = this-&gt;Internals-&gt;ncFile;
+  const float BLOATFACTOR = .5;
+  modNumPoints = (int)floor(numPoints*(1.0 + BLOATFACTOR));
+  modNumCells = (int)floor(numCells*(1.0 + BLOATFACTOR))+1;
+
+  CHECK_VAR(ncFile, &quot;lonCell&quot;);
+  pointX = (double*)malloc(modNumPoints * sizeof(double));
+  CHECK_MALLOC(pointX);
+  NcVar*  xCellVar = ncFile-&gt;get_var(&quot;lonCell&quot;);
+  xCellVar-&gt;get(pointX + pointOffset, numPoints);
+  // point 0 is 0.0
+  *pointX = 0.0;
+
+  CHECK_VAR(ncFile, &quot;latCell&quot;);
+  pointY = (double*)malloc(modNumPoints * sizeof(double));
+  CHECK_MALLOC(pointY);
+  NcVar*  yCellVar = ncFile-&gt;get_var(&quot;latCell&quot;);
+  yCellVar-&gt;get(pointY+pointOffset, numPoints);
+  // point 0 is 0.0
+  *pointY = 0.0;
+
+  CHECK_VAR(ncFile, &quot;cellsOnVertex&quot;);
+  origConnections = (int *) malloc(numCells * pointsPerCell *
+      sizeof(int));
+  CHECK_MALLOC(origConnections);
+  NcVar *connectionsVar = ncFile-&gt;get_var(&quot;cellsOnVertex&quot;);
+  connectionsVar-&gt;get(origConnections, numCells, pointsPerCell);
+
+  // create my own list to include modified origConnections (due to
+  // eliminating wraparound in the lat/lon projection) plus additional
+  // cells added when mirroring cells that had previously wrapped around
+
+  modConnections = (int *) malloc(modNumCells * pointsPerCell
+      * sizeof(int));
+  CHECK_MALLOC(modConnections);
+
+
+  // allocate an array to map the extra points and cells to the original
+  // so that when obtaining data, we know where to get it
+  pointMap = (int*)malloc((int)floor(numPoints*BLOATFACTOR)
+      * sizeof(int));
+  CHECK_MALLOC(pointMap);
+  cellMap = (int*)malloc((int)floor(numCells*BLOATFACTOR)
+      * sizeof(int));
+  CHECK_MALLOC(cellMap);
+
+  if (isNcVar(ncFile, &quot;maxLevelCell&quot;)) {
+    includeTopography = true;
+    maxLevelPoint = (int*)malloc((numPoints + numPoints) * sizeof(int));
+    CHECK_MALLOC(maxLevelPoint);
+    NcVar *maxLevelPointVar = ncFile-&gt;get_var(&quot;maxLevelCell&quot;);
+    maxLevelPointVar-&gt;get(maxLevelPoint + pointOffset, numPoints);
+  }
+
+  currentExtraPoint = numPoints + pointOffset;
+  currentExtraCell = numCells + cellOffset;
+
+  if (ShowMultilayerView) {
+    maxCells = currentExtraCell*maxNVertLevels;
+    maxPoints = currentExtraPoint*(maxNVertLevels+1);
+    vtkDebugMacro(&lt;&lt; &quot;alloc latlon: multilayer: setting maxPoints to &quot; &lt;&lt; maxPoints &lt;&lt; endl);
+  } else {
+    maxCells = currentExtraCell;
+    maxPoints = currentExtraPoint;
+    vtkDebugMacro(&lt;&lt; &quot;alloc latlon: singlelayer: setting maxPoints to &quot; &lt;&lt; maxPoints &lt;&lt; endl);
+  }
+  vtkDebugMacro(&lt;&lt; &quot;Leaving AllocLatLonGeometry...&quot; &lt;&lt; endl);
+}
+
+
+void vtkMPASReader::ShiftLonData()
+{
+  vtkDebugMacro(&lt;&lt; &quot;In ShiftLonData...&quot; &lt;&lt; endl);
+  // if atmospheric data, or zero centered, set center to 180 instead of 0
+  if (IsAtmosphere || IsZeroCentered) {
+    for (int j = pointOffset; j &lt; numPoints + pointOffset; j++) {
+      // need to shift over the point so center is at PI
+      if (pointX[j] &lt; 0) {
+        pointX[j] += 2*PI;
+      }
+    }
+  }
+
+  if (CenterLon != 180) {
+    for (int j = pointOffset; j &lt; numPoints + pointOffset; j++) {
+      // need to shift over the point if centerLon dictates
+      if (centerRad &lt; PI) {
+        if (pointX[j] &gt; (centerRad + PI)) {
+          pointX[j] = -((2*PI) - pointX[j]);
+        }
+      } else if (centerRad &gt; PI) {
+        if (pointX[j] &lt; (centerRad - PI)) {
+          pointX[j] += 2*PI;
+        }
+      }
+    }
+  }
+  vtkDebugMacro(&lt;&lt; &quot;Leaving ShiftLonData...&quot; &lt;&lt; endl);
+}
+
+int vtkMPASReader::AddMirrorPoint(int index, double dividerX)
+{
+  //vtkDebugMacro(&lt;&lt; &quot;In AddMirrorPoint...&quot; &lt;&lt; endl);
+  double X = pointX[index];
+  double Y = pointY[index];
+
+  // add on east
+  if (X &lt; dividerX) {
+    X += 2*PI;
+  } else {
+    // add on west
+    X -= 2*PI;
+  }
+
+  pointX[currentExtraPoint] = X;
+  pointY[currentExtraPoint] = Y;
+
+  int mirrorPoint = currentExtraPoint;
+
+  // record mapping
+  *(pointMap + (currentExtraPoint - numPoints - pointOffset)) = index;
+  currentExtraPoint++;
+
+  //vtkDebugMacro(&lt;&lt; &quot;Leaving AddMirrorPoint...&quot; &lt;&lt; endl);
+  return mirrorPoint;
+}
+
+
+// Check for out-of-range values and do bugfix
+void vtkMPASReader::FixPoints()
+{
+  vtkDebugMacro(&lt;&lt; &quot;In FixPoints...&quot; &lt;&lt; endl);
+
+  for (int j = cellOffset; j &lt; numCells + cellOffset; j++ ) {
+    int *conns = origConnections + (j * pointsPerCell);
+
+    // go through and make sure none of the referenced points are
+    // out of range
+    // if so, set all to point 0
+    for (int k = 0; k &lt; pointsPerCell; k++)  {
+      if  ((conns[k] &lt;= 0) || (conns[k] &gt; numPoints)) {
+        for (int m = 0; m &lt; pointsPerCell; m++)  {
+          conns[m] = 0;
+        }
+        break;
+      }
+    }
+
+    int lastk;
+
+    if (doBugFix) {
+      //BUG FIX for problem where cells are stretching to a faraway point
+      lastk = pointsPerCell-1;
+      const double thresh = .06981317007977; // 4 degrees
+      for (int k = 0; k &lt; pointsPerCell; k++)  {
+        double xdiff = abs(pointX[conns[k]]
+            - pointX[conns[lastk]]);
+        double ydiff = abs(pointY[conns[k]]
+            - pointY[conns[lastk]]);
+        // Don't look at cells at map border
+        if (ydiff &gt; thresh) {
+          for (int m = 0; m &lt; pointsPerCell; m++)  {
+            conns[m] = 0;
+          }
+          break;
+        }
+      }
+    }
+  }
+  vtkDebugMacro(&lt;&lt; &quot;Leaving FixPoints...&quot; &lt;&lt; endl);
+}
+
+
+// Eliminate wraparound at east/west edges of lat/lon projection
+int vtkMPASReader::EliminateXWrap ()
+{
+  vtkDebugMacro(&lt;&lt; &quot;In EliminateXWrap...&quot; &lt;&lt; endl);
+
+  // For each cell, examine vertices
+  // Add new points and cells where needed to account for wraparound.
+
+  int mirrorcell;
+  int apoint;
+  int mirrorpoint;
+
+
+  for (int j = cellOffset; j &lt; numCells + cellOffset; j++ ) {
+    int *conns = origConnections + (j * pointsPerCell);
+    int *modConns = modConnections + (j * pointsPerCell);
+    int lastk;
+
+    // Determine if we are wrapping in X direction
+    lastk = pointsPerCell-1;
+    bool xWrap = false;
+    for (int k = 0; k &lt; pointsPerCell; k++) {
+      if (abs(pointX[conns[k]]
+            - pointX[conns[lastk]]) &gt; 5.5) xWrap = true;
+      lastk = k;
+    }
+
+    // If we wrapped in X direction, modify cell and add mirror cell
+    if (xWrap) {
+
+      // first point is anchor it doesn't move
+      double anchorX = pointX[conns[0]];
+      double anchorY = pointY[conns[0]];
+      modConns[0] = conns[0];
+
+      // modify existing cell, so it doesn't wrap
+      // move points to one side
+      for (int k = 1; k &lt; pointsPerCell; k++) {
+        int neigh = conns[k];
+
+        // add a new point, figure out east or west
+        if (abs(pointX[neigh] - anchorX) &gt; 5.5)  {
+          modConns[k] = AddMirrorPoint(neigh, anchorX);
+        } else {
+          // use existing kth point
+          modConns[k] = neigh;
+        }
+      }
+
+      // move addedConns to modConnections extra cells area
+      int* addedConns = modConnections
+        + (currentExtraCell * pointsPerCell);
+
+      // add a mirroring cell to other side
+
+      // add mirrored anchor first
+      addedConns[0] = AddMirrorPoint(conns[0], centerRad);
+      anchorX = pointX[addedConns[0]];
+
+      // add mirror cell points if needed
+      for (int k = 1; k &lt; pointsPerCell; k++) {
+        int neigh = conns[k];
+
+        // add a new point for neighbor, figure out east or west
+        if (abs(pointX[neigh] - anchorX) &gt; 5.5)  {
+          addedConns[k] = AddMirrorPoint(neigh, anchorX);
+        } else {
+          // use existing kth point
+          addedConns[k] = neigh;
+        }
+      }
+      *(cellMap + (currentExtraCell - numCells - cellOffset)) = j;
+      currentExtraCell++;
+    } else {
+
+      // just add cell &quot;as is&quot; to modConnections
+      for (int k=0; k&lt; pointsPerCell; k++) {
+        modConns[k] = conns[k];
+      }
+    }
+    if (currentExtraCell &gt; modNumCells) {
+      vtkErrorMacro( &lt;&lt; &quot;Exceeded storage for extra cells!&quot; &lt;&lt; endl);
+      return(0);
+    }
+    if (currentExtraPoint &gt; modNumPoints) {
+      vtkErrorMacro( &lt;&lt; &quot;Exceeded storage for extra points!&quot; &lt;&lt; endl);
+      return(0);
+    }
+  }
+
+  if (!ShowMultilayerView) {
+    maxCells = currentExtraCell;
+    maxPoints = currentExtraPoint;
+    vtkDebugMacro(&lt;&lt; &quot;elim xwrap: singlelayer: setting maxPoints to &quot; &lt;&lt; maxPoints &lt;&lt; endl);
+  } else {
+    maxCells = currentExtraCell*maxNVertLevels;
+    maxPoints = currentExtraPoint*(maxNVertLevels+1);
+    vtkDebugMacro(&lt;&lt; &quot;elim xwrap: multilayer: setting maxPoints to &quot; &lt;&lt; maxPoints &lt;&lt; endl);
+  }
+  vtkDebugMacro(&lt;&lt; &quot;Leaving EliminateXWrap...&quot; &lt;&lt; endl);
+}
+
+
+void vtkMPASReader::OutputPoints(bool init) 
+{
+  vtkDebugMacro(&lt;&lt; &quot;In OutputPoints...&quot; &lt;&lt; endl);
+
+    vtkUnstructuredGrid* output = GetOutput();
+
+    vtkSmartPointer&lt;vtkPoints&gt; points;
+
+    float adjustedLayerThickness = LayerThickness;
+
+    if (IsAtmosphere) {
+      adjustedLayerThickness = -LayerThickness;
+    }
+
+  vtkDebugMacro(&lt;&lt; &quot;OutputPoints: maxPoints: &quot; &lt;&lt; maxPoints &lt;&lt; &quot; maxNVertLevels: &quot; &lt;&lt; maxNVertLevels &lt;&lt; &quot; LayerThickness: &quot; &lt;&lt; LayerThickness &lt;&lt; &quot;ProjectLatLon: &quot; &lt;&lt; ProjectLatLon &lt;&lt; &quot; ShowMultilayerView: &quot; &lt;&lt; ShowMultilayerView &lt;&lt; endl);
+
+    if (init) {
+      points = vtkSmartPointer&lt;vtkPoints&gt;::New();
+      points-&gt;Allocate(maxPoints, maxPoints);
+      output-&gt;SetPoints(points);
+    } else {
+      points = output-&gt;GetPoints();
+      points-&gt;Initialize();
+      points-&gt;Allocate(maxPoints, maxPoints);
+    }
+
+    for (int j = 0; j &lt; currentExtraPoint; j++ )
+    {
+
+      double x, y, z;
+
+      if (ProjectLatLon) {
+        x = pointX[j] * 180.0 / PI;
+        y = pointY[j] * 180.0 / PI;
+        z = 0.0;
+      } else {
+        x = pointX[j];
+        y = pointY[j];
+        z = pointZ[j];
+      }
+
+      if (!ShowMultilayerView) {
+          points-&gt;InsertNextPoint(x, y, z);
+      //    points-&gt;SetPoint(j, x, y, z);
+      } else { 
+        double rho, rholevel, theta, phi;
+        int retval = -1;
+
+        if (!ProjectLatLon) {
+          if ((x != 0.0) || (y != 0.0) || (z != 0.0)) {
+            retval = CartesianToSpherical(x, y, z, &amp;rho, &amp;phi, &amp;theta);
+            if (retval)  {
+              vtkDebugMacro(&quot;Can't create point for layered view.&quot; &lt;&lt; endl);
+            }
+          }
+        }
+                  
+        for (int levelNum = 0; levelNum &lt; maxNVertLevels+1; levelNum++) {
+          
+          if (ProjectLatLon)  {
+            z = -(double)((levelNum)*adjustedLayerThickness);
+          } else {
+            if (!retval &amp;&amp; ((x != 0.0) || (y != 0.0) || (z != 0.0))) {
+              rholevel = rho - (adjustedLayerThickness * levelNum);
+              retval = SphericalToCartesian(rholevel, phi, theta, &amp;x, &amp;y, &amp;z);
+              if (retval) {
+                vtkDebugMacro(&quot;Can't create point for layered view.&quot; &lt;&lt; endl);
+              }
+            }
+          }
+       //   points-&gt;SetPoint(j*(maxNVertLevels+1) + levelNum, x, y, z);
+          points-&gt;InsertNextPoint(x, y, z);
+        }
+      }
+    }
+
+    free(pointX);  pointX = NULL;
+    free(pointY);  pointY = NULL;
+    if (pointZ) {
+      free(pointZ);
+      pointZ = NULL;
+    }
+  vtkDebugMacro(&lt;&lt; &quot;Leaving OutputPoints...&quot; &lt;&lt; endl);
+}
+
+unsigned char vtkMPASReader::GetCellType() {
+  // write cell types
+  unsigned char cellType;
+  switch (pointsPerCell) {
+    case 3:
+      if (!ShowMultilayerView) {
+        cellType = VTK_TRIANGLE;
+      } else {
+        cellType = VTK_WEDGE;
+      }
+      break;
+    case 4:
+      if (!ShowMultilayerView) {
+        cellType = VTK_QUAD;
+      } else {
+        cellType = VTK_HEXAHEDRON;
+      }
+      break;
+    default:
+      break;
+  }
+  return cellType;
+}
+
+void vtkMPASReader::OutputCells(bool init)
+{
+  vtkDebugMacro(&lt;&lt; &quot;In OutputCells...&quot; &lt;&lt; endl);
+
+
+  vtkUnstructuredGrid* output = GetOutput();
+
+  if (init) {
+    output-&gt;Allocate(maxCells, maxCells);
+  } else {
+    vtkCellArray* cells = output-&gt;GetCells();
+    cells-&gt;Initialize();
+    output-&gt;Allocate(maxCells, maxCells);
+  } 
+
+  int cellType = GetCellType();
+  int val;
+
+  int pointsPerPolygon;
+  if (ShowMultilayerView) {
+    pointsPerPolygon = 2 * pointsPerCell;
+  } else { 
+    pointsPerPolygon = pointsPerCell;
+  }
+
+  vtkDebugMacro(&lt;&lt; &quot;OutputCells: init: &quot; &lt;&lt; init &lt;&lt; &quot; maxCells: &quot; &lt;&lt; maxCells &lt;&lt; &quot; cellType: &quot; &lt;&lt; cellType &lt;&lt; &quot; maxNVertLevels: &quot; &lt;&lt; maxNVertLevels &lt;&lt; &quot; LayerThickness: &quot; &lt;&lt; LayerThickness &lt;&lt; &quot; ProjectLatLon: &quot; &lt;&lt; ProjectLatLon &lt;&lt; &quot; ShowMultilayerView: &quot; &lt;&lt; ShowMultilayerView &lt;&lt; endl);
+
+  vtkIdType* polygon = new vtkIdType[pointsPerPolygon];
+
+  for (int j = 0; j &lt; currentExtraCell ; j++) {
+
+    int* conns;
+    if (ProjectLatLon) {
+      conns = modConnections + (j * pointsPerCell);
+    } else {
+      conns = origConnections + (j * pointsPerCell);
+    }
+
+    int minLevel= 0;
+
+    if (includeTopography) {
+      int* connections;
+
+      //check if it is a mirror cell, if so, get original
+      if (j &gt;= numCells + cellOffset) {
+        //cout &lt;&lt; &quot;setting origCell&quot; &lt;&lt; endl;
+        int origCellNum = *(cellMap + (j - numCells - cellOffset));
+        //cout &lt;&lt; &quot;mirror cell: &quot; &lt;&lt;j&lt;&lt; &quot; origCell: &quot;&lt;&lt; origCell &lt;&lt; endl;
+        connections = origConnections + (origCellNum*pointsPerCell);
+      } else connections = origConnections + (j * pointsPerCell);
+
+      //cout &lt;&lt; &quot;calc minLevel&quot; &lt;&lt; endl;
+      minLevel = maxLevelPoint[connections[0]];
+      //cout &lt;&lt; &quot;initial minLevel:&quot; &lt;&lt; minLevel &lt;&lt; endl;
+      // Take the min of the maxLevelPoint of each point
+      for (int k = 1; k &lt; pointsPerCell; k++)  {
+        minLevel = min(minLevel, maxLevelPoint[connections[k]]);
+      }
+      //cout &lt;&lt; endl;
+    }
+
+    // singlelayer
+    if (!ShowMultilayerView) {
+      // If that min is greater than or equal to this output level,
+      // include the cell, otherwise set all points to zero.
+
+      if (includeTopography &amp;&amp; ((minLevel-1) &lt; VerticalLevelSelected)) {
+        //cerr &lt;&lt; &quot;Setting all points to zero&quot; &lt;&lt; endl;
+        val = 0;
+        for (int k = 0; k &lt; pointsPerCell; k++)  {
+          polygon[k] = val;
+        }
+      } else {
+        for (int k = 0; k &lt; pointsPerCell; k++)  {
+          polygon[k] = conns[k];
+        }
+      }
+      output-&gt;InsertNextCell(cellType, pointsPerPolygon, polygon);
+
+    } else { // multilayer
+      // for each level, write the cell
+      for (int levelNum = 0; levelNum &lt; maxNVertLevels; levelNum++) {
+        if (includeTopography &amp;&amp; ((minLevel-1) &lt; levelNum)) {
+          // setting all points to zero
+          val = 0;
+          for (int k = 0; k &lt; pointsPerPolygon; k++)  {
+            polygon[k] = val;
+          }
+        } else {
+          for (int k = 0; k &lt; pointsPerCell; k++)
+          {
+            val = (conns[k]*(maxNVertLevels+1)) + levelNum;
+            polygon[k] = val;
+          }
+
+          for (int k = 0; k &lt; pointsPerCell; k++)
+          {
+            val = (conns[k]*(maxNVertLevels+1)) + levelNum + 1;
+            polygon[k+pointsPerCell] = val;
+          }
+        }
+        //vtkDebugMacro(&quot;InsertingCell j: &quot; &lt;&lt; j &lt;&lt; &quot; level: &quot; &lt;&lt; levelNum &lt;&lt; endl);
+        output-&gt;InsertNextCell(cellType, pointsPerPolygon, polygon);
+      }
+    }
+  }
+
+  //cma check these frees
+  free(modConnections); modConnections = NULL;
+  free(origConnections); origConnections = NULL;
+  free(polygon); polygon = NULL;
+
+  vtkDebugMacro(&lt;&lt; &quot;Leaving OutputCells...&quot; &lt;&lt; endl);
+}
+
+int vtkMPASReader::LoadPointVarData(int variableIndex, double dTimeStep)
+{
+
+    vtkDebugMacro(&lt;&lt; &quot;In vtkMPASReader::LoadPointVarData&quot; &lt;&lt; endl);
+
+    NcVar* ncVar = this-&gt;Internals-&gt;pointVars[variableIndex];
+
+    vtkDebugMacro(&lt;&lt; &quot;got ncVar in vtkMPASReader::LoadPointVarData&quot; &lt;&lt; endl);
+    if (ncVar == NULL) {
+        vtkErrorMacro( &lt;&lt; &quot;Can't find data for variable &quot; &lt;&lt; variableIndex &lt;&lt; endl);
+        return 0;
+    }
+
+    // Allocate data array for this variable
+
+    if (this-&gt;pointVarDataArray[variableIndex] == NULL)
+    {
+      vtkDebugMacro
+        (&lt;&lt; &quot;allocating data array in vtkMPASReader::LoadPointVarData&quot; &lt;&lt; endl);
+      this-&gt;pointVarDataArray[variableIndex] = vtkDoubleArray::New();
+      this-&gt;pointVarDataArray[variableIndex]-&gt;SetName
+        (this-&gt;Internals-&gt;pointVars[variableIndex]-&gt;name());
+      this-&gt;pointVarDataArray[variableIndex]-&gt;SetNumberOfTuples
+        (maxPoints);
+      this-&gt;pointVarDataArray[variableIndex]-&gt;SetNumberOfComponents(1);
+    }
+
+    vtkDebugMacro(&lt;&lt; &quot;getting pointer in vtkMPASReader::LoadPointVarData&quot;
+                  &lt;&lt; endl);
+    double* dataBlock = this-&gt;pointVarDataArray[variableIndex]-&gt;GetPointer(0);
+
+    vtkDebugMacro( &lt;&lt; &quot;dTimeStep requested: &quot; &lt;&lt; dTimeStep &lt;&lt; endl);
+    int timestep = min((int)floor(dTimeStep),
+                       (int)(this-&gt;NumberOfTimeSteps-1));
+    vtkDebugMacro( &lt;&lt; &quot;Time: &quot; &lt;&lt; timestep &lt;&lt; endl);
+
+
+    // singlelayer
+    if (!ShowMultilayerView) {
+      this-&gt;Internals-&gt;pointVars[variableIndex]-&gt;set_cur
+        (timestep, 0, this-&gt;VerticalLevelSelected);
+
+      // we can go ahead and read it into the datablock
+      this-&gt;Internals-&gt;pointVars[variableIndex]-&gt;get(dataBlock+pointOffset, 1, numPoints, 1);
+      dataBlock[0] = dataBlock[1];
+      // data is all in place, don't need to do next step
+
+    } else { // multilayer
+      this-&gt;Internals-&gt;pointVars[variableIndex]-&gt;set_cur (timestep, 0, 0);
+      this-&gt;Internals-&gt;pointVars[variableIndex]-&gt;get(pointVarData + 
+          (maxNVertLevels * pointOffset), 1, numPoints, maxNVertLevels);
+    }
+
+    vtkDebugMacro
+      (&lt;&lt; &quot;got point data in vtkMPASReader::LoadPointVarData&quot; &lt;&lt; endl);
+
+    int i, k;
+
+    if (ShowMultilayerView) {
+
+      // put in dummy points
+      for (int levelNum = 0; levelNum &lt; maxNVertLevels; levelNum++) {
+        dataBlock[levelNum] = pointVarData[maxNVertLevels + levelNum];
+      }
+      // write highest level dummy point (duplicate of last level)
+      dataBlock[maxNVertLevels] = pointVarData[maxNVertLevels+maxNVertLevels-1];
+
+      vtkDebugMacro (&lt;&lt; &quot;Wrote dummy vtkMPASReader::LoadPointVarData&quot; &lt;&lt; endl);
+
+      // put in other points
+      for (int j = pointOffset; j &lt; numPoints + pointOffset; j++) {
+
+        i = j*(maxNVertLevels+1);
+        k = j*(maxNVertLevels);
+
+        // write data for one point -- lowest level to highest
+        for (int levelNum = 0; levelNum &lt; maxNVertLevels; levelNum++) {
+          dataBlock[i++] = pointVarData[k++];
+        }
+
+        // for last layer of points, repeat last level's values
+        // Need Mark's input on this one
+        dataBlock[i++] = pointVarData[--k];
+        //vtkDebugMacro (&lt;&lt; &quot;Wrote j:&quot; &lt;&lt; j &lt;&lt; endl);
+      }
+     
+    }
+
+    vtkDebugMacro (&lt;&lt; &quot;Wrote next pts vtkMPASReader::LoadPointVarData&quot; &lt;&lt; endl);
+
+    vtkDebugMacro (&lt;&lt; &quot;numPoints: &quot; &lt;&lt; numPoints &lt;&lt; &quot; currentExtraPoint: &quot; &lt;&lt; currentExtraPoint &lt;&lt; endl);
+
+    // put out data for extra points
+    for (int j = pointOffset + numPoints; j &lt; currentExtraPoint; j++) {
+      // use map to find out what point data we are using
+      //vtkDebugMacro(&lt;&lt;&quot;LoadPointVarData: j: &quot; &lt;&lt; j &lt;&lt; &quot; k: &quot; &lt;&lt; k &lt;&lt; endl); 
+      int k;
+
+      if (!ShowMultilayerView) {
+        int k = pointMap[j - numPoints - pointOffset];
+        dataBlock[j] = dataBlock[k];
+      } else {
+        int k = pointMap[j - numPoints - pointOffset]*maxNVertLevels;
+        // write data for one point -- lowest level to highest
+        for (int levelNum = 0; levelNum &lt; maxNVertLevels; levelNum++) {
+          dataBlock[i++] = pointVarData[k++];
+        }
+
+        // for last layer of points, repeat last level's values
+        // Need Mark's input on this one
+          dataBlock[i++] = pointVarData[--k];
+      }
+    }
+
+    vtkDebugMacro
+      (&lt;&lt; &quot;wrote extra point data in vtkMPASReader::LoadPointVarData&quot;
+       &lt;&lt; endl);
+    return (1);
+}
+
+
+
+int vtkMPASReader::LoadCellVarData(int variableIndex, double dTimeStep)
+{
+  vtkDebugMacro(&lt;&lt; &quot;In vtkMPASReader::LoadCellVarData&quot; &lt;&lt; endl);
+
+  // cma modify to use point map for lat/lon projection
+
+  NcVar* ncVar = this-&gt;Internals-&gt;cellVars[variableIndex];
+
+  if (ncVar == NULL)
+    {
+    vtkErrorMacro( &lt;&lt; &quot;Can't find data for variable index:&quot; &lt;&lt; variableIndex &lt;&lt; endl);
+    return 0;
+    }
+
+  // Allocate data array for this variable
+  if (this-&gt;cellVarDataArray[variableIndex] == NULL)
+    {
+    this-&gt;cellVarDataArray[variableIndex] = vtkDoubleArray::New();
+    vtkDebugMacro
+      ( &lt;&lt; &quot;Allocated cell var index: &quot;
+        &lt;&lt; this-&gt;Internals-&gt;cellVars[variableIndex]-&gt;name() &lt;&lt; endl);
+    this-&gt;cellVarDataArray[variableIndex]-&gt;SetName
+      (this-&gt;Internals-&gt;cellVars[variableIndex]-&gt;name());
+    this-&gt;cellVarDataArray[variableIndex]-&gt;SetNumberOfTuples
+      (this-&gt;maxCells);
+    this-&gt;cellVarDataArray[variableIndex]-&gt;SetNumberOfComponents(1);
+    }
+
+  vtkDebugMacro(&lt;&lt; &quot;getting pointer in vtkMPASReader::LoadCellVarData&quot; &lt;&lt; endl);
+
+  double* dataBlock = this-&gt;cellVarDataArray[variableIndex]-&gt;GetPointer(0);
+
+  vtkDebugMacro( &lt;&lt; &quot;dTimeStep requested: &quot; &lt;&lt; dTimeStep &lt;&lt; endl);
+  int timestep = min((int)floor(dTimeStep),
+                     (int)(this-&gt;NumberOfTimeSteps-1));
+  vtkDebugMacro( &lt;&lt; &quot;Time: &quot; &lt;&lt; timestep &lt;&lt; endl);
+
+  ncVar-&gt;set_cur(timestep, 0, this-&gt;VerticalLevelSelected);
+
+  if (!ShowMultilayerView) {
+    ncVar-&gt;get(dataBlock, 1, numCells, 1);
+  } else {
+    ncVar-&gt;get(dataBlock, 1, numCells, maxNVertLevels);
+  }
+
+  vtkDebugMacro(&lt;&lt; &quot;Got data for cell var: &quot;
+                &lt;&lt; this-&gt;Internals-&gt;cellVars[variableIndex]-&gt;name()
+                &lt;&lt; endl);
+
+  // put out data for extra cells
+  for (int j = cellOffset + numCells; j &lt; currentExtraCell; j++) {
+    // use map to find out what cell data we are using
+
+    if (!ShowMultilayerView) {
+      int k = cellMap[j - numCells - cellOffset];
+      dataBlock[j] = dataBlock[k];
+    } else {
+      int i = j*maxNVertLevels;
+      int k = cellMap[j - numCells - cellOffset]*maxNVertLevels;
+      // write data for one cell -- lowest level to highest
+      for (int levelNum = 0; levelNum &lt; maxNVertLevels; levelNum++) {
+        dataBlock[i++] = dataBlock[k++];
+      }
+    }
+  }
+
+  vtkDebugMacro( &lt;&lt; &quot;Stored data for cell var: &quot;
+                 &lt;&lt; this-&gt;Internals-&gt;cellVars[variableIndex]-&gt;name() &lt;&lt; endl);
+
+  return(1);
+}
+
+int vtkMPASReader::RegenerateGeometry()
+{
+
+  vtkUnstructuredGrid* output = GetOutput();
+
+  vtkDebugMacro(&lt;&lt; &quot;RegenerateGeometry ...&quot; &lt;&lt; endl);
+
+  // vars are okay, just delete var data storage and realloc
+  // since with new geometry, this might be a different size
+
+  vtkDebugMacro(&lt;&lt; &quot;Destructing cell var data...&quot; &lt;&lt; endl);
+  if (this-&gt;cellVarDataArray)
+  {
+    for (int i = 0; i &lt; this-&gt;numCellVars; i++)
+    {
+      if (this-&gt;cellVarDataArray[i] != NULL)
+      {
+        this-&gt;cellVarDataArray[i]-&gt;Delete();
+        this-&gt;cellVarDataArray[i] = NULL;
+      }
+    }
+  }
+
+  vtkDebugMacro(&lt;&lt; &quot;Destructing point var array...&quot; &lt;&lt; endl);
+  if (this-&gt;pointVarDataArray)
+  {
+    for (int i = 0; i &lt; this-&gt;numPointVars; i++)
+    {
+      if (this-&gt;pointVarDataArray[i] != NULL)
+      {
+        this-&gt;pointVarDataArray[i]-&gt;Delete();
+        this-&gt;pointVarDataArray[i] = NULL;
+      }
+    }
+  }
+
+  // delete old geometry and create new
+
+  if (this-&gt;pointVarData) {
+    free(this-&gt;pointVarData);
+    this-&gt;pointVarData = NULL;
+  }
+
+  if (cellMap) {
+    free(cellMap);
+    cellMap = NULL;
+  }
+
+  if (pointMap) {
+    free(pointMap);
+    pointMap = NULL;
+  }
+
+  // Output the unstructured grid from the netCDF file
+  if (!ReadAndOutputGrid(false)) return 0;
+
+  // fetch data selected using new geometry
+  // Examine each variable to see if it is selected
+  for (int var = 0; var &lt; this-&gt;numPointVars; var++) {
+
+    // Is this variable requested
+    if (this-&gt;PointDataArraySelection-&gt;GetArraySetting(var)) {
+      vtkDebugMacro( &lt;&lt; &quot;Loading Point Variable: &quot; &lt;&lt; var &lt;&lt; endl);
+      LoadPointVarData(var, dTime);
+      output-&gt;GetPointData()-&gt;AddArray(this-&gt;pointVarDataArray[var]);
+    }
+  }
+
+  for (int var = 0; var &lt; this-&gt;numCellVars; var++) {
+    if (this-&gt;CellDataArraySelection-&gt;GetArraySetting(var)) {
+      vtkDebugMacro
+        ( &lt;&lt; &quot;Loading Cell Variable: &quot;
+          &lt;&lt; this-&gt;Internals-&gt;cellVars[var]-&gt;name() &lt;&lt; endl);
+      LoadCellVarData(var, dTime);
+      output-&gt;GetCellData()-&gt;AddArray(this-&gt;cellVarDataArray[var]);
+    }
+  }
+
+  this-&gt;PointDataArraySelection-&gt;Modified();
+  this-&gt;CellDataArraySelection-&gt;Modified();
+  
+  this-&gt;Modified();
+}
+
+
+//----------------------------------------------------------------------------
+void vtkMPASReader::SelectionCallback(vtkObject*,
+                                      unsigned long vtkNotUsed(eventid),
+                                      void* clientdata,
+                                      void* vtkNotUsed(calldata))
+{
+  static_cast&lt;vtkMPASReader*&gt;(clientdata)-&gt;Modified();
+}
+
+
+//----------------------------------------------------------------------------
+vtkUnstructuredGrid* vtkMPASReader::GetOutput()
+{
+  return this-&gt;GetOutput(0);
+}
+
+
+//----------------------------------------------------------------------------
+vtkUnstructuredGrid* vtkMPASReader::GetOutput(int idx)
+{
+  if (idx)
+    {
+    return NULL;
+    }
+  else
+    {
+    return vtkUnstructuredGrid::SafeDownCast( this-&gt;GetOutputDataObject(idx) );
+    }
+}
+
+//----------------------------------------------------------------------------
+int vtkMPASReader::GetNumberOfPointArrays()
+{
+  return this-&gt;PointDataArraySelection-&gt;GetNumberOfArrays();
+}
+
+//----------------------------------------------------------------------------
+int vtkMPASReader::GetNumberOfCellArrays()
+{
+  return this-&gt;CellDataArraySelection-&gt;GetNumberOfArrays();
+}
+
+//----------------------------------------------------------------------------
+void vtkMPASReader::EnableAllPointArrays()
+{
+  this-&gt;PointDataArraySelection-&gt;EnableAllArrays();
+}
+
+//----------------------------------------------------------------------------
+void vtkMPASReader::DisableAllPointArrays()
+{
+  this-&gt;PointDataArraySelection-&gt;DisableAllArrays();
+}
+
+//----------------------------------------------------------------------------
+void vtkMPASReader::EnableAllCellArrays()
+{
+  this-&gt;CellDataArraySelection-&gt;EnableAllArrays();
+}
+
+//----------------------------------------------------------------------------
+void vtkMPASReader::DisableAllCellArrays()
+{
+  this-&gt;CellDataArraySelection-&gt;DisableAllArrays();
+}
+
+//----------------------------------------------------------------------------
+const char* vtkMPASReader::GetPointArrayName(int index)
+{
+    return (const char*)(this-&gt;Internals-&gt;pointVars[index]-&gt;name());
+
+}
+
+//----------------------------------------------------------------------------
+int vtkMPASReader::GetPointArrayStatus(const char* name)
+{
+  return this-&gt;PointDataArraySelection-&gt;ArrayIsEnabled(name);
+}
+
+//----------------------------------------------------------------------------
+void vtkMPASReader::SetPointArrayStatus(const char* name, int status)
+{
+  if (status)
+    {
+    this-&gt;PointDataArraySelection-&gt;EnableArray(name);
+    }
+  else
+    {
+    this-&gt;PointDataArraySelection-&gt;DisableArray(name);
+    }
+}
+
+//----------------------------------------------------------------------------
+const char* vtkMPASReader::GetCellArrayName(int index)
+{
+  return (const char*)(this-&gt;Internals-&gt;cellVars[index]-&gt;name());
+}
+
+//----------------------------------------------------------------------------
+int vtkMPASReader::GetCellArrayStatus(const char* name)
+{
+  return this-&gt;CellDataArraySelection-&gt;ArrayIsEnabled(name);
+}
+
+//----------------------------------------------------------------------------
+void vtkMPASReader::SetCellArrayStatus(const char* name, int status)
+{
+  if (status)
+    {
+    this-&gt;CellDataArraySelection-&gt;EnableArray(name);
+    }
+  else
+    {
+    this-&gt;CellDataArraySelection-&gt;DisableArray(name);
+    }
+}
+
+
+
+void vtkMPASReader::SetVerticalLevel(int level)
+{
+  this-&gt;VerticalLevelSelected = level;
+  vtkDebugMacro( &lt;&lt; &quot;Set VerticalLevelSelected to: &quot; &lt;&lt; level &lt;&lt; endl);
+
+  vtkDebugMacro( &lt;&lt; &quot;infoRequested?: &quot; &lt;&lt; infoRequested &lt;&lt; endl);
+
+  if (!this-&gt;infoRequested) { return; }
+  if (!this-&gt;dataRequested) { return; }
+
+  // Examine each variable to see if it is selected
+  for (int var = 0; var &lt; this-&gt;numPointVars; var++)
+    {
+    // Is this variable requested
+    if (this-&gt;PointDataArraySelection-&gt;GetArraySetting(var))
+      {
+      vtkDebugMacro( &lt;&lt; &quot;Loading Point Variable: &quot;
+                     &lt;&lt; this-&gt;Internals-&gt;pointVars[var]-&gt;name() &lt;&lt; endl);
+      LoadPointVarData(var, dTime);
+      }
+    }
+
+  for (int var = 0; var &lt; this-&gt;numCellVars; var++)
+    {
+    if (this-&gt;CellDataArraySelection-&gt;GetArraySetting(var))
+      {
+      vtkDebugMacro( &lt;&lt; &quot;Loading Cell Variable: &quot;
+                     &lt;&lt; this-&gt;Internals-&gt;cellVars[var]-&gt;name() &lt;&lt; endl);
+      LoadCellVarData(var, dTime);
+      }
+    }
+
+  this-&gt;PointDataArraySelection-&gt;Modified();
+  this-&gt;CellDataArraySelection-&gt;Modified();
+}
+
+void vtkMPASReader::SetLayerThickness(int val)
+{
+  if (LayerThickness != val) {
+    LayerThickness = val;
+      vtkDebugMacro( &lt;&lt; &quot;SetLayerThickness: LayerThickness set to &quot; &lt;&lt; LayerThickness &lt;&lt; endl);
+    if (ShowMultilayerView) {
+      // Don't regenerate if we've never done an initial read
+      if (!this-&gt;infoRequested) { return; }
+      if (!this-&gt;dataRequested) { return; }
+      RegenerateGeometry();
+    }
+  }
+}
+
+void vtkMPASReader::SetCenterLon(int val)
+{
+  if (CenterLon != val) {
+    CenterLon = val;
+    this-&gt;centerRad = CenterLon * PI / 180.0;
+    if (ProjectLatLon) {
+      // Don't regenerate if we've never done an initial read
+      if (!this-&gt;infoRequested) { return; }
+      if (!this-&gt;dataRequested) { return; }
+      RegenerateGeometry();
+    }
+  }
+}
+
+void vtkMPASReader::SetProjectLatLon(bool val)
+{
+  if (ProjectLatLon != val) {
+    ProjectLatLon = val;
+    // Don't regenerate if we've never done an initial read
+    if (!this-&gt;infoRequested) { return; }
+    if (!this-&gt;dataRequested) { return; }
+    RegenerateGeometry();
+  }
+}
+
+void vtkMPASReader::SetIsAtmosphere(bool val)
+{
+  if (IsAtmosphere != val) {
+    IsAtmosphere = val;
+    // Don't regenerate if we've never done an initial read
+    if (!this-&gt;infoRequested) { return; }
+    if (!this-&gt;dataRequested) { return; }
+    RegenerateGeometry();
+  }
+}
+
+void vtkMPASReader::SetIsZeroCentered(bool val)
+{
+  if (IsZeroCentered != val) {
+    IsZeroCentered = val;
+    // Don't regenerate if we've never done an initial read
+    if (!this-&gt;infoRequested) { return; }
+    if (!this-&gt;dataRequested) { return; }
+    RegenerateGeometry();
+  }
+}
+
+void vtkMPASReader::SetShowMultilayerView(bool val)
+{
+  if (ShowMultilayerView != val) {
+    ShowMultilayerView= val;
+    // Don't regenerate if we've never done an initial read
+    if (!this-&gt;infoRequested) { return; }
+    if (!this-&gt;dataRequested) { return; }
+    RegenerateGeometry();
+  }
+}
+
+void vtkMPASReader::PrintSelf(ostream&amp; os, vtkIndent indent)
+{
+  this-&gt;Superclass::PrintSelf(os, indent);
+  os &lt;&lt; indent &lt;&lt; &quot;FileName: &quot; &lt;&lt; (this-&gt;FileName?this-&gt;FileName:&quot;NULL&quot;) &lt;&lt; &quot;</font>
<font color="blue">&quot;;
+  os &lt;&lt; indent &lt;&lt; &quot;VerticalLevelRange: &quot; &lt;&lt; this-&gt;VerticalLevelRange &lt;&lt; &quot;</font>
<font color="blue">&quot;;
+  os &lt;&lt; indent &lt;&lt; &quot;numPointVars: &quot; &lt;&lt; this-&gt;numPointVars &lt;&lt; &quot;</font>
<font color="blue">&quot;;
+  os &lt;&lt; indent &lt;&lt; &quot;numCellVars: &quot; &lt;&lt; this-&gt;numCellVars &lt;&lt; &quot;</font>
<font color="blue">&quot;;
+  os &lt;&lt; indent &lt;&lt; &quot;maxPoints: &quot; &lt;&lt; this-&gt;maxPoints &lt;&lt; &quot;</font>
<font color="blue">&quot;;
+  os &lt;&lt; indent &lt;&lt; &quot;maxCells: &quot; &lt;&lt; this-&gt;maxCells &lt;&lt; &quot;</font>
<font color="gray">&quot;;
+}


Property changes on: branches/ocean_projects/graphics/paraview/reader/vtkMPASReader.cxx
___________________________________________________________________
Name: svn:mime-type
   + text/x-c++src
Name: svn:keywords
   + Author Date ID Revision
Name: svn:eol-style
   + native

Added: branches/ocean_projects/graphics/paraview/reader/vtkMPASReader.h
===================================================================
--- branches/ocean_projects/graphics/paraview/reader/vtkMPASReader.h                                (rev 0)
+++ branches/ocean_projects/graphics/paraview/reader/vtkMPASReader.h        2010-09-22 01:07:51 UTC (rev 508)
@@ -0,0 +1,286 @@
+/*=========================================================================
+
+  Program:   Visualization Toolkit
+  Module:    vtkMPASReader.h
+
+  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
+  All rights reserved.
+  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
+
+     This software is distributed WITHOUT ANY WARRANTY; without even
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+     PURPOSE.  See the above copyright notice for more information.
+
+=========================================================================*/
+/*=========================================================================
+
+  Program:   VTK/ParaView Los Alamos National Laboratory Modules (PVLANL)
+  Module:    vtkMPASReader.h
+
+Copyright (c) 2010 Los Alamos National Security, LLC
+
+All rights reserved.
+
+Copyright 2010. Los Alamos National Security, LLC.
+This software was produced under U.S. Government contract DE-AC52-06NA25396
+for Los Alamos National Laboratory (LANL), which is operated by
+Los Alamos National Security, LLC for the U.S. Department of Energy.
+The U.S. Government has rights to use, reproduce, and distribute this software.
+NEITHER THE GOVERNMENT NOR LOS ALAMOS NATIONAL SECURITY, LLC MAKES ANY WARRANTY,
+EXPRESS OR IMPLIED, OR ASSUMES ANY LIABILITY FOR THE USE OF THIS SOFTWARE.
+If software is modified to produce derivative works, such modified software
+should be clearly marked, so as not to confuse it with the version available
+from LANL.
+
+Additionally, redistribution and use in source and binary forms, with or
+without modification, are permitted provided that the following conditions
+are met:
+-   Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+-   Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+-   Neither the name of Los Alamos National Security, LLC, Los Alamos National
+    Laboratory, LANL, the U.S. Government, nor the names of its contributors
+    may be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY LOS ALAMOS NATIONAL SECURITY, LLC AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL LOS ALAMOS NATIONAL SECURITY, LLC OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=========================================================================*/
+// .NAME vtkMPASReader - Read an MPAS netCFD file
+// .SECTION Description
+// This program reads an MPAS netCDF data file to allow paraview to
+// display a dual-grid sphere.
+// The variables that have time dim are available to ParaView.
+//
+// Assume all variables are of interest if they have dims
+// (Time, nCells|nVertices, nVertLevels, [nTracers])
+// Converts variable data type from double to float.
+// Assume no more than 100 vars each for cell and point data
+// Displays tracer vars as tracer1, tracer2, etc.
+// Does not deal with edge data.
+//
+// Christine Ahrens
+// 8/9/2010
+// Version 1.2
+
+#ifndef __vtkMPASReader_h
+#define __vtkMPASReader_h
+
+#define MAX_VARS 100
+#define MAX_VAR_NAME 100
+
+#include &quot;vtkUnstructuredGridAlgorithm.h&quot;
+
+class vtkCallbackCommand;
+class vtkDataArraySelection;
+class vtkDoubleArray;
+class vtkStdString;
+class vtkStringArray;
+
+class vtkInternals;
+
+class VTK_IO_EXPORT vtkMPASReader : public vtkUnstructuredGridAlgorithm
+{
+ public:
+  static vtkMPASReader *New();
+  vtkTypeMacro(vtkMPASReader,vtkUnstructuredGridAlgorithm);
+  void PrintSelf(ostream&amp; os, vtkIndent indent);
+
+  // Description:
+  // Specify file name of MPAS data file to read.
+  vtkSetStringMacro(FileName);
+  vtkGetStringMacro(FileName);
+
+  // Description:
+  // Get the number of data cells
+  vtkGetMacro(maxCells, int);
+
+  // Description:
+  // Get the number of points
+  vtkGetMacro(maxPoints, int);
+
+  // Description:
+  // Get the number of data variables at the cell centers and points
+  vtkGetMacro(numCellVars, int);
+  vtkGetMacro(numPointVars, int);
+
+  // Description:
+  // Get the reader's output
+  vtkUnstructuredGrid *GetOutput();
+  vtkUnstructuredGrid *GetOutput(int index);
+
+  // Description:
+  // The following methods allow selective reading of solutions fields.
+  // By default, ALL data fields on the nodes are read, but this can
+  // be modified.
+  int GetNumberOfPointArrays();
+  const char* GetPointArrayName(int index);
+  int GetPointArrayStatus(const char* name);
+  void SetPointArrayStatus(const char* name, int status);
+  void DisableAllPointArrays();
+  void EnableAllPointArrays();
+
+  int GetNumberOfCellArrays();
+  const char* GetCellArrayName(int index);
+  int GetCellArrayStatus(const char* name);
+  void SetCellArrayStatus(const char* name, int status);
+  void DisableAllCellArrays();
+  void EnableAllCellArrays();
+
+  void SetVerticalLevel(int level);
+  vtkGetVector2Macro(VerticalLevelRange, int);
+
+  void SetLayerThickness(int val);
+  vtkGetVector2Macro(LayerThicknessRange, int);
+  
+  void SetCenterLon(int val);
+  vtkGetVector2Macro(CenterLonRange, int);
+
+  void SetProjectLatLon(bool val);
+  vtkGetMacro(ProjectLatLon, bool);
+
+  void SetIsAtmosphere(bool val);
+  vtkGetMacro(IsAtmosphere, bool);
+
+  void SetIsZeroCentered(bool val);
+  vtkGetMacro(IsZeroCentered, bool);
+
+  void SetShowMultilayerView(bool val);
+  vtkGetMacro(ShowMultilayerView, bool);
+
+ protected:
+  vtkMPASReader();
+  ~vtkMPASReader();
+
+  char *FileName;         // First field part file giving path
+  /*
+    int Rank;               // Number of this processor
+    int TotalRank;          // Number of processors
+  */
+
+  //  int NumberOfPieces;         // Number of files in dataset
+  // vtkIdType NumberOfTuples;        // Number of tuples in sub extent
+
+  vtkStdString* VariableName;     // Names of each variable
+  int* VariableType;          // Scalar, vector or tensor
+
+  int NumberOfTimeSteps;      // Temporal domain
+  double* TimeSteps;          // Times available for request
+  double dTime;
+
+
+  // Observer to modify this object when array selections are modified
+  vtkCallbackCommand* SelectionObserver;
+
+  int RequestData(vtkInformation *, vtkInformationVector **,
+                  vtkInformationVector *);
+  int RequestInformation(vtkInformation *, vtkInformationVector **,
+                         vtkInformationVector *);
+
+
+  static void SelectionCallback(vtkObject* caller, unsigned long eid,
+                                void* clientdata, void* calldata);
+
+  bool infoRequested;
+  bool dataRequested;
+
+  vtkInternals *Internals;
+
+  // params
+
+  // Selected field of interest
+  vtkDataArraySelection* PointDataArraySelection;
+  vtkDataArraySelection* CellDataArraySelection;
+
+  vtkDoubleArray** cellVarDataArray;    // Actual data arrays
+  vtkDoubleArray** pointVarDataArray;   // Actual data arrays
+
+  int VerticalLevelSelected;
+  int VerticalLevelRange[2];
+
+  int LayerThickness;
+  int LayerThicknessRange[2];
+
+  int CenterLon;
+  int CenterLonRange[2];
+
+  bool ProjectLatLon;
+  bool IsAtmosphere;
+  bool IsZeroCentered;
+  bool ShowMultilayerView;
+
+  bool includeTopography;
+  bool doBugFix;
+  double centerRad;
+
+
+  // geometry
+  int nVertLevels;
+  int maxNVertLevels;
+  int numCells;
+  int numPoints;
+  int cellOffset;
+  int pointOffset;
+  int pointsPerCell;
+  int currentExtraPoint;  // current extra point
+  int currentExtraCell;   // current extra  cell
+  double* pointX;      // x coord of point
+  double* pointY;      // y coord of point
+  double* pointZ;      // z coord of point
+  int modNumPoints;
+  int modNumCells;
+  int* origConnections;   // original connections
+  int* modConnections;    // modified connections
+  int* cellMap;           // maps from added cell to original cell #
+  int* pointMap;          // maps from added point to original point #
+  int* maxLevelPoint;      //
+  int maxCells;           // max cells
+  int maxPoints;          // max points
+  int verticalIndex;      // for singleLayer, which vertical level
+
+  // vars
+  int numCellVars;
+  int numPointVars;
+  double* pointVarData;
+  double* cellVarData;
+
+  void SetDefaults();
+  int GetNcDims();
+  int CheckParams();
+  int GetNcVars(const char* cellDimName, const char* pointDimName);
+  int ReadAndOutputGrid(bool init);
+  int ReadAndOutputVariableData();
+  int BuildVarArrays();
+  int AllocSphereGeometry();
+  int AllocLatLonGeometry();
+  void ShiftLonData();
+  int AddMirrorPoint(int index, double dividerX);
+  void FixPoints();
+  int EliminateXWrap();
+  void OutputPoints(bool init);
+  void OutputCells(bool init);
+  unsigned char GetCellType();
+  void LoadGeometryData(int var, double dTime);
+  int LoadPointVarData(int variable, double dTime);
+  int LoadCellVarData(int variable, double dTime);
+  int RegenerateGeometry();
+
+ private:
+  vtkMPASReader(const vtkMPASReader&amp;);    // Not implemented.
+  void operator=(const vtkMPASReader&amp;); // Not implemented.
+
+};
+
+#endif


Property changes on: branches/ocean_projects/graphics/paraview/reader/vtkMPASReader.h
___________________________________________________________________
Name: svn:mime-type
   + text/x-c++hdr
Name: svn:keywords
   + Author Date ID Revision
Name: svn:eol-style
   + native

</font>
</pre>