18#ifndef QGSMESHCALCUTILS_H
19#define QGSMESHCALCUTILS_H
50class CORE_EXPORT QgsMeshCalcUtils
63 QgsMeshCalcUtils( QgsMeshLayer *layer,
const QStringList &usedGroupNames,
double startTime,
double endTime );
80 Q_DECL_DEPRECATED QgsMeshCalcUtils( QgsMeshLayer *layer,
const QStringList &usedGroupNames,
const QgsInterval &relativeTime );
101 QgsMeshLayer *layer,
const QStringList &usedGroupNames,
const QStringList &usedGroupNamesForAggregate,
const QgsInterval &relativeTime,
const QgsInterval &startTime,
const QgsInterval &endTime
106 bool isValid()
const;
109 const QgsMeshLayer *layer()
const;
112 std::shared_ptr<const QgsMeshMemoryDatasetGroup> group(
const QString &groupName )
const;
115 void ones( QgsMeshMemoryDatasetGroup &group1 )
const;
118 void nodata( QgsMeshMemoryDatasetGroup &group1 )
const;
121 std::shared_ptr<QgsMeshMemoryDataset> number(
double val,
double time )
const;
124 void copy( QgsMeshMemoryDatasetGroup &group1,
const QString &groupName,
bool forAggregate =
false )
const;
127 std::shared_ptr<QgsMeshMemoryDataset> copy( std::shared_ptr<const QgsMeshMemoryDataset> dataset0 )
const;
130 void transferDatasets( QgsMeshMemoryDatasetGroup &group1, QgsMeshMemoryDatasetGroup &group2 )
const;
133 void expand( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
136 void number( QgsMeshMemoryDatasetGroup &group1,
double val )
const;
139 void addIf( QgsMeshMemoryDatasetGroup &trueGroup,
const QgsMeshMemoryDatasetGroup &falseGroup,
const QgsMeshMemoryDatasetGroup &condition )
const;
142 void filter( QgsMeshMemoryDatasetGroup &group1,
const QgsRectangle &extent )
const;
145 void filter( QgsMeshMemoryDatasetGroup &group1,
const QgsGeometry &mask )
const;
148 void logicalNot( QgsMeshMemoryDatasetGroup &group1 )
const;
151 void changeSign( QgsMeshMemoryDatasetGroup &group1 )
const;
154 void abs( QgsMeshMemoryDatasetGroup &group1 )
const;
157 void sumAggregated( QgsMeshMemoryDatasetGroup &group1 )
const;
160 void minimumAggregated( QgsMeshMemoryDatasetGroup &group1 )
const;
163 void maximumAggregated( QgsMeshMemoryDatasetGroup &group1 )
const;
166 void averageAggregated( QgsMeshMemoryDatasetGroup &group1 )
const;
169 void add( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
172 void subtract( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
175 void multiply( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
178 void divide( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
181 void power( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
184 void equal( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
187 void notEqual( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
190 void greaterThan( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
193 void lesserThan( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
196 void lesserEqual( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
199 void greaterEqual( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
202 void logicalAnd( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
205 void logicalOr( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
208 void minimum( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
211 void maximum( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
220 double ffilter(
double val1,
double filter )
const;
221 double fadd(
double val1,
double val2 )
const;
222 double fsubtract(
double val1,
double val2 )
const;
223 double fmultiply(
double val1,
double val2 )
const;
224 double fdivide(
double val1,
double val2 )
const;
225 double fpower(
double val1,
double val2 )
const;
226 double fequal(
double val1,
double val2 )
const;
227 double fnotEqual(
double val1,
double val2 )
const;
228 double fgreaterThan(
double val1,
double val2 )
const;
229 double flesserThan(
double val1,
double val2 )
const;
230 double flesserEqual(
double val1,
double val2 )
const;
231 double fgreaterEqual(
double val1,
double val2 )
const;
232 double flogicalAnd(
double val1,
double val2 )
const;
233 double flogicalOr(
double val1,
double val2 )
const;
234 double flogicalNot(
double val1 )
const;
235 double fchangeSign(
double val1 )
const;
236 double fmin(
double val1,
double val2 )
const;
237 double fmax(
double val1,
double val2 )
const;
238 double fabs(
double val1 )
const;
239 double fsumAggregated( QVector<double> &vals )
const;
240 double fminimumAggregated( QVector<double> &vals )
const;
241 double fmaximumAggregated( QVector<double> &vals )
const;
242 double faverageAggregated( QVector<double> &vals )
const;
251 std::shared_ptr<QgsMeshMemoryDatasetGroup> createMemoryDatasetGroup(
252 const QString &datasetGroupName,
const QgsInterval &relativeTime = QgsInterval(),
const QgsInterval &startTime = QgsInterval(),
const QgsInterval &endTime = QgsInterval()
263 std::shared_ptr<const QgsMeshMemoryDatasetGroup> group(
const QString &groupName,
bool isAggregate )
const;
268 std::shared_ptr<QgsMeshMemoryDataset> createMemoryDataset(
const QgsMeshMemoryDatasetGroup &grp )
const;
273 std::shared_ptr<QgsMeshMemoryDataset> createMemoryDataset(
const QgsMeshDatasetIndex &datasetIndex )
const;
283 std::shared_ptr<QgsMeshMemoryDataset> canditateDataset( QgsMeshMemoryDatasetGroup &group,
int datasetIndex )
const;
288 std::shared_ptr<const QgsMeshMemoryDataset> constCandidateDataset(
const QgsMeshMemoryDatasetGroup &group,
int datasetIndex )
const;
293 int datasetCount(
const QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2 )
const;
300 void activate( std::shared_ptr<QgsMeshMemoryDataset> dataset, std::shared_ptr<const QgsMeshMemoryDataset> refDataset =
nullptr )
const;
303 void activate( QgsMeshMemoryDatasetGroup &group )
const;
306 void populateSpatialFilter( QgsMeshMemoryDatasetGroup &filter,
const QgsRectangle &extent )
const;
309 void populateMaskFilter( QgsMeshMemoryDatasetGroup &filter,
const QgsGeometry &mask )
const;
312 void func1( QgsMeshMemoryDatasetGroup &group, std::function<
double(
double )> func )
const;
315 void func2( QgsMeshMemoryDatasetGroup &group1,
const QgsMeshMemoryDatasetGroup &group2, std::function<
double(
double,
double )> func )
const;
318 void funcAggr( QgsMeshMemoryDatasetGroup &group1, std::function<
double( QVector<double> & )> func )
const;
320 const QgsTriangularMesh *triangularMesh()
const;
321 const QgsMesh *nativeMesh()
const;
322 void updateMesh()
const;
324 QgsMeshLayer *mMeshLayer;
328 QVector<double> mTimes;
329 QMap< QString, std::shared_ptr<QgsMeshMemoryDatasetGroup> > mDatasetGroupMap;
330 QMap< QString, std::shared_ptr<QgsMeshMemoryDatasetGroup> > mDatasetGroupMapForAggregate;
332 bool mIgnoreTime =
false;