https://github.com/lanl/elements
The C++ ELEMENTS library contains a suite of sub-libraries to support mathematical functions (elements), data representations (MATAR), and novel mesh classes (geometry and SWAGE) to support a very broad range of element types, numerical methods, and mesh connectivity data structures useful for computational physics and engineering.
https://github.com/lanl/elements
computational-geometry finite-element-methods numerical-methods
Last synced: 3 months ago
JSON representation
The C++ ELEMENTS library contains a suite of sub-libraries to support mathematical functions (elements), data representations (MATAR), and novel mesh classes (geometry and SWAGE) to support a very broad range of element types, numerical methods, and mesh connectivity data structures useful for computational physics and engineering.
- Host: GitHub
- URL: https://github.com/lanl/elements
- Owner: lanl
- License: other
- Created: 2020-07-21T21:50:26.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-07-30T14:36:00.000Z (11 months ago)
- Last Synced: 2024-07-30T18:24:59.079Z (11 months ago)
- Topics: computational-geometry, finite-element-methods, numerical-methods
- Language: C++
- Homepage: https://lanl.github.io/ELEMENTS/
- Size: 14.7 MB
- Stars: 18
- Watchers: 6
- Forks: 15
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ELEMENTS
[](https://github.com/lanl/ELEMENTS/actions/workflows/Linux.yaml)
[](https://github.com/lanl/ELEMENTS/actions/workflows/MacOS.yaml)## What is ELEMENTS?
The C++ **ELEMENTS** library is a collection of sub-libraries to support implementing a diverse range of numerical methods on low and high-order meshes. The **ELEMENTS** library can be used for research and development of both continuous and discontinuous finite element methods, as well as, finite volume methods to solve a diverse range of partial differential equations. The **ELEMENTS** library includes the following sub-libraries: **MATAR** contains the routines to support dense and sparse **mat**rices and **ar**rays, **SLAM** contains the interfaces to **s**olvers, **l**inear **a**lgebra, and **m**athematical routines or external packages (e.g., Trilinos), **elements** contains the mathematical functions to support a large range of elements types including serendipity elements, **SWAGE** contains the routines and data-structures to support unstructured arbitrary-order 3D meshes that move or remain stationary, and **geometry** combines together **SWAGE** and **elements**. The **ELEMENTS** libary is designed to support Lagrangian (mesh moves) solid dynamics and mechanics codes, Eulerian (mesh is stationary) fluid dynamics codes, and many other code applications.
![]()
Fig. Code structure layout
![]()
Fig. A high-order 3D mesh deforming in the Taylor-Green vortex
## Getting started
To learn more about ELEMENTS and how to get started using it, please see the [ELEMENTS documentation](https://lanl.github.io/ELEMENTS/).
## How to cite
If you use the ELEMENTS library in your work, please cite the following in any pursuant research papers.
```
@article{MOORE2019100257,
title = "{ELEMENTS: A high-order finite element library in C++}",
journal = {SoftwareX},
volume = {10},
pages = {100257},
year = {2019},
issn = {2352-7110},
doi = {https://doi.org/10.1016/j.softx.2019.100257},
url = {https://www.sciencedirect.com/science/article/pii/S235271101930113X},
author = {Jacob L. Moore and Nathaniel R. Morgan and Mark F. Horstemeyer},
keywords = {Element Library, C++, High-order elements, Spectral elements, Serendipity elements}
}
```