Ejemplo n.º 1
0
    def configure(self):
        super(Assembly, self).configure()

        # Let's analyze the lifetime cost of energy cost scaling model!
        self.add('lcoe_csm', lcoe_csm_assembly())

        # ..using the cutting edge pydakdriver
        dakDriver = pydakdriver()
        dakDriver.UQ(seed=3232)
        driver = self.add('driver',dakDriver)
        driver.workflow.add('lcoe_csm')
        driver.stdout = 'dakota.out'
        driver.stderr = 'dakota.err'

        driver.add_parameter('lcoe_csm.weibull_k',low=2.6*0.5, high=2.6*1.5)
        driver.add_parameter('lcoe_csm.shear_exponent',low=.1*0.5, high=.1*1.5)

        # use same objectives as previous sensitivity analysis
        driver.add_objective('lcoe_csm.coe')
        driver.add_objective('lcoe_csm.lcoe')
        driver.add_objective('lcoe_csm.net_aep')
        driver.add_objective('lcoe_csm.bos_costs')
        driver.add_objective('lcoe_csm.avg_annual_opex')
        driver.add_objective('lcoe_csm.turbine_cost')
        driver.add_objective('lcoe_csm.turbine_mass')
        driver.add_objective('lcoe_csm.rated_rotor_speed')
Ejemplo n.º 2
0
 def configure(self):
     self.add('rose', rosen())
     driver_obj = pydakdriver()
     driver_obj.Optimization(opt_type='conmin', surrogate_model=True)
     driver = self.add('driver', driver_obj)
     driver.stdout = 'dakotaOPT.out'
     driver.stderr = 'dakotaOPT.err'
     driver.samples = 500
     driver.add_parameter('rose.x1', low=-1.5, high=1.5)
     driver.add_parameter('rose.x2', low=-1.5, high=1.5)
     driver.add_objective('rose.f')
Ejemplo n.º 3
0
 def configure(self):
     self.add('rose', rosen())
     driver_obj = pydakdriver()
     driver_obj.Parameter_Study(study_type='centered')
     driver = self.add('driver', driver_obj)
     driver.stdout = 'dakotaPS.out'
     driver.stderr = 'dakotaPS.err'
     driver.step_vector = [.1, .1]
     driver.steps_per_variable = 9
     driver.add_parameter('rose.x1', low=-1.5, high=1.5)
     driver.add_parameter('rose.x2', low=-1.5, high=1.5)
     driver.add_objective('rose.f')
Ejemplo n.º 4
0
    def configure(self):
        self.add('rose', rosen())
        self.add('x1', Float(-999, iotype = 'in'))
        self.connect('x1', 'rose.x1')

        driver_obj = pydakdriver()
        driver_obj.UQ()
        self.driver = self.add('driver',driver_obj)
        self.driver.stdout = dacout
        self.driver.stderr = 'dakota.err'
        self.driver.sample_type = 'random'
        self.driver.seed = 4
        self.driver.samples = 5000
        self.driver.add_special_distribution('rose.x2', "normal", mean = .1, std_dev = .5)
        self.driver.add_objective('x1')
        self.driver.add_objective('rose.f')
Ejemplo n.º 5
0
 def configure(self):
     self.add('rose', rosen())
     driver_obj = pydakdriver()
     driver_obj.add_method('sampling',
                           method_options={
                               'samples': 30,
                               'sample_type': 'lhs'
                           })
     driver = self.add('driver', driver_obj)
     driver.stdout = 'dakotaDist.out'
     driver.stderr = 'dakotaDist.err'
     driver.precision = 1e-4
     driver.samples = 15
     #driver.add_special_distribution('rose.x2', "weibull", alpha = .5, beta = 0.2)
     driver.add_parameter('rose.x1', low=-1.5, high=1.5)
     driver.add_objective('rose.f')
Ejemplo n.º 6
0
    def configure(self):
        self.add('rose', rosen())
        self.add('x1', Float(-999, iotype='in'))
        self.connect('x1', 'rose.x1')

        driver_obj = pydakdriver()
        driver_obj.UQ()
        self.driver = self.add('driver', driver_obj)
        self.driver.stdout = dacout
        self.driver.stderr = 'dakota.err'
        self.driver.sample_type = 'random'
        self.driver.seed = 4
        self.driver.samples = 5000
        self.driver.add_special_distribution('rose.x2',
                                             "normal",
                                             mean=.1,
                                             std_dev=.5)
        self.driver.add_objective('x1')
        self.driver.add_objective('rose.f')
