Geothermal¶
Geothermal power model for hydrothermal and EGS systems with flash or binary conversion
-
PySAM.Geothermal.
default
(config) → Geothermal¶ Load defaults for the configuration
config
. Available configurations are:- “GeothermalPowerAllEquityPartnershipFlip”
- “GeothermalPowerLCOECalculator”
- “GeothermalPowerLeveragedPartnershipFlip”
- “GeothermalPowerMerchantPlant”
- “GeothermalPowerNone”
- “GeothermalPowerSaleLeaseback”
- “GeothermalPowerSingleOwner”
Note
Some inputs do not have default values and may be assigned a value from the variable’s Required attribute. See variable attribute descriptions below.
-
PySAM.Geothermal.
from_existing
(data, optional config) → Geothermal¶ Share data with an existing PySAM class. If
optional config
is a valid configuration name, load the module’s defaults for that configuration.
-
PySAM.Geothermal.
new
() → Geothermal¶
-
PySAM.Geothermal.
wrap
(ssc_data_t) → Geothermal¶ Load data from a PySSC object.
Warning
Do not call PySSC.data_free on the ssc_data_t provided to
wrap()
Geothermal is a wrapper for the SSC compute module cmod_geothermal.cpp
Interdependent Variables¶
The variables listed below are interdependent with other variables. If you change the value of one of these variables, you may need to change values of other variables. The SAM user interface manages these interdependent variables, but in PySAM, it is up to you change the value of all interdependent variables so they are consistent. See Interdependent Variables for examples and details.
- T_htf_hot_ref
- ambient_pressure
- analysis_type
- casing_size
- conversion_subtype
- conversion_type
- decline_type
- delta_pressure_equip
- design_temp
- dt_prod_well
- excess_pressure_pump
- fracture_angle
- fracture_aperature
- fracture_length
- fracture_spacing
- fracture_width
- geothermal_analysis_period
- hr_pl_nlev
- inj_casing_size
- inj_prod_well_distance
- inj_well_diam
- model_choice
- nameplate
- num_fractures
- num_wells
- num_wells_getem
- plant_efficiency_input
- prod_well_choice
- pump_efficiency
- reservoir_height
- reservoir_model_inputs
- 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
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: Required if ui_calculations_only=0
Type: float
-
HTF
¶ Heat trans fluid type ID [(1-27)]
Constraints: INTEGER
Required: Required if ui_calculations_only=0
Type: float
-
P_boil
¶ Design Boiler Pressure [bar]
Required: Required if ui_calculations_only=0
Type: float
-
P_cond_min
¶ Minimum condenser pressure [in Hg]
Required: Required if ui_calculations_only=0
Type: float
-
P_cond_ratio
¶ Condenser pressure ratio
Required: Required if ui_calculations_only=0
Type: float
-
T_ITD_des
¶ Design ITD for dry system [C]
Required: Required if ui_calculations_only=0
Type: float
-
T_amb_des
¶ Design ambient temperature [C]
Required: Required if ui_calculations_only=0
Type: float
-
T_approach
¶ Approach Temperature [C]
Required: Required if ui_calculations_only=0
Type: float
-
T_htf_cold_ref
¶ Outlet design temp [C]
Required: Required if ui_calculations_only=0
Type: float
-
T_htf_hot_ref
¶ Inlet design temp [C]
Required: Required if ui_calculations_only=0
The value of
T_htf_hot_ref
depends on the following variables:- design_temp
- resource_temp
- resource_type
Type: float
-
ambient_pressure
¶ Ambient pressure [psi]
Required: True
The value of the following variables depends on
ambient_pressure
:- num_wells_getem
Type: float
-
analysis_type
¶ Analysis Type
Constraints: INTEGER
Required: True
The value of the following variables depends on
analysis_type
:- num_wells_getem
Type: float
-
casing_size
¶ Production pump casing size [in]
Required: True
The value of the following variables depends on
casing_size
:- num_wells_getem
Type: float
-
conversion_subtype
¶ Conversion Subtype
Constraints: INTEGER
Required: True
The value of the following variables depends on
conversion_subtype
:- num_wells_getem
Type: float
-
conversion_type
¶ Conversion Type
Constraints: INTEGER
Required: True
The value of the following variables depends on
conversion_type
:- num_wells_getem
Type: float
-
dT_cw_ref
¶ Design condenser cooling water inlet/outlet T diff [C]
Required: Required if ui_calculations_only=0
Type: float
-
decline_type
¶ Temp decline Type
Constraints: INTEGER
Required: True
The value of the following variables depends on
decline_type
:- num_wells_getem
Type: float
-
delta_pressure_equip
¶ Delta pressure across surface equipment [psi]
Required: True
The value of the following variables depends on
delta_pressure_equip
:- num_wells_getem
Type: float
-
design_temp
¶ Power block design temperature [C]
Required: True
The value of the following variables depends on
design_temp
:- T_htf_hot_ref
- num_wells_getem
The value of
design_temp
depends on the following variables:- resource_temp
- resource_type
Type: float
-
dt_prod_well
¶ Temperature loss in production well [C]
Required: True
The value of the following variables depends on
dt_prod_well
:- num_wells_getem
Type: float
-
eta_ref
¶ Desgin conversion efficiency [%]
Required: Required if ui_calculations_only=0
Type: float
-
excess_pressure_pump
¶ Excess pressure @ pump suction [psi]
Required: True
The value of the following variables depends on
excess_pressure_pump
:- num_wells_getem
Type: float
-
file_name
¶ local weather file path
Constraints: LOCAL_FILE
Required: Required if ui_calculations_only=0
Type: str
-
fracture_angle
¶ Fracture angle [deg]
Required: True
The value of the following variables depends on
fracture_angle
:- num_wells_getem
Type: float
-
fracture_aperature
¶ Fracture aperature [m]
Required: True
The value of the following variables depends on
fracture_aperature
:- num_wells_getem
Type: float
-
fracture_length
¶ Fracture length [m]
Required: True
The value of the following variables depends on
fracture_length
:- num_wells_getem
Type: float
-
fracture_spacing
¶ Fracture spacing [m]
Required: True
The value of the following variables depends on
fracture_spacing
:- num_wells_getem
Type: float
-
fracture_width
¶ Fracture width [m]
Required: True
The value of the following variables depends on
fracture_width
:- num_wells_getem
Type: float
-
geotherm_cost_inj_cost_curve_welltype
¶ Injection well type [0/1]
Required: True
Type: float
-
geotherm_cost_inj_prod_well_ratio
¶ Ratio of injection wells to production wells
Type: float
-
geotherm_cost_prod_cost_curve_welltype
¶ Production well type [0/1]
Required: True
Type: float
-
geothermal_analysis_period
¶ Analysis Lifetime [years]
Constraints: INTEGER
Required: True
The value of the following variables depends on
geothermal_analysis_period
:- num_wells_getem
Type: float
-
hc_ctl1
¶ HC Control 1
Required: Required if ui_calculations_only=0
Type: float
-
hc_ctl2
¶ HC Control 2
Required: Required if ui_calculations_only=0
Type: float
-
hc_ctl3
¶ HC Control 3
Required: Required if ui_calculations_only=0
Type: float
-
hc_ctl4
¶ HC Control 4
Required: Required if ui_calculations_only=0
Type: float
-
hc_ctl5
¶ HC Control 5
Required: Required if ui_calculations_only=0
Type: float
-
hc_ctl6
¶ HC Control 6
Required: Required if ui_calculations_only=0
Type: float
-
hc_ctl7
¶ HC Control 7
Required: Required if ui_calculations_only=0
Type: float
-
hc_ctl8
¶ HC Control 8
Required: Required if ui_calculations_only=0
Type: float
-
hc_ctl9
¶ HC Control 9
Required: Required if ui_calculations_only=0
Type: float
-
hr_pl_nlev
¶ # part-load increments [(0-9)]
Constraints: INTEGER
Required: Required if ui_calculations_only=0
The value of the following variables depends on
hr_pl_nlev
:- num_wells_getem
Type: float
-
hybrid_dispatch_schedule
¶ Daily dispatch schedule
Constraints: TOUSCHED
Required: Required if ui_calculations_only=0
Type: str
-
inj_casing_size
¶ Injection pump casing size [in]
Required: True
The value of the following variables depends on
inj_casing_size
:- num_wells_getem
Type: float
-
inj_prod_well_distance
¶ Distance from injection to production wells [m]
Required: True
The value of the following variables depends on
inj_prod_well_distance
:- num_wells_getem
Type: float
-
inj_well_diam
¶ Injection well diameter [in]
Required: True
The value of the following variables depends on
inj_well_diam
:- num_wells_getem
Type: float
-
model_choice
¶ Which model to run (0,1,2)
Constraints: INTEGER
Required: True
The value of the following variables depends on
model_choice
:- num_wells_getem
Type: float
-
nameplate
¶ Desired plant output [kW]
Required: True
The value of the following variables depends on
nameplate
:- num_wells_getem
Type: float
-
num_fractures
¶ Number of fractures
Constraints: INTEGER
Required: True
The value of the following variables depends on
num_fractures
:- num_wells_getem
Type: float
-
num_wells
¶ Number of Wells
Required: True
The value of the following variables depends on
num_wells
:- num_wells_getem
Type: float
-
num_wells_getem
¶ Number of Wells GETEM calc’d
Required: Required if ui_calculations_only=0
The value of
num_wells_getem
depends on the following variables:- ambient_pressure
- analysis_type
- casing_size
- conversion_subtype
- conversion_type
- decline_type
- delta_pressure_equip
- design_temp
- dt_prod_well
- excess_pressure_pump
- fracture_angle
- fracture_aperature
- fracture_length
- fracture_spacing
- fracture_width
- geothermal_analysis_period
- hr_pl_nlev
- inj_casing_size
- inj_prod_well_distance
- inj_well_diam
- model_choice
- nameplate
- num_fractures
- num_wells
- plant_efficiency_input
- prod_well_choice
- pump_efficiency
- reservoir_height
- reservoir_model_inputs
- 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: Required if ui_calculations_only=0
Type: float
-
plant_efficiency_input
¶ Plant efficiency
Required: True
The value of the following variables depends on
plant_efficiency_input
:- num_wells_getem
Type: float
-
prod_well_choice
¶ Temperature loss in production well choice [0/1]
Required: True
The value of the following variables depends on
prod_well_choice
:- num_wells_getem
Type: float
-
pump_efficiency
¶ Pump efficiency [%]
Required: True
The value of the following variables depends on
pump_efficiency
:- num_wells_getem
Type: float
-
q_sby_frac
¶ % thermal power for standby mode [%]
Required: Required if ui_calculations_only=0
Type: float
-
reservoir_height
¶ Reservoir height [m]
Required: True
The value of the following variables depends on
reservoir_height
:- num_wells_getem
Type: float
-
reservoir_model_inputs
¶ Reservoir temperatures over time
Required: Required if reservoir_pressure_change_type=3
The value of the following variables depends on
reservoir_model_inputs
:- num_wells_getem
Type: sequence[sequence]
-
reservoir_permeability
¶ Reservoir Permeability [darcys]
Required: True
The value of the following variables depends on
reservoir_permeability
:- num_wells_getem
Type: float
-
reservoir_pressure_change
¶ Pressure change [psi-h/1000lb]
Required: True
The value of the following variables depends on
reservoir_pressure_change
:- num_wells_getem
Type: float
-
reservoir_pressure_change_type
¶ Reservoir pressure change type
Constraints: INTEGER
Required: True
The value of the following variables depends on
reservoir_pressure_change_type
:- num_wells_getem
Type: float
-
reservoir_width
¶ Reservoir width [m]
Required: True
The value of the following variables depends on
reservoir_width
:- num_wells_getem
Type: float
-
resource_depth
¶ Resource Depth [m]
Required: True
The value of the following variables depends on
resource_depth
:- num_wells_getem
Type: float
-
resource_potential
¶ Resource Potential [MW]
Required: Required if ui_calculations_only=0
Type: float
-
resource_temp
¶ Resource Temperature [C]
Required: True
The value of the following variables depends on
resource_temp
:- T_htf_hot_ref
- design_temp
- num_wells_getem
Type: float
-
resource_type
¶ Type of Resource
Constraints: INTEGER
Required: True
The value of the following variables depends on
resource_type
:- T_htf_hot_ref
- design_temp
- num_wells_getem
Type: float
-
rock_density
¶ Rock density [kg/m^3]
Required: True
The value of the following variables depends on
rock_density
:- num_wells_getem
Type: float
-
rock_specific_heat
¶ Rock specific heat [J/kg-C]
Required: True
The value of the following variables depends on
rock_specific_heat
:- num_wells_getem
Type: float
-
rock_thermal_conductivity
¶ Rock thermal conductivity [J/m-day-C]
Required: True
The value of the following variables depends on
rock_thermal_conductivity
:- num_wells_getem
Type: float
-
specified_pump_work_amount
¶ Pump work specified by user [MW]
Required: True
The value of the following variables depends on
specified_pump_work_amount
:- num_wells_getem
Type: float
-
specify_pump_work
¶ Did user specify pump work? [0 or 1]
Constraints: INTEGER
Required: True
The value of the following variables depends on
specify_pump_work
:- num_wells_getem
Type: float
-
startup_frac
¶ % thermal power for startup [%]
Required: Required if ui_calculations_only=0
Type: float
-
startup_time
¶ Hours to start power block [hours]
Required: Required if ui_calculations_only=0
Type: float
-
subsurface_water_loss
¶ Subsurface water loss [%]
Required: True
The value of the following variables depends on
subsurface_water_loss
:- num_wells_getem
Type: float
-
system_use_lifetime_output
¶ Geothermal lifetime simulation [0/1]
Options: 0=SingleYearRepeated,1=RunEveryYear
Constraints: BOOLEAN
Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.
Type: float
-
temp_decline_max
¶ Maximum temperature decline [C]
Required: True
The value of the following variables depends on
temp_decline_max
:- num_wells_getem
Type: float
-
temp_decline_rate
¶ Temperature decline rate [%/yr]
Required: True
The value of the following variables depends on
temp_decline_rate
:- 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
The value of the following variables depends on
well_diameter
:- num_wells_getem
Type: float
-
well_flow_rate
¶ Production flow rate per well [kg/s]
Required: True
The value of the following variables depends on
well_flow_rate
:- num_wells_getem
Type: float
-
wet_bulb_temp
¶ Wet Bulb Temperature [C]
Required: True
The value of the following variables depends on
wet_bulb_temp
:- 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_cost_output
¶ Gross output from GETEM for cost
Type: float
-
gross_output
¶ Gross output from GETEM
Type: float
-
hp_flash_pressure
¶ HP Flash Pressure [psia]
Type: float
-
inj_pump_hp
¶ Injection Pump horsepower [hp]
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_inj
¶ Number of wells calculated by GETEM
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_watthr_per_lb
¶ Pump work Efficiency
Type: float
-
pump_work
¶ Pump work calculated by GETEM [MW]
Type: float
-
pumpwork_inj
¶ Injection Pump work Efficiency
Type: float
-
pumpwork_prod
¶ Production Pump work Efficiency
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 [C]
Type: sequence
-
timestep_pressure
¶ Atmospheric pressure [atm]
Type: sequence
-
timestep_resource_temperature
¶ Resource temperature [C]
Type: sequence
-
timestep_test_values
¶ Test output values in each time step
Type: sequence
-
timestep_wet_bulb
¶ Wet bulb temperature [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
-