What’s New Since Version 2.1.0#
This page lists the main new capabilities of the development version of FEPX (version 3.0.0, 9 November 2026) since version 2.1.0, the latest release of version 2, starting with some highlights. These changes are not yet part of an official release. FEPX 3 does not read FEPX 2 inputs unchanged, see Incompatible Changes.
Highlights#
A New, Faster Code#
FEPX has been rewritten from the bottom up, in modern Fortran, keeping the established solution methods of version 2. The crystal behavior uses the full anisotropic stiffness: the hydrostatic and deviatoric parts are no longer decoupled. The results do not depend on the number of processes, and every release passes a suite of unit, verification (analytic solutions) and regression tests, run on 1, 2 and 4 processes.
FEPX also runs faster: about 2.8 times faster than version 2 on a 100-grain polycrystal of 26,000 elements, on 1, 2 and 4 processes, thanks to faster crystal-level computations and a block-Jacobi preconditioner of the conjugate gradient solver, which needs 18% fewer iterations. Small meshes run with many increments are about as fast as with version 2. See Running a Simulation.
Stress Control and Mixed Targets#
Each step of a loading now ends at a strain, time, load or stress target (target_strain, target_time, target_duration, target_load, target_stress), and loads and stresses can be applied at a rate (load_rate, stress_rate), so that loading, unloading to zero stress and reloading are written in a few lines:
number_of_steps 3
strain_rate 33 1.0e-3 -1.0e-3 1.0e-3
target_strain 33 0.010 - 0.015
target_stress 33 - 0.0 -
Slip Families and Per-Family Parameters#
The active slip families are chosen with slip_families (including the {110}, {112} and {123} families for bcc crystals), and m, gammadot_0 and tau_0 take one value per family. Here, for an hcp crystal (basal, prismatic and pyramidal \(\langle c+a \rangle\) families):
m 0.01 0.01 0.01
gammadot_0 1.0 1.0 1.0
tau_0 390.0 468.0 663.0
Kocks–Mecking Hardening and Irradiation#
The slip-system strengths can now follow Kocks–Mecking dislocation-density hardening (hardening kocks_mecking), with optional irradiation softening by dislocation loops (irradiation), for fcc and bcc crystals:
hardening kocks_mecking
km_b 2.48e-7
km_h_n 0.125
km_k1 4.5e5
km_k20 14.0
km_gammadot_k0 1.0e10
km_n 100.0
km_rho_0 2.0e7
See Keyword Reference.
20-Node Hexahedral Elements#
In addition to 10-node tetrahedra, FEPX now runs on 20-node hexahedral meshes generated by Neper. See File and Directory Formats.
HDF5 Output for ParaView#
Results can now be written as an HDF5 file with its XDMF file, read by ParaView, and by Python with h5py, in addition to or instead of the text files of simulation.sim (output_format). All results are written unrounded. See Simulation Results (simulation.cfg) and Post-processing in Python.
Exact Restart#
A restart point is written at the end of every step, and holds the whole state of the simulation. On the same number of processes, a simulation interrupted and continued with further steps gives the same results, bit for bit, as an uninterrupted run, and the results are appended to the same simulation.sim directory. See Simulation Restart and Restarting a simulation.
Tutorials#
All tutorials have been rewritten: their inputs are run by the test suite, and their terminal output and images are produced by running FEPX and Neper. The following are new or rewritten:
New Capabilities by Area#
Crystal Behavior#
Elastic phases (
modelelastic), alone or together with crystal-plasticity phases (modelcrystal_plasticity).Independent
c33for hcp and bct crystals (FEPX 2 imposed \(C_{33} = C_{11} + C_{12} - C_{13}\) for hcp).Selection of the active slip families (
slip_families), including the bcc {123} family, andm,gammadot_0andtau_0per family.h_0,tau_sandnper family or per system with anisotropic hardening (hardeningsaturation_anisotropic), and a generalinteraction_matrix, given row by row.Cyclic hardening (
cyclic_hardening) also with anisotropic hardening.Kocks–Mecking dislocation-density hardening (
hardeningkocks_mecking), with optional irradiation softening (irradiation).
Loading#
Stress targets and rates (
target_stress,stress_rate), and time targets and durations (target_time,target_duration), which can be mixed from step to step.Load and stress targets reached within a tolerance (
load_tol,stress_tol), and steps that end exactly on their targets, with a shorter last increment if needed.Dwells written as steps at zero load rate, with a duration.
A single syntax for all boundary conditions:
boundary_conditionswith presets, and one row per loaded component (control_component,strain_rate, …), with one value per step.
Solver#
Block-Jacobi preconditioner of the conjugate gradient solver, used by default (
cg_preconditioner).Automatic subincrementation of the increments that do not converge (
subincrementation).Choice of the initialization of crystal-plasticity runs (
initialization), by default a small elastic step before the first increment.Results that do not depend on the number of processes.
Output#
HDF5 and XDMF output (
output_format).Results written unrounded, with 17 significant digits.
strain_pl_sample, the plastic strain accumulated in the sample frame.Convergence information written inside the simulation directory (
print convergence).Restart points written at the end of every step, with the whole state, inside the simulation directory (Simulation Restart).
General#
Strict reading of the configuration file, with clear error messages, listed in Error and Warning Messages.
Complete reference of the keywords and of the options that cannot be combined (Keyword Reference, Option Compatibility).
CMake build, and a Debian and Ubuntu package (Installation).
Unit, verification and regression tests, run on 1, 2 and 4 processes (Testing).
Incompatible Changes#
Warning
FEPX 3 does not read FEPX 2 inputs unchanged, and it has no compatibility mode: an obsolete keyword or value is an error, so that an old file fails clearly instead of being misread. See Porting FEPX v2 Inputs for how to port an FEPX 2 simulation.
Only Neper mesh files of version 2.4 are read: regenerate older meshes with a current Neper, or re-save them.
Many keywords of
simulation.cfgare renamed or replaced, in particularg_0andg_s0(nowtau_0andtau_s),hard_type(nowhardening),def_control_byand the triaxial loading keywords (nowboundary_conditions,control_componentand the target and rate rows), and the solver tolerances.Each phase states its model (
model), and hcp crystals needc33.Rows of the loading give one value per step (FEPX 2 repeated the last value).
max_strainandmax_eqstrainhave no default (no limit).Output names use underscores only (e.g.,
strain_el, notstrain-el), andsuppressis removed.FEPX 2 restart files cannot be read.