|
Code_TYMPAN
4.4.0
Industrial site acoustic simulation
|
Acoustic model for the default solver. More...
#include <TYAcousticModel.h>


Public Member Functions | |
| TYAcousticModel (TYSolver &solver) | |
| virtual | ~TYAcousticModel () |
| virtual void | compute (const std::deque< TYSIntersection > &tabIntersect, TYTrajet &trajet, TabPoint3D &ptsTop, TabPoint3D &ptsLeft, TabPoint3D &ptsRight) |
| Main entry point, trigger acoustic computations. More... | |
| 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, const bool left) const |
| Compute barrier attenuation effect on the direct path for the considered geometrical path (top, left or right) More... | |
| void | computeCheminReflexion (const std::deque< TYSIntersection > &tabIntersect, const OSegment3D &ray, 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 std::deque< TYSIntersection > &tabIntersect, const OSegment3D &rayon, const tympan::AcousticSource &source, TYTabChemin &TabChemins, double distance, bool conditionFav=false) const |
| Compute the main path between source and receptor. In 9613 solver, this path includes all attenuation effects, except reflexion one. 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... | |
| OSpectreOctave | calculC3 (const double &epaisseur) const |
| Compute the spectrum of the C3 factor used in the diffraction calculation. More... | |
| OSpectreOctave | calculAttDiffraction (const OSegment3D &ray, const double &re, const double &dss, const double &dsr, const double &width, const bool &vertical) const |
| Compute the attenuation from the diffraction on the screen. More... | |
| OSpectreOctave | limAttDiffraction (const OSpectreOctave &sNC, const OSpectreOctave &C) const |
| Limit the screen attenuation value with a frequency dependent criteria. More... | |
| bool | addStep (const OPoint3D &ptStart, const OPoint3D &ptEnd, const tympan::AcousticSource &source, const bool &fromSource, TYTabEtape &Etapes) const |
| Compute the different steps from a point to another via a reflection and a direct view. More... | |
| bool | getGroundfactors (const std::deque< TYSIntersection > &tabIntersect, const OSegment3D &ray2D, double hs, double hr, double &Gs, double &Gm, double &Gr) const |
| Get ground factors for source, middle and receptor zones. More... | |
| bool | getGroundfactors (const std::deque< TYSIntersection > &tabIntersectUpSegment, const std::deque< TYSIntersection > &tabIntersectDownSegment, const OSegment3D &SO2D, const OSegment3D &OR2D, double hs, double hr, double &Gs, double &Gm, double &Gr) const |
| Get ground factors for source, middle and receptor zones for a reflected path. More... | |
| OSpectreOctave | computeEffectiveBarAttenuation (const OSpectreOctave &Abar_top, const OSpectreOctave &Abar_left, const OSpectreOctave &Abar_right) |
| OPlan | buildMeanSlopePlan (const OSegment3D &penteMoyenne) const |
| bool | solve (TYTrajet &trajet) |
| Compute the source contributions to the receptor point. More... | |
| 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 | |
| OSpectreOctave | 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... | |
| bool | computeSegmentEdgesHeights (double &hauteurA, double &hauteurB, const OSegment3D &meanSlope, const OSegment3D &ray) const |
| Compute heights relative to real ground, of the edges of a segment. More... | |
| bool | computeGZone (const OPoint3D &ptDebut, const OPoint3D &ptFin, double &GZone, double &dpZone, const std::deque< TYSIntersection > &tabIntersect) const |
| Compute GZone and dpZone for the segment between ptDebut and ptFin. More... | |
| 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< AtmosphericConditions > | pSolverAtmos |
| OSpectreOctave | _lambda |
| OSpectreOctave | _absoNulle |
| TYSolver & | _solver |
| Reference to the solver. More... | |
| OSpectre | _lambda |
| OSpectreComplex | _absoNulle |
Acoustic model for the default solver.
Definition at line 32 of file TYAcousticModel.h.
| TYAcousticModel::TYAcousticModel | ( | TYSolver & | solver | ) |
|
virtual |
Definition at line 38 of file TYAcousticModel.cpp.
| TYAcousticModel::TYAcousticModel | ( | TYSolver & | solver | ) |
|
virtual |
| void TYAcousticModel::addEtapeDirectToChemins | ( | const TYEtape & | EtapeDirecte, |
| TYTabChemin & | TabChemin | ||
| ) | const |
Add a direct journey to all the paths.
| [in] | EtapeDirecte | Direct journey. |
| [out] | TabChemin | Array of all paths. |
| 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.
| [in] | ptDebut | Starting point. |
| [in] | ptFin | Ending point. |
| [in] | penteMoyenne | Mean slope. |
| [in] | source | Acoustic source. |
| [in] | fromSource | Boolean if the starting point is the source. |
| [in] | toRecepteur | Boolean if the ending point is the receptor. |
| [out] | Etapes | Array of all the computed TYEtape steps. |
| [out] | longueur | Total length of the different steps |
true if succeeds; false if not. Definition at line 633 of file TYAcousticModel.cpp.


