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)