Ejemplo n.º 1
0
    def test_airfoilshape(self):

        af = AirfoilShape(afs[0])
        aff = af.redistribute(20, even=True)

        self.assertEqual(
            np.testing.assert_array_almost_equal(af.LE, np.array([-1.76645007e-05, -2.90461132e-04]), decimal=6), None
        )
        self.assertAlmostEqual(af.sLE, 0.49898457668804924, places=6)
        self.assertEqual(np.testing.assert_array_almost_equal(aff.points, aff_data, decimal=6), None)
Ejemplo n.º 2
0
    def test_airfoilshape(self):

        af = AirfoilShape(afs[0])
        aff = af.redistribute(20, even=True)

        self.assertEqual(
            np.testing.assert_array_almost_equal(
                af.LE, np.array([-1.76645007e-05,
                                 -2.90461132e-04]), decimal=6), None)
        self.assertAlmostEqual(af.sLE, 0.49898457668804924, places=6)
        self.assertEqual(
            np.testing.assert_array_almost_equal(aff.points,
                                                 aff_data,
                                                 decimal=6), None)
Ejemplo n.º 3
0
class CrossSectionStructureVT(VariableTree):
    """
    Container for a cross-sectional definition of the
    internal structure of a blade.
    """
    s = Float()
    regions = List(desc='List of names of regions in the cross section')
    webs = List(desc='List of names of regions in the cross section')
    materials = Dict(desc='Dictionary of MaterialProps vartrees')
    airfoil = VarTree(AirfoilShape(), desc='Cross sectional shape')
    DPs = List(desc='Region division points (nregion + 1)')

    def add_region(self, name):

        self.add(name, VarTree(Region()))
        self.regions.append(name)
        return getattr(self, name)

    def add_web(self, name):

        self.add(name, VarTree(Region()))
        self.webs.append(name)
        return getattr(self, name)

    def add_material(self, name, material):

        if name in self.materials.keys():
            return
        else:
            self.materials[name] = material

        return self.materials[name]
Ejemplo n.º 4
0
    def redistribute(self, points, pos_z):

        if self.redistribute_flag == False:
            return points

        airfoil = AirfoilShape(points=points)
        try:
            dist_LE = np.interp(pos_z, self.dist_LE[:, 0], self.dist_LE[:, 1])
        except:
            dist_LE = None
        # pass airfoil to user defined routine to allow for additional configuration
        airfoil = self.set_airfoil(airfoil, pos_z)
        if self.x_chordwise.shape[0] > 0:
            airfoil = airfoil.redistribute_chordwise(self.x_chordwise)
        else:
            airfoil = airfoil.redistribute(ni=self.chord_ni, dLE=dist_LE)

        return airfoil.points
Ejemplo n.º 5
0
def redistribute_airfoil_example():

    af = AirfoilShape(np.loadtxt('data/ffaw3301.dat'))

    print 'number of points, ni: ', af.ni
    print 'Airfoil leading edge (x, y): ', af.LE
    print 'Airfoil leading edge curve fraction (s): ', af.sLE

    plt.figure()
    plt.plot(af.points[:, 0], af.points[:, 1], '-x', label='original')

    # redistribute 200 points along the surface
    # and let the LE cell size be determined based on curvature
    aff = af.redistribute(200, dLE=True)

    plt.plot(aff.points[:, 0], aff.points[:, 1], '-<', label='redistributed')

    plt.plot(aff.LE[0], aff.LE[1], 'o', label='LE')

    plt.legend(loc='best')
    plt.axis('equal')
    plt.show()
Ejemplo n.º 6
0
def redistribute_airfoil_example():

    af = AirfoilShape(np.loadtxt('data/ffaw3301.dat'))

    print 'number of points, ni: ', af.ni
    print 'Airfoil leading edge (x, y): ', af.LE
    print 'Airfoil leading edge curve fraction (s): ', af.sLE

    plt.figure()
    plt.plot(af.points[:, 0], af.points[:, 1], '-x', label='original')

    # redistribute 200 points along the surface
    # and let the LE cell size be determined based on curvature
    aff = af.redistribute(200, dLE=True)

    plt.plot(aff.points[:, 0], aff.points[:, 1], '-<', label='redistributed')

    plt.plot(aff.LE[0], aff.LE[1], 'o', label='LE')

    plt.legend(loc='best')
    plt.axis('equal')
    plt.show()