Skip to content

Status

This page compares what femforge implements today with what its pipeline interfaces and its first solver backend, Elmer, offer. A row shows Implemented when the public config reaches it and the user guide documents it, Partial when a module or interface exists that the config cannot reach or the docs do not cover, and Not started when femforge has no model for it.

Pipeline interfaces

Each stage runs behind an interface, and one backend fills each interface today. Concepts walks through the pipeline that connects them.

Stage Today Interface What a new implementation needs
Geometry A tagged STEP file from any CAD, or a Build123dGeometry subclass GeometryArea A build_step(path) that writes a STEP whose body names carry the tags.
Mesh backend GmshMesher in process, WorkerMesher in a child process MeshBackend A mesh(job, out_dir) that turns a MeshJob into Elmer mesh files and a MeshReport.
Solver backend Elmer, through the typed solver stack in femforge.elmer.config and the sif writer None yet Conditions and materials emit Elmer keywords directly, so a second solver needs a solver-neutral interface first; see Solver objects.
Solver execution NativeElmer for serial solves, DockerElmer for serial and MPI solves ExecutionBackend The grid_convert, grid_partition and solve methods and the partitioned flag of src/femforge/elmer/runtime/backend.py.
Optimization GridSearch, find_max_current, and the convergence_ladder and richardson mesh-convergence helpers in femforge.run Parameterization, Objective, DriverLike A search that evaluates configs from a Parameterization through a DriverLike and records them in a Study.
Workbench The trame workbench in packages/femforge-workbench The femforge.workbenches entry point group A function that returns a Split, declared as a WorkbenchSpec; see Workbench.

Frames

Elmer names eight coordinate systems. femforge maps two of them to a frame; see Frames.

Elmer coordinate system femforge Status
Cartesian 3D Solid
Axi Symmetric Axisymmetric
Cartesian 1D
Cartesian 2D
Polar 2D
Polar 3D
Cylindric
Cylindric Symmetric

CoordinateSystem in femforge.elmer.config already names Cylindric, Cylindric Symmetric and Polar as keyword values, but no frame maps a model onto them. A new frame needs a model in src/femforge/common/frame.py, a geometry conversion in src/femforge/geometry/frame.py and a case in Physics.in_frame.

Physics modules

The rows follow the chapters of the Elmer Models Manual. The femforge column names the Physics preset or the module that wires the Elmer module. A Not started module can still run through GenericSolver, which writes a hand-built solver block whose keywords femforge does not check. Conditions and physics documents each preset.

Heat and thermal

Elmer module Solves femforge Status
HeatSolve, HeatSolveVec Heat conduction, with optional convection, radiation and temperature-dependent properties. Physics.THERMAL, Physics.JOULE_HEATING
PhaseChangeSolve (transient) The moving front between a liquid and a solid phase over time.
PhaseChangeSolve (steady state) The steady position of a liquid-solid phase boundary.

Electromagnetics

Elmer module Solves femforge Status
StatCurrentSolve The potential and current density in a conductor, and the Joule losses they produce. Physics.CURRENT_CONDUCTION, Physics.JOULE_HEATING
MagnetoDynamics The 3D magnetic field in A-V form on edge elements, static, time-harmonic or transient. Physics.MAGNETOSTATICS, Physics.COIL_MAGNETOSTATICS; static only
MagnetoDynamics2D The magnetic field of planar or axisymmetric problems from one component of the vector potential. Physics.MAGNETOSTATICS_2D; axisymmetric static only
CoilSolver A consistent current distribution through a coil, as a source for the magnetic solvers. Physics.COIL_MAGNETOSTATICS
StatElecSolve The electrostatic potential and field in dielectrics and conductors. Physics.ELECTROSTATICS
CircuitsAndDynamics Circuit equations coupled to a magnetoquasistatic model.
VectorHelmholtz Time-harmonic electromagnetic waves at high frequency.
EMWaveSolver Time-domain electromagnetic waves on edge elements.
MagneticSolve The magnetic induction equation in a conducting fluid.
StatElecBoundary Electrostatics between nearly parallel surfaces, reduced to one dimension.
PoissonBoltzmannSolve The electric potential with free charges that follow a Boltzmann distribution.
FourierLoss Electromagnetic losses from an on-the-fly Fourier series, in the Steinmetz style.
ElectricForce The electrostatic force on a surface from a solved potential.
StatMagSolve Axisymmetric magnetoquasistatics; Elmer marks it obsolete.

