def configure_blade(): top = Assembly() configure_bladesurface(top, planform_nC=6) # load the planform file top.pf_splines.pfIn = read_blade_planform( os.path.join(PATH, 'data/DTU_10MW_RWT_blade_axis_prebend.dat')) top.blade_length = 86.366 top.span_ni = 5 b = top.blade_surface # distribute 200 points evenly along the airfoil sections b.chord_ni = 40 # load the airfoil shapes defining the blade for f in [ os.path.join(PATH, 'data/ffaw3241.dat'), os.path.join(PATH, 'data/ffaw3301.dat'), os.path.join(PATH, 'data/ffaw3360.dat'), os.path.join(PATH, 'data/ffaw3480.dat'), os.path.join(PATH, 'data/cylinder.dat') ]: b.base_airfoils.append(np.loadtxt(f)) b.blend_var = np.array([0.241, 0.301, 0.36, 0.48, 1.]) return top
def configure_blade(): top = Assembly() configure_bladesurface(top, os.path.join(PATH, 'data/DTU_10MW_RWT_blade_axis_prebend.dat'), planform_nC=6) # load the planform file top.blade_length = 86.366 top.span_ni = 5 b = top.blade_surface # distribute 200 points evenly along the airfoil sections b.chord_ni = 40 # load the airfoil shapes defining the blade for f in [os.path.join(PATH, 'data/ffaw3241.dat'), os.path.join(PATH, 'data/ffaw3301.dat'), os.path.join(PATH, 'data/ffaw3360.dat'), os.path.join(PATH, 'data/ffaw3480.dat') , os.path.join(PATH, 'data/cylinder.dat')]: b.base_airfoils.append(np.loadtxt(f)) b.blend_var = np.array([0.241, 0.301, 0.36, 0.48, 1.]) return top
def lofted_blade_shape_example(): top = Assembly() configure_bladesurface(top, planform_nC=6) # load the planform file top.pf_splines.pfIn = read_blade_planform('data/DTU_10MW_RWT_blade_axis_prebend.dat') top.blade_length = 86.366 top.span_ni = 50 print 'planform variables: ', top.pf_splines.pfOut.list_vars() b = top.blade_surface # distribute 200 points evenly along the airfoil sections b.chord_ni = 200 # load the airfoil shapes defining the blade for f in ['data/ffaw3241.dat', 'data/ffaw3301.dat', 'data/ffaw3360.dat', 'data/ffaw3480.dat' , 'data/tc72.dat' , 'data/cylinder.dat']: b.base_airfoils.append(np.loadtxt(f)) b.blend_var = np.array([0.241, 0.301, 0.36, 0.48, 0.72, 1.]) top.run() pf = top.pf_splines.pfOut plt.figure() plt.title('chord') plt.plot(pf.s, pf.chord) plt.savefig('chord.eps') plt.figure() plt.title('twist') plt.plot(pf.s, pf.rot_z) plt.savefig('twist.eps') plt.figure() plt.title('relative thickness') plt.plot(pf.s, pf.rthick) plt.savefig('rthick.eps') plt.figure() plt.title('pitch axis aft leading edge') plt.plot(pf.s, pf.p_le) plt.savefig('p_le.eps') plt.figure() plt.axis('equal') for i in range(b.span_ni): plt.plot(b.surfout.surface[:, i, 0], b.surfout.surface[:, i, 1]) plt.savefig('lofted_blade.eps') return top
def lofted_blade_shape_example(): top = Assembly() configure_bladesurface(top, 'data/DTU_10MW_RWT_blade_axis_prebend.dat', planform_nC=6) # load the planform file top.blade_length = 86.366 top.span_ni = 50 print 'planform variables: ', top.pf_splines.pfOut.list_vars() b = top.blade_surface # distribute 200 points evenly along the airfoil sections b.chord_ni = 200 # load the airfoil shapes defining the blade for f in ['data/ffaw3241.dat', 'data/ffaw3301.dat', 'data/ffaw3360.dat', 'data/ffaw3480.dat' , 'data/tc72.dat' , 'data/cylinder.dat']: b.base_airfoils.append(np.loadtxt(f)) b.blend_var = np.array([0.241, 0.301, 0.36, 0.48, 0.72, 1.]) top.run() pf = top.pf_splines.pfOut plt.figure() plt.title('chord') plt.plot(pf.s, pf.chord) plt.savefig('chord.eps') plt.figure() plt.title('twist') plt.plot(pf.s, pf.rot_z) plt.savefig('twist.eps') plt.figure() plt.title('relative thickness') plt.plot(pf.s, pf.rthick) plt.savefig('rthick.eps') plt.figure() plt.title('pitch axis aft leading edge') plt.plot(pf.s, pf.p_le) plt.savefig('p_le.eps') plt.figure() plt.axis('equal') for i in range(b.span_ni): plt.plot(b.surfout.surface[:, i, 0], b.surfout.surface[:, i, 1]) plt.savefig('lofted_blade.eps') plt.savefig('lofted_blade.png') return top
rotor_loads = VarTree(RotorLoadsVT(), iotype='out', desc='Rotor torque, power, and thrust') blade_loads = VarTree(DistributedLoadsExtVT(), iotype='out', desc='Spanwise load distributions') blade_disps = VarTree(BeamDisplacementsVT(), iotype='out', desc='Blade deflections and rotations') def execute(self): print 'run some analysis here' # --- 2 --- top = Assembly() # add splined planform description configure_planform(top, 'data/DTU_10MW_RWT_blade_axis_prebend.dat') top.blade_length = 86.366 top.span_ni = 30 # add aeroelastic solver top.add('ae', AEsolver()) top.driver.workflow.add('ae') # --- 3 --- # configure the turbine with standard sub-components configure_turbine(top.ae.wt) # define overall dimensions wt = top.ae.wt wt.turbine_name = 'DTU 10MW RWT' wt.doc = 'FUSED-Wind definition of the DTU 10MW RWT'
iotype='out', desc='Blade deflections and rotations') def execute(self): print 'run some analysis here' # --- 2 --- top = Assembly() # add splined planform description configure_planform(top, 'data/DTU_10MW_RWT_blade_axis_prebend.dat') top.blade_length = 86.366 top.span_ni = 30 # add aeroelastic solver top.add('ae', AEsolver()) top.driver.workflow.add('ae') # --- 3 --- # configure the turbine with standard sub-components configure_turbine(top.ae.wt) # define overall dimensions wt = top.ae.wt wt.turbine_name = 'DTU 10MW RWT' wt.doc = 'FUSED-Wind definition of the DTU 10MW RWT'