|
| Car (double carLength_m, double carDragCoef, double carFrontalArea_sqm, double carEmptyWeight_t, double carCurrentWeight_t, int carNoOfAxles, int carType, double auxiliaryPower_kw=EC::DefaultCarAuxiliaryPower, double batteryMaxCapacity_kWh=EC::DefaultCarBatteryMaxCapacity, double batteryInitialCharge_perc=EC::DefaultCarBatteryInitialCharge, double tenderMaxCapacity_kg_l=EC::DefaultCarTenderMaxCapacity, double tenderInitialCapacity_perc=EC::DefaultCarTenderInitialCapacity, std::string carName=DefaultCarName) |
| Constructor.
|
|
double | getCargoNetWeight () |
| Gets the cargo net weight.
|
|
void | setCarCurrentWeight (double newCurrentWeight) |
| Sets the car's current weight.
|
|
double | getResistance (double trainSpeed) override |
| Gets the resistance contributed by this car to the whole train.
|
|
double | getEnergyConsumption (double &timeStep) |
| Gets the energy consumption of the car (in case there is auxiliary power).
|
|
std::pair< bool, double > | consumeFuel (double timeStep, double trainSpeed, double EC_kwh, double carVirtualTractivePower=std::numeric_limits< double >::quiet_NaN(), double dieselConversionFactor=EC::DefaultDieselConversionFactor, double biodieselConversionFactor=EC::DefaultBiodieselConversionFactor, double hydrogenConversionFactor=EC::DefaultHydrogenConversionFactor, double dieselDensity=EC::DefaultDieselDensity, double biodieselDensity=EC::DefaultBioDieselDensity, double hydrogenDensity=EC::DefaultHydrogenDensity) override |
| Consumes fuel from the tender.
|
|
double | getMaxProvidedEnergy (double &timeStep) |
| Gets the maximum energy provided by the car.
|
|
bool | canProvideEnergy (double &EC, double &timeStep) |
| Checks if the car can provide energy.
|
|
virtual double | getResistance (double trainSpeed) |
| Gets the resistance applied on only this vehicle.
|
|
virtual void | resetTimeStepConsumptions () |
| Resets the energy consumptions data for the current time step.
|
|
virtual void | setCurrentWeight (double newCurrentWeight) |
| sets the current weight of the vehicle
|
|
virtual std::pair< bool, double > | consumeFuelDiesel (double EC_kwh, double dieselConversionFactor, double dieselDensity) |
| consume the locomotive diesel fuel.
|
|
virtual std::pair< bool, double > | consumeFuelBioDiesel (double EC_kwh, double bioDieselConversionFactor, double bioDieselDensity) |
| consume the locomotive bio diesel fuel.
|
|
virtual std::pair< bool, double > | consumeElectricity (double timeStep, double EC_kwh) |
| consume any source of electricity in the locomotive; either the catenary or the batteries.
|
|
virtual std::pair< bool, double > | consumeFuelHydrogen (double EC_kwh, double hydrogenConversionFactor, double hydrogenDensity) |
| consume the locomotive hydrogen fuel.
|
|
virtual double | refillBattery (double timeStep, double EC_kwh) |
| refill the locomtoive battery
|
|
virtual bool | rechargeCatenary (double EC_kwh) |
| Rechage catenary and grid system if they are available.
|
|
virtual std::pair< bool, double > | consumeFuel (double timeStep, double trainSpeed, double EC_kwh, double LocomotiveVirtualTractivePower=std::numeric_limits< double >::quiet_NaN(), double dieselConversionFactor=EC::DefaultDieselConversionFactor, double biodieselConversionFactor=EC::DefaultBiodieselConversionFactor, double hydrogenConversionFactor=EC::DefaultHydrogenConversionFactor, double dieselDensity=EC::DefaultDieselDensity, double biodieselDensity=EC::DefaultBioDieselDensity, double hydrogenDensity=EC::DefaultHydrogenDensity) |
| Consume fuel or battery from the vehicle.
|
|
void | setBattery (double maxCharge, double initialChargePercentage, double depthOfDischarge, double batteryCRate, double maxRechargeSOC=0.9, double minRechargeSOC=0.5) |
| Sets the battery properties.
|
|
double | getBatteryMaxCharge () const |
| Gets the maximum charge of the battery.
|
|
void | setBatteryMaxCharge (double newMaxCharge) |
| Sets the maximum charge of the battery.
|
|
double | getBatteryInitialCharge () const |
| Gets the initial charge of the battery.
|
|
void | setBatteryInitialCharge (double newInitialCharge) |
| Sets the initial charge of the battery.
|
|
double | getBatteryCurrentCharge () const |
| Gets the current charge of the battery.
|
|
std::pair< bool, double > | consumeBattery (double timeStep, double consumedCharge) |
| Consumes charge from the battery.
|
|
double | rechargeBatteryForHybrids (double timeStep, double recharge) |
| Recharges the battery for hybrid vehicles.
|
|
double | rechargeBatteryByRegeneratedEnergy (double timeStep, double recharge) |
| Recharges the battery by regenerated energy.
|
|
double | getBatteryStateOfCharge () const |
| Gets the state of charge of the battery.
|
|
double | getBatteryDOD () const |
| Gets the depth of discharge of the battery.
|
|
void | setBatteryDOD (double newBatteryDOD) |
| Sets the depth of discharge of the battery.
|
|
double | getBatteryCRate () const |
| Gets the C-Rate of discharge for the battery.
|
|
void | setBatteryCRate (double newBatteryCRate) |
| Sets the C-Rate of discharge for the battery.
|
|
bool | isBatteryDrainable (double requiredCharge) |
| Checks if the battery can be drained by the required charge.
|
|
bool | isBatteryRechargable () |
| Checks if the battery can be recharged.
|
|
double | getBatteryMaxDischarge (double timeStep) |
| Gets the maximum discharge of the battery.
|
|
double | getBatteryMaxRecharge (double timeStep) |
| Gets the maximum recharge of the battery.
|
|
bool | isRechargeRequired () const |
| Checks if the battery requires a recharge.
|
|
double | getBatteryRechargeSOCUpperBound () const |
| Gets the upper bound of the battery's recharge state of charge.
|
|
void | setBatteryRechargeSOCUpperBound (double newBatteryMaxSOC) |
| Sets the upper bound of the battery's recharge state of charge.
|
|
double | getBatteryRechargeSOCLowerBound () const |
| Gets the lower bound of the battery's recharge state of charge.
|
|
void | setBatteryRechargeSOCLowerBound (double newBatteryRechargeSOCLowerBound) |
| Sets the lower bound of the battery's recharge state of charge.
|
|
double | getBatteryCumEnergyConsumption () |
| Gets the cumulative energy consumption for this battery only.
|
|
double | getBatteryCumEnergyRegenerated () |
| Gets the cumulative energy regenerated for this battery only.
|
|
double | getBatteryCumNetEnergyConsumption () |
| Gets the cumulative net energy consumption for this battery.
|
|
bool | batteryHasCharge () |
| Checks if the battery has enough charge.
|
|
bool | IsBatteryExceedingThresholds () |
| Checks if the battery exceeds certain thresholds.
|
|
void | SetTank (double maxCapacity, double initialCapacityPercentage, double depthOfDischarge) |
| Set the main properties of the tank (initialize the tank)
|
|
double | getTankMaxCapacity () const |
| Gets the maximum capacity of the tank.
|
|
void | setTankMaxCapacity (double newMaxCapacity) |
| Sets the maximum capacity of the tank.
|
|
double | getTankInitialCapacity () const |
| Gets the initial capacity of the tank.
|
|
void | setTankInitialCapacity (double newInitialCapacityPercentage) |
| Sets the initial capacity of the tank.
|
|
double | getTankCurrentCapacity () const |
| Gets the current capacity of the tank.
|
|
double | consumeTank (double consumedAmount) |
| Consumes fuel from the tank.
|
|
double | getTankStateOfCapacity () const |
| Gets the state of capacity of the tank.
|
|
bool | isTankDrainable (double consumedAmount) |
| Checks if the specified amount of fuel is drainable from the tank.
|
|
double | getTankDOD () const |
| Gets the depth of discharge of the tank.
|
|
void | setTankDOD (double newTankDOD) |
| Sets the depth of discharge of the tank.
|
|
bool | tankHasFuel () |
| Checks if the tank has fuel (current capacity > 0)
|
|
double | getTankCumConsumedFuel () const |
| Gets the total amount of fuel consumed from the tank.
|
|
A rail car.
The Car class represents a rail car in a train system. It is a type of TrainComponent and can carry either commodities or fuel. Unlike the locomotive, the car does not provide power to the train. However, in the case of a fuel tender, it can provide power to the locomotive when its stored power is low. This is achieved by consuming fuel and reducing the weight of the car.
@Author Ahmed @Date 2/14/2023