Code_TYMPAN  4.4.0
Industrial site acoustic simulation
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
TYAcousticModel9613Solver Class Reference

Acoustic model for the 9613Solver. More...

#include <TYAcousticModel9613Solver.h>

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

Public Member Functions

 TYAcousticModel9613Solver (TYSolver9613Solver &solver)
 
void compute (const std::deque< TYSIntersection > &tabIntersect, TYTrajet9613Solver &trajet, TabPoint3D &ptsTop, TabPoint3D &ptsLeft, TabPoint3D &ptsRight)
 Main entry point, trigger acoustic computations. More...
 
void computeWaveLength () override
 Compute the wave length for the 9613Solver. More...
 
virtual bool computeCheminsAvecEcran (const OSegment3D &rayon, const tympan::AcousticSource &source, const TabPoint3D &pts, const bool vertical, TYTabChemin9613Solver &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...
 
virtual void computeCheminReflexion (const std::deque< TYSIntersection > &tabIntersect, const OSegment3D &ray, const tympan::AcousticSource &source, TYTabChemin9613Solver &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, TYTabChemin9613Solver &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...
 
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 addGroundSteps (const OPoint3D &ptStart, const OPoint3D &ptEnd, const tympan::AcousticSource &source, const bool &fromSource, TYTabEtape9613Solver &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)
 
bool solve (TYTrajet9613Solver &trajet)
 Compute the source contributions to the receptor point. More...
 
- Public Member Functions inherited from TYAcousticModel
 TYAcousticModel ()
 
virtual ~TYAcousticModel ()
 
void init ()
 Initialize the acoustic model. More...
 
OPlan buildMeanSlopePlan (const OSegment3D &penteMoyenne) const
 
void meanSlope (const OSegment3D &director, OSegment3D &slope) const
 Create a segment corresponding to the projection of "director" segment on the ground. More...
 
- Public Member Functions inherited from AcousticModelInterface
 AcousticModelInterface ()
 
virtual ~AcousticModelInterface ()
 

Protected Member Functions

virtual std::unique_ptr< TYChemin9613SolvercreateChemin () const
 
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...
 
OSpectreOctave calculC3 (const double &epaisseur) const
 Compute the spectrum of the C3 factor used in the diffraction calculation. More...
 
virtual OSpectreOctave calculZMin (const double C2, const OSpectreOctave &C3) const
 Compute zmin, the min value of z for which the barrier attenuation Dz is null. This minimum distance is computed by wave length. zmin is only used for Kmeteo computation in Code_TYMPAN 9613Solver_2024 implementation. More...
 
virtual OSpectreOctave calculKmeteo (const bool vertical, const double d_SS, const double d_SR, const double d, const double z, const double e, const OSpectreOctave &z_min) const
 Compute Kmeteo, the correction factor for meteorological effects In Code_TYMPAN 9613Solver version 96 implementation, zmin and e are not used. More...
 
virtual OSpectreOctave calculDz (const double z, const double C2, const OSpectreOctave &C3, const OSpectreOctave &Kmeteo, const OSpectreOctave &zmin) const
 Compute Dz, the barrier attenuation for each octave band in dB. 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...
 

Protected Attributes

OSpectreOctave _lambda
 
TYSolver9613Solver_solver
 Reference to the solver. More...
 
- Protected Attributes inherited from TYAcousticModel
bool _useSol
 
bool _useReflex
 
int _propaCond
 
bool _useAtmo
 
bool _interference
 
double _paramH
 
std::unique_ptr< AtmosphericConditions_pSolverAtmos
 

Private Member Functions

TYSolvergetSolver () const override
 
 FRIEND_TEST (test_TYAcoustiModel9613Solver, computeGZone)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver, calculZMin)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver, calculC3_single_diffraction)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver, calculC3_multiple_diffraction)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver, calculK_meteo_z_0)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver, calculK_meteo_z_30)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver, calculK_meteo_lateral_diffraction)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver, calculK_meteo_d_500_z_1)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver, calculDz_z_positive)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver, calculDz_z_negative)
 

Private Attributes

OSpectreOctave _absoNulle
 

Detailed Description

Acoustic model for the 9613Solver.

Definition at line 43 of file TYAcousticModel9613Solver.h.

Constructor & Destructor Documentation

◆ TYAcousticModel9613Solver()

TYAcousticModel9613Solver::TYAcousticModel9613Solver ( TYSolver9613Solver solver)

Definition at line 30 of file TYAcousticModel9613Solver.cpp.

Here is the call graph for this function:

Member Function Documentation

◆ addGroundSteps()

