def wt_init(self, wt, wt_type): self.name = wt['name'] self.turbine_type = wt['turbine_type'] self.position = wt['position'] self.type = wt_type['name'] self.H = wt_type['hub_height'] self.R = wt_type['rotor_diameter'] / 2.0 if 'c_t_idle' in wt: self.CT_idle = wt_type['c_t_idle'] else: self.CT_idle = 0.056 self.power_factor = 1000.0 # <- Juan Pablo is using W as a basis to define power self.pc = np.array(wt_type['power_curve']) self.ctc = np.array(wt_type['c_t_curve']) self.u_cutin = wt_type['cut_in_wind_speed'] self.u_cutout = wt_type['cut_out_wind_speed'] self.P_rated = wt_type['rated_power'] * self.power_factor self.PCI = interpolator(self.pc[:,0], self.pc[:,1]*self.power_factor) self.CTCI = interpolator(self.ctc[:,0], self.ctc[:,1]) index = np.nonzero(self.pc[:,1]*self.power_factor==self.P_rated)[0][0] self.PCI_u = interpolator(self.pc[:index+1,1] * self.power_factor, self.pc[:index+1,0]) self.u_rated = wt_type['rated_wind_speed'] self.refCurvesArray = np.vstack([self.pc[:,0].T, self.pc[:,1].T*self.power_factor, self.CTCI(self.pc[:,0].T)]).T
def wt_init(self, wt, wt_type): self.name = wt['name'] self.turbine_type = wt['turbine_type'] self.position = wt['position'] self.type = wt_type['name'] self.H = wt_type['hub_height'] self.R = wt_type['rotor_diameter'] / 2.0 if 'c_t_idle' in wt: self.CT_idle = wt_type['c_t_idle'] else: self.CT_idle = 0.056 self.power_factor = 1000.0 # <- Juan Pablo is using W as a basis to define power self.pc = np.array(wt_type['power_curve']) self.ctc = np.array(wt_type['c_t_curve']) self.u_cutin = wt_type['cut_in_wind_speed'] self.u_cutout = wt_type['cut_out_wind_speed'] self.P_rated = wt_type['rated_power'] * self.power_factor self.PCI = interpolator(self.pc[:, 0], self.pc[:, 1] * self.power_factor) self.CTCI = interpolator(self.ctc[:, 0], self.ctc[:, 1]) index = np.nonzero(self.pc[:, 1] * self.power_factor == self.P_rated)[0][0] self.PCI_u = interpolator(self.pc[:index + 1, 1] * self.power_factor, self.pc[:index + 1, 0]) self.u_rated = wt_type['rated_wind_speed'] self.refCurvesArray = np.vstack([ self.pc[:, 0].T, self.pc[:, 1].T * self.power_factor, self.CTCI(self.pc[:, 0].T) ]).T
def wt_init(self): self.ref_u = self.refCurvesArray[:, 0] self.ref_P = self.refCurvesArray[:, 1] self.ref_CT = self.refCurvesArray[:, 2] self.u_cutin = self.ref_u[0] self.u_cutout = self.ref_u[-1] self.P_rated = np.max(self.ref_P) self.PCI = interpolator(self.ref_u, self.ref_P) self.CTCI = interpolator(self.ref_u, self.ref_CT) index = np.nonzero(self.ref_P == self.P_rated)[0][0] self.PCI_u = interpolator(self.ref_P[:index + 1], self.ref_u[:index + 1]) self.u_rated = np.float(self.PCI_u(self.P_rated))
def wt_init(self): self.ref_u = self.refCurvesArray[:,0] self.ref_P = self.refCurvesArray[:,1] self.ref_CT = self.refCurvesArray[:,2] self.u_cutin = self.ref_u[0] self.u_cutout = self.ref_u[-1] self.P_rated = np.max(self.ref_P) self.PCI = interpolator(self.ref_u, self.ref_P) self.CTCI = interpolator(self.ref_u, self.ref_CT) index = np.nonzero(self.ref_P==self.P_rated)[0][0] self.PCI_u = interpolator( self.ref_P[:index+1],self.ref_u[:index+1]) self.u_rated = np.float(self.PCI_u(self.P_rated))
def interp(φ, Γ, ib, il): φn = np.linspace(0, 2 * π, 200) vals = Γ[:, ib, il, :] Γip = np.zeros([φn.size, 3]) for i in range(3): spl = interpolator(φ, vals[:, i]) spl.set_smoothing_factor(0.5) Γip[:, i] = spl(φn) return φn, Γip
def interpolate(self, table): sigmas = np.loadtxt(table, dtype=np.double, usecols=(0,)) inds = np.loadtxt(table, dtype=np.double, usecols=np.arange(1,51, 2)).T corrs = np.loadtxt(table, dtype=np.double,usecols=np.arange(2,51, 2)).T self.fs = [] self.indlims = [] for i, (idx, corr) in enumerate(zip(inds, corrs)): f = interpolator(np.column_stack((sigmas, idx)), corr) self.fs.append(f) self.indlims.append([idx.min(), idx.max()]) self.siglims = [sigmas.min(), sigmas.max()] return
def interpolate(self, table): sigmas = np.loadtxt(table, dtype=np.double, usecols=(0, )) inds = np.loadtxt(table, dtype=np.double, usecols=np.arange(1, 51, 2)).T corrs = np.loadtxt(table, dtype=np.double, usecols=np.arange(2, 51, 2)).T self.fs = [] self.indlims = [] for i, (idx, corr) in enumerate(zip(inds, corrs)): f = interpolator(np.column_stack((sigmas, idx)), corr) self.fs.append(f) self.indlims.append([idx.min(), idx.max()]) self.siglims = [sigmas.min(), sigmas.max()] return
def interpolate(self, model_table): modeldata = np.loadtxt(model_table, dtype=np.double) self.model = interpolator(modeldata[:, :3], modeldata[:, 3:])