Fix for corner case in particle advection.

This commit is contained in:
Dave Pugmire 2021-08-02 13:39:32 -04:00
parent 9007c97c4c
commit 4b0896bd8c
2 changed files with 16 additions and 6 deletions

@ -583,7 +583,6 @@ void TestStreamlineFilters()
FilterType::STREAMLINE,
FilterType::PATHLINE,
FilterType::PATH_PARTICLE };
for (int n = 1; n < 3; n++)
{
for (auto useGhost : flags)
@ -628,6 +627,21 @@ void TestStreamlineFilters()
for (auto useSL : flags)
TestStreamlineFile(fishFile, fishPts, fishStep, 100, fishEndPts, useSL);
/*
//ARMWind corner case of particle near boundary.
std::string amrWindFile =
vtkm::cont::testing::Testing::DataPath("rectilinear/amr_wind_flowfield.vtk.vtk");
vtkm::FloatDefault amrWindStep = 0.001;
std::vector<vtkm::Vec3f> amrWindPts, amrWindEndPts;
amrWindPts.push_back(
vtkm::Vec3f(0.053217993470017745, 0.034506499099396459, 0.057097713925011492));
amrWindEndPts.push_back(vtkm::Vec3f(0.05712112784, 0.03450008854, 0.02076501213));
for (auto useSL : flags)
TestStreamlineFile(amrWindFile, amrWindPts, amrWindStep, 10000, amrWindEndPts, useSL);
*/
}
}

@ -141,13 +141,9 @@ public:
outpos = currPos + stepRange[1] * particle.Velocity(currValue, stepRange[1]);
time += stepRange[1];
// Get the evaluation status for the point that is *just* outside of the data.
// Get the evaluation status for the point that is moved by the euler step.
evalStatus = this->Evaluator.Evaluate(outpos, time, currValue);
// The eval should fail, and the point should be outside either spatially or temporally.
VTKM_ASSERT(evalStatus.CheckFail() &&
(evalStatus.CheckSpatialBounds() || evalStatus.CheckTemporalBounds()));
IntegratorStatus status(evalStatus);
status.SetOk(); //status is ok.