def setUp(self):

        self.aep = aep_csm_assembly()

        self.aep.machine_rating = 5000.0 # Float(units = 'kW', iotype='in', desc= 'rated machine power in kW')
        self.aep.rotor_diameter = 126.0 # Float(units = 'm', iotype='in', desc= 'rotor diameter of the machine')
        self.aep.max_tip_speed = 80.0 # Float(units = 'm/s', iotype='in', desc= 'maximum allowable tip speed for the rotor')
        self.aep.drivetrain_design = 'geared' # Enum('geared', ('geared', 'single_stage', 'multi_drive', 'pm_direct_drive'), iotype='in')
        self.aep.altitude = 0.0 # Float(0.0, units = 'm', iotype='in', desc= 'altitude of wind plant')
        self.aep.turbine_number = 100 # Int(100, iotype='in', desc = 'total number of wind turbines at the plant')
        self.aep.hub_height = 90.0 # Float(units = 'm', iotype='in', desc='hub height of wind turbine above ground / sea level')s
        self.aep.max_power_coefficient = 0.488 #Float(0.488, iotype='in', desc= 'maximum power coefficient of rotor for operation in region 2')
        self.aep.opt_tsr = 7.525 #Float(7.525, iotype='in', desc= 'optimum tip speed ratio for operation in region 2')
        self.aep.cut_in_wind_speed = 3.0 #Float(3.0, units = 'm/s', iotype='in', desc= 'cut in wind speed for the wind turbine')
        self.aep.cut_out_wind_speed = 25.0 #Float(25.0, units = 'm/s', iotype='in', desc= 'cut out wind speed for the wind turbine')
        self.aep.hub_height = 90.0 #Float(90.0, units = 'm', iotype='in', desc= 'hub height of wind turbine above ground / sea level')
        self.aep.altitude = 0.0 #Float(0.0, units = 'm', iotype='in', desc= 'altitude of wind plant')
        #self.aep.air_density = Float(0.0, units = 'kg / (m * m * m)', iotype='in', desc= 'air density at wind plant site')  # default air density value is 0.0 - forces aero csm to calculate air density in model
        self.aep.drivetrain_design = 'geared' #Enum('geared', ('geared', 'single_stage', 'multi_drive', 'pm_direct_drive'), iotype='in')
        self.aep.shear_exponent = 0.1 #Float(0.1, iotype='in', desc= 'shear exponent for wind plant') #TODO - could use wind model here
        self.aep.wind_speed_50m = 8.02 #Float(8.35, units = 'm/s', iotype='in', desc='mean annual wind speed at 50 m height')
        self.aep.weibull_k= 2.15 #Float(2.1, iotype='in', desc = 'weibull shape factor for annual wind speed distribution')
        self.aep.soiling_losses = 0.0 #Float(0.0, iotype='in', desc = 'energy losses due to blade soiling for the wind plant - average across turbines')
        self.aep.array_losses = 0.10 #Float(0.06, iotype='in', desc = 'energy losses due to turbine interactions - across entire plant')
        self.aep.availability = 0.941 #Float(0.94287630736, iotype='in', desc = 'average annual availbility of wind turbines at plant')
        self.aep.turbine_number = 100 #Int(100, iotype='in', desc = 'total number of wind turbines at the plant')
        self.aep.thrust_coefficient = 0.50 #Float(0.50, iotype='in', desc='thrust coefficient at rated power')
    def setUp(self):

        self.aep = aep_csm_assembly()

        self.aep.machine_rating = 5000.0  # Float(units = 'kW', iotype='in', desc= 'rated machine power in kW')
        self.aep.rotor_diameter = 126.0  # Float(units = 'm', iotype='in', desc= 'rotor diameter of the machine')
        self.aep.max_tip_speed = 80.0  # Float(units = 'm/s', iotype='in', desc= 'maximum allowable tip speed for the rotor')
        self.aep.drivetrain_design = 'geared'  # Enum('geared', ('geared', 'single_stage', 'multi_drive', 'pm_direct_drive'), iotype='in')
        self.aep.altitude = 0.0  # Float(0.0, units = 'm', iotype='in', desc= 'altitude of wind plant')
        self.aep.turbine_number = 100  # Int(100, iotype='in', desc = 'total number of wind turbines at the plant')
        self.aep.hub_height = 90.0  # Float(units = 'm', iotype='in', desc='hub height of wind turbine above ground / sea level')s
        self.aep.max_power_coefficient = 0.488  #Float(0.488, iotype='in', desc= 'maximum power coefficient of rotor for operation in region 2')
        self.aep.opt_tsr = 7.525  #Float(7.525, iotype='in', desc= 'optimum tip speed ratio for operation in region 2')
        self.aep.cut_in_wind_speed = 3.0  #Float(3.0, units = 'm/s', iotype='in', desc= 'cut in wind speed for the wind turbine')
        self.aep.cut_out_wind_speed = 25.0  #Float(25.0, units = 'm/s', iotype='in', desc= 'cut out wind speed for the wind turbine')
        self.aep.hub_height = 90.0  #Float(90.0, units = 'm', iotype='in', desc= 'hub height of wind turbine above ground / sea level')
        self.aep.altitude = 0.0  #Float(0.0, units = 'm', iotype='in', desc= 'altitude of wind plant')
        #self.aep.air_density = Float(0.0, units = 'kg / (m * m * m)', iotype='in', desc= 'air density at wind plant site')  # default air density value is 0.0 - forces aero csm to calculate air density in model
        self.aep.drivetrain_design = 'geared'  #Enum('geared', ('geared', 'single_stage', 'multi_drive', 'pm_direct_drive'), iotype='in')
        self.aep.shear_exponent = 0.1  #Float(0.1, iotype='in', desc= 'shear exponent for wind plant') #TODO - could use wind model here
        self.aep.wind_speed_50m = 8.02  #Float(8.35, units = 'm/s', iotype='in', desc='mean annual wind speed at 50 m height')
        self.aep.weibull_k = 2.15  #Float(2.1, iotype='in', desc = 'weibull shape factor for annual wind speed distribution')
        self.aep.soiling_losses = 0.0  #Float(0.0, iotype='in', desc = 'energy losses due to blade soiling for the wind plant - average across turbines')
        self.aep.array_losses = 0.10  #Float(0.06, iotype='in', desc = 'energy losses due to turbine interactions - across entire plant')
        self.aep.availability = 0.941  #Float(0.94287630736, iotype='in', desc = 'average annual availbility of wind turbines at plant')
        self.aep.turbine_number = 100  #Int(100, iotype='in', desc = 'total number of wind turbines at the plant')
        self.aep.thrust_coefficient = 0.50  #Float(0.50, iotype='in', desc='thrust coefficient at rated power')
