11 #ifndef vtk_m_filter_flow_internal_DataSetIntegratorUnsteadyState_h 
   12 #define vtk_m_filter_flow_internal_DataSetIntegratorUnsteadyState_h 
   27 class DataSetIntegratorUnsteadyState
 
   28   : 
public vtkm::filter::flow::internal::DataSetIntegrator<DataSetIntegratorUnsteadyState>
 
   36                                  const vtkm::filter::flow::internal::DataSetIntegrator<
 
   37                                    DataSetIntegratorUnsteadyState>::FieldNameType& fieldName,
 
   41     : 
vtkm::filter::flow::internal::DataSetIntegrator<DataSetIntegratorUnsteadyState>(id,
 
   53   VTKM_CONT inline void DoAdvect(DSIHelperInfo<vtkm::Particle>& b,
 
   57   VTKM_CONT inline void DoAdvect(DSIHelperInfo<vtkm::ChargedParticle>& b,
 
   62   template <
typename ArrayType>
 
   67     if (this->FieldName.GetIndex() == this->FieldName.GetIndexOf<VelocityFieldNameType>())
 
   69       const auto& fieldNm = this->FieldName.Get<VelocityFieldNameType>();
 
   70       auto assoc = this->DataSet1.GetField(fieldNm).GetAssociation();
 
   71       if (assoc != this->DataSet2.GetField(fieldNm).GetAssociation())
 
   73           "Unsteady state velocity fields have differnt associations");
 
  101 template <
typename Gr
idEvalType, 
typename ParticleType>
 
  104 template <
typename ParticleType>
 
  105 class AdvectHelper<UnsteadyStateGridEvalType, ParticleType>
 
  108   static void Advect(
const VelocityFieldType& velField1,
 
  111                      const VelocityFieldType& velField2,
 
  125         velField1, ds1, t1, velField2, ds2, t2, seedArray, stepSize, maxSteps, result);
 
  132         velField1, ds1, t1, velField2, ds2, t2, seedArray, stepSize, maxSteps, result);
 
  138   static void Advect(
const VelocityFieldType& velField1,
 
  141                      const VelocityFieldType& velField2,
 
  155         velField1, ds1, t1, velField2, ds2, t2, seedArray, stepSize, maxSteps, result);
 
  162         velField1, ds1, t1, velField2, ds2, t2, seedArray, stepSize, maxSteps, result);
 
  168   template <
typename WorkletType,
 
  173   static void DoAdvect(
const VelocityFieldType& velField1,
 
  176                        const VelocityFieldType& velField2,
 
  182                        ResultType<ParticleType>& result)
 
  185                                                      UnsteadyStateGridEvalType>;
 
  188     UnsteadyStateGridEvalType eval(ds1, t1, velField1, ds2, t2, velField2);
 
  189     StepperType stepper(eval, stepSize);
 
  190     result = worklet.Run(stepper, seedArray, maxSteps);
 
  196 VTKM_CONT inline void DataSetIntegratorUnsteadyState::DoAdvect(DSIHelperInfo<vtkm::Particle>& b,
 
  205   using AHType = internal::AdvectHelper<internal::UnsteadyStateGridEvalType, vtkm::Particle>;
 
  210     FieldType velField1, velField2;
 
  211     this->GetVelocityFields(velField1, velField2);
 
  213     if (this->IsParticleAdvectionResult())
 
  216       AHType::Advect(velField1,
 
  227       this->UpdateResult(result, b);
 
  229     else if (this->IsStreamlineResult())
 
  232       AHType::Advect(velField1,
 
  243       this->UpdateResult(result, b);
 
  252 VTKM_CONT inline void DataSetIntegratorUnsteadyState::DoAdvect(
 
  253   DSIHelperInfo<vtkm::ChargedParticle>& 
vtkmNotUsed(b),
 
  258     "Unsupported operation : charged particles and electromagnetic fielfs currently only supported " 
  267 #endif //vtk_m_filter_flow_internal_DataSetIntegratorUnsteadyState_h