diff --git a/Filters/Sources/Testing/Cxx/CMakeLists.txt b/Filters/Sources/Testing/Cxx/CMakeLists.txt index 2764e7177eb95e457436dfe4bc1a24660858cc09..f5b9e15c19815bc9058dc25fd171c75e2e28d897 100644 --- a/Filters/Sources/Testing/Cxx/CMakeLists.txt +++ b/Filters/Sources/Testing/Cxx/CMakeLists.txt @@ -35,7 +35,18 @@ vtk_add_test_cxx(vtkFiltersSourcesCxxTests tests TestTextSource.cxx,NO_VALID TestTexturedSphereSource.cxx,NO_VALID ) -vtk_test_cxx_executable(vtkFiltersSourcesCxxTests tests + +vtk_add_test_mpi(vtkFiltersSourcesCxxTests tests_mpi + TESTING_DATA + TestSpatioTemporalHarmonicsSourceDistributed.cxx + ) + +set(all_tests + ${tests} + ${tests_mpi} + ) + +vtk_test_cxx_executable(vtkFiltersSourcesCxxTests all_tests DISABLE_FLOATING_POINT_EXCEPTIONS RENDERING_FACTORY ) diff --git a/Filters/Sources/Testing/Cxx/TestSpatioTemporalHarmonicsSourceDistributed.cxx b/Filters/Sources/Testing/Cxx/TestSpatioTemporalHarmonicsSourceDistributed.cxx new file mode 100644 index 0000000000000000000000000000000000000000..172af0d2a72b1d60b695a314e62a09cf64977b2e --- /dev/null +++ b/Filters/Sources/Testing/Cxx/TestSpatioTemporalHarmonicsSourceDistributed.cxx @@ -0,0 +1,94 @@ +// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen +// SPDX-License-Identifier: BSD-3-Clause + +#include "vtkActor.h" +#include "vtkCamera.h" +#include "vtkCompositeRenderManager.h" +#include "vtkDataArray.h" +#include "vtkDataSet.h" +#include "vtkDataSetSurfaceFilter.h" +#include "vtkImageData.h" +#include "vtkMPIController.h" +#include "vtkNew.h" +#include "vtkPieceScalars.h" +#include "vtkPointData.h" +#include "vtkPolyDataMapper.h" +#include "vtkRegressionTestImage.h" +#include "vtkRenderWindow.h" +#include "vtkRenderWindowInteractor.h" +#include "vtkRenderer.h" +#include "vtkSpatioTemporalHarmonicsSource.h" + +int TestSpatioTemporalHarmonicsSourceDistributed(int argc, char* argv[]) +{ + // Setup mpi + vtkNew<vtkMPIController> controller; + controller->Initialize(&argc, &argv); + + const int myId = controller->GetLocalProcessId(); + const int numProcs = controller->GetNumberOfProcesses(); + + // Setup parallel rendering + vtkNew<vtkCompositeRenderManager> prm; + vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::Take(prm->MakeRenderer()); + vtkSmartPointer<vtkRenderWindow> renWin = + vtkSmartPointer<vtkRenderWindow>::Take(prm->MakeRenderWindow()); + renWin->AddRenderer(renderer); + renWin->DoubleBufferOn(); + renWin->SetMultiSamples(0); + + vtkNew<vtkRenderWindowInteractor> iren; + iren->SetRenderWindow(renWin); + + prm->SetRenderWindow(renWin); + prm->SetController(controller); + + // Create source + vtkNew<vtkSpatioTemporalHarmonicsSource> source; + vtkNew<vtkDataSetSurfaceFilter> toPolyData; + toPolyData->SetInputConnection(source->GetOutputPort()); + + vtkNew<vtkPieceScalars> pieceScalars; + pieceScalars->SetInputConnection(toPolyData->GetOutputPort()); + pieceScalars->SetScalarModeToCellData(); + + // Execute pipeline and render + vtkNew<vtkPolyDataMapper> mapper; + mapper->SetInputConnection(pieceScalars->GetOutputPort()); + mapper->SetScalarModeToUseCellFieldData(); + mapper->SetPiece(myId); + mapper->SetNumberOfPieces(numProcs); + mapper->SelectColorArray("Piece"); + mapper->SetScalarRange(0, numProcs - 1); + + vtkNew<vtkActor> actor; + actor->SetMapper(mapper); + renderer->AddActor(actor); + + int retVal; + if (myId == 0) + { + prm->ResetAllCameras(); + renderer->GetActiveCamera()->SetPosition(50.0, 40.0, 30.0); + renderer->GetActiveCamera()->SetFocalPoint(0.0, 0.0, 0.0); + renderer->ResetCameraClippingRange(); + + renWin->Render(); + retVal = vtkRegressionTester::Test(argc, argv, renWin, 10); + if (retVal == vtkRegressionTester::DO_INTERACTOR) + { + prm->StartInteractor(); + } + controller->TriggerBreakRMIs(); + } + else + { + prm->StartServices(); + } + controller->Barrier(); + controller->Broadcast(&retVal, 1, 0); + + controller->Finalize(); + + return !retVal; +} diff --git a/Filters/Sources/Testing/Data/Baseline/TestSpatioTemporalHarmonicsSourceDistributed.png.sha512 b/Filters/Sources/Testing/Data/Baseline/TestSpatioTemporalHarmonicsSourceDistributed.png.sha512 new file mode 100644 index 0000000000000000000000000000000000000000..0e931638dcf328dc6662bdb7d52459ddc04b3d5b --- /dev/null +++ b/Filters/Sources/Testing/Data/Baseline/TestSpatioTemporalHarmonicsSourceDistributed.png.sha512 @@ -0,0 +1 @@ +30000d4f47cf2a23a47d6351ed4cc09b902b5290220bc27cfdcb97ef206af59dcdad34504f1c4759ba4ef37f1cc326f19ec7c5dcafeddefddc058e1ea9dcd29d diff --git a/Filters/Sources/vtk.module b/Filters/Sources/vtk.module index 13232bcec66b04b6f7c4519e7ad7c12f63fe8d1b..8016313f2d438d9947a699be0f0e498bc7dd9319 100644 --- a/Filters/Sources/vtk.module +++ b/Filters/Sources/vtk.module @@ -32,11 +32,14 @@ TEST_DEPENDS VTK::FiltersGeometry VTK::FiltersHyperTree VTK::FiltersModeling + VTK::FiltersParallel VTK::FiltersVerdict VTK::IOParallel VTK::IOXML VTK::InteractionStyle + VTK::ParallelMPI VTK::RenderingFreeType VTK::RenderingOpenGL2 + VTK::RenderingParallel VTK::TestingCore VTK::TestingRendering