T3CO Scenario File¶
Below is an example of a scenario file contents, in columnar format for readability. Usually the input CSV is in row form. Scenario selections become a selection
object in T3CO. Scenario files are one of two fundamental units of T3CO. The other is the FASTSim Vehicle
. To put it in plain English, if FASTSim Vehicles
are the peanut butter, Scenarios
are the jelly. These two objects literally flow through the code in a pair, in tandem. Most methods in T3CO have arguments for a Vehicle
object and its accompanying Scenario
object. If using row-based sources for vehicles and scenarios, the selection
value in the scenario file should correspond with the selection
value in the FASTSim input file. The Vehicle
of selection should correspond with Scenario
of selection 21 and they should flow through the code together. This is how we pair a vehicle with operating and economic conditions from the scenario to create total cost of ownership and performance results; as well as optimization targets and constraints.
column name | description | example value | type/bounds |
---|---|---|---|
selection |
< > | 110 |
NA |
scenario_name |
< > | Class 8 Sleeper cab mid roof (PHEV, 2050, no program) |
NA |
drive_cycle |
< > | [("EPA_Ph2_rural_interstate_65mph.csv", .86), ("EPA_Ph2_urban_highway_55mph.csv", .09), ("EPA_Ph2_transient.csv", .05)] |
Strings are drive cycle names or full paths to drive cycle. If using only one drive cycle,can be a single string. If using a composite set of cycles, must be a list of tuples. First tuple element is drive cycle string, second element is a float between 0 and 1:string or [(string,float),...] |
vmt_reduct_per_yr |
< > | nan |
[0, inf] |
vmt |
< > | [108010,117983,114998,104732] |
Should have a vmt entry in the list for every year the vehicle is operational based on vehicle_life_yr : [int,...] |
constant_trip_distance_mi |
< > | 0 |
int |
vehicle_life_yr |
< > | 4 |
int |
discount_rate_pct_per_yr |
< > | 0.03 |
float [0,1] |
ess_cost_dol_per_kw |
< > | 0 |
float |
ess_cost_dol_per_kwh |
< > | 85 |
float |
ess_base_cost_dol |
< > | 0 |
float |
ess_cost_reduction_dol_per_yr |
< > | 0 |
float |
ess_salvage_value_dol |
< > | 0 |
float |
pe_mc_cost_dol_per_kw |
< > | 11 |
float |
pe_mc_base_cost_dol |
< > | 350 |
float |
fc_ice_cost_dol_per_kw |
< > | 50 |
float |
fc_ice_base_cost_dol |
< > | 6250 |
float |
fc_fuelcell_cost_dol_per_kw |
< > | 85 |
float |
fs_cost_dol_per_kwh |
< > | 0.07 |
float |
fs_h2_cost_dol_per_kwh |
< > | 9.5 |
float |
plug_base_cost_dol |
< > | 500 |
float |
markup_pct |
< > | 1.2 |
float |
tax_rate_pct |
< > | 0.035 |
float |
fc_cng_ice_cost_dol_per_kw |
< > | 55 |
float |
fs_cng_cost_dol_per_kwh |
< > | 7.467735503 |
float |
vehicle_glider_cost_dol |
< > | 112759 |
float |
segment_name |
< > | HDTC8 |
string |
gvwr_kg |
< > | 36287.43275 |
float |
gvwr_credit_kg |
< > | 0 |
amount [kg] vehicle can exceed GVWR[kg], applies during component sizing during optimization int |
fuel |
< > | ["cd_electricity", "cd_diesel", "cs_diesel"] |
multiple fuel types are permissible, or a single type can be input. For PHEVs, there must be specified two Charge Depleting and on Charge Sustaining as shownstring or [string,...] |
maint_oper_cost_dol_per_mi |
< > | [0.15,0.16,...0.19] |
float list |
vocation |
< > | Long haul |
string |
model_year |
< > | 2050 |
int |
region |
< > | FY21NoProgram |
string |
target_range_mi |
< > | 500 |
float Note: for PHEVs, T3CO will meet this requirement in CD mode |
min_speed_at_6pct_grade_in_5min_mph |
< > | 30 |
float |
min_speed_at_1p25pct_grade_in_5min_mph |
< > | 65 |
float |
max_time_0_to_60mph_at_gvwr_s |
< > | 80 |
float |
max_time_0_to_30mph_at_gvwr_s |
< > | 20 |
float |
lw_imp_curve_sel |
< > | MDHD_noprogram_2050 |
string Optimization "knob" handling. For certain knobs, there are curves that apply. This value references a column in the light-weighting curves file. Example: light weighting curves. Referenced in sweep.py here |
eng_eff_imp_curve_sel |
< > | MDHD_large_noprogram_2050 |
string Optimization "knob" handling. For certain knobs, there are curves that apply. This value references a column in the engine efficiency improvement curves file. Example: engine efficiency curves. Referenced in sweep.py here |
aero_drag_imp_curve_sel |
< > | SleeperTractorMidRoof_noprogram_2050 |
string Optimization "knob" handling. For certain knobs, there are curves that apply. This value references a column in the drag coefficient improvement curves file. Example: drag coefficient curves. Referenced in sweep.py here |
skip_opt |
< > | True |
Important column! Though it's a bit buried, this column will designate whether this scenario and vehicle combination should be optimized or not. If True , then optimization is skipped.True or False |
knob_min_ess_kwh |
< > | 300 |
nan or float Optimization settings If this "knob" has a min and max value input from user, it implies that this opimization parameter should be used. |
knob_max_ess_kwh |
< > | 1500 |
nan or float Optimization settings If this "knob" has a min and max value input from user, it implies that this opimization parameter should be used. |
knob_min_motor_kw |
< > | 200 |
nan or float Optimization settings If this "knob" has a min and max value input from user, it implies that this opimization parameter should be used. |
knob_max_motor_kw |
< > | 400 |
nan or float Optimization settings If this "knob" has a min and max value input from user, it implies that this opimization parameter should be used. |
knob_min_fc_kw |
< > | 100 |
nan or float Optimization settings If this "knob" has a min and max value input from user, it implies that this opimization parameter should be used. |
knob_max_fc_kw |
< > | 300 |
nan or float Optimization settings If this "knob" has a min and max value input from user, it implies that this opimization parameter should be used. |
knob_min_fs_kwh |
< > | 100 |
nan or float Optimization settings If this "knob" has a min and max value input from user, it implies that this opimization parameter should be used. |
knob_max_fs_kwh |
< > | 600 |
nan or float Optimization settings If this "knob" has a min and max value input from user, it implies that this opimization parameter should be used. |
constraint_range |
< > | nan |
True or False Optimization setting. If True, then the constraint is applied and tests for range must be met or exceeded. Test threshold designated by value in target_range_mi |
constraint_accel |
< > | nan |
True or False Optimization setting. If True, then the constraint is applied and tests for acceleratiion. must be met or exceeded Test threshold designated by value in max_time_0_to_60mph_at_gvwr_s and max_time_0_to_30mph_at_gvwr_s |
constraint_grade |
< > | nan |
True or False Optimization setting. If True, then the constraint is applied and tests for grade must be met or exceeded Test threshold designated by value in min_speed_at_6pct_grade_in_5min_mph and min_speed_at_1p25pct_grade_in_5min_mph |
objective_tco |
< > | nan |
True or False Optimization setting. If True, then the objective to minimize Total Cost of Ownership is applied. |
constraint_c_rate |
< > | True |
True or False Optimization setting. If True, then the constraint for c rate is applied |
shifts_per_year |
< > | 260 |
PHEVs only! See PHEV Docs |
phev_utility_factor_override |
< > | .6 |
PHEVs only! See PHEV Docs |
soc_norm_init_for_grade_pct |
< > | .8 |
PHEVs only! See PHEV Docs |
soc_norm_init_for_accel_pct |
< > | .85 |
PHEVs only! See PHEV Docs |
motor_power_override_kw_fc_demand_on_pct |
< > | .95 |
PHEV specific inputs. See PHEV Docs |
ess_init_soc_grade |
< > | .8 |
[0,1] For BEV or HEV, during grade test, if initial SOC override is desired, rather than using the FASTSim + T3CO intial SOC regime |
ess_init_soc_accel |
< > | .85 |
[0,1] For BEV or HEV, during grade test, if initial SOC override is desired, rather than using the FASTSim + T3CO intial SOC regime |