A Finite Element Analysis Environment for Solid Mechanics

Apply the Finite Element Method to solve and visualize displacement fields over EDGE, QUAD, and HEX elements in 2- and 3-dimensions.
728 Downloads
Updated 1 Dec 2020

View License

- EDGE, QUAD, AND HEX ELEMENTS IN 2 AND 3 DIMENSIONS
- SEVERAL TOOLS FOR DEVELOPING FE MESHES, INCLUDING AUTOMATED RECTILINEAR MESH GENERATORS
- SUPPORTS SUBDOMAINS - COMBINE DIFFERENT ELEMENT TYPES WITH DIFFERENT PROPERTIES IN ONE MODEL
- SIMPLE, OBJECT-ORIENTED UI FOR APPLYING BOUNDARY CONDITIONS AND ASSEMBLING SYSTEMS OF EQUATIONS
- DISPLACED MESH PLOTS WITH COLOR CODED CONTOURS FOR FIELD VARIABLES

The Finite Element Method (FEM) is a means for solving ordinary or, more often, partial differential equations, which are continuous over a given domain. These equations are often difficult and, sometimes, even impossible to evaluate analytically, and the geometry of their domains may be of any arbitrary, complex shape. The FEM may closely approximate the solutions to these equations and, in certain cases, it may produce an exact solution.

In the FEM, solutions to differential equations are assumed to take on a certain form. Problem domains are discretized into an irregular (or regular) grid, known as a mesh, and the assumed solution functions (interpolations) are evaluated at special points on that grid space. As with any approximation to some real function, the more discrete points at which evaluations are made, the more precise the approximate solution.

The equation which governs the mechanics of elastoplastic solids when subject to a boundary-value problem consisting of external forces and various types of physical restraints is the divergence of stress: $\nabla \cdot \sigma = F_{ext} \in \Omega$, where $\Omega$ is a spatial domain of arbitrary shape. This program approximates solutions to this equation in its many familiar forms using the FEM. The system of equations, $\mathbf{K} Q = F$, that solves the displacement field, $Q$, was derived from the strong form of the stress divergence equations by using a mix of Galerkin's Method (virtual work) and the Principle of Minimum Potential Energy. Integration is handled numerically using Gauss quadrature rules.

This package contains some of the most common types of finite elements used for structural analysis in both two and three dimensions. It provides several tools for setting up problem inputs in a clean and general fashion. There is also a flexible plot generator that renders the deformed FE mesh with color-coded contours for user-specified field variables. Users are encouraged to run some of the files in the root directory, which demonstrate various capabilities and how this code solves problems in an object-oriented fashion. Note that all current tests have been verified against either an analytical solution or examples in the literature.

CURRENT ELEMENTS
---------------------------------
B2D2: 2-node cubic Euler-Bernoulli plane frame
C3D8: 8-node linear brick (fully-integrated)
CPS4: 4-node linear plane stress
R2D2: 2-node rigid link
RB2D2: 2-node rigid plane frame
RB3D2: 2-node rigid space frame
SB2D2: 2-node cubic Timoshenko plane frame
SB3D2: 2-node cubic Timoshenko space frame
T2D2: 2-node linear plane truss
T3D2: 2-node linear space truss

The methods used are currently limited to quasistatic, linear elastic, small strain analysis and are capable of handling only the most simple boundary-value problems. However, my hope is to eventually add more advanced capabilities. This program is not intended for professional purposes. I think it could be most useful as a learning apparatus, a way to conduct quick and cheap numerical experiments, or to verify hand-calculations. Engineering students may also find it helpful for studying or solving homework problems.

If you have questions or comments, please feel free to contact me. I am happy to assist with issues and take any and all feedback into consideration so that I may provide improvements. Please let me know if there are certain features that you would like to see implemented, and I'll prioritize those or work together with you on their development.

GALLERY
---------------------------------
Combine different element types to solve interesting boundary-value problems.
https://github.com/crswong888/scorpion/blob/master/miscellaneous/matlab/felab/felab/gallery/CPS4_pinned.png

Visualize bending of beams.
https://github.com/crswong888/scorpion/blob/master/miscellaneous/matlab/felab/felab/gallery/B2D2_test.png

Generate plots with various styles and render contours for different degrees-of-freedom.
https://github.com/crswong888/scorpion/blob/master/miscellaneous/matlab/felab/felab/gallery/CPS4_test.png

Create models of truss structures with complex member configurations and arbitrary support and loading conditions.
https://github.com/crswong888/scorpion/blob/master/miscellaneous/matlab/felab/felab/gallery/T2D2_test.png

Solve and learn more about classical structural analysis problems.
https://github.com/crswong888/scorpion/blob/master/miscellaneous/matlab/felab/felab/gallery/beam_frame.png

Cite As

Christopher Wong (2024). A Finite Element Analysis Environment for Solid Mechanics (https://www.mathworks.com/matlabcentral/fileexchange/82325-a-finite-element-analysis-environment-for-solid-mechanics), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2019b
Compatible with any release
Platform Compatibility
Windows macOS Linux
Categories
Find more on Statics and Dynamics in Help Center and MATLAB Answers
Tags Add Tags
2d 3d algebra application application devel... applied mathematics approximation axes axial basis functions beam beam theory bending bending deformation boundary conditions boundary-value pr... calculus cartesian coordin... cauchy stress ten... cell civil engineering colormap computational mec... constraints continuum convergence coordinate transform cubic polynomial customization data analysis deflection deformation demo derivatives development envir... differential equa... dirichlet discretization displacement display education elastic elasticity elasticity tensor elimination approach energy engineering estimation euler-bernoulli exact solutions fea fem field figure file reader files finite element an... finite element mesh finite element me... finite elements fixed supports flexure forces functions galerkin method gauss quadrature gaussian geometry gmres gradient graph graphics gravity hermite high-performance ... hookes law input parameters input parser integrals interpolation isotropic elasticity lagrange linear algebra linear map linear polynomial linsolve lu solve materials mathematics matlab matrix matrix math matrix structural... mechanical engine... mechanical modeling mechanics mesh mesh generator meshing method of weighte... modeling moment multi-point const... natural coordinates neumann newton numerical analysis numerical differe... numerical integra... numerical methods object-oriented p... ordinary differen... partial different... particular solutions patch penalty approach physical modeling physics pinned supports plot plotting poissons ratio polar coordinates postprocessing potential energy quadratic polynomial quadrature point reactions rendering research residuals rgb roller supports shape functions shear shear deformation simulation solid solid mechanics spring statically indete... statics steel stiffness stiffness matrix strain strength of mater... stress stress divergence structural analysis structural design structural engine... structures students systems of equations table tensor timoshenko torque torsion transforms truss variation of para... vector visualization weak form work youngs modulus

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
2.0

Developed a regression tests system, implemented a T3D2 (3D truss) element, reorganized folder structure, and edited some commentary.

1.3

Developed tools for handling continuous transverse forces on beams

1.2

removed "devel checks" from 2D plotter

1.1.3

fixed broken links to gallery images

1.1.2

Trying out images

1.1.1

Updating links to gallery image files

1.1

Adding "Gallery" images

1.0.0