| bool TYAcousticModel::addStep | ( | const OPoint3D & | ptStart, |
| const OPoint3D & | ptEnd, | ||
| const tympan::AcousticSource & | source, | ||
| const bool & | fromSource, | ||
| TYTabEtape & | Etapes | ||
| ) | const |
Compute the different steps from a point to another via a reflection and a direct view.
| [in] | ptStart | Starting point. |
| [in] | ptEnd | Ending point. |
| [in] | source | Acoustic source. |
| [in] | fromSource | Boolean if the starting point is the source. |
| [out] | Etapes | Array of all the computed TYEtape steps. |
true if succeeds; false if not. Definition at line 331 of file TYAcousticModel.cpp.


| OPlan TYAcousticModel::buildMeanSlopePlan | ( | const OSegment3D & | penteMoyenne | ) | const |
Definition at line 648 of file TYAcousticModel.cpp.
| OSpectreOctave TYAcousticModel::calculAttDiffraction | ( | const OSegment3D & | ray, |
| const double & | re, | ||
| const double & | dss, | ||
| const double & | dsr, | ||
| const double & | width, | ||
| const bool & | vertical | ||
| ) | const |
Compute the attenuation from the diffraction on the screen.
| [in] | ray | A segment describing the direct path between source and receptor. |
| [in] | re | Path length to take into account for the walking difference computation |
| [in] | dss | Length between source and first edge of the obstacle |
| [in] | dsr | Length between last edge of the obstacle and receptor |
| [in] | width | Total width of the obstacle. |
| [in] | vertical | Boolean to indicate we deal with the vertical plane (maximal attenuation is limited) |
Definition at line 955 of file TYAcousticModel.cpp.


| 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.
| [in] | rayon | A segment describing the direct path between source and receptor. |
| [in] | penteMoyenne | Mean slope between source and receptor |
| [in] | miroir | Boolean to indicate if we should use the source (false) or the image source (true) during the walking difference computation |
| [in] | re | Path length to take into account for the walking difference computation |
| [in] | epaisseur | Total thickness of the obstacle. |
| [in] | vertical | Boolean to indicate we deal with the vertical plane (maximal attenuation is limited) |
| [in] | avantApres | Boolean to indicate if we are before (false) or after (true) the obstacle |
| [out] | bDiffOk | Set to false if the walking difference is <=0, true otherwise |
| [in] | conditionFav | specify if favorite condition or not (false by default) |
Definition at line 999 of file TYAcousticModel.cpp.

| OSpectre TYAcousticModel::calculC | ( | const double & | epaisseur | ) | const |
Compute the spectrum of the C factor used in the diffraction calculation.
| epaisseur | Total thickness of the obstacle. |
Definition at line 972 of file TYAcousticModel.cpp.


| OSpectreOctave TYAcousticModel::calculC3 | ( | const double & | epaisseur | ) | const |
Compute the spectrum of the C3 factor used in the diffraction calculation.
| epaisseur | Total thickness of the obstacle. |
Definition at line 928 of file TYAcousticModel.cpp.


|
virtual |
Main entry point, trigger acoustic computations.
| [in] | tabIntersect | Array of intersections. |
| [in] | trajet | Route between source and receptor. |
| [in] | ptsTop | List of points of the vertical path (in EV plane). |
| [in] | ptsLeft | List of points of the left lateral path (in EL plane). |
| [in] | ptsRight | List of points of the right lateral path (in EL plane). |
Definition at line 66 of file TYAcousticModel.cpp.


|
virtual |
| 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.
Not used in 9613 Solver for the time being
| [in] | rayon | A segment describing the acoustic ray. |
| [in] | source | The acoustic source. |
| [out] | TabChemins | Paths list of the journey generated. |
| [out] | distance | Route (source-receptor) 3D distance |
Definition at line 134 of file TYAcousticModel.cpp.

