def setUp(self): self.trb = tcc_csm_assembly() self.trb.rotor_diameter = 126.0 self.trb.advanced_blade = True self.trb.blade_number = 3 self.trb.hub_height = 90.0 self.trb.machine_rating = 5000.0 self.trb.offshore = True self.trb.year = 2009 self.trb.month = 12 self.trb.drivetrain_design = 'geared' # Rotor force calculations for nacelle inputs maxTipSpd = 80.0 maxEfficiency = 0.90201 ratedWindSpd = 11.5064 thrustCoeff = 0.50 airDensity = 1.225 ratedHubPower = self.trb.machine_rating / maxEfficiency rotorSpeed = (maxTipSpd/(0.5*self.trb.rotor_diameter)) * (60.0 / (2*np.pi)) self.trb.rotor_thrust = airDensity * thrustCoeff * np.pi * self.trb.rotor_diameter**2 * (ratedWindSpd**2) / 8 self.trb.rotor_torque = ratedHubPower/(rotorSpeed*(np.pi/30))*1000
print "Bedplate cost is ${0:.2f} USD".format(turbine.nacelleCC.bedplateCC.cost) print "Yaw system cost is ${0:.2f} USD".format(turbine.nacelleCC.yawSysCC.cost) print print "Tower cost is ${0:.2f} USD".format(turbine.towerCC.cost) print print "The overall turbine cost is ${0:.2f} USD".format(turbine.turbine_cost) print # 5 ---------- # 6 ---------- # A simple test of nrel_csm_tcc model from turbine_costsse.nrel_csm_tcc import tcc_csm_assembly import numpy as np trb = tcc_csm_assembly() # 6 ---------- # 7 ---------- # NREL 5 MW main parameters trb.rotor_diameter = 126.0 trb.advanced_blade = True trb.blade_number = 3 trb.hub_height = 90.0 trb.machine_rating = 5000.0 trb.offshore = True trb.drivetrain_design = 'geared' trb.crane = True trb.advanced_bedplate = 0 trb.advanced_tower = False
def configure(self): configure_extended_financial_analysis(self) self.replace('tcc_a', tcc_csm_assembly()) self.replace('bos_a', bos_csm_assembly()) self.replace('opex_a', opex_csm_assembly()) self.replace('aep_a', aep_csm_assembly()) self.replace('fin_a', fin_csm_assembly()) # connect i/o to component and assembly inputs # turbine configuration # rotor self.connect('rotor_diameter', ['aep_a.rotor_diameter', 'tcc_a.rotor_diameter', 'bos_a.rotor_diameter']) self.connect('max_tip_speed', ['aep_a.max_tip_speed']) self.connect('max_power_coefficient', 'aep_a.max_power_coefficient') self.connect('opt_tsr','aep_a.opt_tsr') self.connect('cut_in_wind_speed','aep_a.cut_in_wind_speed') self.connect('cut_out_wind_speed','aep_a.cut_out_wind_speed') self.connect('altitude','aep_a.altitude') self.connect('shear_exponent','aep_a.shear_exponent') self.connect('wind_speed_50m','aep_a.wind_speed_50m') self.connect('weibull_k','aep_a.weibull_k') self.connect('soiling_losses','aep_a.soiling_losses') self.connect('array_losses','aep_a.array_losses') self.connect('availability','aep_a.availability') self.connect('thrust_coefficient','aep_a.thrust_coefficient') self.connect('max_efficiency', 'aep_a.max_efficiency') self.connect('blade_number','tcc_a.blade_number') self.connect('advanced_blade','tcc_a.advanced_blade') # drivetrain self.connect('machine_rating', ['aep_a.machine_rating', 'tcc_a.machine_rating', 'bos_a.machine_rating', 'opex_a.machine_rating']) self.connect('drivetrain_design', ['aep_a.drivetrain_design', 'tcc_a.drivetrain_design']) self.connect('crane','tcc_a.crane') self.connect('advanced_bedplate','tcc_a.advanced_bedplate') # tower self.connect('hub_height', ['aep_a.hub_height', 'tcc_a.hub_height', 'bos_a.hub_height']) self.connect('advanced_tower','tcc_a.advanced_tower') # plant configuration # climate self.connect('sea_depth', ['bos_a.sea_depth', 'opex_a.sea_depth', 'fin_a.sea_depth']) self.connect('offshore','tcc_a.offshore') # plant operation self.connect('turbine_number', ['aep_a.turbine_number', 'bos_a.turbine_number', 'opex_a.turbine_number']) # financial self.connect('year', ['tcc_a.year', 'bos_a.year', 'opex_a.year']) self.connect('month', ['tcc_a.month', 'bos_a.month', 'opex_a.month']) self.connect('fixed_charge_rate','fin_a.fixed_charge_rate') self.connect('construction_finance_rate','fin_a.construction_finance_rate') self.connect('tax_rate','fin_a.tax_rate') self.connect('discount_rate','fin_a.discount_rate') self.connect('construction_time','fin_a.construction_time') self.connect('project_lifetime','fin_a.project_lifetime') # connections self.connect('aep_a.rotor_thrust','tcc_a.rotor_thrust') self.connect('aep_a.rotor_torque','tcc_a.rotor_torque') self.connect('aep_a.net_aep', ['opex_a.net_aep']) self.connect('tcc_a.turbine_cost','bos_a.turbine_cost') # create passthroughs for key output variables of interest # aep_a self.connect('aep_a.rated_rotor_speed','rated_rotor_speed') self.connect('aep_a.rated_wind_speed','rated_wind_speed') self.connect('aep_a.rotor_thrust','rotor_thrust') self.connect('aep_a.rotor_torque','rotor_torque') self.connect('aep_a.power_curve','power_curve') #self.connect('aep_a.max_efficiency','max_efficiency') self.connect('aep_a.gross_aep','gross_aep') self.connect('aep_a.capacity_factor','capacity_factor') # tcc_a self.connect('tcc_a.turbine_mass','turbine_mass') # fin_a self.connect('fin_a.lcoe','lcoe')
def configure(self): configure_extended_financial_analysis(self) self.replace('tcc_a', tcc_csm_assembly()) self.replace('bos_a', bos_csm_assembly()) self.replace('opex_a', opex_csm_assembly()) self.replace('aep_a', aep_csm_assembly()) self.replace('fin_a', fin_csm_assembly()) # connect i/o to component and assembly inputs # turbine configuration # rotor self.connect('rotor_diameter', [ 'aep_a.rotor_diameter', 'tcc_a.rotor_diameter', 'bos_a.rotor_diameter' ]) self.connect('max_tip_speed', ['aep_a.max_tip_speed']) self.connect('max_power_coefficient', 'aep_a.max_power_coefficient') self.connect('opt_tsr', 'aep_a.opt_tsr') self.connect('cut_in_wind_speed', 'aep_a.cut_in_wind_speed') self.connect('cut_out_wind_speed', 'aep_a.cut_out_wind_speed') self.connect('altitude', 'aep_a.altitude') self.connect('shear_exponent', 'aep_a.shear_exponent') self.connect('wind_speed_50m', 'aep_a.wind_speed_50m') self.connect('weibull_k', 'aep_a.weibull_k') self.connect('soiling_losses', 'aep_a.soiling_losses') self.connect('array_losses', 'aep_a.array_losses') self.connect('availability', 'aep_a.availability') self.connect('thrust_coefficient', 'aep_a.thrust_coefficient') self.connect('max_efficiency', 'aep_a.max_efficiency') self.connect('blade_number', 'tcc_a.blade_number') self.connect('advanced_blade', 'tcc_a.advanced_blade') # drivetrain self.connect('machine_rating', [ 'aep_a.machine_rating', 'tcc_a.machine_rating', 'bos_a.machine_rating', 'opex_a.machine_rating' ]) self.connect('drivetrain_design', ['aep_a.drivetrain_design', 'tcc_a.drivetrain_design']) self.connect('crane', 'tcc_a.crane') self.connect('advanced_bedplate', 'tcc_a.advanced_bedplate') # tower self.connect( 'hub_height', ['aep_a.hub_height', 'tcc_a.hub_height', 'bos_a.hub_height']) self.connect('advanced_tower', 'tcc_a.advanced_tower') # plant configuration # climate self.connect( 'sea_depth', ['bos_a.sea_depth', 'opex_a.sea_depth', 'fin_a.sea_depth']) self.connect('offshore', 'tcc_a.offshore') # plant operation self.connect('turbine_number', [ 'aep_a.turbine_number', 'bos_a.turbine_number', 'opex_a.turbine_number' ]) # financial self.connect('year', ['tcc_a.year', 'bos_a.year', 'opex_a.year']) self.connect('month', ['tcc_a.month', 'bos_a.month', 'opex_a.month']) self.connect('fixed_charge_rate', 'fin_a.fixed_charge_rate') self.connect('construction_finance_rate', 'fin_a.construction_finance_rate') self.connect('tax_rate', 'fin_a.tax_rate') self.connect('discount_rate', 'fin_a.discount_rate') self.connect('construction_time', 'fin_a.construction_time') self.connect('project_lifetime', 'fin_a.project_lifetime') # connections self.connect('aep_a.rotor_thrust', 'tcc_a.rotor_thrust') self.connect('aep_a.rotor_torque', 'tcc_a.rotor_torque') self.connect('aep_a.net_aep', ['opex_a.net_aep']) self.connect('tcc_a.turbine_cost', 'bos_a.turbine_cost') # create passthroughs for key output variables of interest # aep_a self.connect('aep_a.rated_rotor_speed', 'rated_rotor_speed') self.connect('aep_a.rated_wind_speed', 'rated_wind_speed') self.connect('aep_a.rotor_thrust', 'rotor_thrust') self.connect('aep_a.rotor_torque', 'rotor_torque') self.connect('aep_a.power_curve', 'power_curve') #self.connect('aep_a.max_efficiency','max_efficiency') self.connect('aep_a.gross_aep', 'gross_aep') self.connect('aep_a.capacity_factor', 'capacity_factor') # tcc_a self.connect('tcc_a.turbine_mass', 'turbine_mass') # fin_a self.connect('fin_a.lcoe', 'lcoe')
def configure(self): configure_extended_financial_analysis(self) self.replace("tcc_a", tcc_csm_assembly()) self.replace("bos_a", bos_csm_assembly()) self.replace("opex_a", opex_csm_assembly()) self.replace("aep_a", aep_csm_assembly()) self.replace("fin_a", fin_csm_assembly()) # connect i/o to component and assembly inputs # turbine configuration # rotor self.connect("rotor_diameter", ["aep_a.rotor_diameter", "tcc_a.rotor_diameter", "bos_a.rotor_diameter"]) self.connect("max_tip_speed", ["aep_a.max_tip_speed"]) self.connect("max_power_coefficient", "aep_a.max_power_coefficient") self.connect("opt_tsr", "aep_a.opt_tsr") self.connect("cut_in_wind_speed", "aep_a.cut_in_wind_speed") self.connect("cut_out_wind_speed", "aep_a.cut_out_wind_speed") self.connect("altitude", "aep_a.altitude") self.connect("shear_exponent", "aep_a.shear_exponent") self.connect("wind_speed_50m", "aep_a.wind_speed_50m") self.connect("weibull_k", "aep_a.weibull_k") self.connect("soiling_losses", "aep_a.soiling_losses") self.connect("array_losses", "aep_a.array_losses") self.connect("availability", "aep_a.availability") self.connect("thrust_coefficient", "aep_a.thrust_coefficient") self.connect("max_efficiency", "aep_a.max_efficiency") self.connect("blade_number", "tcc_a.blade_number") self.connect("advanced_blade", "tcc_a.advanced_blade") # drivetrain self.connect( "machine_rating", ["aep_a.machine_rating", "tcc_a.machine_rating", "bos_a.machine_rating", "opex_a.machine_rating"], ) self.connect("drivetrain_design", ["aep_a.drivetrain_design", "tcc_a.drivetrain_design"]) self.connect("crane", "tcc_a.crane") self.connect("advanced_bedplate", "tcc_a.advanced_bedplate") # tower self.connect("hub_height", ["aep_a.hub_height", "tcc_a.hub_height", "bos_a.hub_height"]) self.connect("advanced_tower", "tcc_a.advanced_tower") # plant configuration # climate self.connect("sea_depth", ["bos_a.sea_depth", "opex_a.sea_depth", "fin_a.sea_depth"]) self.connect("offshore", "tcc_a.offshore") # plant operation self.connect("turbine_number", ["aep_a.turbine_number", "bos_a.turbine_number", "opex_a.turbine_number"]) # financial self.connect("year", ["tcc_a.year", "bos_a.year", "opex_a.year"]) self.connect("month", ["tcc_a.month", "bos_a.month", "opex_a.month"]) self.connect("fixed_charge_rate", "fin_a.fixed_charge_rate") self.connect("construction_finance_rate", "fin_a.construction_finance_rate") self.connect("tax_rate", "fin_a.tax_rate") self.connect("discount_rate", "fin_a.discount_rate") self.connect("construction_time", "fin_a.construction_time") self.connect("project_lifetime", "fin_a.project_lifetime") # connections self.connect("aep_a.rotor_thrust", "tcc_a.rotor_thrust") self.connect("aep_a.rotor_torque", "tcc_a.rotor_torque") self.connect("aep_a.net_aep", ["opex_a.net_aep"]) self.connect("tcc_a.turbine_cost", "bos_a.turbine_cost") # create passthroughs for key output variables of interest # aep_a self.connect("aep_a.rated_rotor_speed", "rated_rotor_speed") self.connect("aep_a.rated_wind_speed", "rated_wind_speed") self.connect("aep_a.rotor_thrust", "rotor_thrust") self.connect("aep_a.rotor_torque", "rotor_torque") self.connect("aep_a.power_curve", "power_curve") # self.connect('aep_a.max_efficiency','max_efficiency') self.connect("aep_a.gross_aep", "gross_aep") self.connect("aep_a.capacity_factor", "capacity_factor") # tcc_a self.connect("tcc_a.turbine_mass", "turbine_mass") # fin_a self.connect("fin_a.lcoe", "lcoe")