Installation
Fierro backend is designed to run on almost all hardware that you might want to use for a simulation. We support three CPU architectures (x86_64, arm64, ppc64le), as well as CUDA GPUs through nvcc and AMD GPUs through HIP. Additionally, we support both Linux and MacOS. To run Fierro on Windows please use Windows Subsystem for Linux (WSL).
To make the installation process as simple as possible, we offer several pre-compiled binaries through Anaconda for the backend software. The builds for Fierro, as well as its primary dependencies, can be found here for all supported platforms. Anaconda will automatically select the right build for your OS and CPU architecture, however, you must select the correct build based on which GPU hardware is present. This can be seen in the package prefix (-cpu, -cuda, -hip). At this time, the Anaconda Fierro executables for the Windows OS are restricted to running inside WSL-2.
To use Anaconda, follow the steps for your platform to install Anaconda / miniconda / mamba. Next, open a terminal on your machine and go to a folder where you want to run the Fierro code. Then create and activate an Anaconda environment by typing:
conda create -n FierroCode
conda activate FierroCode
In this example, the enviroment is called FierroCode, but any name can be used. In some cases, the text to activate an enviroment is source activate FierroCode
.
Likewise, if an enviroment already exists, then just activate the desired environment.
To install the finite element physics solvers in Fierro, please type, while within the activated Anaconda environment:
conda install -c conda-forge -c fierromechanics fierro-fe-cpu
The EVPFFT physics solver in Fierro can be installed by typing:
conda install -c conda-forge -c fierromechanics fierro-evpfft-cpu
A GUI is offered, it can be installed by typing:
conda install -c conda-forge -c fierromechanics fierro-gui
After installing the finite element solvers, it gives you access to fierro-mesh-builder
,
fierro-parallel-explicit
, fierro-parallel-implicit
, and the
fierro-voxelizer
executables. These can be run by calling the appropriate executable with the
desired input. For example, to call the parallel explicit hydrodynamics solver, use the following command:
fierro-parallel-explicit input.yaml
A sample input file for the explicit finite element solver is in the Fierro GitHub code respository at:
./src/Parallel-Solvers/Parallel-Explicit/example_simple.yaml
The GUI can be run in the anaconda enviroment by typing:
fierro-gui
Supported Systems
Officially, the Fierro back-end solvers are tested for the following systems:
Instruction Set | GPU | |||||
---|---|---|---|---|---|---|
OS | x86_64 | ppc64 | aarch64 | Apple Silicon | NVIDIA | AMD |
Linux | ||||||
MacOS | ||||||
Windows-64* |
*Windows builds are supported through WSL-2
*AMD Builds through HIP are supported for x86_64 CPU architectures only
Graphical User Interfaces
The Fierro GUI applications run on Python and areis available for all systems that the Feirro back-end can run on. They can either be installed from the Anaconda distributions, or built from source.
FIERRO-GUI
Our standalone FIERRO-GUI software can be installed with:
conda install -c conda-forge -c fierromechanics fierro-gui
This will give you access to both the evpfft
and fierro-gui
commands to launch the comamnd line EVPFFT backend or the associated graphical user interface, respectively.
Additionally, FIERRO-GUI can be built from source by navigating to Fierro/python/FIERRO-GUI
and running pip install .
or python setup.py install
. This application depends on:
Backend Applications
To drive the different simulation software in Fierro, we have several backend applications. In general, the collection of backend applications provides a superset of the graphical user interface functionality and it may be necessary to use these applications directly depending on your workflows.
EVPFFT
The elasto-viscoplastic fast fourier transform program simulates the response of polycrystalline microstructures under multiple types of load. It is available from the fierro-evpfft-cpu
Anaconda package. Installing this directly will pull in all necessary dependencies and give you access to the software through the evpfft
command. Example input files for this application can be found under Fierro/src/EVPFFT/example_input_files
.
If you wish to build this application from source, there is a comprehensive build script available to configure the environment and build all of the necessary dependencies. To invoke the script, run:
git clone https://github.com/lanl/Fierro.git --recurse-submodules
cd src/EVPFFT/scripts/build-scripts
source build-evpfft.sh
Implicit Solver
The implicit solver for solving static equations can be acquired through the fierro-fe-cpu
, fierro-fe-cuda
(coming soon), and fierro-fe-hip
(coming soon) Anaconda packages. Installing these directly will pull in all necessary dependencies and give you access to the software through the fierro
command. Example input files for this application can be found under Fierro/src/Parallel-Solvers/Implicit-Lagrange/example_*.yaml
.
If you wish to build this application from source, there is a comprehensive build script available to configure the environment and build all of the necessary dependencies. To invoke the script, run:
git clone https://github.com/lanl/Fierro.git --recurse-submodules
cd scripts/implicit
source build-fierro.sh
Which will provide you with instructions on how to select which hardware you would like to compile Fierro for.
Explicit Solver
The explicit solver for simulating dynamic time evolution can be acquired through the fierro-fe-cpu
, fierro-fe-cuda
(coming soon), and fierro-fe-hip
(coming soon) Anaconda packages. Installing these directly will pull in all necessary dependencies and give you access to the software through the fierro
command. Example input files for this application can be found under Fierro/src/Parallel-Solvers/Parallel-Explicit/example_*.yaml
.
If you wish to build this application from source, there is a comprehensive build script available to configure the environment and build all of the necessary dependencies. To invoke the script, run:
git clone https://github.com/lanl/Fierro.git --recurse-submodules
cd scripts/explicit
source build-fierro.sh
Which will provide you with instructions on how to select which hardware you would like to compile Fierro for.
Tools
In addition to the end to end tooling provided in the main backend application, some miscellaneous tools are available should you want to use them directly for your applications. While these tools do not depend on Trilinos, like some of the solvers, they do depend on Elements. So to build them from source, ensure that the Elements submodule under Fierro/lib
is checked out recursively.
mkdir build
cd build
cmake .. -DBUILD_PARALLEL_EXPLICIT_SOLVER=OFF -DBUILD_IMPLICIT_SOLVER=OFF
make
Mesh Generator
If you want to run a test problem, or just generate a simple mesh, our mesh generator can help. It accepts desired mesh configuration via a Yaml input file and can generate both low order and high order mesh structures in either a cylindrical or rectangular configuration at your desired resolutions.