The following table contains a list of simulation parameters used with MATLAB.
Variable |
Type |
Description |
---|---|---|
simulation_parameters.generators(i).emissions_factor_CO |
double |
grams per unit of fuel (i.e. g/L, g/kg, or g/m3 depending on fuel) |
simulation_parameters.generators(i).emissions_factor_NOx |
double |
|
simulation_parameters.generators(i).emissions_factor_PM |
double |
|
simulation_parameters.generators(i).emissions_factor_UHC |
double |
|
simulation_parameters.generators(i).emissions_sulfur_PM_ratio |
double |
|
simulation_parameters.generators(i).fuel.carbon_content |
double |
The mass based carbon content of the fuel [%] |
simulation_parameters.generators(i).fuel.cost |
double |
cost per unit, i.e. $/L |
simulation_parameters.generators(i).fuel.density |
double |
kg/m3 |
simulation_parameters.generators(i).fuel. initial_fuel_available |
double |
Total fuel available [L] if limit_consumption is true |
simulation_parameters.generators(i).fuel.limit_consumption |
bool |
Indicates if consumption should be limited [T/F] |
simulation_parameters.generators(i).fuel.lower_heating_value |
double |
MJ/kg |
simulation_parameters.generators(i).fuel.name |
string |
|
simulation_parameters.generators(i).fuel.sulfur_content |
double |
The mass based sulfur content of the fuel [%] |
simulation_parameters.generators(i).fuel_curve_intercept |
double |
The no-load fuel consumption of the generator divided by its rated capacity [L/hr/kW_rated] |
simulation_parameters.generators(i).fuel_curve_slope |
double |
The marginal fuel consumption of the generator [L/hr/kW_output] |
simulation_parameters.generators(i).lifetime_in_hours |
double |
Lifetime of the generator in operating hours [hr] |
simulation_parameters.generators(i).minimum_load |
double |
% |
simulation_parameters.generators(i).minimum_runtime |
double |
Minimum amount of time the unit must run [minutes] |
simulation_parameters.generators(i). use_nonlinear_fuel_curve |
bool |
Nonlinear fuel curve equation: nonlinear_x2 * x^2 + nonlinear_x1 * x + nonlinear_x0 = Q
where Q = fuel consumption in l/hr and x = power_output / generator_capacity [0,1] |
simulation_parameters.generators(i).nonlinear_x0 |
double |
|
simulation_parameters.generators(i).nonlinear_x1 |
double |
|
simulation_parameters.generators(i).nonlinear_x2 |
double |
|
simulation_parameters.generators(i).component_number |
int |
Unique index that is constant across all simulations |
simulation_parameters.generators(i).cost.capital |
double |
Generator initial capital cost |
simulation_parameters.generators(i).cost. operation_and_maintenance |
double |
Generator O&M [cost/hr] |
simulation_parameters.generators(i).cost.replacement |
double |
Replacelemt cost |
simulation_parameters.generators(i).is_AC |
bool |
Is the generator on the AC or DC bus in the schematic? |
simulation_parameters.generators(i).name |
string |
simulation_parameters.primary_loads(i).name |
string |
|
simulation_parameters.primary_loads(i).peak_load |
double |
kW, peak for the year |
simulation_parameters.primary_loads(i).is_AC |
bool |
Is this load on the AC bus or DC bus? |
simulation_parameters.pvs(i).name |
string |
|
simulation_parameters.pvs(i).component_number |
int |
Unique index that is constant across all simulations in each run |
simulation_parameters.pvs(i).cost.capital |
double |
PV initial capital cost |
simulation_parameters.pvs(i).cost.operation_and_maintenance |
double |
PV maintenance cost, per year |
simulation_parameters.pvs(i).cost.replacement |
double |
PV replacement cost |
simulation_parameters.pvs(i).is_AC |
bool |
Is the PV on the AC bus or the DC bus? |
simulation_parameters.pvs(i).lifetime_in_years |
double |
|
simulation_parameters.pvs(i).rated_capacity |
double |
PV capacity, kWp DC |
simulation_parameters.wind_turbines(i).name |
string |
|
simulation_parameters.wind_turbines(i).component_number |
int |
Unique index that is constant across all simulations in each run |
simulation_parameters.wind_turbines(i).cost.capital |
double |
Wind Turbine initial capital cost |
simulation_parameters.wind_turbines(i).cost.operation_and_maintenance |
double |
Wind Turbine maintenance cost, per year |
simulation_parameters.wind_turbines(i).cost.replacement |
double |
Wind Turbine replacement cost |
simulation_parameters.wind_turbines(i).is_AC |
bool |
Is the Wind Turbine on the AC bus or the DC bus? |
simulation_parameters.wind_turbines(i).power_curve |
Nx1 matrix<int> |
The power curve for the wind turbine. |
simulation_parameters.wind_turbines(i).rated_power simulation_parameters.wind_turbines(i).quantity |
double double |
Wind Turbine rated power KW Wind Turbine quantity in search space KW |
simulation_parameters.batteries(i).name |
string |
|
simulation_parameters.batteries(i).component_number |
int |
Unique index that is constant across all simulations |
simulation_parameters.batteries(i).cost.capital |
double |
Battery initial capital cost |
simulation_parameters.batteries(i).cost.operation_and_maintenance |
double |
Maintenance cost per year |
simulation_parameters.batteries(i).cost.replacement |
double |
Battery replacement cost |
simulation_parameters.batteries(i).is_AC |
bool |
On the AC bus or the DC bus? |
simulation_parameters.batteries(i).nominal_voltage |
double |
volts |
simulation_parameters.batteries(i).nominal_capacity |
double |
kWh nominal |
simulation_parameters.batteries(i).minimum_state_of_charge |
double |
% |
simulation_parameters.batteries(i).fractional_charge_efficiency |
double |
Equals the square-root of the roundtrip efficiency |
simulation_parameters.batteries(i).fractional_discharge_efficiency |
double |
|
simulation_parameters.batteries(i).wear_cost |
double |
Estimated cost per kWh for economic dispatch decisions |
simulation_parameters.batteries(i). battery_bank_maximum_absolute_soc |
double |
kWh |
simulation_parameters.batteries(i). battery_bank_minimum_absolute_soc |
double |
kWh |
simulation_parameters.batteries(i).dedicated_converter. rectifier_capacity |
double |
kW |
simulation_parameters.batteries(i).dedicated_converter. inverter_capacity |
double |
kW |
simulation_parameters.batteries(i).dedicated_converter. lifetime_in_years |
double |
years |
simulation_parameters.batteries(i).dedicated_converter. has_efficiency_tables |
bool |
If true, use efficiency tables to calculate converter losses. If false, use scalar vales rectifier_efficiency and inverter_efficiency |
simulation_parameters.batteries(i).dedicated_converter. inverter_efficiency_table |
matrix Nx2 |
First column is power level in kW, second column is corresponding efficiency in % |
simulation_parameters.batteries(i).dedicated_converter. rectifier_efficiency_table |
matrix Nx2 |
|
simulation_parameters.batteries(i).dedicated_converter. rectifier_efficiency |
double |
% |
simulation_parameters.batteries(i).dedicated_converter. inverter_efficiency |
double |
% |
simulation_parameters.batteries(i).has_dedicated_converter |
bool |
If false, do not apply the dedicated converter model |
simulation_parameters.converters(i).name |
string |
|
simulation_parameters.converters(i).component_number |
int |
Unique index that is constant across all simulations |
simulation_parameters.converters(i).cost.capital |
double |
Converter initial capital cost |
simulation_parameters.converters(i).cost. operation_and_maintenance |
double |
Maintenance cost per year |
simulation_parameters.converters(i).cost.replacement |
double |
Cost to replace converter at end of lifetime |
simulation_parameters.converters(i).inverter_capacity |
double |
kW, maximum output power of inverter |
simulation_parameters.converters(i).rectifier_capacity |
double |
kW, maximum output power of rectifier |
simulation_parameters.converters(i).inverter_efficiency |
double |
Inverting efficiency, % |
simulation_parameters.converters(i).rectifier_efficiency |
double |
Rectifying efficiency, % |
simulation_parameters.converters(i).lifetime_in_years |
double |
After specified duration, the replacement cost is incurred |
simulation_parameters.converters(i). able_to_parallel_with_ac_generator |
bool |
If false, inverter does not have grid-following capability, and can't operate simultaneously with the grid or AC generators. |
simulation_parameters.flywheels(i).name |
string |
|
simulation_parameters.flywheels(i).component_number |
int |
Unique index that is constant across all simulations |
simulation_parameters.flywheels(i).cost.capital |
double |
Flywheel initial capital cost |
simulation_parameters.flywheels(i).cost.operation_and_maintenance |
double |
Maintenance cost per year |
simulation_parameters.flywheels(i).cost.replacement |
double |
Cost to replace flywheel at end of lifetime |
simulation_parameters.flywheels(i).is_AC |
bool |
True if flywheel is on the AC bus |
simulation_parameters.flywheels(i).charge_discharge_capacity |
double |
kW operating capacity added to system whenever flywheel is on |
simulation_parameters.flywheels(i).parasitic_load |
double |
kW load required by the flywheel |
simulation_parameters.flywheels(i).quantity |
int |
Number of flywheels in the system |
simulation_parameters.flywheels(i).lifetime_in_years |
double |
After the lifetime elapses, the replacement cost is incurred |
simulation_parameters.custom_components(i).name |
string |
|
simulation_parameters.custom_components(i).component_number |
int |
Unique index that is constant across all simulations |
simulation_parameters.custom_components(i).cost.capital |
double |
Flywheel initial capital cost |
simulation_parameters.custom_components(i).cost.operation_and_maintenance |
double |
Maintenance cost per year |
simulation_parameters.custom_components(i).cost.replacement |
double |
Cost to replace flywheel at end of lifetime |
simulation_parameters.custom_components(i).is_AC |
bool |
True if flywheel is on the AC bus |
simulation_parameters.custom_components(i).capacity |
double |
kW operating capacity added to system whenever flywheel is on |
simulation_parameters.emissions.emissions_penalty_CO |
double |
Tariff for carbon monoxide emission per ton |
simulation_parameters.emissions.emissions_penalty_CO2 |
double |
Tariff for carbon dioxide emission per ton |
simulation_parameters.emissions.emissions_penalty_NOx |
double |
Tariff for nitrogen oxides emission per ton |
simulation_parameters.emissions.emissions_penalty_PM |
double |
Tariff per ton of particluate matter emitted |
simulation_parameters.emissions.emissions_penalty_SO2 |
double |
Tariff per ton of sulfur dioxide emission |
simulation_parameters.emissions.emissions_penalty_UHC |
double |
Tariff per ton of unburned hydrocarbon emitted |
simulation_parameters.emissions.max_emissions_CO |
double |
Limit on carbon monoxide emissions (kg/yr) |
simulation_parameters.emissions.max_emissions_CO2 |
double |
Limit on carbon dioxide emissions (kg/yr) |
simulation_parameters.emissions.max_emissions_NOx |
double |
Limit on emission of nitrogen oxides (kg/yr) |
simulation_parameters.emissions.max_emissions_PM |
double |
Limit on particulate matter emissions (kg/yr) |
simulation_parameters.emissions.max_emissions_SO2 |
double |
Limit on sulphur dioxide emissions (kg/yr) |
simulation_parameters.emissions.max_emissions_UHC |
double |
Limit on unburned hydrocarbon emission (kg/yr) |
simulation_parameters.emissions.use_max_emissions_CO |
bool |
Is the carbon monoxide emission limit used? |
simulation_parameters.emissions.use_max_emissions_CO2 |
bool |
Is the carbon dioxide emission limit enforced? |
simulation_parameters.emissions.use_max_emissions_NOx |
bool |
Is the nitrogen oxide emission limit in use? |
simulation_parameters.emissions.use_max_emissions_PM |
bool |
Is the particulate matter emission limit used? |
simulation_parameters.emissions.use_max_emissions_SO2 |
bool |
Use the limit on emission of sulfur oxides? |
simulation_parameters.emissions.use_max_emissions_UHC |
bool |
Is the unburned hydrocarbons limit enforced? |
simulation_parameters.operating_reserve.peak_load_requirement |
double |
Required operating reserve as a percentage of the annual peak load (%) |
simulation_parameters.operating_reserve.solar_requirement |
double |
Required operating reserve as a percentage of solar pv power output in the current timestep (%) |
simulation_parameters.operating_reserve.timestep_requirement |
double |
Required operating reserve as a percentage of the load in the current timestep (%) |
simulation_parameters.operating_reserve.wind_requirement |
double |
Required operating reserve as a percentage of wind turbine power output in the current timestep (%) |
Total operating reserve required in each time step is the sum of the above quantities and is provided in simulation_state.ac_bus.operating_capacity_requested and simulation_state.dc_bus.operating_capacity_requested.
simulation_parameters. maximum_annual_capacity_shortage |
double |
If the capacity shortage as a % of cumulative total operating capacity requested over the year is greater than specified here, the system is infeasible (%) |
simulation_parameters. minimum_renewable_fraction |
double |
Simulations that have cumulative renewable production fraction of total load supplied less than specified here are infeasible. |
simulation_parameters. timestep_size_in_seconds |
int |
Number of seconds per simulation time step |
simulation_parameters.number_of_timesteps |
int |
Time steps in the one-year simulation |
simulation_parameters.has_generator |
bool |
True if the system includes one or more generators |
simulation_parameters.has_battery |
bool |
True if there are one or more batteries in the system |
simulation_parameters.has_pv |
bool |
True if the system includes PV |
simulation_parameters.has_wind_turbine |
bool |
True if the system includes a wind turbine |
simulation_parameters.has_converter |
bool |
True if the microgrid includes a system converter |
simulation_parameters.has_flywheel |
bool |
True if a flywheel is present in the system |
simulation_parameters.grids(i).technical_model.model_type |
"SCHEDULED" |
If model_type is set to the string "SCHEDULED", the grid prices use scheduled (time-of-use) rates |
simulation_parameters.grids(i).technical_model.demand_rate(j).demand_rate |
double |
Charge for the peak grid purchases (kW) that occur each month while this demand rate is in effect, cost per kW (i.e. $/kW) |
simulation_parameters.grids(i).technical_model.demand_rate(j).grid_label |
string |
Descriptive name of demand rate |
simulation_parameters.grids(i).technical_model.demand_rate(j).grid_state |
GridState (see definition below) |
Several options that the user can choose to adjust the operation of the system when this demand rate is in effect |
simulation_parameters.grids(i).technical_model.demand_rate_index |
Nx1 matrix<int> |
List of the scheduled demand rates for all time steps in the simulation. The length of the list equals the number of time steps in the simulation. The number is the index of the demand rate in the demand_rate list |
simulation_parameters.grids(i).technical_model.grid_rate(j).grid_label |
string |
Descriptive name of rate |
simulation_parameters.grids(i).technical_model.grid_rate(j).grid_state |
GridState (see definition below) |
Several options that the user can choose to adjust the operation of the system when this rate is in effect |
simulation_parameters.grids(i).technical_model.grid_rate(j).power_price |
double |
Cost per kWh of purchasing energy from the grid while this rate is in effect |
simulation_parameters.grids(i).technical_model.grid_rate(j).sellback_rate |
double |
Revenue per kWh (i.e. $/kWh) for grid sales while this rate is in effect |
simulation_parameters.grids(i).technical_model.grid_rate_index |
Nx1 matrix<int> |
List of the scheduled rates for all time steps in the simulation. The length of the list equals the number of time steps in the simulation. The number is the index of the rate in the grid_rate list |
simulation_parameters.grids(i).technical_model.model_type |
"REAL_TIME" |
If model_type is set to the string "REAL_TIME", the grid prices are specified by time series data imported by the user |
simulation_parameters.grids(i).technical_model.demand_rate(j).demand_rate |
double |
Charge for the peak grid purchases (kW) that occur each month while this demand rate is in effect, cost per kW (i.e. $/kW) |
simulation_parameters.grids(i).technical_model.demand_rate(j).grid_label |
string |
Descriptive name |
simulation_parameters.grids(i).technical_model.demand_rate(j).grid_state |
GridState (see definition below) |
Several options that the user can choose to adjust the operation of the system when this rate is in effect |
simulation_parameters.grids(i).technical_model.demand_rate_index |
Nx1 matrix<int> |
List of the scheduled demand rates for all time steps in the simulation. The length of the list equals the number of time steps in the simulation. The number is the index of the demand rate in the demand_rate list |
simulation_parameters.grids(i).technical_model.realtime_power_price |
Nx1 matrix<double> |
Cost per kWh of purchasing energy from the grid for all time steps in the simulation, in chronological order |
simulation_parameters.grids(i).technical_model.realtime_sellback_rate |
Nx1 matrix<double> |
Revenue per kWh (i.e. $/kWh) for grid sales for all time steps in the simulation |
grid_state.grid_is_down |
bool |
Current timestep is an outage. This property is only used in simulation_state.grid(i).grid_state |
grid_state.maintain_state_of_charge |
bool |
Is maintain_state_of_charge_percent in effect? Not used in simulation_parameters.grids(i).technical_model.grid_rate(j).grid_state |
grid_state.maintain_state_of_charge_has_ended |
bool |
true if maintain_state_of_charge was true last time step and false this time step. This property is only used in simulation_state.grid(i).grid_state |
grid_state.maintain_state_of_charge_percent |
double |
Battery state of charge to maintain if maintain_state_of_charge is true. Not used in simulation_parameters.grids(i).technical_model.grid_rate(j).grid_state |
grid_state.prohibit_any_battery_charging |
bool |
If true, battery is not allowed to charge this time step. Not used in simulation_parameters.grids(i).technical_model.demand_rate(j).grid_state |
grid_state.prohibit_any_grid_sales |
bool |
If true, grid sales are not allowed this time step. Not used in simulation_parameters.grids(i).technical_model.demand_rate(j).grid_state |
grid_state.prohibit_battery_from_discharging |
bool |
If true, battery is not allowed to discharge this time step. Not used in simulation_parameters.grids(i).technical_model.demand_rate(j).grid_state |
grid_state.prohibit_grid_from_charging_battery |
bool |
If true, battery is not allowed to charge if power is being purchased from the grid in the current time step. Not used in simulation_parameters.grids(i).technical_model.demand_rate(j).grid_state |
grid_state.prohibit_grid_sales_from_battery |
bool |
If true, grid sales are not allowed if the battery is discharging in the current time step. Not used in simulation_parameters.grids(i).technical_model.demand_rate(j).grid_state |
The GridState class defined in the table above is used in three places:
•Grid rates, as in simulation_parameters.grids(i).technical_model.grid_rate(j).grid_state
•Demand rates, as in simulation_parameters.grids(i).technical_model.demand_rate(j).grid_state
•simulation_state.grid(i).grid_state
The properties grid_is_down and maintain_state_of_charge_has_ended are only set in simulation_state.grid(i).grid_state; you can ignore them in the grid rate or demand rate definitions in simulation_parameters. In the demand rates defined in simulation_parameters, only maintain_state_of_charge and maintain_state_of_charge_percent are used. You can ignore the rest of the properties for data in a GridState structure that is inside the demand_rate property. Similarly, in grid rates in simulation_parameters, only the following properties apply: prohibit_any_battery_charging, prohibit_any_grid_sales, prohibit_battery_from_discharging, prohibit_grid_from_charging_battery, and prohibit_grid_sales_from_battery.
While only some properties are used in simulation_parameters.grids(i).technical_model.grid_rate(j).grid_state and others are used in simulation_parameters.grids(i).technical_model.demand_rate(j).grid_state, all of the properties of the GridState object are set for each time step in simulation_state, based on which grid rate and demand rate are currently in effect, and whether there is a grid outage.
All of the values in simulation_parameters are read-only.
See also