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

Copyright 2012 SciberQuest Inc.
-->

<ServerManagerConfiguration>
<ProxyGroup name="sources">

  <!--=======================================================================-->
  <SourceProxy
      name="vtkSQBOVReader"
      class="vtkSQBOVReader"
      label="SQ BOV Reader">
    <Documentation
        short_help="BOV reader.">
        long_help="BOV Reader. Reads raw or brick of values files in parallel handles time."
    </Documentation>

    <!-- File Name -->
    <StringVectorProperty
        name="FileName"
        animateable="0"
        command="SetFileName"
        number_of_elements="1"
        panel_visibility="never">
    <FileListDomain name="files"/>
    <Documentation>
      This property specifies the file name for the reader.
    </Documentation>
    </StringVectorProperty>
    <!-- Time Steps -->
    <DoubleVectorProperty
        name="TimestepValues"
        information_only="1">
      <TimeStepsInformationHelper/>
      <Documentation>
      Available timestep values.
      </Documentation>
    </DoubleVectorProperty>
    <!-- Array selection -->
    <StringVectorProperty
        name="PointArrayInfo"
        information_only="1">
      <ArraySelectionInformationHelper attribute_name="Point"/>
    </StringVectorProperty>
    <StringVectorProperty
        name="PointArrayStatus"
        command="SetPointArrayStatus"
        number_of_elements="0"
        repeat_command="1"
        number_of_elements_per_command="2"
        element_types="2 0"
        information_property="PointArrayInfo"
        label="Arrays"
        >
      <ArraySelectionDomain name="array_list">
        <RequiredProperties>
          <Property name="PointArrayInfo" function="ArrayList"/>
        </RequiredProperties>
      </ArraySelectionDomain>
      <Documentation>
      This property is used to select arrays to read in.
    </Documentation>
    </StringVectorProperty>
    <!-- Subset selection -->
    <IntVectorProperty
        name="ISubsetInfo"
        command="GetISubsetRange"
        information_only="1">
      <SimpleIntInformationHelper/>
    </IntVectorProperty>
    <IntVectorProperty
        name="ISubset"
        command="SetISubset"
        number_of_elements="2"
        default_values="1 0"
        animateable="0"
        information_property="ISubsetInfo"
        >
      <IntRangeDomain name="range">
        <RequiredProperties>
            <Property name="ISubsetInfo" function="Range"/>
        </RequiredProperties>
      </IntRangeDomain>
      <Documentation>
        This property controls what subset of data is read in. Subset for smaller memory footprint and better interactivity.
      </Documentation>
    </IntVectorProperty>
    <IntVectorProperty
        name="JSubsetInfo"
        command="GetJSubsetRange"
        information_only="1">
      <SimpleIntInformationHelper/>
    </IntVectorProperty>
    <IntVectorProperty
        name="JSubset"
        command="SetJSubset"
        number_of_elements="2"
        default_values="1 0"
        animateable="0"
        information_property="JSubsetInfo"
        >
      <IntRangeDomain name="range">
        <RequiredProperties>
            <Property name="JSubsetInfo" function="Range"/>
        </RequiredProperties>
      </IntRangeDomain>
      <Documentation>
        This property controls what subset of data is read in. Subset for smaller memory footprint and better interactivity.
      </Documentation>
    </IntVectorProperty>
    <IntVectorProperty
        name="KSubsetInfo"
        command="GetKSubsetRange"
        information_only="1">
      <SimpleIntInformationHelper/>
    </IntVectorProperty>
    <IntVectorProperty
        name="KSubset"
        command="SetKSubset"
        number_of_elements="2"
        default_values="1 0"
        animateable="0"
        information_property="KSubsetInfo"
        >
      <IntRangeDomain name="range">
        <RequiredProperties>
            <Property name="KSubsetInfo" function="Range"/>
        </RequiredProperties>
      </IntRangeDomain>
      <Documentation>
        This property controls what subset of data is read in. Subset for smaller memory footprint and better interactivity.
      </Documentation>
    </IntVectorProperty>

    <!-- Projection -->
    <IntVectorProperty
        name="VectorProjection"
        lable="Vector Projection"
        command="SetVectorProjection"
        number_of_elements="1"
        default_values="0"
        >
      <EnumerationDomain name="enum">
        <Entry value="0" text="None"/>
        <Entry value="4" text="XY"/>
        <Entry value="2" text="XZ"/>
        <Entry value="1" text="YZ"/>
      </EnumerationDomain>
      <Documentation>
        Field is projected into the axis aligned space when set.
      </Documentation>
    </IntVectorProperty>

    <!-- MPI File Hints -->
    <IntVectorProperty
        name="UseCollectiveIO"
        lable="Collective IO"
        command="SetUseCollectiveIO"
        number_of_elements="1"
        default_values="2"
        >
      <EnumerationDomain name="enum">
        <Entry value="0" text="automatic"/>
        <Entry value="1" text="disabled"/>
        <Entry value="2" text="enabled"/>
      </EnumerationDomain>
      <Documentation>
        Turn on/off MPI-IO collective buffering.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="NumberOfIONodes"
        lable="N IO Nodes"
        command="SetNumberOfIONodes"
        number_of_elements="1"
        default_values="0"
        >
      <Documentation>
        Set the number of IO nodes. Set to 0 to use the implementation default.
      </Documentation>
      <IntRangeDomain name="range"/>
    </IntVectorProperty>

    <IntVectorProperty
        name="CollectBufferSize"
        lable="CIO Buffer Size"
        command="SetCollectBufferSize"
        number_of_elements="1"
        default_values="536870912"
        >
      <EnumerationDomain name="enum">
        <Entry value="0"          text="default"/>
        <Entry value="536870912"  text=" 512 MB"/>
        <Entry value="1073741824" text=" 1.0 GB"/>
        <Entry value="1610612736" text=" 1.5 GB"/>
        <Entry value="2147483647" text=" 2.0 GB"/>
      </EnumerationDomain>
      <Documentation>
        Set the size of the buffer for aggregation. Set to 0 to use the implementation default.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="UseDirectIO"
        lable="Direct IO"
        command="SetUseDirectIO"
        number_of_elements="1"
        default_values="1"
        >
      <EnumerationDomain name="enum">
        <Entry value="0" text="automatic"/>
        <Entry value="1" text="disabled"/>
        <Entry value="2" text="enabled"/>
      </EnumerationDomain>
      <Documentation>
        Turn on/off MPI-IO direct I/O
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="UseDeferredOpen"
        lable="Deferred Open"
        command="SetUseDeferredOpen"
        number_of_elements="1"
        default_values="0"
        >
      <EnumerationDomain name="enum">
        <Entry value="0" text="automatic"/>
        <Entry value="1" text="disabled"/>
        <Entry value="2" text="enabled"/>
      </EnumerationDomain>
      <Documentation>
        Turn on/off MPI-IO deferred.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="UseDataSieving"
        lable="Data Sieving"
        command="SetUseDataSieving"
        number_of_elements="1"
        default_values="1"
        >
      <EnumerationDomain name="enum">
        <Entry value="0" text="automatic"/>
        <Entry value="1" text="disabled"/>
        <Entry value="2" text="enabled"/>
      </EnumerationDomain>
      <Documentation>
        Turn on/off MPI-IO data sieving.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="SieveBufferSize"
        lable="Sieve Buffer Size"
        command="SetSieveBufferSize"
        number_of_elements="1"
        default_values="0"
        >
      <EnumerationDomain name="enum">
        <Entry value="0"        text="default"/>
        <Entry value="1048576"  text="1 MB"/>
        <Entry value="2097152"  text="2 MB"/>
        <Entry value="4194304"  text="4 MB"/>
        <Entry value="8388608"  text="8 MB"/>
        <Entry value="16777216" text="16 MB"/>
        <Entry value="33554432" text="32 MB"/>
      </EnumerationDomain>
      <Documentation>
        Set the size of the buffer for sieving. Set to 0 to use the implementation default.
      </Documentation>
    </IntVectorProperty>

    <Hints>
      <ReaderFactory extensions="bov" file_description="MPI-I/O brick-of-values. (Plugin)"/>
      <View type="RenderView"/>
    </Hints>
  </SourceProxy>

  <!--========================================================================-->
  <SourceProxy
      name="vtkSQBOVMetaReader"
      class="vtkSQBOVMetaReader"
      label="SQ BOV Meta Reader">
    <Documentation
        short_help="BOV reader.">
        long_help="BOV Reader. Reads raw or brick of values files in parallel handles time."
    </Documentation>

    <!-- File Name -->
    <StringVectorProperty
        name="FileName"
        animateable="0"
        command="SetFileName"
        number_of_elements="1"
        panel_visibility="never"
        >
    <FileListDomain name="files"/>
    <Documentation>
      This property specifies the file name for the reader.
    </Documentation>
    </StringVectorProperty>

    <!-- Time Steps -->
    <DoubleVectorProperty
        name="TimestepValues"
        information_only="1">
      <TimeStepsInformationHelper/>
      <Documentation>
      Available timestep values.
      </Documentation>
    </DoubleVectorProperty>

    <!-- Array selection -->
    <StringVectorProperty
        name="PointArrayInfo"
        information_only="1">
      <ArraySelectionInformationHelper attribute_name="Point"/>
    </StringVectorProperty>
    <StringVectorProperty
        name="PointArrayStatus"
        command="SetPointArrayStatus"
        number_of_elements="0"
        repeat_command="1"
        number_of_elements_per_command="2"
        element_types="2 0"
        information_property="PointArrayInfo"
        label="Arrays"
        >
      <ArraySelectionDomain name="array_list">
        <RequiredProperties>
          <Property name="PointArrayInfo" function="ArrayList"/>
        </RequiredProperties>
      </ArraySelectionDomain>
      <Documentation>
      This property is used to select arrays to read in.
    </Documentation>
    </StringVectorProperty>

    <!-- Subset selection -->
    <IntVectorProperty
        name="ISubsetInfo"
        command="GetISubsetRange"
        information_only="1">
      <SimpleIntInformationHelper/>
    </IntVectorProperty>
    <IntVectorProperty
        name="ISubset"
        command="SetISubset"
        number_of_elements="2"
        default_values="1 0"
        animateable="0"
        information_property="ISubsetInfo"
        >
      <IntRangeDomain name="range">
        <RequiredProperties>
            <Property name="ISubsetInfo" function="Range"/>
        </RequiredProperties>
      </IntRangeDomain>
      <Documentation>
        Set data subset range in the z direction.
      </Documentation>
    </IntVectorProperty>
    <IntVectorProperty
        name="JSubsetInfo"
        command="GetJSubsetRange"
        information_only="1">
      <SimpleIntInformationHelper/>
    </IntVectorProperty>
    <IntVectorProperty
        name="JSubset"
        command="SetJSubset"
        number_of_elements="2"
        default_values="1 0"
        animateable="0"
        information_property="JSubsetInfo"
        >
      <IntRangeDomain name="range">
        <RequiredProperties>
            <Property name="JSubsetInfo" function="Range"/>
        </RequiredProperties>
      </IntRangeDomain>
      <Documentation>
        Set data subset range in the y direction.
      </Documentation>
    </IntVectorProperty>
    <IntVectorProperty
        name="KSubsetInfo"
        command="GetKSubsetRange"
        information_only="1">
      <SimpleIntInformationHelper/>
    </IntVectorProperty>
    <IntVectorProperty
        name="KSubset"
        command="SetKSubset"
        number_of_elements="2"
        default_values="1 0"
        animateable="0"
        information_property="KSubsetInfo"
        >
      <IntRangeDomain name="range">
        <RequiredProperties>
            <Property name="KSubsetInfo" function="Range"/>
        </RequiredProperties>
      </IntRangeDomain>
      <Documentation>
        Set data subset range in the z direction.
      </Documentation>
    </IntVectorProperty>

    <!-- Projection -->
    <IntVectorProperty
        name="VectorProjection"
        lable="Vector Projection"
        command="SetVectorProjection"
        number_of_elements="1"
        default_values="0"
        >
      <EnumerationDomain name="enum">
        <Entry value="0" text="None"/>
        <Entry value="4" text="XY"/>
        <Entry value="2" text="XZ"/>
        <Entry value="1" text="YZ"/>
      </EnumerationDomain>
      <Documentation>
        Field is projected into the axis aligned space when set.
      </Documentation>
    </IntVectorProperty>

    <!-- Periodic boundary conditions -->
    <IntVectorProperty
        name="XPeriodic"
        label="Periodic in X"
        command="SetXHasPeriodicBC"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
        Apply periodic boundary condition in the x direction during integration.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="YPeriodic"
        label="Periodic in Y"
        command="SetYHasPeriodicBC"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
        Apply periodic boundary condition in the y direction during integration.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="ZPeriodic"
        label="Periodic in Z"
        command="SetZHasPeriodicBC"
        number_of_elements="1"
        default_values="0"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
        Apply periodic boundary condition in the z direction during integration.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="NGhosts"
        label="Number of ghost cells"
        command="SetNumberOfGhostCells"
        number_of_elements="1"
        default_values="1"
        >
      <IntRangeDomain name="range"/>
      <Documentation>
      Number of ghost cells to read. The integrator requires at least one
      to correctly handle block to block transitions.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="BlockSizeInfo"
        command="GetBlockSize"
        information_only="1">
        <SimpleIntInformationHelper/>
    </IntVectorProperty>
    <IntVectorProperty
        name="BlockSize"
        command="SetBlockSize"
        number_of_elements="3"
        animateable="0"
        default_values="128 128 128"
        information_property="BlockSizeInfo"
        immediate_update="1"
        >
      <IntRangeDomain name="range" min="16"/>
      <Documentation>
      Sets the size of each block used for I/O subsetting during demand loading.
      Smaller block size means less wasted I/O but remember that I/O is more
      faster with larger blocks. Set this parameter in conjuntion with the
      block cahce size.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="BlockCacheSize"
        label="Block Cache Size"
        command="SetBlockCacheSize"
        number_of_elements="1"
        default_values="16"
        >
      <IntRangeDomain name="range" min="1"/>
      <Documentation>
      Sets the maximum number of blocks to hold in the cache. If set
      too high the system will run out of RAM. Set this parameter in
      conjuntion with the block size.
      </Documentation>
    </IntVectorProperty>
    <!-- TODO see notes in source.
    <DoubleVectorProperty
        name="BlockCacheRamFactor"
        command="SetBlockCacheRamFactor"
        number_of_elements="1"
        animateable="0"
        default_values="0.75"
        immediate_update="1"
        >
      <DoubleRangeDomain name="range" min="0.01" max="1.0"/>
      <Documentation>
      Set the percent of local (ram per-core) to use for the block cache.
      </Documentation>
    </DoubleVectorProperty>
    -->

    <IntVectorProperty
        name="ClearCachedBlocks"
        label="Clear Cached Blocks"
        command="SetClearCachedBlocks"
        number_of_elements="1"
        default_values="1"
        >
      <BooleanDomain name="bool"/>
      <Documentation>
      If set the block cache is explcitly cleared after each pipeline update.
      This will free up RAM for use by other filters.
      </Documentation>
    </IntVectorProperty>

    <!-- MPI File Hints -->
    <IntVectorProperty
        name="UseCollectiveIO"
        lable="Collective IO"
        command="SetUseCollectiveIO"
        number_of_elements="1"
        default_values="1"
        panel_visibility="never"
        >
      <EnumerationDomain name="enum">
        <Entry value="0" text="automatic"/>
        <Entry value="1" text="disabled"/>
        <Entry value="2" text="enabled"/>
      </EnumerationDomain>
      <Documentation>
        Turn on/off MPI-IO collective buffering.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="NumberOfIONodes"
        lable="N IO Nodes"
        command="SetNumberOfIONodes"
        number_of_elements="1"
        default_values="0"
        panel_visibility="never"
        >
      <IntRangeDomain name="range"/>
      <Documentation>
        Set the number of IO nodes. Set to 0 to use the implementation default.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="CollectBufferSize"
        lable="CIO Buffer Size"
        command="SetCollectBufferSize"
        number_of_elements="1"
        default_values="1073741824"
        panel_visibility="never"
        >
      <EnumerationDomain name="enum">
        <Entry value="0"          text="default"/>
        <Entry value="536870911"  text=" 512 MB"/>
        <Entry value="1073741823" text=" 1.0 GB"/>
        <Entry value="1610612735" text=" 1.5 GB"/>
        <Entry value="2147483647" text=" 2.0 GB"/>
      </EnumerationDomain>
      <Documentation>
        Set the size of the buffer for aggregation. Set to 0 to use the implementation default.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="UseDirectIO"
        lable="Direct IO"
        command="SetUseDirectIO"
        number_of_elements="1"
        default_values="0"
        panel_visibility="never"
        >
      <EnumerationDomain name="enum">
        <Entry value="0" text="automatic"/>
        <Entry value="1" text="disabled"/>
        <Entry value="2" text="enabled"/>
      </EnumerationDomain>
      <Documentation>
        Turn on/off MPI-IO direct I/O
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="UseDeferredOpen"
        lable="Deferred Open"
        command="SetUseDeferredOpen"
        number_of_elements="1"
        default_values="0"
        panel_visibility="never"
        >
      <EnumerationDomain name="enum">
        <Entry value="0" text="automatic"/>
        <Entry value="1" text="disabled"/>
        <Entry value="2" text="enabled"/>
      </EnumerationDomain>
      <Documentation>
        Turn on/off MPI-IO deferred.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="UseDataSieving"
        lable="Data Sieving"
        command="SetUseDataSieving"
        number_of_elements="1"
        default_values="0"
        panel_visibility="never"
        >
      <EnumerationDomain name="enum">
        <Entry value="0" text="automatic"/>
        <Entry value="1" text="disabled"/>
        <Entry value="2" text="enabled"/>
      </EnumerationDomain>
      <Documentation>
        Turn on/off MPI-IO data sieving.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty
        name="SieveBufferSize"
        lable="Sieve Buffer Size"
        command="SetSieveBufferSize"
        number_of_elements="1"
        default_values="0"
        panel_visibility="never"
        >
      <EnumerationDomain name="enum">
        <Entry value="0"        text="default"/>
        <Entry value="1048576"  text="1 MB"/>
        <Entry value="2097152"  text="2 MB"/>
        <Entry value="4194304"  text="4 MB"/>
        <Entry value="8388608"  text="8 MB"/>
        <Entry value="16777216" text="16 MB"/>
        <Entry value="33554432" text="32 MB"/>
      </EnumerationDomain>
      <Documentation>
        Set the size of the buffer for sieving. Set to 0 to use the implementation default.
      </Documentation>
    </IntVectorProperty>

    <Hints>
      <Property name="SieveBufferSize" show="0"/>
      <Property name="UseDataSieving" show="0"/>
      <Property name="UseDeferredOpen" show="0"/>
      <property name="UseDirectIO" show="0"/>
      <Property name="CollectBufferSize" show="0"/>
      <Property name="NumberOfIONodes" show="0"/>
      <Property name="UseCollectiveIO" show="0"/>
      <ReaderFactory extensions="bovm" file_description="MPI-I/O brick-of-values (Meta Reader). (Plugin)"/>
    </Hints>
  </SourceProxy>
</ProxyGroup>
</ServerManagerConfiguration>