Ejemplo n.º 7
0
    def configure(self):
        super(Assembly, self).configure()

        # Let's analyze the lifetime cost of energy cost scaling model!

        wind_class = 'I'
        sea_depth = 0.0
        with_new_nacelle = True
        with_landbos = False
        flexible_blade = False
        with_3pt_drive = False
        with_ecn_opex = False
        ecn_file = ''
        with_openwind = False
        #create_example_se_assembly(wind_class,sea_depth,with_new_nacelle,with_landbos,flexible_blade,with_3pt_drive,with_ecn_opex,ecn_file) 
        self.add('lcoe_se', lcoe_se_assembly(with_new_nacelle,with_landbos,flexible_blade,with_3pt_drive,with_ecn_opex,ecn_file))


        # === Set assembly variables and objects ===
        self.lcoe_se.sea_depth = sea_depth # 0.0 for land-based turbine
        self.lcoe_se.turbine_number = 100
        self.lcoe_se.year = 2009
        self.lcoe_se.month = 12
    
        rotor = self.lcoe_se.rotor
        nacelle = self.lcoe_se.nacelle
        tower = self.lcoe_se.tower
        tcc_a = self.lcoe_se.tcc_a
        # bos_a = self.lcoe_se.bos_a
        # opex_a = self.lcoe_se.opex_a
        aep_a = self.lcoe_se.aep_a
        fin_a = self.lcoe_se.fin_a
    
        # Turbine ===========
        from wisdem.reference_turbines.nrel5mw.nrel5mw import configure_nrel5mw_turbine
        configure_nrel5mw_turbine(self.lcoe_se,wind_class,self.lcoe_se.sea_depth)
    
        # tcc ====
        self.lcoe_se.advanced_blade = True
        self.lcoe_se.offshore = False
        self.lcoe_se.assemblyCostMultiplier = 0.30
        self.lcoe_se.profitMultiplier = 0.20
        self.lcoe_se.overheadCostMultiplier = 0.0
        self.lcoe_se.transportMultiplier = 0.0
    
        # for new landBOS
        # === new landBOS ===
        if with_landbos:
            self.lcoe_se.voltage = 137
            self.lcoe_se.distInter = 5
            self.lcoe_se.terrain = 'FLAT_TO_ROLLING'
            self.lcoe_se.layout = 'SIMPLE'
            self.lcoe_se.soil = 'STANDARD'
    
        # aep ==== # based on COE review for land-based machines
        if not with_openwind:
            self.lcoe_se.array_losses = 0.059
            self.lcoe_se.A = 8.9 # weibull of 7.25 at 50 m with shear exp of 0.143
            self.lcoe_se.k = 2.0
        self.lcoe_se.other_losses = 0.101
        if not with_ecn_opex:
            self.lcoe_se.availability = 0.94
    
        # fin ===
        self.lcoe_se.fixed_charge_rate = 0.095
        self.lcoe_se.construction_finance_rate = 0.0
        self.lcoe_se.tax_rate = 0.4
        self.lcoe_se.discount_rate = 0.07
        self.lcoe_se.construction_time = 1.0
        self.lcoe_se.project_lifetime = 20.0
    
        # Set plant level inputs ===
        shearExp = 0.2 #TODO : should be an input to lcoe
        #rotor.cdf_reference_height_wind_speed = 90.0
        if not with_openwind:
            self.lcoe_se.array_losses = 0.1
        self.lcoe_se.other_losses = 0.0
        if not with_ecn_opex:
            self.lcoe_se.availability = 0.98
        rotor.turbulence_class = 'B'
        self.lcoe_se.multiplier = 2.23
    
        if wind_class == 'Offshore':
            # rotor.cdf_reference_mean_wind_speed = 8.4 # TODO - aep from its own module
            # rotor.cdf_reference_height_wind_speed = 50.0
            # rotor.weibull_shape = 2.1
            shearExp = 0.14 # TODO : should be an input to lcoe
            self.lcoe_se.array_losses = 0.15
            if not with_ecn_opex:
                self.lcoe_se.availability = 0.96
            self.lcoe_se.offshore = True
            self.lcoe_se.multiplier = 2.33
            self.lcoe_se.fixed_charge_rate = 0.118
    
        rotor.shearExp = shearExp
        tower.wind1.shearExp = shearExp
        tower.wind2.shearExp = shearExp

        # ..using the cutting edge pydakdriver
        dakDriver = pydakdriver()
        dakDriver.UQ()
        dakDriver.seed = 4723
        driver = self.add('driver',dakDriver)
        driver.workflow.add('lcoe_se')
        driver.stdout = 'dakota.out'
        driver.stderr = 'dakota.err'

        driver.add_parameter('lcoe_se.A',low=8.2*0.5, high=8.2*1.5)
        driver.add_parameter('lcoe_se.k',low=2.0*0.5, high=2.0*1.5)
        driver.add_parameter('lcoe_se.shear_exponent',low=.2*0.5, high=.2*1.5)

        # use same objectives as previous sensitivity analysis
        driver.add_objective('lcoe_se.coe')
        # driver.add_objective('lcoe_se.lcoe')
        driver.add_objective('lcoe_se.net_aep')
        driver.add_objective('lcoe_se.bos_costs')
        driver.add_objective('lcoe_se.avg_annual_opex')
        driver.add_objective('lcoe_se.turbine_cost')