TU Delft, Aerospace Engineering, Stability and Analysis of Structures II tudaesasII

TU Delft, Aerospace Engineering, Stability and Analysis of Structures II

TU Delft (TUD) Aerospace Engineering (AE) Aerospace Structures and Computational Mechanics (ASCM) Stability and Analysis of Structures II (SASII) AE4-ASM-511

tudaesasII is a Python module to assist the students who are willing to use Python

Author: Saullo G. P. Castro

GitHub repository

The public repository can be accessed at:

Implemented finite elements

class tudaesasII.beam2d.Beam2D

Euler-Bernoulli beam element

Formulated using Euler-Bernoulli beam element with two interpolation polynomials available:

  • Hermitian cubic

  • Legendre

Attributes:
ledouble

Element length.

Edouble

Elastic modulus.

rhodouble

Material density.

A1, A2double

Cross section area at nodes 1 and 2.

Izz1, Izz2double

Second moment of area (moment of inertia) at nodes 1 and 2.

n1, n2int

Node identification number of the two beam nodes.

thetaraddouble

Beam orientation with respect to the horizontal direction.

interpolationstr

Either 'hermitian_cubic' or 'legendre'.

tudaesasII.beam2d.calc_fint(beams, u0, nid_pos, ncoords)

Calculate the internal force vector

tudaesasII.beam2d.exx(beam, y, xi, u1, v1, beta1, u2, v2, beta2)

Calculate the axial strain exx for a Beam2D element

Strains are calculated assuming a constant cross-section rotation as:

exx = exx0 + y*kxx

|exx0| = |BL||u1, v1, beta1, u2, v2, beta2|^T
|kxx |
Parameters:
beamBeam2D

The Beam2D finite element

yfloat

Distance from the neutral axis

xifloat

Natural coordinate along beam axis

u1, v1, beta1, u2, v2, beta2float or array-like

Nodal displacements and rotations in global coordinates

Returns:
exxfloat

The calculated axial strain

tudaesasII.beam2d.update_K(beam, nid_pos, ncoords, K)

Update global K with beam element

tudaesasII.beam2d.update_KG(beam, Ppreload_u0, nid_pos, ncoords, KG)

Update geometric stiffness matrix KG with beam element

tudaesasII.beam2d.update_KNL(beam, u0, nid_pos, ncoords, KNL)

Update the nonlinear part of global constitutive stiffness KNL with beam element

tudaesasII.beam2d.update_M(beam, nid_pos, M, lumped=False)

Update a global M with a beam element

tudaesasII.beam2d.uv(beam, u1, v1, beta1, u2, v2, beta2, n=100)

Calculate u and v for a Beam2D

Parameters:
beamBeam2D

The Beam2D finite element

u1, v1, beta1, u2, v2, beta2float or array-like

Nodal displacements and rotations

nint

Number of points where the axial strain should be calculated within the beam element

Returns:
uv(2, :, n) array-like

Displacements u and uv at all n points. The second array dimension depends on the dimension of the nodal displacements and rotations

class tudaesasII.quad4r.Quad4R

Reissner-Mindlin plate element with reduced integration

Formulated based on the first-order shear deformation theory for plates

Reduced integration is achieved by having only 1 integration point at the center, while integrating the stiffness matrix. This removes shear locking.

An artificial hour-glass stiffness is used, according to Brockman 1987:

  • the hourglass control in the in-plane direction was increased by 10 times with respect to what would be the equivalent from Brockman 1987

  • the hourglass control in the w direction by 5 times with respect to what would be the equivalent from Brockman 1987

https://onlinelibrary.wiley.com/doi/pdf/10.1002/nme.1620241208

Attributes:
hdouble

Plate thickness.

rhodouble

Material density.

ABDEdouble

The plate stiffness matrix with shape (8, 8). Easily obtained form the Laminate object of the composites module.

n1, n2, n3, n4int

Node identification number.

scf13, scf23double

Shear correction factors in the transverse planes XZ and YZ, respectively.

tudaesasII.quad4r.calc_fint(quads, u0, nid_pos, ncoords)

Calculate the internal force vector

tudaesasII.quad4r.calc_stress(quad, u0, nid_pos, ncoords, xi=0.0, eta=0.0)

Calculate the stresses within a quad element

Returns:
Nxx, Nyy, Nxy, Mxx, Myy, Mxy, Qx, Qyfloat

A tuple containing the stresses in this given order.

tudaesasII.quad4r.update_K(quad, nid_pos, ncoords, K)

Update global K with Ke from a quad element

tudaesasII.quad4r.update_KA(quad, nid_pos, ncoords, KA)

Update global KA with KAe from a quad element

tudaesasII.quad4r.update_KG(quad, u0, nid_pos, ncoords, KG)

Update geometric stiffness matrix KG with quad element

tudaesasII.quad4r.update_KNL(quad, u0, nid_pos, ncoords, KNL)

Update the nonlinear part of global constitutive stiffness KNL with quad element

tudaesasII.quad4r.update_M(quad, nid_pos, ncoords, M, lumped=False)

Update global M with Me from a quad element

tudaesasII.tria3planestrain.update_K_M(tria, nid_pos, ncoords, K, M, lumped=False)

Update a global stiffness matrix K and mass matrix M

License

Copyright (c) 2019-2024, Saullo G. P. Castro (S.G.P.Castro@tudelft.nl), Jurij Sodja (J.Sodja@tudelft.nl)
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Indices and tables