bool TYAcousticModel9613Solver::addGroundSteps ( const OPoint3D ptStart,
const OPoint3D ptEnd,
const tympan::AcousticSource source,
const bool &  fromSource,
TYTabEtape9613Solver Etapes 
) const

Compute the different steps from a point to another via a reflection and a direct view.

Parameters
[in]ptStartStarting point.
[in]ptEndEnding point.
[in]sourceAcoustic source.
[in]fromSourceBoolean if the starting point is the source.
[out]EtapesArray of all the computed TYEtape steps.
Returns
bool true if succeeds; false if not.

Definition at line 220 of file TYAcousticModel9613Solver.cpp.

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

◆ calculAttDiffraction()

OSpectreOctave TYAcousticModel9613Solver::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.

Parameters
[in]rayA segment describing the direct path between source and receptor.
[in]rePath length to take into account for the walking difference computation
[in]dssLength between source and first edge of the obstacle
[in]dsrLength between last edge of the obstacle and receptor
[in]widthTotal width of the obstacle.
[in]verticalBoolean to indicate we deal with the vertical plane (maximal attenuation is limited)
Returns
Attenuation from the diffraction on the screen.

Definition at line 840 of file TYAcousticModel9613Solver.cpp.

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

◆ calculC3()

OSpectreOctave TYAcousticModel9613Solver::calculC3 ( const double &  epaisseur) const
protected

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

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

Definition at line 813 of file TYAcousticModel9613Solver.cpp.

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

◆ calculDz()

OSpectreOctave TYAcousticModel9613Solver::calculDz ( const double  z,
const double  C2,
const OSpectreOctave C3,
const OSpectreOctave Kmeteo,
const OSpectreOctave zmin 
) const
protectedvirtual

Compute Dz, the barrier attenuation for each octave band in dB.

Parameters
[in]zDifference between the path lengths of diffracted and direct sound in meter
[in]C2Coefficient which includes the effect of ground reflections
[in]C3Coefficient used for multiple diffraction
[in]Kmeteocorrection factor for meteorological effects
[in]zminMin value of z for which the barrier attenuation Dz is null
Returns
Dz barrier attenuation for each octave band in dB

Reimplemented in TYAcousticModel9613Solver2024.

Definition at line 892 of file TYAcousticModel9613Solver.cpp.

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

◆ calculKmeteo()

OSpectreOctave TYAcousticModel9613Solver::calculKmeteo ( const bool  vertical,
const double  d_SS,
const double  d_SR,
const double  d,
const double  z,
const double  e,
const OSpectreOctave z_min 
) const
protectedvirtual

Compute Kmeteo, the correction factor for meteorological effects In Code_TYMPAN 9613Solver version 96 implementation, zmin and e are not used.

Parameters
[in]verticalboolean to indicate we deal with the vertical plane
[in]d_SSLength between source and first edge of the obstacle in meter
[in]d_SRLength between last edge of the obstacle and receptor in meter
[in]dLength between source and reciever in meter
[in]zDifference between the path lengths of diffracted and direct sound in meter
[in]eLength between first and last diffraction edge for multiple diffraction, for single equals 0
[in]z_minMin value of z for which the barrier attenuation Dz is null
Returns
Kmeteo

Reimplemented in TYAcousticModel9613Solver2024.

Definition at line 878 of file TYAcousticModel9613Solver.cpp.

Here is the caller graph for this function:

◆ calculZMin()

OSpectreOctave TYAcousticModel9613Solver::calculZMin ( const double  C2,
const OSpectreOctave C3 
) const
protectedvirtual

Compute zmin, the min value of z for which the barrier attenuation Dz is null. This minimum distance is computed by wave length. zmin is only used for Kmeteo computation in Code_TYMPAN 9613Solver_2024 implementation.

Parameters
[in]C2Coefficient which includes the effect of ground reflections
[in]C3Coefficient used for multiple diffraction
Returns
zmin as a spectrum in octave band

Reimplemented in TYAcousticModel9613Solver2024.

Definition at line 871 of file TYAcousticModel9613Solver.cpp.

Here is the caller graph for this function:

◆ compute()

void TYAcousticModel9613Solver::compute ( const std::deque< TYSIntersection > &  tabIntersect,
TYTrajet9613Solver trajet,
TabPoint3D ptsTop,
TabPoint3D ptsLeft,
TabPoint3D ptsRight 
)

Main entry point, trigger acoustic computations.

Parameters
[in]tabIntersectArray of intersections.
[in]trajetRoute between source and receptor.
[in]ptsTopList of points of the vertical path (in EV plane).
[in]ptsLeftList of points of the left lateral path (in EL plane).
[in]ptsRightList of points of the right lateral path (in EL plane).

