Geothermal¶
Wrapper for SAM Simulation Core model: cmod_geothermal.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:
- T_htf_hot_ref
- ambient_pressure
- analysis_type
- casing_size
- conversion_subtype
- conversion_type
- decline_type
- delta_pressure_equip
- design_temp
- excess_pressure_pump
- fracture_angle
- fracture_aperature
- fracture_width
- geothermal_analysis_period
- hr_pl_nlev
- inj_prod_well_distance
- inj_well_diam
- model_choice
- nameplate
- num_fractures
- num_wells
- num_wells_getem
- plant_efficiency_input
- pump_efficiency
- reservoir_height
- reservoir_permeability
- reservoir_pressure_change
- reservoir_pressure_change_type
- reservoir_width
- resource_depth
- resource_temp
- resource_type
- rock_density
- rock_specific_heat
- rock_thermal_conductivity
- specified_pump_work_amount
- specify_pump_work
- subsurface_water_loss
- temp_decline_max
- temp_decline_rate
- well_diameter
- well_flow_rate
- wet_bulb_temp
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.
Geothermal model description
Geothermal power model for hydrothermal and EGS systems with flash or binary conversion
-
PySAM.Geothermal.
default
(config) → Geothermal¶ Use default attributes config options:
- “GeothermalPowerAllEquityPartnershipFlip”
- “GeothermalPowerLCOECalculator”
- “GeothermalPowerLeveragedPartnershipFlip”
- “GeothermalPowerMerchantPlant”
- “GeothermalPowerNone”
- “GeothermalPowerSaleLeaseback”
- “GeothermalPowerSingleOwner”
-
PySAM.Geothermal.
from_existing
(data, optional config) → Geothermal¶ Share underlying data with an existing PySAM class. If config provided, default attributes are loaded otherwise.
-
PySAM.Geothermal.
new
() → Geothermal¶
-
PySAM.Geothermal.
wrap
(ssc_data_t) → Geothermal¶ Use existing PySSC data
Warning
Do not call PySSC.data_free on the ssc_data_t provided to
wrap
Functions¶
-
class
PySAM.Geothermal.
Geothermal
¶ 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 = { 'GeoHourly': { 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 = { 'GeoHourly': { 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.
-
GeoHourly Group¶
-
class
PySAM.Geothermal.Geothermal.
GeoHourly
¶ -
assign
(dict) → None¶ Assign attributes from dictionary, overwriting but not removing values
GeoHourly_vals = { var: val, ...}
-
export
() → dict¶ Export attributes into dictionary
-
replace
(dict) → None¶ Replace attributes from dictionary, unassigning values not present in input dict
GeoHourly_vals = { var: val, ...}
-
CT
¶ Condenser type (Wet, Dry,Hybrid) [(1-3)]
Constraints: INTEGER
Required: True if ui_calculations_only=0
Type: float
-
HTF
¶ Heat trans fluid type ID [(1-27)]
Constraints: INTEGER
Required: True if ui_calculations_only=0
Type: float
-
P_boil
¶ Design Boiler Pressure [bar]
Required: True if ui_calculations_only=0
Type: float
-
P_cond_min
¶ Minimum condenser pressure [in Hg]
Required: True if ui_calculations_only=0
Type: float
-
P_cond_ratio
¶ Condenser pressure ratio
Required: True if ui_calculations_only=0
Type: float
-
T_ITD_des
¶ Design ITD for dry system [C]
Required: True if ui_calculations_only=0
Type: float
-
T_amb_des
¶ Design ambient temperature [C]
Required: True if ui_calculations_only=0
Type: float
-
T_approach
¶ Approach Temperature [C]
Required: True if ui_calculations_only=0
Type: float
-
T_htf_cold_ref
¶ Outlet design temp [C]
Required: True if ui_calculations_only=0
Type: float
-
T_htf_hot_ref
¶ Inlet design temp [C]
Required: True if ui_calculations_only=0
- This variable may need to be updated if the values of the following have changed:
- design_temp
- resource_temp
Type: float
-
ambient_pressure
¶ Ambient pressure [psi]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
analysis_type
¶ Analysis Type
Constraints: INTEGER
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
casing_size
¶ Production pump casing size [in]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
conversion_subtype
¶ Conversion Subtype
Constraints: INTEGER
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
conversion_type
¶ Conversion Type
Constraints: INTEGER
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
dT_cw_ref
¶ Design condenser cooling water inlet/outlet T diff [C]
Required: True if ui_calculations_only=0
Type: float
-
decline_type
¶ Temp decline Type
Constraints: INTEGER
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
delta_pressure_equip
¶ Delta pressure across surface equipment [psi]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
design_temp
¶ Power block design temperature [C]
Required: True
- Changes to this variable may require updating the values of the following:
- T_htf_hot_ref
- num_wells_getem
- This variable may need to be updated if the values of the following have changed:
- resource_temp
Type: float
-
eta_ref
¶ Desgin conversion efficiency [%]
Required: True if ui_calculations_only=0
Type: float
-
excess_pressure_pump
¶ Excess pressure @ pump suction [psi]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
file_name
¶ local weather file path
Constraints: LOCAL_FILE
Required: True if ui_calculations_only=0
Type: str
-
fracture_angle
¶ Fracture angle [deg]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
fracture_aperature
¶ Fracture aperature [m]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
fracture_width
¶ Fracture width [m]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
geothermal_analysis_period
¶ Analysis Lifetime [years]
Constraints: INTEGER
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
hc_ctl1
¶ HC Control 1
Required: True if ui_calculations_only=0
Type: float
-
hc_ctl2
¶ HC Control 2
Required: True if ui_calculations_only=0
Type: float
-
hc_ctl3
¶ HC Control 3
Required: True if ui_calculations_only=0
Type: float
-
hc_ctl4
¶ HC Control 4
Required: True if ui_calculations_only=0
Type: float
-
hc_ctl5
¶ HC Control 5
Required: True if ui_calculations_only=0
Type: float
-
hc_ctl6
¶ HC Control 6
Required: True if ui_calculations_only=0
Type: float
-
hc_ctl7
¶ HC Control 7
Required: True if ui_calculations_only=0
Type: float
-
hc_ctl8
¶ HC Control 8
Required: True if ui_calculations_only=0
Type: float
-
hc_ctl9
¶ HC Control 9
Required: True if ui_calculations_only=0
Type: float
-
hr_pl_nlev
¶ # part-load increments [(0-9)]
Constraints: INTEGER
Required: True if ui_calculations_only=0
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
hybrid_dispatch_schedule
¶ Daily dispatch schedule
Constraints: TOUSCHED
Required: True if ui_calculations_only=0
Type: str
-
inj_prod_well_distance
¶ Distance from injection to production wells [m]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
inj_well_diam
¶ Injection well diameter [in]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
model_choice
¶ Which model to run (0,1,2)
Constraints: INTEGER
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
nameplate
¶ Desired plant output [kW]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
num_fractures
¶ Number of fractures
Constraints: INTEGER
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
num_wells
¶ Number of Wells
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
num_wells_getem
¶ Number of Wells GETEM calc’d
Required: True if ui_calculations_only=0
- This variable may need to be updated if the values of the following have changed:
- ambient_pressure
- analysis_type
- casing_size
- conversion_subtype
- conversion_type
- decline_type
- delta_pressure_equip
- design_temp
- excess_pressure_pump
- fracture_angle
- fracture_aperature
- fracture_width
- geothermal_analysis_period
- hr_pl_nlev
- inj_prod_well_distance
- inj_well_diam
- model_choice
- nameplate
- num_fractures
- num_wells
- plant_efficiency_input
- pump_efficiency
- reservoir_height
- reservoir_permeability
- reservoir_pressure_change
- reservoir_pressure_change_type
- reservoir_width
- resource_depth
- resource_temp
- resource_type
- rock_density
- rock_specific_heat
- rock_thermal_conductivity
- specified_pump_work_amount
- specify_pump_work
- subsurface_water_loss
- temp_decline_max
- temp_decline_rate
- well_diameter
- well_flow_rate
- wet_bulb_temp
Type: float
-
pb_bd_frac
¶ Blowdown steam fraction [%]
Required: True if ui_calculations_only=0
Type: float
-
plant_efficiency_input
¶ Plant efficiency
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
pump_efficiency
¶ Pump efficiency [%]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
q_sby_frac
¶ % thermal power for standby mode [%]
Required: True if ui_calculations_only=0
Type: float
-
reservoir_height
¶ Reservoir height [m]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
reservoir_permeability
¶ Reservoir Permeability [darcys]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
reservoir_pressure_change
¶ Pressure change [psi-h/1000lb]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
reservoir_pressure_change_type
¶ Reservoir pressure change type
Constraints: INTEGER
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
reservoir_width
¶ Reservoir width [m]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
resource_depth
¶ Resource Depth [m]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
resource_potential
¶ Resource Potential [MW]
Required: True if ui_calculations_only=0
Type: float
-
resource_temp
¶ Resource Temperature [C]
Required: True
- Changes to this variable may require updating the values of the following:
- T_htf_hot_ref
- design_temp
- num_wells_getem
Type: float
-
resource_type
¶ Type of Resource
Constraints: INTEGER
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
rock_density
¶ Rock density [kg/m^3]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
rock_specific_heat
¶ Rock specific heat [J/kg-C]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
rock_thermal_conductivity
¶ Rock thermal conductivity [J/m-day-C]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
specified_pump_work_amount
¶ Pump work specified by user [MW]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
specify_pump_work
¶ Did user specify pump work? [0 or 1]
Constraints: INTEGER
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
startup_frac
¶ % thermal power for startup [%]
Required: True if ui_calculations_only=0
Type: float
-
startup_time
¶ Hours to start power block [hours]
Required: True if ui_calculations_only=0
Type: float
-
subsurface_water_loss
¶ Subsurface water loss [%]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
system_use_lifetime_output
¶ Geothermal lifetime simulation [0/1]
Options: 0=SingleYearRepeated,1=RunEveryYear
Constraints: BOOLEAN
Required: If not provided, assumed to be 0
Type: float
-
temp_decline_max
¶ Maximum temperature decline [C]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
temp_decline_rate
¶ Temperature decline rate [%/yr]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
ui_calculations_only
¶ If = 1, only run UI calculations
Required: True
Type: float
-
well_diameter
¶ Production well diameter [in]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
well_flow_rate
¶ Production flow rate per well [kg/s]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
wet_bulb_temp
¶ Wet Bulb Temperature [C]
Required: True
- Changes to this variable may require updating the values of the following:
- num_wells_getem
Type: float
-
AdjustmentFactors Group¶
-
class
PySAM.Geothermal.Geothermal.
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.Geothermal.Geothermal.
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, ...}
-
GF_flowrate
¶ GF Flow Rate [lb/h]
Type: float
-
annual_energy
¶ Annual Energy [kWh]
Type: float
-
annual_energy_distribution_time
¶ Annual energy production as function of Time
Type: sequence[sequence]
-
bottom_hole_pressure
¶ Bottom hole pres calculated by GETEM
Type: float
-
capacity_factor
¶ Capacity factor
Type: float
-
condensate_pump_power
¶ hp
Type: float
-
cw_pump_head
¶ Cooling Water Pump Head [lb/h]
Type: float
-
cw_pump_work
¶ CW Pump Work [kW]
Type: float
-
cwflow
¶ Cooling Water Flow [lb/h]
Type: float
-
eff_secondlaw
¶ Second Law Efficiency [C]
Type: float
-
first_year_output
¶ First Year Output [kWh]
Type: float
-
flash_count
¶ Flash Count [(1 -2)]
Type: float
-
gen
¶ System power generated [kW]
Type: sequence
-
gross_output
¶ Gross output from GETEM
Type: float
-
hp_flash_pressure
¶ HP Flash Pressure [psia]
Type: float
-
kwh_per_kw
¶ First year kWh/kW
Type: float
-
lifetime_output
¶ Lifetime Output [kWh]
Type: float
-
lp_flash_pressure
¶ LP Flash Pressure [psia]
Type: float
-
monthly_energy
¶ Monthly energy before performance adjustments [kWh]
Type: sequence
-
monthly_power
¶ Monthly power [kW]
Type: sequence
-
monthly_resource_temperature
¶ Monthly avg resource temperature [C]
Type: sequence
-
ncg_condensate_pump
¶ Condensate Pump Work [kW]
Type: float
-
num_wells_getem_output
¶ Number of wells calculated by GETEM
Type: float
-
plant_brine_eff
¶ Plant Brine Efficiency
Type: float
-
pressure_ratio_1
¶ Suction Steam Ratio 1
Type: float
-
pressure_ratio_2
¶ Suction Steam Ratio 2
Type: float
-
pressure_ratio_3
¶ Suction Steam Ratio 3
Type: float
-
pump_depth_ft
¶ Pump depth calculated by GETEM [ft]
Type: float
-
pump_hp
¶ Pump hp calculated by GETEM [hp]
Type: float
-
pump_work
¶ Pump work calculated by GETEM [MW]
Type: float
-
qCondenser
¶ Condenser Heat Rejected [btu/h]
Type: float
-
qRejectByStage_1
¶ Heat Rejected by NCG Condenser Stage 1 [BTU/h]
Type: float
-
qRejectByStage_2
¶ Heat Rejected by NCG Condenser Stage 2 [BTU/h]
Type: float
-
qRejectByStage_3
¶ Heat Rejected by NCG Condenser Stage 3 [BTU/h]
Type: float
-
qRejectTotal
¶ Total Heat Rejection [btu/h]
Type: float
-
reservoir_avg_temp
¶ Avg reservoir temp calculated by GETEM [C]
Type: float
-
reservoir_pressure
¶ Reservoir pres calculated by GETEM
Type: float
-
spec_vol
¶ HP Specific Volume [cft/lb]
Type: float
-
spec_vol_lp
¶ LP Specific Volume [cft/lb]
Type: float
-
system_lifetime_recapitalize
¶ Resource replacement? (1=yes)
Type: sequence
-
timestep_dry_bulb
¶ Dry bulb temperature in each time step [C]
Type: sequence
-
timestep_pressure
¶ Atmospheric pressure in each time step [atm]
Type: sequence
-
timestep_resource_temperature
¶ Resource temperature in each time step [C]
Type: sequence
-
timestep_test_values
¶ Test output values in each time step
Type: sequence
-
timestep_wet_bulb
¶ Wet bulb temperature in each time step [C]
Type: sequence
-
v_stage_1
¶ Vacumm Pump Stage 1 [kW]
Type: float
-
v_stage_2
¶ Vacumm Pump Stage 2 [kW]
Type: float
-
v_stage_3
¶ Vacumm Pump Stage 3 [kW]
Type: float
-
x_hp
¶ HP Mass Fraction [%]
Type: float
-
x_lp
¶ LP Mass Fraction [%]
Type: float
-