Skip to content

Commit 2ea4044

Browse files
authored
Merge pull request #1370 from NatLabRockies/itc_basis_updates
Split ITC basis by tech part 1a: refactor single owner
2 parents 62d4a38 + 259464b commit 2ea4044

File tree

85 files changed

+29085
-2559
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+29085
-2559
lines changed

ssc/cmod_equpartflip.cpp

Lines changed: 264 additions & 264 deletions
Large diffs are not rendered by default.

ssc/cmod_host_developer.cpp

Lines changed: 262 additions & 261 deletions
Large diffs are not rendered by default.

ssc/cmod_levpartflip.cpp

Lines changed: 265 additions & 266 deletions
Large diffs are not rendered by default.

ssc/cmod_saleleaseback.cpp

Lines changed: 259 additions & 259 deletions
Large diffs are not rendered by default.

ssc/cmod_singleowner.cpp

Lines changed: 204 additions & 1503 deletions
Large diffs are not rendered by default.

ssc/common_financial.cpp

Lines changed: 1280 additions & 0 deletions
Large diffs are not rendered by default.

ssc/common_financial.h

Lines changed: 234 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,239 @@ class check_financial_metrics
144144
};
145145

146146

147-
147+
class itc_and_depreciation_calculations
148+
{
149+
public:
150+
itc_and_depreciation_calculations(compute_module* cm, size_t n_years);
151+
152+
void calc_basis(double pre_depr_alloc_basis, double pre_itc_qual_basis);
153+
void set_depr_schedules(compute_module* cm);
154+
void major_equipment_depreciation(compute_module* cm, util::matrix_t<double>& main_cf, int cf_equipment_expenditure, int expenditure_year, int analysis_period, int cf_equipment_depreciation);
155+
156+
void calc_annual_depreciation(int i);
157+
158+
void write_outputs(compute_module* cm);
159+
160+
ssc_number_t get_stadepr(int i) const;
161+
ssc_number_t get_feddepr(int i) const;
162+
ssc_number_t get_itc_sta(int i) const;
163+
ssc_number_t get_itc_fed(int i) const;
164+
ssc_number_t get_itc_total(int i) const;
165+
166+
void depreciation_sched_5_year_macrs_half_year(int cf_line);
167+
void depreciation_sched_15_year_macrs_half_year(int cf_line);
168+
void depreciation_sched_5_year_straight_line_half_year(int cf_line);
169+
void depreciation_sched_15_year_straight_line_half_year(int cf_line);
170+
void depreciation_sched_20_year_straight_line_half_year(int cf_line);
171+
void depreciation_sched_39_year_straight_line_half_year(int cf_line);
172+
void depreciation_sched_custom(compute_module* cm, int cf_line, const std::string& custom);
173+
174+
util::matrix_t<double> m_cf;
175+
176+
size_t nyears;
177+
178+
double itc_fed_amount;
179+
double itc_sta_amount;
180+
double itc_fed_per;
181+
double itc_sta_per;
182+
183+
double pre_depr_alloc_basis; // Total costs that could qualify for depreciation before allocations
184+
double pre_itc_qual_basis; // Total costs that could qualify for ITC before allocations
185+
186+
double depr_alloc_macrs_5_frac;
187+
double depr_alloc_macrs_15_frac;
188+
double depr_alloc_sl_5_frac;
189+
double depr_alloc_sl_15_frac;
190+
double depr_alloc_sl_20_frac;
191+
double depr_alloc_sl_39_frac;
192+
double depr_alloc_custom_frac;
193+
double depr_alloc_total_frac;
194+
195+
double depr_alloc_none_frac;
196+
197+
double depr_stabas_macrs_5_frac;
198+
double depr_stabas_macrs_15_frac;
199+
double depr_stabas_sl_5_frac;
200+
double depr_stabas_sl_15_frac;
201+
double depr_stabas_sl_20_frac;
202+
double depr_stabas_sl_39_frac;
203+
double depr_stabas_custom_frac;
204+
205+
double depr_fedbas_macrs_5_frac;
206+
double depr_fedbas_macrs_15_frac;
207+
double depr_fedbas_sl_5_frac;
208+
double depr_fedbas_sl_15_frac;
209+
double depr_fedbas_sl_20_frac;
210+
double depr_fedbas_sl_39_frac;
211+
double depr_fedbas_custom_frac;
212+
213+
double depr_alloc_macrs_5;
214+
double depr_alloc_macrs_15;
215+
double depr_alloc_sl_5;
216+
double depr_alloc_sl_15;
217+
double depr_alloc_sl_20;
218+
double depr_alloc_sl_39;
219+
double depr_alloc_custom;
220+
double depr_alloc_none;
221+
double depr_alloc_total;
222+
223+
double itc_sta_qual_macrs_5_frac;
224+
double itc_sta_qual_macrs_15_frac;
225+
double itc_sta_qual_sl_5_frac;
226+
double itc_sta_qual_sl_15_frac;
227+
double itc_sta_qual_sl_20_frac;
228+
double itc_sta_qual_sl_39_frac;
229+
double itc_sta_qual_custom_frac;
230+
231+
double itc_sta_qual_total;
232+
233+
double itc_sta_qual_macrs_5;
234+
double itc_sta_qual_macrs_15;
235+
double itc_sta_qual_sl_5;
236+
double itc_sta_qual_sl_15;
237+
double itc_sta_qual_sl_20;
238+
double itc_sta_qual_sl_39;
239+
double itc_sta_qual_custom;
240+
241+
double itc_sta_disallow_factor;
242+
243+
244+
double itc_disallow_sta_percent_macrs_5;
245+
double itc_disallow_sta_percent_macrs_15;
246+
double itc_disallow_sta_percent_sl_5;
247+
double itc_disallow_sta_percent_sl_15;
248+
double itc_disallow_sta_percent_sl_20;
249+
double itc_disallow_sta_percent_sl_39;
250+
double itc_disallow_sta_percent_custom;
251+
252+
double itc_disallow_sta_fixed_macrs_5;
253+
double itc_disallow_sta_fixed_macrs_15;
254+
double itc_disallow_sta_fixed_sl_5;
255+
double itc_disallow_sta_fixed_sl_15;
256+
double itc_disallow_sta_fixed_sl_20;
257+
double itc_disallow_sta_fixed_sl_39;
258+
double itc_disallow_sta_fixed_custom;
259+
260+
double itc_fed_qual_macrs_5_frac;
261+
double itc_fed_qual_macrs_15_frac;
262+
double itc_fed_qual_sl_5_frac;
263+
double itc_fed_qual_sl_15_frac;
264+
double itc_fed_qual_sl_20_frac;
265+
double itc_fed_qual_sl_39_frac;
266+
double itc_fed_qual_custom_frac;
267+
268+
double itc_fed_qual_total;
269+
270+
double itc_fed_qual_macrs_5;
271+
double itc_fed_qual_macrs_15;
272+
double itc_fed_qual_sl_5;
273+
double itc_fed_qual_sl_15;
274+
double itc_fed_qual_sl_20;
275+
double itc_fed_qual_sl_39;
276+
double itc_fed_qual_custom;
277+
278+
double itc_fed_disallow_factor;
279+
280+
281+
double itc_disallow_fed_percent_macrs_5;
282+
double itc_disallow_fed_percent_macrs_15;
283+
double itc_disallow_fed_percent_sl_5;
284+
double itc_disallow_fed_percent_sl_15;
285+
double itc_disallow_fed_percent_sl_20;
286+
double itc_disallow_fed_percent_sl_39;
287+
double itc_disallow_fed_percent_custom;
288+
289+
double itc_disallow_fed_fixed_macrs_5;
290+
double itc_disallow_fed_fixed_macrs_15;
291+
double itc_disallow_fed_fixed_sl_5;
292+
double itc_disallow_fed_fixed_sl_15;
293+
double itc_disallow_fed_fixed_sl_20;
294+
double itc_disallow_fed_fixed_sl_39;
295+
double itc_disallow_fed_fixed_custom;
296+
297+
298+
// Depreciation
299+
// State depreciation
300+
double depr_sta_reduction_ibi;
301+
302+
double depr_sta_reduction_cbi;
303+
304+
double depr_sta_reduction;
305+
306+
double depr_stabas_macrs_5;
307+
double depr_stabas_macrs_15;
308+
double depr_stabas_sl_5;
309+
double depr_stabas_sl_15;
310+
double depr_stabas_sl_20;
311+
double depr_stabas_sl_39;
312+
double depr_stabas_custom;
313+
314+
// ITC reduction
315+
double itc_fed_percent_deprbas_sta;
316+
double itc_fed_amount_deprbas_sta;
317+
double itc_sta_percent_deprbas_sta;
318+
double itc_sta_amount_deprbas_sta;
319+
320+
321+
// Bonus depreciation
322+
double depr_stabas_macrs_5_bonus_frac;
323+
double depr_stabas_macrs_15_bonus_frac;
324+
double depr_stabas_sl_5_bonus_frac;
325+
double depr_stabas_sl_15_bonus_frac;
326+
double depr_stabas_sl_20_bonus_frac;
327+
double depr_stabas_sl_39_bonus_frac;
328+
double depr_stabas_custom_bonus_frac;
329+
330+
double depr_stabas_macrs_5_bonus;
331+
double depr_stabas_macrs_15_bonus;
332+
double depr_stabas_sl_5_bonus;
333+
double depr_stabas_sl_15_bonus;
334+
double depr_stabas_sl_20_bonus;
335+
double depr_stabas_sl_39_bonus;
336+
double depr_stabas_custom_bonus;
337+
338+
double depr_stabas_total;
339+
340+
// Federal depreciation
341+
double depr_fed_reduction_ibi;
342+
343+
double depr_fed_reduction_cbi;
344+
345+
double depr_fed_reduction;
346+
347+
double depr_fedbas_macrs_5;
348+
double depr_fedbas_macrs_15;
349+
double depr_fedbas_sl_5;
350+
double depr_fedbas_sl_15;
351+
double depr_fedbas_sl_20;
352+
double depr_fedbas_sl_39;
353+
double depr_fedbas_custom;
354+
355+
// ITC reduction
356+
double itc_fed_percent_deprbas_fed;
357+
double itc_fed_amount_deprbas_fed;
358+
double itc_sta_percent_deprbas_fed;
359+
double itc_sta_amount_deprbas_fed;
360+
361+
// Bonus depreciation
362+
double depr_fedbas_macrs_5_bonus_frac;
363+
double depr_fedbas_macrs_15_bonus_frac;
364+
double depr_fedbas_sl_5_bonus_frac;
365+
double depr_fedbas_sl_15_bonus_frac;
366+
double depr_fedbas_sl_20_bonus_frac;
367+
double depr_fedbas_sl_39_bonus_frac;
368+
double depr_fedbas_custom_bonus_frac;
369+
370+
double depr_fedbas_macrs_5_bonus;
371+
double depr_fedbas_macrs_15_bonus;
372+
double depr_fedbas_sl_5_bonus;
373+
double depr_fedbas_sl_15_bonus;
374+
double depr_fedbas_sl_20_bonus;
375+
double depr_fedbas_sl_39_bonus;
376+
double depr_fedbas_custom_bonus;
377+
378+
double depr_fedbas_total;
379+
};
148380

149381

150382

@@ -156,7 +388,7 @@ class advanced_financing_cost
156388
{
157389
private:
158390
compute_module *m_cm;
159-
391+
160392
public:
161393
advanced_financing_cost(compute_module *cm);
162394
bool compute_cost(double cost_installed, double equity, double debt, double cbi, double ibi);
@@ -165,4 +397,3 @@ class advanced_financing_cost
165397

166398

167399
#endif
168-
1.75 MB
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)