IRIS
IRIS is a general-purpose finite element program designed for computational solid, fluid, and structural mechanics. It emphasizes clarity, extensibility, and flexibility while maintaining good performance for medium-to-large problems.
This code is the main research tool of the Computational Solid Mechanics group). It has been employed in most of our articles and projects, both competitive as well as private.
🔑 Key characteristics
- Handles linear and nonlinear problems.
- Supports quasistatic and transient analyses.
- Provides a flexible input language for defining models and analyses.
- Built in C++, using external high-performance libraries for linear algebra.
📊 Analyses types
- Controlled load/displacement analysis
- Eigenvalue and spectral analysis
- Harmonic analysis
- Dispersion analysis
- Inf-sup analysis for mixed formulations
- Stationary (quasistatic) and transient dynamics
- Topology optimization
- Staggered multi-physics analysis
🧩 Element library
IRIS offers a wide range of elements for different physics:
- Solid mechanics: small strain and finite strain solids, displacement-based, mixed, and enhanced formulations.
- Fluid mechanics: Stokes and Navier–Stokes elements with stabilization (SUPG, GLS, VMS, OSS).
- Thermal analysis: elements for (nonlinear) Poisson and diffusion equations.
- Coupled problems: thermomechanics in small and finite strain solid mechanics.
- Structural analysis: geometrically exact beams and shells.
- Special analyses: topology optimization, eigenvalue/mode computation, dispersion diagrams, fluid/structure interaction:
🧪 Material models
Implemented through the MUESLI library:
- Elastic (small strain isotropic).
- Elastoplastic (von Mises, Tresca, Drucker-Prager with isotropic/kinematic hardening).
- Thermal conductors (Fourier-type heat conduction).
- Extensions possible by adding custom models.
⚙️ Solvers and integration
Nonlinear Step Solvers
- Newton–Raphson
- Quasi-Newton
- Nonlinear Conjugate Gradient (NLCG)
- Adaptive Dynamic Relaxation
- Explicit and Fractional step methods
Linear solvers
Interfaces with multiple sparse direct and iterative solvers:
- SuperLU, LDL, HSL, PETSc wrappers, and PCG.
Time Integration
- Quasistatic solver
- Implicit: Backward Euler, Newmark, Hilber–Hughes–Taylor (HHT), Midpoint
- Explicit: Central Differences, Verlet
- CFL-based or adaptive time stepping available.
🛠️ Input and Preprocessing
- Plain text
.irisinput files with modular commands. - Built-in primitives: brick, sphere, cylinder, torus, etc.
- Imports meshes from Gmsh or Abaqus.
- Supports node sets, element sets, boundary conditions, and time-dependent loads via scaling functions.
📤 Output and Postprocessing
- Log files with solver and iteration details.
- Result files (stresses, strains, displacements, energies, etc.).
- Reaction logs for boundary condition verification.
- Compatible with external visualization tools (e.g., Gmsh).
📚 External Libraries
- BLAS/LAPACK — basic linear algebra.
- Intel TBB — multithreading.
- SuperLU, HSL, LDL — sparse solvers.
- PETSc — linear and nonlinear solvers, preconditioners, ODE integrators.
- MUESLI — material models.
- Gmsh — mesh generation and postprocessing.
🎯 Philosophy
- Focus on clarity and extensibility over raw speed.
- Uses external high-performance libraries for computational bottlenecks.
- Designed as a research and teaching platform, enabling the addition of new solvers, elements, or material models without breaking existing functionality.
📘 User manual
A user manual can be freely accessed.
🪪 Licence
IRIS is a proprietary code. In the past, it has been shared in collaborative projects with companies. For potential licencing, please contact the Technology and Innovation Office at IMDEA. More information can be found in the webpage.