49 double vMin,
double vMax,
double vStep,
50 double aMin,
double aMax,
double aStep,
51 double sMin,
double sMax,
double sStep,
56 std::ofstream o(of.c_str());
61 for (
double v = vMin; v <= vMax; v += vStep) {
62 for (
double a = aMin; a <= aMax; a += aStep) {
63 for (
double s = sMin; s <= sMax; s += sStep) {
65 o << v <<
";" << a <<
";" << s <<
";" <<
"CO" <<
";" << result.
CO << std::endl;
66 o << v <<
";" << a <<
";" << s <<
";" <<
"CO2" <<
";" << result.
CO2 << std::endl;
67 o << v <<
";" << a <<
";" << s <<
";" <<
"HC" <<
";" << result.
HC << std::endl;
68 o << v <<
";" << a <<
";" << s <<
";" <<
"PMx" <<
";" << result.
PMx << std::endl;
69 o << v <<
";" << a <<
";" << s <<
";" <<
"NOx" <<
";" << result.
NOx << std::endl;
70 o << v <<
";" << a <<
";" << s <<
";" <<
"fuel" <<
";" << result.
fuel << std::endl;
71 o << v <<
";" << a <<
";" << s <<
";" <<
"electricity" <<
";" << result.
electricity << std::endl;
81main(
int argc,
char** argv) {
84 oc.
setApplicationName(
"emissionsMap",
"Eclipse SUMO emissionsMap Version " VERSION_STRING);
89 oc.
addDescription(
"iterate",
"Processing",
TL(
"If set, maps for all available emissions are written."));
92 oc.
addDescription(
"emission-class",
"Processing",
TL(
"Defines the name of the emission class to generate the map for."));
95 oc.
addDescription(
"v-min",
"Processing",
TL(
"Defines the minimum velocity boundary of the map to generate (in m/s)."));
97 oc.
addDescription(
"v-max",
"Processing",
TL(
"Defines the maximum velocity boundary of the map to generate (in m/s)."));
99 oc.
addDescription(
"v-step",
"Processing",
TL(
"Defines the velocity step size (in m/s)."));
101 oc.
addDescription(
"a-min",
"Processing",
TL(
"Defines the minimum acceleration boundary of the map to generate (in m/s^2)."));
103 oc.
addDescription(
"a-max",
"Processing",
TL(
"Defines the maximum acceleration boundary of the map to generate (in m/s^2)."));
105 oc.
addDescription(
"a-step",
"Processing",
TL(
"Defines the acceleration step size (in m/s^2)."));
107 oc.
addDescription(
"s-min",
"Processing",
TL(
"Defines the minimum slope boundary of the map to generate (in deg)."));
109 oc.
addDescription(
"s-max",
"Processing",
TL(
"Defines the maximum slope boundary of the map to generate (in deg)."));
111 oc.
addDescription(
"s-step",
"Processing",
TL(
"Defines the slope step size (in deg)."));
116 oc.
addDescription(
"output",
"Output",
TL(
"Defines the file (or the path if --iterate was set) to write the map(s) into."));
120 oc.
addDescription(
"emissions.volumetric-fuel",
"Emissions",
TL(
"Return fuel consumption values in (legacy) unit l instead of mg"));
123 oc.
addDescription(
"phemlight-path",
"Emissions",
TL(
"Determines where to load PHEMlight definitions from"));
126 oc.
addDescription(
"phemlight-year",
"Emissions",
TL(
"Enable fleet age modelling with the given reference year in PHEMlight5"));
129 oc.
addDescription(
"phemlight-temperature",
"Emissions",
TL(
"Set ambient temperature to correct NOx emissions in PHEMlight5"));
147 double vStep = oc.
getFloat(
"v-step");
150 double aStep = oc.
getFloat(
"a-step");
153 double sStep = oc.
getFloat(
"s-step");
155 if (!oc.
isSet(
"emission-class")) {
158 if (!oc.
isSet(
"output-file")) {
163 c, vMin, vMax, vStep, aMin, aMax, aStep, sMin, sMax, sStep, oc.
getBool(
"verbose"));
165 if (!oc.
isSet(
"output-file")) {
166 oc.
set(
"output-file",
"./");
169 for (std::vector<SUMOEmissionClass>::const_iterator ci = classes.begin(); ci != classes.end(); ++ci) {
172 c, vMin, vMax, vStep, aMin, aMax, aStep, sMin, sMax, sStep, oc.
getBool(
"verbose"));
180 if (std::string(e.what()) != std::string(
"Process Error") && std::string(e.what()) != std::string(
"")) {
193 std::cout <<
"Success." << std::endl;
#define WRITE_MESSAGEF(...)
std::vector< std::string > StringVector
Definition of a vector of strings.
const double INVALID_DOUBLE
invalid double
An upper class for objects with additional parameters.
static MsgHandler * getErrorInstance()
Returns the instance to add errors to.
virtual void inform(std::string msg, bool addType=true)
adds a new error to the list
A storage for options typed value containers)
void addDescription(const std::string &name, const std::string &subtopic, const std::string &description)
Adds a description for an option.
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.
double getFloat(const std::string &name) const
Returns the double-value of the named option (only for Option_Float)
void setApplicationName(const std::string &appName, const std::string &fullName)
Sets the application name.
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
void addSynonyme(const std::string &name1, const std::string &name2, bool isDeprecated=false)
Adds a synonyme for an options name (any order)
void doRegister(const std::string &name, Option *o)
Adds an option under the given name.
void setApplicationDescription(const std::string &appDesc)
Sets the application description.
bool set(const std::string &name, const std::string &value, const bool append=false)
Sets the given value for the named option.
void addOptionSubTopic(const std::string &topic)
Adds an option subtopic.
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
static OptionsCont & getOptions()
Retrieves the options.
bool processMetaOptions(bool missingOptions)
Checks for help and configuration output, returns whether we should exit.
static void setArgs(int argc, char **argv)
Stores the command line arguments for later parsing.
static void getOptions(const bool commandLineOnly=false)
Parses the command line arguments and loads the configuration.
static std::string getName(const SUMOEmissionClass c)
Checks whether the string describes a known vehicle class.
static const std::vector< SUMOEmissionClass > getAllClasses()
Checks whether the string describes a known vehicle class.
static Emissions computeAll(const SUMOEmissionClass c, const double v, const double a, const double slope, const EnergyParams *param)
Returns the amount of all emitted pollutants given the vehicle type and state (in mg/s or ml/s for fu...
static SUMOEmissionClass getClassByName(const std::string &eClass, const SUMOVehicleClass vc=SVC_IGNORING)
Checks whether the string describes a known vehicle class.
static void close()
Closes all of an applications subsystems.
static void addConfigurationOptions(OptionsCont &oc)
Adds configuration options to the given container.
static void addReportOptions(OptionsCont &oc)
Adds reporting options to the given container.
static void init()
Initialises the xml-subsystem.
int main(int argc, char **argv)
void single(const std::string &of, const std::string &className, SUMOEmissionClass c, double vMin, double vMax, double vStep, double aMin, double aMax, double aStep, double sMin, double sMax, double sStep, bool verbose)
Storage for collected values of all emission types.