Code_TYMPAN  4.2.0
Industrial site acoustic simulation
Public Member Functions | Private Member Functions | Private Attributes | List of all members
TYAcousticModel Class Reference

Acoustic model for the default solver. More...

#include <TYAcousticModel.h>

Inheritance diagram for TYAcousticModel:
Inheritance graph
[legend]
Collaboration diagram for TYAcousticModel:
Collaboration graph
[legend]

Public Member Functions

 TYAcousticModel (TYSolver &solver)
 
virtual ~TYAcousticModel ()
 
virtual void compute (const std::deque< TYSIntersection > &tabIntersect, TYTrajet &trajet, TabPoint3D &ptsTop, TabPoint3D &ptsLeft, TabPoint3D &ptsRight)
 
void init ()
 Initialize the acoustic model. More...
 
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 ground reflection. More...
 
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. More...
 
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. More...
 
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. More...
 
OSpectre calculC (const double &epaisseur) const
 Compute the spectrum of the C factor used in the diffraction calculation. More...
 
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. More...
 
OSpectre limAttDiffraction (const OSpectre &sNC, const OSpectre &C) const
 Limit the screen attenuation value with a frequency dependent criteria. More...
 
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. More...
 
void addEtapeDirectToChemins (const TYEtape &EtapeDirecte, TYTabChemin &TabChemin) const
 Add a direct journey to all the paths. More...
 
bool solve (TYTrajet &trajet)
 Compute the source contribution to the point. More...
 
- Public Member Functions inherited from AcousticModelInterface
 AcousticModelInterface ()
 
virtual ~AcousticModelInterface ()
 

Private Member Functions

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. More...
 
void meanSlope (const OSegment3D &director, OSegment3D &slope) const
 Create a segment corresponding to the projection of "director" segment on the ground. More...
 
 FRIEND_TEST (test_TYAcousticModel, calculAttDiffraction)
 
 FRIEND_TEST (test_TYAcousticModel, calculC)
 
 FRIEND_TEST (test_TYAcousticModel, limAttDiffraction)
 
 FRIEND_TEST (test_TYAcousticModel, computeCheminReflexion)
 

Private Attributes

bool _useSol
 
bool _useReflex
 
int _propaCond
 
bool _useAtmo
 
bool _interference
 
double _paramH
 
std::unique_ptr< AtmosphericConditionspSolverAtmos
 
OSpectre _lambda
 
OSpectreComplex _absoNulle
 
TYSolver_solver
 Reference to the solver. More...
 

Detailed Description

Acoustic model for the default solver.

Definition at line 31 of file TYAcousticModel.h.

Constructor & Destructor Documentation

◆ TYAcousticModel()

TYAcousticModel::TYAcousticModel ( TYSolver solver)

Definition at line 30 of file TYAcousticModel.cpp.

Here is the call graph for this function:

◆ ~TYAcousticModel()

TYAcousticModel::~TYAcousticModel ( )
virtual

Definition at line 42 of file TYAcousticModel.cpp.

Member Function Documentation

◆ addEtapeDirectToChemins()

void TYAcousticModel::addEtapeDirectToChemins ( const TYEtape EtapeDirecte,
TYTabChemin TabChemin 
) const

Add a direct journey to all the paths.

Parameters
[in]EtapeDirecteDirect journey.
[out]TabCheminArray of all paths.

◆ addEtapesSol()

bool TYAcousticModel::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.

Parameters
[in]ptDebutStarting point.
[in]ptFinEnding point.
[in]penteMoyenneMean slope.
[in]sourceAcoustic source.
[in]fromSourceBoolean if the starting point is the source.
[in]toRecepteurBoolean if the ending point is the receptor.
[out]EtapesArray of all the computed TYEtape steps.
[out]longueurTotal length of the different steps
Returns
bool true if succeeds; false if not.

Definition at line 610 of file TYAcousticModel.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calculAttDiffraction()

OSpectre TYAcousticModel::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.

Parameters
[in]rayonA segment describing the direct path between source and receptor.
[in]penteMoyenneMean slope between source and receptor
[in]miroirBoolean to indicate if we should use the source (false) or the image source (true) during the walking difference computation
[in]rePath length to take into account for the walking difference computation
[in]epaisseurTotal thickness of the obstacle.
[in]verticalBoolean to indicate we deal with the vertical plane (maximal attenuation is limited)
[in]avantApresBoolean to indicate if we are before (false) or after (true) the obstacle
[out]bDiffOkSet to false if the walking difference is <=0, true otherwise
Returns
Attenuation from the diffraction on the screen.

Definition at line 963 of file TYAcousticModel.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calculC()

OSpectre TYAcousticModel::calculC ( const double &  epaisseur) const

Compute the spectrum of the C factor used in the diffraction calculation.

Parameters
epaisseurTotal thickness of the obstacle.
Returns
A OSpectre giving the correction coefficient for each frequency.

Definition at line 936 of file TYAcousticModel.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ compute()

void TYAcousticModel::compute ( const std::deque< TYSIntersection > &  tabIntersect,
TYTrajet trajet,
TabPoint3D ptsTop,
TabPoint3D ptsLeft,
TabPoint3D ptsRight 
)
virtual

