Skip to content

Finite Element tools in Julia: Analysis of flexible structures, beams and shells

License

Notifications You must be signed in to change notification settings

PetrKryslUCSD/FinEtoolsFlexStructures.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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 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

  • 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.

Past news

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 tutorials folder: 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.

Charts and such are plotted with Gnuplot. Please make sure you have that installed in such a place that Julia REPL can find it.

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.

Past news

  • 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.

About

Finite Element tools in Julia: Analysis of flexible structures, beams and shells

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages