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

Acoustic model for the 9613Solver version 2024. More...

#include <TYAcousticModel9613Solver2024.h>

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

Classes

struct  ReflectingSegmentCache
 Cache geometry associated with one reflecting segment. More...
 

Public Member Functions

 TYAcousticModel9613Solver2024 (TYSolver9613Solver2024 &solver)
 
- Public Member Functions inherited from TYAcousticModel9613Solver
 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...
 
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

std::unique_ptr< TYChemin9613SolvercreateChemin () const override
 
OSpectreOctave calculZMin (const double C2, const OSpectreOctave &C3) const override
 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...
 
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 override
 Compute Kmeteo, the correction factor for meteorological effects. More...
 
OSpectreOctave calculDz (const double z, const double C2, const OSpectreOctave &C3, const OSpectreOctave &Kmeteo, const OSpectreOctave &zmin) const override
 Compute Dz, the barrier attenuation for each octave band in dB. More...
 
void computeCheminReflexion (const std::deque< TYSIntersection > &tabIntersect, const OSegment3D &ray, const tympan::AcousticSource &source, TYTabChemin9613Solver &TabChemins, double distance) const override
 Compute the list of path generated by reflection on the vertical walls. More...
 
bool getGroundfactors (const std::deque< std::deque< TYSIntersection >> &tabIntersectSegments, const std::deque< OPoint3D > &pathPoints2D, 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...
 
bool computeGroundFactorSourceZone (const std::deque< std::deque< TYSIntersection >> &tabIntersectSegments, const std::deque< OPoint3D > &pathPoints2D, double hs, double &Gs) const
 Compute the ground factor of the source zone for a reflected path. More...
 
bool computeGroundFactorReceiverZone (const std::deque< std::deque< TYSIntersection >> &tabIntersectSegments, const std::deque< OPoint3D > &pathPoints2D, double hr, double &Gr) const
 Compute the ground factor of the receptor zone for a reflected path. More...
 
bool computeGroundFactorMiddleZone (const std::deque< std::deque< TYSIntersection >> &tabIntersectSegments, const std::deque< OPoint3D > &pathPoints2D, double hs, double hr, double &Gm) const
 Compute the ground factor of the middle zone for a reflected path. More...
 
- Protected Member Functions inherited from TYAcousticModel9613Solver
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...
 
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...
 

Private Member Functions

bool sameReflectingSegment (const TYSIntersection &lhs, const TYSIntersection &rhs) const
 Check whether two reflecting segments are identical in plane EL. More...
 
bool buildReflectionPoints (const std::vector< const TYSIntersection * > &currentCombination, const std::deque< OPoint3D > &imageSourcesList, const OPoint3D &receptorPoint, std::deque< OPoint3D > &reflectionPointsList) const
 Build the list of reflection points associated with a reflecting segment combination. More...
 
bool validateReflectionCandidate (const std::vector< const TYSIntersection * > &barrierCombination, const std::deque< OPoint3D > &reflectionPointsList, const std::deque< TYSIntersection > &tabIntersect, const OPoint3D &sourcePoint, const OPoint3D &receptorPoint) const
 Validate a reflection candidate against the reflecting segments of the scene. A reflection candidate is said valid when two conditions are met: More...
 
bool buildReflectionPath (const std::vector< const TYSIntersection * > &barrierCombination, const std::deque< OPoint3D > &imageSourcesList, const std::deque< OPoint3D > &reflectionPointsList, const OSegment3D &directRay, const tympan::AcousticSource &source, TYTabChemin9613Solver &TabChemins, double distance) const
 Build a reflection path from a valid reflecting segment combination. More...
 
ReflectingSegmentCache makeReflectingSegmentCache (const TYSIntersection &inter) const
 Build the geometric cache associated with one reflecting segment. More...
 
void reflectPointAboutCachedLine (const ReflectingSegmentCache &cache, const OPoint3D &inputPoint, OPoint3D &reflectedPoint) const
 Reflect a point about the support line stored in a reflecting segment cache. More...
 
void buildReflectionPathsStreaming (size_t reflectionOrder, const std::vector< ReflectingSegmentCache > &reflectingSegments, std::vector< const TYSIntersection * > &currentCombination, std::deque< OPoint3D > &currentImageSources, const std::deque< TYSIntersection > &tabIntersect, const OSegment3D &ray, const tympan::AcousticSource &source, TYTabChemin9613Solver &TabChemins, double distance) const
 Recursively build and validate reflection paths in streaming mode. More...
 
bool buildReflectionPathForCombination (const std::vector< const TYSIntersection * > &currentCombination, const std::deque< OPoint3D > &imageSourcesList, const std::deque< TYSIntersection > &tabIntersect, const OSegment3D &ray, const tympan::AcousticSource &source, TYTabChemin9613Solver &TabChemins, double distance) const
 Build a reflection path from the current reflecting segment combination. More...
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, calculZMin)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, calculK_meteo_z_0)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, calculK_meteo_z_30)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, calculK_meteo_lateral_diffraction)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, calculK_meteo_d_500_z_1)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, calculDz_z_greater_than_zmin)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, calculDz_z_general_case)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, sameReflectingSegment_compares_segInter1_only)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, reflectPointAboutCachedLine_order3_builds_expected_image_sources)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, buildReflectionPoints_pointerCombination_order2)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, buildReflectionPoints_pointerCombination_fails_when_intersection_is_outside_segment)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, validateReflectionCandidate_pointerCombination_order2_valid)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, validateReflectionCandidate_pointerCombination_order2_invalid_with_intersecting_scene_segment)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, buildReflectionPath_pointerCombination_fails_when_candidate_is_inconsistent)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, buildReflectionPath_pointerCombination_fails_when_material_is_missing)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, buildReflectionPath_pointerCombination_fails_when_face_geom_data_is_missing)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, computeGroundFactorSourceZone_order3_Segments1)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, computeGroundFactorSourceZone_order3_Segments12)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, computeGroundFactorSourceZone_order3_Segments123)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, computeGroundFactorSourceZone_order3_Segments1234)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, computeGroundFactorSourceZone_order3_FullPath)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, computeGroundFactorReceiverZone_order3_Segments4)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, computeGroundFactorReceiverZone_order3_Segments34)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, computeGroundFactorReceiverZone_order3_Segments234)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, computeGroundFactorReceiverZone_order3_Segments1234)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, computeGroundFactorReceiverZone_order3_FullPath)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, computeGroundFactorMiddleZone_order3_both_bounds_in_segment3)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, computeGroundFactorMiddleZone_order3_spans_several_segments)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, computeGroundFactorMiddleZone_order3_both_bounds_in_segment2)
 
 FRIEND_TEST (test_TYAcousticModel9613Solver2024, computeGroundFactorMiddleZone_order3_no_middle_zone_when_lengths_touch)
 

