This repository contains the FEniCSx Structure Solver integrated with the ParaSiF Parallel Partitioned Simulation Framework. It is maintained as a submodule of the main ParaSiF repository: ParaSiF Main Repository.
The FEniCSx Structure Solver in ParaSiF allows the simulation of structural domains in multi-physics partitioned simulations. It is designed to interface with other solvers (e.g., fluid solvers) via the MUI coupling library.
Key features:
- Linear and Hyper- elasticity solvers.
- Supports parallel execution for high-performance simulations.
- Modular design: can be replaced or updated independently of other solvers.
- Compatible with precompiled or user-installed FEniCSx versions.
This solver has been tested and is compatible with FEniCSx v0.9.0.
Users are recommended to use this version to ensure full compatibility with ParaSiF FEniCSx solvers.
ParaSiF/src/structure/FEniCSx/
ParaSiF/src/structure/FEniCSx/
├── doc/ # Documentation folder
├── src/ # ParaSiF-specific source code folder
│ └── structureFSISolver/ # FEniCSx solver source code
└── test/ # test folder
├── single_benchmark/ # Benchmark test case without MUI coupling
└── coupled_benchmark/ # Benchmark case with FEniCSx solver coupled with dummy solver via MUI
Note: This solver is a submodule of ParaSiF. Follow the main ParaSiF repository instructions to initialise submodules and install global dependencies.
-
Obtain and install the codebase
- Initialise the submodule from the main ParaSiF repository (or clone this repository).
- Ensure the correct version of FEniCSx is installed by following instructions from the FEniCSx homepage (The Spack approach is recommended).
-
Install MUI Python wrapper
cd ParaSiF/coupling_lib/MUI/wrappers/Python- Install MUI Python wrapper by following instructions in the MUI reposirory
There is no need to compile or install the ParaSiF FEniCSx src/structureFSISolver. These Python-based FEniCSx codes are compiled automatically at runtime when executing the solver scripts.
Benchmark cases are located in the test/ folder:
- Navigate to the desired benchmark folder:
cd test/XXX- Run the simulation:
./Allrun.sh- (Optional) Clean up previous results before rerunning:
./Allclean.sh- Check results:
During runtime, a structureResults/ folder will be automatically generated in structureDomain/ to store the solver output (displacements, stresses, checkpoint data, etc.).
For the benchmark case, a result_compare.png file will be generated in the benchmark folder. This allows comparison of simulation results with published results from Slone et al. 2003.
For integrated example cases with other solvers, see the example/ folder in the main ParaSiF repository.
ParaSiF, including this submodule, is an open-source project, and contributions from the community are warmly welcomed.
There are many ways you can help improve this submodule, including:
- Adding new features, libs or solvers
- Improving documentation, tests and examples
- Fixing bugs or refining existing functionality
- Sharing feedback and suggestions for enhancements
Your contributions, whether large or small, are highly valued and help make ParaSiF a stronger resource for the research community.
For detailed guidance on contributing, please see the CONTRIBUTING.md in the main ParaSiF repository.
Copyright (C) 2021–2025 The ParaSiF Development Team.
Licensed under the GNU General Public License v3 (GPL-3.0).
For questions or contributions, please contact the ParaSiF Development Team
- Slone, A. K., Bailey, C., & Cross, M. (2003). Dynamic solid mechanics using finite volume methods. Applied Mathematical Modelling, 27(2), 69-87.