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')
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')
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')
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')
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')
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')
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')