1.3 FEBio Basics
This section provides a brief overview of how FEBio works. For more details regarding the algorithms in FEBio, please consult the FEBio Theory Manual.
When FEBio starts, first it will load the configuration file, where it will find instructions on what linear solver to use, what plugins to load, etc. Please see section 9↓ for more information regarding the configuration file.
Usually FEBio will read the input file that was specified on the command line next. The input file contains all the information that FEBio needs to build the FE Model and solve it. At the very least the input file will define the mesh, the materials, boundary conditions, time stepping, and analysis parameters. This document describes the structure of the FEBio input file in detail. See 3↓and 4↓.
Next, FEBio will start solving the model defined by the input file and proceed as follows:
- Loop over all analysis steps. A model can define multiple analysis steps. In each step the boundary conditions, time stepping, and analysis parameters can be modified (e.g. a two-step analysis where a model is loaded statically in the first step. In the second step the load is released and the dynamic response is sought.)
- For each analysis step, loop over all time steps: In each analysis step, loads are usually applied incrementally for stability reasons over a period of time. The time parameter can represent the actual physical time (e.g. in dynamic simulations), or a pseudo-time (e.g. quasi-static loading of an elastic model.). For more on time stepping see 3.3↓.
- Solve each time step: for each time step FEBio will solve the corresponding finite element equations. Usually they are nonlinear and thus are solved with a nonlinear solution strategy. In FEBio this is a variation of the Newton method. See section 3.3↓for more information.
- Check convergence: Since Newton's method is an iterative method convergence is determined by comparing the norms of the solution and residual to the user-defined values in the input file. What norms are used will depend on the physics of the problem, as well as on several user control parameters. See 3.3↓.
- Augmentation: In models that define some type of constraint (e.g. contact, rigid joints, etc.), FEBio will do an additional calculation after a time step converges, called an augmentation. This is because FEBio does not calculate the exact Lagrange multiplier that enforce the constraints, but instead uses an iterative algorithm (called augmented Lagrangian method) to approximate the Lagrange multipliers. During the augmentation, FEBio updates the approximate Lagrange multipliers. If the updates to the multipliers are small, FEBio will terminate the time step, otherwise it will restart the time step with the updated multipliers.
See the figure below for an overview of the basic FEBio flow.