Physics.ELECTROSTATICS has a preset and documentation. FixedPotential feeds it only when its physics field is set to ELECTROSTATICS, and no guide page, example or test exercises that path.

Structural mechanics

Elmer module Solves femforge Status
StressSolve Small displacements and stresses of a linear elastic solid. Physics.LINEAR_ELASTICITY
ElasticSolve Large deformations of an elastic solid.
ShellSolver Deformations of thin curved shells.
Smitc Bending of linear elastic plates.
BeamSolver3D Forces and moments in elastic beams.
SpringAssembly Point springs and masses added to a structural model.
RigidBodyReduction A displacement problem reduced by treating some blocks as rigid.

Physics.LINEAR_ELASTICITY is a scaffold: no condition targets it, and the material model has no Poisson ratio.

Fluids

Elmer module Solves femforge Status
FlowSolve Incompressible or compressible viscous flow with the Navier-Stokes equations.
AdvectionDiffusion Transport of a species or scalar by convection and diffusion.
AdvectionReaction Transport of a passive scalar by a flow, with a reaction rate.
ReynoldsSolver Pressure in a thin fluid film.
Electrokinetics Flow of an electrolyte in small channels driven by electric surface charges.
ParStokes Steady incompressible flow with block preconditioning for large systems.
Stokes Incompressible flow in the rotational form of the Navier-Stokes equations.
LevelSet The position of a free surface tracked with a level-set function.
FreeSurfaceSolver A kinematic free surface, with limiters.
FreeSurfaceReduced A free surface found from a constant flux condition.
StructureFlowLine (free surface) A steady free surface in drawing and pulling processes, found along streamlines.
ArtificialCompressibility A stabilizing compressibility term for loosely coupled fluid-structure interaction.
FluidicForce The pressure and viscous force a flow exerts on a surface.
RichardsSolver Flow through variably saturated porous media.
ArteryOutlet An outlet boundary condition for blood flow in elastic arteries.

Acoustics and waves

Elmer module Solves femforge Status
HelmholtzSolve Time-harmonic acoustic pressure with the Helmholtz equation.
Acoustics Linearized Navier-Stokes acoustics with viscous and thermal losses, in the frequency domain.
WaveSolver A generalized scalar wave equation in the time domain.
CompressibleNS Large-amplitude, nonlinear waves in air.
HelmholtzBEM The Helmholtz equation with the boundary element method.

Particles and other

Elmer module Solves femforge Status
ParticleDynamics Trajectories of particles under forces and fields.
ParticleAdvector Diffusion-free advection of fields by tracking particles backward in time.
StructureFlowLine (moving mesh) Ordinary differential equations along an extruded mesh that moves with a draw velocity.
ModelMixedPoisson The Poisson equation with the flux as a second unknown.
PoissonBEM The Laplace equation with the boundary element method.
BatterySolver Charge and species transport in a lithium-ion cell.
DFTSolver Electronic structure with density functional theory; experimental in Elmer.

Utilities

Elmer module Solves femforge Status
SaveScalars Reductions and integrals of fields, written as scalar values to a file. src/femforge/elmer/config/output/save_scalars.py
ResultOutputSolve Field output in VTU and other formats. src/femforge/elmer/config/output/result_output.py
MeshSolve Mesh deformation that follows moving boundaries.
NonphysicalMeshSolve Mesh deformation where the mesh velocity does not matter.
RigidMeshMapper Rigid rotation and translation of mesh bodies.
StructuredMeshMapper A structured mesh fitted between given top and bottom surfaces.
ElementStats Quality statistics of the mesh elements.
StreamSolver Streamlines of a flow field.
FluxSolver The flux of a Poisson-type field, such as heat flux.
VorticitySolver The curl of a vector field.
DivergenceSolver The divergence of a vector field.
ScalarPotentialSolver The scalar potential whose gradient matches a given flux.
FilterTimeSeries Averages and Fourier filters over time-series results.
DataToFieldSolver A smooth field fitted to scattered data.
ProjectToPlane A 3D field projected onto a plane.
StructureProjectToPlane A field on a structured mesh projected onto its base surface.
FindOptimum New design parameters from a cost function, inside one Elmer run.
SaveLine Field values along lines through the mesh, written to a file.
SaveMaterials, SaveBoundaryValues Material and boundary parameters stored as fields.
SaveGridData Field values on a uniform Cartesian grid.
Isosurface Isosurfaces or isolines extracted to reduce output.
Elmer2OpenFoamIO, OpenFOAM2ElmerIO Field exchange with OpenFOAM through files.
Probes Integrals of expressions over bodies.
GmshOutputReader Fields read from a gmsh result file.
ReloadData Earlier results loaded back during a run.
ReloadInput The solver input reloaded while a run is in progress.
GridDataReader NetCDF grid data interpolated onto the mesh.
Linear constraints (SolverUtils) Linear constraints on a solve, enforced with Lagrange multipliers.
XdmfWriter Parallel results written as Xdmf and HDF5.

