From 5bd6046b95f7b5a17cd24f2399d3f1eb22fd171c Mon Sep 17 00:00:00 2001 From: Abhishek Yenpure Date: Mon, 5 Aug 2019 13:15:10 -0700 Subject: [PATCH] Adding LCS example --- examples/lagrangian_structures/CMakeLists.txt | 14 +++++++ .../LagrangianStructures.cxx | 41 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 examples/lagrangian_structures/CMakeLists.txt create mode 100644 examples/lagrangian_structures/LagrangianStructures.cxx diff --git a/examples/lagrangian_structures/CMakeLists.txt b/examples/lagrangian_structures/CMakeLists.txt new file mode 100644 index 000000000..59cb04f72 --- /dev/null +++ b/examples/lagrangian_structures/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.8...3.14 FATAL_ERROR) +project(ParticleAdvection CXX) + +#Find the VTK-m package +find_package(VTKm REQUIRED QUIET) + +add_executable(ftle LagrangianStructures.cxx) +target_link_libraries(ftle PRIVATE vtkm_cont vtkm_worklet) +vtkm_add_target_information(ftle + MODIFY_CUDA_FLAGS + DEVICE_SOURCES LagrangianStructures.cxx) +if(TARGET vtkm::tbb) + target_compile_definitions(ftle PRIVATE BUILDING_TBB_VERSION) +endif() diff --git a/examples/lagrangian_structures/LagrangianStructures.cxx b/examples/lagrangian_structures/LagrangianStructures.cxx new file mode 100644 index 000000000..ebef3da11 --- /dev/null +++ b/examples/lagrangian_structures/LagrangianStructures.cxx @@ -0,0 +1,41 @@ +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +int main(int argc, char** argv) +{ + if (argc < 3) + { + std::cout << "Usage : flte " << std::endl; + } + std::string datasetName(argv[1]); + std::string variableName(argv[2]); + + std::cout << "Reading input dataset" << std::endl; + vtkm::cont::DataSet input; + vtkm::io::reader::VTKDataSetReader reader(datasetName); + input = reader.ReadDataSet(); + std::cout << "Read input dataset" << std::endl; + + vtkm::filter::LagrangianStructures lcsFilter; + lcsFilter.SetStepSize(0.025); + lcsFilter.SetNumberOfSteps(500); + lcsFilter.SetAdvectionTime(0.025 * 500); + lcsFilter.SetActiveField(variableName); + + vtkm::cont::DataSet output = lcsFilter.Execute(input); + vtkm::io::writer::VTKDataSetWriter writer("out.vtk"); + writer.WriteDataSet(output); + std::cout << "Written output dataset" << std::endl; + + return 0; +}