@@ -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{
157389private:
158390 compute_module *m_cm;
159-
391+
160392public:
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-
0 commit comments