femforge runs its sweeps and optimizations outside Elmer, so it uses none of the Elmer optimization utilities.

Solver capabilities

The rows follow the chapters of the ElmerSolver Manual that describe a capability a user switches on. The chapters on fundamentals, the input file format, compilation and programming, and the appendices on file formats and element definitions are background and have no row.

Elmer capability Solves femforge Status
Linear system methods Direct, Krylov and multilevel solvers with their preconditioners. LinearSystem fields on each solver
Nonlinear system options Picard and Newton iteration, relaxation and convergence criteria. NonlinearSystem fields on each solver
Parallel runs Mesh partitioning and MPI solves. DockerElmer with mpi_processes; see Elmer: Native and Docker
Restart A run that starts from saved solutions. SimulationSettings.output_file writes a restart file; nothing reads one back
Time integration Transient solves with BDF, Newmark and other schemes. SimulationType.TRANSIENT and TimesteppingMethod; every preset is steady state
Dirichlet conditions and limiters Fixed values on boundaries, and soft limits on a solution. Fixed values through FixedTemperature and FixedPotential; no limiters
Generic solver utilities Solver activation, variable naming, exported variables and passive elements. exec_solver and variable fields on SolverBase
Eigenvalue problems Modes and eigenfrequencies of a system.
Shared boundary conditions Periodic, mortar and conforming conditions between boundaries.
Linear constraints Extra linear equations that couple degrees of freedom.
Constraint modes The response to unit loads on chosen boundaries, as in a lumped model.
Nodal loads Point loads, and the reaction loads of a solved system.
Block-matrix coupling Tightly coupled multiphysics solved as one block system.
Meshing utilities Coordinate transformation, mesh multiplication, extrusion and discontinuous interfaces inside Elmer.
Adaptive solution Mesh refinement driven by an error estimate.
Higher-order elements p-elements of higher polynomial order.

Conditions and materials

Every condition and material below is implemented. Conditions and physics and Materials document them.

Condition Feeds Target
Magnetization MAGNETOSTATICS, MAGNETOSTATICS_2D, COIL_MAGNETOSTATICS body
ForceComponent MAGNETOSTATICS, MAGNETOSTATICS_2D, COIL_MAGNETOSTATICS body
CurrentDensity MAGNETOSTATICS_2D body
CoilDrive COIL_MAGNETOSTATICS body
CoilTerminal COIL_MAGNETOSTATICS outer shell
FixedTemperature THERMAL, JOULE_HEATING boundary
HeatFlux THERMAL, JOULE_HEATING boundary
Convection THERMAL, JOULE_HEATING outer shell
HeatSource THERMAL, JOULE_HEATING body
FixedPotential CURRENT_CONDUCTION, JOULE_HEATING boundary
JouleHeat JOULE_HEATING body
Material Tag Notable properties
Air Air μr = 1, near-zero conductivity
Copper Copper Temperature-dependent conductivity
N52, N42 N52, N42 Temperature-dependent remanence and coercivity
FR4 FR4 εr = 4.5, glass transition temperature
Steel_1080 Steel1080 Nonlinear B-H curve, or a linear μr
Steel_316 Steel316 μr = 1.008, effectively non-magnetic

Picking a task

A row marked or is a candidate task. Contributing sets up a development checkout, and Solver objects shows how a solver model, a preset and a condition slot into the sif writer. Open or claim a task on the GitHub issues page.