1 #ifndef VTESTBED_CORE_STATISTICS_HH     2 #define VTESTBED_CORE_STATISTICS_HH     7 #include <vtestbed/base/blitz.hh>     8 #include <vtestbed/core/circular_buffer.hh>     9 #include <vtestbed/core/grid.hh>    10 #include <vtestbed/core/wave_numbers.hh>    25                 Angular_velocity = 10,
    27                 Angular_acceleration = 16,
    28                 Underwater_volume = 19,
    33                 Angular_momentum = 30,
    34                 Number_of_records = 33,
    36                 Surge = 1, Sway = 2, Heave = 3,
    37                 Roll = 4, Pitch = 5, Yaw = 6,
    38                 Velocity_x = 7, Velocity_y = 8, Velocity_z = 9,
    39                 Angular_velocity_x = 10, Angular_velocity_y = 11, Angular_velocity_z = 12,
    40                 Acceleration_x = 13, Acceleration_y = 14, Acceleration_z = 15,
    41                 Angular_acceleration_x = 16,
    42                 Angular_acceleration_y = 17,
    43                 Angular_acceleration_z = 18,
    44                 Wave_length_t = 20, Wave_length_x = 21, Wave_length_y = 22,
    45                 Wave_number_t = 23, Wave_number_x = 24, Wave_number_y = 25,
    46                 Wave_height_t = 26, Wave_height_x = 27, Wave_height_y = 28,
    47                 Angular_momentum_x = 30, Angular_momentum_y = 31, Angular_momentum_z = 32,
    55                 return static_cast<size_type>(Record::Number_of_records);
    72             using array1 = blitz::Array<T,1>;
    73             using array2 = blitz::Array<T,2>;
    75             using shape2 = blitz::TinyVector<int,2>;
    76             using wave_statistics_vector = Wave_statistics_vector<T,3>;
    80             wave_statistics_vector _waves;
    86                 for (
auto& s : this->_series) { s.resize(n); }
    95             record(Record rec, T value) {
    97                 stats[rec].record(value);
   101             record(Record rec, 
const blitz::TinyVector<T,3>& value) {
   102                 auto& series = this->_series;
   103                 auto i = static_cast<size_type>(rec);
   104                 series[i].record(value(0));
   105                 series[i+1].record(value(1));
   106                 series[i+2].record(value(2));
   110             operator[](Record rec)
 const {
   111                 return this->_series[static_cast<size_type>(rec)];
   115             operator[](Record rec) {
   116                 return this->_series[static_cast<size_type>(rec)];
   119             inline pointer begin() { 
return this->_series; }
   121             inline pointer end() { 
return this->begin() + this->size(); }
   122             inline const_pointer end()
 const { 
return this->begin() + this->size(); }
   123             inline size_type series_size()
 const { 
return this->_series[0].size(); }
   130             time_instant_series()
 const {
   131                 return this->operator[](Record::Time);
   135             wavy_surface_series()
 const {
   136                 return this->operator[](Record::Wavy_surface);
   140             inline wave_statistics_vector& waves() { 
return this->_waves; }
   141             inline const wave_statistics_vector& waves()
 const { 
return this->_waves; }
   155 #endif // vim:filetype=cpp 
A region defined by start and end index and lower and upper bound for each dimension.
 
void write_back(std::ostream &out) const
Write the last sample.
 
Fixed-size circular buffer. Used as time series storage.