Unstiffened Cylinder

compmech.panel.assembly.cylinder.create_cylinder_assy(height, r, stack, plyt, laminaprop, npanels, m=8, n=8)[source]

Cylinder Assembly

The panel assembly looks like:

B                             A
 _______ _______ _______ _______
|       |       |       |       |
|       |       |       |       |
|       |       |       |       |
|  p04  |  p03  |  p02  |  p01  |
|       |       |       |       |    /\  x
|       |       |       |       |    |
|_______|_______|_______|_______|    |
                                     |
                           y  <-------

where edges A and B are connected to produce the cyclic effect.

Parameters
heightfloat

Cylinder height (along x).

rfloat

Cylinder radius.

stacklist or tuple

Stacking sequence for the cylinder.

plytfloat

Ply thickness.

laminaproplist or tuple

Orthotropic lamina properties: E_1, E_2, \nu_{12}, G_{12}, G_{13}, G_{23}.

npanelsint

The number of panels the cylinder perimiter.

m, nint, optional

Number of approximation terms for each panel.

Returns
assy, connstuple

A tuple containing the assembly and the default connectivity list of dictionaries.

compmech.panel.assembly.cylinder.cylinder_compression_lb_Nxx_cte(height, r, stack, plyt, laminaprop, npanels, Nxxs, m=8, n=8, num_eigvalues=20)[source]

Linear buckling analysis with a constant Nxx for each panel

See create_cylinder_assy() for most parameters.

Parameters
Nxxslist

A Nxx for each panel.

num_eigvaluesint

Number of eigenvalues to be extracted.

Returns
assy, eigvals, eigvecstuple

Assembly, eigenvalues and eigenvectors.

Examples

The following example is one of the test cases:

def test_cylinder_compression_lb_Nxx_cte():
    print('Testing assembly function: cylinder_compression_lb_Nxx_cte')
    height = 0.500
    r = 0.250
    npanels = 5
    Nxxs = [-100.]*npanels
    assy, eigvals, eigvecs = cylinder_compression_lb_Nxx_cte(
        height=height,
        r=r,
        plyt=0.125e-3,
        stack=[0, 45, -45, 90, -45, 45],
        laminaprop=(142.5e9, 8.7e9, 0.28, 5.1e9, 5.1e9, 5.1e9),
        npanels=npanels,
        Nxxs=Nxxs,
        m=8, n=12)

    assy.plot(eigvecs[:, 0], 'skin', filename='tmp_cylinder_compression_lb_Nxx_cte.png')

    assert np.isclose(Nxxs[0]*eigvals[0], -49906.793576, atol=0.01, rtol=0.001)
compmech.panel.assembly.cylinder.cylinder_compression_lb_Nxx_from_static(height, r, stack, plyt, laminaprop, npanels, Nxxs, m=8, n=8, num_eigvalues=20)[source]

Linear buckling analysis with a Nxx calculated using static analysis

See create_cylinder_assy() for most parameters.

Parameters
Nxxslist

A Nxx for each panel.

num_eigvaluesint

Number of eigenvalues to be extracted.

Returns
assy, c, eigvals, eigvecstuple

Assembly, static results, eigenvalues and eigenvectors.

Examples

The following example is one of the test cases:

def test_cylinder_compression_lb_Nxx_from_static():
    print('Testing assembly function: cylinder_compression_lb_Nxx_from_static')
    height = 0.500
    r = 0.250
    npanels = 5
    Nxxs = [-100.]*npanels
    assy, c, eigvals, eigvecs = cylinder_compression_lb_Nxx_from_static(
        height=height,
        r=r,
        plyt=0.125e-3,
        stack=[0, 45, -45, 90, -45, 45],
        laminaprop=(142.5e9, 8.7e9, 0.28, 5.1e9, 5.1e9, 5.1e9),
        npanels=npanels,
        Nxxs=Nxxs,
        m=8, n=12)

    assy.plot(c, 'skin', filename='tmp_cylinder_compression_lb_Nxx_from_static_c.png')
    assy.plot(eigvecs[:, 0], 'skin', filename='tmp_cylinder_compression_lb_Nxx_from_static_eigvec.png')

    assert np.isclose(Nxxs[0]*eigvals[0], -47735.882729, atol=0.01, rtol=0.001)