| 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.
| [in] | rayon | A segment describing the acoustic ray. |
| [in] | source | The acoustic source. |
| [out] | TabChemins | Paths list of the journey generated. |
| [out] | distance | Journey distance |
| void TYAcousticModel::computeCheminReflexion | ( | const std::deque< TYSIntersection > & | tabIntersect, |
| const OSegment3D & | ray, | ||
| const tympan::AcousticSource & | source, | ||
| TYTabChemin & | TabChemins, | ||
| double | distance | ||
| ) | const |
Compute the list of path generated by reflection on the vertical walls.
| [in] | tabIntersect | Array of intersections |
| [in] | ray | A segment describing the acoustic ray. |
| [in] | source | The acoustic source. |
| [out] | TabChemins | Paths list of the journey generated by reflection. |
| [out] | distance | Route (source-receptor) 3D distance |
Definition at line 785 of file TYAcousticModel.cpp.


| 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.
| [in] | tabIntersect | Array of intersections |
| [in] | rayon | A segment describing the acoustic ray. |
| [in] | source | The acoustic source. |
| [out] | TabChemins | Paths list of the journey generated by reflection. |
| [out] | distance | Journey distance |
| 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.
| [in] | rayon | A segment describing the acoustic ray. |
| [in] | source | The acoustic source. |
| [out] | TabChemins | Paths list of the journey generated (1 or 2 under favorables conditions). |
| [out] | distance | Journey distance |
| [in] | conditionFav | specify if favorite condition or not (false by default) |
Definition at line 231 of file TYAcousticModel.cpp.

| void TYAcousticModel::computeCheminSansEcran | ( | const std::deque< TYSIntersection > & | tabIntersect, |
| const OSegment3D & | rayon, | ||
| const tympan::AcousticSource & | source, | ||
| TYTabChemin & | TabChemins, | ||
| double | distance, | ||
| bool | conditionFav = false |
||
| ) | const |
Compute the main path between source and receptor. In 9613 solver, this path includes all attenuation effects, except reflexion one.
| [in] | tabIntersect | Array of intersections |
| [in] | rayon | A segment describing the acoustic ray. |
| [in] | source | The acoustic source. |
| [in] | conditionFav | True if propagation conditions are DownWard, False else. Not used in 9613Solver. |
| [out] | TabChemins | Paths list of the journey generated |
| [out] | distance | Route (source-receptor) 3D distance |
Definition at line 359 of file TYAcousticModel.cpp.


|
virtual |
Compute the segment path from the list of the points of the TYTrajet journey. It takes in account the ground reflection.
| [in] | rayon | A segment describing the acoustic ray. |
| [in] | source | The acoustic source. |
| [in] | pts | The list of points of the journey. |
| [in] | vertical | boolean to indicate we deal with the vertical plane |
| [out] | TabChemins | Paths list of the journey |
| [out] | distance | Journey distance |
| [in] | conditionFav | specify if favorite condition or not (false by default) |
true if succeeds; false otherwise.
|
virtual |
Compute barrier attenuation effect on the direct path for the considered geometrical path (top, left or right)
| [in] | rayon | A segment describing the acoustic ray. |
| [in] | source | The acoustic source. |
| [in] | pts | The list of points of the journey. |
| [in] | vertical | boolean to indicate we deal with the vertical plane |
| [in] | left | boolean to indicate we deal with the lateral left side |
| [out] | TabChemins | Paths list of the journey |
| [out] | distance | Route (source-receptor) 3D distance |
true if succeeds; false otherwise. Definition at line 227 of file TYAcousticModel.cpp.


| OSpectreOctave TYAcousticModel::computeEffectiveBarAttenuation | ( | const OSpectreOctave & | Abar_top, |
| const OSpectreOctave & | Abar_left, | ||
| const OSpectreOctave & | Abar_right | ||
| ) |
|
private |
Compute GZone and dpZone for the segment between ptDebut and ptFin.
| [in] | ptDebut | Starting point of the considered segment |
| [in] | ptFin | Ending point of the considered segment |
| [in] | tabIntersect | Array of intersections |
| [out] | GZone | Ground factor computed for the considered segment |
| [out] | dpZone | 2D distance of the considered segment |
Definition at line 679 of file TYAcousticModel.cpp.


|
private |
Compute heights relative to real ground, of the edges of a segment.
| [in] | meanSlope | Mean slope on real ground between segement edges |
| [in] | ray | Segment whose edges heights are computed |
| [out] | hauteurA | Height of ray._ptA segment edge |
| [out] | hauteurB | Height of ray._ptB segment edge |
Definition at line 1246 of file TYAcousticModel.cpp.