Exemple #3
0
    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('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('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')
        # tcc_a
        self.connect('tcc_a.turbine_mass','turbine_mass')
        # fin_a
        self.connect('fin_a.lcoe','lcoe')
Exemple #4
0
# 5 ----------

# A simple test of nrel_csm_aep model
from plant_energyse.nrel_csm_aep.nrel_csm_aep import aep_csm_assembly

aep = aep_csm_assembly()

# 5 ---------- 
# 6 ----------

# Set input parameters
aep.machine_rating = 5000.0 # Float(units = 'kW', iotype='in', desc= 'rated machine power in kW')
aep.rotor_diameter = 126.0 # Float(units = 'm', iotype='in', desc= 'rotor diameter of the machine')
aep.max_tip_speed = 80.0 # Float(units = 'm/s', iotype='in', desc= 'maximum allowable tip speed for the rotor')
aep.drivetrain_design = 'geared' # Enum('geared', ('geared', 'single_stage', 'multi_drive', 'pm_direct_drive'), iotype='in')
aep.altitude = 0.0 # Float(0.0, units = 'm', iotype='in', desc= 'altitude of wind plant')
aep.turbine_number = 100 # Int(100, iotype='in', desc = 'total number of wind turbines at the plant')
aep.hub_height = 90.0 # Float(units = 'm', iotype='in', desc='hub height of wind turbine above ground / sea level')s
aep.max_power_coefficient = 0.488 #Float(0.488, iotype='in', desc= 'maximum power coefficient of rotor for operation in region 2')
aep.opt_tsr = 7.525 #Float(7.525, iotype='in', desc= 'optimum tip speed ratio for operation in region 2')
aep.cut_in_wind_speed = 3.0 #Float(3.0, units = 'm/s', iotype='in', desc= 'cut in wind speed for the wind turbine')
aep.cut_out_wind_speed = 25.0 #Float(25.0, units = 'm/s', iotype='in', desc= 'cut out wind speed for the wind turbine')
aep.hub_height = 90.0 #Float(90.0, units = 'm', iotype='in', desc= 'hub height of wind turbine above ground / sea level')
#aep.air_density = Float(0.0, units = 'kg / (m * m * m)', iotype='in', desc= 'air density at wind plant site')  # default air density value is 0.0 - forces aero csm to calculate air density in model
aep.shear_exponent = 0.1 #Float(0.1, iotype='in', desc= 'shear exponent for wind plant') #TODO - could use wind model here
aep.wind_speed_50m = 8.02 #Float(8.35, units = 'm/s', iotype='in', desc='mean annual wind speed at 50 m height')
aep.weibull_k= 2.15 #Float(2.1, iotype='in', desc = 'weibull shape factor for annual wind speed distribution')
aep.soiling_losses = 0.0 #Float(0.0, iotype='in', desc = 'energy losses due to blade soiling for the wind plant - average across turbines')
aep.array_losses = 0.10 #Float(0.06, iotype='in', desc = 'energy losses due to turbine interactions - across entire plant')
aep.availability = 0.941 #Float(0.94287630736, iotype='in', desc = 'average annual availbility of wind turbines at plant')
aep.thrust_coefficient = 0.50 #Float(0.50, iotype='in', desc='thrust coefficient at rated power')
Exemple #5
0
# 5 ----------

# A simple test of nrel_csm_aep model
from plant_energyse.nrel_csm_aep.nrel_csm_aep import aep_csm_assembly

aep = aep_csm_assembly()

# 5 ----------
# 6 ----------

# Set input parameters
aep.machine_rating = 5000.0  # Float(units = 'kW', iotype='in', desc= 'rated machine power in kW')
aep.rotor_diameter = 126.0  # Float(units = 'm', iotype='in', desc= 'rotor diameter of the machine')
aep.max_tip_speed = 80.0  # Float(units = 'm/s', iotype='in', desc= 'maximum allowable tip speed for the rotor')
aep.drivetrain_design = 'geared'  # Enum('geared', ('geared', 'single_stage', 'multi_drive', 'pm_direct_drive'), iotype='in')
aep.altitude = 0.0  # Float(0.0, units = 'm', iotype='in', desc= 'altitude of wind plant')
aep.turbine_number = 100  # Int(100, iotype='in', desc = 'total number of wind turbines at the plant')
aep.hub_height = 90.0  # Float(units = 'm', iotype='in', desc='hub height of wind turbine above ground / sea level')s
aep.max_power_coefficient = 0.488  #Float(0.488, iotype='in', desc= 'maximum power coefficient of rotor for operation in region 2')
aep.opt_tsr = 7.525  #Float(7.525, iotype='in', desc= 'optimum tip speed ratio for operation in region 2')
aep.cut_in_wind_speed = 3.0  #Float(3.0, units = 'm/s', iotype='in', desc= 'cut in wind speed for the wind turbine')
aep.cut_out_wind_speed = 25.0  #Float(25.0, units = 'm/s', iotype='in', desc= 'cut out wind speed for the wind turbine')
aep.hub_height = 90.0  #Float(90.0, units = 'm', iotype='in', desc= 'hub height of wind turbine above ground / sea level')
#aep.air_density = Float(0.0, units = 'kg / (m * m * m)', iotype='in', desc= 'air density at wind plant site')  # default air density value is 0.0 - forces aero csm to calculate air density in model
aep.shear_exponent = 0.1  #Float(0.1, iotype='in', desc= 'shear exponent for wind plant') #TODO - could use wind model here
aep.wind_speed_50m = 8.02  #Float(8.35, units = 'm/s', iotype='in', desc='mean annual wind speed at 50 m height')
aep.weibull_k = 2.15  #Float(2.1, iotype='in', desc = 'weibull shape factor for annual wind speed distribution')
aep.soiling_losses = 0.0  #Float(0.0, iotype='in', desc = 'energy losses due to blade soiling for the wind plant - average across turbines')
aep.array_losses = 0.10  #Float(0.06, iotype='in', desc = 'energy losses due to turbine interactions - across entire plant')
aep.availability = 0.941  #Float(0.94287630736, iotype='in', desc = 'average annual availbility of wind turbines at plant')
aep.thrust_coefficient = 0.50  #Float(0.50, iotype='in', desc='thrust coefficient at rated power')
Exemple #6
0
    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')
Exemple #7
0
    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")
Exemple #8
0
    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_2015())
        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_csm_assembly()) # TODO include AEP assembly from CSM and use to bridge rotor torque
        self.replace('fin_a', fin_csm_assembly())
    
        # 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_csm_aep(self)
        self.connect('aep_a.rotor_torque','tcc_a.rotor_torque')
        
        # 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)