A Finite Element Analysis Environment for Solid Mechanics
- 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
Platform Compatibility
Windows macOS LinuxCategories
Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
felab
felab/functions/algebra
felab/functions/assembly
felab/functions/elements
felab/functions/mechanics
felab/functions/meshing
felab/functions/misc
felab/functions/postprocessing
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 |