1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
/*=========================================================================
Program: Visualization Toolkit
Module: TestHaloFinder.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 <mpi.h>
#include "HaloFinderTestHelpers.h"
#include "vtkArrayCalculator.h"
#include "vtkColorTransferFunction.h"
#include "vtkMPIController.h"
#include "vtkRegressionTestImage.h"
namespace {
int runHaloFinderTest(int argc, char*argv[])
{
HaloFinderTestHelpers::HaloFinderTestVTKObjects to =
HaloFinderTestHelpers::SetupHaloFinderTest(
argc, argv, vtkPANLHaloFinder::MOST_BOUND_PARTICLE);
vtkUnstructuredGrid* allParticles = to.haloFinder->GetOutput(0);
if (!HaloFinderTestHelpers::pointDataHasTheseArrays(allParticles->GetPointData(),
HaloFinderTestHelpers::getFirstOutputArrays()))
{
std::cerr << "Error at line: " << __LINE__ << std::endl;
return 0;
}
vtkUnstructuredGrid* haloSummaries = to.haloFinder->GetOutput(1);
if (!HaloFinderTestHelpers::pointDataHasTheseArrays(haloSummaries->GetPointData(),
HaloFinderTestHelpers::getHaloSummaryWithCenterInfoArrays()))
{
std::cerr << "Error at line: " << __LINE__ << std::endl;
return 0;
}
vtkNew< vtkArrayCalculator > calc;
calc->SetInputConnection(to.haloFinder->GetOutputPort(1));
calc->SetResultArrayName("Result");
calc->AddCoordinateVectorVariable("coords");
calc->AddVectorArrayName("fof_center");
calc->SetFunction("mag(fof_center - coords)");
calc->Update();
double range[2];
calc->GetOutput()->GetPointData()->GetArray("Result")->GetRange(range);
to.maskPoints->SetInputConnection(calc->GetOutputPort());
to.maskPoints->Update();
vtkNew< vtkColorTransferFunction > lut;
lut->AddRGBPoint(range[0], 59/255.0, 76/255.0, 192/255.0);
lut->AddRGBPoint(range[1], 180/255.0, 4/255.0, 38/255.0);
lut->SetColorSpaceToDiverging();
lut->SetVectorModeToMagnitude();
to.mapper->SetLookupTable(lut.GetPointer());
to.mapper->ScalarVisibilityOn();
to.mapper->SetInputArrayToProcess(0,0,0,vtkDataObject::FIELD_ASSOCIATION_POINTS,"Result");
to.mapper->InterpolateScalarsBeforeMappingOn();
int retVal = vtkRegressionTestImage(to.renWin.GetPointer());
if ( retVal == vtkRegressionTester::DO_INTERACTOR)
{
to.iren->Start();
}
return retVal;
}
}
int TestHaloFinderSummaryInfo(int argc, char* argv[])
{
MPI_Init(&argc,&argv);
vtkNew< vtkMPIController > controller;
controller->Initialize();
vtkMultiProcessController::SetGlobalController(controller.GetPointer());
int retVal = runHaloFinderTest(argc,argv);
controller->Finalize();
return !retVal;
}
|