Пример #1
0
def test_bladestiff2d_lb():
    print('Testing linear buckling with BladeStiff2D')

    spb = StiffPanelBay()
    spb.a = 2.
    spb.b = 1.
    spb.stack = [0, +45, -45, 90, -45, +45]
    spb.plyt = 1e-3 * 0.125
    spb.laminaprop = (142.5e9, 8.7e9, 0.28, 5.1e9, 5.1e9, 5.1e9)
    spb.model = 'plate_clt_donnell_bardell'
    spb.m = 17
    spb.n = 16

    Nxx = -50.
    spb.add_panel(y1=0, y2=spb.b / 2., plyt=spb.plyt, Nxx=Nxx)
    spb.add_panel(y1=spb.b / 2., y2=spb.b, plyt=spb.plyt, Nxx=Nxx)

    bb = spb.b / 5.
    bf = bb
    stiff = spb.add_bladestiff2d(ys=spb.b / 2.,
                                 bf=bf,
                                 bb=bb,
                                 fstack=[0, 90, 90, 0] * 8,
                                 fplyt=spb.plyt * 1.,
                                 flaminaprop=spb.laminaprop,
                                 bstack=[0, 90, 90, 0] * 4,
                                 bplyt=spb.plyt * 1.,
                                 blaminaprop=spb.laminaprop,
                                 mf=17,
                                 nf=16)

    spb.calc_k0()
    spb.calc_kG0()
    eigvals, eigvecs = lb(spb.k0, spb.kG0, silent=True)

    spb.plot_skin(eigvecs[:, 0],
                  filename='tmp_test_bladestiff2d_lb_skin.png',
                  colorbar=True)
    spb.plot_stiffener(eigvecs[:, 0],
                       si=0,
                       region='flange',
                       filename='tmp_test_bladestiff2d_lb_stiff_flange.png',
                       colorbar=True)

    calc = eigvals[0] * Nxx

    spb.plot_skin(eigvecs[:, 0],
                  filename='tmp_test_bladestiff2d_lb_skin.png',
                  colorbar=True,
                  vec='w',
                  clean=False)
    assert np.isclose(calc, -759.05689868085778, atol=0.0001, rtol=0.001)
Пример #2
0
def test_lb_Stiffener2D():
    print('Testing linear buckling for StiffPanelBay with a 2D Stiffener')
    spb = StiffPanelBay()
    spb.a = 1.
    spb.b = 0.5
    spb.stack = [0, 90, 90, 0]
    spb.plyt = 1e-3*0.125
    spb.laminaprop = (142.5e9, 8.7e9, 0.28, 5.1e9, 5.1e9, 5.1e9)
    spb.model = 'plate_clt_donnell_bardell'
    spb.mu = 1.3e3
    spb.m = 15
    spb.n = 16

    spb.add_panel(y1=0, y2=spb.b/2., plyt=spb.plyt, Nxx=-1.)
    spb.add_panel(y1=spb.b/2., y2=spb.b, plyt=spb.plyt, Nxx_cte=1000.)

    spb.add_bladestiff2d(ys=spb.b/2., m1=14, n1=11, bf=0.05,
                        fstack=[0, 90, 90, 0],
                        fplyt=spb.plyt, flaminaprop=spb.laminaprop)

    k0 = spb.calc_k0(silent=True)
    kG = spb.calc_kG0(silent=True)
    eigvals, eigvecs = lb(k0, kG, silent=True)

    assert np.isclose(eigvals[0].real, 301.0825234, atol=0.1, rtol=0)
Пример #3
0
def test_lb_Stiffener2D():
    print('Testing linear buckling for StiffPanelBay with a 2D Stiffener')
    spb = StiffPanelBay()
    spb.a = 1.
    spb.b = 0.5
    spb.stack = [0, 90, 90, 0]
    spb.plyt = 1e-3 * 0.125
    spb.laminaprop = (142.5e9, 8.7e9, 0.28, 5.1e9, 5.1e9, 5.1e9)
    spb.model = 'plate_clt_donnell_bardell'
    spb.mu = 1.3e3
    spb.m = 15
    spb.n = 16

    spb.add_panel(y1=0, y2=spb.b / 2., plyt=spb.plyt, Nxx=-1.)
    spb.add_panel(y1=spb.b / 2., y2=spb.b, plyt=spb.plyt, Nxx_cte=1000.)

    spb.add_bladestiff2d(ys=spb.b / 2.,
                         m1=14,
                         n1=11,
                         bf=0.05,
                         fstack=[0, 90, 90, 0],
                         fplyt=spb.plyt,
                         flaminaprop=spb.laminaprop)

    k0 = spb.calc_k0(silent=True)
    kG = spb.calc_kG0(silent=True)
    eigvals, eigvecs = lb(k0, kG, silent=True)

    assert np.isclose(eigvals[0].real, 301.0825234, atol=0.1, rtol=0)
