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 {
77 double s_local = (double) std::accumulate(data.begin(),data.end(),0);
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;
89 double s_local = (double) std::accumulate(data.begin(),data.end(),0);
90 double ss_local = (double) std::inner_product(data.begin(),data.end(),
92 size_t local_size = data.size();
93 double global_size = (double) comm.sum(local_size);
94 double s_global = comm.sum(s_local);
95 double ss_global = comm.sum(ss_local);
96 return sqrt(1./(global_size-1.)*(ss_global-s_global*s_global/global_size));
104 T min_local = *std::min_element(data.begin(),data.end());
105 T min_global = comm.min(min_local);
114 T max_local = *std::max_element(data.begin(),data.end());
115 T max_global = comm.max(max_local);
135 const Dune::CollectiveCommunication<MPI_Comm>& comm;
139 template <
typename T>
141 os <<
"#calls = " << result.
size;
142 os <<
", min = " << std::fixed << result.
minimum;
143 os <<
", avg = " << std::fixed << result.
avg;
144 os <<
", stddev = " << std::fixed << result.
stddev;
145 os <<
", max = " << std::fixed << result.
maximum;
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28
std::ostream & operator<<(std::ostream &os, const StatisticsResult< T > &result)
Write statistics result to out stream.
Definition: solverstatistics.hh:140
Statistics result structure.
Definition: solverstatistics.hh:23
double stddev
Definition: solverstatistics.hh:27
T maximum
Definition: solverstatistics.hh:25
T minimum
Definition: solverstatistics.hh:24
size_t size
Definition: solverstatistics.hh:28
double avg
Definition: solverstatistics.hh:26
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
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:113
const T min() const
Calculate global minimum.
Definition: solverstatistics.hh:103
const StatisticsResult< T > result() const
Convert to statistics result.
Definition: solverstatistics.hh:121
const double avg() const
Calculate global average.
Definition: solverstatistics.hh:76