Fuelcell¶
Wrapper for SAM Simulation Core model: cmod_fuelcell.cpp
Input Consistency Warning¶
As described in Possible Problems, some input parameters are interdependent but the equations that enforce consistency are not available in this PySAM module. Therefore, the onus is on the PySAM user to check that interdependencies are correctly handled. The variables which may require additional logic include:
- dispatch_manual_fuelcelldischarge
- dispatch_manual_percent_fc_discharge
- dispatch_manual_units_fc_discharge
- fuelcell_degradation
- fuelcell_dispatch
- fuelcell_dynamic_response_down
- fuelcell_dynamic_response_up
- fuelcell_fuel_available
- fuelcell_fuel_type
- fuelcell_lhv
- fuelcell_number_of_units
- fuelcell_unit_max_power
- fuelcell_unit_min_power
Provided for each of these inputs is a list of other inputs that are potentially interdependent.
Creating an Instance¶
Refer to the Initializing a Model page for details on the different ways to create an instance of a PySAM class.
Fuelcell model description
Fuel cell model
-
PySAM.Fuelcell.
default
(config) → Fuelcell¶ Use default attributes config options:
- “FuelCellCommercial”
- “FuelCellSingleOwner”
-
PySAM.Fuelcell.
from_existing
(data, optional config) → Fuelcell¶ Share underlying data with an existing PySAM class. If config provided, default attributes are loaded otherwise.
-
PySAM.Fuelcell.
new
() → Fuelcell¶
-
PySAM.Fuelcell.
wrap
(ssc_data_t) → Fuelcell¶ Use existing PySSC data
Warning
Do not call PySSC.data_free on the ssc_data_t provided to
wrap
Functions¶
-
class
PySAM.Fuelcell.
Fuelcell
¶ This class contains all the variable information for running a simulation. Variables are grouped together in the subclasses as properties. If property assignments are the wrong type, an error is thrown.
-
assign
(dict) → None¶ Assign attributes from nested dictionary, except for Outputs
nested_dict = { 'Lifetime': { var: val, ...}, ...}
-
execute
(int verbosity) → None¶ Execute simulation with verbosity level 0 (default) or 1
-
export
() → dict¶ Export attributes into nested dictionary
-
replace
(dict) → None¶ Replace attributes from nested dictionary, except for Outputs. Unassigns all values in each Group then assigns from the input dict.
nested_dict = { 'Lifetime': { var: val, ...}, ...}
-
unassign
(name) → None¶ Unassign a value in any of the variable groups.
-
value
(name, optional value) → Union[None, float, dict, sequence, str]¶ Get or set by name a value in any of the variable groups.
-
Lifetime Group¶
-
class
PySAM.Fuelcell.Fuelcell.
Lifetime
¶ -
assign
(dict) → None¶ Assign attributes from dictionary, overwriting but not removing values
Lifetime_vals = { var: val, ...}
-
export
() → dict¶ Export attributes into dictionary
-
replace
(dict) → None¶ Replace attributes from dictionary, unassigning values not present in input dict
Lifetime_vals = { var: val, ...}
-
analysis_period
¶ Lifetime analysis period [years]
Info: The number of years in the simulation
Required: True if system_use_lifetime_output=1
Type: float
-
system_use_lifetime_output
¶ Lifetime simulation [0/1]
Options: 0=SingleYearRepeated,1=RunEveryYear
Constraints: BOOLEAN
Required: If not provided, assumed to be 0
Type: float
-
Common Group¶
-
class
PySAM.Fuelcell.Fuelcell.
Common
¶ -
assign
(dict) → None¶ Assign attributes from dictionary, overwriting but not removing values
Common_vals = { var: val, ...}
-
export
() → dict¶ Export attributes into dictionary
-
replace
(dict) → None¶ Replace attributes from dictionary, unassigning values not present in input dict
Common_vals = { var: val, ...}
-
annual_energy
¶ Annual Energy [kWh]
Required: If not provided, assumed to be 0
Type: float
-
capacity_factor
¶ Capacity factor [%]
Required: If not provided, assumed to be 0
Type: float
-
gen
¶ System power generated [kW]
Info: Lifetime system generation
Type: sequence
-
Load Group¶
-
class
PySAM.Fuelcell.Fuelcell.
Load
¶ -
assign
(dict) → None¶ Assign attributes from dictionary, overwriting but not removing values
Load_vals = { var: val, ...}
-
export
() → dict¶ Export attributes into dictionary
-
replace
(dict) → None¶ Replace attributes from dictionary, unassigning values not present in input dict
Load_vals = { var: val, ...}
-
load
¶ Electricity load (year 1) [kW]
Type: sequence
-
FuelCell Group¶
-
class
PySAM.Fuelcell.Fuelcell.
FuelCell
¶ -
assign
(dict) → None¶ Assign attributes from dictionary, overwriting but not removing values
FuelCell_vals = { var: val, ...}
-
export
() → dict¶ Export attributes into dictionary
-
replace
(dict) → None¶ Replace attributes from dictionary, unassigning values not present in input dict
FuelCell_vals = { var: val, ...}
-
dispatch_manual_fuelcellcharge
¶ Periods 1-6 charging allowed?
Type: sequence
-
dispatch_manual_fuelcelldischarge
¶ Periods 1-6 discharging allowed?
- Changes to this variable may require updating the values of the following:
- dispatch_manual_percent_fc_discharge
- dispatch_manual_units_fc_discharge
Type: sequence
-
dispatch_manual_percent_fc_discharge
¶ Periods 1-6 percent of max fuelcell output
- This variable may need to be updated if the values of the following have changed:
- dispatch_manual_fuelcelldischarge
Type: sequence
-
dispatch_manual_sched
¶ Dispatch schedule for weekday
Type: sequence[sequence]
-
dispatch_manual_sched_weekend
¶ Dispatch schedule for weekend
Type: sequence[sequence]
-
dispatch_manual_units_fc_discharge
¶ Periods 1-6 number of fuel cell units?
- This variable may need to be updated if the values of the following have changed:
- dispatch_manual_fuelcelldischarge
Type: sequence
-
fuelcell_availability_schedule
¶ Hour of year start shutdown/Column 2: Hours duration of shutdown ]
Type: sequence[sequence] Type: Fuel cell availability schedule [Column 1
-
fuelcell_degradation
¶ Fuel cell degradation per hour [kW/h]
- This variable may need to be updated if the values of the following have changed:
- fuelcell_unit_max_power
Type: float
-
fuelcell_degradation_restart
¶ Fuel cell degradation at restart [kW]
Type: float
-
fuelcell_degradation_restart_schedule
¶ Fuel cell enable scheduled restarts [0/1]
Type: float
-
fuelcell_degradation_restarts_per_year
¶ Fuel cell scheduled restarts per year
Type: float
-
fuelcell_dispatch
¶ Fuel cell dispatch input per unit [kW]
- This variable may need to be updated if the values of the following have changed:
- fuelcell_unit_max_power
Type: sequence
-
fuelcell_dispatch_choice
¶ Fuel cell dispatch choice [0/1/2]
Type: float
-
fuelcell_dynamic_response_down
¶ Fuel cell ramp rate limit down [kW/h]
- This variable may need to be updated if the values of the following have changed:
- fuelcell_number_of_units
- fuelcell_unit_max_power
Type: float
-
fuelcell_dynamic_response_up
¶ Fuel cell ramp rate limit up [kW/h]
- This variable may need to be updated if the values of the following have changed:
- fuelcell_number_of_units
- fuelcell_unit_max_power
Type: float
-
fuelcell_efficiency
¶ Fuel cell efficiency table
Type: sequence[sequence]
-
fuelcell_efficiency_choice
¶ Fuel cell efficiency definition choice [0/1]
Options: 0=OriginalNameplate,1=DegradedNameplate
Type: float
-
fuelcell_fixed_pct
¶ Fuel cell fixed operation percent [%]
Type: float
-
fuelcell_fuel_available
¶ Fuel cell available fuel quantity [MCf]
- This variable may need to be updated if the values of the following have changed:
- fuelcell_fuel_type
Type: float
-
fuelcell_fuel_price
¶ Fuel cell price [$/MCf]
Type: float
-
fuelcell_fuel_type
¶ Fuel cell type [0/1]
- Changes to this variable may require updating the values of the following:
- fuelcell_fuel_available
- fuelcell_lhv
Type: float
-
fuelcell_is_started
¶ Fuel cell is started [0/1]
Type: float
-
fuelcell_lhv
¶ Fuel cell lower heating value [Btu/ft3]
- This variable may need to be updated if the values of the following have changed:
- fuelcell_fuel_type
Type: float
-
fuelcell_number_of_units
¶ Fuel cell number of units
- Changes to this variable may require updating the values of the following:
- fuelcell_dynamic_response_down
- fuelcell_dynamic_response_up
Type: float
-
fuelcell_operation_options
¶ Fuel cell turn off options [0/1]
Type: float
-
fuelcell_replacement_option
¶ Fuel cell replacement option [0/1/2]
Type: float
-
fuelcell_replacement_percent
¶ Fuel cell replace at percentage
Type: float
-
fuelcell_replacement_schedule
¶ Fuel cell replace on schedule
Type: sequence
-
fuelcell_shutdown_time
¶ Fuel cell shutdown hours [hours]
Type: float
-
fuelcell_startup_time
¶ Fuel cell startup hours [hours]
Type: float
-
fuelcell_type
¶ Fuel cell type [0/1/2]
Type: float
-
fuelcell_unit_max_power
¶ Fuel cell max power per unit [kW]
- Changes to this variable may require updating the values of the following:
- fuelcell_degradation
- fuelcell_dispatch
- fuelcell_dynamic_response_down
- fuelcell_dynamic_response_up
- fuelcell_unit_min_power
Type: float
-
fuelcell_unit_min_power
¶ Fuel cell min power per unit [kW]
- This variable may need to be updated if the values of the following have changed:
- fuelcell_unit_max_power
Type: float
-
Outputs Group¶
-
class
PySAM.Fuelcell.Fuelcell.
Outputs
¶ -
assign
(dict) → None¶ Assign attributes from dictionary, overwriting but not removing values
Outputs_vals = { var: val, ...}
-
export
() → dict¶ Export attributes into dictionary
-
replace
(dict) → None¶ Replace attributes from dictionary, unassigning values not present in input dict
Outputs_vals = { var: val, ...}
-
annual_energy_distribution_time
¶ Annual energy production as function of time [kW]
Type: sequence[sequence]
-
annual_energy_distribution_time_fc
¶ Annual energy production (PV + battery + fuel cell) as function of Time
Type: sequence[sequence]
-
annual_fuel_usage
¶ Annual Fuel Usage [kWht]
Type: float
-
annual_fuel_usage_lifetime
¶ Annual Fuel Usage (lifetime) [kWht]
Type: sequence
-
fuelcell_annual_energy_discharged
¶ Annual energy from fuelcell [kWh]
Type: sequence
-
fuelcell_electrical_efficiency
¶ Fuel cell electrical efficiency [%]
Type: sequence
-
fuelcell_fuel_consumption_mcf
¶ Fuel consumption of fuel cell [MCf]
Type: sequence
-
fuelcell_percent_load
¶ Fuel cell percent load [%]
Type: sequence
-
fuelcell_power
¶ Electricity from fuel cell [kW]
Type: sequence
-
fuelcell_power_max_percent
¶ Fuel cell max power percent available [%]
Type: sequence
-
fuelcell_power_thermal
¶ Heat from fuel cell [kWt]
Type: sequence
-
fuelcell_replacement
¶ Fuel cell replacements per year [number/year]
Type: sequence
-
fuelcell_to_grid
¶ Electricity to grid from fuel cell [kW]
Type: sequence
-
fuelcell_to_load
¶ Electricity to load from fuel cell [kW]
Type: sequence
-
gen
¶ System power generated [kW]
Type: sequence
-
system_heat_rate
¶ Heat rate conversion factor (MMBTUs/MWhe) [MMBTUs/MWhe]
Type: float
-