88 double hs,
double hr,
double Gs,
double Gm,
double Gr)
96 tabEtapes[0]._Absorption;
107 tabEtapes[0]._Absorption;
110 for (i = 1; i < tabEtapes.size(); i++)
115 tabEtapes[i]._Absorption);
135 for (
unsigned int i = 0; i < TY_SPECTRE_OCT_NB_ELMT; i++)
190 for (
size_t i = 0; i < tabEtapes.size(); i++)
199 receptor_event->
pos = ptR;
209 bool bHasIntermediateZone = dp > 30 * (hs + hr);
212 if (bHasIntermediateZone)
214 q = 1 - 30 * (hs + hr) / dp;
225 double a = 1.5 + 3.0 * exp(-0.12 * (h - 5) * (h - 5)) * (1 - exp(-dp / 50.0)) +
226 5.7 * exp(-0.09 * h * h) * (1 - exp(-2.8 * pow(10, -6) * dp * dp));
227 double b = 1.5 + 8.6 * exp(-0.09 * h * h) * (1 - exp(-dp / 50.0));
228 double c = 1.5 + 14.0 * exp(-0.46 * h * h) * (1 - exp(-dp / 50.0));
229 double d = 1.5 + 5.0 * exp(-0.9 * h * h) * (1 - exp(-dp / 50.0));
231 const double As[9]{-1.5, -1.5, -1.5 + G * a, -1.5 + G * b, -1.5 + G *
c,
232 -1.5 + G * d, -1.5 * (1 - G), -1.5 * (1 - G), -1.5 * (1 - G)};
241 const double Am[9]{-3.0 * q, -3.0 * q, -3 * q * (1 - Gm),
242 -3 * q * (1 - Gm), -3 * q * (1 - Gm), -3 * q * (1 - Gm),
243 -3 * q * (1 - Gm), -3 * q * (1 - Gm), -3 * q * (1 - Gm)};
251 static std::map<TYTypeChemin, std::string> strings;
252 if (strings.size() == 0)
260 return out << strings[value];
::std::ostream & operator<<(::std::ostream &out, const TYTypeChemin &value)
std::deque< TYEtape > TYTabEtape
TYEtape collection.
Representation of one of the most optimal path between source and receptor: S—>R.
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 ...
OSpectreOctave calcGroundAttenuationM(double q, double Gm)
double _distance
Direct distance between source and receptor.
OSpectreOctave & getAttenuation()
Return the path attenuation.
void calcAttenuation(const TYTabEtape &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)
void computeBarAttenuation(const OSpectreOctave &Dz, const bool vertical, const bool left)
bool operator==(const TYChemin &other) const
Operator ==.
virtual ~TYChemin()
Destructor.
TYTypeChemin _typeChemin
Path type (has an influence on the algorithm)
acoustic_path * _eq_path
Equivalent acoustic_path.
bool operator!=(const TYChemin &other) const
Operator !=.
TYChemin & operator=(const TYChemin &other)
Operator =.
OSpectreOctave calcGroundAttenuationSR(double dp, double h, double G)
void calcGroundAttenuations(double distance, double hs, double hr, double Gs, double Gm, double Gr)
void build_eq_path(const TYTabEtape &tabEtapes)
std::map< TYTypeAttenuation, OSpectreOctave > _attenuations
Attenuations spectra of the path.
void setAttenuationBarWhenNoPath(bool vertical, bool left)
Set attenuation bar to max to traduce the lack of diffracted ray on this path.
acoustic_path * get_ray(OPoint3D ptR)
double _longueur
Total path length.
This class store data and provide functions to manipulate event in the acoustic context.
ACOUSTIC_EVENT_TYPES type
Event type.
OPoint3D pos
Event position.
virtual void cleanEventsTab()
clean tab of events
virtual void addEvent(acoustic_event *TYEvent)
Add an event to the events list of the ray.
static LPSolverConfiguration get()
Get the configuration.
This file provides class for solver configuration.