Move the check for 0 inputs. With mpi, 0 input is ok for a rank.

This commit is contained in:
Dave Pugmire 2021-06-23 13:53:56 -04:00
parent 4b2dbfbad2
commit f878ba8dab
7 changed files with 15 additions and 9 deletions

@ -69,7 +69,7 @@ public:
}
protected:
VTKM_CONT virtual void ValidateOptions(const vtkm::cont::PartitionedDataSet& input) const;
VTKM_CONT virtual void ValidateOptions() const;
using DSIType = vtkm::filter::particleadvection::DataSetIntegrator;
VTKM_CONT std::vector<DSIType> CreateDataSetIntegrators(

@ -28,11 +28,8 @@ inline VTKM_CONT FilterParticleAdvection<Derived>::FilterParticleAdvection()
}
template <typename Derived>
void FilterParticleAdvection<Derived>::ValidateOptions(
const vtkm::cont::PartitionedDataSet& input) const
void FilterParticleAdvection<Derived>::ValidateOptions() const
{
if (input.GetNumberOfPartitions() == 0)
throw vtkm::cont::ErrorFilterExecution("No input dataset provided.");
if (this->GetUseCoordinateSystemAsField())
throw vtkm::cont::ErrorFilterExecution("Coordinate system as field not supported");
if (this->Seeds.GetNumberOfValues() == 0)
@ -51,6 +48,9 @@ FilterParticleAdvection<Derived>::CreateDataSetIntegrators(
{
std::vector<vtkm::filter::particleadvection::DataSetIntegrator> dsi;
if (boundsMap.GetTotalNumBlocks() == 0)
throw vtkm::cont::ErrorFilterExecution("No input datasets.");
std::string activeField = this->GetActiveFieldName();
for (vtkm::Id i = 0; i < input.GetNumberOfPartitions(); i++)

@ -51,7 +51,7 @@ public:
vtkm::filter::PolicyBase<DerivedPolicy> policy);
protected:
VTKM_CONT void ValidateOptions(const vtkm::cont::PartitionedDataSet& input) const override;
VTKM_CONT void ValidateOptions(const vtkm::cont::PartitionedDataSet& input) const;
using DSIType = vtkm::filter::particleadvection::TemporalDataSetIntegrator;
VTKM_CONT std::vector<DSIType> CreateDataSetIntegrators(

@ -30,7 +30,7 @@ template <typename Derived>
void FilterTemporalParticleAdvection<Derived>::ValidateOptions(
const vtkm::cont::PartitionedDataSet& input) const
{
this->vtkm::filter::FilterParticleAdvection<Derived>::ValidateOptions(input);
this->vtkm::filter::FilterParticleAdvection<Derived>::ValidateOptions();
if (this->NextDataSet.GetNumberOfPartitions() != input.GetNumberOfPartitions())
throw vtkm::cont::ErrorFilterExecution("Number of partitions do not match");
@ -47,6 +47,9 @@ FilterTemporalParticleAdvection<Derived>::CreateDataSetIntegrators(
std::vector<DSIType> dsi;
std::string activeField = this->GetActiveFieldName();
if (boundsMap.GetTotalNumBlocks() == 0)
throw vtkm::cont::ErrorFilterExecution("No input datasets.");
for (vtkm::Id i = 0; i < input.GetNumberOfPartitions(); i++)
{
vtkm::Id blockId = boundsMap.GetLocalBlockId(i);

@ -36,7 +36,7 @@ inline VTKM_CONT vtkm::cont::PartitionedDataSet ParticleAdvection::PrepareForExe
using AlgorithmType = vtkm::filter::particleadvection::ParticleAdvectionAlgorithm;
using ThreadedAlgorithmType = vtkm::filter::particleadvection::ParticleAdvectionThreadedAlgorithm;
this->ValidateOptions(input);
this->ValidateOptions();
vtkm::filter::particleadvection::BoundsMap boundsMap(input);
auto dsi = this->CreateDataSetIntegrators(input, boundsMap);

@ -36,7 +36,7 @@ inline VTKM_CONT vtkm::cont::PartitionedDataSet Streamline::PrepareForExecution(
using AlgorithmType = vtkm::filter::particleadvection::StreamlineAlgorithm;
using ThreadedAlgorithmType = vtkm::filter::particleadvection::StreamlineThreadedAlgorithm;
this->ValidateOptions(input);
this->ValidateOptions();
vtkm::filter::particleadvection::BoundsMap boundsMap(input);
auto dsi = this->CreateDataSetIntegrators(input, boundsMap);

@ -104,6 +104,9 @@ public:
return blockIDs;
}
vtkm::Id GetTotalNumBlocks() const { return this->TotalNumBlocks; }
vtkm::Id GetLocalNumBlocks() const { return this->LocalNumBlocks; }
private:
void Init(const std::vector<vtkm::cont::DataSet>& dataSets)
{