<ServerManagerConfiguration>
  <ProxyGroup name="cell_locators">
    <Proxy class="vtkModifiedBSPTree"
           name="ModifiedBSPTree"
           label="BSP Tree Cell Locator"/>
  </ProxyGroup>
  <ProxyGroup name="filters">
    <!-- ==================================================================== -->
    <SourceProxy class="vtkEvenlySpacedStreamlines2D"
                 label="Evenly Spaced Streamlines 2D"
                 name="EvenlySpacedStreamlines2D">
      <Documentation long_help="Produce evenly spaced streamlines in a 2D vector field."
                     short_help="Produce evenly spaced streamlines in a 2D vector field.">
        This filter generates evenly spaced streamlines in a 2D
        vector field from a start position. Production of
        streamlines terminates if a streamline crosses the
        exterior boundary of the input dataset
        (ReasonForTermination=1), an initialization issue (ReasonForTermination=2),
        computing an unexpected value (ReasonForTermination=3),
        reached the Maximum Streamline Length input value
        (ReasonForTermination=4), reached the Maximum Steps
        input value (ReasonForTermination=5), velocity was
        lower than the Terminal Speed input value
        (ReasonForTermination=6), a streamline formed a loop
        (ReasonForTermination=7), and the streamline was too close to
        other streamlines (ReasonForTermination=8). This filter
        operates on a 2D dataset aligned with plane XY with
        point-centered vectors aligned with plane XY.
        The output is polygonal data containing polylines.
      </Documentation>
      <InputProperty clean_command="RemoveAllInputs"
                     command="AddInputConnection"
                     name="Input">
        <ProxyGroupDomain name="groups">
          <Group name="sources"/>
          <Group name="filters"/>
        </ProxyGroupDomain>
        <DataTypeDomain composite_data_supported="1"
                        name="input_type">
          <DataType value="vtkDataSet"/>
        </DataTypeDomain>
        <InputArrayDomain name="input_array"
                          number_of_components="3"/>
        <Documentation>
          This property specifies the input to the filter.
        </Documentation>
      </InputProperty>
      <StringVectorProperty animateable="0"
                            command="SetInputArrayToProcess"
                            element_types="0 0 0 0 2"
                            label="Vectors"
                            name="SelectInputVectors"
                            number_of_elements="5">
        <ArrayListDomain attribute_type="Vectors"
                         name="array_list">
          <RequiredProperties>
            <Property function="Input"
                      name="Input"/>
          </RequiredProperties>
        </ArrayListDomain>
        <Documentation>
          This property contains the name of the vector array from which to generate streamlines.
        </Documentation>
      </StringVectorProperty>
      <IntVectorProperty command="SetInterpolatorType"
                         default_values="0"
                         name="InterpolatorType"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <EnumerationDomain name="enum">
          <Entry text="Interpolator with Point Locator"
                 value="0"/>
          <Entry text="Interpolator with Cell Locator"
                 value="1"/>
        </EnumerationDomain>
        <Documentation>
          This property determines which interpolator to use for
          evaluating the velocity vector field. The first is faster though the
          second is more robust in locating cells during streamline integration.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetIntegratorType"
                         default_values="1"
                         name="IntegratorType"
                         number_of_elements="1">
        <EnumerationDomain name="enum">
          <Entry text="Runge-Kutta 2"
                 value="0"/>
          <Entry text="Runge-Kutta 4"
                 value="1"/>
        </EnumerationDomain>
        <Documentation>
          This property determines which integrator (with increasing accuracy) to use for creating streamlines.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetIntegrationStepUnit"
                         default_values="2"
                         label="Integration Step Unit"
                         name="IntegrationStepUnit"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <EnumerationDomain name="enum">
          <Entry text="Length"
                 value="1"/>
          <Entry text="Cell Length"
                 value="2"/>
        </EnumerationDomain>
        <Documentation>
          This property specifies the unit for
          Initial integration step size. The Length unit refers
          to the arc length that a particle travels/advects within a single step.
          The Cell Length unit represents the step size as a number of cells.
        </Documentation>
      </IntVectorProperty>
      <DoubleVectorProperty command="SetInitialIntegrationStep"
                            default_values="0.2"
                            label="Initial Step Length"
                            name="InitialIntegrationStep"
                            number_of_elements="1"
                            panel_visibility="advanced">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          This property specifies the initial integration step
          size. For non-adaptive integrators (Runge-Kutta 2 and Runge-Kutta 4),
          it is fixed (always equal to this initial value) throughout the integration.
        </Documentation>
      </DoubleVectorProperty>
      <IntVectorProperty command="SetMaximumNumberOfSteps"
                         default_values="2000"
                         label="Maximum Steps"
                         name="MaximumNumberOfSteps"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <IntRangeDomain name="range"/>
        <Documentation>
          This property specifies the maximum number of steps, beyond which streamline integration is terminated.
        </Documentation>
      </IntVectorProperty>
      <DoubleVectorProperty command="SetSeparatingDistance"
                            default_values="2"
                            label="Separating Distance"
                            name="SeparatingDistance"
                            number_of_elements="1"
                            panel_visibility="default">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          Specify the separating distance between streamlines expressed in IntegrationStepUnit.
        </Documentation>
      </DoubleVectorProperty>
      <DoubleVectorProperty command="SetSeparatingDistanceRatio"
                            default_values="0.4"
                            label="Separating Distance Ratio"
                            name="SeparatingDistanceRatio"
                            number_of_elements="1"
                            panel_visibility="default">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          Specifies SeparatingDistanceRatio. If streamlines get closer than
          SeparatingDistance * SeparatingDistanceRatio to other streamlines integration stops.
        </Documentation>
      </DoubleVectorProperty>
      <DoubleVectorProperty command="SetClosedLoopMaximumDistance"
                            default_values="0.2"
                            label="Closed Loop Maximum Distance"
                            name="ClosedLoopMaximumDistance"
                            number_of_elements="1"
                            panel_visibility="default">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          Loops are considered closed if the have two points at
          distance less than this. This is expressed in IntegrationStepUnit.
        </Documentation>
      </DoubleVectorProperty>
      <DoubleVectorProperty command="SetStartPosition"
                            default_values="0 0 0 "
                            label="Start Position"
                            name="StartPosition"
                            number_of_elements="3"
                            panel_visibility="default">
        <BoundsDomain default_mode="mid" mode="normal" name="range">
          <RequiredProperties>
            <Property function="Input" name="Input"/>
          </RequiredProperties>
        </BoundsDomain>
        <Documentation>
          Specify the starting point (seed) of the first streamline in the global coordinate system.
        </Documentation>
      </DoubleVectorProperty>
      <DoubleVectorProperty command="SetTerminalSpeed"
                            default_values="0.000000000001"
                            label="Terminal Speed"
                            name="TerminalSpeed"
                            number_of_elements="1"
                            panel_visibility="advanced">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          This property specifies the terminal speed, below which particle advection/integration is terminated.
        </Documentation>
      </DoubleVectorProperty>
      <IntVectorProperty command="SetComputeVorticity"
                         default_values="1"
                         name="ComputeVorticity"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <BooleanDomain name="bool"/>
        <Documentation>
          Specify whether to compute vorticity.
        </Documentation>
      </IntVectorProperty>

      <PropertyGroup label="Streamline Parameters">
        <Property name="StartPosition"/>
        <Property name="SeparatingDistance"/>
        <Property name="SeparatingDistanceRatio"/>
        <Property name="ClosedLoopMaximumDistance"/>
        <Property name="IntegratorType"/>
        <Property name="IntegrationStepUnit"/>
        <Property name="InitialIntegrationStep"/>
        <Property name="MaximumNumberOfSteps"/>
        <Property name="TerminalSpeed"/>
      </PropertyGroup>

      <Hints>
        <Visibility replace_input="2"/>
      </Hints>
      <!-- End EvenlySpacedStreamlines2D -->
    </SourceProxy>

    <!-- ==================================================================== -->
    <SourceProxy class="vtkParticlePathFilter"
                 name="ParticlePath">
      <Documentation long_help="Trace Particle Paths through time in a vector field."
                     short_help="Trace Particle Paths through time in a vector field.">
        The Particle Trace filter generates pathlines in a vector
        field from a collection of seed points. The vector field
        used is selected from the Vectors menu, so the input data
        set is required to have point-centered vectors. The Seed
        portion of the interface allows you to select whether the
        seed points for this integration lie in a point cloud or
        along a line. Depending on which is selected, the
        appropriate 3D widget (point or line widget) is displayed
        along with traditional user interface controls for
        positioning the point cloud or line within the data set.
        Instructions for using the 3D widgets and the
        corresponding manual controls can be found in section 7.4.
        This filter operates on any type of data set, provided it
        has point-centered vectors. The output is polygonal data
        containing polylines. This filter is available on the
        Toolbar.
      </Documentation>
      <InputProperty clean_command="RemoveAllInputs"
                     command="AddInputConnection"
                     multiple_input="1"
                     name="Input">
        <ProxyGroupDomain name="groups">
          <Group name="sources"/>
          <Group name="filters"/>
        </ProxyGroupDomain>
        <DataTypeDomain composite_data_supported="1"
                        name="input_type">
          <DataType value="vtkDataObject"/>
        </DataTypeDomain>
        <InputArrayDomain attribute_type="point"
                          name="input_array"
                          number_of_components="3"/>
        <Documentation>
          Specify which is the Input of the StreamTracer filter.
        </Documentation>
      </InputProperty>
      <InputProperty clean_command="RemoveAllSources"
                     command="AddSourceConnection"
                     label="Seed Source"
                     multiple_input="1"
                     name="Source">
        <ProxyGroupDomain name="groups">
          <Group name="sources"/>
          <Group name="filters"/>
        </ProxyGroupDomain>
        <DataTypeDomain name="input_type">
          <DataType value="vtkDataSet"/>
        </DataTypeDomain>
        <Documentation>
          Specify the seed dataset. Typically, from where the vector field integration should begin.
          Usually a point/radius or a line with a given resolution.
        </Documentation>
      </InputProperty>
      <DoubleVectorProperty command="SetTerminationTime"
                            default_values="0.0"
                            name="TerminationTime"
                            number_of_elements="1"
                            panel_visibility="default">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          Setting TerminationTime to a positive value will cause particles to terminate when the time is reached.
          The units of time should be consistent with the primary time variable.
        </Documentation>
      </DoubleVectorProperty>
      <DoubleVectorProperty information_only="1"
                            name="TimestepValues">
        <TimeStepsInformationHelper/>
      </DoubleVectorProperty>
      <IntVectorProperty command="SetForceReinjectionEveryNSteps"
                         default_values="0"
                         name="ForceReinjectionEveryNSteps"
                         number_of_elements="1">
        <IntRangeDomain name="range"/>
        <Documentation>
          When animating particles, it is nice to inject new ones every Nth step to produce a continuous flow.
          Setting ForceReinjectionEveryNSteps to a non zero value will cause the particle source to reinject
          particles every Nth step even if it is otherwise unchanged. Note that if the particle source is also animated,
          this flag will be redundant as the particles will be reinjected whenever the source changes anyway.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetStaticSeeds"
                         default_values="0"
                         name="StaticSeeds"
                         number_of_elements="1">
        <BooleanDomain name="bool"/>
        <Documentation>
          If the input seeds are not changing, then this can be set to 1 to avoid having to do a repeated grid search
          that would return the exact same result.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetMeshOverTime"
                         default_values="0"
                         name="MeshOverTime"
                         number_of_elements="1">
        <EnumerationDomain name="enum">
          <Entry text="Different" value="0"/>
          <Entry text="Static" value="1"/>
          <Entry text="Linear Transformation" value="2"/>
          <Entry text="Same Topology" value="3"/>
        </EnumerationDomain>
        <Documentation>
          The input mesh can either be 1) different over time, or 2) static over time,
          or 3) a linear transformation of the first time step over time, or 4) have the same topology over time.
          If a value other than Different are used, then performance can be improved significantly because certain
          data structures, such as locators or cell links are not rebuilt for each timestep.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetInterpolatorType"
                         default_values="1"
                         name="InterpolatorType"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <EnumerationDomain name="enum">
          <Entry text="Interpolator with Point Locator"
                 value="0"/>
          <Entry text="Interpolator with Cell Locator"
                 value="1"/>
        </EnumerationDomain>
        <Documentation>
          This property determines which interpolator to use for evaluating the velocity vector field. The first is
          faster though the second is more robust in locating cells during streamline integration.
        </Documentation>
      </IntVectorProperty>
      <StringVectorProperty animateable="0"
                            command="SetInputArrayToProcess"
                            element_types="0 0 0 0 2"
                            name="SelectInputVectors"
                            number_of_elements="5"
                            panel_visibility="default">
        <ArrayListDomain attribute_type="Vectors"
                         name="array_list">
          <RequiredProperties>
            <Property function="Input"
                      name="Input"/>
          </RequiredProperties>
        </ArrayListDomain>
        <Documentation>
          Specify which vector array should be used for the integration through that filter.
        </Documentation>
      </StringVectorProperty>
      <IntVectorProperty command="SetComputeVorticity"
                         default_values="1"
                         name="ComputeVorticity"
                         number_of_elements="1">
        <BooleanDomain name="bool"/>
        <Documentation>
          Compute vorticity and angular rotation of particles as they progress
        </Documentation>
      </IntVectorProperty>
      <DoubleVectorProperty command="SetTerminalSpeed"
                            default_values="0.000000000001"
                            label="Terminal Speed"
                            name="TerminalSpeed"
                            number_of_elements="1"
                            panel_visibility="advanced">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          This property specifies the terminal speed, below which particle advection/integration is terminated.
        </Documentation>
      </DoubleVectorProperty>
    </SourceProxy>

    <!-- ==================================================================== -->
    <SourceProxy class="vtkParticleTracer"
                 name="ParticleTracer">
      <Documentation long_help="Trace Particles through time in a vector field."
                     short_help="Trace Particles through time in a vector field.">
        The Particle Trace filter generates pathlines in a vector
        field from a collection of seed points. The vector field
        used is selected from the Vectors menu, so the input data
        set is required to have point-centered vectors. The Seed
        portion of the interface allows you to select whether the
        seed points for this integration lie in a point cloud or
        along a line. Depending on which is selected, the
        appropriate 3D widget (point or line widget) is displayed
        along with traditional user interface controls for
        positioning the point cloud or line within the data set.
        Instructions for using the 3D widgets and the
        corresponding manual controls can be found in section 7.4.
        This filter operates on any type of data set, provided it
        has point-centered vectors. The output is polygonal data
        containing polylines. This filter is available on the
        Toolbar.
      </Documentation>
      <InputProperty clean_command="RemoveAllInputs"
                     command="AddInputConnection"
                     multiple_input="1"
                     name="Input">
        <ProxyGroupDomain name="groups">
          <Group name="sources"/>
          <Group name="filters"/>
        </ProxyGroupDomain>
        <DataTypeDomain composite_data_supported="1"
                        name="input_type">
          <DataType value="vtkDataObject"/>
        </DataTypeDomain>
        <InputArrayDomain attribute_type="point"
                          name="input_array"
                          number_of_components="3"/>
        <Documentation>
          Specify which is the Input of the StreamTracer filter.
        </Documentation>
      </InputProperty>
      <InputProperty clean_command="RemoveAllSources"
                     command="AddSourceConnection"
                     label="Seed Source"
                     multiple_input="1"
                     name="Source">
        <ProxyGroupDomain name="groups">
          <Group name="sources"/>
          <Group name="filters"/>
        </ProxyGroupDomain>
        <DataTypeDomain name="input_type">
          <DataType value="vtkDataSet"/>
        </DataTypeDomain>
        <Documentation>
          Specify the seed dataset. Typically, from where the vector field integration should begin.
          Usually a point/radius or a line with a given resolution.
        </Documentation>
      </InputProperty>
      <IntVectorProperty command="SetStaticSeeds"
                         default_values="0"
                         name="StaticSeeds"
                         number_of_elements="1">
        <BooleanDomain name="bool"/>
        <Documentation>
          If the input seeds are not changing, then this can be set to 1 to avoid having to do a repeated grid search
          that would return the exact same result.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetMeshOverTime"
                         default_values="0"
                         name="MeshOverTime"
                         number_of_elements="1">
        <EnumerationDomain name="enum">
          <Entry text="Different" value="0"/>
          <Entry text="Static" value="1"/>
          <Entry text="Linear Transformation" value="2"/>
          <Entry text="Same Topology" value="3"/>
        </EnumerationDomain>
        <Documentation>
          The input mesh can either be 1) different over time, or 2) static over time,
          or 3) a linear transformation of the first time step over time, or 4) have the same topology over time.
          If a value other than Different are used, then performance can be improved significantly because certain
          data structures, such as locators or cell links are not rebuilt for each timestep.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetInterpolatorType"
                         default_values="1"
                         name="InterpolatorType"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <EnumerationDomain name="enum">
          <Entry text="Interpolator with Point Locator"
                 value="0"/>
          <Entry text="Interpolator with Cell Locator"
                 value="1"/>
        </EnumerationDomain>
        <Documentation>
          This property determines which interpolator to use for evaluating the velocity vector field. The first is
          faster though the second is more robust in locating cells during streamline integration.
        </Documentation>
      </IntVectorProperty>

      <DoubleVectorProperty information_only="1"
                            name="TimestepValues">
        <TimeStepsInformationHelper/>
      </DoubleVectorProperty>
      <IntVectorProperty command="SetForceReinjectionEveryNSteps"
                         default_values="0"
                         name="ForceReinjectionEveryNSteps"
                         number_of_elements="1">
        <IntRangeDomain name="range"/>
        <Documentation>
          When animating particles, it is nice to inject new ones every Nth step to produce a continuous flow.
          Setting ForceReinjectionEveryNSteps to a non zero value will cause the particle source to reinject particles
          every Nth step even if it is otherwise unchanged. Note that if the particle source is also animated, this flag
          will be redundant as the particles will be reinjected whenever the source changes anyway.
        </Documentation>
      </IntVectorProperty>
      <StringVectorProperty animateable="0"
                            command="SetInputArrayToProcess"
                            element_types="0 0 0 0 2"
                            name="SelectInputVectors"
                            number_of_elements="5"
                            panel_visibility="default">
        <ArrayListDomain attribute_type="Vectors"
                         name="array_list">
          <RequiredProperties>
            <Property function="Input"
                      name="Input"/>
          </RequiredProperties>
        </ArrayListDomain>
        <Documentation>
          Specify which vector array should be used for the integration through that filter.
        </Documentation>
      </StringVectorProperty>
      <IntVectorProperty command="SetComputeVorticity"
                         default_values="1"
                         name="ComputeVorticity"
                         number_of_elements="1">
        <BooleanDomain name="bool"/>
        <Documentation>
          Compute vorticity and angular rotation of particles as they progress.
        </Documentation>
      </IntVectorProperty>
      <!-- End ParticleTracer -->
    </SourceProxy>

    <!-- ==================================================================== -->
    <SourceProxy class="vtkStreaklineFilter"
                 name="StreakLine">
      <Documentation long_help="Trace Streak lines through time in a vector field."
                     short_help="Trace Streak lines through time in a vector field.">
        The Particle Trace filter generates pathlines in a vector
        field from a collection of seed points. The vector field
        used is selected from the Vectors menu, so the input data
        set is required to have point-centered vectors. The Seed
        portion of the interface allows you to select whether the
        seed points for this integration lie in a point cloud or
        along a line. Depending on which is selected, the
        appropriate 3D widget (point or line widget) is displayed
        along with traditional user interface controls for
        positioning the point cloud or line within the data set.
        Instructions for using the 3D widgets and the
        corresponding manual controls can be found in section 7.4.
        This filter operates on any type of data set, provided it
        has point-centered vectors. The output is polygonal data
        containing polylines. This filter is available on the
        Toolbar.
      </Documentation>
      <InputProperty clean_command="RemoveAllInputs"
                     command="AddInputConnection"
                     multiple_input="1"
                     name="Input">
        <ProxyGroupDomain name="groups">
          <Group name="sources"/>
          <Group name="filters"/>
        </ProxyGroupDomain>
        <DataTypeDomain composite_data_supported="1"
                        name="input_type">
          <DataType value="vtkDataObject"/>
        </DataTypeDomain>
        <InputArrayDomain attribute_type="point"
                          name="input_array"
                          number_of_components="3"/>
        <Documentation>
          Specify which is the Input of the StreamTracer filter.
        </Documentation>
      </InputProperty>
      <IntVectorProperty command="SetStaticSeeds"
                         default_values="0"
                         name="StaticSeeds"
                         number_of_elements="1">
        <BooleanDomain name="bool"/>
        <Documentation>
          If the input seeds are not changing, then this can be set to 1 to avoid having to do a repeated grid search
          that would return the exact same result.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetMeshOverTime"
                         default_values="0"
                         name="MeshOverTime"
                         number_of_elements="1">
        <EnumerationDomain name="enum">
          <Entry text="Different" value="0"/>
          <Entry text="Static" value="1"/>
          <Entry text="Linear Transformation" value="2"/>
          <Entry text="Same Topology" value="3"/>
        </EnumerationDomain>
        <Documentation>
          The input mesh can either be 1) different over time, or 2) static over time,
          or 3) a linear transformation of the first time step over time, or 4) have the same topology over time.
          If a value other than Different are used, then performance can be improved significantly because certain
          data structures, such as locators or cell links are not rebuilt for each timestep.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetInterpolatorType"
                         default_values="1"
                         name="InterpolatorType"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <EnumerationDomain name="enum">
          <Entry text="Interpolator with Point Locator"
                 value="0"/>
          <Entry text="Interpolator with Cell Locator"
                 value="1"/>
        </EnumerationDomain>
        <Documentation>
          This property determines which interpolator to use for evaluating the velocity vector field. The first is
          faster though the second is more robust in locating cells during streamline integration.
        </Documentation>
      </IntVectorProperty>
      <InputProperty clean_command="RemoveAllSources"
                     command="AddSourceConnection"
                     label="Seed Source"
                     multiple_input="1"
                     name="Source">
        <ProxyGroupDomain name="groups">
          <Group name="sources"/>
          <Group name="filters"/>
        </ProxyGroupDomain>
        <DataTypeDomain name="input_type">
          <DataType value="vtkDataSet"/>
        </DataTypeDomain>
        <Documentation>
          Specify the seed dataset. Typically, from where the vector field integration should begin. Usually a
          point/radius or a line with a given resolution.
        </Documentation>
      </InputProperty>
      <DoubleVectorProperty command="SetTerminationTime"
                            default_values="0.0"
                            name="TerminationTime"
                            number_of_elements="1"
                            panel_visibility="default">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          Setting TerminationTime to a positive value will cause particles to terminate when the time is reached.
          The units of time should be consistent with the primary time variable.
        </Documentation>
      </DoubleVectorProperty>
      <DoubleVectorProperty information_only="1"
                            name="TimestepValues">
        <TimeStepsInformationHelper/>
      </DoubleVectorProperty>
      <IntVectorProperty command="SetForceReinjectionEveryNSteps"
                         default_values="1"
                         name="ForceReinjectionEveryNSteps"
                         number_of_elements="1">
        <IntRangeDomain name="range"/>
        <Documentation>
          When animating particles, it is nice to inject new ones every Nth step to produce a continuous flow.
          Setting ForceReinjectionEveryNSteps to a non zero value will cause the particle source to reinject particles
          every Nth step even if it is otherwise unchanged. Note that if the particle source is also animated, this flag
          will be redundant as the particles will be reinjected whenever the source changes anyway.
        </Documentation>
      </IntVectorProperty>
      <StringVectorProperty animateable="0"
                            command="SetInputArrayToProcess"
                            element_types="0 0 0 0 2"
                            name="SelectInputVectors"
                            number_of_elements="5"
                            panel_visibility="default">
        <ArrayListDomain attribute_type="Vectors"
                         name="array_list">
          <RequiredProperties>
            <Property function="Input"
                      name="Input"/>
          </RequiredProperties>
        </ArrayListDomain>
        <Documentation>
          Specify which vector array should be used for the integration through that filter.
        </Documentation>
      </StringVectorProperty>
      <IntVectorProperty command="SetComputeVorticity"
                         default_values="1"
                         name="ComputeVorticity"
                         number_of_elements="1">
        <BooleanDomain name="bool"/>
        <Documentation>
          Compute vorticity and angular rotation of particles as they progress
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetDisableResetCache"
                         default_values="0"
                         name="DisableResetCache"
                         number_of_elements="1"
                         panel_visibility="never">
        <BooleanDomain name="bool"/>
        <Documentation>
          Prevents cache from getting reset so that new computation always start from previous results.
        </Documentation>
      </IntVectorProperty>
    </SourceProxy>

    <!-- ==================================================================== -->
    <SourceProxy class="vtkStreamTracer"
                 label="Stream Tracer"
                 name="StreamTracer">
      <Documentation long_help="Integrate streamlines in a vector field."
                     short_help="Integrate streamlines in a vector field.">The
        Stream Tracer filter generates streamlines in a vector
        field from a collection of seed points. Production of
        streamlines terminates if a streamline crosses the
        exterior boundary of the input dataset
        (ReasonForTermination=1). Other reasons for termination
        include an initialization issue (ReasonForTermination=2),
        computing an unexpected value (ReasonForTermination=3),
        reached the Maximum Streamline Length input value
        (ReasonForTermination=4), reached the Maximum Steps
        input value (ReasonForTermination=5), and velocity was
        lower than the Terminal Speed input value
        (ReasonForTermination=6). This filter operates on any
        type of dataset, provided it has point-centered vectors.
        The output is polygonal data containing polylines.
      </Documentation>
      <InputProperty clean_command="RemoveAllInputs"
                     command="AddInputConnection"
                     name="Input">
        <ProxyGroupDomain name="groups">
          <Group name="sources"/>
          <Group name="filters"/>
        </ProxyGroupDomain>
        <DataTypeDomain composite_data_supported="1"
                        name="input_type">
          <DataType value="vtkDataSet"/>
        </DataTypeDomain>
        <InputArrayDomain name="input_array"
                          number_of_components="3"/>
        <Documentation>
          This property specifies the input to the Stream Tracer filter.
        </Documentation>
      </InputProperty>
      <StringVectorProperty animateable="0"
                            command="SetInputArrayToProcess"
                            element_types="0 0 0 0 2"
                            label="Vectors"
                            name="SelectInputVectors"
                            number_of_elements="5">
        <ArrayListDomain attribute_type="Vectors"
                         name="array_list">
          <RequiredProperties>
            <Property function="Input"
                      name="Input"/>
          </RequiredProperties>
        </ArrayListDomain>
        <Documentation>
          This property contains the name of the vector array from which to generate streamlines.
        </Documentation>
      </StringVectorProperty>
      <IntVectorProperty command="SetInterpolatorType"
                         default_values="0"
                         name="InterpolatorType"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <EnumerationDomain name="enum">
          <Entry text="Interpolator with Point Locator"
                 value="0"/>
          <Entry text="Interpolator with Cell Locator"
                 value="1"/>
        </EnumerationDomain>
        <Documentation>
          This property determines which interpolator to use for evaluating the velocity vector field. The first is
          faster though the second is more robust in locating cells during streamline integration.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetSurfaceStreamlines"
                         default_values="0"
                         name="Surface Streamlines"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <BooleanDomain name="bool"/>
        <Documentation>
          Specify whether to compute surface streamlines.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetIntegrationDirection"
                         default_values="2"
                         name="IntegrationDirection"
                         number_of_elements="1">
        <EnumerationDomain name="enum">
          <Entry text="FORWARD"
                 value="0"/>
          <Entry text="BACKWARD"
                 value="1"/>
          <Entry text="BOTH"
                 value="2"/>
        </EnumerationDomain>
        <Documentation>
          This property determines in which direction(s) a streamline is generated.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetIntegratorType"
                         default_values="2"
                         name="IntegratorType"
                         number_of_elements="1">
        <EnumerationDomain name="enum">
          <Entry text="Runge-Kutta 2"
                 value="0"/>
          <Entry text="Runge-Kutta 4"
                 value="1"/>
          <Entry text="Runge-Kutta 4-5"
                 value="2"/>
        </EnumerationDomain>
        <Documentation>
          This property determines which integrator (with increasing accuracy) to use for creating streamlines.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetIntegrationStepUnit"
                         default_values="2"
                         label="Integration Step Unit"
                         name="IntegrationStepUnit"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <EnumerationDomain name="enum">
          <Entry text="Length"
                 value="1"/>
          <Entry text="Cell Length"
                 value="2"/>
        </EnumerationDomain>
        <Documentation>
          This property specifies the unit for
          Minimum/Initial/Maximum integration step size. The Length unit refers
          to the arc length that a particle travels/advects within a single step.
          The Cell Length unit represents the step size as a number of cells.
        </Documentation>
      </IntVectorProperty>
      <DoubleVectorProperty command="SetInitialIntegrationStep"
                            default_values="0.2"
                            label="Initial Step Length"
                            name="InitialIntegrationStep"
                            number_of_elements="1"
                            panel_visibility="advanced">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          This property specifies the initial integration step
          size. For non-adaptive integrators (Runge-Kutta 2 and Runge-Kutta 4),
          it is fixed (always equal to this initial value) throughout the
          integration. For an adaptive integrator (Runge-Kutta 4-5), the actual
          step size varies such that the numerical error is less than a specified threshold.
        </Documentation>
      </DoubleVectorProperty>
      <DoubleVectorProperty command="SetMinimumIntegrationStep"
                            default_values="0.01"
                            label="Minimum Step Length"
                            name="MinimumIntegrationStep"
                            number_of_elements="1"
                            panel_visibility="advanced">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          When using the Runge-Kutta 4-5 integrator, this property specifies the minimum integration step size.
        </Documentation>
      </DoubleVectorProperty>
      <DoubleVectorProperty command="SetMaximumIntegrationStep"
                            default_values="0.5"
                            label="Maximum Step Length"
                            name="MaximumIntegrationStep"
                            number_of_elements="1"
                            panel_visibility="advanced">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          When using the Runge-Kutta 4-5 integrator, this property specifies the maximum integration step size.
        </Documentation>
      </DoubleVectorProperty>
      <IntVectorProperty command="SetMaximumNumberOfSteps"
                         default_values="2000"
                         label="Maximum Steps"
                         name="MaximumNumberOfSteps"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <IntRangeDomain name="range"/>
        <Documentation>
          This property specifies the maximum number of steps, beyond which streamline integration is terminated.
        </Documentation>
      </IntVectorProperty>
      <DoubleVectorProperty command="SetMaximumPropagation"
                            default_values="1.0"
                            label="Maximum Streamline Length"
                            name="MaximumPropagation"
                            number_of_elements="1">
        <BoundsDomain default_mode="max"
                      mode="scaled_extent"
                      name="bounds"
                      scale_factor="1.0">
          <RequiredProperties>
            <Property function="Input"
                      name="Input"/>
          </RequiredProperties>
        </BoundsDomain>
        <Documentation>
          This property specifies the maximum streamline length (i.e., physical arc length), beyond which line
          integration is terminated.
        </Documentation>
      </DoubleVectorProperty>
      <DoubleVectorProperty command="SetTerminalSpeed"
                            default_values="0.000000000001"
                            label="Terminal Speed"
                            name="TerminalSpeed"
                            number_of_elements="1"
                            panel_visibility="advanced">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          This property specifies the terminal speed, below which particle advection/integration is terminated.
        </Documentation>
      </DoubleVectorProperty>
      <DoubleVectorProperty command="SetMaximumError"
                            default_values="0.000001"
                            name="MaximumError"
                            number_of_elements="1"
                            panel_visibility="advanced">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          This property specifies the maximum error (for
          Runge-Kutta 4-5) tolerated throughout streamline integration. The
          Runge-Kutta 4-5 integrator tries to adjust the step size such that the
          estimated error is less than this threshold.
        </Documentation>
      </DoubleVectorProperty>
      <IntVectorProperty command="SetComputeVorticity"
                         default_values="1"
                         name="ComputeVorticity"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <BooleanDomain name="bool"/>
        <Documentation>
          Specify whether to compute vorticity.
        </Documentation>
      </IntVectorProperty>

      <InputProperty command="SetSourceConnection"
                     label="Seed Type"
                     name="Source"
                     panel_visibility="default">
        <ProxyGroupDomain name="groups">
          <Group name="sources"/>
        </ProxyGroupDomain>
        <ProxyListDomain name="proxy_list">
          <Group name="seed_sources"/>
        </ProxyListDomain>
        <Documentation>
          The value of this property determines how the seeds for the streamlines will be generated.
        </Documentation>
      </InputProperty>

      <IntVectorProperty command="SetUseLocalSeedSource"
                         number_of_elements="1"
                         default_values="0"
                         name="UseLocalSeedSource"
                         panel_visibility="never">
        <BooleanDomain name="bool"/>
        <Documentation>
          If true the filter considers that the whole seed source is available on all ranks.
          Else the filter will aggregate all seed sources from all ranks and merge their points.
          WARNING: do not set this value to true unless you know what you're doing.
        </Documentation>
      </IntVectorProperty>

      <PropertyGroup label="Seeds">
        <Property name="Source"/>
      </PropertyGroup>

      <PropertyGroup label="Integration Parameters">
        <Property name="IntegrationDirection"/>
        <Property name="IntegratorType"/>
        <Property name="IntegrationStepUnit"/>
        <Property name="InitialIntegrationStep"/>
        <Property name="MinimumIntegrationStep"/>
        <Property name="MaximumIntegrationStep"/>
        <Property name="MaximumError"/>
      </PropertyGroup>

      <PropertyGroup label="Streamline Parameters">
        <Property name="MaximumNumberOfSteps"/>
        <Property name="MaximumPropagation"/>
        <Property name="TerminalSpeed"/>
      </PropertyGroup>

      <Hints>
        <Visibility replace_input="2"/>
      </Hints>
      <!-- End StreamTracer -->
    </SourceProxy>

    <!-- ==================================================================== -->
    <SourceProxy class="vtkStreamTracer"
                 label="Stream Tracer With Custom Source"
                 name="ArbitrarySourceStreamTracer">
      <Documentation long_help="Integrate streamlines in a vector field."
                     short_help="Integrate streamlines in a vector field.">The
        Stream Tracer With Custom Source filter generates streamlines
        in a vector field from a collection of seed points. Production
        of streamlines terminates if a streamline crosses the
        exterior boundary of the input dataset
        (ReasonForTermination=1). Other reasons for termination
        include an initialization issue (ReasonForTermination=2),
        computing an unexpected value (ReasonForTermination=3),
        reached the Maximum Streamline Length input value
        (ReasonForTermination=4), reached the Maximum Steps
        input value (ReasonForTermination=5), and velocity was
        lower than the Terminal Speed input value
        (ReasonForTermination=6). This filter operates on any
        type of dataset, provided it has point-centered vectors.
        The output is polygonal data containing polylines.
        This filter takes a Source input
        that provides the seed points.
      </Documentation>
      <InputProperty clean_command="RemoveAllInputs"
                     command="AddInputConnection"
                     name="Input">
        <ProxyGroupDomain name="groups">
          <Group name="sources"/>
          <Group name="filters"/>
        </ProxyGroupDomain>
        <DataTypeDomain composite_data_supported="1"
                        name="input_type">
          <DataType value="vtkDataSet"/>
        </DataTypeDomain>
        <InputArrayDomain attribute_type="point"
                          name="input_array"
                          number_of_components="3"/>
        <Documentation>
          This property specifies the input to the Stream Tracer filter.
        </Documentation>
      </InputProperty>
      <StringVectorProperty animateable="0"
                            command="SetInputArrayToProcess"
                            element_types="0 0 0 0 2"
                            label="Vectors"
                            name="SelectInputVectors"
                            number_of_elements="5">
        <ArrayListDomain attribute_type="Vectors"
                         name="array_list">
          <RequiredProperties>
            <Property function="Input"
                      name="Input"/>
          </RequiredProperties>
        </ArrayListDomain>
        <Documentation>
          This property contains the name of the vector array from which to generate streamlines.
        </Documentation>
      </StringVectorProperty>
      <IntVectorProperty command="SetInterpolatorType"
                         default_values="0"
                         name="InterpolatorType"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <EnumerationDomain name="enum">
          <Entry text="Interpolator with Point Locator"
                 value="0"/>
          <Entry text="Interpolator with Cell Locator"
                 value="1"/>
        </EnumerationDomain>
        <Documentation>
          This property determines which interpolator to use for
          evaluating the velocity vector field. The first is faster though the
          second is more robust in locating cells during streamline integration.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetSurfaceStreamlines"
                         default_values="0"
                         name="Surface Streamlines"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <BooleanDomain name="bool"/>
        <Documentation>
          Specify whether to compute surface streamlines.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetIntegrationDirection"
                         default_values="2"
                         name="IntegrationDirection"
                         number_of_elements="1">
        <EnumerationDomain name="enum">
          <Entry text="FORWARD"
                 value="0"/>
          <Entry text="BACKWARD"
                 value="1"/>
          <Entry text="BOTH"
                 value="2"/>
        </EnumerationDomain>
        <Documentation>
          This property determines in which direction(s) a streamline is generated.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetIntegratorType"
                         default_values="2"
                         name="IntegratorType"
                         number_of_elements="1">
        <EnumerationDomain name="enum">
          <Entry text="Runge-Kutta 2"
                 value="0"/>
          <Entry text="Runge-Kutta 4"
                 value="1"/>
          <Entry text="Runge-Kutta 4-5"
                 value="2"/>
        </EnumerationDomain>
        <Documentation>
          This property determines which integrator (with increasing accuracy) to use for creating streamlines.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetIntegrationStepUnit"
                         default_values="2"
                         label="Integration Step Unit"
                         name="IntegrationStepUnit"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <EnumerationDomain name="enum">
          <Entry text="Length"
                 value="1"/>
          <Entry text="Cell Length"
                 value="2"/>
        </EnumerationDomain>
        <Documentation>
          This property specifies the unit for
          Minimum/Initial/Maximum integration step size. The Length unit refers
          to the arc length that a particle travels/advects within a single step.
          The Cell Length unit represents the step size as a number of cells.
        </Documentation>
      </IntVectorProperty>
      <DoubleVectorProperty command="SetInitialIntegrationStep"
                            default_values="0.2"
                            label="Initial Step Length"
                            name="InitialIntegrationStep"
                            number_of_elements="1"
                            panel_visibility="advanced">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          This property specifies the initial integration step
          size. For non-adaptive integrators (Runge-Kutta 2 and Runge-Kutta 4),
          it is fixed (always equal to this initial value) throughout the
          integration. For an adaptive integrator (Runge-Kutta 4-5), the actual
          step size varies such that the numerical error is less than a specified threshold.
        </Documentation>
      </DoubleVectorProperty>
      <DoubleVectorProperty command="SetMinimumIntegrationStep"
                            default_values="0.01"
                            label="Minimum Step Length"
                            name="MinimumIntegrationStep"
                            number_of_elements="1"
                            panel_visibility="advanced">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          When using the Runge-Kutta 4-5 integrator, this property specifies the minimum integration step size.
        </Documentation>
      </DoubleVectorProperty>
      <DoubleVectorProperty command="SetMaximumIntegrationStep"
                            default_values="0.5"
                            label="Maximum Step Length"
                            name="MaximumIntegrationStep"
                            number_of_elements="1"
                            panel_visibility="advanced">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          When using the Runge-Kutta 4-5 integrator, this property specifies the maximum integration step size.
        </Documentation>
      </DoubleVectorProperty>
      <IntVectorProperty command="SetMaximumNumberOfSteps"
                         default_values="2000"
                         label="Maximum Steps"
                         name="MaximumNumberOfSteps"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <IntRangeDomain name="range"/>
        <Documentation>
          This property specifies the maximum number of steps, beyond which streamline integration is terminated.
        </Documentation>
      </IntVectorProperty>
      <DoubleVectorProperty command="SetMaximumPropagation"
                            default_values="1.0"
                            label="Maximum Streamline Length"
                            name="MaximumPropagation"
                            number_of_elements="1"
                            panel_visibility="advanced">
        <BoundsDomain mode="scaled_extent"
                      name="bounds"
                      scale_factor="1.0">
          <RequiredProperties>
            <Property function="Input"
                      name="Input"/>
          </RequiredProperties>
        </BoundsDomain>
        <Documentation>
          This property specifies the maximum streamline length
          (i.e., physical arc length), beyond which line integration is terminated.
        </Documentation>
      </DoubleVectorProperty>
      <DoubleVectorProperty command="SetTerminalSpeed"
                            default_values="0.000000000001"
                            label="Terminal Speed"
                            name="TerminalSpeed"
                            number_of_elements="1"
                            panel_visibility="advanced">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          This property specifies the terminal speed, below which particle advection/integration is terminated.
        </Documentation>
      </DoubleVectorProperty>
      <DoubleVectorProperty command="SetMaximumError"
                            default_values="0.000001"
                            name="MaximumError"
                            number_of_elements="1"
                            panel_visibility="advanced">
        <DoubleRangeDomain name="range"/>
        <Documentation>
          This property specifies the maximum error (for Runge-Kutta 4-5) tolerated throughout streamline integration.
          The Runge-Kutta 4-5 integrator tries to adjust the step size such that the
          estimated error is less than this threshold.
        </Documentation>
      </DoubleVectorProperty>
      <IntVectorProperty command="SetComputeVorticity"
                         default_values="1"
                         name="ComputeVorticity"
                         number_of_elements="1"
                         panel_visibility="advanced">
        <BooleanDomain name="bool"/>
        <Documentation>
          Specify whether to compute vorticity.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetUseLocalSeedSource"
                         number_of_elements="1"
                         default_values="0"
                         name="UseLocalSeedSource"
                         panel_visibility="never">
        <BooleanDomain name="bool"/>
        <Documentation>
          If true the filter considers that the whole seed source is available on all ranks.
          Else the filter will aggregate all seed sources from all ranks and merge their points.
          WARNING: do not set this value to true unless you know what you're doing.
        </Documentation>
      </IntVectorProperty>
      <InputProperty command="SetSourceConnection"
                     label="Seed Source"
                     name="Source">
        <ProxyGroupDomain name="groups">
          <Group name="sources"/>
        </ProxyGroupDomain>
        <Documentation>
          This property specifies the input used to obtain the seed points.
        </Documentation>
      </InputProperty>
      <Hints>
        <Visibility replace_input="2"/>
      </Hints>
      <!-- End StreamTracer -->
    </SourceProxy>

    <!-- ==================================================================== -->
    <SourceProxy name="VortexCores"
                 class="vtkVortexCore"
                 label="Vortex Cores">
      <Documentation long_help="Compute vortex cores"
                     short_help="Compute vortex cores of a vector field">
        Compute vortex core lines using the parallel vectors method. By default, the "Higher-Order"
        approach of computing the parallel vector lines between the flow field's velocity and jerk
        is disabled in favor of computing the parallel vector lines between the velocity and
        acceleration. To further discriminate against spurious vortex cores, at each potential point
        value the Q-criterion, delta-criterion, lambda_ci, and lambda_2-criterion are checked. The Q-criterion
        and delta-criterion are used to prefilter cells prior to the execution of the parallel lines
        algorithm, and all criteria values are stored as point values on the output polylines.
      </Documentation>

      <InputProperty command="SetInputConnection"
                     name="Input">
        <ProxyGroupDomain name="groups">
          <Group name="sources"/>
          <Group name="filters"/>
        </ProxyGroupDomain>
        <DataTypeDomain name="input_type">
          <DataType value="vtkDataSet"/>
        </DataTypeDomain>
        <InputArrayDomain name="input_array1"
                          number_of_components="3"
                          optional="0"/>
        <Documentation>
          The input.
        </Documentation>
      </InputProperty>

      <StringVectorProperty name="SelectInputArray"
                            command="SetInputArrayToProcess"
                            number_of_elements="5"
                            element_types="0 0 0 0 2"
                            label="Vector Field">
        <ArrayListDomain name="array_list" attribute_type="Vectors"
                         input_domain_name="input_array1">
          <RequiredProperties>
            <Property name="Input" function="Input"/>
          </RequiredProperties>
        </ArrayListDomain>
        <Documentation>
          This property indicates the name of the vector array from which to compute vortex cores.
        </Documentation>
      </StringVectorProperty>

      <IntVectorProperty command="SetHigherOrderMethod"
                         name="UseHigherOrderMethod"
                         default_values="0"
                         number_of_elements="1">
        <BooleanDomain name="bool"/>
        <Documentation>
          Use the flow field's jerk instead of acceleration as the second vector field during the
          parallel vector operation. Disabled by default.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty command="SetFasterApproximation"
                         name="FasterApproximation"
                         default_values="0"
                         number_of_elements="1">
        <BooleanDomain name="bool"/>
        <Documentation>
          When this option is enabled, the gradient filter used to compute vortex cores will provide
          a less accurate algorithm that performs fewer derivative calculations and is therefore faster.
        </Documentation>
      </IntVectorProperty>

    </SourceProxy>
    <!-- End VortexCores -->
  </ProxyGroup>
</ServerManagerConfiguration>
