def execute(self): c12axis = self.calculate_c12axis() if self.interp_from_htc: cni = self.c12axis_init.shape[0] if self.c12axis_init[-1, 2] > 1.: self.c12axis_init /= self.blade_length # interpolate blade_ae distribution onto c12 distribution self.blade_ae.c12axis = np.zeros((cni, 4)) for i in range(4): tck = pchip(c12axis[:, 2], c12axis[:, i]) self.blade_ae.c12axis[:, i] = tck(self.c12axis_init[:, 2]) else: ds_root = 1. / self.blade_ni_span ds_tip = 1. / self.blade_ni_span / 3. dist = np.array([[0., ds_root, 1], [1., ds_tip, self.blade_ni_span]]) x = distfunc(dist) self.blade_ae.c12axis = np.zeros((x.shape[0], 4)) for i in range(4): tck = pchip(c12axis[:, 2], c12axis[:, i]) self.blade_ae.c12axis[:, i] = tck(x) # scale main axis according to radius self.blade_ae.c12axis[:, :3] *= self.blade_length self.blade_ae.radius = self.blade_length + self.hub_radius self.blade_ae.s = self.bladegeom.smax * self.bladegeom.s * self.blade_length self.blade_ae.rthick = self.bladegeom.rthick * 100. self.blade_ae.chord = self.bladegeom.chord * self.blade_length self.blade_ae.aeset = np.ones(len(self.blade_ae.s))
def execute(self): c12axis = self.calculate_c12axis() if self.interp_from_htc: cni = self.c12axis_init.shape[0] if self.c12axis_init[-1, 2] > 1.: self.c12axis_init /= self.blade_length # interpolate blade_ae distribution onto c12 distribution self.blade_ae.c12axis = np.zeros((cni, 4)) for i in range(4): tck = pchip(c12axis[:, 2], c12axis[:,i]) self.blade_ae.c12axis[:, i] = tck(self.c12axis_init[:, 2]) else: ds_root = 1. / self.blade_ni_span ds_tip = 1. / self.blade_ni_span / 3. dist = np.array([[0., ds_root, 1], [1., ds_tip, self.blade_ni_span]]) x = distfunc(dist) self.blade_ae.c12axis = np.zeros((x.shape[0], 4)) for i in range(4): tck = pchip(c12axis[:, 2], c12axis[:,i]) self.blade_ae.c12axis[:, i] = tck(x) # scale main axis according to radius self.blade_ae.c12axis[:,:3] *= self.blade_length self.blade_ae.radius = self.blade_length + self.hub_radius self.blade_ae.s = self.bladegeom.smax * self.bladegeom.s * self.blade_length self.blade_ae.rthick = self.bladegeom.rthick * 100. self.blade_ae.chord = self.bladegeom.chord * self.blade_length self.blade_ae.aeset = np.ones(len(self.blade_ae.s))
def execute(self): if self.x_dist.shape[0] > 0: self.x = self.x_dist else: self.x = distfunc([[0.0, -1, 1], [1.0, 0.2 * 1.0 / self.span_ni, self.span_ni]]) print self.x
def redistribute(self, dist=None, s=None): if dist is not None: self.s = distfunc(dist) else: self.s = s self.ni = self.s.shape[0] points = np.zeros((self.ni, self.points.shape[1])) for i in range(points.shape[1]): points[:, i] = self._splines[i](self.s) self.initialize(points)
def redistribute(self, ni, even=False, dist=None, dLE=False, dTE=-1.): """ redistribute the points on the airfoil using fusedwind.lib.distfunc Parameters ---------- ni : int total number of points on airfoil even : bool flag for getting an even distribution of points dist : list optional list of control points with the form [[s0, ds0, n0], [s1, ds1, n1], ... [s<n>, ds<n>, n<n>]] where\n s<n> is the normalized curve fraction at each control point,\n ds<n> is the normalized cell size at each control point,\n n<n> is the cell count at each control point. dLE : bool optional flag for automatically calculating a suitable leading edge cell size based on the local curvature dTE : float optional trailing edge cell size. If set to -1 the cell size will increase from the LE to TE according to the tanh distribution function used in distfunc """ if even: dist = [[0, 1. / np.float(ni - 1), 1], [self.sLE, 1. / np.float(ni - 1), int(ni * self.sLE)], [1, 1. / np.float(ni - 1), ni]] elif dLE: dist = [[0., dTE, 1], [self.sLE, self.leading_edge_dist(ni), ni / 2], [1., dTE, ni]] s = distfunc(dist) points = np.zeros((ni, 2)) for i in range(2): points[:, i] = self.spline[i](s) return AirfoilShape(points)
def redistribute(self, ni, even=False, dist=None, dLE=False, dTE=-1.): """ redistribute the points on the airfoil using fusedwind.lib.distfunc Parameters ---------- ni : int total number of points on airfoil even : bool flag for getting an even distribution of points dist : list optional list of control points with the form [[s0, ds0, n0], [s1, ds1, n1], ... [s<n>, ds<n>, n<n>]] where\n s<n> is the normalized curve fraction at each control point,\n ds<n> is the normalized cell size at each control point,\n n<n> is the cell count at each control point. dLE : bool optional flag for automatically calculating a suitable leading edge cell size based on the local curvature dTE : float optional trailing edge cell size. If set to -1 the cell size will increase from the LE to TE according to the tanh distribution function used in distfunc """ if even: dist = [[0, 1./np.float(ni-1), 1], [self.sLE, 1./np.float(ni-1), int(ni*self.sLE)], [1, 1./np.float(ni-1), ni]] elif dLE: dist = [[0., dTE, 1], [self.sLE, self.leading_edge_dist(ni), ni / 2], [1., dTE, ni]] s = distfunc(dist) points = np.zeros((ni, 2)) for i in range(2): points[:, i] = self.spline[i](s) return AirfoilShape(points)
def execute(self): self.x = distfunc([[0., -1, 1], [1., 0.2 * 1. / self.span_ni, self.span_ni]])
def compute_x(self): # simple distfunc for now self.x_dist = distfunc([[0., -1, 1], [1., 0.2 * 1. / self.span_ni, self.span_ni]])
def execute(self): self.x = distfunc([[0., -1, 1], [1., 0.2 * 1./self.span_ni, self.span_ni]])