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 theLaminate
object of thecomposites
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.