2323import geophires_x .Model as Model
2424
2525
26- def get_single_owner_parameters (model : Model ) -> dict [str , Any ]:
27- econ = model .economics
28-
29- ret : dict [str , Any ] = {}
30-
31- itc = econ .CCap .value * econ .RITC .value
32- total_capex_musd = (
33- econ .CCap .value - itc
34- )
35- ret ['total_installed_cost' ] = total_capex_musd * 1e6
36-
37- opex_musd = econ .Coam .value
38- ret ['om_fixed' ] = [opex_musd * 1e6 ]
39-
40- average_net_generation_MW = get_average_net_generation_MW (model )
41- ret ['system_capacity' ] = average_net_generation_MW * 1e3
42-
43- geophires_ctr_tenths = Decimal (econ .CTR .value )
44- fed_rate_tenths = geophires_ctr_tenths * (Decimal (0.7 ))
45- state_rate_tenths = geophires_ctr_tenths - fed_rate_tenths
46- ret ['federal_tax_rate' ] = [float (fed_rate_tenths * Decimal (100 ))]
47- ret ['state_tax_rate' ] = [float (state_rate_tenths * Decimal (100 ))]
48-
49- geophires_itc_tenths = Decimal (econ .RITC .value )
50- ret ['itc_fed_percent' ] = [float (geophires_itc_tenths * Decimal (100 ))]
51-
52- geophires_ptr_tenths = Decimal (econ .PTR .value )
53- ret ['property_tax_rate' ] = float (geophires_ptr_tenths * Decimal (100 ))
54-
55- return ret
56-
57-
5826def calculate_sam_economics (
59- model : Model
27+ model : Model
6028) -> dict [str , dict [str , Any ]]:
6129 custom_gen = CustomGeneration .new ()
6230 grid = Grid .from_existing (custom_gen )
@@ -72,12 +40,11 @@ def calculate_sam_economics(
7240 for module_file , module in zip (file_names , modules ):
7341 with open (Path (project_dir , f'{ module_file } .json' ), encoding = 'utf-8' ) as file :
7442 data = json .load (file )
75- # loop through each key-value pair
7643 for k , v in data .items ():
7744 if k != 'number_inputs' :
7845 module .value (k , v )
7946
80- for k , v in get_single_owner_parameters (model ).items ():
47+ for k , v in _get_single_owner_parameters (model ).items ():
8148 single_owner .value (k , v )
8249
8350 for module in modules :
@@ -97,17 +64,51 @@ def calculate_sam_economics(
9764 ret = {}
9865 for e in display_data :
9966 field_display = e [0 ] + ':' + ' ' * (max_field_name_len - len (e [0 ]) - 1 )
100- print (f'{ field_display } \t { sig_figs (e [1 ], 5 )} { e [2 ]} ' )
101- ret [e [0 ]] = {'value' : sig_figs (e [1 ], 5 ), 'unit' : e [2 ]}
67+ # print(f'{field_display}\t{sig_figs(e[1], 5)} {e[2]}')
68+ ret [e [0 ]] = {'value' : _sig_figs (e [1 ], 5 ), 'unit' : e [2 ]}
69+
70+ return ret
71+
72+
73+ def _get_single_owner_parameters (model : Model ) -> dict [str , Any ]:
74+ econ = model .economics
75+
76+ ret : dict [str , Any ] = {}
77+
78+ itc = econ .CCap .value * econ .RITC .value
79+ total_capex_musd = (
80+ econ .CCap .value - itc
81+ )
82+ ret ['total_installed_cost' ] = total_capex_musd * 1e6
83+
84+ opex_musd = econ .Coam .value
85+ ret ['om_fixed' ] = [opex_musd * 1e6 ]
86+
87+ average_net_generation_MW = _get_average_net_generation_MW (model )
88+ ret ['system_capacity' ] = average_net_generation_MW * 1e3
89+
90+ geophires_ctr_tenths = Decimal (econ .CTR .value )
91+ fed_rate_tenths = geophires_ctr_tenths * (Decimal (0.7 ))
92+ state_rate_tenths = geophires_ctr_tenths - fed_rate_tenths
93+ ret ['federal_tax_rate' ] = [float (fed_rate_tenths * Decimal (100 ))]
94+ ret ['state_tax_rate' ] = [float (state_rate_tenths * Decimal (100 ))]
95+
96+ geophires_itc_tenths = Decimal (econ .RITC .value )
97+ ret ['itc_fed_percent' ] = [float (geophires_itc_tenths * Decimal (100 ))]
98+
99+ geophires_ptr_tenths = Decimal (econ .PTR .value )
100+ ret ['property_tax_rate' ] = float (geophires_ptr_tenths * Decimal (100 ))
101+
102+ ret ['ppa_price_input' ] = [econ .ElecStartPrice .value ]
102103
103104 return ret
104105
105106
106- def get_average_net_generation_MW (model : Model ) -> float :
107+ def _get_average_net_generation_MW (model : Model ) -> float :
107108 return np .average (model .surfaceplant .NetElectricityProduced .value )
108109
109110
110- def sig_figs (val : float , num_sig_figs : int ) -> float :
111+ def _sig_figs (val : float , num_sig_figs : int ) -> float :
111112 if val is None :
112113 return None
113114
0 commit comments