|
private |
|
private |
|
private |
|
private |
| bool TYAcousticModel::getGroundfactors | ( | const std::deque< TYSIntersection > & | tabIntersect, |
| const OSegment3D & | ray2D, | ||
| double | hs, | ||
| double | hr, | ||
| double & | Gs, | ||
| double & | Gm, | ||
| double & | Gr | ||
| ) | const |
Get ground factors for source, middle and receptor zones.
| [in] | tabIntersect | Array of intersections. |
| [in] | ray2D | Considered ray projected on horizontal plane. |
| [in] | hs | Height of the starting edge. |
| [in] | hr | Height of the ending edge |
| [out] | Gs | Ground factor of the source zone. |
| [out] | Gm | Ground factor of the middle zone. |
| [out] | Gr | Ground factor of the receptor zone. |
true if succeeds; false if not. Definition at line 398 of file TYAcousticModel.cpp.


| bool TYAcousticModel::getGroundfactors | ( | const std::deque< TYSIntersection > & | tabIntersectUpSegment, |
| const std::deque< TYSIntersection > & | tabIntersectDownSegment, | ||
| const OSegment3D & | SO2D, | ||
| const OSegment3D & | OR2D, | ||
| double | hs, | ||
| double | hr, | ||
| double & | Gs, | ||
| double & | Gm, | ||
| double & | Gr | ||
| ) | const |
Get ground factors for source, middle and receptor zones for a reflected path.
| [in] | tabIntersectUpSegment | Array of intersections for segment source to reflexion point. |
| [in] | tabIntersectDownSegment | Array of intersections for segment reflexion point to receptor. |
| [in] | SO2D | Ray between source and reflexion point projected on horizontal plane. |
| [in] | OR2D | Ray between reflexion and receptor point projected on horizontal plane. |
| [in] | hs | Height of the starting edge. |
| [in] | hr | Height of the ending edge |
| [out] | Gs | Ground factor of the source zone. |
| [out] | Gm | Ground factor of the middle zone. |
| [out] | Gr | Ground factor of the receptor zone. |
true if succeeds; false if not. Definition at line 471 of file TYAcousticModel.cpp.

|
private |
Find Reflexion spectrum at point defined by the end of an incident segment.
Not used in 9613 Solver
Definition at line 1111 of file TYAcousticModel.cpp.


|
private |
Find Reflexion spectrum at point defined by the end of an incident segment.
| void TYAcousticModel::init | ( | ) |
Initialize the acoustic model.
Definition at line 40 of file TYAcousticModel.cpp.

| void TYAcousticModel::init | ( | ) |
Initialize the acoustic model.
Limit the screen attenuation value with a frequency dependent criteria.
| sNC | Non corrected spectrum |
| C |
Definition at line 1085 of file TYAcousticModel.cpp.

| OSpectreOctave TYAcousticModel::limAttDiffraction | ( | const OSpectreOctave & | sNC, |
| const OSpectreOctave & | C | ||
| ) | const |
Limit the screen attenuation value with a frequency dependent criteria.
| sNC | Non corrected spectrum |
| C |
Definition at line 995 of file TYAcousticModel.cpp.


|
private |
Create a segment corresponding to the projection of "director" segment on the ground.
Definition at line 1172 of file TYAcousticModel.cpp.


|
private |
Create a segment corresponding to the projection of "director" segment on the ground.
| bool TYAcousticModel::solve | ( | TYTrajet & | trajet | ) |
Compute the source contributions to the receptor point.
| trajet | Route |
Definition at line 1026 of file TYAcousticModel.cpp.


| bool TYAcousticModel::solve | ( | TYTrajet & | trajet | ) |
Compute the source contribution to the point.
| trajet | Journey |
|
private |
Definition at line 273 of file TYAcousticModel.h.
|
private |
Definition at line 214 of file TYAcousticModel.h.
|
private |
Definition at line 267 of file TYAcousticModel.h.
|
private |
Definition at line 272 of file TYAcousticModel.h.
|
private |
Definition at line 213 of file TYAcousticModel.h.
|
private |
Definition at line 268 of file TYAcousticModel.h.
|
private |
Definition at line 265 of file TYAcousticModel.h.
|
private |
Reference to the solver.
Definition at line 276 of file TYAcousticModel.h.
|
private |
Definition at line 266 of file TYAcousticModel.h.
|
private |
Definition at line 264 of file TYAcousticModel.h.
|
private |
Definition at line 263 of file TYAcousticModel.h.
|
private |
Definition at line 270 of file TYAcousticModel.h.