===========================================================================
         ________    _________   _________     __     _________
        |        |\ |        |\ |        |\   |  |\  /         \\
        |    ____|| |    ____|| |    __  ||   |__|| |    ___    ||
        |   |\___\| |   |\___\| |   |\_| ||    \_\| |   //  \   ||
        |   ||      |   ||      |   || | ||    __   |  ||    |  ||
        |   ||__    |   ||__    |   ||_| ||   |  |\ |  ||    |  ||
        |       |\  |       |\  |         \\  |  || |  ||    |  ||
        |    ___||  |    ___||  |    ___   || |  || |  ||    |  ||
        |   |\__\|  |   |\__\|  |   |\__|  || |  || |  ||    |  ||
        |   ||      |   ||      |   ||  |  || |  || |  ||    |  ||
        |   ||      |   ||___   |   ||__|  || |  || |   \\__/   ||
        |   ||      |        |\ |          || |  || |           ||
        |___||      |________|| |__________|| |__||  \_________//

      F I N I T E   E L E M E N T S   F O R   B I O M E C H A N I C S


  Musculoskeletal Research Laboratories
  University of Utah
  http://mrl.sci.utah.edu

  Musculoskeletal Biomechanics Laboratory
  Columbia University
  http://me.columbia.edu/mbl

  copyright (c) University of Utah 2006-2021 - All rights reserved


===========================================================================

R E L E A S E   N O T E S

===========================================================================

This document describes the features that have been added to the latest
FEBio release as well as the more important bug fixes. Please consult
the FEBio User's Manual for a more detailed description of the new features.
To report any bugs or request new features, please visit the FEBio forum 
at https://forums.febio.org/.

===========================================================================

 R E L E A S E   4.12  2/25/2026

===========================================================================

New Features:
* Added option to "contact potential" to exclude neighbors from contact search.
* Added support for including CDATA sections in xml file.
* Added "scale" 1d-function, which simply scales the input value by a user-defined constant.

Improvements:
* Added additional checks around potential dereferencing null pointers in contact potential.
* Reimplemented torsion spring on revolute joint so applied moment remains linear w.r.t. the rotation angle.
* Mapped values are now stored with FMT_ITEM if applicable.
* Updated FEBioConfig.cmake. SDKs now include FEBioConfig.cmake
* Added FEBioConfig.cmake, a CMake build script that can be used in plugins to find and configure the FEBio paths. 
* Made some changes to FEBioConfig.cmake [skip ci]
* Added option to set verbose mode, which will print info on when callbacks are entered and exited.

