Esempio n. 1
0
def blade_fe(blade, root_length=0.0, spin=0.0):
    # positive blade twist is geometrically a negative x-rotation
    twist = -np.array(blade['twist'])
    x = blade['radii']
    qn = interleave(root_length + np.array(x), 6)
    N = BeamFE.centrifugal_force_distribution(qn, blade['density'])
    fe = BeamFE(x, blade['density'], blade['EA'],
                blade['EIyy'], blade['EIzz'], twist=twist,
                axial_force=N * spin**2)
    fe.set_boundary_conditions('C', 'F')
    return fe
Esempio n. 2
0
def blade_fe(blade, root_length=0.0, spin=0.0):
    # positive blade twist is geometrically a negative x-rotation
    twist = -np.array(blade['twist'])
    x = blade['radii']
    qn = interleave(root_length + np.array(x), 6)
    N = BeamFE.centrifugal_force_distribution(qn, blade['density'])
    fe = BeamFE(x,
                blade['density'],
                blade['EA'],
                blade['EIyy'],
                blade['EIzz'],
                twist=twist,
                axial_force=N * spin**2)
    fe.set_boundary_conditions('C', 'F')
    return fe
    def test_static_deflection(self):
        x = array([0.0, 4.0, 10.0])
        EI = 144.0
        # Using the z axis as the transverse direction gives the same
        # sign convention as Reddy uses in 2D, namely that rotations
        # are positive clockwise.
        fe = BeamFE(x, density=10, EA=0, EIy=EI, EIz=0)
        fe.set_boundary_conditions('C', 'F')
        fe.set_dofs([False, False, True, False, True, False])
        element = ModalElementFromFE('elem', fe)

        # Distributed load, linearly interpolated
        load = np.zeros((3, 3))
        load[-1, 2] = -100        # Load in z direction at tip
        element.apply_distributed_loading(load)
        defl = -element.applied_stress / np.diag(element.K)

        # Check against directly calculating static deflection from FE
        Q = fe.distribute_load(interleave(load, 6))
        defl_fe, reactions_fe = fe.static_deflection(Q)
        assert_aae(dot(element.shapes, defl), defl_fe, decimal=2)
Esempio n. 4
0
    def test_static_deflection(self):
        x = array([0.0, 4.0, 10.0])
        EI = 144.0
        # Using the z axis as the transverse direction gives the same
        # sign convention as Reddy uses in 2D, namely that rotations
        # are positive clockwise.
        fe = BeamFE(x, density=10, EA=0, EIy=EI, EIz=0)
        fe.set_boundary_conditions('C', 'F')
        fe.set_dofs([False, False, True, False, True, False])
        element = ModalElementFromFE('elem', fe)

        # Distributed load, linearly interpolated
        load = np.zeros((3, 3))
        load[-1, 2] = -100  # Load in z direction at tip
        element.apply_distributed_loading(load)
        defl = -element.applied_stress / np.diag(element.K)

        # Check against directly calculating static deflection from FE
        Q = fe.distribute_load(interleave(load, 6))
        defl_fe, reactions_fe = fe.static_deflection(Q)
        assert_aae(dot(element.shapes, defl), defl_fe, decimal=2)