def _read(self): #self.xy = np.array(gwb.getTurbPos(self.wkbk, self.owexe, delFiles=True)) xy, self.ttypes = gwb.getTurbPos(self.wkbk, self.owexe, delFiles=True) self.xy = np.array(xy) if self.debug: sys.stderr.write('WTWkbkFile: read array {:} from {:}\n'.format(self.xy.shape, self.wkbk)) for i in range(self.xy.shape[0]): for j in range(self.xy.shape[1]): sys.stderr.write('{:.1f} '.format(self.xy[i][j])) sys.stderr.write('\n')
def _read(self): #self.xy = np.array(gwb.getTurbPos(self.wkbk, self.owexe, delFiles=True)) xy, self.ttypes = gwb.getTurbPos(self.wkbk, self.owexe, delFiles=True) self.xy = np.array(xy) if self.debug: sys.stderr.write('WTWkbkFile: read array {:} from {:}\n'.format( self.xy.shape, self.wkbk)) for i in range(self.xy.shape[0]): for j in range(self.xy.shape[1]): sys.stderr.write('{:.1f} '.format(self.xy[i][j])) sys.stderr.write('\n')
def example(owExe): debug = False start_once = False modify_turbine = False for arg in sys.argv[1:]: if arg == '-debug': debug = True if arg == '-once': start_once = True if arg == '-modturb': modify_turbine = True if arg == '-help': sys.stderr.write('USAGE: python openWindAcComponent.py [-once] [-debug] [-modturb]\n') exit() if not os.path.isfile(owExe): sys.stderr.write('OpenWind executable file "{:}" not found\n'.format(owExe)) exit() # set the external optimiser flag to True so that we can use our optimizing routines acutils.owIniSet(owExe, extVal=True, debug=True) testPath = '../templates/' #workbook_path = testPath + 'VA_test.blb' workbook_path = testPath + 'owTestWkbkExtend.blb' script_file = testPath + 'owacScript.xml' # optimize operation if modify_turbine: script_file = testPath + 'rtopScript.xml' # replace turbine, optimize #script_file = testPath + 'rtecScript.xml' # replace turbine, energy capture if debug: sys.stderr.write('Turbine will be modified\n') if not os.path.isfile(script_file): sys.stderr.write('OpenWind script file "{:}" not found\n'.format(script_file)) exit() # ----- Run OpenWind once to get initial turbine positions if debug: sys.stderr.write('\n--------- Running OpenWind to get turbine positions --------------\n') wt_positions, ttypes = getworkbookvals.getTurbPos(workbook_path, owExe, delFiles=False) if debug: sys.stderr.write('Initial turbine positions from workbook {:}\n'.format(workbook_path)) for i in range(len(wt_positions)): sys.stderr.write(" Turb{:2d} {:.1f} {:.1f} '{:}'\n".format(i, wt_positions[i][0],wt_positions[i][1], ttypes[i])) sys.stderr.write('--------- Finished Running OpenWind to get turbine positions --------------\n\n') # ----- Create OW_assembly object #turbine_name = 'Alstom Haliade 150m 6MW' # should match default turbine in workbook #machine_rating = 6000000.0 # machine_rating and power_rating are in W turbine_name = ttypes[0] # should match default turbine in workbook # How to get machine_rating for this turbine? # - could search all *owtg files for matching name, then get rating fname, machine_rating = turbfuncs.findOWTG(testPath, turbine_name) # should check for existence of both owExe and workbook_path before # trying to run openwind owAsy = openwindAC_assembly(owExe, workbook_path, script_file=script_file, wt_positions=wt_positions, turbine_name=turbine_name, machine_rating=machine_rating, start_once=start_once, debug=debug) #owAsy.configure() owAsy.updateAssyRptPath('newReport.txt', 'newTestScript.xml') #owAsy.updateRptPath('newReport.txt', 'newTestScript.xml') # Originally, there was a turbine power/ct/rpm definition here, but that's not # part of an owAsy, so that code is now in C:/SystemsEngr/test/pcrvtst.py if True: owa = set_as_top(owAsy) if debug: sys.stderr.write('\n*** Running top-level assembly\n') owa.run() else: owAsy.execute() # run the openWind process # ----- Summary print 'openwindAC_assembly results:' print ' Gross {:.4f} mWh'.format(owAsy.gross_aep*0.001) print ' Net {:.4f} mWh'.format(owAsy.net_aep*0.001) print ' Total losses {:.2f} %'.format(owAsy.total_losses*100.0) print ' CF {:.2f} %'.format(owAsy.capacity_factor*100.0) print ' Using {:} turbines with power rating of {:.3f} MW'.format( len(owAsy.wt_layout.wt_positions), owAsy.machine_rating/1000000.0)