Пример #4
0
def test_tstiff2d_lb():
    #NOTE reference values taken from
    # compmech.panel.assembly.tstiff2d_1stiff_compression
    a_b_list = [0.5, 2., 10.]
    ref_values = [-152.607275551, -80.15391295315146, -79.39137361313862]
    for a_b, ref_value in zip(a_b_list, ref_values):
        print('Testing linear buckling')
        spb = StiffPanelBay()
        spb.b = 1.
        spb.a = spb.b * a_b
        spb.stack = [0, +45, -45, 90, -45, +45]
        spb.plyt = 1e-3 * 0.125
        spb.laminaprop = (142.5e9, 8.7e9, 0.28, 5.1e9, 5.1e9, 5.1e9)
        spb.model = 'plate_clt_donnell_bardell'
        spb.m = 12
        spb.n = 13

        Nxx = -10.
        spb.add_panel(y1=0, y2=spb.b / 2., plyt=spb.plyt, Nxx=Nxx)
        spb.add_panel(y1=spb.b / 2., y2=spb.b, plyt=spb.plyt, Nxx=Nxx)

        bb = spb.b / 5.
        if False:
            stiff = spb.add_tstiff2d(ys=spb.b / 2.,
                                     bf=bb / 2,
                                     bb=bb,
                                     fstack=[0, 90, 90, 0] * 8,
                                     fplyt=spb.plyt * 1.,
                                     flaminaprop=spb.laminaprop,
                                     bstack=[0, 90, 90, 0] * 4,
                                     bplyt=spb.plyt * 1.,
                                     blaminaprop=spb.laminaprop,
                                     mb=13,
                                     nb=12,
                                     mf=13,
                                     nf=12,
                                     Nxxf=Nxx)

        spb.calc_k0()
        spb.calc_kG0()
        eigvals, eigvecs = lb(spb.k0, spb.kG0, silent=True)

        calc = eigvals[0] * Nxx

        assert np.isclose(calc, ref_value, rtol=0.05)
Пример #5
0
def test_tstiff2d_lb():
    #NOTE reference values taken from
    # compmech.panel.assembly.tstiff2d_1stiff_compression
    a_b_list = [0.5, 2., 10.]
    ref_values = [-152.607275551, -80.15391295315146, -79.39137361313862]
    for a_b, ref_value in zip(a_b_list, ref_values):
        print('Testing linear buckling')
        spb = StiffPanelBay()
        spb.b = 1.
        spb.a = spb.b * a_b
        spb.stack = [0, +45, -45, 90, -45, +45]
        spb.plyt = 1e-3*0.125
        spb.laminaprop = (142.5e9, 8.7e9, 0.28, 5.1e9, 5.1e9, 5.1e9)
        spb.model = 'plate_clt_donnell_bardell'
        spb.m = 12
        spb.n = 13

        Nxx = -10.
        spb.add_panel(y1=0, y2=spb.b/2., plyt=spb.plyt, Nxx=Nxx)
        spb.add_panel(y1=spb.b/2., y2=spb.b, plyt=spb.plyt, Nxx=Nxx)

        bb = spb.b/5.
        if False:
            stiff = spb.add_tstiff2d(ys=spb.b/2., bf=bb/2, bb=bb,
                             fstack=[0, 90, 90, 0]*8,
                             fplyt=spb.plyt*1., flaminaprop=spb.laminaprop,
                             bstack=[0, 90, 90, 0]*4,
                             bplyt=spb.plyt*1., blaminaprop=spb.laminaprop,
                             mb=13, nb=12, mf=13, nf=12, Nxxf=Nxx)

        spb.calc_k0()
        spb.calc_kG0()
        eigvals, eigvecs = lb(spb.k0, spb.kG0, silent=True)

        calc = eigvals[0]*Nxx

        assert np.isclose(calc, ref_value, rtol=0.05)