DamBreak++ Wave Simulator 0.3
DamBreak++ Simulation Framework
Loading...
Searching...
No Matches
dbpp_PhysicalMeasurement.h
Go to the documentation of this file.
1#pragma once
2
3// C++ includes
4#include <list>
5#include <tuple>
6#include <map>
7#include <unordered_map> // fast for random access
8#include <optional>
9// SfxBase19 include
10#include "include/Sfx_DefineTypes.h"
11
12
13namespace dbpp { class PhysicalSystem; }
14
15// Design Note
16// Proof-of-concept we don't bother ... for now we keep everything simple
17// just want to go all through process and save physical measure in file.
18// It's about it!!! anyway it will evolve
19
20namespace dbpp
21{
29 {
31 using sectionMeasure = std::tuple< unsigned/*section id*/, float64/*x-coord*/, float64/*A*/, float64/*Q*/>;
33 using ListMeasure = std::list<sectionMeasure>;
37 using mapMeasureValue = std::map<unsigned, sectionMeasure>;
41 using umapMeasureValues = std::unordered_map<unsigned, sectionMeasure>;
42 public:
51 virtual void take( const PhysicalSystem* aPhysys);
56 void setTimeStamp( float64 aTimeStamp) { m_timeStamp = aTimeStamp; }
61 float64 getTimeStamp() const noexcept { return m_timeStamp;}
66 std::optional<float64> getA( unsigned int aSectId) const;
71 std::optional<float64> getQ( unsigned int aSectId) const;
77 sectionMeasure getMeasuredValues( unsigned int aSectId) const;
82 std::size_t getNumberOfMeasuresTaken() const { return m_numberOfSections; }
83 private:
84 // float64 m_A; /**< Water level of the cross-section*/
85 // float64 m_Q; /**< Discharge of the cross-section*/
90 std::size_t m_numberOfSections{};
91 };
92} // End of namespace
virtual void take(const PhysicalSystem *aPhysys)
Physical quantity measured, could be energy, Froude number, ... whatever that ca be measure.
Definition dbpp_PhysicalMeasurement.cpp:8
umapMeasureValues m_umapValues
Definition dbpp_PhysicalMeasurement.h:89
std::list< sectionMeasure > ListMeasure
alias
Definition dbpp_PhysicalMeasurement.h:33
std::size_t m_numberOfSections
Definition dbpp_PhysicalMeasurement.h:90
PhysicalMeasurement()=default
default ctor
sectionMeasure getMeasuredValues(unsigned int aSectId) const
Measur for a given section.
Definition dbpp_PhysicalMeasurement.cpp:114
std::unordered_map< unsigned, sectionMeasure > umapMeasureValues
unordered map since main use is in random access
Definition dbpp_PhysicalMeasurement.h:41
float64 m_timeStamp
Definition dbpp_PhysicalMeasurement.h:86
std::tuple< unsigned, float64, float64, float64 > sectionMeasure
alias
Definition dbpp_PhysicalMeasurement.h:31
std::map< unsigned, sectionMeasure > mapMeasureValue
map of physical measure (each section flow)
Definition dbpp_PhysicalMeasurement.h:37
void setTimeStamp(float64 aTimeStamp)
time stamp of physical measure (correspond simulation time in our case)
Definition dbpp_PhysicalMeasurement.h:56
std::optional< float64 > getA(unsigned int aSectId) const
Discharge of the cross - section.
Definition dbpp_PhysicalMeasurement.cpp:62
float64 getTimeStamp() const noexcept
time stamp of physical measure(correspond simulation time in our case)
Definition dbpp_PhysicalMeasurement.h:61
ListMeasure m_listMeasure
Definition dbpp_PhysicalMeasurement.h:87
mapMeasureValue m_mapMeasure
Definition dbpp_PhysicalMeasurement.h:88
std::size_t getNumberOfMeasuresTaken() const
Physical measure on the sytem.
Definition dbpp_PhysicalMeasurement.h:82
std::optional< float64 > getQ(unsigned int aSectId) const
Discharge of the cross - section.
Definition dbpp_PhysicalMeasurement.cpp:88
Physical system made of physical objects under study and described by the state variables....
Definition dbpp_PhysicalSystem.h:32
Definition DamBreakProb.h:15
double float64
Definition dbpp_LDeltaOperator.h:12