/*=========================================================================

  Program:   Visualization Toolkit
  Module:    AMRDualContour.cxx

  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
  All rights reserved.
  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.

     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notice for more information.

=========================================================================*/
#include <iostream>

#include "vtkPVAMRDualContour.h"
#include "vtkSmartPointer.h"
#include "vtkSpyPlotReader.h"
#include "vtkTestUtilities.h"
#include "vtkDummyController.h"
#include "vtkMultiProcessController.h"

typedef vtkSmartPointer<vtkDummyController> vtkDummyControllerRefPtr;
typedef vtkSmartPointer<vtkSpyPlotReader> vtkSpyPlotReaderRefPtr;
typedef vtkSmartPointer<vtkPVAMRDualContour> vtkPVAMRDualContourRefPtr;


int main( int argc, char* argv[] )
{
  vtkDummyControllerRefPtr controller (vtkDummyControllerRefPtr::New());
  vtkMultiProcessController::SetGlobalController(controller);

  int rc            = 0;
//  const char *fname =
//      "/media/shared/Data/ParaViewData/Data/SPCTH/Dave_Karelitz_Small/spcth.0";

  const char *fname =
      vtkTestUtilities::ExpandDataFileName(
          argc, argv, "Data/Dave_Karelitz_Small/spcth.0" );

  vtkSpyPlotReaderRefPtr reader = vtkSpyPlotReaderRefPtr::New();
  reader->SetFileName( fname );
  reader->SetGlobalController(controller);
  reader->MergeXYZComponentsOn();
  reader->DownConvertVolumeFractionOn();
  reader->DistributeFilesOn();
  reader->SetCellArrayStatus("Material volume fraction - 2", 1);
  reader->Update();

  vtkPVAMRDualContourRefPtr contour = vtkPVAMRDualContourRefPtr::New();
  contour->SetInputData( reader->GetOutputDataObject(0) );
  contour->SetVolumeFractionSurfaceValue(0.1);
  contour->SetEnableMergePoints(1);
  contour->SetEnableDegenerateCells(1);
  contour->SetEnableMultiProcessCommunication(1);
  contour->AddInputCellArrayToProcess("Material volume fraction - 2");
  contour->Update();

  return( rc );
}
