FinEtoolsFlexStructures.jl
Finite Element tools in Julia: Analysis of flexible structures, beams and shells
Install / Use
/learn @PetrKryslUCSD/FinEtoolsFlexStructures.jlREADME
FinEtoolsFlexStructures.jl
FinEtools used for
- Simulations of large-displacement response of three-dimensional flexible-beam structures. Linear static analysis, modal analysis, linear buckling analysis. Nonlinear statics and dynamics;
- Simulations of large displacement response of three dimensional truss structures. Nonlinear statics, including path tracing.
- Simulations of shell structures. Linear static analysis, modal analysis, explicit dynamic analysis. Shells can be homogeneous or layered (laminated, composite).
Current limitations
- Only elastic structures can be modeled.
- Only simple solid or closed thin-walled beam cross sections are implemented. Open thin-walled beams cannot be simulated at this point since the warping of the section is not enabled.
- Shell reference surface offset not yet tested.
- Neither general beams nor shells can be attached with an offset (eccentricity). There is a linear beam model that can be used with eccentricities (offsets of the attachment points relative to the nodes).
News
- 03/07/2026: Clean up Q4RS.
- 03/05/2026: Fix a bug where an XYZ array was inadvertently modified (coordinate systems!).
- 02/27/2026: Rename shell element Q4RNT to Q4RS.
- 02/06/2026: Add quadrilateral shell element Q4RNT.
Tutorials
There are a number of tutorials explaining the use of this package. Check out the index. The tutorials can be executed as follows:
- Download the package or clone it.
git clone https://github.com/PetrKryslUCSD/FinEtoolsFlexStructures.jl.git
- Change into the
tutorialsfolder:cd .\FinEtoolsFlexStructures.jl\tutorials. - Start Julia:
julia. - Activate the environment:
using Pkg; Pkg.activate("."); Pkg.instantiate();
- Execute the desired tutorial. Here we arbitrarily pick one:
include("circle_modal_tut.jl")
When running a tutorial with graphical plotting in VSCode, make sure to turn off (uncheck) "Julia: Use Plot Pane" in the Preferences. Otherwise the animations will not work.
Examples
Let us assume that the working directory is "FinEtoolsFlexStructures.jl", perhaps
as a result of cloning the repository.
The project needed for running examples can be activated and initialized by
using Pkg; Pkg.activate("./examples"); Pkg.instantiate();
There are a number of examples, which may be executed as described in the
conceptual guide to [FinEtools]
(https://github.com/PetrKryslUCSD/FinEtools.jl). As an example:
julia> include(".\\examples\\shells\\dynamics\\dcbs_vibration_examples.jl")
WARNING: replacing module dbcs_vibration_examples.
[ Info: All examples may be executed with
using .Main.dbcs_vibration_examples; Main.dbcs_vibration_examples.allrun()
julia> using .Main.dbcs_vibration_examples; Main.dbcs_vibration_examples.allrun()
#####################################################
# test_convergence
[ Info: FV12 free vibration, formulation=FinEtoolsFlexStructures.FEMMShellT3FFModule
[ Info: Mesh: 1 elements per side
count(fens) = 143
fs = [21.613635088738015, 29.23401281588026, 30.925491823018966, 34.36778956332975]
[ Info: Mesh: 2 elements per side
count(fens) = 567
fs = [20.569847475978634, 26.277349178877216, 30.027181006351178, 30.68607366768112]
[ Info: Mesh: 3 elements per side
count(fens) = 2255
fs = [20.350441226155656, 25.67267626791537, 29.124064583761363, 30.620439988286456]
[ Info: Mesh: 4 elements per side
count(fens) = 8991
fs = [20.301524870325565, 25.533290848730623, 28.914284995255777, 30.620822302876647]
true
There is usually some indication of what the correct answer should be in the document string of the module: refer to the Julia file defining the examples.
Visualization
This is possible with PlotlyJS.jl with the package VisualStructures.
Static plots or animation of deformation during a static or dynamic simulation can be done.
Export to Paraview is also available. Static pictures and time collections (useful for animations) are supported this way.
Documentation
- Paper on explicit dynamics accepted for publication in the International Journal for Numerical Methods in Engineering. Draft is available in PDF.
- Paper describing the robust triangular flat-facet shell element has been accepted for publication in the International Journal for Numerical Methods in Engineering. Draft is available in PDF.
<a name="past-news"></a>Past news
- 01/29/2026: Add option to use constant transverse shear correction factor.
- 01/3/2026: Update versions.
- 08/28/2025: Update examples. Update workflows.
- 01/06/2024: Update tutorials.
- 01/04/2024: Add a Riks path-tracing solver.
- 01/01/2024: Add a nonlinear corotational truss element.
- 12/22/2024: Add vibration examples for angle-ply laminated composites.
- 12/19/2024: Add benchmark examples for laminated composites.
- 12/19/2024: Fix transformation bug in composite implementation.
- 12/15/2024: Reorganize examples into separate homogeneous and layered shell folders.
- 12/10/2024: Update to Julia 1.11. Reorganize and update examples.
- 05/27/2024: Fix documentation of test module.
- 02/25/2024: Update for FinEtools 8.
- 12/30/2023: Update for Julia 1.10.
- 12/21/2023: Tutorials merged back into the package tree.
- 09/26/2023: Multiple examples revised. Numerous documentation improvements.
- 08/14/2023: Update for Julia 1.9.2. Revised nomenclature of layup transformation matrices.
- 07/13/2023: Update for Julia 1.9 and FinEtools 7.
- 05/26/2022: Paper on explicit dynamics accepted for publication in the International Journal for Numerical Methods in Engineering. Draft is available in PDF.
- 05/07/2022: Upgrade to Julia 1.7.2.
- 02/13/2022: Paper describing the robust triangular flat-facet shell element has been accepted for publication in the International Journal for Numerical Methods in Engineering. Draft is available in PDF.
- 01/29/2022: Explicit dynamics with CSR sparse matrix parallel multiplication.
- 12/31/2021: Implement model for layered (laminated, composite) plates and shells.
- 12/20/2021: Reorganize examples into a project.
- 12/14/2021: The shell element T3FF fully tested, and described in a paper (submitted).
- 08/18/2021: Implemented linear statics and dynamics of shells using the DSG triangle with various improvements. Robust and accurate element.
- 05/23/2021: Update for Julia 1.6.
- 08/23/2020: Add a separate tutorial package, FinEtoolsFlexStructuresTutorials.jl).
- 08/16/2020: Describe the tutorials.
- 07/27/2020: Add documentation.
- 02/25/2020: Beams: Nonlinear static analysis implemented.
- 02/20/2020: Beams: Nonlinear transient dynamic analysis implemented.
- 02/16/2020: Beams: Buckling analysis implemented.
Related Skills
node-connect
339.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
339.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.8kCommit, push, and open a PR