Definition at line 44 of file TYAcousticModel9613Solver.cpp.

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

◆ computeCheminReflexion()

void TYAcousticModel9613Solver::computeCheminReflexion ( const std::deque< TYSIntersection > &  tabIntersect,
const OSegment3D ray,
const tympan::AcousticSource source,
TYTabChemin9613Solver TabChemins,
double  distance 
) const
virtual

Compute the list of path generated by reflection on the vertical walls.

Parameters
[in]tabIntersectArray of intersections
[in]rayA segment describing the acoustic ray.
[in]sourceThe acoustic source.
[out]TabCheminsPaths list of the journey generated by reflection.
[out]distanceRoute (source-receptor) 3D distance

Reimplemented in TYAcousticModel9613Solver2024.

Definition at line 658 of file TYAcousticModel9613Solver.cpp.

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

◆ computeCheminSansEcran()

void TYAcousticModel9613Solver::computeCheminSansEcran ( const std::deque< TYSIntersection > &  tabIntersect,
const OSegment3D rayon,
const tympan::AcousticSource source,
TYTabChemin9613Solver 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.

Parameters
[in]tabIntersectArray of intersections
[in]rayonA segment describing the acoustic ray.
[in]sourceThe acoustic source.
[in]conditionFavTrue if propagation conditions are DownWard, False else. Not used in 9613Solver.
[out]TabCheminsPaths list of the journey generated
[out]distanceRoute (source-receptor) 3D distance

Definition at line 248 of file TYAcousticModel9613Solver.cpp.

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

◆ computeCheminsAvecEcran()

bool TYAcousticModel9613Solver::computeCheminsAvecEcran ( const OSegment3D rayon,
const tympan::AcousticSource source,
const TabPoint3D pts,
const bool  vertical,
TYTabChemin9613Solver TabChemins,
double  distance,
const bool  left 
) const
virtual

Compute barrier attenuation effect on the direct path for the considered geometrical path (top, left or right)

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
[in]leftboolean to indicate we deal with the lateral left side
[out]TabCheminsPaths list of the journey
[out]distanceRoute (source-receptor) 3D distance
Returns
true if succeeds; false otherwise.

Definition at line 113 of file TYAcousticModel9613Solver.cpp.

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

◆ computeEffectiveBarAttenuation()

OSpectreOctave TYAcousticModel9613Solver::computeEffectiveBarAttenuation ( const OSpectreOctave Abar_top,
const OSpectreOctave Abar_left,
const OSpectreOctave Abar_right 
)

Definition at line 522 of file TYAcousticModel9613Solver.cpp.

Here is the caller graph for this function:

◆ computeGZone()

bool TYAcousticModel9613Solver::computeGZone ( const OPoint3D ptDebut,
const OPoint3D ptFin,
double &  GZone,
double &  dpZone,
const std::deque< TYSIntersection > &  tabIntersect 
) const
protected

Compute GZone and dpZone for the segment between ptDebut and ptFin.

Parameters
[in]ptDebutStarting point of the considered segment
[in]ptFinEnding point of the considered segment
[in]tabIntersectArray of intersections
[out]GZoneGround factor computed for the considered segment
[out]dpZone2D distance of the considered segment

Definition at line 540 of file TYAcousticModel9613Solver.cpp.

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

◆ computeSegmentEdgesHeights()

bool TYAcousticModel9613Solver::computeSegmentEdgesHeights ( double &  hauteurA,
double &  hauteurB,
const OSegment3D meanSlope,
const OSegment3D ray 
) const
protected

Compute heights relative to real ground, of the edges of a segment.

Parameters
[in]meanSlopeMean slope on real ground between segement edges
[in]raySegment whose edges heights are computed
[out]hauteurAHeight of ray._ptA segment edge
[out]hauteurBHeight of ray._ptB segment edge

Definition at line 1044 of file TYAcousticModel9613Solver.cpp.

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

◆ computeWaveLength()

void TYAcousticModel9613Solver::computeWaveLength ( )
overridevirtual

Compute the wave length for the 9613Solver.

Implements TYAcousticModel.

Definition at line 37 of file TYAcousticModel9613Solver.cpp.

Here is the call graph for this function:

◆ createChemin()

virtual std::unique_ptr<TYChemin9613Solver> TYAcousticModel9613Solver::createChemin ( ) const
inlineprotectedvirtual

Reimplemented in TYAcousticModel9613Solver2024.

Definition at line 210 of file TYAcousticModel9613Solver.h.

Here is the caller graph for this function:

◆ FRIEND_TEST() [1/10]

TYAcousticModel9613Solver::FRIEND_TEST ( test_TYAcousticModel9613Solver  ,
calculC3_multiple_diffraction   
)
private

◆ FRIEND_TEST() [2/10]

TYAcousticModel9613Solver::FRIEND_TEST ( test_TYAcousticModel9613Solver  ,
calculC3_single_diffraction   
)
private

◆ FRIEND_TEST() [3/10]

TYAcousticModel9613Solver::FRIEND_TEST ( test_TYAcousticModel9613Solver  ,
calculDz_z_negative   
)
private

◆ FRIEND_TEST() [4/10]

TYAcousticModel9613Solver::FRIEND_TEST ( test_TYAcousticModel9613Solver  ,
calculDz_z_positive   
)
private

◆ FRIEND_TEST() [5/10]

TYAcousticModel9613Solver::FRIEND_TEST ( test_TYAcousticModel9613Solver  ,
calculK_meteo_d_500_z_1   
)
private

◆ FRIEND_TEST() [6/10]

TYAcousticModel9613Solver::FRIEND_TEST ( test_TYAcousticModel9613Solver  ,
calculK_meteo_lateral_diffraction   
)
private

◆ FRIEND_TEST() [7/10]

TYAcousticModel9613Solver::FRIEND_TEST ( test_TYAcousticModel9613Solver  ,
calculK_meteo_z_0   
)
private

◆ FRIEND_TEST() [8/10]

TYAcousticModel9613Solver::FRIEND_TEST ( test_TYAcousticModel9613Solver  ,
calculK_meteo_z_30   
)
private

◆ FRIEND_TEST() [9/10]

TYAcousticModel9613Solver::FRIEND_TEST ( test_TYAcousticModel9613Solver  ,
calculZMin   
)
private

◆ FRIEND_TEST() [10/10]

TYAcousticModel9613Solver::FRIEND_TEST ( test_TYAcoustiModel9613Solver  ,
computeGZone   
)
private

◆ getGroundfactors() [1/2]

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

Parameters
[in]tabIntersectArray of intersections.
[in]ray2DConsidered ray projected on horizontal plane.
[in]hsHeight of the starting edge.
[in]hrHeight of the ending edge
[out]GsGround factor of the source zone.
[out]GmGround factor of the middle zone.
[out]GrGround factor of the receptor zone.
Returns
bool true if succeeds; false if not.

Definition at line 290 of file TYAcousticModel9613Solver.cpp.

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

◆ getGroundfactors() [2/2]

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

Parameters
[in]tabIntersectUpSegmentArray of intersections for segment source to reflexion point.
[in]tabIntersectDownSegmentArray of intersections for segment reflexion point to receptor.
[in]SO2DRay between source and reflexion point projected on horizontal plane.
[in]OR2DRay between reflexion and receptor point projected on horizontal plane.
[in]hsHeight of the starting edge.
[in]hrHeight of the ending edge
[out]GsGround factor of the source zone.
[out]GmGround factor of the middle zone.
[out]GrGround factor of the receptor zone.
Returns
bool true if succeeds; false if not.

Definition at line 363 of file TYAcousticModel9613Solver.cpp.

Here is the call graph for this function:

◆ getSolver()

TYSolver& TYAcousticModel9613Solver::getSolver ( ) const
inlineoverrideprivatevirtual

Implements TYAcousticModel.

Definition at line 286 of file TYAcousticModel9613Solver.h.

◆ limAttDiffraction()

OSpectreOctave TYAcousticModel9613Solver::limAttDiffraction ( const OSpectreOctave sNC,
const OSpectreOctave C 
) const

Limit the screen attenuation value with a frequency dependent criteria.

Parameters
sNCNon corrected spectrum
C

Definition at line 918 of file TYAcousticModel9613Solver.cpp.

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

◆ solve()

bool TYAcousticModel9613Solver::solve ( TYTrajet9613Solver trajet)

Compute the source contributions to the receptor point.

Parameters
trajetRoute

Definition at line 950 of file TYAcousticModel9613Solver.cpp.

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

Member Data Documentation

◆ _absoNulle

OSpectreOctave TYAcousticModel9613Solver::_absoNulle
private

Definition at line 308 of file TYAcousticModel9613Solver.h.

◆ _lambda

OSpectreOctave TYAcousticModel9613Solver::_lambda
protected

Definition at line 292 of file TYAcousticModel9613Solver.h.

◆ _solver

TYSolver9613Solver& TYAcousticModel9613Solver::_solver
protected

Reference to the solver.

Definition at line 294 of file TYAcousticModel9613Solver.h.


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