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

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."/>
      <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.
      </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="96 96 96"
        information_property="BlockSizeInfo"
        immediate_update="1"
        >
      <IntRangeDomain name="range" min="16"/>
      <Documentation>
      Set the block size.
      </Documentation>
    </IntVectorProperty>

    <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.
      </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)."/>
    </Hints>
  </SourceProxy>
</ProxyGroup>
</ServerManagerConfiguration>
