Finite elements for flexible structures, beams and shells
Author PetrKryslUCSD
7 Stars
Updated Last
1 Year Ago
Started In
June 2021

Project Status: Active – The project has reached a stable, usable state and is being actively developed. Build status codecov Latest documentation


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 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 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 beams nor shells can be attached with an offset (eccentricity).


  • 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: Upgraded 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: Implemented model for layered (laminated, composite) plates and shells.
  • 12/20/2021: Reorganized 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: Updated for Julia 1.6.
  • 08/23/2020: Added a separate tutorial package, FinEtoolsFlexStructuresTutorials.jl).
  • 08/16/2020: Described the tutorials.
  • 07/27/2020: Added 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.


The package FinEtoolsFlexStructures.jl is registered. Simply do

using Pkg; Pkg.add("FinEtoolsFlexStructures"); 

The package can also be cloned. Let us assume that the working directory is "FinEtoolsFlexStructures.jl", which is the result of cloning the repository. The present package can be tested with

using Pkg; Pkg.activate("."); Pkg.instantiate(); 
using Pkg; Pkg.test(); 


The project was developed with Julia 1.6.4, and is operational with any version above that.

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(); using Revise

There are a number of examples, which may be executed as described in the conceptual guide to [FinEtools] ( 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]                                                                                                                 

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.


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.