byuflowlab / GXBeam.jl

Pure Julia Implementation of Geometrically Exact Beam Theory
MIT License
88 stars 19 forks source link
beam-elements finite-element-analysis gebt julia nonlinear

GXBeam

DOI status

Pure Julia Implementation of Geometrically Exact Beam Theory

Author: Taylor McDonnell

GXBeam is a pure Julia implementation of Geometrically Exact Beam Theory, originally based on the open source code GEBT and its associated papers[1][2], though it has since been augmented with a number of additional features.

As a sample of one of the many things this package can do, here's a time domain simulation of the dynamic response of a joined wing subjected to a simulated gust, scaled up in order to visualize the deflections:

And here's a dynamic simulation of a wind turbine subjected to a sinusoidal tip load.

Package Features

Installation

Enter the package manager by typing ] and then run the following:

pkg> add GXBeam

Performance

This code has been optimized to be highly performant. In our tests we found that GXBeam outperforms GEBT by a significant margin across all analysis types, as seen in the following table. More details about the specific cases which we test may be found by inspecting the input files and scripts for these tests in the benchmark folder.

Package Steady Analysis Eigenvalue Analysis Time Marching Analysis
GEBT 13.722 ms 33.712 ms 26.870 s
GXBeam 4.716 ms 18.478 ms 9.019 s

Usage

See the documentation

Limitations

By using the simplest possible shape functions (constant or linear shape functions), this package avoids using numerical quadrature except when integrating applied distributed loads (which can be pre-integrated). As a result, element properties are approximated as constant throughout each beam element and a relatively large number of beam elements may be necessary to achieve grid-independent results. More details about the convergence of this package may be found in the examples.

This package does not currently model cross section warping, and therefore should not be used to model open cross sections (such as I, C, or L-beams). The one exception to this rule is if the beam's width is much greater than its height, in which case the beam may be considered to be strip-like (like a helicopter blade).

This package relies on the results of linear cross-sectional analyses. Most notably, it does not model the nonlinear component of the Trapeze effect, which is the tendency of a beam to untwist when subjected to axial tension. This nonlinear effect is typically most important when modeling rotating structures such as helicopter blades due to the presence of large centrifugal forces. It is also more important when modeling strip-like beams than for modeling closed cross-section beams due to their low torsional rigidity.

Related Codes

GEBT: Open source geometrically exact beam theory code developed in Fortran as a companion to the proprietary cross sectional analysis tool VABS. The theory for this code is provided in references 1 and 2. GXBeam was originally developed based on this package and its associated papers, but has since been augmented with additional features.

BeamDyn: Open source geometrically exact beam theory code developed in Fortran by NREL as part of the OpenFAST project. This code was also developed based on GEBT, but uses Legendre spectral finite elements. This allows for exponential rather than algebraic convergence when the solution is smooth. This makes this code a good candidate for use when analyzing beams with smoothly varying properties. Unfortunately, the code is limited to analyzing a single beam, rather than an assembly of beams.

The cross sectional analysis uses the same underlying theory as in BECAS, but was written to be fast and optimization-friendly. VABS and PreComp are other popular tools for composite cross sectional analysis. The former is not freely available, whereas the latter is lower fidelity as it is based on classical laminate theory.

Contributing

Contributions are welcome and encouraged. If at any point you experience issues or have suggestions related to this package, create a new Github issue so we can discuss it. If you're willing to help solve an issue yourself, we encourage you to create a fork of this repository and submit a pull request with the requested change. Pull requests should generally also add a unit test in test/runtests.jl to ensure that issues do not reoccur along with future changes.

References

[1] Yu, W., & Blair, M. (2012). GEBT: A general-purpose nonlinear analysis tool for composite beams. Composite Structures, 94(9), 2677-2689.

[2] Wang, Q., & Yu, W. (2017). Geometrically nonlinear analysis of composite beams using Wiener-Milenković parameters. Journal of Renewable and Sustainable Energy, 9(3), 033306.

[3] Hodges, D. (2006). Nonlinear Composite Beam Theory. American Institute of Aeronautics and Astronautics.