49 if (TYChemin::operator!=(other))
69 double Gs,
double Gm,
double Gr)
77 tabEtapes[0]._Absorption;
88 tabEtapes[0]._Absorption;
91 for (i = 1; i < tabEtapes.size(); i++)
96 tabEtapes[i]._Absorption);
109 double dOR,
double a,
double h,
113 return allWavelengthsAreReflected;
136 for (
unsigned int i = 0; i < TY_SPECTRE_OCT_NB_ELMT; i++)
193 bool bHasIntermediateZone = dp > 30 * (hs + hr);
196 if (bHasIntermediateZone)
198 q = 1 - 30 * (hs + hr) / dp;
213 double a = 1.5 + 3.0 * exp(-0.12 * (h - 5) * (h - 5)) * (1 - exp(-dp / 50.0)) +
214 5.7 * exp(-0.09 * h * h) * (1 - exp(-2.8 * pow(10, -6) * dp * dp));
215 double b = 1.5 + 8.6 * exp(-0.09 * h * h) * (1 - exp(-dp / 50.0));
216 double c = 1.5 + 14.0 * exp(-0.46 * h * h) * (1 - exp(-dp / 50.0));
217 double d = 1.5 + 5.0 * exp(-0.9 * h * h) * (1 - exp(-dp / 50.0));
219 const double As[9]{-1.5, -1.5, -1.5 + G * a, -1.5 + G * b, -1.5 + G *
c,
220 -1.5 + G * d, -1.5 * (1 - G), -1.5 * (1 - G), -1.5 * (1 - G)};
229 const double Am[9]{-3.0 * q, -3.0 * q, -3 * q * (1 - Gm),
230 -3 * q * (1 - Gm), -3 * q * (1 - Gm), -3 * q * (1 - Gm),
231 -3 * q * (1 - Gm), -3 * q * (1 - Gm), -3 * q * (1 - Gm)};
240 double hr,
double dp)
const
242 return Agr_s + Agr_r + Agr_m;
Representation of one of the most optimal path between source and receptor: S—>R Specific derivation ...
std::deque< TYEtape9613Solver > TYTabEtape9613Solver
TYEtape collection.
Class for the definition of atmospheric conditions.
OSpectreOctave compute_length_absorption_oct(double length) const
double * getTabValReel() override
Get an array of the real values of the spectrum.
Representation of one of the most optimal path between source and receptor: S—>R. The class TYChemin ...
bool operator!=(const TYChemin9613Solver &other) const
Operator !=.
bool operator==(const TYChemin9613Solver &other) const
Operator ==.
OSpectreOctave calcGroundAttenuationM(double q, double Gm)
TYChemin9613Solver & operator=(const TYChemin9613Solver &other)
Operator =.
void calcGroundAttenuations(double distance, double hs, double hr, double Gs, double Gm, double Gr)
~TYChemin9613Solver() override
Destructor.
OSpectreOctave calcGroundAttenuationSR(double dp, double h, double G)
std::map< TYTypeAttenuation, OSpectreOctave > _attenuations
Attenuations spectra of the path.
void setMinimalExtensionConditionReflection(const OSpectreOctave &filter)
Set the minimal extension condition reflection.
void setAttenuationBarWhenNoPath(bool vertical, bool left)
Set attenuation bar to max to traduce the lack of diffracted ray on this path.
OSpectreOctave & getAttenuation(const TYTypeAttenuation type)
Return attenuation of the path of the type.
void calcAttenuation(const TYTabEtape9613Solver &tabEtapes, const AtmosphericConditions &atmos, double dp=0.0, double hs=0.0, double hr=0.0, double Gs=0.5, double Gm=0.5, double Gr=0.5)
Compute the global attenuation on the path.
virtual void calcCylinderReflectionAttenuation(const OPoint3D &S, const OPoint3D &R, const OPoint3D &P, const OPoint3D &M, double r, const OVector3D &axis)
Compute attenuation when a reflection occur on a cylinder Its value is 0 for 9613Solver.
virtual OSpectreOctave calcMinimalExtensionConditionOneReflection(const OPoint3D &Oprev, const OPoint3D &O, double d_SO, double d_OR, double a, double h, const OVector3D &n) const
Evaluate minimal extension condition for a specular reflection on a flat surface in function of the w...
void setAttenuation(const TYTypeAttenuation &type, const OSpectreOctave &att)
Set the atmospheric attenuation.
TYChemin9613Solver()
Constructor.
void computeBarAttenuation(const OSpectreOctave &Dz, const bool vertical, const bool left)
Compute barrier attenuation on the path. It implements recommendation 5.5 of 17534-3 standard,...
virtual OSpectreOctave calcTotalGroundAttenuation(const OSpectreOctave &Agr_s, const OSpectreOctave &Agr_r, const OSpectreOctave &Agr_m, double hs, double hr, double dp) const
Compute total ground attenuation Agr from region ground attenuations and geometric configuration.
Representation of one of the most optimal path between source and receptor: S—>R. The class TYChemin ...
TYTypeChemin _typeChemin
Path type (has an influence on the algorithm)
TYChemin & operator=(const TYChemin &other)
Operator =.
void build_eq_path(const T &tabEtapes)
build an acoustic_path from the tab of etapes
double _longueur
Total path length.
This file provides class for solver configuration.