Additional Inherited Members

- Protected Attributes inherited from TYAcousticModel9613Solver
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
 

Detailed Description

Acoustic model for the 9613Solver version 2024.

Definition at line 28 of file TYAcousticModel9613Solver2024.h.

Constructor & Destructor Documentation

◆ TYAcousticModel9613Solver2024()

TYAcousticModel9613Solver2024::TYAcousticModel9613Solver2024 ( TYSolver9613Solver2024 solver)

Definition at line 153 of file TYAcousticModel9613Solver2024.cpp.

Member Function Documentation

◆ buildReflectionPath()

bool TYAcousticModel9613Solver2024::buildReflectionPath ( const std::vector< const TYSIntersection * > &  barrierCombination,
const std::deque< OPoint3D > &  imageSourcesList,
const std::deque< OPoint3D > &  reflectionPointsList,
const OSegment3D directRay,
const tympan::AcousticSource source,
TYTabChemin9613Solver TabChemins,
double  distance 
) const
private

Build a reflection path from a valid reflecting segment combination.

Parameters
[in]barrierCombinationOrdered list of reflecting segments.
[in]imageSourcesListList of image sources from S0 to Sn.
[in]reflectionPointsListList of reflection points from P1 to Pn.
[in]directRayA segment describing the direct acoustic ray.
[in]sourceThe acoustic source.
[out]TabCheminsPaths list of the journey generated by reflection.
[in]distanceRoute (source-receptor) 3D distance.
Returns
true if succeeds; false otherwise.

Definition at line 701 of file TYAcousticModel9613Solver2024.cpp.

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

◆ buildReflectionPathForCombination()

bool TYAcousticModel9613Solver2024::buildReflectionPathForCombination ( const std::vector< const TYSIntersection * > &  currentCombination,
const std::deque< OPoint3D > &  imageSourcesList,
const std::deque< TYSIntersection > &  tabIntersect,
const OSegment3D ray,
const tympan::AcousticSource source,
TYTabChemin9613Solver TabChemins,
double  distance 
) const
private

Build a reflection path from the current reflecting segment combination.

This method computes reflection points from the already available image sources, validates the resulting geometric path against the scene, then builds the corresponding acoustic path when the combination is valid.

Parameters
[in]currentCombinationCurrent ordered reflecting segment combination.
[in]imageSourcesListList of image sources from S0 to Sn.
[in]tabIntersectArray of intersections.
[in]rayA segment describing the direct acoustic ray.
[in]sourceThe acoustic source.
[out]TabCheminsPaths list of the journey generated by reflection.
[in]distanceRoute (source-receptor) 3D distance.
Returns
true if succeeds; false otherwise.

Definition at line 942 of file TYAcousticModel9613Solver2024.cpp.

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

◆ buildReflectionPathsStreaming()

void TYAcousticModel9613Solver2024::buildReflectionPathsStreaming ( size_t  reflectionOrder,
const std::vector< ReflectingSegmentCache > &  reflectingSegments,
std::vector< const TYSIntersection * > &  currentCombination,
std::deque< OPoint3D > &  currentImageSources,
const std::deque< TYSIntersection > &  tabIntersect,
const OSegment3D ray,
const tympan::AcousticSource source,
TYTabChemin9613Solver TabChemins,
double  distance 
) const
private

Recursively build and validate reflection paths in streaming mode.

This method explores ordered reflecting segment combinations up to the requested reflection order, forbidding only consecutive reuse of the same reflecting segment. Image sources are built incrementally along the current recursion branch and each valid prefix is turned into a reflection path.

Parameters
[in]reflectionOrderMaximal reflection order.
[in]reflectingSegmentsList of cached reflecting segments.
[out]currentCombinationCurrent ordered reflecting segment combination.
[out]currentImageSourcesCurrent list of image sources from S0 to Sn.
[in]tabIntersectArray of intersections.
[in]rayA segment describing the direct acoustic ray.
[in]sourceThe acoustic source.
[out]TabCheminsPaths list of the journey generated by reflection.
[in]distanceRoute (source-receptor) 3D distance.

Definition at line 902 of file TYAcousticModel9613Solver2024.cpp.

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

◆ buildReflectionPoints()

bool TYAcousticModel9613Solver2024::buildReflectionPoints ( const std::vector< const TYSIntersection * > &  currentCombination,
const std::deque< OPoint3D > &  imageSourcesList,
const OPoint3D receptorPoint,
std::deque< OPoint3D > &  reflectionPointsList 
) const
private

Build the list of reflection points associated with a reflecting segment combination.

Parameters
[in]currentCombinationCurrent reflecting segment combination.
[in]imageSourcesListList of image sources from S0 to Sn.
[in]receptorPointReceptor point.
[out]reflectionPointsListList of reflection points from P1 to Pn.
Returns
true if succeeds; false otherwise.

Definition at line 605 of file TYAcousticModel9613Solver2024.cpp.

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

◆ calculDz()

OSpectreOctave TYAcousticModel9613Solver2024::calculDz ( const double  z,
const double  C2,
const OSpectreOctave C3,
const OSpectreOctave Kmeteo,
const OSpectreOctave zmin 
) const
overrideprotectedvirtual

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 below which the barrier attenuation Dz is null
Returns
Dz barrier attenuation for each octave band in dB

Reimplemented from TYAcousticModel9613Solver.

Definition at line 202 of file TYAcousticModel9613Solver2024.cpp.

Here is the call graph for this function:

◆ calculKmeteo()

OSpectreOctave TYAcousticModel9613Solver2024::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
overrideprotectedvirtual

Compute Kmeteo, the correction factor for meteorological effects.

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 below which the barrier attenuation Dz is null
Returns
Kmeteo

Reimplemented from TYAcousticModel9613Solver.

Definition at line 166 of file TYAcousticModel9613Solver2024.cpp.

Here is the call graph for this function:

◆ calculZMin()

OSpectreOctave TYAcousticModel9613Solver2024::calculZMin ( const double  C2,
const OSpectreOctave C3 
) const
overrideprotectedvirtual

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 from TYAcousticModel9613Solver.

Definition at line 158 of file TYAcousticModel9613Solver2024.cpp.

Here is the call graph for this function:

◆ computeCheminReflexion()

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

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 from TYAcousticModel9613Solver.

Definition at line 229 of file TYAcousticModel9613Solver2024.cpp.

Here is the call graph for this function:

◆ computeGroundFactorMiddleZone()

bool TYAcousticModel9613Solver2024::computeGroundFactorMiddleZone ( const std::deque< std::deque< TYSIntersection >> &  tabIntersectSegments,
const std::deque< OPoint3D > &  pathPoints2D,
double  hs,
double  hr,
double &  Gm 
) const
protected

Compute the ground factor of the middle zone for a reflected path.

Parameters
[in]tabIntersectSegmentsArray of arrays of intersections for each path segment [Pi, Pi+1].
[in]pathPoints2DArray of path points Pi projected on the horizontal plane.
[in]hsHeight of the source.
[in]hrHeight of the receptor.
[out]GmGround factor of the middle zone.
Returns
true if succeeds; false otherwise.

Definition at line 493 of file TYAcousticModel9613Solver2024.cpp.

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

◆ computeGroundFactorReceiverZone()

bool TYAcousticModel9613Solver2024::computeGroundFactorReceiverZone ( const std::deque< std::deque< TYSIntersection >> &  tabIntersectSegments,
const std::deque< OPoint3D > &  pathPoints2D,
double  hr,
double &  Gr 
) const
protected

Compute the ground factor of the receptor zone for a reflected path.

Parameters
[in]tabIntersectSegmentsArray of arrays of intersections for each path segment [Pi, Pi+1].
[in]pathPoints2DArray of path points Pi projected on the horizontal plane.
[in]hrHeight of the receptor.
[out]GrGround factor of the receptor zone.
Returns
true if succeeds; false otherwise.

Definition at line 398 of file TYAcousticModel9613Solver2024.cpp.

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

◆ computeGroundFactorSourceZone()

bool TYAcousticModel9613Solver2024::computeGroundFactorSourceZone ( const std::deque< std::deque< TYSIntersection >> &  tabIntersectSegments,
const std::deque< OPoint3D > &  pathPoints2D,
double  hs,
double &  Gs 
) const
protected

Compute the ground factor of the source zone for a reflected path.

Parameters
[in]tabIntersectSegmentsArray of arrays of intersections for each path segment [Pi, Pi+1].
[in]pathPoints2DArray of path points Pi projected on the horizontal plane.
[in]hsHeight of the source.
[out]GsGround factor of the source zone.
Returns
true if succeeds; false otherwise.

Definition at line 304 of file TYAcousticModel9613Solver2024.cpp.

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

◆ createChemin()

std::unique_ptr<TYChemin9613Solver> TYAcousticModel9613Solver2024::createChemin ( ) const
inlineoverrideprotectedvirtual

Reimplemented from TYAcousticModel9613Solver.

Definition at line 34 of file TYAcousticModel9613Solver2024.h.

Here is the caller graph for this function:

◆ FRIEND_TEST() [1/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
buildReflectionPath_pointerCombination_fails_when_candidate_is_inconsistent   
)
private

◆ FRIEND_TEST() [2/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
buildReflectionPath_pointerCombination_fails_when_face_geom_data_is_missing   
)
private

◆ FRIEND_TEST() [3/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
buildReflectionPath_pointerCombination_fails_when_material_is_missing   
)
private

◆ FRIEND_TEST() [4/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
buildReflectionPoints_pointerCombination_fails_when_intersection_is_outside_segment   
)
private

◆ FRIEND_TEST() [5/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
buildReflectionPoints_pointerCombination_order2   
)
private

◆ FRIEND_TEST() [6/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
calculDz_z_general_case   
)
private

◆ FRIEND_TEST() [7/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
calculDz_z_greater_than_zmin   
)
private

◆ FRIEND_TEST() [8/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
calculK_meteo_d_500_z_1   
)
private

◆ FRIEND_TEST() [9/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
calculK_meteo_lateral_diffraction   
)
private

◆ FRIEND_TEST() [10/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
calculK_meteo_z_0   
)
private

◆ FRIEND_TEST() [11/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
calculK_meteo_z_30   
)
private

◆ FRIEND_TEST() [12/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
calculZMin   
)
private

◆ FRIEND_TEST() [13/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
computeGroundFactorMiddleZone_order3_both_bounds_in_segment2   
)
private

◆ FRIEND_TEST() [14/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
computeGroundFactorMiddleZone_order3_both_bounds_in_segment3   
)
private

◆ FRIEND_TEST() [15/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
computeGroundFactorMiddleZone_order3_no_middle_zone_when_lengths_touch   
)
private

◆ FRIEND_TEST() [16/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
computeGroundFactorMiddleZone_order3_spans_several_segments   
)
private

◆ FRIEND_TEST() [17/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
computeGroundFactorReceiverZone_order3_FullPath   
)
private

◆ FRIEND_TEST() [18/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
computeGroundFactorReceiverZone_order3_Segments1234   
)
private

◆ FRIEND_TEST() [19/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
computeGroundFactorReceiverZone_order3_Segments234   
)
private

◆ FRIEND_TEST() [20/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
computeGroundFactorReceiverZone_order3_Segments34   
)
private

◆ FRIEND_TEST() [21/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
computeGroundFactorReceiverZone_order3_Segments4   
)
private

◆ FRIEND_TEST() [22/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
computeGroundFactorSourceZone_order3_FullPath   
)
private

◆ FRIEND_TEST() [23/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
computeGroundFactorSourceZone_order3_Segments1   
)
private

◆ FRIEND_TEST() [24/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
computeGroundFactorSourceZone_order3_Segments12   
)
private

◆ FRIEND_TEST() [25/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
computeGroundFactorSourceZone_order3_Segments123   
)
private

◆ FRIEND_TEST() [26/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
computeGroundFactorSourceZone_order3_Segments1234   
)
private

◆ FRIEND_TEST() [27/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
reflectPointAboutCachedLine_order3_builds_expected_image_sources   
)
private

◆ FRIEND_TEST() [28/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
sameReflectingSegment_compares_segInter1_only   
)
private

◆ FRIEND_TEST() [29/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
validateReflectionCandidate_pointerCombination_order2_invalid_with_intersecting_scene_segment   
)
private

◆ FRIEND_TEST() [30/30]

TYAcousticModel9613Solver2024::FRIEND_TEST ( test_TYAcousticModel9613Solver2024  ,
validateReflectionCandidate_pointerCombination_order2_valid   
)
private

◆ getGroundfactors()

bool TYAcousticModel9613Solver2024::getGroundfactors ( const std::deque< std::deque< TYSIntersection >> &  tabIntersectSegments,
const std::deque< OPoint3D > &  pathPoints2D,
double  hs,
double  hr,
double &  Gs,
double &  Gm,
double &  Gr 
) const
protected

Get ground factors for source, middle and receptor zones for a reflected path.

Parameters
[in]tabIntersectSegmentsArray of arrays of intersections for each path segment [Pi, Pi+1].
[in]pathPoints2DArray of path points Pi projected on the horizontal plane.
[in]hsHeight of the source.
[in]hrHeight of the receptor.
[out]GsGround factor of the source zone.
[out]GmGround factor of the middle zone.
[out]GrGround factor of the receptor zone.
Returns
true if succeeds; false otherwise.

Definition at line 278 of file TYAcousticModel9613Solver2024.cpp.

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

◆ makeReflectingSegmentCache()

TYAcousticModel9613Solver2024::ReflectingSegmentCache TYAcousticModel9613Solver2024::makeReflectingSegmentCache ( const TYSIntersection inter) const
private

Build the geometric cache associated with one reflecting segment.

Parameters
[in]interIntersection carrying the reflecting segment in segInter[1].
Returns
Cache associated with the support line of the reflecting segment.

Definition at line 841 of file TYAcousticModel9613Solver2024.cpp.

Here is the caller graph for this function:

◆ reflectPointAboutCachedLine()

void TYAcousticModel9613Solver2024::reflectPointAboutCachedLine ( const ReflectingSegmentCache cache,
const OPoint3D inputPoint,
OPoint3D reflectedPoint 
) const
private

Reflect a point about the support line stored in a reflecting segment cache.

Parameters
[in]cacheGeometric cache associated with the reflecting segment.
[in]inputPointPoint to reflect.
[out]reflectedPointReflected point.

Definition at line 872 of file TYAcousticModel9613Solver2024.cpp.

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

◆ sameReflectingSegment()

bool TYAcousticModel9613Solver2024::sameReflectingSegment ( const TYSIntersection lhs,
const TYSIntersection rhs 
) const
private

Check whether two reflecting segments are identical in plane EL.

Parameters
[in]lhsFirst intersection.
[in]rhsSecond intersection.
Returns
true if both reflecting segments are identical; false otherwise.

Definition at line 592 of file TYAcousticModel9613Solver2024.cpp.

Here is the caller graph for this function:

◆ validateReflectionCandidate()

bool TYAcousticModel9613Solver2024::validateReflectionCandidate ( const std::vector< const TYSIntersection * > &  barrierCombination,
const std::deque< OPoint3D > &  reflectionPointsList,
const std::deque< TYSIntersection > &  tabIntersect,
const OPoint3D sourcePoint,
const OPoint3D receptorPoint 
) const
private

Validate a reflection candidate against the reflecting segments of the scene. A reflection candidate is said valid when two conditions are met:

  • Rule 1: each reflection point belongs to a reflecting segment
  • Rule 2: the reflection track do not intersect any segment of the scene
Parameters
[in]barrierCombinationOrdered list of reflecting segments.
[in]reflectionPointsListList of reflection points from P1 to Pn.
[in]tabIntersectArray of intersections.
[in]sourcePointSource point.
[in]receptorPointReceptor point.
Returns
true if the reflection candidate is valid; false otherwise.

Definition at line 652 of file TYAcousticModel9613Solver2024.cpp.

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

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