def florisEval(**kwargs): #def florisEval(yaws=[0,0,0,0], density=1.225): num_fns = kwargs['functions'] # if num_fns > 1: # least_sq_flag = true # else: # least_sq_flag = false x = kwargs['cv'] ASV = kwargs['asv'] NTURBS = 2 yaws = x[:NTURBS] if len(x) > NTURBS: speed = x[NTURBS] direction = None #direction = x[NTURBS + 1] #for ii in range(len(yaws)): # yaws[ii] += np.deg2rad(direction) else: speed = None direction = None #print('density',density) #print('speed',speed) #print('direction',direction) filename = 'example_input.json' with open(filename, 'r') as f: data = json.load(f) if speed: data['farm']['properties']['wind_speed'] = speed if direction: data['farm']['properties']['wind_direction'] += direction #os.remove(filename) with open(filename + 'rm', 'w') as f: json.dump(data, f, indent=4) retval = dict([]) #if (ASV[0] & 1): # **** f: # setup floris and process input file floris = Floris(filename + 'rm') # run FLORIS with no yaw turbines = [ turbine for _, turbine in floris.farm.flow_field.turbine_map.items() ] for k, turbine in enumerate(turbines): turbine.yaw_angle = yaws[k] floris.farm.flow_field.calculate_wake() power_initial = np.sum([turbine.power for turbine in turbines ]) # determine initial power production power_initial = np.sum([turbine.power for turbine in turbines ]) # determine initial power production retval['fns'] = [power_initial] + [turbine.power for turbine in turbines] return (retval)
def florisEval(**kwargs): #def florisEval(yaws=[0,0,0,0], density=1.225): # DAKOTA setup NTURBS = 52 x = kwargs['cv'] ASV = kwargs['asv'] retval = dict([]) yaws = x[:NTURBS] if len(x) > NTURBS: speed = x[NTURBS] direction = x[NTURBS + 1] else: speed = None direction = None #print('density',density) #print('speed',speed) #print('direction',direction) filename = 'Peetz.json' with open(filename, 'r') as f: data = json.load(f) if speed: data['farm']['properties']['wind_speed'] = speed if direction: data['farm']['properties']['wind_direction'] = direction os.remove(filename) with open(filename, 'w') as f: json.dump(data, f, indent=4) floris = Floris(filename) # run FLORIS with no yaw turbines = [ turbine for _, turbine in floris.farm.flow_field.turbine_map.items() ] for k, turbine in enumerate(turbines): turbine.yaw_angle = yaws[k] floris.farm.flow_field.calculate_wake() power_initial = np.sum([turbine.power for turbine in turbines ]) # determine initial power production retval['fns'] = [-1 * power_initial] return (retval)
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ import sys from floris.floris import Floris import numpy as np from copy import deepcopy from floris.visualization import VisualizationManager import matplotlib.pyplot as plt import matplotlib if len(sys.argv) > 1: floris = Floris(sys.argv[1]) else: floris = Floris("example_input.json") #a, b = floris.farm.turbine_map.items() #a[0].yaw_angle = 0.43 floris.farm.flow_field.calculate_wake() hey = None ii = 0 fig, ax = plt.subplots(2, sharex=True, figsize=(6, 3)) plt.subplots_adjust(hspace=.09) for ii in [0, 1]: for coord, turbine in floris.farm.turbine_map.items(): if ii == 1: if hey is None: turbine.yaw_angle = 0.43
# coding: utf-8 # # Examples for running FLORIS # In[10]: # load modules from floris.floris import Floris import numpy as np # ## Setup floris and process input file # In[11]: floris = Floris("example_input.json") # ## Calculate Wake # In[12]: import time t1 = time.time() floris.farm.flow_field.calculate_wake() t2 = time.time() print('Time to compute wake = ', t2 - t1, 's') # ## Compute Velocities at each Turbine