Definition at line 71 of file TYAcousticModel.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeCheminAPlat()

void TYAcousticModel::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.

Parameters
[in]rayonA segment describing the acoustic ray.
[in]sourceThe acoustic source.
[out]TabCheminsPaths list of the journey generated.
[out]distanceJourney distance

Definition at line 143 of file TYAcousticModel.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeCheminReflexion()

void TYAcousticModel::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.

Parameters
[in]tabIntersectArray of intersections
[in]rayonA segment describing the acoustic ray.
[in]sourceThe acoustic source.
[out]TabCheminsPaths list of the journey generated by reflection.
[out]distanceJourney distance

Definition at line 807 of file TYAcousticModel.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeCheminSansEcran()

void TYAcousticModel::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.

Parameters
[in]rayonA segment describing the acoustic ray.
[in]sourceThe acoustic source.
[out]TabCheminsPaths list of the journey generated (1 or 2 under favorables conditions).
[out]distanceJourney distance

Definition at line 234 of file TYAcousticModel.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeCheminsAvecEcran()

bool TYAcousticModel::computeCheminsAvecEcran ( const OSegment3D rayon,
const tympan::AcousticSource source,
const TabPoint3D pts,
const bool  vertical,
TYTabChemin TabChemins,
double  distance,
bool  conditionFav = false 
) const
virtual

Compute the segment path from the list of the points of the TYTrajet journey. It takes in account the ground reflection.

Parameters
[in]rayonA segment describing the acoustic ray.
[in]sourceThe acoustic source.
[in]ptsThe list of points of the journey.
[in]verticalboolean to indicate we deal with the vertical plane
[out]TabCheminsPaths list of the journey
[out]distanceJourney distance
Returns
true if succeeds; false otherwise.

Definition at line 443 of file TYAcousticModel.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FRIEND_TEST() [1/4]

TYAcousticModel::FRIEND_TEST ( test_TYAcousticModel  ,
calculAttDiffraction   
)
private

◆ FRIEND_TEST() [2/4]

TYAcousticModel::FRIEND_TEST ( test_TYAcousticModel  ,
calculC   
)
private

◆ FRIEND_TEST() [3/4]

TYAcousticModel::FRIEND_TEST ( test_TYAcousticModel  ,
limAttDiffraction   
)
private

◆ FRIEND_TEST() [4/4]

TYAcousticModel::FRIEND_TEST ( test_TYAcousticModel  ,
computeCheminReflexion   
)
private

◆ getReflexionSpectrumAt()

OSpectreComplex TYAcousticModel::getReflexionSpectrumAt ( const OSegment3D incident,
double  length,
const OSegment3D segPente,
const tympan::AcousticSource source 
) const
private

Find Reflexion spectrum at point defined by the end of an incident segment.

Definition at line 1106 of file TYAcousticModel.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init()

void TYAcousticModel::init ( )

Initialize the acoustic model.

Definition at line 47 of file TYAcousticModel.cpp.

Here is the call graph for this function:

◆ limAttDiffraction()

OSpectre TYAcousticModel::limAttDiffraction ( const OSpectre sNC,
const OSpectre C 
) const

Limit the screen attenuation value with a frequency dependent criteria.

Parameters
sNCNon corrected spectrum
C

Definition at line 1044 of file TYAcousticModel.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ meanSlope()

void TYAcousticModel::meanSlope ( const OSegment3D director,
OSegment3D slope 
) const
private

Create a segment corresponding to the projection of "director" segment on the ground.

Definition at line 1163 of file TYAcousticModel.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ solve()

bool TYAcousticModel::solve ( TYTrajet trajet)

Compute the source contribution to the point.

Parameters
trajetJourney

Definition at line 1077 of file TYAcousticModel.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ _absoNulle

OSpectreComplex TYAcousticModel::_absoNulle
private

Definition at line 199 of file TYAcousticModel.h.

◆ _interference

bool TYAcousticModel::_interference
private

Definition at line 193 of file TYAcousticModel.h.

◆ _lambda

OSpectre TYAcousticModel::_lambda
private

Definition at line 198 of file TYAcousticModel.h.

◆ _paramH

double TYAcousticModel::_paramH
private

Definition at line 194 of file TYAcousticModel.h.

◆ _propaCond

int TYAcousticModel::_propaCond
private

Definition at line 191 of file TYAcousticModel.h.

◆ _solver

TYSolver& TYAcousticModel::_solver
private

Reference to the solver.

Definition at line 203 of file TYAcousticModel.h.

◆ _useAtmo

bool TYAcousticModel::_useAtmo
private

Definition at line 192 of file TYAcousticModel.h.

◆ _useReflex

bool TYAcousticModel::_useReflex
private

Definition at line 190 of file TYAcousticModel.h.

◆ _useSol

bool TYAcousticModel::_useSol
private

Definition at line 189 of file TYAcousticModel.h.

◆ pSolverAtmos

std::unique_ptr<AtmosphericConditions> TYAcousticModel::pSolverAtmos
private

Definition at line 196 of file TYAcousticModel.h.


The documentation for this class was generated from the following files: