42 const std::vector<double> &integrateWithinVolumeMax = {FLT_MAX, FLT_MAX, FLT_MAX});
76 auto GetPropertyVarNames() const -> std::vector<std::
string>;
79 std::vector<std::vector<
Particle>> _streams;
80 std::
string _valueVarName;
81 std::vector<std::
string> _propertyVarNames;
83 const
float _lowerAngle, _upperAngle;
84 float _lowerAngleCos, _upperAngleCos;
85 std::vector<
int> _separatorCount;
90 std::array<
bool, 3> _isPeriodic;
91 std::array<glm::vec2, 3> _periodicBounds;
107 float _applyPeriodic(
float val,
float min,
float max) const;
110 void _printNonZero(
int rtn, const
char *file, const
char *func,
int line) const;
112 void _calculateParticleIntegratedValue(
Particle &p, const
Particle &prev, const
Field *scalarField, const
bool skipNonZero, const
float distScale,
113 const std::vector<
double> &integrateWithinVolumeMin, const std::vector<
double> &integrateWithinVolumeMax) const;
114 static
bool _isParticleInsideVolume(const
Particle &p, const std::vector<
double> &min, const std::vector<
double> &max);
size_t GetNumberOfStreams() const
int AdvectSteps(Field *velocityField, double deltaT, size_t maxSteps, bool fixedStepSize, ADVECTION_METHOD method=ADVECTION_METHOD::RK4)
void UseSeedParticles(const std::vector< Particle > &seeds)
void SetXPeriodicity(bool, float min, float max)
void SetAllStreamValuesToFinalValue(int realNSamples)
int CalculateParticleValues(Field *scalarField, bool skipNonZero)
void ResetParticleValues()
void SetYPeriodicity(bool, float min, float max)
void CalculateParticleHistogram(std::vector< double > &bounds, std::vector< long > &bins)
auto GetValueVarName() const -> std::string
const std::vector< Particle > & GetStreamAt(size_t i) const
size_t GetMaxNumOfPart() const
int CalculateParticleIntegratedValues(Field *scalarField, const bool skipNonZero, const float distScale=1.f, const std::vector< double > &integrateWithinVolumeMin={-FLT_MAX, -FLT_MAX, -FLT_MAX}, const std::vector< double > &integrateWithinVolumeMax={FLT_MAX, FLT_MAX, FLT_MAX})
void ClearParticleProperties()
void RemoveParticleProperty(const std::string &)
void SetZPeriodicity(bool, float min, float max)
int CalculateParticleProperties(Field *scalarField)
int AdvectTillTime(Field *velocityField, double startT, double deltaT, double targetT, bool fixedStepSize, ADVECTION_METHOD method=ADVECTION_METHOD::RK4)