Bug Fixes:
* Using different assembly method for forces of beam domain so that reaction forces are processed correctly.
* Fixed bug in "parameter" plot variable when field was evaluated over multiple domains.
* Fixed crash when elements are initially inverted.
* Moved where entity references in xml reader are processed.
* Fixed issues with output of "contact penalty" and "contact status". (#116)
* Fixed initial value of E parameter in tension-only linear spring.
* Added checks on FEModel* constructor argument for feature classes to avoid crashing when FEModel* is null in FEBio Studio.

Documentation:
* A new Feature Manual is available here: https://febiosoftware.github.io/febio-feature-manual/


===========================================================================

 R E L E A S E   4.11  1/5/2026

===========================================================================

New Features:
* Added plot variable for plastic yield stress, updated nonlinear iterative solution method for reactive plasticity to produce better results for yield criterion Deshpande-Fleck
* Added plot variables for the Drucker shear stress, the Drucker-Prager stress criterion, and the Deshpande-Fleck stress criterion
* Added Deshpande-Fleck yield/damage criterion
* Added Drucker-Prager failure or yield criterion. Fixed factor of 2 error in tens4dmm::dyad4 calculation
* Added support for "const" ElementData section.
* Added pipette aspiration pressure load
* Added support for reading and writing xml encode control characters.
* Added support for MAT3F element data in VTK export.
* Added support for FMT_MULT domain variables to VTK export. These fields are stored as nodal data.
* Added "incremental displacement" plot variable that calculates the change in displacement from the previously stored state.
* Implemented fiber-pow fiber material model.
* Implemented fftw-based image blurring algorithm.
* FEBio no longer requires a config file to run. Config files must now be explicitly added to the command line (use -config). 
* Implemented active contraction model valid for uncoupled materials.

Improvements:
* Added body force stiffness calculation for beam domains.
* Updated Deshpande-Fleck yield criterion to be more consistent with the paper.
* Modified parameterization of FEEllipsoidalFiberDensityDistribution to simplify assigning maps.
* Added option to stiffness diagnostic to only test a limited number of equations.
* Initialized "spa" member of the "ellipsoidal" density distribution to a valid value.
* Some minor changes to continuous fiber framework to simplify some plugin development.
* Added error message when rve fails to load.
* Modified sign convention in "rigid joint" to be consistent with other rigid connectors.
* The invalid command line option is now reported to the user.
* Allowed some whitespace in the tag's value when defining maps.

Bug Fixes:
* Fixed bug in FEBioMech/FEBioMechModule.cpp
* Fixed method for evaluating isobaric specific heat capacity in real liquids, gases and vapors
* Fixed minor bug to allow gap tolerance to be specified for AUGLAG in sliding-elastic, even when tol=0
* Fixed crash in export of "PK1 norm" plot variable. (#111)
* Fixed bug in writing mat3 data to vtk file.
* Fixed bug in serialization of FEReaction.
* Fixed issue with order of serializing data.
* Fixed bug where nodeset was not set for nodedata generators.
* Fixed issue in elasticity calculation in several materials.
* Fixed several issues with stiffness matrices of rigid connectors. Also implemented Lagrange Multiplier method for all rigid connectors.
* Alpha parameters are now only set in dynamic analyses. This fixes a bug where alpha parameters affected static analyses too. 
* Fixed problems when running micro-materials.
* Fixed issues with stiffness matrix of "rigid joint".
* Fixed issue with Gaussian filter in fftw blur.
* The "import" plugin folder in config file is now supported on all OSes.
* Fixed stiffness matrix for rigid connectors. [skip ci]
* Stiffness matrix now handles rigid nodes correctly.
* Fixed unit assignments in muscle material parameter list.

Documentation:
* Description of FEBio tasks was added (section 2.10).
* The tables of plot and log variables were expanded and are now available in Appendix E.
* Many missing boundary conditions, initial conditions, and loads were added to the documentation.
* Descriptions of several domain types were updated.
* Documentation on FEBio's explicit solver was added to section 3.3.9.
* Added documentation for Deshpande-Fleck damage/yield criterion
* Added description of pipette aspiration pressure load.
* Fixed reference in active contraction material in theory manual.
* Updated description of time stepper in user manual.
* Fixed documentation of fibers-3d-fei integration rule.
* Updated developer's manual. Fixed some typos in the material plugin section and added a new section on creating plugins with fbs3.
* Updated user manual to correct numbering error for reactive viscoelastic trigger (should be 0, 1, 2 not 1, 2, 3)



===========================================================================

 R E L E A S E   4.10   7/23/2025

===========================================================================

New Features:
* Added plot variables that calculate total linear momentum, angular momentum, and energy for a solid domain.
* Added plot variable for nodal shell director
* Added range check for E parameter of FE2DFiberNeoHookean.
* Added calculation of Almansi strain for elastic material points. Added plot variables for Almansi strain, left Cauchy-Green and right Cauchy-Green tensors
* Added isotropic Hencky elastic model
* Added tension_only flag to fiber-pow-linear
* Added command line option to suppress log file output.
* Added calculation of helical axis (instantaneous and finite) for rigid bodies and rigid connectors, and created log variables for output to file.
* Added command line option to prevent shell title updates.
* Added axial body force.
* Implemented radial body load.
* Added option to contact potential to use a higher-order quadrature rule. This will use a new QUAD4G16 for quadrilateral elements. 
* Added "rigid kinematics" initial condition that sets initial velocity based on rigid body kinematics.
* Added quick restart diagnostic.
* Implementation of the slide-line and tied-line constraint.
* Added PK1 stress components to logfile output, as Pxx, Pxy, etc.
* Added log file nodal data variables for effective fluid pressure pe and effective solute concentrations ce1 to ce8
* Added mapping to FEDiffAlbroIso, DiffConstOrtho and DiffRefIso diffusivity types
* Added mapping capability for FEDiffConstIso diffusivity type
* Added "sbm_referential_apparent_density" log variable.


Improvements:
* Fixed some formatting issues in the FEBio EULA.
* Added documentation for initial displacement condition
* Added option to specify initial displacements
* Added description of pressure_model in Uncoupled elastic solids. Improved description of enforcement of three-field-solid formulation.
* Updated User Manual to include reactive fatigue materials
* Added Doxygen comments to some core classes
* Modules registered by plugins are now unregistered when the plugins are unloaded.
* Improved performance of SPR projection by storing reusable data.
* For mixtures, the density is now defined by the top-level parameter.
* Changed type of perm parameters from double to FEParamDouble.
* Added option to tag a parameter as obsolete. Now using this for unused biphasic and multiphasic solver parameters.
* Made sure time increment is initialized before model initialization to avoid division by zero.
* Modified kinematic growth formulation so that it does not need to permanently overwrite elastic material point data.
* Fixed some logo issues in the documentation


Bug fixes:
* Fixed issue with validation when not all properties are initialized yet. 
* Fixed issue with reading load curves from restart input.
* Fixed bug in building matrix profile for tied-elastic interface.
* Fixed problem with initialization of biphasic materials.
* Unloading plugins on Linux and macOS now actually unloads the library (rather than doing nothing).
* Fixed bug in evaluation of stiffness matrix for slide-line.
* Changes to stiffness matrix diagnostic to better handle prescribed dofs.
* Fixed issue with reassigning material IDs after mmg remeshing.
* Fixed issue with serialization of array of FEParamDouble. Removed unnecessary Serialize of EFDMoonyRivlin.
* Fixed potential crash in FBS when an analysis is allocated without an active module.
* Reaction forces are not accumulated anymore in residual vector for rigid nodes. (Otherwise they are double-counted.)



===========================================================================

 R E L E A S E   4.9   3/24/2025

===========================================================================

New Features:
* The "fiber ODF" material was added, which is a new Continuous Fiber Distribution constitutive model. It uses a non-parametric orientation distribution function that is defined by a series of spherical harmonic coefficients. This allows for the definition of extremely detailed ODFs of any shape.
* Added "edge contact gap" plot variable which plots gap data on the edge.
* Added log output variables for fluid max shear stress and fluid principal stresses
* Added secant stress, secant tangent, and secant permeability tangent calculations to biphasic solid and biphasic shell domains
* Added plot variable for nodal shell displacements
* Added flip_secondary and gap_offset parameters to sticky contact. Fixed some issues with contact initiation.
* Added filter option to contact gap, contact pressure, and contact traction plot variables.
* Added progress and relative error measure to stiffness diagnostic.
* Added noappend command option to prevent appending of plot file when restarting.
* Added "SPR relative volume" plot variable.


Improvements:
* Editing pass to FEBio user manual (fix typos, removed obsolete info, added missing info.)
* Now exporting FEIncompNeoHookean from febiomech dll. (In case plugins need it.)
* Added documentation for FiberODF material [skip ci]
* Made PlotFile::AddVariable public to make it easier for third party code to create plotfiles.
* Updated reaction force log variables to be more consistent with "reaction forces" plot variable.
* Added flags to tied-elastic to flip primary and secondary surfaces.
* Made g0 parameter of visco-elastic material mappable.
* Added check for matrix offset in pardiso solver (in case the sparse matrix was allocated externally).
* Made perm parameter of "perm-holmes-mow" mappable.
* Added units of length for length parameters in Surface Attraction Body Force
* Added some additional parallelization to contact potential.
* Updated User Manual to includee fluid max shear stress and fluid principal stresses as log output variables
* Added description of Wall Shear Stress for fluids, in Theory Manual
* All OSes now use MMG 5.7.3
* Added helper function to levmar in order to avoid the need to link levmar (and blas) into FEBio Studio.
* Updated nodal stress and nodal strain plot variables to exclude new shells.  Updated top/bottom stress/strain and top/bottom nodal stress/nodal strain to only include new shell elements. Updated calculation of nodal projection for quad8 and tri6 shells.
* Updated shell top stress and shell bottom stress plot variables to work with quadratic shell elements.
* Modified shell top stress/strain and shell bottom stress/strain to display extrapolated integration point values instead of top or bottom integration point averages
* Modified plot variables for shell nodal stresses to say shell top nodal stress and shell bottom nodal stress. Added plot variables for shell top stress and shell bottom stress.
* Added secant_stress and secant_tangent parameters to solid-elastic domain.
* Added support for tri7 surface elements to "normal displacement".
* Implemented surface constraint member function to choose whether a nodal integration rule should be installed on the surface. The fixed normal displacement now sets a non-nodal integration rule.
* Added option to check for edge-face intersections in contact potential.
* Added function for SPR values of vector<double> types, updated tet10 projection order default value


Bug Fixes:
* Fixed issue with processing empty Module tag.
* Linear constraints no longer assume node IDs start at 1.
* Fixed small issue with resetting a timer.
* Fixed issue with discrete element ID numbers.
* Fixed bug caused when trying to compress plot files when compiling without zlib
* Fixed bug in constructor of MKL solver if MKL was not used. Now not registering mkl solvers if mkl is not used.
* Fixed destructor of PardisoProjectSolver to avoid error message at end of run
* Fixed issue with parsing elem_type attribute of solid domain.
* Fixed issue with contact potential when used with rigid bodies.
* Fixed issue with the normal displacement constraint when node IDs don't start at 1.
* Fixed problem with exporting fiber components to log file.
* Fixed bug in FEPlotMixtureFluidFlowRate plot variable.
* Fixed calculation of yielded bond fraction in reactive plasticity materials to account for rigid body rotations.
* Updated damage criterion for von Mises stress to produce non-singular tangent at stress origin.



===========================================================================

 R E L E A S E   4.8   11/7/2024

===========================================================================

New Features:
* Added new "preferred" option for matrix format. With this option, FEBio will select the matrix format depending on the analysis type and model components. 
* Added an "element data" criterion for mesh adaptors. This allows users to use any of the element log data fields in mesh adaptors. 
* Added new feature to use math expressions in element log data.
* Implemented support "pardiso_64" linear solver that can be used with really large problems ( > 2e9 non-zero elements in stiffness matrix).
* Added "msglvl" option  to produce additional output from pardiso and mkl_dss linear solvers.
* Implemented "surface-to-surface vector" element data map generator.
* Modified implementation of cubic-CLE and ortho-CLE materials to hew more closely to theoretical formulation
* Added "max contact gap" log variable.
* Added additional damage log output variables.
* Added log variables for exporting damage components of nested materials.
* Added option to "moving frame" load to specify the angular velocity in the moving frame instead of the fixed frame.
* Added nodal_target_force load, which can be used to ramp down reaction forces produced by prescribed displacements.
* Added "relative volume" mesh adaptor criterion
* Added option to specify a filter function for the target objective.
* Added ls_check_jacobians control parameter for toggling modified line search that catches negative jacobians.
* Added a "contact gap" mesh adaptor criterion.
* Added "SPR infinitesimal strain" plot variable.
* Added "normalized internal energy" domain log variable.
* Added log output variable for total deformation gradient (includes effect of prestrain if present.)

Improvements:
* Changed how element value is calculated from material point values in FEMeshAdaptorCriterion.
* FEBioModel now also tracks stats per step.
* Now printing warning if mass of rigid body is zero.
* Modified timers so that they can record both inclusive (i.e. total) time and exclusive time. Added some additional timers.
* Some changes to the update and linsolve timers to get more accurate timings.
* Added additional output parameters for "moving frame" loads.
* Made some minor performance enhancements for the explicit solver.
* Implemented better way for getting parameter values from the model.
* Modified MMG remesh so it can remesh internal surfaces.
* Adaptor criterion work on elements instead of on integration points.
* Modified definition of contact material point in several sliding and tied interfaced to facilitate plotting of contact gap and pressure gap in tied-biphasic and tied-multiphasic interfaces
* Now storing parts lists defined in input file as domain lists on the mesh. Added new surface reconstruction algorithm for surfaces defined via part lists. 
* Updated the node-distance constraint so it can be used to enforce an absolute distance.
* Added units to some parameters in FEHuiskeSupply and FERemodelingMaterial
* Removed create handler mechanism (This has been moved to FEBio Studio since that's where it's actually used.)
* Users can now set the max nr. of negative jacobians reported using the output_negative_jacobians flag.
* Added missing description in long name of FEBondRelaxationParkDistortion
* Modified FEHuiskesSupply to include characteristic distance from sensor cells, for consistency with FEHuiskesReactionRate.
* Modified initialization of FEChemicalReaction to initialize FEReactionSpeciesRef objects, and to initialize forward and reverse reactions.  Modified FEReaction initialization to remove initialization of base class. These changes fix out-of-order initializations that became problematic in FEReactionRateHuiskes and similar classes
* Updated Huiskes reaction rate to include characteristic distance from sensor cells
* Modified error reporting for the perm-ref-ortho permeability calculation so it only reports the error a limited number of times.
* Added command line option to set the output_negative_jacobian flag.
* Added plot file option to choose whether to export eroded elements or not.
* Implemented algorithm for growing surfaces when underlying elements are eroded.
* Added explicit check for zero shell thicknesses.
* Updated biphasic, biphasic-solute and triphasic materials to include local material axes, just like multiphasic materials
* Fixed issue when Surface section is empty. Added some additional mesh validation. Warnings are now produced if nodesets, surfaces, etc. are empty.
* Improperly formatted step section will now throw exception.
* Added warning to tied interfaces when no contact pairs were found.
* Updated default solver strategy for biphasic, biphasic-solute and multiphasic modules to Broyden
* Changed default settings for biphasic, biphasic-solute and multiphasic analyses to use max_ups=0 (full Newton) and max_refs=25
* Updated FESolventSupplyStarling to use FEParamDouble instead of double material parameters
* Added general growth option for kinematic growth and updated documentation.
* Made domain attribute optional for domain_data.
* Modified warning message for experimental features.
* Load controllers are now given a default name if no name is provided.
* Made sure that must points are written to plotfile even when plot stride is not one.
* Addressed some performance issues in FEOctree.
* Element neighbor list is now stored on the mesh so it does not need to be recalculated repeatedly.
* Minor fixes to Accelerate solver for Apple computers. Documented Accelerate solver in User Manual
* Made sure plugin is unloaded when its interface is not compatible.
* Refactored binarySearch function out of PointCurve class.
* Modified calculation of second derivatives of elastic fluid pressure with respect to temperature and volume to use first derivative calculation, since first derivative may employ smoothed functions
* Modified real vapor models to use stretched temperature scale for more efficient point interpolation
* Added descriptions of timings reported at the end of a job.
* Addressed some problems reading old 2.5 files.

Bug Fixes:
* Fixed bug in reactive viscoelastic materials (unconstrained and uncoupled) to correctly accommodate viscoelastic fibrous materials that don't sustain stress in compression.  This affects reactive viscoelastic fibrous materials subjected to tension and compression.
* Fixed bug in MKLDSSolver which prevented compilation of FEBio without MKL library
* Fixed issue with merging vector data maps.
* Fixed several issues related to restarts when using rigid components or when using dump=2 option.
* Fixed some issues related to erosion in shells and contact.
* Added omp critical section around logging in FEPermHolmesMow to avoid potential crash when run with multiple threads.
* Fixed small bug in evaluation of elastic tangent in cubic-CLE and ortho-CLE materials
* Fixed issue with gap tolerance in sliding-node-on-facet.
* Fixed bug in processing expression string for FEMathValueVec3.
* Fixed potential crash when using uninitialized FEMappedValueMat3d.
* Fixed bug that incorrectly set the initial energy norm.
* Fixed bug in discrete domain initialization.
* Fixed issue that stress was not reported for von-Mises plasticity material.
* Fixed bug in FECoreBase::GetParameterValue.
* Fixed issue with reconstructing global nodeset.
* Fixed issue with including materials from multiple include files.
* Fixed issues with incorrect use of material point classes.
* Fixed some memory leaks.
* Fixed problem with evaluating multi-variable functions.
* Fixed duplicated surface facet issue with surface erosion.
* Moved ctol from biphasic-solute solver to biphasic solver (but set it to 0 in biphasic solver). This is needed to correctly pass ctol as a parameter in biphasic-solute analyses).
* Fixed segfault caused by missing return values
* Updated initialization of FEFluidSupplyStarling and FESolventSupplyStarling and their parent classes. Added FERemodelingSolid class to model reactive solid mixtures (initial implementation).
* Fixed bug in initialization of FEGrowthTensor
* Fixed issue with creating rigid bodies with shells on solids.
* Added missing support for evaluating functions with variable number of parameters.
* Fixed bug in FEElasticMixture::UpdateSpecializedMaterialPoints.
* Added serialization for edge-to-surface sliding contact.
* Fixed bug in evaluation of total deformation gradient log variable.
* Fixed bug in export of global variables.
* Fixed crash with FEPlotEffectiveElasticity.
* Added function to FEMesh to extract element's zero-based index and used that to fix issue with domain boundary calculation.
* Fixed problem with extracting boundary from mesh when element IDs don't start from 1.
* Fixed bug in real vapor calculation of q.
* Fixed bug in composing FEException message.
* Added missing cases for FE_VEC3D and FE_MAT3D in FEPlotMeshData::SetFilter.

Documentation:
* Fixed comments in code snippet of plugin registration documentation.
* Fixed typo in uncoupled material section.
* Updated some documentation of linear solvers
* Fixed explanation that shell_normal_nodal is defined in the ShellDomain section, not the Control section.
* Added note on auto-contact to user manual.
* Updated documentation on this node-distance constraint.
* Updated Theory and User manuals to reflect updated features of the Huiskes reaction rate and clarify material specifications and potential pitfalls
* Minor updates to mesh adaptor documentation.
* Updated documentation on plot data plugins.
* Updated documentation on optimization
* Replaced mrl.sci.utah.edu links with weisslabutah.org links in manuals.
* Replaced pdf figures with pngs. Updated theory manual accordingly.
* Documented Holmes-Mow elastic solid in the limit as beta goes to zero


===========================================================================

 R E L E A S E   4.7   6/6/2024

===========================================================================

New Features:
* Added ability to select reactive plastic damage material as base (elastic) material of reactive viscoelastic materail, enabling viscoplastic damage analyses
* Added C2-smooth option for loadcurves
* Added "volume change" log variable.
* A new body load "moving frame" was added to the solid module that simulates the effects of the model being embedded in a moving frame. A similar feature was added to the fluid module, where the load is called "fluid moving frame".
* Added Quemada viscous fluid formulation
* Added "body force" plot variable.
* Added plot variable for enclosed volume change
* Added plot variable for fluid body force. Improved formulation of stiffness matrix for body forces in fluid and fluid-FSI domains to include stiffness due to variation of fluid velocity. Minor tweaks to fluid-FSI solver.
* Added the mat_axis domain property, which is used to initialize the material point material axis parameter.
* Added option to export nodal reaction forces for explicit solver.
* Added "ideal gas pressure" which applies a pressure based on the ideal gas law.
* Added debug log output and a plot variable for outputting the current pressure of an ideal-gas-pressure load.
* Introduced ReactionRateRuberti to model strain-dependent fiber degradation
* Added FEVec3dValuator object to FEFiberExpPowSBM and FEFiberPowLinearSBM to make them behave consistently with other fiber models. 
* An (internal) mechanism was added for auto-differentation of Stress and Tangent routines. This is available to plugin developers who wish to avoid calculating the explicit form of the Stress and/or Tangent. 
* Added edge-to-surface sliding contact, which can be used to enforce contact between beams or trusses and a surface. Also renamed potential-based edge-to-surface contact.

Improvements:
* Added option to set element type to HEX8G6 in feb4 input file.
* added missing s in some instances of output_negative_jacobians
* Added default load curve to surface force load.
* Added units of time for bond relaxation constants
* Added descriptions for viscoelastic and reactive viscoelastic damage, and reactive viscoplasticity and reactive viscoplastic damage to User Manual
* Changed long names of pressure- and cv-virial coefficients in real vapor, changed long name of viscosity-virial coefficient in Newtonian real vapor, added plot variable for fluid relative thermal Peclet number
* Updated thermo-fluid module to use latest version of real vapor, added Newtonian real vapor and thermal conductivity real vapor material models. Added plot variables for tangents of fluid pressure with respect to volume and temperature. Used virtual functions to evaluate derivatives of functions of state with respect to volume and temperature
* Added documentation for enclosed volume change
* Updated Theory Manual to describe stiffness contribution from variations of fluid velocity to fluid body force calculation
* Contact potential now also calculates total contact force.
* Augmentations can now be done optionally for the sliding-elastic contact by attaching a load curve to the tolerance parameter.
* Documented the stress and tangent of the "HGO unconstrained" material in the theory manual.
* Improved consistency in PrepStep among fluid solvers, by calling UpdateModel instead of fem.Update in all the solvers.
* Comments are now parsed in XMLReader::GetChar (this was to avoid a problem when a tag's value contains a comment)
* Modified FiberExpPowSBM and FiberPowLinearSBM to use FEParamDouble properties.
* Updated remodeling interface materials to calculate solid mass density for elastic solids, solid mixtures, and multiphasic materials
* Implemented Init function for several contact material point classes.
* Error messages for reset_test are printed to cerr instead of the log file.
* Each contact interface now defines the laugon parameter so that the correct values can be specified.
* added mechanism for plotting strain energy and specific strain energy for components of solid mixtures
* Minor change to optimization output formatting.
* X column now prints time for data-fit objective for optimization problems.
* Implemented nodal integration rule for line elements. This is now default in edge-to-surface contact.
* Added support for body forces for elastic-truss domain.

Bug fixes:
* Removed update of rigid nodal velocities in FERigidSolver::PrepStep since it was incorrect.
* Initialized m_rt material point member when created.
* Made sure augmentations of prestrain constraint are not done when tolerance is zero.
* Allowed prestrain gradient to work with shell domains.
* Fixed issue with rigid solver to improve convergence
* Made sure shell bottom flag is set in initialization.
* Fixed bug in initialization of FEInitialVelocity and FEInitialShellVelocity.
* Fixed plugin paths in Windows scp-to-repo script [skip ci]
* Initialized m_ksi and m_ct parameters of FEFluidMovingFrameLoad to fix crash on Windows.
* Fixed errors in evaluation of stress and tangent of "HGO unconstrained".
* Fixed issue with reading xml tag values that are space-delimited.
* Fixed issue with new FEPlotIdealGasPressure plot variable.
* Fixed crash on Linux caused by buffer overflow in snprintf call
* Fixed typo in ParseSurfaceData when reading vec2d data.
* Fixed sprintf deprecation warnings by using snprintf
* Fixed issues with plotting specific strain energy
* Fixed plotting of specific strain energy when density is zero
* Fixed crash due to recent change in linear solver cleanup.
* Fixed issues with remodeling solids that belong to a solid mixture. Finalized implementation of strain energy density and specific strain energy for solid components of a mixture
* Linear solver is not deallocated in Deactivate since this may cause issues when resetting model.
* Made minor changes to multiphasic domains to properly initialize sbmrmin and sbmrmax
* Fixed issue with material point tree when using elastic mixtures.
* Added serialization for FESymmetryPlane.
* Now ignoring some white space characters when reading tag values.
* Fixed dynamic cast issues when writing discrete element force log data.
* Fixed issues with processing edges from feb4 input file.
* Removed mentioning of model title since that parameter no longer exists.


===========================================================================

 R E L E A S E   4.6   3/29/2024

===========================================================================

New Features:
* Two new rigid constraints were added to prescribe the rotation of a rigid body: rigid_rotation_vector prescribes the rotation via a rotation vector. The rigid_euler_angles prescribes the rotation via Euler angles.
* Added "moving frame" body load, which can be used to emulate the effects of being embedded in an accelerating and rotating coordinate system.
* Added new weak bond recruitment functions for reactive viscoelastictiy, including Weibull, log-normal, quintic, and gamma. Added new damage CDF function gamma.
* Added filtering capabilities for RVE generations, RVE bonds, RVE recruitment and RVE strain, to plot these variables for specific solid mixture constituents
* Added some initial support for body forces for beams. (Will only work with constant body forces.)
* Added "field" plot variable, which can be used to output any field variable. Field variables are the internal solution variables that FEBio solves for. The available field variables depend on the physics module. 
* Added "rotation" plot variable, which writes the nodal orientation of beam elements.
* Added Lagrange multiplier method to linear constraints in FEAugLagLinearConstraint

Improvements:
* Array variables (e.g. solute concentrations) are now exported as FIELD variables in VTK export.
* Added units to rigid force and mixture normal traction
* Added option to use solute/sbm name in concentration dofs.
* For dynamic analysis, the initial accelerations are now calculated based on the applied loads at time 0. This may improve the accuracy and convergence for dynamic problems. 
* Added initial values for some of the discrete Hill material parameters.
* Modified mixture stress plot variable so that you can specify the material as well as the solid component.
* Added additional plot variables for discrete element length and direction.
* Added option to turn off deprecation warnings. These are now turned off for older file formats.
* Simplified implementation of (uncoupled) fiber-exp-linear a bit.
* Costly evaluations of the zero stiffness matrix contributions of constant body forces are now avoided, which may significantly speed up models that use constant body forces.
* Discrete domains are now processed after they have been read in, which is more efficient.
* Improved memory management of the dump stream used during serialization.
* Modified fiber-exp-linear models to optionally enforce continuity of the strain energy density and elasticity when the user sets c3=0.
* Changed default value of tolerance parameter to 0.1 in FEThermoFluidPressureLoad
* Added units to 'orthotropic elastic' and 'orthotropic CLE' materials
* Modified 'recruitment user' to use 'function' instead of 'cdf' for the recruitment function.
* Modified reactive viscoelastic and uncouple reactive viscoelastic materials to use 'bond recruitment' functions instead of 'damage CDF' functions. Modified the weak bond recruitment algorithm from published paper formula to accommodate strain reversal in cyclical loading.
* Added support for writing FMT_MULT mesh data to plot file.
* Added check to make sure that the value of int parameters is indeed a number. If not, an exception is thrown.
* Changed type for FEThermoFluidPressureLoad from 'fluid pressure' to 'fluid pressure constraint'
* Added additional scenarios for material test.
* Improved calculation of incomplete Gamma function needed for the evaluation of the Malkin reduced relaxation function. Limited the range of the Malkin exponent to be >= 1
* Plotfile is now created after model has been initialized. This allows some of values calculated during initialization to be stored in the plot file (e.g. initial discrete element force).
* Now using full Newton in tangent diagnostic, which seems to work a bit better.
* Updated FEThermoFluidPressureLoad to include penalty, augmented Lagrangian, Lagrange multipler methods.

Bug fixes:
* Fixed bug in contact potential initialization.
* Fixes some issues to the velocity calculations in the biphasic and multiphasic solvers.
* Fixed several issues with rigid body dynamics.
* Fixed issue with surface data map that caused crash with cold restart.
* Fixed problem with processing const surface data. Also provided more accurate error message when bc type is not recognized.
* Fixed additional issue with reading old 2.5 files.
* Fixed some issues with serialization of some material point data classes.
* Fixed issue with merging maps for vec3d mesh data.
* Fixed issue that was preventing old 2.5 files from running.
* Fixed the reactive viscoelastic material response when weak bond recruitment is included, so that the response remains physical and meaningful during strain reversal, such as cyclical strain or cyclical stress
* Fixed and updated several material parameter units.
* Fixed strain energy density calculation for fiber-exp-linear when a non-zero c3 is specified by the user, to enforce continuity of the strain energy density.
* Fixed bug that caused a crashed when plot file type was not initialized.
* Fixed problem with restart when using VTK plot files.
* Fixed some problems with serialization of model parameters.
* Fixed cause of crash when using body forces with the rigid shell domain.
* Fixed FEThermoFluidPressureLoad to make prescribed pressure spatially variable
* Fixed implementation of nonlinear constraints in the fluid solver, thermofluid solver, and polar fluid solver.
* Fixed issue with reading body loads that was always activating the loads, regardless of what step they are defined in.

Documentation:
* Added description of dump_stride command line option and made some minor formatting changes to the febio command line section.
* Updated user manual entry for uncoupled fiber-exp-linear and corrected formula for C6 in user manual .
* Modified User Manual to describe continuous strain energy density for fiber-exp-linear and uncoupled version.
* Updated User Manual to describe optional enforcement of strain energy density and elasticity continuity in fiber-exp-linear materials.
* Minor edits to nonlinear constraints section of Theory Manual, such as adding equations numbers.
* Updated Theory Manual to display representative continuous relaxation spectra and corresponding reduced relaxation functions
* Fixed typo in Holmes-Mow material.
* Updated theoretical description of nonlinear constraint enforcement.


===========================================================================

 R E L E A S E   4.5   1/16/2024

===========================================================================

New Features:
* A simple beam formulation has been implemented in FEBio. The stress-strain relation is linear, but allows for large deformations. It can be used in both quasi-static and dynamic analysis.
* Added option to stiffness_test diagnostic to output the actual and approximate stiffness matrices.
* Added output_stride option to control data output frequency.
* Added support for body loads to linear trusses. 
* Added support for exporting stresses for linear trusses.

Improvements:
* Made parameters of muscle and tendon materials mappable.
* Added unit specification to offset parameter in sliding-elastic contact interface
* Added check to see if XML writer failed to create the file.
* Modified "force" parameter definition of the surface "force" load so that it shows units and cannot be assigned a load controller.
* Added units and initial values for "isotropic elastic" material.
* Added check in reading Elements section of input file to make sure element IDs are increasing.
* Added support for writing element data with NODE format to VTK file (as point data).

Bug fixes:
* Fixed some bugs in node-element list and element-element list classes.
* Plot file now stores the FEFacetSets, not the FESurfaces because the latter can change in restarts, which could corrupt the plot file.
* Fixed typo when reading rigid bc from 2.5 format. Also added check when setting parameter value to avoid crash.
* Fixed bug in FindSSI function that assumed one-based node indexing.
* Fixed issue with beam's reference frame. Line searches can now be used with beams.
* Fixed minor issue in output of shell directors.

Documentation:
* The plot file format is now described in Appendix D of the FEBio user manual.


===========================================================================

 R E L E A S E   4.4   11/15/2023

===========================================================================

New Features:
* FEBio can now output directly in the VTK file format. (Use <plotfile type="vtk"> to output febio results to a VTK file instead of the standard FEBio plot file.)
* Added Yeoh constitutive model for uncoupled solid materials
* Implemented dynamics for linear truss elements.
* Added reaction rate for solutes modeled as SBMs for consistency with constant reaction rate for SBMs.
* Added log variables "EulerX", "EulerY", and "EulerZ" for exporting rigid body Euler angles to the log file.

Improvements:
* Expanded description of building plugin on windows in developer's manual.
* Added check for valid rigid body ID in rigid initial conditions.
* Modified FEPrescribedActiveContractionFiber so that it works better with FEBio Studio.
* Added check for nodal IDs
* Updated theory for tied-fluid interface
* Made output of "damage" plot variable consistent with output of "D" log variable.
* Nodal IDs are now stored on the mesh when reading feb files and written to the plot file.
* Improved calculation of multiphasic tangent stiffness by accounting for tangents of referential solid volume fraction with respect to strain. 
* Updated documentation to include description of Yeoh material
* Added units to material parameters of Holzapfel-Gasser-Ogden materials
* Added support for creating node sets from part lists when reading the febio input file.
* Added check to ensure that the parent material of "perm-Holmes-Mow" is biphasic or multiphasic.
* Added initialization of the "E" parameter of the linear spring material.

Bug Fixes:
* Fixed issue with restarts that use surface, domain, or model log data.
* Fixed restart issue for prescribed normal displacement.
* Fixed some serialization issuess with solutes and tied multiphasic interface.
* Fixed bug with calculation of stv parameter in FEActiveFiberStress and FEActiveFiberStressUC
* Fixed issue with "cylindrical" fiber generator.
* Fixed bug with selection of solute id for Nims reaction rate.
* Fixed bug where exact_eigen now returns correct eigenvalues for a diagonal matrix
* Fixed typo in user's manual for coupled MR.
* Added dllexport to some fecore debug functions.
* Fixed issue with old solid solver for dynamic problems.
* Fixed bug with initialization of elastic fiber materials.
* Fixed issue with output of contact gap log variable for node-on-facet contact interface.
* Fixed couple bugs in "tied-multiphasic" contact interface.
* Fixed issue with log output of contact pressure (issue #71).
* Fixed issue with serialization of item lists and domain maps.
* Fixed issue with serialization of mesh nodes.


===========================================================================

 R E L E A S E   4.3   8/30/2023

===========================================================================

New Features:
* The "CG-solver" now supports preconditioners (#67)
* Added fluid supply function to biphasic-FSI materials. 
* Added Starling fluid supply constitutive model for biphasic-FSI fluid supplies.
* Implemented nrrd image reader.
* Added support for storing global data in plot file. By default, PID controller values are now stored to the plot file.
* Added "mesh_data" plot variable, which allows storing mesh data in the plot file.

Improvements:
* Added support for reading part lists from feb4 file.
* Improved error detection in fluid dilatation calculation of FERealVapor.
* Added check for node ID numbers in linear constraints.
* Updated default analysis type for biphasic analyses to be TRANSIENT.
* The "m" parameters of Ogden materials now supports maps.
* Added support for reading vector of strings as xml tag.
* Modified default settings for biphasic-solute and multiphasic analyses to be TRANSIENT (instead of STEADY-STATE).
* Added units for coefficients c1 and c2 of Mooney-Rivlin materials that were missing them.
* Added units to velocity in fluid normal velocity.
* Added documentation on CG-solid solver.
* Added error message when a fixed constraints has no dofs fixed.
* Now, storing initial line coordinates of line object.
* Updated some plot variables that were not thread-safe.
* Added support for domain data stored as FMT_NODE.
* The Surface-to-surface map is now evaluated at the nodes so that it can be replicated more accurately in a plot variable.
* Updated error message when the fiber property of a material cannot be found when parsing ElementData section.
* Added support for .fiber variable in ElementData. (which allows the "old" way of assigning user fiber data to mixture components.)


Bug Fixes:
* Fixed bug in assembling stiffness of linear constraints.
* Fixed bug in FEBioPlotFile::Open.
* Fixed bug with assigning maps to array parameters.
* Fixed issue with model reset.
* Fixed issue with attributes getting processed twice.
* Fixed issue with default name for line objects.
* Fixed issue with initialization of rigid body COM so the correct values are available for PID controllers that reference these parameters.
* Fixed bug in "fluid surface force" plot variable to update surface area and surface normal at each time point, producing correct results for fluid-FSI problems. Fluid problems not affected.


===========================================================================

 R E L E A S E   4.2   6/20/2023

===========================================================================

New Features:
* A fluid-solutes module has been introduced, for fluid analyses with solute transport and reactive processes.

Improvements:
* Updated description of porous neo-Hookean material to indicate that solid volume fraction is inherited from parent material if biphasic or multiphasic
* Exporting additional symbols from febiorve (to make them available to plugins on Windows).
* Added out-of-bounds check to ImageMap::gradient.
* Modified multiphasic framework so that solutes that represent solid-bound-molecules do contribute to the referential solid volume fraction of the multiphasic mixture, by modifying FEMultiphasic::SolidReferentialVolumeFraction. Also updated order of initialization of material points in FEMultiphasicSolidDomain::InitMaterialPoints and FEMultiphasicShellDomain::InitMaterialPoints.
* Updated User Manual to improve description of elastic fluid materials and to explain that solutes that represent solid-bound-molecules can now contribute to the referential solid volume fraction
* Deleted deprecated FEPoroTraction files
* Deprecated FEMultipihasicFluidPressureLoad for versions > 4.0. Changed FEMulatiphasicFluidPressureBC description to "actual fluid pressure" to avoid conflict with "fluid pressure" BCs in fluid, fluid-FSI and fluid-solutes analyses. Minor fix to FEBioFluidSolutes.cpp.
* Added FEMultiphasicFluidPressureBC as a BC that supersedes deprecated FEMultiphasicFluidPressureLoad.
* Added plot variables for various strain measures derived from the growth tensor of a kinematic growth material. Updated the kinematic growth material so that it correctly stores the elastic and growth deformation gradients. Cleaned up the method for creating material point data for the kinematic growth material. Fixed the UpdateSpecializedMaterialPoints function of FEKinematicGrowth to properly replace the deformation gradient calculated from the deformation with the elastic deformation gradient evaluated from the multiplicative decomposition. This provides the correct deformation gradient for calculation of strain-dependent stress, permeability, etc., and associated tangents.
* Added description of the "contact potential" formulation ot user manual.
* Fixed bug in FEKinematicGrowth that prevented proper integration with solid mixtures.
* Updated FEPoroTraction to FEMixtureNormalTraction. Modified FECarterHayes to accept sbm specification as name instead of number. Added units to FEInitialConcentration. Added long names to parameters of FESolidBoundMolecule. Minor tweaks to serialization of FETiedMultiphasicInterface.
* Added default calculation of divergence of body force from trace of stiffness (its spatial gradient).
* Updated body force class to include a function for the calculation of the divergence of the body force. Updated derived classes to perform that calculation. Fixed the calculation of the body force stiffness matrix in the fluid-solutes domain, using divergence of body force.
* Added NodeNormal and UpdateNormals functions to FESurface.
* Created version of fluid RCR boundary condition for fluid-solutes solver. Added units to parameters in FEFluidRCBC, FEFluidRCRBC, FEFluidRCRLoad, FEFluidResistanceBC, FEFluidResistanceLoad, FEFluidSolutesResistanceBC.  Updated new formulation for fluid-solutes module. Modified sequential solver in fluid-solutes module to ignore concentration residual when ctol=0. Updated solutes back flow stabilization for new formulation of fluid-solutes solver.
* Added units of length for gap tolerance and search radius fields for several contact interfaces.
* Added dynamic analysis capability to EAS and ANS shell domains using generalized-alpha method.  Added units to initial velocity condition. Modified secant stress and secant tangent routines to return material stress and elasticity tensors when requested.
* Added FEBIOMECH_API to FEFiberMaterialPoint (for plugins on Windows).
* Renamed FEInitialFluidPressure to FEInitialMixtureFluidPressure to avoid naming conflict with FEBioFluid library.
* Added initial fluid pressure in FEBioFluid and separate version in FEBioFluidSolutes.  Added FEFluidSolutesResistanceBC class. Changed call to Dilatation virtual function in FEElasticFluid to exclude solute concentration.  Added units to various initial conditions.
* Added default load curve flags on nodal force and nodal load parameters.
* Added plot variables for fluid relative Reynolds number and solute relative Peclet number.
* Added new fiber models FEFiberCDF and FEFiberCDFUncoupled.  Added plot variable for 'deviatoric elasticity' which saves the DevTangent of uncoupled materials.
* Simplified evaluation of FEPorousNeoHookean::ReferentialSolidVolumeFraction.
* Changed serialization from FEPorousNeoHookean.
* Update FEPorousNeoHookean to be more robust to inclusion in an elastic mixture which is the solid part of a biphasic/biphasic-solute or multiphasic material.
* Added FEStiffnessDiagnostic.
* Added set command to febio prompt.
* Added support for feb4 step section in restart input file.
* Now storing covariant and contravariant vectors in shell element instead of recomputing each time.
* Minor changes to omp logic in FEExplicitSolver::DoSolve.
* Improved serialization for fluid-related solvers, materials, boundary conditions and domains.
* Initialized L0 in bool FEElasticTrussDomain::Init().
* Removed serialization of m_dof in FESurfaceLoad since it's already serialized in FEModelLoad.

Bug Fixes:
* Fixed issue with name attribute of ElementData tag.
* Fixed crash if no analysis steps are defined.
* Modified how attributes are processed in FEBioMeshDataSection4::ParseElementData so that invalid attributes can be identified.
* Modified how the fibers are defined for the HGO-coronary material so that they show up correctly in febio studio.
* Fixed some issues with setting the preconditioner for the cg, fgmres, and bicgstab iterative solvers
* Fixed issue with incomplete Cholesky and CG iterative solver.
* Fixed error in description of CG iterative solver.
* Fixed incorrect values for output_level.
* Fixed issue with serialization of data maps.
* Fixed bug in plotting solid mixture nested variables, when plotting component that doesn't exist.
* Fixed serialization of FENodalLoad.
* Fixed problem with copying valuators.
* Fixed issue with initialization of load controllers added in restart input file.
* Fixed bug in serialization of rigid nodeset.
* Fixed issue with rigid shell initialization.
* Fixed bug with setting dump file name.
* Fixed several serialization issues.
* Fixed serialization of FEMathValuator.


===========================================================================

 R E L E A S E   4.1   3/27/2023

===========================================================================

* Fixed issue with exporting log data "contact pressure" and "contact gap".
* Added element ID in Holmes-Mow permeability error message.
* Fixed problem with initialization of FERigidBC in multi-step analysis.
* Added all node, element, and facet sets defined in the input file to the plot file.
* Fixed issue with linear constraints for multi-step problems.
* Added config option (show_warnings_and_errors) to suppress warnings and error messages.
* Added parameter to param_run task to generate standard febio output files.
* Hide "clamp_shells" parameter in FERigidNodeSet since it has no effect currently.
* Now printing const scaled value for prescribed FEParamDouble values.
* Some changes that address minor inconsistencies between the BCs that replace their deprecated "load" versions.
* Fixed error in description of Hill discrete material.
* Added enums to solve_strategy parameter of FEFluidSolutesSolver.
* Minor change to console update.
* Corrected unit of P1 muscle material parameter in user manual.
* Fixed issue caused when febio prompt recieves EOF on Linux.
* Log data is now also evaluated and output at time 0.
* Fixed issue with missing material point data in multigeneration material.
* Fixed issue with initialization of FERealGas and FEOsmCoefManning.
* Fixed issue with initialization of FEMappedValueVec3 class and FEElasticFiberMaterial_T.
* Added check for invalid tags when reading rigid body force.
* Replaced NANDetected with NANInSolutionDetected and NANInResidualDetected.
* Minor formatting change when printing vec3d mapped parameters.
* Changed range for FEDamageFiberExponential k2 parameter.
* Fixed bug in allow-mixed-bcs logic in multistep analysis.
* Added support for target rigid moments.
* Added support for referencing domain parameters. This can now be used in the param_run task.
* Fixed bug in periodic boundary related to projection search radius.
* Updated reaction rates (const, expSED, Huiskes and Nims) to use FEParamDouble instead of double for material properties.
* Fixed initiation of referential solid volume fraction in multiphasic solid and shell domains.
* Added support for reading linear constraint offset and fixed issue related to offset.
* Added plot variable for specific strain energy in multiphasic materials (to account for solid remodeling).
* Added rigid body names to echo input.
* Updated User Manual to described fixed pressure, prescribed pressure, fixed concentration, prescribed concentration, fluid pressure (for multiphasic analyses), and add description of update flag to solute natural flux surface load
* Added FEMultiphasicFluidPressureLoad to allow prescribing the actual fluid pressure in a multiphasic analysis. Modified FESoluteNaturalFlux to provide better numerical convergence for this surface load.
* Moved up initialization of rigid system so PID load controllers can reference rigid body parameters.
* Fixed couple issues with explicit solver: initialized FETimeInfo and fixed bug in using prescribed rigid displacements.
* Fixed issue with shell dofs in explicit solver. Made some minor performance improvements.
* Renamed FEPrescribedFluidPressure to FEPrescribedNodalFluidPressure to avoid naming conflict.
* Fixed bug in parsing vector<int> from input file.
* Fixed bug in parsing input file comments that contain '-' characters.


===========================================================================

 R E L E A S E   4.0   1/5/2023

===========================================================================

* FEBio4 is a major upgrade from FEBio3. Although it will continue to read most older files (version 3, 2.5, 2), a new format (version 4) is the preferred format. Files can be converted with FEBio Studio 2. Most of the important changes in this update are under the hood and improved the consistency between the internal representation of the febio model, the input file format, and the model representation in febio studio 2. The changes facilitated the direct integration of febio into febio studio. See the release notes of febio studio 2 for additional information regarding this integration. 
* Fixed sign issue with evaluating body loads on rigid bodies. (Only affects the output of the rigid body reaction forces.)
* Added mat_axis property to solid mixtures, mostly to better support older file formats.
* Fixed a crash when an error was detected in the update of the contact potential.
* Added some error checking for -import command line option.
* Fixed bug in evaluation of FENodalFluidFlux
* Increased precicion when writing floating point values.
* Fixed some issues with parsing comments from the xml file.
* Rigid wall adds surface to mesh in feb3 import.
* Rigid node sets can now be applied in multi-step analyses.
* Fixed crash in parabolic map.
* Fixed several issues with mesh data generators.
* Added support for redefining load contollers in restart file format 3.
* Fixed issue with BSpline initialization.
* Added property validation for properties defined via empty tags.


===========================================================================

 R E L E A S E   3.8   12/12/2022

===========================================================================

* Several issues with the cold restart capability were addressed. 
* An issue was caused that could cause a crash when rigid rotational dofs are coupled to a biphasic element.
* Added dump stride parameter, which allows users to specify how often the dump file is written.
* Added "contact_traction" log variable.
* Added names of parent when printing model parameter values.
* Suppor for the MKL-DSS solver was added, which seems to work better for certain types of models than the default pardiso solver.
* Added gap offset option to facet-2-facet sliding.
* Fixed issue with plot output logic when first step does not request output.
* Fixed bug in "element center of mass" plot variable.
* Parameters of "orthotropic elastic" material can now be mapped.
* Added "discrete element signed force" plot variable.
* Added log variables for discrete element force components.
* Fixed bug in compressible Gent material.
* Added "facet area" log variable.
* Added "deformation gradient" plot variable.
* Fixed issue with initializationg of FEParamMat3d parameters.
* Added FEMathExpression that refactored some of the logic previously in FEMathValue. FEMathValueVec3 now also uses FEMathExpression so that it can support maps.
* Added prescribed fiber active contraction models. (Similar to uniaxial, but fiber direction can be defined by user.)
* Added support for mixture stress log variable.
* The "mixture stress" plot variable now also works for uncoupled mixtures.
* Fixed calculation of fixed charge density in multiphasic and triphasic materials (in FEBio3)
* Added error exception in Holmes-Mow permeability to catch pathological case.
* Added "contact area" log variable.
* Updated Theory Manual to fix calculation of fixed charge density in reactive multiphasic materials that use charged solid-bound molecules
* Added description of fluid RCR surface load in User Manual
* Fixed the fluid RCR surface load and made it ready for release. Simplified the fluid resistance to be consistent with fluid RCR.
* Allow the initial referential mass density of solid-bound molecules, m_rho0, to be a FEParamDouble.
* Updated FEMembraneMassActionForward and FEMembraneMassActionReversible to use areal concentration of solid-bound molecules. Updated FEMembraneReactionRateIonChannel to accommodate solid-bound molecules in the calculation of the reaction rate.
* Added exponential damage CDF (useful for reactive viscoelastic materials with exponentially increasing weak bond fractions with increasing strain)
* Added aggressive interpolation type as user-specifiable option in BoomerAMG solver.
* Modified FEFiberPowLinear and FEFiberPowLinearUncoupled to use FEParamDouble material coefficients.
* Updated FEIdealGasIsentropic and FEIdealGasIsothermal to run properly in current version of FEBio.
* Point Source Updates
* Fixed bug in FEContinuousFiberDistribution::Stress
* Fixed issue with exporting plot parameter for mapped parameters of nodal loads.
* Added support for X, Y, Z in generic hyperelastic material.
* Restricted nodal reaction forces plot variable to non-rigid materials.


===========================================================================

 R E L E A S E   3.7   6/15/2022

===========================================================================

* Added support for setting solver parameters via restart input file.
* Clarified error message when a property fails to initialize.
* Improved speed of initialization of FSI problems.
* Aded lung material and documentation.
* Added warning that nonzero value for dtmax will be ignored when must points were defined.
* Fixed some issues related to reset of contact problems. This bug could have affected outcome of parameter optimization for certain contact problems. 
* Modified the reset test to print out some useful stats.
* Allowed export to specific domains for domain plot variables. Previously this was only supported for some surface plot variables. 
* Made a change to HGOCoronary so that fiber vector plot variable works for this material.
* Contact potential now outputs nonzero values for contact pressure and contact area.
* Implemented parameter scaling option for constrained levmar. To enable parameter scaling, set the control parameter "scale_parameter" to 1. 
* Box constraints are now enforced explicitly in constrained levmar. 
* Added model log data classes. Added log variable for printing solution vector norm.
* For prestrain materials, the density now takes the prestrain into account.
* Added Shenoy material and documented it in user manual.
* Local coordinate system is now taken into account in FEHGOCoronary.
* Updated reactive viscoelastic materials to properly account for damage when the elastic bond material is modeled with either a reactive damage or a reactive fatigue material.
* Added integral of solute concentration log data.
* Added log output option for printing integral of sbm concentration.
* Fixed serialization of contact material point data.
* Fixed issue with reallocation of linear system during restart.
* Implemented missing Serialize functions for FELinearElasticFluid and FENonlinearElasticFluid.
* Added serialization of FEBiphasicFSIDomain3D::m_btrans.
* Added missing serialization of generic hyperelastic materials.
* Fixed serialization of FEBearingLoad.
* Fixed restart and serialization issues with linear constraints.
* Fixed serialization issues for model parameters. Added missing serialization of FEInSituStretchGradient.
* Added missing Serialize to FEReactivePlasticity.
* Minor change to FEUT4Domain::Create to avoid problem with restart.
* Added serialization for FEMathFunction.
* Added missing serialization of FEBiphasicSolidDomain::m_nodePressure.
* Added "test" solver, which doesn't solve anything, just returns zeroes. (Added to facilitate debugging of large problems.)
* Fixed issue with allocation of default "elastic" property of FEFluid.
* Implemented HGO-coronary material.
* Added "facet area" plot variable.
* Added small clarification about elasticity of some fiber models at strain origin.
* Updated User Manual to include description of solute natural flux, CDF power, and plot variable RVE strain
* Added new 'solute natural flux' surface load for biphasic-solute and multiphasic domains which prescribes a solute molar flux equal to (solute concentration)*(solvent volumetric flux) on a boundary, where concentration and fluid flux are averaged from the element underneath the selected boundary face. This allows a solute to naturally flow out of a boundary without the user having to prescribe a solute concentration or specific value of solute flux on that boundary.  Current implementation has a barebones stiffness matrix, may need to be fully populated in future implementation.
* Minor cleaning up of reactive viscoelastic code.
* Added a scaling parameter to FEDamageCDFPower.
* E parameter of FEFiberPowLinearUncoupled a FEParamDouble.
* Added description of auto time step algorithm for reducing the time step size in user manual.
* Expanded user manual entry for fiber-exp-pow-linear
* Fixed user manual entry for definition of formulas related to fiber-exp-pow-linear
* Fixed bug in newly introduced fiber-exp-pow-linear, to enforce continuity of the elasticity at the exp-pow-linear transition.
* Added FEGlobalVariable to prevent memory leak when adding global variables. Global variables are now also copied in FEModel::CopyFrom.
* Added feature for developers, to plot scalar value of prescribed surface load.  Modified FEBearingLoad and FEFluidNormalVelocity to test it out.
* Updated User Manual to describe new bearing load
* Added functionality to prescribed a radial bearing load on a cylindrical surface (FEBearingLoad). Copied and adapted Quadric and QuadricFit functions from FEBioStudio to fit bearing surface and detect its axial and radial directions. Updated vec3d and matrix to reproduce missing functionalities that are available in their FEBioStudio equivalents. Updated surface element traits to include/return parametric coordinates of the surface centroid (in parametric space).
* Added serialization of surface pairs.
* Added operators for mat3d+/-/* mat3da and for mat3d+/-mat3ds operation
* Added description of surface force load in User Manual
* Added functionality for prescribing a force on a surface which is converted to a uniform traction.
* Added description of fixed normal displacement constraint
* Added functionality for prescribing a fixed normal displacement constraint.
* Cleaned up FEForceVelocityMaterialPoint and provided missing default values for some of the material parameters.
* Updated User Manual to describe the force-velocity-Estrada active fiber contraction model
* Modified FERVEDamageMaterial to a working version
* Fixed one more item to make FEDamageMaterialUC more consistent with FEDamageMaterial.
* Added description of fiber-exp-pow-linear material
* Added symbolic derivative for H (Heavyside function).
* Modified FEDamageMaterialUC to be consistent with FEDamageMaterial. Replaced FEFiberPowerLinear (which was duplicate of FEFiberPowLinear) with FEFiberExpPowLinear, which uses exponential-power law in the toe region.
* Deleted old (invalid) FEFatigueMaterial
* Derived FEPolynomialHyperElastic from FEElasticMaterial instead of FEUncoupledMaterial, since this material won't work with the three-field formulation.
* Fixed base class call in FEActiveFiberContraction::Init.
* Added pre-stretch functions to FEElasticFiberMaterial to replicate capabilities previously implemented in FEElasticFiberMaterialUC
* Added another example of parameter optimization specification in user manual. 
* Fixed trans iso materials that use active fiber contraction to not crash when active fiber contraction is not included.
* Updated FETransIsoMooney-Rivlin and FETransIsoVerandaWestmann to use FEActiveContractionMaterial class to accommodate multiple active fiber contraction materials.
* Derived FEActiveFiberContraction from FEActiveContractionMaterial.
* Added Ana Estrada's model for force-velocity contraction of the cardiac muscle, superposed on a trans iso Mooney-Rivlin material.
* Added new materials "reactive fatigue" and "uncoupled reactive fatigue".
* Added check for repeated time coordinates in load curves.
* Added "infinitesimal strain" plot variable.
* Modified plot parameter so that it maps directly for FMT_MULT data maps without projecting to nodes.
* Fixed bug in closest-point-projection and FESurfaceElement::facet_edge.
* Added getter for FEDataMap to FEMappedValue.
* Fixed some issues with the MDerive operator.
* Fixed issue with evaluating math expression's derivatives.
* Implemented (uncoupled) polynomial hyperelastic material.
* Created missing UpdateSpecializedMaterialPoints function for FEBiphasic, FEBiphasicSolute, FETriphasic and FEMultiphasic materials.  Also updated Init() function for these materials.
* Fixed output issue when reporting boolean load parameter values.
* Modified plot logic so that for multi-step analysis, first state is written after first step activation.
* Now checking if the contact interface is active when writing contact plot variables.
* Added support for shells in "density" plot variable.
* Fixed bug in FELogElemSolidStress.
* Implemented support for shells in "Lagrange Strain".
* The "relative volume" plot variable now also supports shells.
* Fixed bad cast issue in FEMassDamping::force.
* Added method to store and plot correct value of uncoupled pressure (for uncoupled materials), including when using 3-field formulation.
* Added trace-free neo-Hookean material, which can be used in ground matrix of solid component of biphasic materials, for equivalence with Mooney-Rivlin material when comparing short-term biphasic and uncoupled elastic responses.
* Fixed bug when passing material point array data in uncoupled elastic mixtures.
* Added FEBondRelaxationMalkinDist continuous spectrum relaxation function with distortional strain-dependent time constants. Added FEDamageCDFPower power-law (pseudo-)damage CDF, which can be useful for specifying weak bond recruitment in reactive viscoelastic materials.
* Fixed issues with CopyFrom for discrete domains.
* Fixed bug reading dump level from cmd + dump at must-points (#37)
* Added log variables for solid stress.
* Added log output for permeability.
* Renamed the "general spring" to "nonlinear spring"
* Implemented new general spring material.
* Added example for reactive plasticity with PFC math flow curve
* Added regression coefficient (R2) as output of parameter optimization analyses (linear regression between y=fitted and x=data). Added ability to fit the y-value of points on point functions representing material parameters.
* Added recruitment module to reactive viscoelastic and uncoupled reactive viscoelastic materials to further accommodate nonlinear viscoelastic response with increasing strain. Added plot variable RVE strain to report the strain measure used for recruitment. Extended Weibull CDF to incorporate location parameter.
* Fixed bug with assignment operator of model parameters.
* Fixed issue with allocation and serialization of discrete element sets.
* Fixed bug in ParseBCFix when reading comma-separated list of dofs.
* Added Appendix A in Theory Manual as review of tensor calculus
* Added scale parameter to nonlinear spring.
* Added log options to output discrete element stretch, elongation, force.
* Added mesh_adaptor property to FEModel.
* Added option to repeat must-points.


===========================================================================

 R E L E A S E   3.6   2/18/2022

===========================================================================

* Added description of plot variables RVE generations, RVE reforming bonds, and effective friction coefficient
* Updated description of plot variables in user manual.
*	Documented the coupled and uncoupled Gent material.
* Added new uncoupled Holmes-Mow isotropic elastic solid.
* Updated Theory and User Manual to include description of uncoupled Holmes-Mow material
* Added persistMatrix flag that cleans up linear solver and stiffness matrix after every time step. (This is useful for reducing memory requirements for homogenization problems.)
* Added deviatoric strain energy density calculation for FEIncompNeoHookean
* Fixed problem with appending plotfile with compression flag on.
* Fixed memory leak.
* Implemented missing functionality of "prescribe_nodal_velocities".
* Updated Theory Manual to explain that uncoupled fiber formulations are non-physical and that uncoupled damage should not be used with fiber materials
* Fixed issue with allocating FENodeSet that caused crash in restarts.
* Fixed problem with serialization of mapped model parameters.
* Added parameter list for FEUDGHexDomain.
* Updated calculation of local fluid load support in sliding-biphasic contact interface to place theoretical upper bound on its value. Improves prediction of fluid load support over contact interface.
* Updated User Manual and Theory Manual to define and include local fluid load support as a plot variable
* Minor formatting change to Invalid Value error.
* Mesh data isn't generated until after the feb file is read in. This allows that load data section no longer needs to be defined before mesh data sections. 
* Fixed bug in FESlidingInterface when using higher-order elements. 
* Added PK1 stress plot variable.
* Fixed error in description of muscle material.
* Updated User Manual to include description of parameters <emin> and <wmin> in reactive viscoelastic materials
* Updated Theory and User Manuals to include a description of new relaxation functions implemented in FEBio and general theoretical background about continuous relaxation spectra
* Cleaned up relaxation functions needed for reactive viscoelasticity (replaced double with ParamDouble for most of them).  Fixed Malkin relaxation function to employ two time constants tau1 and tau2. Fixed CSexp relaxation function to return 1 at t=0 without further calculations.
* Removed ability to specify (weak) bond material as a scaled version of base (strong bond) material in reactive viscoelastic and uncoupled reactive viscoelastic, because of initialization conflicts. Removed constraint on specifying solid mixtures in both base and bond materials, now that a material point data array is used to distinguish material points of base and bond materials.
* Cleaned up reactive viscoelastic material implementation, using material point array to differentiate base and bond materials.  Fixed small bug introduced in last commit.
* Added missing CreateMaterialPointData function for FEContinuousFiberDistribution.
* Added modified Bessel functions of the first and second kind, of orders 0 and 1.
* Fixed issues with tri10 surface facets.
* Added new reduced relaxation functions for reactive viscoelasticity (Malkin, Malkin-dist-user, CSexp, CSexp-dist-user). Added plot variable for rate of deformation tensor in solids. Added plot variables for mass fraction of reforming bonds in reactive viscoelasticity, strain energy density of strong and weak bonds, and deviatoric strain energy density for strong and weak bonds. Added initialization functions for bond relaxation materials that employ FEFunction1D objects for user-specified functions. Updated reactive viscoelasticity framework to reset fiber orientation of each weak bond generation based on fiber configuration at start of generation; created FEFiberMaterialPoint to store fiber pre-stretch tensor; updated continuous fiber distribution materials to set/reset fiber prestretch. Updated initialization of solid mixtures and uncoupled solid mixtures to prevent specification of mixture of mixtures. Modified FiberExpPowUncoupled to be consistent with FiberExpPow. Cleaned up reactive viscoelasticity materials to (a) update specialized material points in situ instead of within FEReactiveVEMaterialPoint; (b) prevent the specification of more than one mixture in these materials; (c) allow the weak bond material to be a scaled function of the elastic bond material (optional); (d) evaluate relaxation function using state of total strain at genesis time of weak bond generation (instead of relative strain); (e) properly set/reset fiber prestretch when applicable. Introduced FEScaledElasticMaterial and FEScaledUncoupledMaterial to allow item (c) in preceding sentence. Updated FETransIsoMooneyRivlin and FETransIsoVerondaWestmann fiber stress calculations to use public functions only.
* Implemented symbolic derivative of pow.
* Remove positivity constraint on Poisson's ratio v12 in "orthotropic elastic" material.
* Fixed implementation of "fluid flow rate" plot variable for biphasic mixtures.
* Added guidance section for dynamic problems to user manual.
* Added error check for FERigidBodyFixedBC.
* Fixed uninitialized member variable in FEMinMaxFilterAdaptorCriterion.
* Fixed bug in coupled-trans-iso tangent and strain-energy-density calculation.
* Added ramp parameter to FEConstPrestrainGradient.
* Fixed issue with reading FEFunction1D object through loadcurves.
* Added description of fiber exp-linear fiber models to user manual.
* Fixed issue with reading nodedata when node set is defined implicitly via surface.
* Added support for exporting vec3d mapped nodal data to plot file.
* Plot stride now also respected when using FE_PLOT_USER1 plot level.
* Updated User Manual to include description of pyra13 elements
* Made some repairs to the CG-solid solver.
* Minor edits to continuous damage section.
* Added plot variable for "rate of deformation"
* Added force and displacement norm to output for explicit solver.
* Updated documentation on continuous damage formulation.
* Added some documentation for homogenization.
* Added new "D2beta" plot variable.
* Param run now uses FEDataParameter for output variable. Added support for special domain log data that evaluates average and percentile of element data.
* Implemented contact area for tied-elastic.
* Implemented contact force for tied-elastic interface.
* Refactored linear constraints. Added support for setting a loadcurve to the child dof's value parameter.
* Cleaned up continuous elastic damage formulation.
* Added PK2 stress log variables.
* Added ':' as valid character for xml tag name.
* Added '-' as valid character for xml tag name.
* Fixed issue with beta plot variable and added psi0 plot variable for damage elastic fiber materials.
* Fixed issue where incorrect termination status was reported.
* Fixed HYPRE_Int typing issue in BoomerAMG function calls caused by recent change.
* ́Added new bond relaxation function called relaxation-exp-pow, for reactive viscoelasticity.
* Added SetResetFlag to FESBMPointSource.
* Allow parameter optimization on the y value of vec2d parameters. This can be used to optimize individual points in the load curve description of a material response.
* Fixed issue with output on CB_USER1 event.
* Added CB_USER1 callback event, and FE_PLOT_USER1 plot option.
* Added new parameter run feature, which allows users to run a model and set model parameters and output variables in separate input file.
* Modified BoomerAMG function calls to re-type arguments
* The RVE model now follows time stepping of macro model.
* The micro material now uses RCI for solving RVEs.
* Implemented RCI (Reverse Control Interface) for solving FE model.
* Added additional check in FEVecPropertyT::SetProperty to make sure the correct class is allocated.
* Made cp parameter of FEOgdenUnconstrained a mapped variable.
* Added position of rigid bodies to default output for plot object.
* Made coefficient parameters of Ogden materials variable. (issue #33)
* Added mechanism for copying materials that have additional properties.
* Added parameter to FECoreKernel::RegisterDomain to push a domain factory to the front of the list.
* Added new bond relaxation models for reactive viscoelasticity (relaxation-exp-dist-user, relaxation-Park-dist-user, relaxation-power-dist-user). Fixed reactive viscoelastic materials by making them frame-invariant. Improved method of updating generations during iterative solution process. Fixed strain-dependent relaxation functions to depend on strain only at time of bond breaking. Added plot variables to save strain energy density in strong and weak bonds of reactive and uncoupled reactive viscoelastic materials.
* Updated Theory and User manuals to version 3.5.1
* Fixed initialization of newly introduced Prony bond relaxation function. Modified culling method in reactive viscoelasticity to prevent reduction in maximum number of generations. Added strain threshold for triggering new generation in reactive viscoelasticity.
* Added reduced relaxation function for Prony series (can be used with reactive viscoelastic materials). Added safeguard in calculation of Fung relaxation function to prevent small negative values. Added plot variable for counting number of generations in reactive viscoelastic materials.
* Improved method for culling generations in reactive viscoelastic materials.

===========================================================================

 R E L E A S E   3.5.1   9/28/2021

===========================================================================

* Added "cutback" parameter that controls the reduction factor when using aggressive time stepping. (default is 0.5)
* A bug was fixed in the "kinetic energy density" plot variable. 
* Added domain log variable "volume" for calculating domain volume.
* An issue with tangent evaluation of Mooney-Rivlin and Veronda-Westmann materials was fixed. This fix may improve convergence of nested materials (e.g. visco-elastic, mixtures, etc.) that use these materials as a component. 
* Updated Theory and User Manuals to describe parameter lam0 in fiber-exp-pow, and new material fiber-natural-NH
* Added fiber with natural neo-Hookean response. Modified fiber-exp-pow to allow tensile response to engage at any stretch ratio greater than unity. Modified parameters alpha and beta of fiber-exp-pow to FEParamDouble.
* Added "DC Octahedral natural strain" as a damage criterion.
* Fixed a bug in closest-point projection algorithm.
* Fixed some issues with restart and added a new version for restart input file that uses the 3.0 format.
* Updated User Manual to reflect specification of plastic flow curve in reactive plasticity and reactive plastic damage materials
* Fixed small bug in newly introduced user-defined plastic flow curve. Changed name of parameter emin to e0 in math plastic flow curve.
* The definition of reactive plastic and reactive plastic damage materials was modified. It now requires the definition of a "flow_curve" property that. This change is incompatible with the previous version so older files will need to be updated. 
* Implemented "PK2 stress" plot variable, which exports the second Piola-Kirchoff stress.
* updated User Manual to use Young's modulus and Poisson's ratio as material parameters for natural neo-Hookean material
* Changed the material parameters of natural neo-Hookean from bulk and shear moduli to Young's modulus and Poisson's ratio.
* Added left stretch tensor as plot and log variable
* Added left Hencky plot and log variables to User Manual
* Added ability to specify element type in shell domain section.
* Modified shell domain classes to allow using secant stress and secant tangent calculations for shell domains.
* Modified symmetry plane constraint to work properly if symmetry plane includes some nodes that belong to a rigid body (such as a rigid interface).
* Changed type strings for Kamensky materials.

===========================================================================

 R E L E A S E   3.5   8/30/2021

===========================================================================

* Implemented new "Kamensky" material, an isotropic Fung-type material from Kamensky, CMAME 2018.
* Added log variable for element volume (variable name "V").
* Fix issue with penalty computation and plot (github issue #30)
* Added ability to output log data for octahedral plastic strain, right stretch tensor components, and right Hencky strain tensor components. Added ability to add plot variables for right stretch tensor and right Hencky strain tensor.
* Fixed bug in FEBioOpt/FEDataSource where node_data variables used as optimization parameters were not being read correctly. Added ability to specify node_data variables as ordinates in parameter optimization.
* Updated reactive plastic damage material to (a) include elastic damage of non-yielding bonds, and (b) keep better track yielded bond fraction in the iterative solution process. 
* Fixed recently introduced bug in the plotting of intact bond fraction in reactive plastic damage materials.
* Added new material "fiber-Kiousis-uncoupled".
* Added "contact potential" contact interface and "mass damping" body load features.
* Removed c1 > 0 restriction from Mooney-Rivlin material.
* Added surface_data and domain_data log features. Added support for using these features in optimization module.
* Added yield flags in reactive plasticity material to allow resetting yielded bond mass fraction to zero during an iterative process.
* Fixed some issues with init and serialize of reactive plastic damage material that were causing problems with optimization.
* Added flip_primary, flip_secondary, shell_bottom_primary and shell_bottom_secondary to sliding-biphasic interfaces (included mixed).
* Changed default format for FEParamMat3ds to be ITEM.
* Made additional changes to allow mapped FEParamMat3ds variables.
* Modified FEEllipsoidalFiberDensityDistribution to accept mappable semi-principal axes for ellipsoid.  Fixed spelling in class name.
* Add ability to map 'mat3s' symmetric 3x3 matrix in MeshData section.
* Updated perm-ref-ortho to use all mappable  material parameters.
* Modified sliding-elastic, sliding-biphasic, sliding-biphasic-mixed to use search_radius as length value instead of scale factor, for consistency with other sliding and tied interfaces.
* Fixed bug in "fluid normal velocity" load where rim pressure was not initialized properly.
* Updated "fluid normal velocity" load to set parabolic velocity distribution to zero only on sections of the rim where the user has prescribed zero fluid velocity.  This change makes it possible to prescribe parabolic velocity profiles on cross-sections with symmetry planes, and on rectangular faces.
* Created linear and nonlinear elastic fluid materials to allow alternating between linear and nonlinear pressure-dilatation models.  Default setting is linear.  Updated fluid-FSI traction and biphasic-FSI traction algorithms to better identify orientation of surface normal of the interface relative to solid elements with fluid-FSI or biphasic-FSI materials.
* Reverted constitutive model for fluid pressure to linear model p = -k*ef where k=bulk modulus, because nonlinear model broke the FSI problems from the published paper. 
* Improved efficiency of calculation of octahedral shear strain. Reactive-plastic damage material now works with erosion tool.
* Added Bingham fluid.
* Renamed some biphasic-FSI plot variables to be consistent with biphasic plot variables. Added missing nonlinear and surface pair constraints in fluid, fluid-FSI, fluid-solutes and multiphasic-FSI solvers.
* Added several new plot variables related to continuous damage formulation. Also added a "mixture stress", which can be used to look at stress of the mixture components.
* Allowing some zeroes on lumped mass matrix for explicit solver (as can be the case if corresponding dof is fixed).
* Added "linear" flag to traction load, similar to pressure load.
* Fixed issue with under-timing model updates.
* Fixed bug in reporting timing info for multistep analyses.
* Added support for shells to explicit solver.
* Fixed issue with initializing contact surfaces for febio 2.0 format.

===========================================================================

 R E L E A S E   3.4   5/17/2021

===========================================================================

* This version has an updated EULA (EULA version 4). This EULA adds a PRIVACY clause that details how and what information the software (i.e. FEBio Studio) communicates with an external server. 
* On Windows, this version was built with a newer version of Visual Studio (Visual Studio 2019). As a result, a new SDK has been released and it is highly recommended to rebuild any plugins against this new version. 
* A bug was fixed for shells that are directly attached to rigid bodies (i.e. shells that share nodes with rigid bodies). 
* The formulation of strain energy density for fiber-pow-linear-uncoupled material was fixed. In addition, a bug was that which produced discontinuous stress and elasticity at transition from toe region to linear region. The user manual was updated to reflect these changes. 
* A bug was fixed in CMakeLists that caused an error on Windows if not using MKL.
* A bug was fixed in the "porosity" element log variable.
* The description of the max_retries control parameter in the user manual was corrected.
* The "reaction forces" plot variable now produces the equivalent nodal reaction forces for all nodes, even constrained nodes (fixed, prescribed, rigid). 
* Chapter on multi-step analysis was added back to user manual and several broken links were fixed. 

===========================================================================

 R E L E A S E   3.3.3   4/20/2021

===========================================================================

* Added "porosity" log variable.
* Added "fluid pressure" surface load as an alternative to prescribing (or fixing) the fluid dilatation. User manual was updated to include description.
* Changed default constitutive model for fluid pressure from p = - K ef to p = K (1/(1+ef)-1), which is valid for finite dilatation.
* Generic math expressions (e.g. as used in the force parameter of nonlinear springs) can now use model parameters in the math expression.
* Added three new interpolation types for load curves: cubic spline, control points, approximation.
* Fixed logic in setting debug mode from febio command prompt.
* Removed dependency on GSL.

===========================================================================

 R E L E A S E   3.3.2   4/6/2021

===========================================================================

* This patch release fixes GSL support in FEBio for all OS. Not all previous builds, including the most recent ones, included support for GSL and consequently could produce incorrect results for certain types of models. For previous builds, materials that require GSL to evaluate the strain energy density, or other quantity, simply returned 0 in the absence of GSL support and did not produce an error message. The complete list of affected materials follows. The list shows the type string of the material, the source code class name, and the function where GSL is needed:   
 - "relaxation-Fung" (FEBondRelaxationFung): relaxation function
 - "damage fiber exp-linear" (FEDamageFiberExpLinear): strain energy density function
 - "coupled trans-iso Mooney-Rivlin" (FECoupledTransIsoMooneyRivlin): strain energy density function
 - "coupled trans-iso Veronda-Westmann" (FECoupledTransIsoVerondaWestmann): strain energy density function
 - "CDF gamma" (FEDamageCDFGamma): evaluation of damage cumulative distribution function (cdf) and damage probability density function (pdf). 
 - "fiber-exp-linear" (FEFiberExpLinear): strain energy density function
 - "uncoupled fiber-exp-linear" (FEUncoupledFiberExpLinear): strain energy density function

In addition, the following materials returned 0 for the strain energy density, and will now throw an error instead if the model attempts to evaluate the strain-energy function. 

 - "viscoelastic" (FEViscoElasticMaterial)
 - "uncoupled viscoelastic" (FEUncoupledViscoElasticMaterial)

* A bug was fixed in the log feature that wrote all log data to the same output file. 

===========================================================================

 R E L E A S E   3.3.1   4/2/2021

===========================================================================

* A bug was fixed in the SPR projection algorithm. 

===========================================================================

 R E L E A S E   3.3   3/29/2021

===========================================================================

* The data log mechanism was extended to store surface data to the log file (github issue #10).
* A bug was fixed in the enforcement of the concentration penalty in tied-multiphasic contact interface.
* The explicit solver was repaired. It supports row-sum mass lumping (mass_lumping = 1) and Hinton-Rock-Zienkiewicz mass lumping (mass_lumping = 2) for higher order elements.
* Breakpoint strings should now be case insensitive on Linux and macOS.
* A check for NANS in the residual vector was added. If a Nan is detected, an error with node and dof info is printed.
* The performance of the stiffness evaluations of multiphasic models using chemical reactions was improved significantly.
* Loadcurves are now scaled based on the value of point functions that are defined via a load curve.
* A check was added for invalid faces in surface definitions (i.e. faces that are not facets of an element).
* The potfile now stores a status flag for each state. The flag depends on the action that triggered the write.
* The "contact nodal gap" and "contact pressure" plot variables are fixed for "sliding node-on-facet" contact.
* The self_contact flag in "sliding node-on-facet" was removed. Self-contact is now supported in all sliding contact algorithms. To use self-contact, just assign the same surface to the primary and secondary contact surface.
* A bug was fixed regarding prescribed nodal loads in BiphasicSolute and Multiphasic analyses when no solutes are included in the model.
* Added check for duplicate part names.
* Implemented the "defgrad" data generator, which generates a deformation gradient from a nodal-displacement field. This can be used, for instance, in prestrain elastic materials to generate the prestrain gradient. 
* A bug was fixed in "in-situ target stretch" and "prestrain stretch error" related to how the fiber vector was taken into account. 
* A bug was fixed in formatting log data.
* Support for a 13-node pyramid element was implemented.
* Added check for valid material ID in rigid node set.
* An issue was addressed with unloading of plugins at the end of FEBio's execution that was causing a crash on Windows.
* A division by zero issue was fixed in the contact auto-penalty feature.


===========================================================================

 R E L E A S E   3.2   2/5/2021

===========================================================================

* Fixed issue with the "prestrain correction" plot variable. 
* Added node-data objective function, which optimizes for nodal data. 
* Implemented torsional spring. 
* The data filename is now written to the log file, not the data file.
* Elastic materials can evaluate stress via "secant_stress" parameter.(This can be useful for debugging new material implementations). Also renamed "secant" to "secant_tangent", which approximates elatic tangent. 
* Made "value" parameter of initial condition a mapped parameter.
* Implemented a exp-linear damage fiber model.
* Fixed Holzapfel-Gasser-Ogden formulation. Deleted unconstrained (compressible) version of this material.
* Updated the Gasser-Ogden-Holzapfel model to be consistent with ABAQUS formulation.
* Added "HGO unconstrained" material to model the unconstrained (compressible) Holzapfel-Gasser-Ogden material.  All parameters of "Holzapfel-Gasser-Ogden" are now mapped parameters.
* Implemented rigid follower force and moment.
* Fixed miscelleneous issues to improve backward compatibility with 2.5 format.
* Modified projection logic in "sliding-facet-to-facet" contact. Added support for "search_radius" parameter.
* An error is now thrown when data type of a map does not match the parameter's data type to which it is assigned.
* Fixed bug in serialization of linear constraint set.
* Added log output option for stess eigenvectors.
* Implemented new "azimuth constraint", which fixes the angle coordinate of the cylindrical coordinates.
* Introduced plot variables for local fluid load support and effective friction coefficient for biphasic and mixed biphasic contact interfaces.
* Modified method to evaluate fluid load support in sliding biphasic contact by averaging the local fluid load support over the contact area (instead of dividing the fluid force magnitude by the contact force magnitude).
* Made scale parameter of "nodal load" a model parameter.
* Made "phi0" parameter of biphasic, biphasic-solute and triphasic materials a mapped parameter.
* Improved calculation of rotation angle and extraction of rotation vector from quaternion.
* Made active stress parameter of active contraction materials a mapped parameter.
* Made value parameter of FENodalForce a mapped parameter.
* Fixed issue with "pretrain stretch" plot variable.
* Fixed crash when a parameter references invalid map.
* Fixed bugs with element data ordinates in parameter optimization.
* Added shell domain parameter "shell_normal_nodal"
* Allow usage of auto-penalty when both contacting surfaces are rigid materials, as long as non-zero Young's modulus is specified for those rigid materials.
* Added option to set TET4G4 integration rule in MeshDomains.
* Improved performance of initialization of solid-shell interface elements.
* Made "ksi" parameter of "fiber-exp-pow-uncoupled" a mapped parameter.
* Added new "damage fiber exp-linear" material.
* Fixed output of contact gap and contact pressure for the "sliding node-on-facet".
* Added strain energy calculation to discrete elements. Added "discrete strain energy" plot variable.
* Fixed some issues with storing contact plot variables for nodal-integrated contact interfaces.
* Fixed crash when using "prestrain uncoupled elastic".
* Fixed crash when nodal load type is not recognized.

===========================================================================

 R E L E A S E   3.1.0   11/2/2020

===========================================================================

* The xplt format 3 is now used, which adds data on rigid bodies and rigid constraints to the plot file. 

* The "fiber" property was added to the "tendon" material. 

* Some backward compatibility issues were addressed: The deprecated "print_level" parameter is ignored and will not cause FEBio to stop. The deprecated "value" parameter of the prescribed BC is now mapped to the "scale" parameter. 

* An issue was fixed with reading mat_axis element data in MeshData section. 

* The "solid stress" plot variable was added for biphasic, multiphasic, and fluid-FSI materials. 

* The bulk-modulus (k) of uncoupled materials is only taken from the top-level material. This is different from previous FEBio versions, where the specification of the bulk modulus depended on the material. For backward compatibility, febio 2.5 files will still processed in a manner that produces the same behavior as in FEBio 2.10. For the 3.0 files, only top-level bulk moduli are allowed. 

* A bug was fixed that caused a crash when a file was using 9-node quadratic surface elements. 

* Support was added to reading mat3d data from ElementData section. 

* Added support for assigning data maps to F0 parameter of const prestrain gradient. 

===========================================================================

 R E L E A S E   3.0.2   10/5/2020

===========================================================================

* A bug was fixed with the "local" fiber generator option. FEBio was assuming zero-based indices, instead of one-based indices. 

===========================================================================

 R E L E A S E   3.0.1   8/27/2020

===========================================================================

* A bug was fixed with continuous fiber distribution materials that use the Gauss-Kronrod integration rule. 

* A bug was fixed in reading surfaces with quad9 elements. 

===========================================================================

 R E L E A S E   3.0.0   8/24/2020

===========================================================================

* FEBio 3.0 is the first version for which the source code is available on github (https://github.com/febiosoftware). The source code is distributed under the MIT license. 

* FEBio3 defines a new file structure. One of the major changes is that the Geometry section was replaced with a Mesh section, which defines the mesh independent of any physics attributes (i.e. materials), and a MeshDomains section, which maps materials and other parameters to element sets. Please see the FEBio3 user's manual for more information on the new file format. Despite this new format, FEBio3 will continue to read format 2.5 and format 2.0 with few exceptions. Also see the backward compatibility notes below. 

* FEBio3 introduces a new mechanism for defining heterogeneous model parameters. Many parameters can now be made dependent on position and other model parameters via mathematical expressions and parameter maps. This new mechanism is very flexible and works with many material parameters, boundary conditions, and loads. 

* Support for iterative linear solvers was significantly expanded, including some solvers based on Algebraic Multigrid Method (AMG). In addition, a Jacobian-Free-Krylov-Newton method is available as well. Some of these new solvers have shown great performance compared to the default direct solver. However, it must be emphasised that performance is highly problem-dependent and may require tuning of solver parameters. Please see the user manual for details on how to use and configure the iterative solvers. 

* FEBio3 introduces a generalization of "load curves", namely "load controllers". Load controllers essentially control the values of model parameters as a function of time and even as a function of other model parameters. This allows users to use load controllers to create feedback systems (e.g. PID control system). 

* FEBio3 also contains a framework for doing adaptive mesh refinement. The framework is currently still somewhat bare bones, but integrates with the plugin framework and users can develop their own refinement strategies as a plugin.

* Plot variables for "fluid pressure", "fixed charge density" and "osmolarity", which were previously available only for biphasic and multiphasic materials, now provide output for the "Donnan equilibrium" material in a "solid" analysis.

* A plot variable "surface area" has been added to calculate the surface area of a named surface.

* A bug has been fixed in biphasic and multiphasic contact interfaces to properly set free-draining boundary conditions for the portions of contact surfaces which are not currently contacting.

* A "natural neo-Hookean" material has been introduced which uses the natural (Hencky) strain.

* To allow modeling shell domains that form a T-connection, a "shell_normal_nodal" flag has been added to the Control section to use face normals instead of nodal normals. Set "shell_normal_nodal" to 0 (false) when modeling T-connections.

* Added option to evaluate the tangent stiffness matrix of a solid material using a secant method. Set the parameter "secant" to 1 in the material model. This can be useful when developing plugins for new materials and trying to debug (or avoid deriving) the analytical tangent stiffness.

* fluid-FSI domains may now interface with shell domains. Set "shell_bottom" to 1 in "fluid-FSI traction" if the fluid-FSI domain attaches to the bottom of a shell domain.

* Added a new hydraulic permeability material called "perm-exp-iso".

* Added log variables to save relative motion (translation and rotation) of rigid connectors.

* Updated elastodynamics capabilities to use generalize-alpha time integration scheme

* Updated the "fluid-FSI" solver to allow running "fluid" problems.

* Implemented method to save rigid connector forces/moments and relative motion (translation/rotation) to plot file.

* Added "update_penalty" flag in contact interfaces to update the auto-penalty calculation at each iteration.

* Added plot variable "fluid surface pressure" to evaluate the fluid pressure from the nodal dilatation in "fluid" and "fluid-FSI" analyses, on name surfaces.

* Implemented 4-node finite deformation shell elements that employ the EAS (enhanced assumed strain) and ANS (assumed natural strain) methods.

+ test suite:
-------------

* The test suite was updated using the new file format. In addition, some problems may show different convergence stats between febio2.9 and febio3. These difference are mostly due to numerical roundoff errors. Please inform the developers if you notice any major discrepancies between febio2 and febio3. 

+ backward compatibility notes:
-------------------------------

* plugins: The source code has significantly changed and plugins will need to updated. The changes should be fairly minor and revolve mostly around macros that were renamed. Please see the developer's manual for information regarding developing plugins for febio3. 

* Some fiber materials defined a "theta" and "phi" parameter that was used to define the local fiber orientation. For consistency reasons, these parameters are no longer supported. Instead, fiber orientation can be defined using the "fiber" property, or "mat_axis" property. 

<fiber type="angles">
  <theta>0</theta>
  <phi>0</phi>
</fiber

* Some boundary conditions and loads defined a "value" parameter that could be used to define a heterogeneous map. These parameters are no longer supported since another mechanism for defining hetergeneous parameters was implemented in febio3. 




===========================================================================

 R E L E A S E   2.9.0   5/9/2019

===========================================================================

* This is the first version of FEBio that is released under the MIT open source license. This license allows users, including commercial entities, to copy, modify, and redistribute the source code of FEBio, under the conditions set forth by this license. See Copyright-FEBio.txt for more details and contact the developers for any questions.

* Several options were added to the FEBio prompt: "config" for reloading config file, "load" to load a plugin, "unload" to unload a plugin. 

* The "material axes" plot variable was added that allows users to store the material axes (as a 3x3 matrix) to the plot file.

* The "SPR Lagrange strain" plot variable was added that uses the SPR method for evaluating Lagrange strain at the nodes.

* Support for "mat3d" material parameters was added to the MeshData section. 

* The quad4 shells now use the 3-field formulation by default. 

* The "porous neo-Hookean" material was added to model a porous solid whose stiffness becomes infinite as the pores collapse to zero volume. Porosity can be defined in the material or will be extracted from parent material if it is biphasic/multiphasic. 

* Several issue with the restart feature were fixed, including some issues with adding steps or modifying load curves via a restart input file. 

* Bug was fixed in using FESlidingInterfaceBW with optimization. 

* A new optimization feature was implemented that allows you to define a list of element values that can be used in the objective function of the optimizatsion. 

* Users can now also optimize the material axes parameters of a material. 

* A bug was fixed in evaluation of the stiffness of several rigid connectors, which may improve convergence of models that use rigid connectors.

* A bug was fixed in the evaluation of stresses in continuous fiber distribution uncoupled materials.


===========================================================================

 R E L E A S E   2.8.3   9/26/2018

===========================================================================

* A bug was fixed in FEBio's tensor library that affected the convergence and possibly the accuracy of the PRLig, muscle, and tendon materials. 

* A bug was fixed in the algorithm that inverts surface elements for higher order elements. This affects the DataMap plugin.

===========================================================================

 R E L E A S E   2.8.2   8/17/2018

===========================================================================

* A bug was fixed in the parsing of the ElementData section, which was causing problems with reading heterogeneous parameters.

* A bug was fixed in reading fiber data from the MeshData section for the 2.5 spec.

===========================================================================

 R E L E A S E   2.8.1   7/25/2018

===========================================================================

* A bug was fixed related to reading the fiber values from  the ElementData section for FEBio spec 2.0.

===========================================================================

 R E L E A S E   2.8.0   7/2/2018

===========================================================================

* A fluid-structure interaction (FSI) solver has been implemented, which allows deformation of the fluid mesh in computational fluid dynamics analyses, as well as interactions with surrounding solid domains.  The module for FSI analyses is "fluid-FSI" and the material type for fluid domains that deform is "fluid-FSI".  Boundary conditinos and surface loads applicable to fluid analyses have been updated to account for deforming boundary surfaces.

* Domains can now be assigned to body loads. In order to do this, add the "elem_set" attribute to the body load definition. 
<body_load type="const" elem_set="set01"/>
Here, set01 is an element set defined in the Geometry section of the input file.

* Two flags were added to the sliding-elastic contact interface that allow users to flip the normals of the master and slave surfaces. In the contact definition, set flip_master to 1 to invert the normals on the master surface. Similarly, set flip_slave to 1 to invert the normals on the slave side.

* A new time control parameter was added, named "dtforce", which forces the time stepper to take the maximum time step. The max time step size is given either by the dtmax variable, or the must-point curve, if defined.

* The Biphasic solver now uses non-symmetric stiffness matrices by default.

* Fixed bug in the evaluation of math expressions for the non-const body force load.

* The FEBioHeat module has been removed from FEBio, but is still available as a plugin. Please see the plugin download page. 

* performance improvements: omp support was added to "sliding facet-on-facet" and the algorithm for allocating the global stiffness matrix was significantly improved. 

* Fixed bug in timer management that was causing inaccurate timings for solvers implemented as plugins. 

* Penta15 elements which are assigned a nearly-incompressible (uncoupled strain energy density) material no longer use the three-field formulation, for consistency with other quadratic elements.

===========================================================================

 R E L E A S E   2.7.1   6/4/2018  

===========================================================================

* This minor update fixes an important bug, related to specifying material axes in the ElementData section (for 2.0 format) or MeshData section (2.5 format) for solid mixtures. 

===========================================================================

 R E L E A S E   2.7.0   4/2/2018  

===========================================================================

* A new computational fluid dynamics solver has been implemented, based on the formulation reported in Ateshian GA, Shim JJ, Maas SA, Weiss JA. "Finite Element Framework for Computational Fluid Dynamics in FEBio.", J Biomech Eng. 2018 Feb 1;140(2).

* The optimization module has been completely revised in order to support more powerful features. The improved "data-fit" model allows users to optimize almost all model input parameters (not just material parameters) against almost all model output parameters by curve fitting the output parameter to a user-defined data curve. The new "target" data model allows users to optimize input parameters in order to reach user-defined values for one or more output parameters. 

* Several new elements were added: A new penta15 element was added, which represents a pentahedral element with quadratic shape functions. A 5-node pyramid element with linear shape functions was added as well.

* FEBio's plugin framework now also supports "solver" plugins, which allow users to create entire new physics modules via the plugin framework. To illustrate this powerful new mechanism, a plugin called FEBioChem was developed that solves the nonlinear reaction-diffusion equations and can be used to model chemical reactions in a non-deforming mixture. This plugin can be downloaded from FEBio's plugin website.  

* A plugin can now also be loaded from the command line using the -import command line option. This feature is useful for loading a plugin from within the IDE (e.g. Visual Studio) without the need for modifying the configuration file. Currently, only one plugin can be loaded this way. (Loading multiple plugins must still be done via the configuration file.)

* Several contact algorithms have been renamed in order to obtain a more consistent naming convention for the various contact algorithms. 
  -- sliding_with_gaps           --> sliding-node-on-facet
  -- facet-to-facet sliding      --> sliding-facet-on-facet
  -- sliding-tension-compression --> sliding-elastic
  -- tied                        --> tied-node-on-facet
  -- facet-to-facet tied         --> tied-facet-on-facet
  -- sliding2                    --> sliding-biphasic
  -- sliding3                    --> sliding-biphasic-solute/sliding-multiphasic

  The old names are considered obsolete but will continue to be supported for the time being. 
  
* The sliding-elastic contact formulation now also supports frictional contact.

* Improvement to update of solid bound molecules in multiphasic analyses.

* A new symmetry plane feature was implemented that allows user to model axisymmetric problem in a more straightforward manner (without the need to create the actual geometry of the symmetry plane.)

* This version introduces new array plot variables, which are convenient for storing arrays of data to the plot file especially when the size of the array is not known in advance but depends on the model input. These new plot variables are now used by many of the solute and solid-bound molecule plot variables (e.g. effective solute concentration). As a result, the plot file that is written by this version of FEBio must be read with the newest version of PostView (version 2.2). 

* A new and more accurate algorithm for calculating the total contact force of the sliding-facet-on-facet contact formulation was implemented.

* The mat_axis parameter is now supported in the MeshData section. It can be defined as a ElementData with the var parameter set to "mat_axis". Then, for each element of a part the "a" and "d" parameters must be defined. 

* Support was added for initial rigid body velocities in the 2.5 format. It is defined in the rigid_body subsection of the Boundary section. Use the tag "initial_velocity" for defining the rigid body's initial velocity and "initial_angular_velocity" for defining its initial angular velocity. 

* Support was added for reading 16-bit (unsigned) RAW images. This is, for instance, used by the FEWarp plugin, which implements an FE based image-registration method. 

* Mathematical expressions can now be used to define surface data in the MeshData section. This data can then be used by most surface loads. This makes it essentially possible to prescribe surface loads via a mathematical expression. 

* A rigid cable feature was introduced that allows users to connect several rigid bodies via a cable. The cable can then be placed under tension by prescribing the cable force.

* A new shell formulation has been introduced in FEBio, which accommodates elastic, biphasic and multiphasic materials.  These shells (tri3, tri6, quad4, quad8) now represent the default formulation; they supersede the formulation used in FEBio 2.6.2.  Boundary conditions for these shells include (x,y,z) displacements of nodes on the front face, and (sx,sy,sz) displacements of nodes on the back face of the shell. For biphasic shells, front and back face effective fluid pressure (p, q) may be prescribed.  For multiphasic shells, front and back face effective solute concentrations (c, d) may be prescribed.  These shells can be attached to solid elements or sandwiched between solid elements. The old shell formulation may still be used, by specifying <shell_formulation>0</shell_formulation> in the <Control> section.  The old shell formulation uses boundary conditions (x,y,z) for the displacements of nodes on the shell mid-surface, and (u,v,w) as components of directors (rotations) at those nodes.

===========================================================================

 R E L E A S E   2.6.2   3/28/2017  

===========================================================================

BUG FIXED AND IMPROVEMENTS
--------------------------

1. A performance issue was fixed in the assembly of unsymmetric matrices. This fix may result in a signficant reduction of runtime for problems requiring a nonsymmetric stiffness matrix. Speedups of a factor 5x to 10x have been observed for these types of problems.

2. A bug was fixed in the second derivatives of shape functions for tet10.

3. The  EFD material was modified to evaluate stresses and tangent more efficiently.

4. A bug was fixed in the tangent of the Ogden material. 

5. A more efficient method was implemented for calculating the total contact force for the sliding2 contact interface.

6. A more efficient method was implemented for evaluating the contact area for sliding2 and sliding-biphasic.

7. Several issues were addressed with the restart feature.

8. when max_retries is set to zero, serialization is not done.

9. A bug was fixed in solvent supply "Starling" to properly read the parameters qc and qv.

10. More efficient implementation for rigid body forces.

NEW FEATURES:
-------------

1. A new shell formulation was implemented that adds several new capabilities to shells, namely compressive loading of shells, attaching shells to solid elements, and placing shells between solid elements. In this formulation, "rotation" degrees of freedom represent nodal displacements on the shell bottom surface.  Since this formulation defines the top surface as the reference surface, slight difference can be noticed in convergence and results. The old formulation is still available, but now requires a special control flag. Set <shell_formulation> to 0 in the <Control> section to recover the old formulation.

2. Quadratic shell elements have been implemented: quad8, quad9, tri6

3. A tied multiphasic contact interface has been added to enforce continuity of solid displacements, effective fluid pressure, and effective solute concentrations at a tied interface between multiphasic materials.

4. A 20-node cubic tetrahedral element was implemented (tet20). This element has 4 corner nodes, 2 nodes on each edge, and one node at the center of each face. 

5. The parameter update_penalty was added to the sliding-multiphasic interface to recalculate auto-penalty at the start of each time step.

6. Two new chemical reactions were added: "mass-action-forward-effective", and "mass-action-reversible-effective".  These reactions employ the effective solute concentrations instead of actual solute concentrations, which will make a difference when the multiphasic mixture has non-zero fixed-charge density and charged solutes.

7. The 2.5 file format now supports Part and Instance keywords for defining multiple-parts model. The Part keyword defines a part, including nodes, elements, nodesets, surfaces, etc. Then, the Instance keyword can be used to instantiate a particular part. The same part can be instantiated multiple times. 

8. Added plot_range, and plot_zero_state control parameters. The plot_range parameter specifies a range and only time steps that fall within this range will be stored to the plot file. The plot_zero_state flag is used to indicate whether to store the "zero" (i.e. reference) state even when it doesn't fall inside the plot range.

9. Added reform_each_time_step control parameter. Setting this to 0 will prevent the quasi-Newton solver from reforming the stiffness matrix at the start of each time step. This may result in a significant reduction of runtime for quasi-linear problems that have many time steps, such as transient or dynamic analyses with small strains. 

10. Added "rigid sliding" contact interface, which generalizes the rigid wall feature. Now, any rigid surface can be used as part of the rigid sliding contact interface. Rigid surfaces have to be defined in the new "Rigid" section in the input file.

11. Inhomogeneous linear constraints are now supported.

12. Added "rigid lock" constraint to constrain two rigid bodies to move together.

13. Added optional force and moment damping for revolute and prismatic joints to minimize oscillations during dynamic analyses. 

===========================================================================

 R E L E A S E   2.5.2    11/17/2016

===========================================================================

1. A bug was fixed in exporting element data to the log file.

2. An issue was fixed with the definition of fixed bcs in the 2.0 format.

===========================================================================

 R E L E A S E   2.5.0

===========================================================================

A. Features and Bug Fixes
-------------------------

1. FEBio 2.5 defines a new format specification (FEBio format specification version 2.5) which improves support for using set definitions. It also replaces the ElementData section, which used to be defined in the Geometry section, with the more versatile MeshData section. This new section not only allows users to define element data, but also surface data and nodal data. This data can then be mapped to boundary conditions and loads to create spatically varying data fields. The Discrete section is also reformatted so that large discrete element sets can be defined more concisely. 

2. SPR stresses now support HEX20 and HEX27 elements. The SPR stresses are more accurately recovered stressed and should be the preferred stress measures for higher order elements. 

3. Several improvements and bug fixes have been made for first order computational homogenization problems. Users can now also define "probes" which allow the deformation of the RVE models to be tracked.

4. Higher order shell elements can now be defined. A quad8 shell defines an eight node quadratic quadrilateral shell. A tri6 shell defines a six node quadratic triangular shell element.  These shell elements overcome the locking behavior characteristic of quad4 and tri3 shells.  They should be used as the preferred choice. Shell rotation degrees of freedom refer to the director degrees of freedom, which is a vector whose length is the shell thickness in the current configuration, and whose direction represents the rotation degrees of freedom.

5. A coupled and uncoupled formulation of the Gent hyperelastic material have been implemented.

6. The reported timings at the end of the log file are broken down by the different solution steps. The reported timings are now more accurate (Windows only).

7. The Broyden solution strategy was implemented and can be used as an alternative quasi-newton solver to the standard BFGS method. The Brodyden method performs much better than BFGS for non-symmetric problems (e.g. biphasic, multiphasic).

8. Several preconditioners for the FGMRES iterative solver have been implemented. 

B. Changes to the plugin framework
------------------------------------

1. The FE_SDK_VERSION was increased to 2.5.0. This implies that plugins need to be rebuild before they can be used with the 2.5 version of FEBio. Some minor changes to the plugin may also be necessary. 

2. Material plugins that implement the Init function must now return a bool:

bool MyMaterial::Init()
{
	if (something is wrong) return false;
	else return true;
}

3. Plot variables now use the general FEDataStream class for storing data.

bool MyPlotVariable::Save(FEDomain& dom, FEDataStream& a)
{
	for (int i=0; i<dom.Elements(); ++i)
	{
		mat3ds s = dom.TaxReturnValue(2016);
		a << s;
	}
	return true;
}

4. The PluginNumClasses funcion is no longer required. If it is not defined, FEBio will keep calling the PluginGetFactory until it returns null. 

===========================================================================

 R E L E A S E   2.4.1  12/11/2015

===========================================================================

1. BUG FIX: Optimization
----------------------------------------------------------------
Fixed bug in FEMaterial::GetParameter for optimization problems.

===========================================================================

 R E L E A S E   2.4  9/25/2015

===========================================================================

1. FEATURE: new rigid body solver
---------------------------------
A new rigid body update algorithm was implemented that fixes some issues with the 
previous implementation. The new solver is now used automatically so users don't need
to do anything special. If for some reason the old solver is still needed, it is
still available by setting the Module tag to solid_old in the FEBio input file.

<Module type="solid_old"/>


2. FEATURE: rigid connectors
-----------------------------
Nonlinear constraints have been implemented to connect rigid bodies
with joints (rigid joints) or springs and dampers (rigid connectors).
Rigid joints include revolute (hinge), prismatic (slider),
cylindrical, planar and spherical joints. The degrees of freedom of
rigid joints may be optionally prescribed using load curves.  Reaction forces and moments
at these rigid connectors may be saved to the logfile using a new
rigid_connector_data class. 

3. FEATURE: Damage materials and damage criteria
----------------------------------------
A new elastic damage model has been implemented to describe damage in
any of the elastic materials defined in FEBio, using a reactive
framework where the damage variable D represents the fraction of bonds
in that material that have broken.  This damage material requires the specification of
an elastic material, a damage criterion (a function of state) that governs damage
initiation and progression, and a cumulative density function that describes the
probability of damage at a particular value of the damage criterion.
This damage model may be used within a solid mixture to describe heterogeneous and
anisotropic damage responses.

4. FEATURE: Biphasic and multiphasic tangents diagnostics
-----------------------------------------------
Tangent diagnostics have been introduced for the biphasic and
multiphasic solvers. These can be used to validate the analytical
expressions for the tangents against numerical approximations.

5. FEATURE: Plot field filters and alias
-------------------------------
Some plot fields support filters that can be used for disambiguation. For example,
the solute concentration can now be stored using the following tag.

<var type="solute concentration['sol1']"/>

The filter is entered between square brackets. For this plot variable, the 
filter denotes the name of the solute (defined in the Globals section). If the
filter is a string (like in this example), it is entered between quote marks. 

An alias can be defined for a plot file variable by appending the type definition
with an equal sign an the alias name. For instance,

<var type="solute concentration['sol1']=sol1 concentration"/>

Post processors (such as PostView) can use the alias as an alternative for
displaying the field variable name.

6. FEATURE: Callback plugins
-------------------
A new plugin type is supported termed callback plugins. Callbacks are special
functions that are called by FEBio at specific points during the initialzation
and solution phase and are a convenient mechanism for interacting with FEBio.
FEBio uses callbacks for updating the window title and to show progress. Other
applications of callbacks can be the extraction of information during the 
nonlinear solution iterations. Via callback plugins, a plugin can now also define
callback functions.

7. FEATURE: Initial condition plugins
-------------------------------------
New initial conditions can now also be defined in plugins. These initial conditions
can be used inside multi-step analysis. Special initial conditions can be defined
to transfer data between steps in a multi-step analysis or initialize variables that
are not used in previous analysis steps (e.g. when combining static and dynamic
analyses in a multi-step analysis).


8. FEATURE: Fixed BC's in multi-step analyses
------------------------------------
Previously, fixed boundary conditions can only be defined at the model level and thus
persisted throughout the entire simulation. Now, they can be defined inside the Boundary
sections of Steps in a multi-step analysis (as prescribed boundary conditions).

9. FEATURE: Simplifications for material plugins
---------------------------------------
There are two new constructions supported for material plugins that can make creating
material plugins easier. First, there is automatic parameter checking which may eliminate
the need for defining the FEMaterial::Init() function. This solves the problem that 
errors can only be reported from the Init() function by throwing exceptions. However, it is not
always safe to throw exceptions from within a plugin so automatic parameter checking
is the preferred way for validating the value range. Second, material classes that define
properties no longer need to define the special functions for defining the material properties.
Instead a template class FEPropertyT can now be used to define material properties. 

10. FEATURE: Fiber with toe-linear response
---------------------------------------------------------------
A new fiber constitutive model has been introduced to describe a toe
region with a power law, followed by a linear region.  This model is
available as a stand-alone fiber model, or as part of a continuous
fiber distribution.

 11. BUG FIX: stiffness matrix for (bi/tri/multi)-phasic problems
---------------------------------------------------------------
The linearization of the solid matrix velocity in biphasic,
biphasic-solute, triphasic and multiphasic domains has been modified
to correctly reflect the time-discretization used for evaluating the
solid velocity from the solid displacement.  These changes should
slightly improve the convergence characteristics of the corresponding solvers.

===========================================================================

 R E L E A S E   2.3  5/28/2015

===========================================================================

1. FEATURE: Pressure Boundary Load
---------------------------------------
The pressure boundary load now implements a non-symmetric stiffness matrix in addition to the symmetric
formulation. Although the symmetric formulation often results in good convergence behavior, it is not
consistent with the pressure residual unless the boundary of the pressure load surface is constrained.
It this latter condition is not satisfied, the consistent non-symmetric formulation can result in better
convergence behavior. To use the non-symmetric formulation, add the following to the pressure load definition.

<symmetric_stiffness>1</symmetric_stiffness>

2. FEATURE: Element, Surface and Node Sets
------------------------------------------
Elements sets, surface, and node sets can now be defined in the input file. These can be used to define
boundary conditions, loads, and contact definitions more concisely. See sections 3.8.4 of the FEBio user's
manual and following for an in-depth discussion.

3. FEATURE: Parameters Section
------------------------------
A new Parameters section was added to FEBio file format, where users can define parameters that can be used
in most variable definitions. Parameters are defined by name/value pairs in the Parameters section.

<Parameters>
  <param name="var1">1.0</param>
</Parameter>

Then, parameters can be used as the values of most xml tags by preceding the parameter name with the '@' symbol. 

<material id="1" type="neo-Hookean">
  <E>@var</E>
</material>

4. FEATURE: Include Section
---------------------------
Added new Include section to the FEBio file format, which will include another .feb file verbatim. This can
be used (in addition to the "from" attribute) to split the model definition across multiple files.

5. FEATURE: New Reaction Rate
-----------------------------
A new reaction rate was implemented where the reaction rate is proportional to exponential of strain energy density.

6. FEATURE: Vector Load Curve
-----------------------------
A loadcurve can now be defined for vector parameters. The loadcurve will scale the vector.

7. FEATURE: Improved Contact Detection
--------------------------------------
Improved contact detection for several contact implementations (sliding_with_gaps, facet-to-facet sliding, tied,
facet-to-facet tied, sticky). Certain special cases in the contact projection are now handled correctly. This
results in fewer contact detection failures which could cause stability issues in some contact problems.

8. FEATURE: Volume Constraint
-----------------------------
A volume constraint is added that can be used to preserve the volume of an enclosed space. This could be used to
model the containment of an incompressible fluid inside a solid.

9. FEATURE: Point-to-Point Constraint
-------------------------------------
A point-to-point distance constraint was implemented which enforces a constant distance between two points.

10. FEATURE: Conewise Materials
-------------------------------
Two new materials have been introduced to model Conewise Linear Elastic solids (cubic and orthotropic symmetry):
"cubic CLE" and "orthotropic CLE".

11. FEATURE: Contact Node Relocation
------------------------------------
Support was added for node relocation on initial contact for all contact interfaces. This feature forces nodes
that have an initial penetration to lie on the contact surface. To use this feature add <node_reloc>1</node_reloc>
to the contact definition.

12. FEATURE: Augmentation Load Curve
------------------------------------
The augmentation flag of most contact interfaces now accepts a loadcurve attribute which can be used to control
when augmentations are performed. This can be used for instance to enforce augmentation only on the last time step.

13. FEATURE: Negative Jacobian Output
-------------------------------------
Output of negative Jacobians can now be controlled via a flag in the configuration file. Set the
<output_negative_jacobians> flag to 0 to turn off printing of all the negative jacobians. (By default, FEBio
prints all the negative Jacobians). When set to 0 FEBio will only print a single warning when the time step
has to restart due to negative Jacobians.

14. FEATURE: Retry after NANs
-----------------------------
FEBio will now retry the time step when NANs are encountered. (Previously, FEBio simply terminated.)

15. FEATURE: Updated Sticky Interface
-------------------------------------
The sticky interface (a variation of tied which allows for initial separation) now has two new parameters:
the <max_traction> parameter can be used to release the tie when the normal traction exceeds this value.
The <snap> parameter sets an initial distance of penetration before the slave node is tied to the master surface. 

16. FEATURE: Euler-Lagrange Strain Output
-----------------------------------------
A new output variable was added to output the Euler-Lagrange strain. Add <var type="Lagrange strain"/> to the
plotfile section to output the Lagrange strain directly to the plotfile. 

17. FEATURE: Constraints Repeated in Multiple Steps
---------------------------------------------------
Constraints can now be repeated in multiple steps. This can be useful when a constraint has to persist across
multiple steps. Assuming a constraint was defined in some step,

<constraint name="my_constraint" type="volume">
 ...
</constraint>

to repeat the constraint in a subsequent step, simply reference it by name:
<constraint name="my_constraint"/>

18. FEATURE: Break Points
-------------------------
Break-points can be defined which will pause the run at the specified time and show the FEBio prompt. This can
be used for debugging application after a certain time has reached. To define a break-point, add the break
command line option followed by the time value after which FEBio will pause. E.g.

febio2 i input.feb break 0.5

This will pause FEBio after time 0.5 has been reached. 

19. FEATURE: New Output Level
-----------------------------
- A new output_level flag is implemented that controls the frequency of writing log data to file. Add it to
the Control section of the input file.

<output_level>OUTPUT_MAJOR_ITRS</output_level>

The possible values are:
- OUTPUT_NEVER: Don't output anything
- OUTPUT_MAJOR_ITRS: Output at the converged time step solutions (default)
- OUTPUT_MUST_POINTS: Only output at must points
- OUTPUT_FINAL: Only output final converged solution.

20. FEATURE: Prescribed Active Contraction Materials
----------------------------------------------------
Six new materials have been introduced to model prescribed active contraction: "prescribed uniaxial active
contraction", "uncoupled prescribed uniaxial active contraction", "prescribed trans iso active contraction",
"uncoupled prescribed trans iso active contraction", "prescribed isotropic active contraction", and
"uncoupled prescribed isotropic active contraction".

21. FEATURE: New Viscoelastic Material Classes
----------------------------------------------
Two new classes of viscoelastic materials have been introduced: "reactive viscoelastic" and "uncoupled
reactive viscoelastic" which may be used to model quasi-linear and nonlinear viscoelasticity.

22. FEATURE: Local Coordinate Systems in Multigeneration Materials
------------------------------------------------------------------
- The "multigeneration" material has been updated to pass local coordinate systems down from parent to
children materials.

23. FEATURE: New Continuous Fiber Distribution Classes
------------------------------------------------------
Introduced two new classes of continuous fiber distributions: "continuous fiber distribution" and
"continuous fiber distribution uncoupled".  These materials provide a variety of fiber constitutive models,
fiber distribution densities (2D and 3D), and integration schemes.

24. FEATURE: Contact Gap and Traction Output for Periodic Boundary Conditions
-----------------------------------------------------------------------------
Periodic boundary conditions now also output the contact gap and contact traction. (The contact gap is the
deviation from periodicity). 

1. BUG FIX: Restart Feature
---------------------------
Several issues with the restart feature were fixed.

2. BUG FIX: Augmented Lagrangian for Incompressibility
------------------------------------------------------
Augmented Lagrangian formulation for incompressibility is fixed. 

3. BUG FIX: Contact Traction Export
-----------------------------------
A bug was fixed in the export of contact tractions of tied interface.

4. BUG FIX: Multi-Step Constraints
----------------------------------
Several issues were fixed with using constraints in multi-step analyses.

===========================================================================

 R E L E A S E   2.2  12/23/2014

===========================================================================

1. FEATURE: Tri6 Element Shape Functions
-----------------------------------------
Implemented modified shape functions for tri6 elements.

2. FEATURE: Gasser, Ogden, Holzapfel material
----------------------------------------------
Added a compressible version of FEGasserOgdenHolzapfel material.

3. FEATURE: Damage Plotting for Multigeneration Materials
---------------------------------------------------------
Added plotting of damage for multigeneration materials.

4. FEATURE: Fiber Exp Linear Material
-------------------------------------
Added coupled and uncoupled fiber-exp-linear material.

5. FEATURE: Reactive Viscoelasticity Material
---------------------------------------------
Added coupled and uncoupled reactive viscoelasticity materials.

6. FEATURE: Ramp Rigid Body Force
---------------------------------
Implemented the "ramp" rigid body force which ramps the force from its current
value to the desired value. This can be used to switch between displacement and
load control in a multi-step analysis.

7. FEATURE: Must-point Repeat Extend
------------------------------------
Must-point loadcurves now work with repeat extend type.

8. FEATURE: Tied Interface Gap for Shells
-----------------------------------------
Tied interface now takes initial gap into account for shells (only on slave side).

9. FEATURE: Quad9 Surfaces
--------------------------
Implemented FE_QUAD9 surface element.

10. FEATURE: Hex27 Element
--------------------------
Implemented hex27 element.

11. FEATURE: NANS in Convergence Norms
--------------------------------------
Checks for NANS in the convergence norms is now always done. When a NAN is detected, the time step is retried.

12. FEATURE: Self-Contact
-------------------------
Added support for self-contact in FESlidingInterface.

13. FEATURE: Osmotic Virial Expansion Material
----------------------------------------------
Added new FEOsmoticVirialExpansion material.  Added bond relaxation functions for reactive viscoelastic
materials. Updated FEElasticMultigeneration to improve nesting of nested materials. Updated
FEFiberIntegrationGaussKronrod.  Updated FEReactiveViscoelastic material.

14. FEATURE: Damage Materials
-----------------------------
Implemented FEDamageMaterial and FEDamageMaterialUC to model damage in any FEElasticMaterial and
FEUncoupledMaterial.  FEDamageCriterion and FEDamageCriterionUC are parent classes to a variety of
damage criteria.  FEDamageCDF is a parent material to a variety of cumulative distribution functions
that relate the damage to the damage criterion. 
The existing FEDamageMaterialPoint class was moved to its own file.

15. FEATURE: Strain Energy Density
----------------------------------
Introduced FEStrainEnergyDensity function in FEElasticMaterial and FEDevStrainEnergyDensity in
FEUncoupledMaterial classes.  Implemented analytical expression for the calculation of the strain energy
density in almost all the materials, except a few for which documentation is not available.
Fixed bug in the calculation of the Tangent and Stress in FELinearOrthtropic and FELinearTransIso.
Added link to GNU Scientific Library (http://www.gnu.org/software/gsl/) for the evaluation of special functions
(namely, the exponential integral, for calculating strain energy density of fibers in FETransIsoMooneyRivlin
and related materials). Use -DHAVE_GSL to compile and link with this library.

16. FEATURE: Initial Temperature
--------------------------------
Added support for initial temperatures.

17. FEATURE: Reaction Rate Nims
-------------------------------
Added FEReactionRateNims class for reaction rates.

18. FEATURE: Continuous Fiber Distribution Material
-------------------------------------------------------------
Added uncoupled continuous fiber distribution material with all contingent material functions.
Updated continuous fiber distribution models by adding two additional fiber integration schemes
(Gauss-Kronrod and Triangular).  Fixed bug in the general scheme for continuous fiber distributions
which prevented proper running on multiple threads. Removed obsolete FEEFD model (which had never been
documented). Added the ability to define a local orientation for each continuous fiber distribution.

1. BUG FIX: Tri6 and Tri7 Projection Algortithms
------------------------------------------------
Fixed bug in projection algorithms for tri6 and tri7.

2. BUG FIX: Hex27 Contact
-------------------------
Fixed problems with hex27  contact.

3. BUG FIX: Serialization
-------------------------
Fixed serialization in several materials.

4. BUG FIX: Multistep Pressure Stiffness
----------------------------------------
Fixed bug in pressure stiffness evaluation for multistep problems.

5. BUG FIX: Invalid Rigid Body
------------------------------
Added check for invalid rigid body reference in rigid contact section. Made sure that a model with zero
equations doesn't crash FEBio.

6. BUG FIX: Quadratic Quads
---------------------------
Fixed bug in xplt format related to storage of quadratic quads (now version 0.4). Added support for projection
on quad8 facets and implemented project_to_nodes for this element.

7. BUG FIX: Concentration DOFs
------------------------------
Fixed bug in parsing fixed concentration dofs.

===========================================================================

 R E L E A S E   2.1  7/30/2014

===========================================================================

1. FEATURE: Rotation Matrix
---------------------------
Added method for calculating rotation matrix from quaternion. Added support for exporting rigid body rotation matrix to log file.

2. FEATURE: Coupled Materials
-----------------------------
Added coupled Mooney-Rivlin and coupled Veronda-Westmann materials. Fixed problem with coupled trans-iso material.

3. FEATURE: Newmark Integration
-------------------------------
Implemented general Newmark integration for dynamic analyses.

4. FEATURE: Plugin Error Code
-----------------------------
FEBioPlugin::Load now returns an error code that can be used to identify if and why the plugin failed to load.

5. FEATURE: Plotfile Compression
--------------------------------
Implemented compression for plot files.

6. FEATURE: New Prompt Paradigm
-------------------------------
Given no command line arguments, return to prompt after run/error.

7. FEATURE: Rigid Body Dynamics
-------------------------------
Implemented rigid body dynamics, using Puso 2002 and Simo and Wong 1991 algorithms.  Modified update of rotation degrees of freedom to use Cayley transform.

8. FEATURE: Euler Angles
------------------------
Added function to calculate Euler angles from quaternion. Added Euler angle plot variable which plots Euler angles for rigid bodies.

9. BUG FIX: Rigid Joint
-----------------------
Fixed bug in rigid joint force and stiffness. 

10. BUG FIX: OpenMP
------------------
Fixed several openmp directives. 

11. BUG FIX: Serialization
--------------------------
Fixed serialization in viscoelastic material and FEElasticMixture. 

===========================================================================

 R E L E A S E   2.0  5/2/2014

===========================================================================

1. FEATURE: Plugins
-------------------
A plugin mechanism has been added for FEBio. Plugins are dynamic libraries which extend the capabilities of FEBio at runtime without the need to recompile the entire source code. This offers the user a powerful mechanism for extending the default feature set of FEBio with little effort.  This has involved a major restructuring of the code.

2. FEATURE: OpenMP
------------------
OpenMP directives have been added to speed up several sections of the code. Users can expect improved performance and reduced runtimes for many areas of applications. Problem areas that rely on complex material formulations seem to benefit greatly from this new capability (e.g. bi- and multiphasic, EFD type materials, homogenization, etc.).

3. FEATURE: New File format specitication
-----------------------------------------
FEBio 2.0 supports the new FEBio file format specification 2.0. This new format adds several new features including the ability to add surfaces and nodesets which can be referenced in the boundary conditions that use them. See the FEBio User's Manual for details regarding this format. The older format (version 1.2) is still supported but considered deprecated.

4. BUG FIX: Restart
-------------------
Fixed several bugs in the (cold) restart feature. This feature allows users to restart the code from a dump file, which is a file generated at the last converged state of a previous run. 

===========================================================================

 R E L E A S E   1.8.0  10/25/2013

===========================================================================

1. FEATURE: Chemical Reactions
------------------------------
Chemical reactions may be modeled within a multiphasic mixture.

2. FEATURE: Huiskes and Carter-Hayes Materials Modifications
------------------------------------------------------------
Changed names of constant and Huiskes reaction rates to be more descriptive.
Modified Carter-Hayes list of parameters.

3. FEATURE: SPR Projection
--------------------------
Implemented the Superconvergent Patch Recovery stress recovery algorithm.

4. FEATURE: Levenberg-Marquardt Methods
---------------------------------------
Allow users to choose between the older and the new Lourakis
Levenberg-Marquardt methods.

===========================================================================

 R E L E A S E   1.7.1  9/4/2013

===========================================================================

1. FEATURE: Reset Diagnostic Tool
---------------------------------
Added reset diagnostic tool.

2. BUG: Reset
----------------
Fixed some problems related to the reset feature.

===========================================================================

 R E L E A S E   1.7.0  6/25/2013

===========================================================================

1. FEATURE: Spherical Fiber Distribution exponential term
---------------------------------------------------------
Extended FESphericalFiberDistribution fiber model to include exponential term.

2. FEATURE: Lourakis Levmar optimization
----------------------------------------
Implemented the Lourakis Levenberg-Marquardt method for parameter optimization.
Implemented support for box and linear constraints and for reading measurement
data from a text file.
http://users.ics.forth.gr/~lourakis/levmar/

3. FEATURE: Gauss-points reported as one-based
----------------------------------------------
Gauss-points for negative jacobians are now reported as one-based.

4. FEATURE: Time for non-const body forces
------------------------------------------
Added time as a variable for non-const body forces.

5. FEATURE: Tied Contact and Tri6 elements
------------------------------------------
Fixed tied interface to work with quadratic tri6 elements.

6. FEATURE: Uncoupled Active Contraction material
-------------------------------------------------
Implemented new uncoupled active contraction material for use in solid mixtures.

7. BUG: Tied Contact
--------------------
Fixed bug in stiffness matrix for tied contact.

8. BUG: Fiber material
----------------------
Fixed bug in fiber material.

===========================================================================

 R E L E A S E   1.6.1  5/1/2013

===========================================================================

1. FEATURE: Log File variable "T"
---------------------------------
Added temperature log file variable ("T")

1. BUG: Active Contraction
--------------------------
Fixed definitions of active contraction parameters.

2. BUG: Node Data Record
------------------------
Fixed bug in node data record.

3. BUG: Heat Solver log data
----------------------------
Fixed problem in exporting log data for heat solver.

===========================================================================

 R E L E A S E   1.6.0  4/2/2013

===========================================================================

1. FEATURE: Contact for 10-noded quadratic tetrahedron
------------------------------------------------------
Implemented tri6 contact for sliding2, sliding3, sliding-tension-compression and
tied-biphasic contact.

2. FEATURE: Integration rules for 10-noded quadratic tetrahedron
----------------------------------------------------------------
Implemented 7-point integration rule for tri6 elements and 8-node integration rule
for tet10 elements.  Implemented 7-point Gauss-Lobatto rule for tri6 elements and the
11-node Lobatto rule for tet10 elements.

3. FEATURE: 20-node hex and 8-node quad elements
------------------------------------------------
Implemented 20-node hex and 8-node quad quadratic elements.  Added nodal projection
algorithm for 20-node hex element.

4. FEATURE: Gap output
----------------------
Revised gap output in sliding2, sliding3 and sliding-tension-compression to save gap
only inside contact region and zero outside.

5. FEATURE: Multi-step contact
------------------------------
Contact interfaces can now be used with multi-step analyses.

6. FEATURE: Superconvergent Patch Recovery
------------------------------------------
Added SPR stress plot field.  Added condition number criteria for the SPR stress.

7. FEATURE: Additional output fields for contact surfaces
---------------------------------------------------------
Added contact force, fluid force, and pressure gap output for contact surfaces.

8. FEATURE: Multiphasic sliding contact
---------------------------------------
Implemented multiphasic sliding contact.  Allows specification of multiple ambient concentrations.

9. FEATURE: Solvent supply and Starling equation
------------------------------------------------
Implemented solvent supply in biphasic and multiphasic materials and created constitutive
model for Starling equation.

10. FEATURE: Virial Expansion material
--------------------------------------
Added Virial Expansion material.

11. FEATURE: Self-contact for sliding_with_gaps
-----------------------------------------------
Implemented a self-contact algorithm for sliding_with_gaps.

12. FEATURE: febio_spec version 1.3
-----------------------------------
Implemented support for febio_spec version 1.3.

13. FEATURE: Heat Transfer
--------------------------
Added heat sources.  Implemented convective heat flux. Added heat flux plot variable.

14. FEATURE: Reset() for Biphasic, Triphasic and Multiphasic
------------------------------------------------------------
Added Reset() function to FEBiphasicSoluteDomain, FETriphasicDomain and FEMultiphasicDomain.

15. FEATURE: Parameter optimization
-----------------------------------------------
Added ability to specify multiphasic parameters for optimization.  Added ability to
specify optimization parameters for biphasic-solute and triphasic materials.
Added ability to control logfile and screen output during parameter optimization via
<log_level> option in optimization file.

16. BUG: Tangent stiffness
--------------------------
Fixed bug in calculation of tangent stiffness for uncoupled materials in FEEFDUncoupled,
FEFungOrthotropic, FEFiberExpPowUncoupled. Simplified code for FESFDMooneyRivlin,
FEEFDVerondaWestmann, FEEFDMooneyRivlin to use corrected FEEFDUncoupled and new material
FESFDUncoupled. Simplified tangent calculation in FEMooneyRivlin.

17. BUG: Referential Permeability tangent matrix
------------------------------------------------
Fixed bug in referential permeability tangent matrix.


===========================================================================

 R E L E A S E   1.5.2

===========================================================================

1. FEATURE: Multiphasic materials
---------------------------------
Multiphasic materials have been implemented in FEBio.  Multiphasic materials may
be used to model the transport of a solvent and any number of neutral or charged
solutes; biphasic-solute and triphasic mixtures may be analyzed as special cases
of a multiphasic mixture.


2. FEATURE: shell strain in xplt format
---------------------------------------
Shell strains can now be stored in the new xplt output format. To incorporate
shell strains, add the following to the plotfile section

<var type="shell strain"/>

Shell strains are averaged over the element and only the averaged strain is stored
in the plot file.


3. FEATURE: 10-noded quadratic tetrahedron
------------------------------------------
A quadratic 10-noded tetrahedral element has been implemented in FEBio. The element
is available for all solid domains (solid, biphasic, multi-phasic, etc) and also
work with the sliding contact interfaces (sliding_with_gaps, facet-to-facet sliding).
The element defines four corner nodes and six edge midpoints. The higher order element
allows for more accurate predictions with fewer elements. The elements are defined
using the tet10 tag.

<tet10>1,2,3,4,5,6,7,8,9,10</tet10>

The first four nodes are the corner nodes, the next six nodes define the edge midpoints.


4. FEATURE: sliding-tension-compression contact
---------------------------------------
A new contact algorithm was implemented that allows for sliding contact while
preventing separation.  This contact interface may be used to model arbitrarily
oriented symmetry planes.  For example, axisymmetric problems may be analyzed
using only a thin wedge representation of the 3D geometry (a single element in the
circumferential direction), requiring fewer elements.


5. FEATURE: Cylindrical fiber generation
----------------------------------------
A new fiber generator was implemented for transversely-isotropic materials that defines
the fiber orientation based on a cylindrical distribution. 


6. FEATURE: minaug and maxaug for all contact interfaces
-----------------------------------------------------------
For all contact interfaces the user can specify
the minimum nr of augmentations (minaug) as well as the maximum nr of augmentations
(maxaug) for the augmented Lagrangian updates.


7. FEATURE: Faster gap calculation for sliding2, sliding3 and tied-biphasic contact
-----------------------------------------------------------------------------------
The algorithm for calculating the gap between two contacting surfaces has been modified
to use an octree search algorithm.  This algorithm operates much more efficiently than
the previous brute-force search algorithm, especially with contact surfaces having thousands
of patches.


8. FEATURE: Multigeneration growth of solids
--------------------------------------------
A new class of solid mixtures has been introduced where each solid represents a generation
in a multigenerational growth framework.  Users define the time when a generation is
deposited and the corresponding solid only becomes active starting at that time.  The
reference configuration of a generation is given by the current configuration at the
start of that generation.  This class of material can be used to induce residual stresses
in a multigenerational solid.


9. BUG: Modified auto-penalty calculation for contact
----------------------------------------------------------
The auto-penalty algorithm for contact interfaces has been modified to address 
issues with anisotropic materials. It can have an effect on existing FEBio files.


10. BUG: EFD integration
------------------------
The new integration rule for the EFD materials has been replaced with the old one
as a potential issue with the new rule is being investigated.


===========================================================================

 R E L E A S E   1.5.1

===========================================================================

1. FEATURE: Tied-biphasic interface
-----------------------------------
A new tied-biphasic interface has been implemented. It combines a tied-interface, used
for tying two non-conforming surfaces, with a biphasic interface which allows fluid to
pass across the teid-interface.


2. FEATURE: new contact search algorithm
-----------------------------------------
Some contact interfaces whose projection algorithm is based on slave-normal projection
have a new projection algorithm. This affects e.g. biphasic, triphasic and multi-phasic
contact interfaces.


===========================================================================

 R E L E A S E   1.5.0

===========================================================================

1. FEATURE: solutes
-------------------
FEBio has been updated to allow different solutes to be used in different regions
of a model.  For example, adjacent regions of biphasic-solute materials need not
have the same solute.  A solute table must now be provided in the input file, which
lists all the solutes appearing in a particular analysis.  Each region that contains
solutes must provide the solute id's corresponding to the entries in the solute
table.  For biphasic-solute materials, backward compatibility is maintained with 
the FEBio 1.4 file format, though only one solute may be used throughout an analysis
in the old format.

2. FEATURE: Triphasic materials
------------------------------
Triphasic materials have been implemented in this version.  A triphasic material consists
of a solid, a solvent, and two solute species that are monovalent counter-ions.
The solid matrix may carry an electric charge (the fixed-charge density),
in which case the triphasic material will undergo swelling due to Donnan osmotic
pressure.  Electric potential and current density are evaluated in all
triphasic analyses.

3. FEATURE: Cell growth
----------------------
A cell growth material has been implemented, which describes the growth of cells as
driven by osmotic forces, due to the increasing (or decreasing) content of
intracellular solid and membrane-impermeant solute.


4. FEATURE: relative boundary conditions
---------------------------------------
Relative boundary conditions have been implemented for all nodal degrees of freedom
of displacement, fluid pressure, and solute concentration.  Relative boundary conditions 
are meaningful only in multi-step analyses.  When a nodal degree of freedom is 
specified to be relative at a particular step, the value prescribed for that node is 
superposed over the value of that degree of freedom at the end of the preceding step.

5. BUG: tied-interfaces with triangular surfaces
----------------------------------------------
A bug was fixed in the tied interface projection algorithm. Slave nodes were
not projected correctly onto triangular master elements. The bug fix should 
improve convergence and create better results for models using tied interfaces
with triangular surface elements.

6. BUG: orthotropic elasticity
----------------------------------------------
A bug was found and fixed in the implementation of the orthotropic elastic
material.

7. BUG: restart
--------------
Several issues with the restart functionality were addressed. 

8. BUG: file attribute in logfile and plotfile XML element
--------------------------------------------------------
Support was added for the file attribute of the logfile and plotfile XML
elements. This attribute allows users to define the file name of the log-
and plotfiles. For example:

<logfile file="log.txt">...</logfile>

will name the logfile log.txt.



===========================================================================

 R E L E A S E   1.4.0

===========================================================================

1. FEATURE: FEBio input file format
-----------------------------------
- The new nested format for visco-elastic materials is defined. The elastic
  part is now defined as a subcomponent of material element. The old format
  (which uses solid_id to refer to the elastic component) is still supported
  but should be considered obsolete. 
- Modified implementation and input file format of solid mixtures. Format is
  now consistent with nesting multiple solid material descriptions within a
  single <material> tag.

2. FEATURE: Plot file
---------------------
- New FEBio plot format
- Contact traction is added as an option for the FEBio plot file. 
- The facet-to-facet sliding has been updated to output contact pressure when
  Lagrangian augmentation is off and to evaluate net contact pressure in two-
  pass analyses.
- Added support for outputting nodal reaction forces to the plot file.
- Added support for discrete elements in FEBio plot file.


3. FEATURE: Data logging
------------------------
- Principal stress and princial strain can be requested as output for element
  data. Use s1, s2, s3 for the principal Cauchy stress components and E1, E2, 
  E3 for the principal Lagrange strain components.
- The deformation gradient can now be output as an element output option. Use
  F11, F12, etc. to output the components of the deformation gradient to the 
  logfile
- Include x;y;z coordinates in element data logfile output options.


4. FEATURE: Command line
------------------------
- A short hand command line syntax is now allowed. For example you can run an
  FEBio file using 
  >febio file.feb
  Note that there is no -i. This is convenient since now you can run an FEBio
  input file from Windows Explorer by right-clicking it and selecting FEBio to
  run the file. 
- Added -silent command line option.
- Added option to export version info from the command line.
- The FEBio command prompt now comes up when the program is started without command
  line options.


5. FEATURE: Biphasic/Biphasic-solute
------------------------------------
- Solute transport in neutral porous solid has been implemented.
- Added framework for mass supply in biphasic-solute problems.
- Steady-state biphasic analysis mode has been implemented.
- Implemented fluidflux boundary condition for mixture velocity.
- Implemented biphasic-solute sliding3 contact.


6. FEATURE: New materials
-------------------------
- Added Fung orthotropic compressible material.
- Added cell-growth material.
- Modified "linear orthotropic" material to allow user-specified preferred 
  material directions.
- Added single fiber constitutive relations (exponential-power law relation)
  for compressible and uncoupled representations.
- A simple damage model was implemented for some hyperelastic materials.
  Currently you can use "damage neo-Hookean", 
  "damage Mooney-Rivlin" and "damage trans iso Mooney-Rivlin".
- A version of a compressible Ogden material was implemented. This material
  should be preferred over the (uncoupled) Ogden material when the material
  is compressible.


7. FEATURE: New element
-----------------------
A new tetrahedral element formulation was implemented. This formulation uses
nodal averaging of the deformation gradient to overcome the well-known locking
problems of linear tetrahedral elements. This formulation can be used by
setting the integration rule for tet elements to UT4. Additional parameters can
be defined that affect the behavior of this element. 


8. FEATURE: Body forces
-----------------------
- A point-body force feature was implemented. This body force applies a force
  to the domain that is centered around a fixed point and decays exponentially
  with increasing distance from this fixed point.
- Implemented centrifugal body force.
- Implemented the non-const body force.


9. FEATURE: Must point load curve
---------------------------------
The user can now set the load curve type for must point load curves. It used to
be set to STEP but can now be defined in the input file. 


10. FEATURE: New iterative solver
---------------------------------
The MKL RCICG iterative solver has been implemented. To use it, select "rcicg"
as the type of the linear_solver element in the FEBio input file.


11. FEATURE: Diagnostics
------------------------
- Reimplemented tangent diagnostics feature which now offers two scenarios:
  uni-axial and simple shear.


12. BUG: Multi step
--------------------
- A bug was fixed that was applying inactive traction boundary conditions in a
  multi-step analysis. 
- A bug in the auto-time stepper could cause negative time steps in multi-step,
  resulting in the analysis running backwards in time.


13. BUG: Rigid constraints
--------------------------
A bug was fixed in the initialization of rigid constraints. 


14. BUG: Sliding2
-----------------
A bug was fixed in the sliding2 contact interface for calculation of net contact
pressure.


15. BUG: Multi-scale problems
-----------------------------
- Users can now use ctrl+c to interrupt multi-scale problems. 
- FEBio will now terminate a multi-scale problem if the micro RVE problem fails.


16. BUG: Restart feature
------------------------
The restart feature underwent a major revision and cleanup. Most issues with
this feature are now addressed.


17. BUG: Eigenvalues
---------------------
A bug was fixed in the algorithm that calculates eigenvalues. This will affect
all aspects of the code where eigenvalues are used. In particular, these are
the implementations of the Ogden-type materials.


18. BUG: Arruda-Boyce material
------------------------------
The stress and tangent calculations of the Arruda-Boyce material contained
some errors.



===========================================================================

 R E L E A S E   1.3.0

===========================================================================

1. FEATURE: FEBio license
-------------------------
Support was added for FEBio license files. This was implemented to allow
commercial institutes the right to use FEBio for their research and development.
Companies can now purchase a license key that they then use with FEBio.
Academic researchers can still use FEBio for free.

2. FEATURE: FEBio format 1.1
----------------------------
- A new input format is define for FEBio, namely format 1.1. This format
  addresses some issues in the older format and reflect some changes to the
  internal code structure of FEBio. This applies mostly to rigid body constraints.
  In the old format, these constraints were defined as part of the material
  definition. In this new format, they have to be defined as part of the new
  Constraints section.
- Added support for reading empty xml elements.


3. FEATURE: New materials
-------------------------
- Implemented referentially orthotropic and referentially transversely
  isotropic permeability.
- Added referentially isotropic permeability poroelastic material, FERefIsoPerm.
- Added FEPerfectOsmometer class to describe equilibrium swelling of the Boyle-
  van't Hoff type.
- Modified FEDonnanEquilibrium and FEEllipsoidalFiberDistribution so that they
  can be user-defined materials.
- Modified FEElasticMixture to check for duplicate entries in <solid_ids>.
- Simplified stress and tangent calculations in FERandomFiberNeoHookean an
  FERandomFiberVerondaWestmann materials.
- Implemented class FEElasticMixture : public FEElasticMaterial to represent
  mixtures of elastic solids.


4. FEATURE: Three-field hexes
-----------------------------
By default, FEBio uses the three-field formulation for hexahedral elements.
An option was added allowing the user to turn three-field formulation on or
off.


5. FEATURE: Plof file
---------------------
Springs are now included in the LSDYNA plot file.

6. FEATURE: Heat-flux BC
------------------------
Implemented the heat flux boundary condition for heat transfer problems.


7. FEATURE: Fluid flux
----------------------
A prescribed fluid flux boundary condition was implemented for poroelastic
analysis. This boundary condition allows the user to define the fluid flux at
the surface of the FE model. 


8. FEATURE: Implemented biphasic-elastic contact
------------------------------------------------
A new sliding contact algorithm has been implemented. This sliding contact
formulation also includes fluid flow across the contact interface for biphasic
problems. If both contacting surfaces are biphasic, the algorithm considers
the flow from one surface into the other by forcing the pressure to be the same
on either side of the contact interface.


9. FEATURE: Multi-step feature
------------------------------
Support was added for pressured loads and the constant traction loads in the
multi-step feature. When defining these boundary conditions as part of the Step
boundary condition, they will only remain active during this step. In other
steps, they will be inactive. 


10. FEATURE: Tension-only springs
---------------------------------
An alternative spring implementation was implemented that only exerts a force
in tension. In compression, the spring force is zero.


11. FEATURE: Micromaterial
--------------------------
The micromaterial no longer forces skyline solver. The micro-scale problem will
now the same linear solver as the macro-problem (Padiso by default).


12. BUG: Biphasic contact
-------------------------
- A bug was fixed in the biphasic contact augmented Lagrangian convergence
  criterion on fluid pressure/flux.
- A limitation was removed that prevented from correctly defining 3-body
  biphasic contact problem.


13. BUG: Memory leak
--------------------
A memory leak was fixed that was caused by not deleting the domains properly
curing a running restart.



===========================================================================

 R E L E A S E   1.2.2

===========================================================================

1. FEATURE: Micro-material
--------------------------
Using the new micro-material, FEBio has taken a first step in the solution
of computational homogenization problems. For such problems, the macro-scale
problem's material response is described by the iterative solution of a 
micro-scale problem. 
In FEBio a new material, called "micro-material" is used to solve computational
homogenization problems. The material references the micro model which is 
specified in a separate input file. 


2. FEATURE: Relative kinematics
-------------------------------
An option was added to describe rigid body kinematics in a local coordinate system
and connect the rigid bodies in a child-parent hierarchy. This facilitates the
description of complex rigid body prescribed kinematics. 


3. FEATURE: Set minimum residual
--------------------------------
Whenever the residual drops below a minimal value, FEBio assumes that there are
no force acting on the system and will consider the time step as converged. The
user can now set the value of this minimum residual using the <min_residual>
parameter in the <Control> section of the input file. The default value is 1e-20.


4. FEATURE: New constraints section
-----------------------------------
A new section was added that will deal with constraints. Although all constraints will
eventually be moved to this section, for now it was added to allow the user to describe rigid kinematics (see item 5).


5. FEATURE: Redefine rigid kinematics in multi-step analysis
------------------------------------------------------------
The user can now redefine the rigid body constraints using the Constraints section in
a multi-step analysis. The Constraints section may be repeated in each step, and the user may redefine the rigid body constraints in each step.


6. FEATURE: Parameter optimization
----------------------------------
A new parameter optimization algorithm was implemented. Although parameter optimization
has been implemented for a while, it was not available since it used the NAG library. 
The NAG routines have now been replaced with a custom implementation of the Levenberg-
Marquardt method, making the parameter optimization module available for all FEBio users.


7. FEATURE: Enhanced loadcurves
------------------------------
Two new features were added to the load curves. First, the user can define the load curve
type, which can be set to step, linear or smooth. For the smooth type, FEBio will inter-
polate the load curve values with a cubic polynomial creating smooth curves (C1 continuous).
Second, the user can now also define the extend mode which defines the values of the load
curve outside its specified domain. The new options are set as attributes to the <loadcurve>
element. For example, the following defines a smooth load curve with linear extrapolation
outside the domain.

<loadcurve type="smooth" extend="extrapolate">

The extend mode can take on the following values: "constant", "extrapolate", "repeat",
"repeat offset". The default value is "constant". 


8. FEATURE: Nodally integrated tet
----------------------------------
A new nodally integrated tet element is available which performs better in incompressible
and bending problems. Performs better in the sense that it suffers less from locking 
problems that often cause problems using the default linear tet elements in FEBio.


9. FEATURE: Constant surface traction boundary condition
--------------------------------------------------------
A new boundary condition was implemented which allows the user to apply a constant traction
force to a surface. Unlike the pressure boundary force, the surface traction will remain
independent of the deformation.


10. BUG: Crash when using triangular shells
-------------------------------------------
A bug was found and fixed in the input routine for triangular shells. The bug was responsible
for unexpected crashes that could occur anywhere during the run.


11. FEATURE: FEBio compiled on Vista 64bit and Win7 32bit
---------------------------------------------------------
Executables have been compiled on Windows Vista, 64 bit and Windows7 32bit.  If the executable
is set to XP Comptability mode, it will not run correctly.


===========================================================================

 R E L E A S E   1.2.1

===========================================================================


1. FEATURE: mat_axis
--------------------
A mat_axis option was added for the ElementData section. The user can now 
override the material axis for each element individually.

===========================================================================

 R E L E A S E   1.2.0

===========================================================================


1. FEATURE: Sparse linear solvers
---------------------------------
FEBio now adds support for several fast sparse linear solvers, such as Pardiso
and SuperLU. The preferred linear solver can either be specified in the 
configuration file or in the FEBio input file by adding the following line
to the Control section (e.g. for Pardiso):

<linear_solver type="pardiso"></linear_solver>

These new sparse linear solvers are faster than the default skyline solver
since they take better advantage of the sparsity of the stiffness matrix and
can use multiple processors. Note that if you want to use multiple processors
you may need to set specific environment variables. We refer to the documentation
of the linear solvers for more details. 


2. FEATURE: Contact improvements
--------------------------------
Two new frictionless sliding contact algorithms were implemented which add more 
stability to contact analysis. The first is referred to as the facet-to-facet
sliding, and the second one is reffered to as sliding2. To select a particular
algorithm, set the type attribute of the contact xml-element to the appropriate
value (e.g. for facet-to-facet sliding). 

<contact type="facet-to-facet sliding"> ... </contact>

For sliding2, simply enter the value "sliding2". The sliding2 algorithm is
inherently unsymmetric, which means you'll need to use a non-symmetric linear
solver (both pardiso and superlu can handle non-symmetric matrices). However,
this algoritm does have a symmetric mode, although this mode was shown not to
be as robust as the non-symmetric. You can choose between the two modes by
setting the following flag in the contact section.

<symmetric_stiffness>1</symmetric_stiffness>

A value of 0 will use the non-symmetric mode. Please see the user's manual for
more details on these new contact algorithms.


3. FEATURE: Biphasic contact
----------------------------
The new sliding contact algorithm sliding2 can also deal with biphasic contact.
Here two poroelastic materials are brought in contact and can exchange fluid
across the contact interface. The contact algorithm also automatically enforces
a free-draining boundary condition on the part of the surface that is not in
contact. To use biphasic contact you'll need to define two contacting poroelastic
surfaces and you need to set the contact type to "sliding2".

<contact type="sliding2"> ... </contact>

In addition, you'll need to define several control parameters which are described
in detail in the user's manual.


4.FEATURE: auto-penalty
-----------------------
A new auto-penalty algorithm was implemented for all sliding contact algorithms. 
This algorithm derives the penalty factor from the initial elasticity tensor of
the material. The advantage is that the algorithm now works with any material. 
To use the new algorithm, add the following xml-element to the contact section
of the input file.

<auto_penalty>1</auto_penalty>

Note that the old algorithm is still available for now for backward compatibility
but is considered obselete and may be removed in future releases.


5. FEATURE: Isotropic elastic
-----------------------------
A new material was implemented to replace the linear elastic and the St.Venant-
Kirchhoff material. This material is valid for both small deformations and 
large deformations and reduces to linear elasticity for small strains. An
example illustrating the use of this material:

<material id="1" type="isotropic elastic">
	<E>1.0</E>
	<v>0.45</v>
</material>

Note that the linear elastic and the St.Venant-Kirchhoff materials are still
available for backward compatibility, but it is highly recommended to use
this new material instead.


6. FEATURE: Convergence tolerances
----------------------------------
A simple mechanism was implemented to turn off particular convergence tolerances.
As of this version, setting a value of 0 (zero) for the displacement (dtol),
energy (etol) or residual (rtol) will deactivate the corresponding convergence 
criteria. Similarly, setting a value of zero for the line search tolerance (lstol),
will deactivate the line search.


7. FEATURE: Time command
------------------------
The time command will display the time that has passed so far and also gives an
estimate of the remaining time. The command can be entered at the FEBio command 
prompt which is activated after interrupting the run with ctrl+c.


8. BUG: Running Linux input files on Windows
--------------------------------------------
An issue was identified that prevented files created on a linux machine to be run
on windows. The problem had to do with way the different platforms deal with line
endings. The issue has been resolved, and both platforms should now be able to read
files that were created on the other.


===========================================================================

 R E L E A S E   1.1.7

===========================================================================

1. FEATURE: Initial nodal velocities
------------------------------------
Support fot initial nodal velocities was added to FEBio and to the FEBio
input file. To set initial nodal velocities, add the Initial section to the
input file. 

<febio_spec>
        ...
	<Initial>
		<velocity>
			<node id="1">1,0,0</node>
			...
			<node id="n">1,0,0</node>
		</velocity>
	</Initial>
</febio_spec>

Note that you need to run the problem dynamically for this to have any effect.
To run a dynamic analysis, add the following element to the Control section
of your input file.

<analysis type="dynamic"></analysis>


2. FEATURE: Strain-dependant poroelasticity
-------------------------------------------
A new poroelastic material was added that has a strain dependant permeability
tensor. This material uses the constitutive model proposed by Holmes and Mow.


3. FEATURE: Customizing plot file output
----------------------------------------
You can now replace the predefined LSDYNA data fields with FEBio datafields. 
To do this, define the plotfile element in the Output section of your input file. 
You can then define maps to redefined the meaning of an output field in the plot
file. For example, 

<Output>
  <plotfile>
    <map field="velocity">CONTACT_TRACTION</map>
  </plotfile>
</Output>

will replace the velocity data with contact traction data.


4. FEATURE: Frictional contact
------------------------------
The sliding interface is augmented with a frictional algorithm. To use friction
simply add the following two parameters to the your contact section.

<fric_coeff>0.1</fric_coeff>
<fric_penalty>1</fric_penalty>

The first parameter sets the friction coefficient. The second parameter is the
frictional penalty parameter.


5. FEATURE: Contact stiffness multipliers
-----------------------------------------
The user can set a scalar multiplier for both the normal as well as the 
tangential stiffness. The "ktmult" parameter defines the multiplier for the
tangential component (default = 0), and "knmult" the multiplier for the 
normal component. These parameters need to be set in the sliding interface
contact section of your input file.

<contact type="sliding_with_gaps">
  ...
  <knmult>1</knmult>
  <ktmult>0</ktmult>
  <surface>
  ...
</contact>


6. FEATURE: Configuration file
------------------------------
FEBio now use a configuration file to store platform dependant parameters. 
Currently it only stores the default linear solver you wishes to use which
is set to Pardiso on most platforms. The configuration file needs to be
stored in the same location of the FEBio executable. See the manual for more
options about using this configuration file. 

7. BUG: Node numbering
----------------------
When a negative jacobian occurs the node numbering were reported as zero-based
in stead of one-based. This has been fixed.


===========================================================================

 R E L E A S E   1.1.6

===========================================================================

1. FEATURE: Multi-step analysis
-------------------------------
The user can now split the analysis in separate steps where in each step
he can define different control parameters and boundary conditions. This
is useful for instance for defining time dependant boundary conditions or
for switching between (quasi-) static and dynamic analysis. Multi-step
problems are defined slightly different. For each step you need to define
a <Step> section in the input file. The overall structure of the input file
now looks like this.

<febio_spec>
	<Control>
		<!-- global control parameters (e.g. title) --!>
	</Control>
	<Material>
		<!-- material data --!>
	</Material>
	<Boundary>
		<!-- global boundary constraints --!>
	</Boundary>
	<Step>
		<Control>
			<!-- local control parameters --!>
		</Control>
		<Boudary>
			<!-- local boundary constraints --!>
		</Boundary>
	</Step>
	<Step>
		...
	</Step>
</febio_spec>

In each step section, you can redefine the control parameters, as well as 
specify boundary conditions that will only be enforced during this step.
Note that the boundary constraints defined outside the step section are
considered global and will remain active during all steps.


2. FEATURE: Ogden material
--------------------------
The Ogden material was added to the FEBio's material library. To use this
material set the material type to "Ogden". Please see the user manual for
a description of the material parameters.

<material id="1" type="Ogden">
	<c1>1</c1>
	<m1>2</m1>
	<k>100</k>
</material>

Note that this material is formulated using an uncoupled formulation. Incom-
pressibility can be enforced by either increasing the bulk modulus (k) and
by setting the augmentation flag (<laugon>) to "1".


3. BUG FIX: Contact
-------------------
A bug was fixed in the frictionless contact algorithm. Improved convergence
can be expected for some contact problems. 

===========================================================================

 R E L E A S E   1.1.5

===========================================================================

1. FEATURE: Visco-elasticity
----------------------------
Visco-elasticity has been added to the material library. To use the visco-elastic
material you need to add two materials: (1) the visco-elastic material and (2)
a material describing the elastic equilibrium repsonse.

<material id="1" type="neo-Hookean">
	<E>1</E>
	<v>0.33</v>
</material>
<material id="2" type="visco-elastic">
	<t1>0.01</t1>
	<g1>1</g1>
	<solid_id>1</solid_id>
</material>

The solid_id element references the material id of the elastic material. 
The visco-elastic material is described using a Prony series. Each term
in this series is parameterized by a relaxation time (ti) and a scalar 
modulus gi. Up to six terms can be prescribed.


2. FEATURE: Continuous fiber material
-------------------------------------
A new material model was added that has a 2D random fiber distribution. 
This model replaces the "random" fiber type that could be used to describe
random fiber materials. Currently, this material uses a Mooney-Rivlin matrix.

3. FEATURE: Body forces for shells
----------------------------------
Body forces can now also be allowed to shell geometry.

4. FEATURE: Linear orthotropic material
---------------------------------------
A linear orthotropic material was added to FEBio's material library.

5. FEATURE: Linear constraints
------------------------------
The user can now apply linear constraints to the problem. A linear constraint
defines a degree of freedom in function of the other dofs. It is always of 
the form.

	ui = A1*u1+ ... + A(i-1)*u(i-1) + A(i+1)*u(i+1) + ... + An*un

As many linear constraints can be applied as desired. Only the non-zero
coefficients need to be specified.

6. FEATURE: SuperLU solver
--------------------------
The SuperLU solver has been implemented. To select it, add the following
line to the Control section of the input file.

<linear_solver type="superlu"></linear_solver>

7. BUG FIX: Off-diagonal strains in logfile
-------------------------------------------
The off-diagonal strians reported in the logfile were off by a constant
term of 0.5.


===========================================================================

 R E L E A S E   1.1.4

===========================================================================

1. FEATURE: New muscle and tendon material models
-------------------------------------------------
The muscle and tendon material models due to Silvia Blemker have been
implemented. These models can be used to simulate the passive and active
response of muscles and the passive response of tendons. See the user
manual for more details on these material models.

2. FEATURE: Strain output in log file
-------------------------------------
The element strain values can now also be outputted to the log file. See
the user manual for more details.

2. BUGFIX: Plot file data for triangular shells
-----------------------------------------------
The stress and strain data for triangular shells was not stored correctly
in the plot database file. This has now been fixed. 

3. BUGFIX: Divergence logic
---------------------------
A small bug was fixed in the divergence logic.

===========================================================================

 R E L E A S E   1.1.3

===========================================================================

1. FEATURE: Iterative linear solver
-----------------------------------
An iterative linear solver has been added that can be used as an alternative
to the default skyline solver to solve the system of linear equations Ku = R.
This iterative solver is attractive for large problems that either require too 
much memory or take too long to factorize the stiffness matrix. 
To select the solver, add the following section to the Control section
of your input file.

<linear_solver type="conjugate gradient">
	<tolerance>0.01</tolerance>
	<max_iterations>50</max_iterations>
	<print_level>0</print_level>
</linear_solver>

This solver takes three parameters (shown in the example above with their 
default values). The "tolerance" parameter specifies the convergence tolerance
on the residual norm of the linear system, where the residual is defined here
as r = R - Ku. The "max_iterations" parameter sets a maximum on the number of
iterations. The "print_level" parameter sets the amount of output that the
linear solver will generate. When set to zero (=default), no output is generated.
When set to a non-zero value, convergence information is printed only to the
screen (not to the logfile!).


2. FEATURE: Shell strains
-------------------------
FEBio can now output shell strains. To output shell strains set the "shell_strain"
parameter to 1 in the "plotfile" section of the "Output" section of your input file.

<Output>
	<plotfile>
		<shell_strain>1</shell_strain>
	</plotfile>
</Output>

The default value for this flag is 0 (=off).


3. FEATURE: Progress indicator in window title
----------------------------------------------
A progress indicator is displayed in the title of the console window
or terminal for linux/mac). That way the user can monitor the progress of a
run even when the window is minimized.


4. BUG FIX: NIKE3D wedge element
--------------------------------
FEBio read the node numbering incorrectly of the wedge element for NIKE3D
input files.


5. BUG FIX: Linesearch
----------------------
A small bug was fixed in the linesearch algorithm.


===========================================================================

 R E L E A S E   1.1.2

===========================================================================

1. FEATURE: Augmented Lagrangian for incompressible materials
-------------------------------------------------------------
An augmented Lagrangian algorithm was added for the incompressibility
enforcement. To use this feature, add the following two parameters
to any material that uses a decoupled formulation (e.g. Mooney-Rivlin)

<laugon>1</laugon>
<atol>0.05</atol>

The first parameter activates the augmented Lagrangian for incompres-
sibility and the second parameter specifies the augmented Lagrangian
convergence tolerance. 


2. FEATURE: TC nonlinear orthotropic
------------------------------------
A tension-compression nonlinear orthotropic material was added. To use
this material set the material type to "TC nonlinear orthotropic" and
define the material parameters. See the user's manual for a description
of the material parameters.


3. FEATURE: Contact auto penalty calculation
--------------------------------------------
The initial penalty factor can now be calculated automatically. Simply
specify the "auto" attribute and as value "on" or "off" to use the 
auto penalty estimation. Default is off.

<penalty auto="on">1</penalty>

In this case the specified value of the penalty element is a scale factor.


4. FEATURE: Max condition number
--------------------------------
When the condition number of the stiffness matrix gets too large, the matrix
becomes ill-conditioned. When this happens, FEBio will reform the stiffness
matrix. The maximum value for the condition number (previously hardcoded at 1e5)
can now be set by the user. To set this value, add the "cmax" parameter to
the control section of your input file.

<cmax>1e5</cmax>


5. BUG FIX: Contact with tetrahedral elements
---------------------------------------------
There were a few bugs found and fixed in the contact algorithm 
for tetrahedral elements. One bug was rather severe since it could
crash FEBio.


6. BUG FIX: Dilatational stiffness
----------------------------------
A bug was found and corrected in the routine that calculates the dilational
stiffness. This may improve convergence behavior for all materials using a 
decoupled formulation. 


7. BUG FIX: Auto timestepper
----------------------------
A bug was found and fixed in the auto timestepper routine. Specifically,
the max time step size was sometimes not respected when it was specified
through a loadcurve.


===========================================================================

 R E L E A S E   1.1.1

===========================================================================

1. FEATURE: Data check option
-----------------------------
A command line option was added that requests FEBio to check the file for 
potential problems, but without running the file. To use the feature add
the -c option on the command line. For instance, the following command line
will perform a data check on the file without running the problem.

>febio -i in.feb -c [enter]


2. FEATURE: Tied contact interface
----------------------------------
A tied contact interface was added. This interface allows you to connect two
non-conforming meshes. A tied contact is defined similarly as a sliding 
contact interface, except the contact type is now set to "tied" and there 
is two pass option. For, instance the following example defines a simple
tied interface.

<contact type="tied">
	<tolerance>0.01</tolerance>
	<penalty>50</penalty>
	<surface type="master">
		<quad4>1,2,3,4</quad4>
	</surface>
	<surface type="slave">
		<quad4>5,6,7,8</quad4>
	</surface>
</contact>


3. BUG FIX: Divergence logic
----------------------------
A small bug was fixed in the algorithm that determines whether an iteration
is diverging or not.


4. BUG FIX: Rigid body reaction forces
--------------------------------------
When using prescribed rigid body forces, the rigid body reaction forces where
not reported accurately.


5. BUG FIX: Rigid body data logging
-----------------------------------
A bug was fixed in the data logging feature of rigid body data when the user
did not explicitly define the rigid material id(s).


6. BUG FIX: Bug in bandwidth optimizer
--------------------------------------
A bug was found and fixed in the bandwidth optimization algorithm.


7. BUG FIX: St.Venant-Kirchhoff
-------------------------------
The St.Venant-Kirchhoff material was not recognized by FEBio when spelled
like this. Instead it expected a hyphen instead of the first dot. This is 
fixed and now the correct type for this material is spelled as follow:
"St.Venant-Kirchhoff"


===========================================================================

 R E L E A S E   1.1.0

===========================================================================

1. FEATURE: Bandwidth reduction algorithm
-----------------------------------------
A bandwidth reduction algorithm has been implemented for the default Skyline
solver. This algorithm attempts to minimize the bandwidth of the global
stiffness matrix. The result can be a dramatic reduction in memory
requirements and computing time. To use the algorithm, simply add the
following option to the Control section of your input file.

<optimize_bw>1</optimize_bw>


2. FEATURE: Data Logging
------------------------
The user can request specific data to be stored in the log file. Data can be
requested for nodes, elements and rigid bodies. To request additional data you
need to define the new Output section in your input file. In the Output
section, define a logfile section and in this section define the data that you
wish to add to the log file. 

<Output>
	<logfile>
		<node_data data="x;y;z"></node_data>
	</logfile>
</Output>


3. FEATURE: Rigid wall interface
--------------------------------
The rigid wall interface is a simplification of the sliding contact interface
where the master surface is a movable wall which can be defined implicitly
using a plane equation. No geometry needs to be defined for the wall. The
position of the wall can be controlled with a load curve.

<contact type="rigid_wall">
	<plane lc="1">0,0,1,0</plane>
	<tolerance>0.1</tolerance>
	<penalty>1</penalty>
</contact>


4. FEATURE: User fiber distribution
-----------------------------------
An option has been added for transversely isotropic materials to input a user
defined fiber distribution. The local fiber direction can now be defined on an
element per element basis. To use this option set the fiber type to "user" in
the material section. In addition, define the new ElementData section in the
Geometry section of your input file. In this section specify for each element
the local fiber direction.

<ElementData>
	<element id="1">
		<fiber>1,0,0</fiber>
	</element> 
</ElementData>


5. FEATURE: Shell formulation
-----------------------------
FEBio now supports shell elements. The current formulation allows either four
node quadrilateral or three node triangular shells with possible thickness
variations over the shells surface. Shells are defined in the Geometry
section of your input file. Use quad4 for a quadrilateral element and tri3
for a triangular element.

<Elements>
	<quad4 id="1" mat="1">1,2,3,4</quad4>
	<tri3 id="2" mat="1">5,6,7</tri3>
</Elements>

The shell thickness is defined in the ElementData section and needs to be
speficied for each node.

<ElementData>
	<element id="1">
		<thickness>0.02,0.02,0.02,0.02</thickness>
	</element>
</ElementData>


6. FEATURE: Restart File
------------------------
The user can define a restart input file that can be used to alter some
control parameters when restarting a previously terminated run. To request the
creation of a restart file, add the following option to the Control section.

<restart>1</restart>

This option requests the creation of a dump file that can be used to restart
the analysis. When restarting the analysis you can specify a restart input file
that may override some of the original control options.


7. FEATURE: Rigid Body Forces
-----------------------------
Prescribed forces can now be applied directly onto the rigid bodys center of
mass. To specify a force simply set the type attribute of the corresponding
rigid bodys degree of freedom to force and set the value to the forces
magnitude. Applying a force to a rotational degree of freedom defines a torque
around the center of mass.

<material id="1" type="rigid body">
	<trans_x type="force" lc="1">5.0</trans_x>
	...
</material>

8. FEATURE: Plot Level
----------------------
The user has now more control over when exactly a state is added to the
plotfile. Choices include: never, all major iterations, all minor iterations,
only for must points, .... Enter the following option in the Control section of
your input file to set the plot level.

<plot_level>PLOT_MAJOR_ITRS</plot_level>


9. BUG FIX: Improved Contact
----------------------------
Several bugs were found and fixed in the contact implementation. Improved
convergence can be expected for contact analyses.


10. BUG FIX: Linesearch
-----------------------
A bug was found and fixed in the linesearch algorithm. Problems that depend
heavily on a linesearch will show improved convergence.


11. BUG FIX: Memory allocation failure
--------------------------------------
FEBio now prints an error message when memory allocation for the global
stiffness matrix fails.
