EtesElectricResistance

Wrapper for SAM Simulation Core model: cmod_etes_electric_resistance.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:

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.

EtesElectricResistance model description

EtesElectricResistance

PySAM.EtesElectricResistance.default(config) → EtesElectricResistance

Use default attributes None

PySAM.EtesElectricResistance.from_existing(data, optional config) → EtesElectricResistance

Share underlying data with an existing PySAM class. If config provided, default attributes are loaded otherwise.

PySAM.EtesElectricResistance.new() → EtesElectricResistance
PySAM.EtesElectricResistance.wrap(ssc_data_t) → EtesElectricResistance

Use existing PySSC data

Warning

Do not call PySSC.data_free on the ssc_data_t provided to wrap

Functions

class PySAM.EtesElectricResistance.EtesElectricResistance

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 = { 'Solar Resource': { 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 = { 'Solar Resource': { 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.

SolarResource Group

class PySAM.EtesElectricResistance.EtesElectricResistance.SolarResource
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

SolarResource_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

SolarResource_vals = { var: val, ...}

solar_resource_file

Local weather file path

Constraints: LOCAL_FILE

Required: False

Type:str

SystemControl Group

class PySAM.EtesElectricResistance.EtesElectricResistance.SystemControl
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

SystemControl_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

SystemControl_vals = { var: val, ...}

F_wc

TOU array of fractions indicating wet cooling share for hybrid cooling

Required: True if pc_config=0

Type:sequence
bop_par

Balance of plant parasitic power fraction [MWe/MWcap]

Required: True

Type:float
bop_par_0

Balance of plant parasitic power fraction - const coeff

Required: True

Type:float
bop_par_1

Balance of plant parasitic power fraction - linear coeff

Required: True

Type:float
bop_par_2

Balance of plant parasitic power fraction - quadratic coeff

Required: True

Type:float
bop_par_f

Balance of plant parasitic power fraction - mult frac

Required: True

Type:float
is_dispatch

Allow dispatch optimization?

Required: If not provided, assumed to be 0

Type:float
pb_fixed_par

Fixed parasitic load that don’t generate heat - runs at all times [MWe/MWcap]

Required: True

Type:float
time_start

Simulation start time [s]

Required: If not provided, assumed to be 0

Type:float
time_steps_per_hour

Number of simulation time steps per hour

Required: If not provided, assumed to be -1

Type:float
time_stop

Simulation stop time [s]

Required: If not provided, assumed to be 31536000

Type:float
vacuum_arrays

Allocate arrays for only the required number of steps

Required: If not provided, assumed to be 0

Type:float

SystemDesign Group

class PySAM.EtesElectricResistance.EtesElectricResistance.SystemDesign
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

SystemDesign_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

SystemDesign_vals = { var: val, ...}

P_ref

Reference output electric power at design condition [MW]

Required: True

Type:float
T_htf_cold_des

Cold HTF inlet temperature at design conditions [C]

Required: True

Type:float
T_htf_hot_des

Hot HTF outlet temperature at design conditions [C]

Required: True

Type:float
design_eff

Power cycle efficiency at design [none]

Required: True

Type:float
gross_net_conversion_factor

Estimated gross to net conversion factor

Required: True

Type:float
heater_mult

Heater multiple relative to design cycle thermal power [-]

Required: True

Type:float
tshours

Equivalent full-load thermal storage hours [hr]

Required: True

Type:float

PowerCycle Group

class PySAM.EtesElectricResistance.EtesElectricResistance.PowerCycle
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

PowerCycle_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

PowerCycle_vals = { var: val, ...}

cycle_cutoff_frac

Minimum turbine operation fraction before shutdown

Required: True

Type:float
cycle_max_frac

Maximum turbine over design operation fraction

Required: True

Type:float
pb_pump_coef

Pumping power to move 1kg of HTF through PB loop [kW/kg]

Required: True

Type:float
pc_config

PC configuration 0=Steam Rankine, 1=user defined

Constraints: INTEGER

Required: If not provided, assumed to be 0

Type:float
q_sby_frac

Fraction of thermal power required for standby

Required: True

Type:float
startup_frac

Fraction of design thermal power needed for startup [none]

Required: True

Type:float
startup_time

Time needed for power block startup [hr]

Required: True

Type:float

RankineCycle Group

class PySAM.EtesElectricResistance.EtesElectricResistance.RankineCycle
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

RankineCycle_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

RankineCycle_vals = { var: val, ...}

CT

1=evaporative, 2=air, 3=hybrid

Required: True if pc_config=0

Type:float
Type:Condensor type
P_boil

Boiler operating pressure [bar]

Required: True if pc_config=0

Type:float
P_cond_min

Minimum condenser pressure [inHg]

Required: True if pc_config=0

Type:float
P_cond_ratio

Condenser pressure ratio

Required: True if pc_config=0

Type:float
T_ITD_des

ITD at design for dry system [C]

Required: True if pc_config=0

Type:float
T_amb_des

Reference ambient temperature at design point [C]

Required: True if pc_config=0

Type:float
T_approach

Cooling tower approach temperature [C]

Required: True if pc_config=0

Type:float
dT_cw_ref

Reference condenser cooling water inlet/outlet temperature difference [C]

Required: True if pc_config=0

Type:float
n_pl_inc

Number of part-load increments for the heat rejection system [none]

Constraints: INTEGER

Required: True if pc_config=0

Type:float
pb_bd_frac

Power block blowdown steam fraction

Required: True if pc_config=0

Type:float
tech_type

Turbine inlet pressure control 1=Fixed, 3=Sliding

Required: True if pc_config=0

Type:float

UserDefinedPowerCycle Group

class PySAM.EtesElectricResistance.EtesElectricResistance.UserDefinedPowerCycle
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

UserDefinedPowerCycle_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

UserDefinedPowerCycle_vals = { var: val, ...}

ud_f_W_dot_cool_des

Percent of user-defined power cycle design gross output consumed by cooling [%]

Required: True if pc_config=1

Type:float
ud_ind_od

Off design user-defined power cycle performance as function of T_htf, m_dot_htf [ND], and T_amb

Required: True if pc_config=1

Type:sequence[sequence]
ud_m_dot_water_cool_des

Mass flow rate of water required at user-defined power cycle design point [kg/s]

Required: True if pc_config=1

Type:float

ThermalStorage Group

class PySAM.EtesElectricResistance.EtesElectricResistance.ThermalStorage
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

ThermalStorage_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

ThermalStorage_vals = { var: val, ...}

cold_tank_Thtr

Minimum allowable cold tank HTF temperature [C]

Required: True

Type:float
cold_tank_max_heat

Rated heater capacity for cold tank heating [MW]

Required: True

Type:float
csp_pt_tes_init_hot_htf_percent

Initial fraction of available volume that is hot [%]

Required: True

Type:float
h_tank

Total height of tank (height of HTF when tank is full) [m]

Required: True

Type:float
h_tank_min

Minimum allowable HTF height in storage tank [m]

Required: True

Type:float
hot_tank_Thtr

Minimum allowable hot tank HTF temperature [C]

Required: True

Type:float
hot_tank_max_heat

Rated heater capacity for hot tank heating [MW]

Required: True

Type:float
tank_pairs

Number of equivalent tank pairs

Constraints: INTEGER

Required: True

Type:float
tes_fl_code

Receiver HTF, 17=Salt (60% NaNO3, 40% KNO3) 10=Salt (46.5% LiF 11.5% NaF 42% KF) 50=Lookup tables

Required: True

Type:float
u_tank

Loss coefficient from the tank [W/m2-K]

Required: True

Type:float
ud_tes_fl_props

User-defined TES fluid property data [-]

Required: True

Type:sequence[sequence]

TimeOfDeliveryFactors Group

class PySAM.EtesElectricResistance.EtesElectricResistance.TimeOfDeliveryFactors
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

TimeOfDeliveryFactors_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

TimeOfDeliveryFactors_vals = { var: val, ...}

dispatch_factor1

Dispatch payment factor 1

Required: If not provided, assumed to be 1

Type:float
dispatch_factor2

Dispatch payment factor 2

Required: If not provided, assumed to be 1

Type:float
dispatch_factor3

Dispatch payment factor 3

Required: If not provided, assumed to be 1

Type:float
dispatch_factor4

Dispatch payment factor 4

Required: If not provided, assumed to be 1

Type:float
dispatch_factor5

Dispatch payment factor 5

Required: If not provided, assumed to be 1

Type:float
dispatch_factor6

Dispatch payment factor 6

Required: If not provided, assumed to be 1

Type:float
dispatch_factor7

Dispatch payment factor 7

Required: If not provided, assumed to be 1

Type:float
dispatch_factor8

Dispatch payment factor 8

Required: If not provided, assumed to be 1

Type:float
dispatch_factor9

Dispatch payment factor 9

Required: If not provided, assumed to be 1

Type:float
dispatch_factors_ts

Dispatch payment factor array

Required: True if ppa_multiplier_model=1

Type:sequence
dispatch_sched_weekday

PPA pricing weekday schedule, 12x24

Required: If not provided, assumed to be [[1]]

Type:sequence[sequence]
dispatch_sched_weekend

PPA pricing weekend schedule, 12x24

Required: If not provided, assumed to be [[1]]

Type:sequence[sequence]
ppa_multiplier_model

PPA multiplier model [0/1]

Options: 0=diurnal,1=timestep

Constraints: INTEGER,MIN=0

Required: If not provided, assumed to be 0

Type:float

SystemCost Group

class PySAM.EtesElectricResistance.EtesElectricResistance.SystemCost
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

SystemCost_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

SystemCost_vals = { var: val, ...}

cycle_spec_cost

Power cycle specific cost [$/kWe]

Required: True

Type:float

SystemCosts Group

class PySAM.EtesElectricResistance.EtesElectricResistance.SystemCosts
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

SystemCosts_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

SystemCosts_vals = { var: val, ...}

bop_spec_cost

Balance of plant specific cost [$/kWe]

Required: True

Type:float
contingency_rate

Contingency for cost overrun [%]

Required: True

Type:float
epc_cost_fixed

EPC fixed [$]

Required: True

Type:float
epc_cost_per_watt

EPC cost per watt [$/W]

Required: True

Type:float
epc_cost_perc_of_direct

EPC cost percent of direct [%]

Required: True

Type:float
heater_spec_cost

Heater specific cost [$/kWht]

Required: True

Type:float
land_cost_fixed

Land fixed [$]

Required: True

Type:float
land_cost_per_watt

Land cost per watt [$/W]

Required: True

Type:float
land_cost_perc_of_direct

Land cost percent of direct [%]

Required: True

Type:float
sales_tax_frac

Percent of cost to which sales tax applies [%]

Required: True

Type:float
tes_spec_cost

Thermal energy storage specific cost [$/kWht]

Required: True

Type:float

FinancialParameters Group

class PySAM.EtesElectricResistance.EtesElectricResistance.FinancialParameters
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

FinancialParameters_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

FinancialParameters_vals = { var: val, ...}

const_per_interest_rate1

Interest rate, loan 1 [%]

Required: True

Type:float
const_per_interest_rate2

Interest rate, loan 2 [%]

Required: True

Type:float
const_per_interest_rate3

Interest rate, loan 3 [%]

Required: True

Type:float
const_per_interest_rate4

Interest rate, loan 4 [%]

Required: True

Type:float
const_per_interest_rate5

Interest rate, loan 5 [%]

Required: True

Type:float
const_per_months1

Months prior to operation, loan 1

Required: True

Type:float
const_per_months2

Months prior to operation, loan 2

Required: True

Type:float
const_per_months3

Months prior to operation, loan 3

Required: True

Type:float
const_per_months4

Months prior to operation, loan 4

Required: True

Type:float
const_per_months5

Months prior to operation, loan 5

Required: True

Type:float
const_per_percent1

Percent of total installed cost, loan 1 [%]

Required: True

Type:float
const_per_percent2

Percent of total installed cost, loan 2 [%]

Required: True

Type:float
const_per_percent3

Percent of total installed cost, loan 3 [%]

Required: True

Type:float
const_per_percent4

Percent of total installed cost, loan 4 [%]

Required: True

Type:float
const_per_percent5

Percent of total installed cost, loan 5 [%]

Required: True

Type:float
const_per_upfront_rate1

Upfront fee on principal, loan 1 [%]

Required: True

Type:float
const_per_upfront_rate2

Upfront fee on principal, loan 2 [%]

Required: True

Type:float
const_per_upfront_rate3

Upfront fee on principal, loan 3 [%]

Required: True

Type:float
const_per_upfront_rate4

Upfront fee on principal, loan 4 [%]

Required: True

Type:float
const_per_upfront_rate5

Upfront fee on principal, loan 5 [%]

Required: True

Type:float
sales_tax_rate

Sales tax rate [%]

Required: True

Type:float

AdjustmentFactors Group

class PySAM.EtesElectricResistance.EtesElectricResistance.AdjustmentFactors
assign() → None

Assign attributes from dictionary

export() → Dict

Export attributes into dictionary

constant

float

Type:type
dc_constant

DC Constant loss adjustment [%]

dc_hourly

DC Hourly Adjustment Factors [%]

dc_periods

DC Period-based Adjustment Factors [%]

hourly

AC Hourly Adjustment Factors [%]

periods

AC Period-based Adjustment Factors [%]

sf_constant

DC Constant loss adjustment [%]

sf_hourly

DC Hourly Adjustment Factors [%]

sf_periods

DC Period-based Adjustment Factors [%]

Outputs Group

class PySAM.EtesElectricResistance.EtesElectricResistance.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, ...}

T_tes_cold

TES cold temperature [C]

Type:sequence
T_tes_hot

TES hot temperature [C]

Type:sequence
W_dot_cycle_gross

PC electrical power gross (no cooling parasitics) [MWe]

Type:sequence
W_dot_heater

Heater electricity consumption [MWe]

Type:sequence
W_dot_out_net

Total electric power to grid [MWe]

Type:sequence
annual_E_cycle_gross

Annual cycle gross electric energy generation [MWhe]

Type:float
annual_E_heater

Annual heater electric energy consumption [MWhe]

Type:float
annual_E_tes_heater

Annual TES freeze heater electric energy consumption [MWhe]

Type:float
annual_Q_cycle_thermal_in

Annual cycle thermal energy input [MWht]

Type:float
annual_Q_cycle_thermal_startup

Annual cycle thermal energy consumed by startup [MWht]

Type:float
annual_Q_heater_startup

Annual heater thermal energy consumed by startup [MWht]

Type:float
annual_Q_heater_to_htf

Annual heater thermal power to HTF [MWhe]

Type:float
annual_Q_tes_losses

Annual TES thermal energy lost to ambient [MWht]

Type:float
annual_energy

Annual total electric power to grid [kWhe]

Type:float
annual_energy_full_availability

Annual total electric power to grid w/ full availability [MWhe]

Type:float
construction_financing_cost

Total construction financing cost [$]

Type:float
e_ch_tes

TES charge state [MWht]

Type:sequence
gen

Total electric power to grid with available derate [kWe]

Type:sequence
mass_tes_cold

TES cold tank mass (end) [kg]

Type:sequence
mass_tes_hot

TES hot tank mass (end) [kg]

Type:sequence
q_dot_ch_tes

TES charge thermal power [MWt]

Type:sequence
q_dot_cycle

PC thermal power [MWt]

Type:sequence
q_dot_cycle_startup

PC startup thermal power [MWt]

Type:sequence
q_dot_dc_tes

TES discharge thermal power [MWt]

Type:sequence
q_dot_heater_startup

Heater thermal power consumed during startup [MWt]

Type:sequence
q_dot_heater_to_htf

Heater thermal power to HTF [MWt]

Type:sequence
q_dot_tes_heater

TES freeze protection power [MWe]

Type:sequence
q_dot_tes_losses

TES thermal losses [MWt]

Type:sequence
system_capacity

System capacity [kWe]

Type:float
time_hr

Time at end of timestep [hr]

Type:sequence
total_installed_cost

Total installed cost [$]

Type:float