<!--
   ____    _ __           ____               __    ____
  / __/___(_) /  ___ ____/ __ \__ _____ ___ / /_  /  _/__  ____
 _\ \/ __/ / _ \/ -_) __/ /_/ / // / -_|_-</ __/ _/ // _ \/ __/
/___/\__/_/_.__/\__/_/  \___\_\_,_/\__/___/\__/ /___/_//_/\__(_)

Copyright 2012 SciberQuest Inc.
-->

<ServerManagerConfiguration>
<ProxyGroup name="filters">

    <!-- ==================================================================== -->
    <SourceProxy
      name="vtkSQImageGhosts"
      class="vtkSQImageGhosts"
      label="SQ Image Ghosts">

      <Documentation
        long_help="A filter to generate requested ghosts cells for image data."
        short_help="A filter to generate requested ghosts cells for image data.">
        A filter to generate requested ghost cells for image data.
      </Documentation>

      <InputProperty
        name="Input"
        command="SetInputConnection">
        <ProxyGroupDomain name="groups">
          <Group name="sources" />
          <Group name="filters" />
        </ProxyGroupDomain>
        <DataTypeDomain name="input_type">
          <DataType value="vtkDataSet" />
        </DataTypeDomain>
        <InputArrayDomain name="input_array" attribute_type="point"/>
        <Documentation>
          Sets the input for the filter.
        </Documentation>
      </InputProperty>

      <IntVectorProperty
        name="CopyAllArrays"
        label="Copy all arrays"
        command="SetCopyAllArrays"
        number_of_elements="1"
        default_values="1"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Copy all point data, if not set only the selected arrays from the ArraysToCopy
          list will be coppied.
        </Documentation>
      </IntVectorProperty>

      <StringVectorProperty
        name="ArraysToCopy"
        command="AddArrayToCopy"
        clean_command="ClearArraysToCopy"
        repeat_command="1"
        number_of_elements_per_command="1"
        label="Copy selected arrays"
        >
        <Documentation>
            This property specifies the name(s) array(s) to filter.
        </Documentation>
        <ArrayListDomain name="array_list">
          <RequiredProperties>
            <Property name="Input" function="Input"/>
          </RequiredProperties>
        </ArrayListDomain>
        <!-- none selected by default -->
        <Hints>
          <NoDefault />
        </Hints>
      </StringVectorProperty>

      <Hints>
        <View type="RenderView"/>
      </Hints>
    </SourceProxy>


    <!-- ==================================================================== -->
    <SourceProxy name="vtkSQTensorGlyph" class="vtkSQTensorGlyph" label="SQ Tensor Glyphs">

      <Documentation
        long_help="This filter generates an ellipsoid, cuboid, cylinder or superquadric glyph at
                   each point of the input data set. The glyphs are oriented and scaled according
                   to eigenvalues and eigenvectors of tensor point data of the input data set."
        short_help="This filter generates an ellipsoid, cuboid, cylinder or superquadric glyph at each
                   point of the input data set. The glyphs are oriented and scaled according to eigenvalues
                   and eigenvectors of tensor point data of the input data set.">

        The Tensor Glyph filter generates an ellipsoid, cuboid, cylinder or superquadric glyph at every point in
        the input data set. The glyphs are oriented and scaled according to eigenvalues and eigenvectors of tensor
        point data of the input data set. The Tensor Glyph filter operates on any type of data set. Its output is
        polygonal.
      </Documentation>

    <InputProperty
        name="Input"
        command="SetInputConnection">
        <ProxyGroupDomain name="groups">
          <Group name="sources" />
          <Group name="filters" />
        </ProxyGroupDomain>
      <DataTypeDomain name="input_type">
        <DataType value="vtkDataSet" />
      </DataTypeDomain>
      <InputArrayDomain name="input_array1" attribute_type="point"
            number_of_components="9" />
      <InputArrayDomain name="input_array2" attribute_type="point"
            number_of_components="1" optional="1" />
      <Documentation>
        This property specifies the input to the Glyph filter.
      </Documentation>
    </InputProperty>

    <StringVectorProperty
        name="SelectInputTensors"
        command="SetInputArrayToProcess"
        number_of_elements="5"
        element_types="0 0 0 0 2"
        label="Tensors"
        >
      <ArrayListDomain name="array_list" attribute_type="Tensors"
          input_domain_name="input_array1">
        <RequiredProperties>
          <Property name="Input" function="Input" />
        </RequiredProperties>
      </ArrayListDomain>
      <Documentation>
              This property indicates the name of the tensor array on which to operate. The indicated array's
              eigenvalues and eigenvectors are used for scaling and orienting the glyphs.
      </Documentation>
    </StringVectorProperty>

    <InputProperty
        name="Source"
        command="SetSourceConnection"
        label="Glyph Type">
      <ProxyGroupDomain name="groups">
        <Group name="sources" />
        <Group name="glyph_sources" />
      </ProxyGroupDomain>
      <DataTypeDomain name="input_type">
        <DataType value="vtkPolyData" />
      </DataTypeDomain>
      <ProxyListDomain name="proxy_list">
        <Proxy group="sources" name="SphereSource" />
        <Proxy group="sources" name="CylinderSource" />
        <Proxy group="sources" name="CubeSource" />
        <Proxy group="sources" name="SuperquadricSource" />
      </ProxyListDomain>
      <Documentation>
        This property determines which type of glyph will be placed at the points in the input dataset.
      </Documentation>
    </InputProperty>

    <IntVectorProperty
        name="ExtractEigenvalues"
        command="SetExtractEigenvalues"
        number_of_elements="1"
        default_values="1"
        >
      <BooleanDomain name="bool" />
      <Documentation>
        Toggle whether to extract eigenvalues from tensor. If false, eigenvalues/eigenvectors are not extracted and
        the columns of the tensor are taken as the eigenvectors (the norm of column, always positive, is the eigenvalue).
        If true, the glyph is scaled and oriented according to eigenvalues and eigenvectors; additionally, eigenvalues
        are provided as new data array.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="ColorGlyphs"
        command="SetColorGlyphs"
        number_of_elements="1"
        default_values="1"
        >
      <BooleanDomain name="bool" />
      <Documentation>
        This property determines whether or not to color the glyphes.
      </Documentation>
    </IntVectorProperty>

    <StringVectorProperty
        name="SelectInputScalars"
        command="SetInputArrayToProcess"
        number_of_elements="5"
        element_types="0 0 0 0 2"
        default_values="1"
        label="Scalars"
        >
           <!-- default_values=1 is important to set here and not in Tensors
                previously. Omitting the setting here would mess up changed
                tensor input being recognized as tensor input and not as
                scalar input and vice versa. -->
      <ArrayListDomain name="array_list" attribute_type="Scalars"
          input_domain_name="input_array2">
        <RequiredProperties>
          <Property name="Input" function="Input" />
        </RequiredProperties>
      </ArrayListDomain>
      <Documentation>
        This property indicates the name of the scalar array to use for coloring
      </Documentation>
    </StringVectorProperty>

    <IntVectorProperty
        name="ColorMode"
        command="SetColorMode"
        number_of_elements="1"
        default_values="0"
        label="Color by"
        >
            <EnumerationDomain name="enum">
              <Entry value="0" text="input scalars" />
              <Entry value="1" text="eigenvalues" />
            </EnumerationDomain>
      <Documentation>
        This property determines whether input scalars or computed eigenvalues at the point should be used
        to color the glyphs. If ThreeGlyphs is set and the eigenvalues are chosen for coloring then each glyph
        is colored by the corresponding eigenvalue and if not set the color corresponding to the largest
        eigenvalue is chosen.
      </Documentation>
   </IntVectorProperty>

    <!-- Disabled as vtkTensorGlyph.cxx does not respect this parameter currently. -->
    <!--
    <IntVectorProperty
        name="Scaling"
        command="SetScaling"
        number_of_elements="1"
        default_values="1"
        >
      <BooleanDomain name="bool" />
      <Documentation>
        This property determines whether or not to scale glyphs with eigenvalues.
      </Documentation>
    </IntVectorProperty>
    -->

    <DoubleVectorProperty
        name="ScaleFactor"
        command="SetScaleFactor"
        number_of_elements="1"
        default_values="1"
        >
      <Documentation>
        This property specifies the scale factor to scale every glyph by.
      </Documentation>
    </DoubleVectorProperty>

    <IntVectorProperty
        name="LimitScalingByEigenvalues"
        command="SetClampScaling"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool" />
      <Documentation>
        This property determines whether scaling of glyphs by ScaleFactor times eigenvalue should be limited.
        This is useful to prevent uncontrolled scaling near singularities.
      </Documentation>
    </IntVectorProperty>

    <DoubleVectorProperty
        name="MaxScaleFactor"
        command="SetMaxScaleFactor"
        number_of_elements="1"
        default_values="10"
        >
      <Documentation>
        If scaling by eigenvalues should be limited, this value sets an upper limit for scale factor times
        eigenvalue.
      </Documentation>
    </DoubleVectorProperty>

    <IntVectorProperty
        name="Symmetric"
        command="SetSymmetric"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool" />
      <Documentation>
        This property determines whether or not to draw a mirror of each glyph.
      </Documentation>
    </IntVectorProperty>

     <IntVectorProperty
        name="ThreeGlyphs"
        command="SetThreeGlyphs"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool" />
      <Documentation>
        Toggle whether to produce three glyphs, each of which oriented along an eigenvector and scaled according
        to the corresponding eigenvector.
      </Documentation>
          </IntVectorProperty>
    </SourceProxy>

  <!-- ==================================================================== -->
  <SourceProxy
      name="vtkSQFieldTopologySelect"
      label="SQ Field Topology Select"
      class="vtkSQFieldTopologySelect">

    <!-- Input -->
    <InputProperty
        name="DatasetInput"
        command="SetInputConnection"
        label="Topograph">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <DataTypeDomain name="input_type" composite_data_supported="0">
        <DataType value="vtkDataSet"/>
      </DataTypeDomain>
      <InputArrayDomain name="input_array" attribute_type="cell" number_of_components="1"/>
      <Documentation>
        Dataset containing the topograph.
      </Documentation>
    </InputProperty>

    <!-- topological class selection -->
    <IntVectorProperty
        name="domain-domain"
        command="SetSelectDD"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="north-domain"
        command="SetSelectND"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="south-domain"
        command="SetSelectSD"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="null-domain"
        command="SetSelectOD"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="short-domain"
        command="SetSelectID"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="north-north"
        command="SetSelectNN"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="south-north"
        command="SetSelectSN"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="null-north"
        command="SetSelectON"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="short-north"
        command="SetSelectIN"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="south-south"
        command="SetSelectSS"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="null-south"
        command="SetSelectOS"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="short-south"
        command="SetSelectIS"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="null-null"
        command="SetSelectOO"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="short-null"
        command="SetSelectIO"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="short-short"
        command="SetSelectII"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <Hints>
      <Visibility replace_input="2" />
    </Hints>

  </SourceProxy>


  <!-- ==================================================================== -->
  <SourceProxy
      name="vtkSQFieldTopologySplit"
      label="SQ Field Topology Split"
      class="vtkSQFieldTopologySplit">

    <!-- Input -->
    <InputProperty
        name="DatasetInput"
        command="SetInputConnection"
        label="Topograph">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <DataTypeDomain name="input_type" composite_data_supported="0">
        <DataType value="vtkDataSet"/>
      </DataTypeDomain>
      <InputArrayDomain name="input_array" attribute_type="cell" number_of_components="1"/>
      <Documentation>
        Dataset containing the topograph.
      </Documentation>
    </InputProperty>

    <!-- Outputs -->
    <OutputPort name="Solar Wind"      index="0" />
    <OutputPort name="Magnetosphere"   index="1" />
    <OutputPort name="North Connected" index="2" />
    <OutputPort name="South Connected" index="3" />
    <OutputPort name="Null/Short Int." index="4" />

    <Hints>
      <Visibility replace_input="2" />
    </Hints>

  </SourceProxy>


  <!-- ==================================================================== -->
  <SourceProxy
      name="vtkSQFieldTracer"
      label="SQ Field Tracer"
      class="vtkSQFieldTracer">

    <!-- Inputs -->
    <InputProperty
        name="DatasetInput"
        command="AddVectorInputConnection"
        clean_command="ClearVectorInputConnections"
        label="Vector Field">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <DataTypeDomain name="input_type" composite_data_supported="0">
        <DataType value="vtkDataSet"/>
      </DataTypeDomain>
      <InputArrayDomain name="input_array" attribute_type="point" number_of_components="3"/>
      <Documentation>
        Dataset containing the vector field.
      </Documentation>
    </InputProperty>

    <InputProperty
        name="SeedPointInput"
        command="AddSeedPointInputConnection"
        clean_command="ClearSeedPointInputConnections"
        label="Seed Cells"
        multiple_input="0">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <Documentation>
        Cells to generate seed points from (at cell center).
      </Documentation>
    </InputProperty>

    <InputProperty
        name="TerminatorInput"
        command="AddTerminatorInputConnection"
        clean_command="ClearTerminatorInputConnections"
        label="Terminator Surfaces"
        multiple_input="1"
        optional="1">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <Documentation>
        Surfaces which if present stop field line integration when a field line crosses one.
      </Documentation>
    </InputProperty>

    <!-- Outputs -->
    <OutputPort name="Streamlines" index="0"/>

    <!-- Vector Field Selection -->
    <StringVectorProperty
        name="SelectInputVectors"
        command="SetInputArrayToProcess"
        number_of_elements="5"
        element_types="0 0 0 0 2"
        animateable="0"
        label="Vector Field"
        >
      <ArrayListDomain name="array_list" attribute_type="Vectors">
        <RequiredProperties>
          <Property name="DatasetInput" function="Input"/>
        </RequiredProperties>
      </ArrayListDomain>
      <Documentation>
        This property contains the name of the vector array from which to generate streamlines.
      </Documentation>
    </StringVectorProperty>

    <!-- Integrator type -->
    <IntVectorProperty
        name="IntegratorType"
        label="Integrator"
        command="SetIntegratorType"
        number_of_elements="1"
        default_values="2"
        panel_visibility="never"
        >
      <!--
      <EnumerationDomain name="enum">
        <Entry value="1"       text="RK-2"/>
        <Entry value="2"       text="RK-4"/>
        <Entry value="3"       text="RK-4-5"/>
      </EnumerationDomain>
      -->
    </IntVectorProperty>

    <!-- Integrator parameters
    <DoubleVectorProperty
        name="MinStep"
        label="Minimum Step"
        command="SetMinStep"
        number_of_elements="1"
        default_values="1.0e-8"
        >
      <DoubleRangeDomain name="range" min="1.0e-14" max="1.0" />
      <Documentation>
        Minimum integration step size as a multiple of cell lengths.
      </Documentation>
    </DoubleVectorProperty>
    -->

    <DoubleVectorProperty
        name="MaxStep"
        label="Max Step Size"
        command="SetMaxStep"
        number_of_elements="1"
        default_values="0.1"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Maximum integration step size as a multiple of cell lengths.
      </Documentation>
    </DoubleVectorProperty>

    <!--
    <DoubleVectorProperty
        name="MaxError"
        command="SetMaxError"
        number_of_elements="1"
        default_values="1.0e-4"
        >
      <DoubleRangeDomain name="range" min="1.0e-14" max="1.0" />
      <Documentation>
        Error bound for adaptive step size integration.
      </Documentation>
    </DoubleVectorProperty>

    <IdTypeVectorProperty
        name="MaxNumberOfSteps"
        label="Max Number of Steps"
        command="SetMaxNumberOfSteps"
        number_of_elements="1"
        default_values="100000000"
        >
      <IntRangeDomain name="range"/>
      <Documentation>
        Maximum number of steps, beyond which integration is terminated.
      </Documentation>
    </IdTypeVectorProperty>
    -->

    <DoubleVectorProperty
        name="MaxLineLength"
        label="Max Arc Length"
        command="SetMaxLineLength"
        number_of_elements="1"
        default_values="1.0"
        >
      <BoundsDomain name="bounds" mode="scaled_extent" scale_factor="0.5">
        <RequiredProperties>
          <Property name="DatasetInput" function="Input"/>
        </RequiredProperties>
      </BoundsDomain>
      <Documentation>
        Maximum streamline arc length beyond which line integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="NullThreshold"
        label="Null Threshold"
        command="SetNullThreshold"
        number_of_elements="1"
        default_values="0.001"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Vector field magnitude below which particle advection/integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <IntVectorProperty
        name="ForwardOnly"
        label="Disable reverse integrate"
        command="SetForwardOnly"
        number_of_elements="1"
        default_values="1"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <!--
    <DoubleVectorProperty
        name="MinSegmentLength"
        label="Minimum Segment Length"
        command="SetMinSegmentLength"
        number_of_elements="1"
        default_values="0.0"
        >
      <Documentation>
        Lower bound on the segments in the resulting streamline
      </Documentation>
    </DoubleVectorProperty>
    -->

    <!-- output control -->
    <IntVectorProperty
        name="CullPeriodicTransition"
        label="Cull Periodic Transitions"
        command="SetCullPeriodicTransitions"
        number_of_elements="1"
        default_values="1"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
        Remove segments that are the result of the application of a periodic BC.
      </Documentation>
    </IntVectorProperty>

    <!-- Colormap/Legened control -->
    <IntVectorProperty
        name="SqueezeColorMap"
        label="Squeeze Color Map"
        command="SetSqueezeColorMap"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
      Use the minimum number of intersect colors required. Requires global reduction.
      </Documentation>
    </IntVectorProperty>

    <!-- Integration parameter unit (2=cell length)
    <IntVectorProperty
        name="StepUnit"
        label="Step Unit"
        command="SetStepUnit"
        number_of_elements="1"
        default_values="2"
        />
    -->

    <!-- Mode Flag -->
    <IntVectorProperty
        name="Mode"
        command="SetMode"
        number_of_elements="1"
        default_values="1"
        panel_visibility="never">
      <Documentation>
        Set the mode of operation to one of STREAM,TOPOLOGY,POINCARE,DISPLACEMENT.
      </Documentation>
    </IntVectorProperty>

    <!-- Load balancing/work scheduling controls -->
    <IntVectorProperty
        name="UseDynamicScheduler"
        command="SetUseDynamicScheduler"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
      When set the work is by a simple self-scheduling algorithm. In this case all of the seed source data has to be duplicated
      on all processes. This must be off if this is not the case. Set once before the filter runs.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="MasterBlockSize"
        command="SetMasterBlockSize"
        number_of_elements="1"
        default_values="16"
        animateable="0"
        >
      <IntRangeDomain name="range" min="1"/>
      <Documentation>
        Controls how much work the master does in between servicing work requests
        from the workers. Should be much smaller the WorkerBlockSize.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="WorkerBlockSize"
        command="SetWorkerBlockSize"
        number_of_elements="1"
        default_values="512"
        animateable="0"
        >
      <IntRangeDomain name="range" min="1"/>
      <Documentation>
        Controls how much work is given to the worker processes at each
        request.
      </Documentation>
    </IntVectorProperty>

    <Hints>
      <Property name="IntegratorType" show="0"/>
      <Property name="Mode" show="0"/>
    </Hints>

    <!-- End OOCFieldTracer -->
  </SourceProxy>

  <!-- ====================================================================
  <SourceProxy
      name="vtkSQFieldTracerRK45"
      label="SQ Field Tracer RK-4-5"
      class="vtkSQFieldTracer">

    <InputProperty
        name="DatasetInput"
        command="AddVectorInputConnection"
        clean_command="ClearVectorInputConnections"
        label="Vector Field">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <DataTypeDomain name="input_type" composite_data_supported="0">
        <DataType value="vtkDataSet"/>
      </DataTypeDomain>
      <InputArrayDomain name="input_array" attribute_type="point" number_of_components="3"/>
      <Documentation>
        Dataset containing the vector field.
      </Documentation>
    </InputProperty>

    <InputProperty
        name="SeedPointInput"
        command="AddSeedPointInputConnection"
        clean_command="ClearSeedPointInputConnections"
        label="Seed Cells"
        multiple_input="0">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <Documentation>
        Cells to generate seed points from (at cell center).
      </Documentation>
    </InputProperty>

    <InputProperty
        name="TerminatorInput"
        command="AddTerminatorInputConnection"
        clean_command="ClearTerminatorInputConnections"
        label="Terminator Surfaces"
        multiple_input="1"
        optional="1">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <Documentation>
        Surfaces which if present stop field line integration when a field line crosses one.
      </Documentation>
    </InputProperty>

    <OutputPort name="Streamlines" index="0"/>

    <StringVectorProperty
        name="SelectInputVectors"
        command="SetInputArrayToProcess"
        number_of_elements="5"
        element_types="0 0 0 0 2"
        animateable="0"
        label="Vector Field"
        >
      <ArrayListDomain name="array_list" attribute_type="Vectors">
        <RequiredProperties>
          <Property name="DatasetInput" function="Input"/>
        </RequiredProperties>
      </ArrayListDomain>
      <Documentation>
        This property contains the name of the vector array from which to generate streamlines.
      </Documentation>
    </StringVectorProperty>

    <IntVectorProperty
        name="IntegratorType"
        label="Integrator"
        command="SetIntegratorType"
        number_of_elements="1"
        default_values="3"
        panel_visibility="never">
    </IntVectorProperty>

    <DoubleVectorProperty
        name="MinStep"
        label="Min Step Size"
        command="SetMinStep"
        number_of_elements="1"
        default_values="1.0e-8"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Minimum integration step size as a multiple of cell lengths.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="MaxStep"
        label="Max Step Size"
        command="SetMaxStep"
        number_of_elements="1"
        default_values="0.1"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Maximum integration step size as a multiple of cell lengths.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="MaxError"
        label="Max Error"
        command="SetMaxError"
        number_of_elements="1"
        default_values="1.0e-3"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Error bound for adaptive step size integration.
      </Documentation>
    </DoubleVectorProperty>

    <IdTypeVectorProperty
        name="MaxNumberOfSteps"
        label="Max Number of Steps"
        command="SetMaxNumberOfSteps"
        number_of_elements="1"
        default_values="1000"
        >
      <IntRangeDomain name="range"/>
      <Documentation>
        Maximum number of steps, beyond which integration is terminated.
      </Documentation>
    </IdTypeVectorProperty>

    <DoubleVectorProperty
        name="MaxLineLength"
        label="Max Arc Length"
        command="SetMaxLineLength"
        number_of_elements="1"
        default_values="1.0"
        >
      <BoundsDomain name="bounds" mode="scaled_extent" scale_factor="0.5">
        <RequiredProperties>
          <Property name="DatasetInput" function="Input"/>
        </RequiredProperties>
      </BoundsDomain>
      <Documentation>
        Maximum streamline arc length beyond which line integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="NullThreshold"
        label="Null Threshold"
        command="SetNullThreshold"
        number_of_elements="1"
        default_values="0.001"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Vector field magnitude below which particle advection/integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <IntVectorProperty
        name="ForwardOnly"
        label="Disable reverse integrate"
        command="SetForwardOnly"
        number_of_elements="1"
        default_values="1"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <DoubleVectorProperty
        name="MinSegmentLength"
        label="Minimum Segment Length"
        command="SetMinSegmentLength"
        number_of_elements="1"
        default_values="0.0"
        >
      <Documentation>
        Lower bound on the segments in the resulting streamline
      </Documentation>
    </DoubleVectorProperty>

    <IntVectorProperty
        name="CullPeriodicTransition"
        label="Cull Periodic Transitions"
        command="SetCullPeriodicTransitions"
        number_of_elements="1"
        default_values="1"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
        Remove segments that are the result of the application of a periodic BC.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="SqueezeColorMap"
        label="Squeeze Color Map"
        command="SetSqueezeColorMap"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
      Use the minimum number of intersect colors required. Requires global reduction.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="Mode"
        command="SetMode"
        number_of_elements="1"
        default_values="1"
        panel_visibility="never">
      <Documentation>
        Set the mode of operation to one of STREAM,TOPOLOGY,POINCARE,DISPLACEMENT.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="UseDynamicScheduler"
        command="SetUseDynamicScheduler"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
      When set the work is by a simple self-scheduling algorithm. In this case all of the seed source data has to be duplicated
      on all processes. This must be off if this is not the case. Set once before the filter runs.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="MasterBlockSize"
        command="SetMasterBlockSize"
        number_of_elements="1"
        default_values="16"
        animateable="0"
        >
      <IntRangeDomain name="range" min="1"/>
      <Documentation>
        Controls how much work the master does in between servicing work requests
        from the workers. Should be much smaller the WorkerBlockSize.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="WorkerBlockSize"
        command="SetWorkerBlockSize"
        number_of_elements="1"
        default_values="512"
        animateable="0"
        >
      <IntRangeDomain name="range" min="1"/>
      <Documentation>
        Controls how much work is given to the worker processes at each
        request.
      </Documentation>
    </IntVectorProperty>

    <Hints>
      <Property name="IntegratorType" show="0"/>
      <Property name="Mode" show="0"/>
      <Property name="IntegratorType" show="0"/>
    </Hints>

  </SourceProxy>
  -->

  <!-- ==================================================================== -->
  <SourceProxy
      name="vtkSQFieldTopologyMapper"
      label="SQ Field Topology Mapper"
      class="vtkSQFieldTracer">

    <!-- Inputs -->
    <InputProperty
        name="DatasetInput"
        command="AddVectorInputConnection"
        clean_command="ClearVectorInputConnections"
        label="Vector Field">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <DataTypeDomain name="input_type" composite_data_supported="0">
        <DataType value="vtkDataSet"/>
      </DataTypeDomain>
      <InputArrayDomain name="input_array" attribute_type="point" number_of_components="3"/>
      <Documentation>
        Dataset containing the vector field.
      </Documentation>
    </InputProperty>

    <InputProperty
        name="SeedPointInput"
        command="AddSeedPointInputConnection"
        clean_command="ClearSeedPointInputConnections"
        label="Seed Cells"
        multiple_input="0">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <Documentation>
        Cells to generate seed points from (at cell center).
      </Documentation>
    </InputProperty>

    <InputProperty
        name="TerminatorInput"
        command="AddTerminatorInputConnection"
        clean_command="ClearTerminatorInputConnections"
        label="Terminator Surfaces"
        multiple_input="1"
        optional="1">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <Documentation>
        Surfaces which if present stop field line integration when a field line crosses one.
      </Documentation>
    </InputProperty>

    <!-- Outputs -->
    <OutputPort name="Field Topology Map" index="0" />

    <!-- Vector Field Selection -->
    <StringVectorProperty
        name="SelectInputVectors"
        command="SetInputArrayToProcess"
        number_of_elements="5"
        element_types="0 0 0 0 2"
        animateable="0"
        label="Vector Field"
        >
      <ArrayListDomain name="array_list" attribute_type="Vectors">
        <RequiredProperties>
          <Property name="DatasetInput" function="Input"/>
        </RequiredProperties>
      </ArrayListDomain>
      <Documentation>
        This property contains the name of the vector array from which to generate streamlines.
      </Documentation>
    </StringVectorProperty>

    <!-- Integrator type -->
    <IntVectorProperty
        name="IntegratorType"
        label="Integrator"
        command="SetIntegratorType"
        number_of_elements="1"
        default_values="3"
        panel_visibility="never"
        >
      <!--
      <EnumerationDomain name="enum">
        <Entry value="1"       text="RK-2"/>
        <Entry value="2"       text="RK-4"/>
        <Entry value="3"       text="RK-4-5"/>
      </EnumerationDomain>
      -->
    </IntVectorProperty>

    <!-- Integrator parameters -->
    <DoubleVectorProperty
        name="MinStep"
        label="Min Step Size"
        command="SetMinStep"
        number_of_elements="1"
        default_values="1.0e-8"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Minimum integration step size as a multiple of cell lengths.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="MaxStep"
        label="Max Step Size"
        command="SetMaxStep"
        number_of_elements="1"
        default_values="0.1"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Maximum integration step size as a multiple of cell lengths.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="MaxError"
        label="Max Error"
        command="SetMaxError"
        number_of_elements="1"
        default_values="1.0e-3"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Error bound for adaptive step size integration.
      </Documentation>
    </DoubleVectorProperty>

    <IdTypeVectorProperty
        name="MaxNumberOfSteps"
        label="Max Number of Steps"
        command="SetMaxNumberOfSteps"
        number_of_elements="1"
        default_values="10000"
        >
      <IntRangeDomain name="range"/>
      <Documentation>
        Maximum number of steps, beyond which integration is terminated.
      </Documentation>
    </IdTypeVectorProperty>

    <DoubleVectorProperty
        name="MaxLineLength"
        label="Max Arc Length"
        command="SetMaxLineLength"
        number_of_elements="1"
        default_values="1.0"
        >
      <BoundsDomain name="bounds" mode="scaled_extent" scale_factor="10">
        <RequiredProperties>
          <Property name="DatasetInput" function="Input"/>
        </RequiredProperties>
      </BoundsDomain>
      <Documentation>
        Maximum streamline arc length beyond which line integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="NullThreshold"
        label="Null Threshold"
        command="SetNullThreshold"
        number_of_elements="1"
        default_values="0.001"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Vector field magnitude below which particle advection/integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <IntVectorProperty
        name="ForwardOnly"
        label="Disable reverse integrate"
        command="SetForwardOnly"
        number_of_elements="1"
        default_values="0"
        panel_visibility="never"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <!-- Colormap/Legened control -->
    <IntVectorProperty
        name="SqueezeColorMap"
        label="Squeeze Color Map"
        command="SetSqueezeColorMap"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
      Use the minimum number of intersect colors required. Requires global reduction.
      </Documentation>
    </IntVectorProperty>

    <!-- Integration parameter unit (2=cell length)
    <IntVectorProperty
        name="StepUnit"
        label="Step Unit"
        command="SetStepUnit"
        number_of_elements="1"
        default_values="2"
        />
    -->

    <!-- Mode Flag -->
    <IntVectorProperty
        name="Mode"
        command="SetMode"
        number_of_elements="1"
        default_values="2"
        panel_visibility="never">
      <Documentation>
        Set the mode of operation to one of STREAM,TOPOLOGY,POINCARE,DISPLACEMENT.
      </Documentation>
    </IntVectorProperty>

    <!-- Load balancing/work scheduling control -->
    <IntVectorProperty
        name="UseDynamicScheduler"
        command="SetUseDynamicScheduler"
        number_of_elements="1"
        default_values="1"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
      When set the work is by a simple self-scheduling algorithm. In this case all of the seed source data has to be duplicated
      on all processes. This must be off if this is not the case. Set once before the filter runs.
      </Documentation>
    </IntVectorProperty>

    <!-- Load balancing controls -->
    <IntVectorProperty
        name="MasterBlockSize"
        command="SetMasterBlockSize"
        number_of_elements="1"
        default_values="16"
        animateable="0"
        >
      <IntRangeDomain name="range" min="1" max="131072"/>
      <Documentation>
        Controls how much work the master does in between servicing work requests
        from the workers. Should be much smaller the WorkerBlockSize.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="WorkerBlockSize"
        command="SetWorkerBlockSize"
        number_of_elements="1"
        default_values="512"
        animateable="0"
        >
      <IntRangeDomain name="range" min="1" max="131072"/>
      <Documentation>
        Controls how much work is given to the worker processes at each
        request.
      </Documentation>
    </IntVectorProperty>

    <Hints>
      <Property name="IntegratorType" show="0"/>
      <Property name="Mode" show="0"/>
      <Property name="ForwardOnly" show="0"/>
    </Hints>

  <!-- End Topology Mapper -->
  </SourceProxy>


  <!-- ==================================================================== -->
  <SourceProxy
    name="vtkSQPoincareMapper"
    label="SQ Poincare Mapper"
    class="vtkSQFieldTracer">

    <!-- Inputs -->
    <InputProperty
        name="DatasetInput"
        command="AddVectorInputConnection"
        clean_command="ClearVectorInputConnections"
        label="Vector Field">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <DataTypeDomain name="input_type" composite_data_supported="0">
        <DataType value="vtkDataSet"/>
      </DataTypeDomain>
      <InputArrayDomain name="input_array" attribute_type="point" number_of_components="3"/>
      <Documentation>
        Dataset containing the vector field.
      </Documentation>
    </InputProperty>

    <InputProperty
        name="SeedPointInput"
        command="AddSeedPointInputConnection"
        clean_command="ClearSeedPointInputConnections"
        label="Seed Cells"
        multiple_input="0">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <Documentation>
        Cells to generate seed points from (at cell center).
      </Documentation>
    </InputProperty>

    <InputProperty
        name="TerminatorInput"
        command="AddTerminatorInputConnection"
        clean_command="ClearTerminatorInputConnections"
        label="Map Surfaces"
        multiple_input="1"
        optional="1">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <Documentation>
        Surfaces which if present stop field line integration when a field line crosses one.
      </Documentation>
    </InputProperty>

    <!-- Outputs -->
    <OutputPort name="Poincare Map" index="0" />

    <!-- Vector Field Selection -->
    <StringVectorProperty
        name="SelectInputVectors"
        command="SetInputArrayToProcess"
        number_of_elements="5"
        element_types="0 0 0 0 2"
        animateable="0"
        label="Vector Field"
        >
      <ArrayListDomain name="array_list" attribute_type="Vectors">
        <RequiredProperties>
          <Property name="DatasetInput" function="Input"/>
        </RequiredProperties>
      </ArrayListDomain>
      <Documentation>
        This property contains the name of the vector array from which to generate streamlines.
      </Documentation>
    </StringVectorProperty>

    <!-- Integrator type -->
    <IntVectorProperty
        name="IntegratorType"
        label="Integrator"
        command="SetIntegratorType"
        number_of_elements="1"
        default_values="2"
        panel_visibility="never"
        >
      <!--
      <EnumerationDomain name="enum">
        <Entry value="1"       text="RK-2"/>
        <Entry value="2"       text="RK-4"/>
        <Entry value="3"       text="RK-4-5"/>
      </EnumerationDomain>
      -->
    </IntVectorProperty>

    <!-- Integrator parameters
    <DoubleVectorProperty
        name="MinStep"
        label="Minimum Step"
        command="SetMinStep"
        number_of_elements="1"
        default_values="1.0e-8"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Minimum integration step size as a multiple of cell lengths.
      </Documentation>
    </DoubleVectorProperty>
    -->

    <DoubleVectorProperty
        name="MaxStep"
        label="Max Step Size"
        command="SetMaxStep"
        number_of_elements="1"
        default_values="0.1"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Maximum integration step size as a multiple of cell lengths.
      </Documentation>
    </DoubleVectorProperty>

    <!--
    <DoubleVectorProperty
        name="MaxError"
        command="SetMaxError"
        number_of_elements="1"
        default_values="1.0e-4"
        >
      <DoubleRangeDomain name="range" min="1.0e-14" max="1.0" />
      <Documentation>
        Error bound for adaptive step size integration.
      </Documentation>
    </DoubleVectorProperty>

    <IdTypeVectorProperty
        name="MaxNumberOfSteps"
        label="Max Number of Steps"
        command="SetMaxNumberOfSteps"
        number_of_elements="1"
        default_values="100000000"
        >
      <IntRangeDomain name="range"/>
      <Documentation>
        Maximum number of steps, beyond which integration is terminated.
      </Documentation>
    </IdTypeVectorProperty>
    -->

    <DoubleVectorProperty
        name="MaxLineLength"
        label="Max Arc Length"
        command="SetMaxLineLength"
        number_of_elements="1"
        default_values="1.0"
        >
      <BoundsDomain name="bounds" mode="scaled_extent" scale_factor="10">
        <RequiredProperties>
          <Property name="DatasetInput" function="Input"/>
        </RequiredProperties>
      </BoundsDomain>
      <Documentation>
        Maximum streamline arc length beyond which line integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="NullThreshold"
        label="Null Threshold"
        command="SetNullThreshold"
        number_of_elements="1"
        default_values="0.001"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Vector field magnitude below which particle advection/integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <IntVectorProperty
        name="ForwardOnly"
        label="Disable reverse integrate"
        command="SetForwardOnly"
        number_of_elements="1"
        default_values="1"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <!-- Colormap/Legened control
    <IntVectorProperty
        name="SqueezeColorMap"
        label="Squeeze Color Map"
        command="SetSqueezeColorMap"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
        Use the minimum number of intersect colors required. Requires global reduction.
      </Documentation>
    </IntVectorProperty>
    -->

    <!-- Integration parameter unit (2=cell length)
    <IntVectorProperty
        name="StepUnit"
        label="Step Unit"
        command="SetStepUnit"
        number_of_elements="1"
        default_values="2"
        />
    -->

    <!-- Mode Flag -->
    <IntVectorProperty
        name="Mode"
        command="SetMode"
        number_of_elements="1"
        default_values="3"
        panel_visibility="never"
        >
      <Documentation>
        Set the mode of operation to one of STREAM,TOPOLOGY,POINCARE,DISPLACEMENT.
      </Documentation>
    </IntVectorProperty>

    <!-- Load balancing/work scheduling controls -->
    <IntVectorProperty
        name="UseDynamicScheduler"
        command="SetUseDynamicScheduler"
        number_of_elements="1"
        default_values="1"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
      When set the work is by a simple self-scheduling algorithm. In this case all of the seed source data has to be duplicated
      on all processes. This must be off if this is not the case. Set once before the filter runs.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="MasterBlockSize"
        command="SetMasterBlockSize"
        number_of_elements="1"
        default_values="1"
        animateable="0"
        >
      <IntRangeDomain name="range" min="1"/>
      <Documentation>
        Controls how much work the master does in between servicing work requests
        from the workers. Should be much smaller the WorkerBlockSize.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="WorkerBlockSize"
        command="SetWorkerBlockSize"
        number_of_elements="1"
        default_values="1"
        animateable="0"
        >
      <IntRangeDomain name="range" min="1"/>
      <Documentation>
        Controls how much work is given to the worker processes at each
        request.
      </Documentation>
    </IntVectorProperty>

    <Hints>
      <Property name="IntegratorType" show="0"/>
      <Property name="Mode" show="0"/>
    </Hints>

   <!-- End SQ Poincare Mapper -->
  </SourceProxy>

  <!-- ====================================================================
  <SourceProxy
    name="vtkSQPoincareMapperRK45"
    label="SQ Poincare Mapper RK-4-5"
    class="vtkSQFieldTracer">

    <InputProperty
        name="DatasetInput"
        command="AddVectorInputConnection"
        clean_command="ClearVectorInputConnections"
        label="Vector Field">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <DataTypeDomain name="input_type" composite_data_supported="0">
        <DataType value="vtkDataSet"/>
      </DataTypeDomain>
      <InputArrayDomain name="input_array" attribute_type="point" number_of_components="3"/>
      <Documentation>
        Dataset containing the vector field.
      </Documentation>
    </InputProperty>

    <InputProperty
        name="SeedPointInput"
        command="AddSeedPointInputConnection"
        clean_command="ClearSeedPointInputConnections"
        label="Seed Cells"
        multiple_input="0">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <Documentation>
        Cells to generate seed points from (at cell center).
      </Documentation>
    </InputProperty>

    <InputProperty
        name="TerminatorInput"
        command="AddTerminatorInputConnection"
        clean_command="ClearTerminatorInputConnections"
        label="Map Surfaces"
        multiple_input="1"
        optional="1">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <Documentation>
        Surfaces which if present stop field line integration when a field line crosses one.
      </Documentation>
    </InputProperty>

    <OutputPort name="Poincare Map" index="0" />

    <StringVectorProperty
        name="SelectInputVectors"
        command="SetInputArrayToProcess"
        number_of_elements="5"
        element_types="0 0 0 0 2"
        animateable="0"
        label="Vector Field"
        >
      <ArrayListDomain name="array_list" attribute_type="Vectors">
        <RequiredProperties>
          <Property name="DatasetInput" function="Input"/>
        </RequiredProperties>
      </ArrayListDomain>
      <Documentation>
        This property contains the name of the vector array from which to generate streamlines.
      </Documentation>
    </StringVectorProperty>

    <IntVectorProperty
        name="IntegratorType"
        label="Integrator"
        command="SetIntegratorType"
        number_of_elements="1"
        default_values="3"
        panel_visibility="never"
        >
    </IntVectorProperty>

    <DoubleVectorProperty
        name="MinStep"
        label="Min Step Size"
        command="SetMinStep"
        number_of_elements="1"
        default_values="1.0e-8"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Minimum integration step size as a multiple of cell lengths.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="MaxStep"
        label="Max Step Size"
        command="SetMaxStep"
        number_of_elements="1"
        default_values="0.1"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Maximum integration step size as a multiple of cell lengths.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="MaxError"
        label="Max Error"
        command="SetMaxError"
        number_of_elements="1"
        default_values="1.0e-6"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Error bound for adaptive step size integration.
      </Documentation>
    </DoubleVectorProperty>

    <IdTypeVectorProperty
        name="MaxNumberOfSteps"
        label="Max Number of Steps"
        command="SetMaxNumberOfSteps"
        number_of_elements="1"
        default_values="100000000"
        >
      <IntRangeDomain name="range"/>
      <Documentation>
        Maximum number of steps, beyond which integration is terminated.
      </Documentation>
    </IdTypeVectorProperty>

    <DoubleVectorProperty
        name="MaxLineLength"
        label="Max Arc Length"
        command="SetMaxLineLength"
        number_of_elements="1"
        default_values="1.0"
        >
      <BoundsDomain name="bounds" mode="scaled_extent" scale_factor="10">
        <RequiredProperties>
          <Property name="DatasetInput" function="Input"/>
        </RequiredProperties>
      </BoundsDomain>
      <Documentation>
        Maximum streamline arc length beyond which line integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="NullThreshold"
        label="Null Threshold"
        command="SetNullThreshold"
        number_of_elements="1"
        default_values="0.001"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Vector field magnitude below which particle advection/integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <IntVectorProperty
        name="ForwardOnly"
        label="Disable reverse integrate"
        command="SetForwardOnly"
        number_of_elements="1"
        default_values="1"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="Mode"
        command="SetMode"
        number_of_elements="1"
        default_values="3"
        panel_visibility="never">
      <Documentation>
        Set the mode of operation to one of STREAM,TOPOLOGY,POINCARE,DISPLACEMENT.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="UseDynamicScheduler"
        command="SetUseDynamicScheduler"
        number_of_elements="1"
        default_values="1"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
      When set the work is by a simple self-scheduling algorithm. In this case all of the seed source data has to be duplicated
      on all processes. This must be off if this is not the case. Set once before the filter runs.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="MasterBlockSize"
        command="SetMasterBlockSize"
        number_of_elements="1"
        default_values="1"
        >
      <IntRangeDomain name="range" min="1"/>
      <Documentation>
        Controls how much work the master does in between servicing work requests
        from the workers. Should be much smaller the WorkerBlockSize.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="WorkerBlockSize"
        command="SetWorkerBlockSize"
        number_of_elements="1"
        default_values="1"
        >
      <IntRangeDomain name="range" min="1"/>
      <Documentation>
        Controls how much work is given to the worker processes at each
        request.
      </Documentation>
    </IntVectorProperty>

    <Hints>
      <Property name="Mode" show="0"/>
      <Property name="IntegratorType" show="0"/>
    </Hints>

  </SourceProxy>
  -->

  <!-- ==================================================================== -->
  <SourceProxy
    name="vtkSQDisplacementMapper"
    label="SQ Displacement Mapper"
    class="vtkSQFieldTracer">

    <!-- Inputs -->
    <InputProperty
        name="DatasetInput"
        command="AddVectorInputConnection"
        clean_command="ClearVectorInputConnections"
        label="Vector Field">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <DataTypeDomain name="input_type" composite_data_supported="0">
        <DataType value="vtkDataSet"/>
      </DataTypeDomain>
      <InputArrayDomain name="input_array" attribute_type="point" number_of_components="3"/>
      <Documentation>
        Dataset containing the vector field.
      </Documentation>
    </InputProperty>

    <InputProperty
        name="SeedPointInput"
        command="AddSeedPointInputConnection"
        clean_command="ClearSeedPointInputConnections"
        label="Seed Cells"
        multiple_input="0">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <Documentation>
        Cells to generate seed points from (at cell center).
      </Documentation>
    </InputProperty>

    <InputProperty
        name="TerminatorInput"
        command="AddTerminatorInputConnection"
        clean_command="ClearTerminatorInputConnections"
        label="Terminator Surfaces"
        multiple_input="1"
        optional="1">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <Documentation>
        Surfaces which if present stop field line integration when a field line crosses one.
      </Documentation>
    </InputProperty>

    <!-- Outputs -->
    <OutputPort name="Displacement Map" index="0" />

    <!-- Vector Field Selection -->
    <StringVectorProperty
        name="SelectInputVectors"
        command="SetInputArrayToProcess"
        number_of_elements="5"
        element_types="0 0 0 0 2"
        animateable="0"
        label="Vector Field"
        >
      <ArrayListDomain name="array_list" attribute_type="Vectors">
        <RequiredProperties>
          <Property name="DatasetInput" function="Input"/>
        </RequiredProperties>
      </ArrayListDomain>
      <Documentation>
        This property contains the name of the vector array from which to generate streamlines.
      </Documentation>
    </StringVectorProperty>

    <!-- Integrator type -->
    <IntVectorProperty
        name="IntegratorType"
        label="Integrator"
        command="SetIntegratorType"
        number_of_elements="1"
        default_values="2"
        panel_visibility="never"
        >
      <!--
      <EnumerationDomain name="enum">
        <Entry value="1"       text="RK-2"/>
        <Entry value="2"       text="RK-4"/>
        <Entry value="3"       text="RK-4-5"/>
      </EnumerationDomain>
      -->
    </IntVectorProperty>

    <!-- Integrator parameters
    <DoubleVectorProperty
        name="MinStep"
        label="Minimum Step"
        command="SetMinStep"
        number_of_elements="1"
        default_values="1.0e-8"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Minimum integration step size as a multiple of cell lengths.
      </Documentation>
    </DoubleVectorProperty>
    -->

    <DoubleVectorProperty
        name="MaxStep"
        label="Max Step Size"
        command="SetMaxStep"
        number_of_elements="1"
        default_values="0.1"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Maximum integration step size as a multiple of cell lengths.
      </Documentation>
    </DoubleVectorProperty>

    <!--
    <DoubleVectorProperty
        name="MaxError"
        command="SetMaxError"
        number_of_elements="1"
        default_values="1.0e-4"
        >
      <DoubleRangeDomain name="range" min="1.0e-14" max="1.0" />
      <Documentation>
        Error bound for adaptive step size integration.
      </Documentation>
    </DoubleVectorProperty>

    <IdTypeVectorProperty
        name="MaxNumberOfSteps"
        label="Max Number of Steps"
        command="SetMaxNumberOfSteps"
        number_of_elements="1"
        default_values="100000000"
        >
      <IntRangeDomain name="range"/>
      <Documentation>
        Maximum number of steps, beyond which integration is terminated.
      </Documentation>
    </IdTypeVectorProperty>
    -->

    <DoubleVectorProperty
        name="MaxLineLength"
        label="Max Arc Length"
        command="SetMaxLineLength"
        number_of_elements="1"
        default_values="1.0e37"
        panel_visibility="never"
        >
      <DoubleRangeDomain name="range"/>
      <!--
      <BoundsDomain name="bounds" mode="scaled_extent" scale_factor="100">
        <RequiredProperties>
          <Property name="DatasetInput" function="Input"/>
        </RequiredProperties>
      </BoundsDomain>
      -->
      <Documentation>
        Maximum streamline arc length beyond which line integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="MaxIntegrationInterval"
        label="Max Time Interval"
        command="SetMaxIntegrationInterval"
        number_of_elements="1"
        default_values="1.0"
        >
      <Documentation>
        Maximum time interval beyond which line integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="NullThreshold"
        label="Null Threshold"
        command="SetNullThreshold"
        number_of_elements="1"
        default_values="0.001"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Vector field magnitude below which particle advection/integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <IntVectorProperty
        name="ForwardOnly"
        label="Disable reverse integrate"
        command="SetForwardOnly"
        number_of_elements="1"
        default_values="0"
        panel_visibility="never"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <!-- Colormap/Legened control
    <IntVectorProperty
        name="SqueezeColorMap"
        label="Squeeze Color Map"
        command="SetSqueezeColorMap"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
        Use the minimum number of intersect colors required. Requires global reduction.
      </Documentation>
    </IntVectorProperty>
    -->

    <!-- Integration parameter unit (2=cell length)
    <IntVectorProperty
        name="StepUnit"
        label="Step Unit"
        command="SetStepUnit"
        number_of_elements="1"
        default_values="2"
        />
    -->

    <!-- Mode Flag -->
    <IntVectorProperty
        name="Mode"
        command="SetMode"
        number_of_elements="1"
        default_values="4"
        panel_visibility="never"
        >
      <Documentation>
        Set the mode of operation to one of STREAM,TOPOLOGY,POINCARE,DISPLACEMENT.
      </Documentation>
    </IntVectorProperty>

    <!-- Load balancing/work scheduling controls -->
    <IntVectorProperty
        name="UseDynamicScheduler"
        command="SetUseDynamicScheduler"
        number_of_elements="1"
        default_values="1"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
      When set the work is by a simple self-scheduling algorithm. In this case all of the seed source data has to be duplicated
      on all processes. This must be off if this is not the case. Set once before the filter runs.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="MasterBlockSize"
        command="SetMasterBlockSize"
        number_of_elements="1"
        default_values="16"
        animateable="0"
        >
      <IntRangeDomain name="range" min="1"/>
      <Documentation>
        Controls how much work the master does in between servicing work requests
        from the workers. Should be much smaller the WorkerBlockSize.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="WorkerBlockSize"
        command="SetWorkerBlockSize"
        number_of_elements="1"
        default_values="128"
        animateable="0"
        >
      <IntRangeDomain name="range" min="1"/>
      <Documentation>
        Controls how much work is given to the worker processes at each
        request.
      </Documentation>
    </IntVectorProperty>

    <Hints>
      <Property name="IntegratorType" show="0"/>
      <Property name="Mode" show="0"/>
      <Property name="MaxLineLength" show="0"/>
      <Property name="ForwardOnly" show="0"/>
    </Hints>

   <!-- End SQ Displacement Mapper -->
  </SourceProxy>

  <!-- ====================================================================
  <SourceProxy
    name="vtkSQDisplacementMapperRK45"
    label="SQ Displacement Mapper RK-4-5"
    class="vtkSQFieldTracer">

    <InputProperty
        name="DatasetInput"
        command="AddVectorInputConnection"
        clean_command="ClearVectorInputConnections"
        label="Vector Field">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <DataTypeDomain name="input_type" composite_data_supported="0">
        <DataType value="vtkDataSet"/>
      </DataTypeDomain>
      <InputArrayDomain name="input_array" attribute_type="point" number_of_components="3"/>
      <Documentation>
        Dataset containing the vector field.
      </Documentation>
    </InputProperty>

    <InputProperty
        name="SeedPointInput"
        command="AddSeedPointInputConnection"
        clean_command="ClearSeedPointInputConnections"
        label="Seed Cells"
        multiple_input="0">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <Documentation>
        Cells to generate seed points from (at cell center).
      </Documentation>
    </InputProperty>

    <InputProperty
        name="TerminatorInput"
        command="AddTerminatorInputConnection"
        clean_command="ClearTerminatorInputConnections"
        label="Terminator Surfaces"
        multiple_input="1"
        optional="1">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <Documentation>
        Surfaces which if present stop field line integration when a field line crosses one.
      </Documentation>
    </InputProperty>

    <OutputPort name="Displacement Map" index="0" />

    <StringVectorProperty
        name="SelectInputVectors"
        command="SetInputArrayToProcess"
        number_of_elements="5"
        element_types="0 0 0 0 2"
        animateable="0"
        label="Vector Field"
        >
      <ArrayListDomain name="array_list" attribute_type="Vectors">
        <RequiredProperties>
          <Property name="DatasetInput" function="Input"/>
        </RequiredProperties>
      </ArrayListDomain>
      <Documentation>
        This property contains the name of the vector array from which to generate streamlines.
      </Documentation>
    </StringVectorProperty>

    <IntVectorProperty
        name="IntegratorType"
        label="Integrator"
        command="SetIntegratorType"
        number_of_elements="1"
        default_values="3"
        panel_visibility="never"
        >
    </IntVectorProperty>

    <DoubleVectorProperty
        name="MinStep"
        label="Min Step Size"
        command="SetMinStep"
        number_of_elements="1"
        default_values="1.0e-8"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Minimum integration step size as a multiple of cell lengths.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="MaxStep"
        label="Max Step Size"
        command="SetMaxStep"
        number_of_elements="1"
        default_values="0.1"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Maximum integration step size as a multiple of cell lengths.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="MaxError"
        label="Max Error"
        command="SetMaxError"
        number_of_elements="1"
        default_values="1.0e-6"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Error bound for adaptive step size integration.
      </Documentation>
    </DoubleVectorProperty>

    <IdTypeVectorProperty
        name="MaxNumberOfSteps"
        label="Max Number of Steps"
        command="SetMaxNumberOfSteps"
        number_of_elements="1"
        default_values="100000000"
        >
      <IntRangeDomain name="range"/>
      <Documentation>
        Maximum number of steps, beyond which integration is terminated.
      </Documentation>
    </IdTypeVectorProperty>

    <DoubleVectorProperty
        name="MaxLineLength"
        label="Max Arc Length"
        command="SetMaxLineLength"
        number_of_elements="1"
        default_values="1.0e37"
        panel_visibility="never"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Maximum streamline arc length beyond which line integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="MaxIntegrationInterval"
        label="Max Time Interval"
        command="SetMaxIntegrationInterval"
        number_of_elements="1"
        default_values="1.0"
        >
      <Documentation>
        Maximum time interval beyond which line integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <DoubleVectorProperty
        name="NullThreshold"
        label="Null Threshold"
        command="SetNullThreshold"
        number_of_elements="1"
        default_values="0.001"
        >
      <DoubleRangeDomain name="range"/>
      <Documentation>
        Vector field magnitude below which particle advection/integration is terminated.
      </Documentation>
    </DoubleVectorProperty>

    <IntVectorProperty
        name="ForwardOnly"
        label="Disable reverse integrate"
        command="SetForwardOnly"
        number_of_elements="1"
        default_values="0"
        panel_visibility="never"
        >
      <BooleanDomain name="bool"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="Mode"
        command="SetMode"
        number_of_elements="1"
        default_values="4"
        panel_visibility="never"
        >
      <Documentation>
        Set the mode of operation to one of STREAM,TOPOLOGY,POINCARE,DISPLACEMENT.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="UseDynamicScheduler"
        command="SetUseDynamicScheduler"
        number_of_elements="1"
        default_values="1"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
      When set the work is by a simple self-scheduling algorithm. In this case all of the seed source data has to be duplicated
      on all processes. This must be off if this is not the case. Set once before the filter runs.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="MasterBlockSize"
        command="SetMasterBlockSize"
        number_of_elements="1"
        default_values="16"
        >
      <IntRangeDomain name="range" min="1"/>
      <Documentation>
        Controls how much work the master does in between servicing work requests
        from the workers. Should be much smaller the WorkerBlockSize.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="WorkerBlockSize"
        command="SetWorkerBlockSize"
        number_of_elements="1"
        default_values="128"
        >
      <IntRangeDomain name="range" min="1"/>
      <Documentation>
        Controls how much work is given to the worker processes at each
        request.
      </Documentation>
    </IntVectorProperty>

    <Hints>
      <Property name="Mode" show="0"/>
      <Property name="IntegratorType" show="0"/>
      <Property name="MaxLineLength" show="0"/>
      <Property name="ForwardOnly" show="0"/>
    </Hints>

  </SourceProxy>
  -->

  <!-- ==================================================================== -->
  <SourceProxy
    name="vtkSQEdgeFilter"
    class="vtkSQEdgeFilter"
    label="SQ Edge Detect">
    <Documentation
      long_help="Long Documentation"
      short_help="Short Documentation">
      Textual Documentation.
    </Documentation>

     <InputProperty
        name="Input"
        command="SetInputConnection">
           <ProxyGroupDomain name="groups">
             <Group name="sources"/>
             <Group name="filters"/>
           </ProxyGroupDomain>
           <DataTypeDomain name="input_type">
             <DataType value="vtkDataSet"/>
           </DataTypeDomain>
           <InputArrayDomain name="input_array" attribute_type="point"
                             number_of_components="1"/>
           <Documentation>
             This property specifies the input.
           </Documentation>
      </InputProperty>

      <StringVectorProperty
         name="SelectInputVectors"
         command="SetInputArrayToProcess"
         number_of_elements="5"
         element_types="0 0 0 0 2"
         label="Scalar Field"
         >
            <ArrayListDomain name="array_list" attribute_type="Scalars">
              <RequiredProperties>
                 <Property name="Input" function="Input"/>
              </RequiredProperties>
            </ArrayListDomain>
            <Documentation>
              Identifies the scalar field on which to operate.
            </Documentation>
      </StringVectorProperty>

     <IntVectorProperty
        name="PassInput"
        label="Copy input"
        command="SetPassInput"
        number_of_elements="1"
        default_values="0"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Deep copy the input array to the output
        </Documentation>
     </IntVectorProperty>

     <IntVectorProperty
        name="SplitComponents"
        label="Split components"
        command="SetSplitComponents"
        number_of_elements="1"
        default_values="0"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Convert the result into components arrays.
        </Documentation>
     </IntVectorProperty>

     <IntVectorProperty
        name="ComputeGradient"
        label="Gradient"
        command="SetComputeGradient"
        number_of_elements="1"
        default_values="0"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Compute the gradient using a centered stencil.
        </Documentation>
     </IntVectorProperty>

      <IntVectorProperty
        name="ComputeLaplacian"
        label="Laplacian"
        command="SetComputeLaplacian"
        number_of_elements="1"
        default_values="1"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Compute the Laplacian using a centered stencil.
        </Documentation>
     </IntVectorProperty>

    <Hints>
      <View type="RenderView"/>
    </Hints>

  <!-- End vtkSQEdgeFilter -->
  </SourceProxy>

  <!-- ==================================================================== -->
  <SourceProxy
    name="vtkSQFTLE"
    class="vtkSQFTLE"
    label="FTLE">
    <Documentation
      long_help="Long Documentation"
      short_help="Short Documentation">
      Given a displacement map compute FTLE. For an explanation of
      this terminology see http://amath.colorado.edu/cmsms/index.php?page=ftle-of-the-standard-map
    </Documentation>

     <InputProperty
        name="Input"
        command="SetInputConnection">
           <ProxyGroupDomain name="groups">
             <Group name="sources"/>
             <Group name="filters"/>
           </ProxyGroupDomain>
           <DataTypeDomain name="input_type">
             <DataType value="vtkDataSet"/>
           </DataTypeDomain>
           <InputArrayDomain name="input_array" attribute_type="point"
                             number_of_components="3"/>
           <Documentation>
             This property specifies the dataset to process..
           </Documentation>
      </InputProperty>

      <StringVectorProperty
          name="ArraysToFilter"
          command="AddInputArray"
          clean_command="ClearInputArrays"
          repeat_command="1"
          number_of_elements_per_command="1"
          label="Input Arrays"
          >
        <Documentation>
          Identifies the displacement map to use to compute the FTLE.
        </Documentation>
        <ArrayListDomain name="array_list">
          <RequiredProperties>
            <Property name="Input" function="Input"/>
          </RequiredProperties>
        </ArrayListDomain>
        <!-- none selected by default -->
        <Hints>
          <NoDefault />
        </Hints>
      </StringVectorProperty>

     <IntVectorProperty
        name="PassInput"
        label="Copy input"
        command="SetPassInput"
        number_of_elements="1"
        default_values="0"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Deep copy the input array to the output
        </Documentation>
     </IntVectorProperty>

     <IntVectorProperty
        name="TimeInterval"
        label="Time Interval"
        command="SetTimeInterval"
        number_of_elements="1"
        default_values="1.0"
        >
        <DoubleRangeDomain name="range" min="0.0"/>
        <Documentation>
          Time range displacement map was computed over.
        </Documentation>
     </IntVectorProperty>

    <Hints>
      <View type="RenderView"/>
    </Hints>

  </SourceProxy>
  <!-- End vtkSQFTLE -->

  <!-- ==================================================================== -->
  <SourceProxy
    name="vtkSQVortexFilter"
    class="vtkSQVortexFilter"
    label="SQ Vortex Filter">
    <Documentation
      long_help="Long Documentation"
      short_help="Short Documentation">
      Textual Documentation.
    </Documentation>

     <InputProperty
        name="Input"
        command="SetInputConnection">
           <ProxyGroupDomain name="groups">
             <Group name="sources"/>
             <Group name="filters"/>
           </ProxyGroupDomain>
           <DataTypeDomain name="input_type">
             <DataType value="vtkDataSet"/>
           </DataTypeDomain>
           <InputArrayDomain name="input_array" attribute_type="point"
                             number_of_components="3"/>
           <Documentation>
             This property specifies the input to the filter.
           </Documentation>
      </InputProperty>

      <StringVectorProperty
          name="ArraysToFilter"
          command="AddInputArray"
          clean_command="ClearInputArrays"
          repeat_command="1"
          number_of_elements_per_command="1"
          label="Arrays"
          >
        <Documentation>
          This property specifies the name(s) array(s) to filter.
        </Documentation>
        <ArrayListDomain name="array_list">
          <RequiredProperties>
            <Property name="Input" function="Input"/>
          </RequiredProperties>
        </ArrayListDomain>
        <!-- none selected by default -->
        <Hints>
          <NoDefault />
        </Hints>
      </StringVectorProperty>

     <IntVectorProperty
        name="SplitComponents"
        label="Split components"
        command="SetSplitComponents"
        number_of_elements="1"
        default_values="0"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Convert the result into components arrays.
        </Documentation>
     </IntVectorProperty>

     <IntVectorProperty
        name="ResultMagnitude"
        label="Result magnitude"
        command="SetResultMagnitude"
        number_of_elements="1"
        default_values="0"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Compute the magnitude for all multi-component results.
        </Documentation>
     </IntVectorProperty>

     <IntVectorProperty
        name="ComputeRotation"
        label="Rotation"
        command="SetComputeRotation"
        number_of_elements="1"
        default_values="1"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Compute the rotation (curl) of the vector field using a point centered stencil.
        </Documentation>
     </IntVectorProperty>

      <IntVectorProperty
        name="ComputeHelicity"
        label="Helicity"
        command="SetComputeHelicity"
        number_of_elements="1"
        default_values="0"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Compute the helicity (dot of vector and its curl) of the vector field using a point centered stencil.
        </Documentation>
     </IntVectorProperty>

     <IntVectorProperty
        name="ComputeNormalizedHelicity"
        label="Normalized helicity"
        command="SetComputeNormalizedHelicity"
        number_of_elements="1"
        default_values="0"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Compute the normailzed helicity of the vector field using a point centered stencil.
        </Documentation>
     </IntVectorProperty>

     <IntVectorProperty
        name="ComputeQ"
        label="Q"
        command="SetComputeQ"
        number_of_elements="1"
        default_values="0"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Compute Q-criteria
        </Documentation>
     </IntVectorProperty>

     <IntVectorProperty
        name="ComputeLambda"
        label="Lambda-(1,2,3)"
        command="SetComputeLambda"
        number_of_elements="1"
        default_values="0"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Compute the 3 eigenvalues of corrected pressure hessian.
        </Documentation>
     </IntVectorProperty>

     <IntVectorProperty
        name="ComputeLambda2"
        label="Lambda-2"
        command="SetComputeLambda2"
        number_of_elements="1"
        default_values="0"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Compute the second eigenvalue of corrected pressure hessian.
        </Documentation>
     </IntVectorProperty>

     <IntVectorProperty
        name="ComputeDivergence"
        label="Divergence"
        command="SetComputeDivergence"
        number_of_elements="1"
        default_values="0"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Compute the divergence using a centered stencil.
        </Documentation>
     </IntVectorProperty>

     <IntVectorProperty
        name="ComputeGradient"
        label="Gradient"
        command="SetComputeGradient"
        number_of_elements="1"
        default_values="0"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Compute the gradient tensor on a centered stencil.
        </Documentation>
     </IntVectorProperty>

     <IntVectorProperty
        name="ComputeEigenvalueDiagnostic"
        label="Eigenvalue diagnostic"
        command="SetComputeEigenvalueDiagnostic"
        number_of_elements="1"
        default_values="0"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          Eigenvalue diagnostic of Haimes and Kenwright.
        </Documentation>
     </IntVectorProperty>

     <IntVectorProperty
        name="ComputeGradientDiagnostic"
        label="Bill's diagnostic"
        command="SetComputeGradientDiagnostic"
        number_of_elements="1"
        default_values="0"
        >
        <BooleanDomain name="bool" />
        <Documentation>
          bill's metric.
        </Documentation>
     </IntVectorProperty>

     <StringVectorProperty
        name="ArraysToCopy"
        command="AddArrayToCopy"
        clean_command="ClearArraysToCopy"
        repeat_command="1"
        number_of_elements_per_command="1"
        label="Arrays to copy"
        >
        <Documentation>
            This property specifies the name(s) array(s) to filter.
        </Documentation>
        <ArrayListDomain name="array_list">
          <RequiredProperties>
            <Property name="Input" function="Input"/>
          </RequiredProperties>
        </ArrayListDomain>
        <Hints>
        <!-- This overrides the GUI's default mechanism to
            not set the default value for this property
            using the domain when the proxy is created -->
            <NoDefault />
        </Hints>
      </StringVectorProperty>

    <Hints>
      <View type="RenderView"/>
    </Hints>

  <!-- End vtkSQVortexFilter -->
  </SourceProxy>

  <!-- ==================================================================== -->
  <SourceProxy
    name="vtkSQAgyrotropyFilter"
    class="vtkSQAgyrotropyFilter"
    label="SQ Agyrotropy">
    <Documentation
      long_help="Long Documentation"
      short_help="Short Documentation">
      Textual Documentation.
    </Documentation>

     <InputProperty
        name="Input"
        command="SetInputConnection">
           <ProxyGroupDomain name="groups">
             <Group name="sources"/>
             <Group name="filters"/>
           </ProxyGroupDomain>
           <DataTypeDomain name="input_type">
             <DataType value="vtkDataSet"/>
           </DataTypeDomain>
           <InputArrayDomain name="input_array" attribute_type="point"/>
           <Documentation>
             This property specifies the input to the Warp (vector) filter.
           </Documentation>
      </InputProperty>

      <StringVectorProperty
         name="Pressure Tensor"
         command="SetInputArrayToProcess"
         number_of_elements="5"
         element_types="0 0 0 0 2"
         >
            <ArrayListDomain name="array_list" attribute_type="Tensors">
              <RequiredProperties>
                 <Property name="Input" function="Input"/>
              </RequiredProperties>
            </ArrayListDomain>
            <Documentation>
              Identifies the vector field on which to operate.
            </Documentation>
      </StringVectorProperty>

      <StringVectorProperty
         name="Magnetic Field"
         command="SetInputArrayToProcess"
         number_of_elements="5"
         element_types="0 0 0 0 2"
         default_values="1"
         >
            <ArrayListDomain name="array_list" attribute_type="Vectors">
              <RequiredProperties>
                 <Property name="Input" function="Input"/>
              </RequiredProperties>
            </ArrayListDomain>
            <Documentation>
              Identifies the vector field on which to operate.
            </Documentation>
      </StringVectorProperty>

      <DoubleVectorProperty
         name="NoiseThreshold"
         command="SetNoiseThreshold"
         number_of_elements="1"
         default_values="1.0e-4"
         >
        <Documentation>
         This controls the correction of negative descriminant in the computation.
         eg: if (-NoiseThreshold less than value less than 0) then value=0.
        </Documentation>
      </DoubleVectorProperty>

    <Hints>
      <View type="RenderView"/>
    </Hints>

  <!-- End vtkSQAgyrotropyFilter -->
  </SourceProxy>

  <!-- ==================================================================== -->
  <SourceProxy
    name="vtkSQBinaryThreshold"
    class="vtkSQBinaryThreshold"
    label="SQ Binary Threshold">
    <Documentation
      long_help="Long Documentation"
      short_help="Short Documentation">
      Textual Documentation.
    </Documentation>

     <InputProperty
         name="Input"
         command="SetInputConnection">
       <ProxyGroupDomain name="groups">
         <Group name="sources"/>
         <Group name="filters"/>
       </ProxyGroupDomain>
       <DataTypeDomain name="input_type">
         <DataType value="vtkDataSet"/>
       </DataTypeDomain>
       <InputArrayDomain name="input_array" attribute_type="point"/>
      </InputProperty>

      <StringVectorProperty
          name="InputArray"
          command="SetInputArrayToProcess"
          number_of_elements="5"
          element_types="0 0 0 0 2"
          >
        <ArrayListDomain name="array_list">
          <RequiredProperties>
            <Property name="Input" function="Input"/>
          </RequiredProperties>
        </ArrayListDomain>

        <Documentation>
          Identifies the vector field on which to operate.
        </Documentation>
      </StringVectorProperty>

      <DoubleVectorProperty
         name="Threshold"
         command="SetThreshold"
         number_of_elements="1"
         default_values="0.0"
         >
        <DoubleRangeDomain name="range"/>
        <!--
        <ArrayRangeDomain name="range">
          <RequiredProperties>
            <Property name="Input" function="Input"/>
            <Property name="InputArray" function="ArraySelection"/>
          </RequiredProperties>
        </ArrayRangeDomain>
        -->
        <Documentation>
          Threshold value.
        </Documentation>
      </DoubleVectorProperty>

      <IntVectorProperty
         name="UseLowValue"
         command="SetUseLowValue"
         number_of_elements="1"
         default_values="1"
         >
        <BooleanDomain name="bool"/>
        <Documentation>
          When set elements with value below the threshold are set to low value.
        </Documentation>
      </IntVectorProperty>

      <DoubleVectorProperty
         name="LowValue"
         command="SetLowValue"
         number_of_elements="1"
         default_values="-1.0"
         >
        <DoubleRangeDomain name="range"/>
        <Documentation>
          LowValue value.
        </Documentation>
      </DoubleVectorProperty>

      <IntVectorProperty
         name="UseHighValue"
         command="SetUseHighValue"
         number_of_elements="1"
         default_values="1"
         >
        <BooleanDomain name="bool"/>
        <Documentation>
          When set elements with value below the threshold are set to low value.
        </Documentation>
      </IntVectorProperty>

      <DoubleVectorProperty
         name="HighValue"
         command="SetHighValue"
         number_of_elements="1"
         default_values="1.0"
         >
        <DoubleRangeDomain name="range"/>
        <Documentation>
          HighValue value.
        </Documentation>
      </DoubleVectorProperty>

    <Hints>
      <View type="RenderView"/>
    </Hints>

  <!-- End vtkSQBinaryThreshold -->
  </SourceProxy>

  <!-- ==================================================================== -->
  <SourceProxy
    name="vtkSQMedianFilter"
    class="vtkSQMedianFilter"
    label="SQ Median Filter">
    <Documentation
      long_help="Long Documentation"
      short_help="Short Documentation">
      Textual Documentation.
    </Documentation>

    <InputProperty
        name="Input"
        command="SetInputConnection">
           <ProxyGroupDomain name="groups">
             <Group name="sources"/>
             <Group name="filters"/>
           </ProxyGroupDomain>
           <DataTypeDomain name="input_type">
             <DataType value="vtkDataSet"/>
           </DataTypeDomain>
           <InputArrayDomain name="input_array" attribute_type="point"/>
    </InputProperty>

    <StringVectorProperty
         name="SelectInputVectors"
         command="SetInputArrayToProcess"
         number_of_elements="5"
         element_types="0 0 0 0 2"
         label="Vector Field"
         >
      <ArrayListDomain name="array_list" attribute_type="Vectors">
        <RequiredProperties>
          <Property name="Input" function="Input"/>
        </RequiredProperties>
      </ArrayListDomain>
      <Documentation>
        Identifies the vector field on which to operate.
      </Documentation>
    </StringVectorProperty>

    <IntVectorProperty
        name="KernelWidth"
        label="Width"
        command="SetKernelWidth"
        number_of_elements="1"
        default_values="3"
        animateable="1"
        >
      <EnumerationDomain name="enum">
        <Entry value="3" text="3"/>
        <Entry value="5" text="5"/>
        <Entry value="7" text="7"/>
        <Entry value="9" text="9"/>
        <Entry value="11" text="11"/>
        <Entry value="13" text="13"/>
        <Entry value="15" text="15"/>
        <Entry value="17" text="17"/>
        <Entry value="19" text="19"/>
        <Entry value="21" text="21"/>
        <Entry value="23" text="23"/>
        <Entry value="25" text="25"/>
        <Entry value="27" text="27"/>
        <Entry value="29" text="29"/>
        <Entry value="31" text="31"/>
        <Entry value="33" text="33"/>
        <Entry value="35" text="35"/>
        <Entry value="37" text="37"/>
        <Entry value="39" text="39"/>
      </EnumerationDomain>
      <Documentation>
        Kernel size.
      </Documentation>
    </IntVectorProperty>

    <Hints>
      <View type="RenderView"/>
    </Hints>

  <!-- End vtkSQMedianFilter -->
  </SourceProxy>

  <!-- ==================================================================== -->
  <SourceProxy
    name="vtkSQKernelConvolution"
    class="vtkSQKernelConvolution"
    label="SQ Kernel Convolution">
    <Documentation
      long_help="Long Documentation"
      short_help="Short Documentation">
      Textual Documentation.
    </Documentation>

     <InputProperty
         name="Input"
         command="SetInputConnection">
       <ProxyGroupDomain name="groups">
         <Group name="sources"/>
         <Group name="filters"/>
       </ProxyGroupDomain>
       <DataTypeDomain name="input_type">
         <DataType value="vtkDataSet"/>
       </DataTypeDomain>
       <InputArrayDomain name="input_array" attribute_type="point"/>
      </InputProperty>

      <StringVectorProperty
          name="ArraysToFilter"
          command="AddInputArray"
          clean_command="ClearInputArrays"
          repeat_command="1"
          number_of_elements_per_command="1"
          label="Arrays"
          >
        <Documentation>
          This property specifies the name(s) array(s) to filter.
        </Documentation>
        <ArrayListDomain name="array_list">
          <RequiredProperties>
            <Property name="Input" function="Input"/>
          </RequiredProperties>
        </ArrayListDomain>
        <!-- none selected by default -->
        <Hints>
          <NoDefault />
        </Hints>
      </StringVectorProperty>

    <IntVectorProperty
        name="KernelType"
        lable="Kernel"
        command="SetKernelType"
        number_of_elements="1"
        default_values="0"
        >
      <EnumerationDomain name="enum">
        <Entry value="0" text="Gaussian"/>
        <Entry value="1" text="L.O.G."/>
        <Entry value="2" text="Constant"/>
      </EnumerationDomain>
      <Documentation>
        Select a kernel.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="KernelWidth"
        label="Width"
        command="SetKernelWidth"
        number_of_elements="1"
        default_values="3"
        >
      <EnumerationDomain name="enum">
        <Entry value="3" text="3"/>
        <Entry value="5" text="5"/>
        <Entry value="7" text="7"/>
        <Entry value="9" text="9"/>
        <Entry value="11" text="11"/>
        <Entry value="13" text="13"/>
        <Entry value="15" text="15"/>
        <Entry value="17" text="17"/>
        <Entry value="19" text="19"/>
        <Entry value="21" text="21"/>
        <Entry value="23" text="23"/>
        <Entry value="25" text="25"/>
        <Entry value="27" text="27"/>
        <Entry value="29" text="29"/>
        <Entry value="31" text="31"/>
        <Entry value="33" text="33"/>
        <Entry value="35" text="35"/>
        <Entry value="37" text="37"/>
        <Entry value="39" text="39"/>
      </EnumerationDomain>
      <Documentation>
        Kernel size.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="ComputeResidual"
        lable="Residual"
        command="SetComputeResidual"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
        Compute the residual.
      </Documentation>
    </IntVectorProperty>

    <StringVectorProperty
        name="ArraysToCopy"
        command="AddArrayToCopy"
        clean_command="ClearArraysToCopy"
        repeat_command="1"
        number_of_elements_per_command="1"
        label="Arrays to copy"
        >
      <Documentation>
          This property specifies the name(s) array(s) to filter.
      </Documentation>
      <ArrayListDomain name="array_list">
        <RequiredProperties>
          <Property name="Input" function="Input"/>
        </RequiredProperties>
      </ArrayListDomain>
      <Hints>
      <!-- This overrides the GUI's default mechanism to
          not set the default value for this property
          using the domain when the proxy is created -->
          <NoDefault />
      </Hints>
    </StringVectorProperty>

    <IntVectorProperty
        name="CPUDriverOptimization"
        label="CPU Optimization"
        command="SetCPUDriverOptimization"
        number_of_elements="1"
        default_values="1"
        >
      <EnumerationDomain name="enum">
        <Entry value="0" text="Minimize memory usage"/>
        <Entry value="1" text="Minimize cache misses"/>
      </EnumerationDomain>
      <Documentation>
        Various optimizations. If you are running out of memory then choose the minimize memory usage.
      </Documentation>
    </IntVectorProperty>

    <!-- TODO the cuda code needs to be fixed
    <IntVectorProperty
        name="RanksToUseCUDA"
        label="CUDA Ranks Per Host"
        command="SetNumberOfMPIRanksToUseCUDA"
        number_of_elements="1"
        default_values="-1"
        >
       <Documentation>
         When set larger than 0, ranks are assigned to use GPUs.
       </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
      name="GetNumberOfCUDADevices"
      command="GetNumberOfCUDADevices"
      information_only="1">
      <SimpleIntInformationHelper/>
    </IntVectorProperty>

    <IntVectorProperty
        name="ActiveCUDADevices"
        label="Active CUDA Devices Per Host"
        command="SetNumberOfActiveCUDADevices"
        number_of_elements="1"
        default_values="-1"
        >
       <Documentation>
         When set larger than 0, work is assigned to GPUs.
       </Documentation>
      <IntRangeDomain name="range">
        <RequiredProperties>
            <Property name="GetNumberOfCUDADevices" function="Range"/>
        </RequiredProperties>
      </IntRangeDomain>
    </IntVectorProperty>

    <IntVectorProperty
        name="WarpsPerCUDABlock"
        label="CUDA Warps Per Block"
        command="SetNumberOfWarpsPerCUDABlock"
        number_of_elements="1"
        default_values="8"
        >
       <Documentation>
         Control over domain decomposition. More warps per block means larger blocks.
       </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="KernelCUDAMemoryType"
        label="Kernel CUDA Memory Type"
        command="SetKernelCUDAMemoryType"
        number_of_elements="1"
        default_values="0"
        >
      <EnumerationDomain name="enum">
        <Entry value="0" text="global"/>
        <Entry value="1" text="constant"/>
        <Entry value="2" text="texture"/>
      </EnumerationDomain>
      <Documentation>
        Control where the kernel is placed in device memory.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="InputCUDAMemoryType"
        label="Input CUDA Memory Type"
        command="SetInputCUDAMemoryType"
        number_of_elements="1"
        default_values="0"
        >
      <EnumerationDomain name="enum">
        <Entry value="0" text="global"/>
        <Entry value="2" text="texture"/>
      </EnumerationDomain>
      <Documentation>
        Control where the input array is placed in device memory.
      </Documentation>
    </IntVectorProperty>
    -->

    <Hints>
      <View type="RenderView"/>
    </Hints>

  <!-- End vtkSQKernelConvolution -->
  </SourceProxy>

  <!-- ==================================================================== -->
  <SourceProxy
      name="vtkSQSurfaceVectors"
      class="vtkSQSurfaceVectors"
      label="SQ Surface Vectors">
    <Documentation
      long_help="Long Documentation"
      short_help="Short Documentation">
      Compute project vector fields onto a surface and surface normal.
    </Documentation>

    <InputProperty
        name="Input"
        command="SetInputConnection">
           <ProxyGroupDomain name="groups">
             <Group name="sources"/>
             <Group name="filters"/>
           </ProxyGroupDomain>
           <DataTypeDomain name="input_type">
             <DataType value="vtkDataSet"/>
           </DataTypeDomain>
    </InputProperty>

  <!-- End vtkSQSurfaceVectors -->
  </SourceProxy>

   <!-- ==================================================================== -->
   <SourceProxy name="vtkSQTubeFilter" class="vtkSQTubeFilter" label="SQ Tube">
    <Documentation
       long_help="Convert lines into tubes. Normals are used to avoid cracks between tube segments."
       short_help="Convert lines into tubes.">
      The Tube filter creates tubes around the lines in the input polygonal/unstructured dataset. The output is polygonal.
    </Documentation>
    <InputProperty
       name="Input"
       command="SetInputConnection">
          <ProxyGroupDomain name="groups">
            <Group name="sources"/>
            <Group name="filters"/>
          </ProxyGroupDomain>
          <DataTypeDomain name="input_type">
            <DataType value="vtkDataSet"/>
          </DataTypeDomain>
          <InputArrayDomain name="input_array1" attribute_type="point"
                            number_of_components="1" optional="1"/>
          <InputArrayDomain name="input_array2" attribute_type="point"
                            number_of_components="3" optional="1"/>
          <Documentation>
            This property specifies the input to the Tube filter.
          </Documentation>
     </InputProperty>

     <StringVectorProperty
        name="SelectInputScalars"
        command="SetInputArrayToProcess"
        number_of_elements="5"
        element_types="0 0 0 0 2"
        label="Scalars"
        >
          <ArrayListDomain name="array_list" attribute_type="Scalars"
               input_domain_name="input_array1">
            <RequiredProperties>
               <Property name="Input" function="Input"/>
            </RequiredProperties>
          </ArrayListDomain>
          <Documentation>
            This property indicates the name of the scalar array on which to
            operate. The indicated array may be used for scaling the tubes.
            (See the VaryRadius property.)
          </Documentation>
     </StringVectorProperty>

     <StringVectorProperty
        name="SelectInputVectors"
        command="SetInputArrayToProcess"
        number_of_elements="5"
        element_types="0 0 0 0 2"
        default_values="1"
        label="Vectors"
        >  <!-- default value=1 so normals go to the right place -->
          <ArrayListDomain name="array_list" attribute_type="Vectors"
               input_domain_name="input_array2">
            <RequiredProperties>
               <Property name="Input" function="Input"/>
            </RequiredProperties>
          </ArrayListDomain>
          <Documentation>
            This property indicates the name of the vector array on which to
            operate. The indicated array may be used for scaling and/or
            orienting the tubes. (See the VaryRadius property.)
          </Documentation>
     </StringVectorProperty>

     <IntVectorProperty
        name="NumberOfSides"
        command="SetNumberOfSides"
        number_of_elements="1"
        animateable="1"
        default_values="6"
        label="Number of Sides"
        >
       <IntRangeDomain name="range" min="3"/>
       <Documentation>
         The value of this property indicates the number of faces around the circumference of the tube.
       </Documentation>
     </IntVectorProperty>

     <IntVectorProperty
        name="Capping"
        command="SetCapping"
        number_of_elements="1"
        default_values="1"
        >
       <BooleanDomain name="bool"/>
       <Documentation>
         If this property is set to 1, endcaps will be drawn on the tube. Otherwise the ends of the tube will be open.
       </Documentation>
     </IntVectorProperty>

      <DoubleVectorProperty
         name="Radius"
         command="SetRadius"
         number_of_elements="1"
         default_values="1.0"
         >
        <BoundsDomain name="bounds" mode="scaled_extent" scale_factor="0.01">
          <RequiredProperties>
             <Property name="Input" function="Input"/>
          </RequiredProperties>
        </BoundsDomain>
        <Documentation>
          The value of this property sets the radius of the tube. If the radius is varying (VaryRadius property), then this value is the minimum radius.
        </Documentation>
      </DoubleVectorProperty>

     <IntVectorProperty
        name="VaryRadius"
        command="SetVaryRadius"
        number_of_elements="1"
        default_values="0"
        >
       <EnumerationDomain name="enum">
         <Entry value="0" text="Off"/>
         <Entry value="1" text="By Scalar"/>
         <Entry value="2" text="By Vector"/>
         <Entry value="3" text="By Absolute Scalar"/>
       </EnumerationDomain>
       <Documentation>
         The property determines whether/how to vary the radius of the tube. If
         varying by scalar (1), the tube radius is based on the point-based
         scalar values in the dataset. If it is varied by vector, the vector
         magnitude is used in varying the radius.
       </Documentation>
     </IntVectorProperty>

      <DoubleVectorProperty
         name="RadiusFactor"
         command="SetRadiusFactor"
         number_of_elements="1"
         default_values="10"
         >
        <DoubleRangeDomain name="range"/>
        <Documentation>
          If varying the radius (VaryRadius property), the property sets the
          maximum tube radius in terms of a multiple of the minimum radius. If
          not varying the radius, this value has no effect.
        </Documentation>
      </DoubleVectorProperty>

     <IntVectorProperty
        name="UseDefaultNormal"
        command="SetUseDefaultNormal"
        number_of_elements="1"
        default_values="0"
        >
       <BooleanDomain name="bool"/>
       <Documentation>
         If this property is set to 0, and the input contains no vector array, then default ribbon normals will be generated (DefaultNormal property); if a vector array has been set (SelectInputVectors property), the ribbon normals will be set from the specified array. If this property is set to 1, the default normal (DefaultNormal property) will be used, regardless of whether the SelectInputVectors property has been set.
       </Documentation>
     </IntVectorProperty>

     <DoubleVectorProperty
        name="DefaultNormal"
        command="SetDefaultNormal"
        number_of_elements="3"
        default_values="0 0 1"
        >
       <DoubleRangeDomain name="range"/>
       <Documentation>
         The value of this property specifies the normal to use when the UseDefaultNormal property is set to 1 or the input contains no vector array (SelectInputVectors property).
       </Documentation>
     </DoubleVectorProperty>

   <!-- End TubeFilter -->
   </SourceProxy>

  <!-- ==================================================================== -->
  <SourceProxy
    name="vtkSQSeedPointLatice"
    class="vtkSQSeedPointLatice"
    label="SQ Seed Point Latice">
    <Documentation
      long_help="Long Documentation"
      short_help="Short Documentation">
      Generates vertices on a latice. The latice can either be unifomrly space or
      non-linearly stretched independently in each direction.
    </Documentation>

    <InputProperty
      name="Input"
      command="SetInputConnection"
      optional="1">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <DataTypeDomain name="input_type">
        <DataType value="vtkDataSet"/>
      </DataTypeDomain>
    </InputProperty>

     <!-- Bounds -->
    <DoubleVectorProperty
      name="IBoundsInfo"
      command="GetIBounds"
      information_only="1">
      <SimpleDoubleInformationHelper/>
    </DoubleVectorProperty>
    <DoubleVectorProperty
      name="IBounds"
      label="X Range"
      command="SetIBounds"
      number_of_elements="2"
      default_values="-1.0 1.0"
      information_property="IBoundsInfo"
      >
      <Documentation>
        This property controls the bounds of the seed points.
      </Documentation>
    </DoubleVectorProperty>
    <DoubleVectorProperty
      name="JBoundsInfo"
      command="GetJBounds"
      information_only="1">
      <SimpleDoubleInformationHelper/>
    </DoubleVectorProperty>
    <DoubleVectorProperty
      name="JBounds"
      label="Y Range"
      command="SetJBounds"
      number_of_elements="2"
      default_values="-1.0 1.0"
      information_property="JBoundsInfo"
      >
      <Documentation>
        This property controls the bounds of the seed points.
      </Documentation>
    </DoubleVectorProperty>
    <DoubleVectorProperty
      name="KBoundsInfo"
      command="GetKBounds"
      information_only="1">
      <SimpleDoubleInformationHelper/>
    </DoubleVectorProperty>
    <DoubleVectorProperty
      name="KBounds"
      label="Z Range"
      command="SetKBounds"
      number_of_elements="2"
      default_values="-1.0 1.0"
      information_property="KBoundsInfo"
      >
      <Documentation>
        This property controls the bounds of the seed points.
      </Documentation>
    </DoubleVectorProperty>

    <!-- Resolution -->
     <IntVectorProperty
        name="Resolution"
        label="Latice Resolution"
        command="SetNX"
        number_of_elements="3"
        default_values="1 1 1"
        >
     </IntVectorProperty>

     <!-- Transforms -->
     <DoubleVectorProperty
        name="TransformPower"
        label="Transform Power"
        command="SetTransformPower"
        number_of_elements="3"
        default_values="0.0 0.0 0.0"
        >
        <Documentation>
          Controls how non-linear the generated points are. 0 is linear.
        </Documentation>
     </DoubleVectorProperty>

    <Hints>
      <Visibility replace_input="0" />
    </Hints>

  <!-- End vtkSQSeedPointLatice -->
  </SourceProxy>

  <!-- ==================================================================== -->
  <SourceProxy
    name="vtkSQRandomCells"
    class="vtkSQRandomCells"
    label="SQ Random Cells">
    <Documentation
      long_help="Long Documentation"
      short_help="Short Documentation">
      Passes randomly selected cells from the input to output.
    </Documentation>

    <InputProperty
      name="Input"
      command="SetInputConnection"
      optional="1">
      <ProxyGroupDomain name="groups">
        <Group name="sources"/>
        <Group name="filters"/>
      </ProxyGroupDomain>
      <DataTypeDomain name="input_type">
        <DataType value="vtkDataSet"/>
      </DataTypeDomain>
    </InputProperty>

    <IntVectorProperty
        name="Sample Size"
        label="Sample Size"
        command="SetSampleSize"
        number_of_elements="1"
        default_values="1"
        >
      <Documentation>
         Set the number of randomly selected cells to pass through to the output.
       </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="RNGSeed"
        label="Random Number Generator Seed"
        command="SetSeed"
        number_of_elements="1"
        default_values="0"
        >
      <Documentation>
        Set the seed to the random number generator. -1 means to use system time.
      </Documentation>
    </IntVectorProperty>

    <Hints>
      <Visibility replace_input="0" />
    </Hints>

  <!-- End vtkSQSeedPointLatice -->
  </SourceProxy>

  <!-- ==================================================================== -->
  <SourceProxy
    name="vtkSQRandomSeedPoints"
    class="vtkSQRandomSeedPoints"
    label="SQ Random Seed Points">
    <Documentation
      long_help="Long Documentation"
      short_help="Short Documentation">
      Textual Documentation.
    </Documentation>

     <InputProperty
        name="Input"
        command="SetInputConnection">
           <ProxyGroupDomain name="groups">
             <Group name="sources"/>
             <Group name="filters"/>
           </ProxyGroupDomain>
           <DataTypeDomain name="input_type">
             <DataType value="vtkDataSet"/>
           </DataTypeDomain>
      </InputProperty>

     <IntVectorProperty
        name="NumberOfPoints"
        label="Number Of Points"
        command="SetNumberOfPoints"
        number_of_elements="1"
        default_values="10"
        >
     </IntVectorProperty>

    <Hints>
      <Visibility replace_input="0" />
    </Hints>

  <!-- End vtkSQRandomSeedPoints -->
  </SourceProxy>
</ProxyGroup>

</ServerManagerConfiguration>
