24#ifndef LATTICE_STATISTICS_HH
25#define LATTICE_STATISTICS_HH
47 if (tmpNumCells == 0) {
48 for (
unsigned iVect=0; iVect<averageVect.size(); ++iVect) {
49 averageVect[iVect] = T();
51 for (
unsigned iVect=0; iVect<sumVect.size(); ++iVect) {
54 for (
unsigned iVect=0; iVect<minVect.size(); ++iVect) {
57 for (
unsigned iVect=0; iVect<maxVect.size(); ++iVect) {
69 for (
unsigned iVect=0; iVect<averageVect.size(); ++iVect) {
70 averageVect[iVect] = (T)1;
75 for (
unsigned iVect=0; iVect<averageVect.size(); ++iVect) {
76 averageVect[iVect] = tmpAv[iVect] / (T)tmpNumCells;
79 for (
unsigned iVect=0; iVect<sumVect.size(); ++iVect) {
80 sumVect[iVect] = tmpSum[iVect];
82 for (
unsigned iVect=0; iVect<minVect.size(); ++iVect) {
83 minVect[iVect] = tmpMin[iVect];
85 for (
unsigned iVect=0; iVect<maxVect.size(); ++iVect) {
86 maxVect[iVect] = tmpMax[iVect];
88 averageVect[avEnergy] *= (T)0.5;
90 numCells = tmpNumCells;
93 for (
unsigned iVect=0; iVect<averageVect.size(); ++iVect) {
96 for (
unsigned iVect=0; iVect<sumVect.size(); ++iVect) {
99 for (
unsigned iVect=0; iVect<minVect.size(); ++iVect) {
100 tmpMin[iVect] = std::numeric_limits<T>::max();
102 for (
unsigned iVect=0; iVect<maxVect.size(); ++iVect) {
103 tmpMax[iVect] = std::numeric_limits<T>::min();
111 T average_rho_, T average_energy_, T maxU_,
size_t numCells_ )
113 averageVect[avRho] = average_rho_;
114 averageVect[avEnergy] = average_energy_;
115 maxVect[maxU] = maxU_;
116 numCells = numCells_;
119 tmpAv[avEnergy] = T();
128 averageVect.resize(2);
133 tmpAv[avEnergy] = T();
137 averageVect[avRho] = (T)1;
138 averageVect[avEnergy] = T();
149 int newSize = tmpAv.size()+1;
150 tmpAv.resize(newSize);
151 averageVect.resize(newSize);
158 int newSize = tmpSum.size()+1;
159 tmpSum.resize(newSize);
160 sumVect.resize(newSize);
167 int newSize = tmpMin.size()+1;
168 tmpMin.resize(newSize);
169 minVect.resize(newSize);
176 int newSize = tmpMax.size()+1;
177 tmpMax.resize(newSize);
178 maxVect.resize(newSize);
186 tmpAv[avEnergy] += uSqr;
187 if (uSqr > tmpMax[maxU]) {
196 tmpNumCells += aggregatable.
nCells;
197 tmpAv[avRho] += aggregatable.
avRho;
198 tmpAv[avEnergy] += aggregatable.
avEnergy;
199 tmpMax[maxU] = std::max(aggregatable.
maxU, tmpMax[maxU]);
206 tmpAv[whichAverage] += value;
213 tmpSum[whichSum] += value;
220 if (value < tmpMin[whichMin]) {
221 tmpMin[whichMin] = value;
229 if (value > tmpMax[whichMax]) {
230 tmpMax[whichMax] = value;
243 return averageVect[avRho];
249 return averageVect[avEnergy];
255 return maxVect[maxU];
268 return averageVect[whichAverage];
275 return sumVect[whichSum];
282 return minVect[whichMin];
289 return maxVect[whichMax];
338 <<
"step=" << iterationStep <<
"; "
339 <<
"t=" << physicalTime <<
"; "
340 <<
"uMax=" << getMaxU() <<
"; "
341 <<
"avEnergy=" << getAverageEnergy() <<
"; "
342 <<
"avRho=" << getAverageRho()
void gatherSum(int whichSum, T value)
T getAverage(int whichAverage) const
void gatherMax(int whichMax, T value)
std::vector< T > & getMinVect()
size_t const & getNumCells() const
T getMax(int whichMax) const
T getMin(int whichMin) const
std::vector< T > & getAverageVect()
void gatherAverage(int whichAverage, T value)
T getSum(int whichSum) const
std::vector< T > & getSumVect()
T getAverageEnergy() const
void gatherMin(int whichMin, T value)
void print(int iterationStep, T physicalTime=-1) const
std::vector< T > & getMaxVect()
void resetTime(size_t value=0)
Interface for post-processing steps – header file.
cpu::simd::Pack< T > sqrt(cpu::simd::Pack< T > value)
Top level namespace for all of OpenLB.
#define OLB_PRECONDITION(COND)
Set of functions commonly used in LB computations – header file.