def configure(self): """ tcc_a inputs: advanced_blade = Bool offshore = Bool assemblyCostMultiplier = Float overheadCostMultiplier = Float profitMultiplier = Float transportMultiplier = Float aep inputs: array_losses = Float other_losses = Float fin inputs: fixed_charge_rate = Float construction_finance_rate = Float tax_rate = Float discount_rate = Float construction_time = Float bos inputs: bos_multiplier = Float inputs: sea_depth year month project lifetime if csm opex additional inputs: availability = Float() if openwind opex additional inputs: power_curve rpm ct if with_landbos additional inputs: voltage distInter terrain layout soil """ # configure base assembly configure_extended_financial_analysis(self) # putting replace statements here for now; TODO - openmdao bug # replace BOS with either CSM or landbos if self.with_landbos: self.replace('bos_a', NREL_Land_BOSSE()) else: self.replace('bos_a', bos_csm_assembly()) self.replace('tcc_a', Turbine_CostsSE()) if self.with_ecn_opex: self.replace('opex_a', opex_ecn_assembly(ecn_file)) else: self.replace('opex_a', opex_csm_assembly()) self.replace('aep_a', aep_weibull_assembly()) self.replace('fin_a', fin_csm_assembly()) # add TurbineSE assembly configure_turbine(self, self.with_new_nacelle, self.flexible_blade, self.with_3pt_drive) # replace TCC with turbine_costs configure_lcoe_with_turb_costs(self) # replace BOS with either CSM or landbos if self.with_landbos: configure_lcoe_with_landbos(self) else: configure_lcoe_with_csm_bos(self) # replace AEP with weibull AEP (TODO: option for basic aep) configure_lcoe_with_weibull_aep(self) # replace OPEX with CSM or ECN opex and add AEP if self.with_ecn_opex: configure_lcoe_with_ecn_opex(self,ecn_file) self.connect('opex_a.availability','aep_a.availability') # connecting here due to aep / opex reversal depending on model else: configure_lcoe_with_csm_opex(self) self.add('availability',Float(0.94, iotype='in', desc='average annual availbility of wind turbines at plant', group='Plant_AEP')) self.connect('availability','aep_a.availability') # connecting here due to aep / opex reversal depending on model # replace Finance with CSM Finance configure_lcoe_with_csm_fin(self)
def configure(self): """ tcc_a inputs: advanced_blade = Bool offshore = Bool assemblyCostMultiplier = Float overheadCostMultiplier = Float profitMultiplier = Float transportMultiplier = Float aep inputs: array_losses = Float other_losses = Float fin inputs: fixed_charge_rate = Float construction_finance_rate = Float tax_rate = Float discount_rate = Float construction_time = Float bos inputs: bos_multiplier = Float inputs: sea_depth year month project lifetime if csm opex additional inputs: availability = Float() if openwind opex additional inputs: power_curve rpm ct if with_landbos additional inputs: voltage distInter terrain layout soil """ # configure base assembly configure_extended_financial_analysis(self) # putting replace statements here for now; TODO - openmdao bug # replace BOS with either CSM or landbos if self.with_landbos: self.replace('bos_a', NREL_Land_BOSSE()) else: self.replace('bos_a', bos_csm_assembly()) self.replace('tcc_a', Turbine_CostsSE()) if self.with_ecn_opex: self.replace('opex_a', opex_ecn_assembly(ecn_file)) else: self.replace('opex_a', opex_csm_assembly()) self.replace('aep_a', aep_weibull_assembly()) self.replace('fin_a', fin_csm_assembly()) # add TurbineSE assembly configure_turbine(self, self.with_new_nacelle, self.flexible_blade, self.with_3pt_drive) # replace TCC with turbine_costs configure_lcoe_with_turb_costs(self) # replace BOS with either CSM or landbos if self.with_landbos: configure_lcoe_with_landbos(self) else: configure_lcoe_with_csm_bos(self) # replace AEP with weibull AEP (TODO: option for basic aep) configure_lcoe_with_weibull_aep(self) # replace OPEX with CSM or ECN opex and add AEP if self.with_ecn_opex: configure_lcoe_with_ecn_opex(self, ecn_file) self.connect( 'opex_a.availability', 'aep_a.availability' ) # connecting here due to aep / opex reversal depending on model else: configure_lcoe_with_csm_opex(self) self.add( 'availability', Float( 0.94, iotype='in', desc='average annual availbility of wind turbines at plant' )) self.connect( 'availability', 'aep_a.availability' ) # connecting here due to aep / opex reversal depending on model # replace Finance with CSM Finance configure_lcoe_with_csm_fin(self)
# 1 --------- # A simple test of the basic_aep model from fusedwind.plant_flow.basic_aep import aep_weibull_assembly import numpy as np aep = aep_weibull_assembly() # 1 --------- # 2 --------- # Set input parameters aep.wind_curve = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, \ 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0]) aep.power_curve = np.array([0.0, 0.0, 0.0, 187.0, 350.0, 658.30, 1087.4, 1658.3, 2391.5, 3307.0, 4415.70, \ 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, \ 5000.0, 5000.0, 0.0]) aep.A = 8.35 aep.k = 2.15 aep.array_losses = 0.059 aep.other_losses = 0.0 aep.availability = 0.94 aep.turbine_number = 100 # 2 --------- # 3 --------- aep.run()
# 1 --------- # A simple test of the basic_aep model from fusedwind.plant_flow.basic_aep import aep_weibull_assembly import numpy as np aep = aep_weibull_assembly() # 1 --------- # 2 --------- # Set input parameters aep.wind_curve = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, \ 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0]) aep.power_curve = np.array([0.0, 0.0, 0.0, 187.0, 350.0, 658.30, 1087.4, 1658.3, 2391.5, 3307.0, 4415.70, \ 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, 5000.0, \ 5000.0, 5000.0, 0.0]) aep.A = 8.35 aep.k = 2.15 aep.array_losses = 0.059 aep.other_losses = 0.0 aep.availability = 0.94 aep.turbine_number = 100 # 2 --------- # 3 --------- aep.run() # 3 ---------