Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/utils/emissions/HelpersHarmonoise.h
169678 views
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.
4
// This program and the accompanying materials are made available under the
5
// terms of the Eclipse Public License 2.0 which is available at
6
// https://www.eclipse.org/legal/epl-2.0/
7
// This Source Code may also be made available under the following Secondary
8
// Licenses when the conditions for such availability set forth in the Eclipse
9
// Public License 2.0 are satisfied: GNU General Public License, version 2
10
// or later which is available at
11
// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13
/****************************************************************************/
14
/// @file HelpersHarmonoise.h
15
/// @author Daniel Krajzewicz
16
/// @author Michael Behrisch
17
/// @date Mon, 10.05.2004
18
///
19
// Helper methods for Harmonoise-based noise emission computation
20
/****************************************************************************/
21
#pragma once
22
#include <config.h>
23
24
#include <vector>
25
#include <limits>
26
#include <cmath>
27
#include <utils/common/StdDefs.h>
28
#include <utils/common/SUMOVehicleClass.h>
29
30
31
// ===========================================================================
32
// class definitions
33
// ===========================================================================
34
/**
35
* @class HelpersHarmonoise
36
* @brief Helper methods for Harmonoise-based noise emission computation
37
*
38
* The stored values compute the recepted noise of either passenger or heavy
39
* duty vehicles for a distance of 10m from the noise source.
40
*/
41
class HelpersHarmonoise {
42
public:
43
/** @brief Returns the noise produced by the a vehicle of the given type at the given speed
44
*
45
* @param[in] c The vehicle emission class
46
* @param[in] v The vehicle's current velocity
47
* @param[in] a The vehicle's current acceleration
48
* @return The noise produced by the vehicle of the given class running with v and a
49
*/
50
static double computeNoise(SUMOEmissionClass c, double v, double a);
51
52
53
/** @brief Computes the resulting noise
54
*
55
* @param[in] val The sum of converted vehicle noises ( pow(10., (<NOISE>/10.)) )
56
* @return The resulting sum
57
*/
58
inline static double sum(double val) {
59
return double(10. * log10(val));
60
}
61
62
63
private:
64
/// @name vehicle class noise emission coefficients
65
/// @{
66
67
/// @brief rolling component, light vehicles, alpha
68
static double myR_A_C1_Parameter[27];
69
70
/// @brief rolling component, light vehicles, beta
71
static double myR_B_C1_Parameter[27];
72
73
/// @brief rolling component, heavy vehicles, alpha
74
static double myR_A_C3_Parameter[27];
75
76
/// @brief rolling component, heavy vehicles, beta
77
static double myR_B_C3_Parameter[27];
78
79
/// @brief traction component, light vehicles, alpha
80
static double myT_A_C1_Parameter[27];
81
82
/// @brief traction component, light vehicles, beta
83
static double myT_B_C1_Parameter[27];
84
85
/// @brief traction component, heavy vehicles, alpha
86
static double myT_A_C3_Parameter[27];
87
88
/// @brief traction component, heavy vehicles, beta
89
static double myT_B_C3_Parameter[27];
90
/// @}
91
92
/// @brief A-weighted correction for octave bands
93
static const double myAOctaveBandCorrection[27];
94
95
/// @brief A-weighted correction for surface
96
static const double mySurfaceCorrection[27];
97
};
98
99