Code_TYMPAN  4.4.0
Industrial site acoustic simulation
spectrum_matrix.cpp
Go to the documentation of this file.
1 
3 
4 namespace tympan
5 {
6 SpectrumMatrix::SpectrumMatrix(size_t nb_receptors, size_t nb_sources) : _nb_sources(nb_sources)
7 {
9 }
10 
11 SpectrumMatrix::SpectrumMatrix() : _nb_sources(0) {}
12 
14 {
15  // Build matrix
16  resize(matrix.data.size(), matrix._nb_sources);
17  // number of sources
18  _nb_sources = matrix._nb_sources;
19  // Copy spectra
20  for (size_t i = 0; i < data.size(); i++)
21  {
22  for (size_t j = 0; j < _nb_sources; j++)
23  {
24  data[i][j] = matrix.data[i][j];
25  }
26  }
27 }
28 
29 void SpectrumMatrix::resize(size_t nb_receptors, size_t nb_sources)
30 {
32 
33  if (data.size() > 0)
34  {
35  data.clear();
36  }
37 
38  data.reserve(nb_receptors);
39 
40  Spectrum nullSpectrum(0);
41  nullSpectrum.setType(SPECTRE_TYPE_LP);
42  nullSpectrum.setEtat(SPECTRE_ETAT_LIN);
43 
44  for (size_t i = 0; i < nb_receptors; i++)
45  {
46  data.push_back(std::vector<Spectrum>(nb_sources, nullSpectrum));
47  }
48 
49  assert(data.size() == nb_receptors);
50 }
51 
52 const Spectrum& SpectrumMatrix::operator()(size_t receptor_idx, size_t sources_idx) const
53 {
54  assert(receptor_idx < nb_receptors());
55  assert(sources_idx < nb_sources());
56  return data[receptor_idx][sources_idx];
57 }
58 
59 Spectrum& SpectrumMatrix::operator()(size_t receptor_idx, size_t sources_idx)
60 {
61  assert(receptor_idx < nb_receptors());
62  assert(sources_idx < nb_sources());
63  return data[receptor_idx][sources_idx];
64 }
65 
66 void SpectrumMatrix::setSpectre(size_t receptor_idx, size_t sources_idx, Spectrum spectrum)
67 {
68  assert(receptor_idx < nb_receptors());
69  assert(sources_idx < nb_sources());
70  data[receptor_idx][sources_idx] = spectrum;
71 }
72 
73 const std::vector<Spectrum>& SpectrumMatrix::by_receptor(size_t receptor_idx) const
74 {
75  assert(receptor_idx < nb_receptors());
76  return data[receptor_idx];
77 }
78 
80 {
81  assert(receptor_idx < nb_receptors());
82  data[receptor_idx].clear();
83 }
84 } // namespace tympan
void setEtat(TYSpectreEtat etat)
Force the spectrum state (to use carefully ...)
Definition: spectre.h:168
void setType(TYSpectreType type)
Set the spectrum type.
Definition: spectre.h:152
Spectrum matrix N*M used to store results. N is the number of receptors. M is the number of sources.
const std::vector< Spectrum > & by_receptor(size_t receptor_idx) const
Return a vector of Spectrum for a receptor.
size_t nb_sources() const
Number of columns (sources) of the matrix.
SpectrumMatrix()
Default constructor.
void clearReceptor(size_t receptor_idx)
Clear the matrix for the a given receptor.
size_t nb_receptors() const
Number of rows (receptors) of the matrix.
void setSpectre(size_t receptor_idx, size_t sources_idx, Spectrum spectrum)
Set a Spectrum into the matrix.
const Spectrum & operator()(size_t receptor_idx, size_t sources_idx) const
operator()
impl_matrix_t data
Matrix.
void resize(size_t nb_receptors, size_t nb_sources)
Resize the matrix (data is cleared)
size_t receptor_idx
Definition: entities.hpp:398
@ SPECTRE_ETAT_LIN
Definition: spectre.h:46
@ SPECTRE_TYPE_LP
Definition: spectre.h:31