Skip to content

2.7 FEBio Output

Screen output

By default, FEBio will print convergence and progress information to the screen that informs users how the analysis is progressing. The output depends on the particular module and solver that was chosen in the FEBio input file, as well as some user-defined settings, but in general provides the following information.

  • Time stepping information: The current time step that FEBio is solving and a notification when the time step completed (or an error message why the time step failed to complete)

  • Convergence information: for each time step, FEBio usually has to solve a nonlinear problem for which an iterative nonlinear solver is used. Several “norms” are printed to inform the user how FEBio is progressing toward the solution of the nonlinear problem.

  • Summary: At the end of the analysis a summary is printed with heuristics that inform the user how well the model ran.

By default, all screen output will also be printed to the log file.

The summary printed at the end of a run also provides some useful timing information. Below follows an explanation of the different reported timings.

timing description
Input time The time it took to process the FEBio input file.
Initialization time The time to initialize and check the model
Solve time The total time it took to solve the model. This is the sum of the following timings:
IO-time The time to write the output files (i.e. the plot, dump, and data files)
reforming stiffness The time to reform the stiffness matrix (1)
evaluating stiffness The time to evaluate the stiffness matrix (2)
evaluating residual The time to evaluate the residual (3)
model update The time to update the model (4)
QN updates The time to evaluate the Quasi-Newton updates (5)
time in linear solver The time spent in the linear solver (6)

Table 1. Table listing descriptions of the different timings reported at the end of an FEBio job.

Comments:

  1. Internally, FEBio uses a sparse-matrix storage format to store the global stiffness matrix efficiently. A matrix reformation refers to the process of calculating the structure of this sparse matrix. The structure depends mostly on the nodal connectivity and for many problems this only needs to be calculated once at the start of the run. However, for some problems the connectivity may change during an analysis and this may require a reformation of the global stiffness matrix. (For instance, changes in contacting facets.)

  2. The global stiffness matrix needs to be evaluated often as it is needed by the Newton solver for finding the solution. The total time to evaluate this stiffness matrix may often be a significant portion of the total runtime, however, there are several parameters that affect this. For instance, the max_ups parameter sets the number of quasi-Newton updates. During these updates, the full stiffness is not re-evaluated. Instead, a rank-one update is performed, which often significantly reduces the time to evaluate the stiffness matrices.

  3. The residual, which is the difference between “internal” forces (i.e. stresses) and external forces, is evaluated during each quasi-Newton iteration. Although the residual is calculated many times during an analysis, its evaluation rarely takes up a significant time of the total run time.

  4. During the model update, all quantities that depend on the solution variables will be updated. This includes nodal positions, element stress, etc. This update is also called for each quasi-Newton iteration. Although the update is usually fast, the fact that it is required for every iteration may cause the total time spent in the model update to be significant.

  5. The QN update refers to the process of calculating a rank-one update of the stiffness matrix. This is usually a fast process and does not take up a significant amount of time.

  6. The time in the linear solver usually takes up most of the total runtime. Most of this time is spent calculating the factorization of the global stiffness matrix.

Output files

After running FEBio, two or three files are created: the log file, the plot file, and optionally the dump file. The log file is a text file that contains the same output (and usually more) that was written to the screen. The plot file contains the results of the analysis. Since this is a binary file, the results must be analyzed using post processing software such as FEBio Studio. In some cases, the user may wish to request the creation of a dump file. This file contains temporary results of the run. If an analysis terminates unexpectedly or with an error, this file can be used to restart the analysis from the last converged time step. See Section Restarting a Run and Chapter 5 for more details. The names of these files can be specified with the command options –p (plot file), -a (dump file), -o (log file). If one or more of the file names following these flags are omitted, then the omitted file name(s) will be given a default name. The default file names are derived from the input file name. For example, if the input file name is input.feb the logfile will have the name input.log, the plot file is called input.xplt and the dump file is called input.dmp.

Note 1. The name of the log and plot file can also be specified in the FEBio input file. See Section LoadData Section for more information.

Note 2. When running an optimization problem the name of the log file is derived from the optimization control file. See Chapter 6 for more information on running optimization problems with FEBio.

Note 3. FEBio may also generate additional data files. Although the log file is used as the default output file for data requested in the logfile section of the input file, users can specify the location of the output file. In that case, the data will be written to the output file instead of the logfile.