16 #ifndef __TYACOUSTICMODEL__ 17 #define __TYACOUSTICMODEL__ 22 #include <gtest/gtest_prod.h> 37 virtual void compute(
const std::deque<TYSIntersection>& tabIntersect,
58 TYTabChemin& TabChemins,
double distance,
bool conditionFav =
false)
const;
70 double distance )
const;
134 OSpectre calculAttDiffraction(
const OSegment3D& rayon,
const OSegment3D& penteMoyenne,
const bool& miroir,
const double& re,
const double& epaisseur,
const bool& vertical,
const bool& avantApres,
bool& bDiffOk,
bool conditionFav=
false)
const;
185 FRIEND_TEST(test_TYAcousticModel, calculAttDiffraction);
187 FRIEND_TEST(test_TYAcousticModel, limAttDiffraction);
188 FRIEND_TEST(test_TYAcousticModel, computeCheminReflexion);
206 #endif // __TYACOUSTICMODEL__
void init()
Initialize the acoustic model.
void addEtapeDirectToChemins(const TYEtape &EtapeDirecte, TYTabChemin &TabChemin) const
Add a direct journey to all the paths.
The TYEtape class is used to describe a part (a step) of a path (TYChemin) for the computation of tra...
void computeCheminReflexion(const std::deque< TYSIntersection > &tabIntersect, const OSegment3D &rayon, const tympan::AcousticSource &source, TYTabChemin &TabChemins, double distance) const
Compute the list of path generated by reflection on the vertical walls.
std::vector< OPoint3D > TabPoint3D
OSpectre limAttDiffraction(const OSpectre &sNC, const OSpectre &C) const
Limit the screen attenuation value with a frequency dependent criteria.
OSpectreComplex getReflexionSpectrumAt(const OSegment3D &incident, double length, const OSegment3D &segPente, const tympan::AcousticSource &source) const
Find Reflexion spectrum at point defined by the end of an incident segment.
std::deque< TYChemin > TYTabChemin
TYChemin collection.
virtual void compute(const std::deque< TYSIntersection > &tabIntersect, TYTrajet &trajet, TabPoint3D &ptsTop, TabPoint3D &ptsLeft, TabPoint3D &ptsRight)
virtual ~TYAcousticModel()
This class TYTrajet (journey) links a couple Source-Receptor and a collection of paths, in addition to the direct path.
virtual bool computeCheminsAvecEcran(const OSegment3D &rayon, const tympan::AcousticSource &source, const TabPoint3D &pts, const bool vertical, TYTabChemin &TabChemins, double distance, bool conditionFav=false) const
Compute the segment path from the list of the points of the TYTrajet journey. It takes in account the...
OSpectreComplex _absoNulle
FRIEND_TEST(test_TYAcousticModel, calculAttDiffraction)
TYAcousticModel(TYSolver &solver)
OSpectre calculAttDiffraction(const OSegment3D &rayon, const OSegment3D &penteMoyenne, const bool &miroir, const double &re, const double &epaisseur, const bool &vertical, const bool &avantApres, bool &bDiffOk, bool conditionFav=false) const
Compute the attenuation from the diffraction on the screen.
OSpectre calculC(const double &epaisseur) const
Compute the spectrum of the C factor used in the diffraction calculation.
Interface class for acoustic models.
Representation of one of the most optimal path between source and receptor: S—>R.
TYSolver & _solver
Reference to the solver.
void meanSlope(const OSegment3D &director, OSegment3D &slope) const
Create a segment corresponding to the projection of "director" segment on the ground.
Class to define a segment.
std::deque< TYEtape > TYTabEtape
TYEtape collection.
std::unique_ptr< AtmosphericConditions > pSolverAtmos
Describes an acoustic source.
bool addEtapesSol(const OPoint3D &ptDebut, const OPoint3D &ptFin, const OSegment3D &penteMoyenne, const tympan::AcousticSource &source, const bool &fromSource, const bool &toRecepteur, TYTabEtape &Etapes, double &longueur) const
Compute the different steps from a point to another via a reflection and a direct view...
Acoustic model for the default solver.
bool solve(TYTrajet &trajet)
Compute the source contribution to the point.
void computeCheminSansEcran(const OSegment3D &rayon, const tympan::AcousticSource &source, TYTabChemin &TabChemins, double distance, bool conditionFav=false) const
Compute the list of paths generated by reflection on the ground if there is no screen.
Store acoustic power values for different frequencies.
void computeCheminAPlat(const OSegment3D &rayon, const tympan::AcousticSource &source, TYTabChemin &TabChemins, double distance) const
Compute the list of paths for a perfectly flat and reflective ground.