4#ifndef DUNE_PDELAB_BACKEND_ISTL_MATRIXFREE_SOLVERSTATISTICS_HH
5#define DUNE_PDELAB_BACKEND_ISTL_MATRIXFREE_SOLVERSTATISTICS_HH
46 : data(), comm(comm_) {}
66 const size_t size()
const {
67 size_t local_size = data.size();
68 size_t global_size = comm.sum(local_size);
76 const double avg()
const {
78 size_t local_size = data.size();
79 double global_size = (double) comm.sum(local_size);
80 double s_global = comm.sum(s_local);
81 return s_global / global_size;
91 double ss_local = (double) std::inner_product(data.begin(),data.end(),
93 size_t local_size = data.size();
94 double global_size = (double) comm.sum(local_size);
95 double s_global = comm.sum(s_local);
96 double ss_global = comm.sum(ss_local);
97 return sqrt(1./(global_size-1.)*(ss_global-s_global*s_global/global_size));
105 T min_local = *std::min_element(data.begin(),data.end());
106 T min_global = comm.min(min_local);
115 T max_local = *std::max_element(data.begin(),data.end());
116 T max_global = comm.max(max_local);
140 template <
typename T>
142 os <<
"#calls = " << result.size;
143 os <<
", min = " << std::fixed << result.minimum;
144 os <<
", avg = " << std::fixed << result.avg;
145 os <<
", stddev = " << std::fixed << result.stddev;
146 os <<
", max = " << std::fixed << result.maximum;
Class for collecting statistics over several invocations.
Definition: solverstatistics.hh:39
const size_t size() const
Total number of calls.
Definition: solverstatistics.hh:66
const double stddev() const
Calculate standard deviation.
Definition: solverstatistics.hh:88
const StatisticsResult< T > result() const
Convert to statistics result.
Definition: solverstatistics.hh:122
SolverStatistics(const Dune::CollectiveCommunication< MPI_Comm > &comm_)
Create new instance of class.
Definition: solverstatistics.hh:45
void append(const T x)
Add new data point.
Definition: solverstatistics.hh:52
void clear()
clear out data
Definition: solverstatistics.hh:58
const T max() const
Calculate global maximum.
Definition: solverstatistics.hh:114
const T min() const
Calculate global minimum.
Definition: solverstatistics.hh:104
const double avg() const
Calculate global average.
Definition: solverstatistics.hh:76
constexpr T accumulate(Range &&range, T value, F &&f)
Accumulate values.
Definition: hybridutilities.hh:289
Dune namespace.
Definition: alignedallocator.hh:11
Statistics result structure.
Definition: solverstatistics.hh:23