Repository: febiosoftware/FEBio
Branch: develop
Commit: 6d7f3233efba
Files: 2226
Total size: 20.2 MB
Directory structure:
gitextract_mj_78uq1/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── 🐛-bug-report.md
│ │ ├── 📓-documentation-request.md
│ │ └── 🙏-feature-request.md
│ └── workflows/
│ ├── linux-pull-request.yml
│ ├── linux-push.yml
│ ├── macos-pull-request.yml
│ ├── macos-push.yml
│ ├── release-tag.yml
│ ├── windows-pull-request.yml
│ └── windows-push.yml
├── .gitignore
├── .gitmodules
├── BUILD.md
├── CMakeLists.txt
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── CppProperties.json
├── Documentation/
│ ├── Copyright-FEBio.txt
│ ├── Doxygen/
│ │ ├── Doxyfile
│ │ ├── Doxyfile_doc_only
│ │ ├── building_a_plugin.dox
│ │ ├── callback.dox
│ │ ├── cb_plugin.dox
│ │ ├── create_plugin_fbs3.dox
│ │ ├── create_plugin_linux.dox
│ │ ├── create_plugin_osx.dox
│ │ ├── create_plugin_vs.dox
│ │ ├── debug_tools.dox
│ │ ├── febio.dox
│ │ ├── index.dox
│ │ ├── material.dox
│ │ ├── modules.dox
│ │ ├── pipeline.dox
│ │ ├── plugin_basics.dox
│ │ ├── plugin_bc.dox
│ │ ├── plugin_cast.dox
│ │ ├── plugin_datagenerator.dox
│ │ ├── plugin_lc.dox
│ │ ├── plugin_log.dox
│ │ ├── plugin_logdata.dox
│ │ ├── plugin_nlc.dox
│ │ ├── plugin_plotdata.dox
│ │ ├── plugin_solver.dox
│ │ ├── plugin_upgrade3.dox
│ │ ├── plugin_upgrade4.dox
│ │ ├── plugins.dox
│ │ ├── register.dox
│ │ ├── required_functions.dox
│ │ ├── restart.dox
│ │ ├── serialize.dox
│ │ ├── task.dox
│ │ ├── technical.dox
│ │ └── using_plugins.dox
│ ├── FEBio3.bib
│ ├── FEBio_EULA_3.rtf
│ ├── FEBio_EULA_3.txt
│ ├── FEBio_EULA_4.txt
│ ├── FEBio_Theory_Manual.lyx
│ ├── FEBio_User_Manual.lyx
│ ├── README.txt
│ ├── ReleaseNotes.txt
│ └── febio.xml
├── FEAMR/
│ ├── FEAMR.cpp
│ ├── FEAMR.h
│ ├── FEAMRPlot.cpp
│ ├── FEAMRPlot.h
│ ├── FEDomainErrorCriterion.cpp
│ ├── FEDomainErrorCriterion.h
│ ├── FEDomainShapeInterpolator.cpp
│ ├── FEDomainShapeInterpolator.h
│ ├── FEElementDataCriterion.cpp
│ ├── FEElementDataCriterion.h
│ ├── FEElementQualityCriterion.cpp
│ ├── FEElementQualityCriterion.h
│ ├── FEElementSelectionCriterion.cpp
│ ├── FEElementSelectionCriterion.h
│ ├── FEErosionAdaptor.cpp
│ ├── FEErosionAdaptor.h
│ ├── FEFilterAdaptorCriterion.cpp
│ ├── FEFilterAdaptorCriterion.h
│ ├── FEHexRefine.cpp
│ ├── FEHexRefine.h
│ ├── FEHexRefine2D.cpp
│ ├── FEHexRefine2D.h
│ ├── FELeastSquaresInterpolator.cpp
│ ├── FELeastSquaresInterpolator.h
│ ├── FEMMGRemesh.cpp
│ ├── FEMMGRemesh.h
│ ├── FEMeshDataInterpolator.cpp
│ ├── FEMeshDataInterpolator.h
│ ├── FEMeshShapeInterpolator.cpp
│ ├── FEMeshShapeInterpolator.h
│ ├── FERefineMesh.cpp
│ ├── FERefineMesh.h
│ ├── FEScaleAdaptorCriterion.cpp
│ ├── FEScaleAdaptorCriterion.h
│ ├── FETestRefine.cpp
│ ├── FETestRefine.h
│ ├── FETetQualityCriterion.cpp
│ ├── FETetQualityCriterion.h
│ ├── FETetRefine.cpp
│ ├── FETetRefine.h
│ ├── FEVariableCriterion.cpp
│ ├── FEVariableCriterion.h
│ ├── SpherePointsGenerator.cpp
│ ├── SpherePointsGenerator.h
│ ├── feamr_api.h
│ ├── sphericalHarmonics.cpp
│ ├── sphericalHarmonics.h
│ └── stdafx.h
├── FEBio/
│ ├── Command.h
│ ├── CommandManager.cpp
│ ├── CommandManager.h
│ ├── FEBio.cpp
│ ├── FEBioApp.cpp
│ ├── FEBioApp.h
│ ├── FEBioCommand.cpp
│ ├── FEBioCommand.h
│ ├── Interrupt.cpp
│ ├── Interrupt.h
│ ├── breakpoint.cpp
│ ├── breakpoint.h
│ ├── console.cpp
│ ├── console.h
│ ├── febio_cb.cpp
│ ├── febio_cb.h
│ ├── stdafx.cpp
│ └── stdafx.h
├── FEBioConfig.cmake
├── FEBioFluid/
│ ├── FEBackFlowFSIStabilization.cpp
│ ├── FEBackFlowFSIStabilization.h
│ ├── FEBackFlowStabilization.cpp
│ ├── FEBackFlowStabilization.h
│ ├── FEBinghamFluid.cpp
│ ├── FEBinghamFluid.h
│ ├── FEBioFSI.cpp
│ ├── FEBioFSI.h
│ ├── FEBioFluid.cpp
│ ├── FEBioFluid.h
│ ├── FEBioFluidData.cpp
│ ├── FEBioFluidData.h
│ ├── FEBioFluidPlot.cpp
│ ├── FEBioFluidPlot.h
│ ├── FEBioFluidSolutes.cpp
│ ├── FEBioFluidSolutes.h
│ ├── FEBioMultiphasicFSI.cpp
│ ├── FEBioMultiphasicFSI.h
│ ├── FEBioPolarFluid.cpp
│ ├── FEBioPolarFluid.h
│ ├── FEBioThermoFluid.cpp
│ ├── FEBioThermoFluid.h
│ ├── FEBioThermoFluidPlot.cpp
│ ├── FEBioThermoFluidPlot.h
│ ├── FEBiphasicFSI.cpp
│ ├── FEBiphasicFSI.h
│ ├── FEBiphasicFSIDomain.cpp
│ ├── FEBiphasicFSIDomain.h
│ ├── FEBiphasicFSIDomain3D.cpp
│ ├── FEBiphasicFSIDomain3D.h
│ ├── FEBiphasicFSITraction.cpp
│ ├── FEBiphasicFSITraction.h
│ ├── FEBodyMoment.cpp
│ ├── FEBodyMoment.h
│ ├── FECarreauFluid.cpp
│ ├── FECarreauFluid.h
│ ├── FECarreauYasudaFluid.cpp
│ ├── FECarreauYasudaFluid.h
│ ├── FECentrifugalFluidBodyForce.cpp
│ ├── FECentrifugalFluidBodyForce.h
│ ├── FEConductivityRealVapor.cpp
│ ├── FEConductivityRealVapor.h
│ ├── FEConstFluidBodyForce.cpp
│ ├── FEConstFluidBodyForce.h
│ ├── FEConstFluidBodyMoment.cpp
│ ├── FEConstFluidBodyMoment.h
│ ├── FEConstraintFrictionlessWall.cpp
│ ├── FEConstraintFrictionlessWall.h
│ ├── FEConstraintNormalFlow.cpp
│ ├── FEConstraintNormalFlow.h
│ ├── FEConstraintUniformFlow.cpp
│ ├── FEConstraintUniformFlow.h
│ ├── FECrossFluid.cpp
│ ├── FECrossFluid.h
│ ├── FEElasticFluid.cpp
│ ├── FEElasticFluid.h
│ ├── FEFSIErosionVolumeRatio.cpp
│ ├── FEFSIErosionVolumeRatio.h
│ ├── FEFixedFluidAngularVelocity.cpp
│ ├── FEFixedFluidAngularVelocity.h
│ ├── FEFixedFluidDilatation.cpp
│ ├── FEFixedFluidDilatation.h
│ ├── FEFixedFluidTemperature.cpp
│ ├── FEFixedFluidTemperature.h
│ ├── FEFixedFluidVelocity.cpp
│ ├── FEFixedFluidVelocity.h
│ ├── FEFluid.cpp
│ ├── FEFluid.h
│ ├── FEFluidAnalysis.cpp
│ ├── FEFluidAnalysis.h
│ ├── FEFluidCOBC.cpp
│ ├── FEFluidCOBC.h
│ ├── FEFluidConstantConductivity.cpp
│ ├── FEFluidConstantConductivity.h
│ ├── FEFluidDomain.cpp
│ ├── FEFluidDomain.h
│ ├── FEFluidDomain3D.cpp
│ ├── FEFluidDomain3D.h
│ ├── FEFluidDomainFactory.cpp
│ ├── FEFluidDomainFactory.h
│ ├── FEFluidFSI.cpp
│ ├── FEFluidFSI.h
│ ├── FEFluidFSIAnalysis.cpp
│ ├── FEFluidFSIAnalysis.h
│ ├── FEFluidFSIDomain.cpp
│ ├── FEFluidFSIDomain.h
│ ├── FEFluidFSIDomain3D.cpp
│ ├── FEFluidFSIDomain3D.h
│ ├── FEFluidFSIDomainFactory.cpp
│ ├── FEFluidFSIDomainFactory.h
│ ├── FEFluidFSISolver.cpp
│ ├── FEFluidFSISolver.h
│ ├── FEFluidFSITraction.cpp
│ ├── FEFluidFSITraction.h
│ ├── FEFluidHeatSupply.cpp
│ ├── FEFluidHeatSupply.h
│ ├── FEFluidHeatSupplyConst.cpp
│ ├── FEFluidHeatSupplyConst.h
│ ├── FEFluidMaterial.cpp
│ ├── FEFluidMaterial.h
│ ├── FEFluidMaterialPoint.cpp
│ ├── FEFluidMaterialPoint.h
│ ├── FEFluidMixtureTractionLoad.cpp
│ ├── FEFluidMixtureTractionLoad.h
│ ├── FEFluidModule.cpp
│ ├── FEFluidModule.h
│ ├── FEFluidMovingFrameLoad.cpp
│ ├── FEFluidMovingFrameLoad.h
│ ├── FEFluidNaturalHeatFlux.cpp
│ ├── FEFluidNaturalHeatFlux.h
│ ├── FEFluidNormalHeatFlux.cpp
│ ├── FEFluidNormalHeatFlux.h
│ ├── FEFluidNormalTraction.cpp
│ ├── FEFluidNormalTraction.h
│ ├── FEFluidNormalVelocity.cpp
│ ├── FEFluidNormalVelocity.h
│ ├── FEFluidPressureLoad.cpp
│ ├── FEFluidPressureLoad.h
│ ├── FEFluidRCBC.cpp
│ ├── FEFluidRCBC.h
│ ├── FEFluidRCLoad.cpp
│ ├── FEFluidRCLoad.h
│ ├── FEFluidRCRBC.cpp
│ ├── FEFluidRCRBC.h
│ ├── FEFluidRCRLoad.cpp
│ ├── FEFluidRCRLoad.h
│ ├── FEFluidResidualVector.cpp
│ ├── FEFluidResidualVector.h
│ ├── FEFluidResistanceBC.cpp
│ ├── FEFluidResistanceBC.h
│ ├── FEFluidResistanceLoad.cpp
│ ├── FEFluidResistanceLoad.h
│ ├── FEFluidRotationalVelocity.cpp
│ ├── FEFluidRotationalVelocity.h
│ ├── FEFluidSoluteAnalysis.cpp
│ ├── FEFluidSolutes.cpp
│ ├── FEFluidSolutes.h
│ ├── FEFluidSolutesAnalysis.h
│ ├── FEFluidSolutesDomain3D.cpp
│ ├── FEFluidSolutesDomain3D.h
│ ├── FEFluidSolutesDomainFactory.cpp
│ ├── FEFluidSolutesDomainFactory.h
│ ├── FEFluidSolutesFlux.cpp
│ ├── FEFluidSolutesFlux.h
│ ├── FEFluidSolutesNaturalFlux.cpp
│ ├── FEFluidSolutesNaturalFlux.h
│ ├── FEFluidSolutesPressureBC.cpp
│ ├── FEFluidSolutesPressureBC.h
│ ├── FEFluidSolutesRCRBC.cpp
│ ├── FEFluidSolutesRCRBC.h
│ ├── FEFluidSolutesResistanceBC.cpp
│ ├── FEFluidSolutesResistanceBC.h
│ ├── FEFluidSolutesSolver.cpp
│ ├── FEFluidSolutesSolver.h
│ ├── FEFluidSolver.cpp
│ ├── FEFluidSolver.h
│ ├── FEFluidStressCriterion.cpp
│ ├── FEFluidStressCriterion.h
│ ├── FEFluidSupply.cpp
│ ├── FEFluidSupply.h
│ ├── FEFluidSupplyStarling.cpp
│ ├── FEFluidSupplyStarling.h
│ ├── FEFluidThermalConductivity.cpp
│ ├── FEFluidThermalConductivity.h
│ ├── FEFluidTractionLoad.cpp
│ ├── FEFluidTractionLoad.h
│ ├── FEFluidVelocity.cpp
│ ├── FEFluidVelocity.h
│ ├── FEIdealGas.cpp
│ ├── FEIdealGas.h
│ ├── FEIdealGasIsentropic.cpp
│ ├── FEIdealGasIsentropic.h
│ ├── FEIdealGasIsothermal.cpp
│ ├── FEIdealGasIsothermal.h
│ ├── FEInitialFluidAngularVelocity.cpp
│ ├── FEInitialFluidAngularVelocity.h
│ ├── FEInitialFluidDilatation.cpp
│ ├── FEInitialFluidDilatation.h
│ ├── FEInitialFluidPressure.cpp
│ ├── FEInitialFluidPressure.h
│ ├── FEInitialFluidPressureTemperature.cpp
│ ├── FEInitialFluidPressureTemperature.h
│ ├── FEInitialFluidSolutesPressure.cpp
│ ├── FEInitialFluidSolutesPressure.h
│ ├── FEInitialFluidTemperature.cpp
│ ├── FEInitialFluidTemperature.h
│ ├── FEInitialFluidVelocity.cpp
│ ├── FEInitialFluidVelocity.h
│ ├── FELinearElasticFluid.cpp
│ ├── FELinearElasticFluid.h
│ ├── FELogNonlinearElasticFluid.cpp
│ ├── FELogNonlinearElasticFluid.h
│ ├── FEMultiphasicFSI.cpp
│ ├── FEMultiphasicFSI.h
│ ├── FEMultiphasicFSIAnalysis.cpp
│ ├── FEMultiphasicFSIAnalysis.h
│ ├── FEMultiphasicFSIDomain.cpp
│ ├── FEMultiphasicFSIDomain.h
│ ├── FEMultiphasicFSIDomain3D.cpp
│ ├── FEMultiphasicFSIDomain3D.h
│ ├── FEMultiphasicFSIDomainFactory.cpp
│ ├── FEMultiphasicFSIDomainFactory.h
│ ├── FEMultiphasicFSIPressure.cpp
│ ├── FEMultiphasicFSIPressure.h
│ ├── FEMultiphasicFSIPressureBC.cpp
│ ├── FEMultiphasicFSIPressureBC.h
│ ├── FEMultiphasicFSISoluteBackflowStabilization.cpp
│ ├── FEMultiphasicFSISoluteBackflowStabilization.h
│ ├── FEMultiphasicFSISoluteFlux.cpp
│ ├── FEMultiphasicFSISoluteFlux.h
│ ├── FEMultiphasicFSISolver.cpp
│ ├── FEMultiphasicFSISolver.h
│ ├── FENewtonianFluid.cpp
│ ├── FENewtonianFluid.h
│ ├── FENewtonianRealVapor.cpp
│ ├── FENewtonianRealVapor.h
│ ├── FENewtonianThermoFluid.cpp
│ ├── FENewtonianThermoFluid.h
│ ├── FENonlinearElasticFluid.cpp
│ ├── FENonlinearElasticFluid.h
│ ├── FEPolarFluid.cpp
│ ├── FEPolarFluid.h
│ ├── FEPolarFluidAnalysis.cpp
│ ├── FEPolarFluidAnalysis.h
│ ├── FEPolarFluidDomain.cpp
│ ├── FEPolarFluidDomain.h
│ ├── FEPolarFluidDomain3D.cpp
│ ├── FEPolarFluidDomain3D.h
│ ├── FEPolarFluidDomainFactory.cpp
│ ├── FEPolarFluidDomainFactory.h
│ ├── FEPolarFluidMaterial.cpp
│ ├── FEPolarFluidMaterial.h
│ ├── FEPolarFluidMaterialPoint.cpp
│ ├── FEPolarFluidMaterialPoint.h
│ ├── FEPolarFluidSolver.cpp
│ ├── FEPolarFluidSolver.h
│ ├── FEPowellEyringFluid.cpp
│ ├── FEPowellEyringFluid.h
│ ├── FEPrescribedFluidAngularVelocity.cpp
│ ├── FEPrescribedFluidAngularVelocity.h
│ ├── FEPrescribedFluidDilatation.cpp
│ ├── FEPrescribedFluidDilatation.h
│ ├── FEPrescribedFluidPressure.cpp
│ ├── FEPrescribedFluidPressure.h
│ ├── FEPrescribedFluidTemperature.cpp
│ ├── FEPrescribedFluidTemperature.h
│ ├── FEPrescribedFluidVelocity.cpp
│ ├── FEPrescribedFluidVelocity.h
│ ├── FEQuemadaFluid.cpp
│ ├── FEQuemadaFluid.h
│ ├── FERealGas.cpp
│ ├── FERealGas.h
│ ├── FERealLiquid.cpp
│ ├── FERealLiquid.h
│ ├── FERealVapor.cpp
│ ├── FERealVapor.h
│ ├── FESoluteBackflowStabilization.cpp
│ ├── FESoluteBackflowStabilization.h
│ ├── FESoluteConvectiveFlow.cpp
│ ├── FESoluteConvectiveFlow.h
│ ├── FESolutesDomain.cpp
│ ├── FESolutesDomain.h
│ ├── FESolutesDomainFactory.cpp
│ ├── FESolutesDomainFactory.h
│ ├── FESolutesMaterial.cpp
│ ├── FESolutesMaterial.h
│ ├── FESolutesSolver.cpp
│ ├── FESolutesSolver.h
│ ├── FETangentialDamping.cpp
│ ├── FETangentialDamping.h
│ ├── FETangentialFlowFSIStabilization.cpp
│ ├── FETangentialFlowFSIStabilization.h
│ ├── FETangentialFlowPFStabilization.cpp
│ ├── FETangentialFlowPFStabilization.h
│ ├── FETangentialFlowStabilization.cpp
│ ├── FETangentialFlowStabilization.h
│ ├── FETempDependentConductivity.cpp
│ ├── FETempDependentConductivity.h
│ ├── FETemperatureBackFlowStabilization.cpp
│ ├── FETemperatureBackFlowStabilization.h
│ ├── FEThermoFluid.cpp
│ ├── FEThermoFluid.h
│ ├── FEThermoFluidAnalysis.cpp
│ ├── FEThermoFluidAnalysis.h
│ ├── FEThermoFluidDomain3D.cpp
│ ├── FEThermoFluidDomain3D.h
│ ├── FEThermoFluidDomainFactory.cpp
│ ├── FEThermoFluidDomainFactory.h
│ ├── FEThermoFluidMaterialPoint.cpp
│ ├── FEThermoFluidMaterialPoint.h
│ ├── FEThermoFluidPressureBC.cpp
│ ├── FEThermoFluidPressureBC.h
│ ├── FEThermoFluidPressureLoad.cpp
│ ├── FEThermoFluidPressureLoad.h
│ ├── FEThermoFluidSolver.cpp
│ ├── FEThermoFluidSolver.h
│ ├── FEThermoFluidTemperatureBC.cpp
│ ├── FEThermoFluidTemperatureBC.h
│ ├── FEThermoViscousFluid.h
│ ├── FETiedFluidInterface.cpp
│ ├── FETiedFluidInterface.h
│ ├── FEViscousFluid.cpp
│ ├── FEViscousFluid.h
│ ├── FEViscousPolarFluid.cpp
│ ├── FEViscousPolarFluid.h
│ ├── FEViscousPolarLinear.cpp
│ ├── FEViscousPolarLinear.h
│ ├── febiofluid_api.h
│ └── stdafx.h
├── FEBioLib/
│ ├── FEBioConfig.cpp
│ ├── FEBioConfig.h
│ ├── FEBioModel.cpp
│ ├── FEBioModel.h
│ ├── FEBioModelBuilder.cpp
│ ├── FEBioModelBuilder.h
│ ├── FEBioRestart.cpp
│ ├── FEBioRestart.h
│ ├── FEBioStdSolver.cpp
│ ├── FEBioStdSolver.h
│ ├── FEBox.cpp
│ ├── FEBox.h
│ ├── LogFileStream.cpp
│ ├── LogFileStream.h
│ ├── LogStream.cpp
│ ├── LogStream.h
│ ├── Logfile.cpp
│ ├── Logfile.h
│ ├── cmdoptions.cpp
│ ├── cmdoptions.h
│ ├── config.cpp
│ ├── febio.h
│ ├── febiolib.cpp
│ ├── febiolib_api.h
│ ├── febiolib_types.h
│ ├── getapppath.cpp
│ ├── hello.cpp
│ ├── input.cpp
│ ├── memory.cpp
│ ├── plugin.cpp
│ ├── plugin.h
│ ├── stdafx.cpp
│ ├── stdafx.h
│ ├── targetver.h
│ ├── version.cpp
│ └── version.h
├── FEBioMech/
│ ├── FE2DFiberNeoHookean.cpp
│ ├── FE2DFiberNeoHookean.h
│ ├── FE2DTransIsoMooneyRivlin.cpp
│ ├── FE2DTransIsoMooneyRivlin.h
│ ├── FE2DTransIsoVerondaWestmann.cpp
│ ├── FE2DTransIsoVerondaWestmann.h
│ ├── FE3FieldElasticShellDomain.cpp
│ ├── FE3FieldElasticShellDomain.h
│ ├── FE3FieldElasticSolidDomain.cpp
│ ├── FE3FieldElasticSolidDomain.h
│ ├── FEABUnconstrained.cpp
│ ├── FEABUnconstrained.h
│ ├── FEActiveContractionMaterial.cpp
│ ├── FEActiveContractionMaterial.h
│ ├── FEActiveFiberContraction.cpp
│ ├── FEActiveFiberContraction.h
│ ├── FEActiveFiberStress.cpp
│ ├── FEActiveFiberStress.h
│ ├── FEActiveFiberStressUC.cpp
│ ├── FEActiveFiberStressUC.h
│ ├── FEArrudaBoyce.cpp
│ ├── FEArrudaBoyce.h
│ ├── FEAxialBodyForce.cpp
│ ├── FEAxialBodyForce.h
│ ├── FEAzimuthConstraint.cpp
│ ├── FEAzimuthConstraint.h
│ ├── FEBCPrescribedDeformation.cpp
│ ├── FEBCPrescribedDeformation.h
│ ├── FEBCRigidDeformation.cpp
│ ├── FEBCRigidDeformation.h
│ ├── FEBearingLoad.cpp
│ ├── FEBearingLoad.h
│ ├── FEBioMech.cpp
│ ├── FEBioMech.h
│ ├── FEBioMechData.cpp
│ ├── FEBioMechData.h
│ ├── FEBioMechModule.cpp
│ ├── FEBioMechModule.h
│ ├── FEBioMechPlot.cpp
│ ├── FEBioMechPlot.h
│ ├── FEBodyForce.cpp
│ ├── FEBodyForce.h
│ ├── FEBondRecruitment.cpp
│ ├── FEBondRecruitment.h
│ ├── FEBondRelaxation.cpp
│ ├── FEBondRelaxation.h
│ ├── FECGSolidSolver.cpp
│ ├── FECGSolidSolver.h
│ ├── FECarreauYasudaViscousSolid.cpp
│ ├── FECarreauYasudaViscousSolid.h
│ ├── FECarterHayesOld.cpp
│ ├── FECarterHayesOld.h
│ ├── FECellGrowth.cpp
│ ├── FECellGrowth.h
│ ├── FECentrifugalBodyForce.cpp
│ ├── FECentrifugalBodyForce.h
│ ├── FEConstPrestrain.cpp
│ ├── FEConstPrestrain.h
│ ├── FEContactGapCriterion.cpp
│ ├── FEContactGapCriterion.h
│ ├── FEContactInterface.cpp
│ ├── FEContactInterface.h
│ ├── FEContactPotential.cpp
│ ├── FEContactPotential.h
│ ├── FEContactSurface.cpp
│ ├── FEContactSurface.h
│ ├── FEContinuousElasticDamage.cpp
│ ├── FEContinuousElasticDamage.h
│ ├── FEContinuousFiberDistribution.cpp
│ ├── FEContinuousFiberDistribution.h
│ ├── FEContinuousFiberDistributionUC.cpp
│ ├── FEContinuousFiberDistributionUC.h
│ ├── FECoupledMooneyRivlin.cpp
│ ├── FECoupledMooneyRivlin.h
│ ├── FECoupledTransIsoMooneyRivlin.cpp
│ ├── FECoupledTransIsoMooneyRivlin.h
│ ├── FECoupledTransIsoVerondaWestmann.cpp
│ ├── FECoupledTransIsoVerondaWestmann.h
│ ├── FECoupledVerondaWestmann.cpp
│ ├── FECoupledVerondaWestmann.h
│ ├── FECubicCLE.cpp
│ ├── FECubicCLE.h
│ ├── FEDamageCDF.cpp
│ ├── FEDamageCDF.h
│ ├── FEDamageCriterion.cpp
│ ├── FEDamageCriterion.h
│ ├── FEDamageMaterial.cpp
│ ├── FEDamageMaterial.h
│ ├── FEDamageMaterialPoint.cpp
│ ├── FEDamageMaterialPoint.h
│ ├── FEDamageMaterialUC.cpp
│ ├── FEDamageMaterialUC.h
│ ├── FEDamageMooneyRivlin.cpp
│ ├── FEDamageMooneyRivlin.h
│ ├── FEDamageNeoHookean.cpp
│ ├── FEDamageNeoHookean.h
│ ├── FEDamageTransIsoMooneyRivlin.cpp
│ ├── FEDamageTransIsoMooneyRivlin.h
│ ├── FEDeformableSpringDomain.cpp
│ ├── FEDeformableSpringDomain.h
│ ├── FEDeformationMapGenerator.cpp
│ ├── FEDeformationMapGenerator.h
│ ├── FEDiscreteContact.cpp
│ ├── FEDiscreteContact.h
│ ├── FEDiscreteElasticDomain.cpp
│ ├── FEDiscreteElasticDomain.h
│ ├── FEDiscreteElasticMaterial.cpp
│ ├── FEDiscreteElasticMaterial.h
│ ├── FEDiscreteElementMaterial.cpp
│ ├── FEDiscreteElementMaterial.h
│ ├── FEDistanceConstraint.cpp
│ ├── FEDistanceConstraint.h
│ ├── FEDonnanEquilibrium.cpp
│ ├── FEDonnanEquilibrium.h
│ ├── FEEFDDonnanEquilibrium.cpp
│ ├── FEEFDDonnanEquilibrium.h
│ ├── FEEFDMooneyRivlin.cpp
│ ├── FEEFDMooneyRivlin.h
│ ├── FEEFDNeoHookean.cpp
│ ├── FEEFDNeoHookean.h
│ ├── FEEFDUncoupled.cpp
│ ├── FEEFDUncoupled.h
│ ├── FEEFDVerondaWestmann.cpp
│ ├── FEEFDVerondaWestmann.h
│ ├── FEEdgeToSurfaceContactPotential.cpp
│ ├── FEEdgeToSurfaceContactPotential.h
│ ├── FEEdgeToSurfaceSlidingContact.cpp
│ ├── FEEdgeToSurfaceSlidingContact.h
│ ├── FEElasticANSShellDomain.cpp
│ ├── FEElasticANSShellDomain.h
│ ├── FEElasticBeamDomain.cpp
│ ├── FEElasticBeamDomain.h
│ ├── FEElasticBeamMaterial.cpp
│ ├── FEElasticBeamMaterial.h
│ ├── FEElasticDomain.cpp
│ ├── FEElasticDomain.h
│ ├── FEElasticEASShellDomain.cpp
│ ├── FEElasticEASShellDomain.h
│ ├── FEElasticFiberMaterial.cpp
│ ├── FEElasticFiberMaterial.h
│ ├── FEElasticFiberMaterialUC.cpp
│ ├── FEElasticFiberMaterialUC.h
│ ├── FEElasticMaterial.cpp
│ ├── FEElasticMaterial.h
│ ├── FEElasticMaterialPoint.cpp
│ ├── FEElasticMaterialPoint.h
│ ├── FEElasticMixture.cpp
│ ├── FEElasticMixture.h
│ ├── FEElasticMultigeneration.cpp
│ ├── FEElasticMultigeneration.h
│ ├── FEElasticShellDomain.cpp
│ ├── FEElasticShellDomain.h
│ ├── FEElasticShellDomainOld.cpp
│ ├── FEElasticShellDomainOld.h
│ ├── FEElasticSolidDomain.cpp
│ ├── FEElasticSolidDomain.h
│ ├── FEElasticTrussDomain.cpp
│ ├── FEElasticTrussDomain.h
│ ├── FEEllipsoidalFiberDistribution.cpp
│ ├── FEEllipsoidalFiberDistribution.h
│ ├── FEExplicitSolidSolver.cpp
│ ├── FEExplicitSolidSolver.h
│ ├── FEFacet2FacetSliding.cpp
│ ├── FEFacet2FacetSliding.h
│ ├── FEFacet2FacetTied.cpp
│ ├── FEFacet2FacetTied.h
│ ├── FEFiberCDF.cpp
│ ├── FEFiberCDF.h
│ ├── FEFiberCDFMaterialPoint.cpp
│ ├── FEFiberCDFMaterialPoint.h
│ ├── FEFiberCDFUncoupled.cpp
│ ├── FEFiberCDFUncoupled.h
│ ├── FEFiberDensityDistribution.cpp
│ ├── FEFiberDensityDistribution.h
│ ├── FEFiberEFDNeoHookean.cpp
│ ├── FEFiberEFDNeoHookean.h
│ ├── FEFiberEntropyChain.cpp
│ ├── FEFiberEntropyChain.h
│ ├── FEFiberEntropyChainUC.cpp
│ ├── FEFiberEntropyChainUC.h
│ ├── FEFiberExpLinear.cpp
│ ├── FEFiberExpLinear.h
│ ├── FEFiberExpPow.cpp
│ ├── FEFiberExpPow.h
│ ├── FEFiberExpPowUncoupled.cpp
│ ├── FEFiberExpPowUncoupled.h
│ ├── FEFiberExponentialPowerUC.cpp
│ ├── FEFiberExponentialPowerUC.h
│ ├── FEFiberIntegrationGauss.cpp
│ ├── FEFiberIntegrationGauss.h
│ ├── FEFiberIntegrationGaussKronrod.cpp
│ ├── FEFiberIntegrationGaussKronrod.h
│ ├── FEFiberIntegrationGeodesic.cpp
│ ├── FEFiberIntegrationGeodesic.h
│ ├── FEFiberIntegrationScheme.cpp
│ ├── FEFiberIntegrationScheme.h
│ ├── FEFiberIntegrationTrapezoidal.cpp
│ ├── FEFiberIntegrationTrapezoidal.h
│ ├── FEFiberIntegrationTriangle.cpp
│ ├── FEFiberIntegrationTriangle.h
│ ├── FEFiberKiousisUncoupled.cpp
│ ├── FEFiberKiousisUncoupled.h
│ ├── FEFiberMaterial.cpp
│ ├── FEFiberMaterial.h
│ ├── FEFiberMaterialPoint.cpp
│ ├── FEFiberMaterialPoint.h
│ ├── FEFiberNHUC.cpp
│ ├── FEFiberNHUC.h
│ ├── FEFiberNaturalNeoHookean.cpp
│ ├── FEFiberNaturalNeoHookean.h
│ ├── FEFiberNeoHookean.cpp
│ ├── FEFiberNeoHookean.h
│ ├── FEFiberPow.cpp
│ ├── FEFiberPow.h
│ ├── FEFiberPowLinear.cpp
│ ├── FEFiberPowLinear.h
│ ├── FEFiberPowLinearUncoupled.cpp
│ ├── FEFiberPowLinearUncoupled.h
│ ├── FEFixedDisplacement.cpp
│ ├── FEFixedDisplacement.h
│ ├── FEFixedNormalDisplacement.cpp
│ ├── FEFixedNormalDisplacement.h
│ ├── FEFixedRotation.cpp
│ ├── FEFixedRotation.h
│ ├── FEFixedShellDisplacement.cpp
│ ├── FEFixedShellDisplacement.h
│ ├── FEForceVelocityContraction.cpp
│ ├── FEForceVelocityContraction.h
│ ├── FEFungOrthoCompressible.cpp
│ ├── FEFungOrthoCompressible.h
│ ├── FEFungOrthotropic.cpp
│ ├── FEFungOrthotropic.h
│ ├── FEGenericBodyForce.cpp
│ ├── FEGenericBodyForce.h
│ ├── FEGenericHyperelastic.cpp
│ ├── FEGenericHyperelastic.h
│ ├── FEGenericHyperelasticUC.cpp
│ ├── FEGenericHyperelasticUC.h
│ ├── FEGenericRigidJoint.cpp
│ ├── FEGenericRigidJoint.h
│ ├── FEGenericTransIsoHyperelastic.cpp
│ ├── FEGenericTransIsoHyperelastic.h
│ ├── FEGenericTransIsoHyperelasticUC.cpp
│ ├── FEGenericTransIsoHyperelasticUC.h
│ ├── FEGentMaterial.cpp
│ ├── FEGentMaterial.h
│ ├── FEGrowthTensor.cpp
│ ├── FEGrowthTensor.h
│ ├── FEHGOCoronary.cpp
│ ├── FEHGOCoronary.h
│ ├── FEHolmesMow.cpp
│ ├── FEHolmesMow.h
│ ├── FEHolmesMowUC.cpp
│ ├── FEHolmesMowUC.h
│ ├── FEHolzapfelGasserOgden.cpp
│ ├── FEHolzapfelGasserOgden.h
│ ├── FEHolzapfelUnconstrained.cpp
│ ├── FEHolzapfelUnconstrained.h
│ ├── FEHuiskesSupply.cpp
│ ├── FEHuiskesSupply.h
│ ├── FEIdealGasPressure.cpp
│ ├── FEIdealGasPressure.h
│ ├── FEInSituStretchGradient.cpp
│ ├── FEInSituStretchGradient.h
│ ├── FEIncompNeoHookean.cpp
│ ├── FEIncompNeoHookean.h
│ ├── FEInitialDisplacement.cpp
│ ├── FEInitialDisplacement.h
│ ├── FEInitialPreStrain.cpp
│ ├── FEInitialPreStrain.h
│ ├── FEInitialRigidKinematics.cpp
│ ├── FEInitialRigidKinematics.h
│ ├── FEInitialVelocity.cpp
│ ├── FEInitialVelocity.h
│ ├── FEIsoHencky.cpp
│ ├── FEIsoHencky.h
│ ├── FEIsotropicElastic.cpp
│ ├── FEIsotropicElastic.h
│ ├── FEIsotropicLeeSacks.cpp
│ ├── FEIsotropicLeeSacks.h
│ ├── FEIsotropicLeeSacksUncoupled.cpp
│ ├── FEIsotropicLeeSacksUncoupled.h
│ ├── FEKinematicGrowth.cpp
│ ├── FEKinematicGrowth.h
│ ├── FELinearTrussDomain.cpp
│ ├── FELinearTrussDomain.h
│ ├── FELungMaterial.cpp
│ ├── FELungMaterial.h
│ ├── FEMRVonMisesFibers.cpp
│ ├── FEMRVonMisesFibers.h
│ ├── FEMassDamping.cpp
│ ├── FEMassDamping.h
│ ├── FEMaxDamageCriterion.cpp
│ ├── FEMaxDamageCriterion.h
│ ├── FEMaxStressCriterion.cpp
│ ├── FEMaxStressCriterion.h
│ ├── FEMechModel.cpp
│ ├── FEMechModel.h
│ ├── FEMembraneMaterial.cpp
│ ├── FEMembraneMaterial.h
│ ├── FEMooneyRivlin.cpp
│ ├── FEMooneyRivlin.h
│ ├── FEMooneyRivlinAD.cpp
│ ├── FEMooneyRivlinAD.h
│ ├── FEMortarContactSurface.cpp
│ ├── FEMortarContactSurface.h
│ ├── FEMortarInterface.cpp
│ ├── FEMortarInterface.h
│ ├── FEMortarSlidingContact.cpp
│ ├── FEMortarSlidingContact.h
│ ├── FEMortarTiedContact.cpp
│ ├── FEMortarTiedContact.h
│ ├── FEMovingFrameLoad.cpp
│ ├── FEMovingFrameLoad.h
│ ├── FEMuscleMaterial.cpp
│ ├── FEMuscleMaterial.h
│ ├── FENaturalNeoHookean.cpp
│ ├── FENaturalNeoHookean.h
│ ├── FENeoHookean.cpp
│ ├── FENeoHookean.h
│ ├── FENeoHookeanAD.cpp
│ ├── FENeoHookeanAD.h
│ ├── FENeoHookeanTransIso.cpp
│ ├── FENeoHookeanTransIso.h
│ ├── FENewtonianViscousSolid.cpp
│ ├── FENewtonianViscousSolid.h
│ ├── FENewtonianViscousSolidUC.cpp
│ ├── FENewtonianViscousSolidUC.h
│ ├── FENodalForce.cpp
│ ├── FENodalForce.h
│ ├── FENodalTargetForce.cpp
│ ├── FENodalTargetForce.h
│ ├── FENodeToNodeConstraint.cpp
│ ├── FENodeToNodeConstraint.h
│ ├── FENonlinearSpring.cpp
│ ├── FENonlinearSpring.h
│ ├── FEODFFiberDistribution.cpp
│ ├── FEODFFiberDistribution.h
│ ├── FEOgdenMaterial.cpp
│ ├── FEOgdenMaterial.h
│ ├── FEOgdenUnconstrained.cpp
│ ├── FEOgdenUnconstrained.h
│ ├── FEOrthoElastic.cpp
│ ├── FEOrthoElastic.h
│ ├── FEOrthotropicCLE.cpp
│ ├── FEOrthotropicCLE.h
│ ├── FEOsmoticVirialExpansion.cpp
│ ├── FEOsmoticVirialExpansion.h
│ ├── FEPRLig.cpp
│ ├── FEPRLig.h
│ ├── FEPerfectOsmometer.cpp
│ ├── FEPerfectOsmometer.h
│ ├── FEPeriodicBoundary.cpp
│ ├── FEPeriodicBoundary.h
│ ├── FEPeriodicSurfaceConstraint.cpp
│ ├── FEPeriodicSurfaceConstraint.h
│ ├── FEPipetteAspiration.cpp
│ ├── FEPipetteAspiration.h
│ ├── FEPlasticFlowCurve.cpp
│ ├── FEPlasticFlowCurve.h
│ ├── FEPointBodyForce.cpp
│ ├── FEPointBodyForce.h
│ ├── FEPointConstraint.cpp
│ ├── FEPointConstraint.h
│ ├── FEPolynomalHyperElastic.cpp
│ ├── FEPolynomialHyperElastic.h
│ ├── FEPreStrainConstraint.cpp
│ ├── FEPreStrainConstraint.h
│ ├── FEPreStrainElastic.cpp
│ ├── FEPreStrainElastic.h
│ ├── FEPreStrainUncoupledElastic.cpp
│ ├── FEPreStrainUncoupledElastic.h
│ ├── FEPrescribedActiveContractionIsotropic.cpp
│ ├── FEPrescribedActiveContractionIsotropic.h
│ ├── FEPrescribedActiveContractionIsotropicUC.cpp
│ ├── FEPrescribedActiveContractionIsotropicUC.h
│ ├── FEPrescribedActiveContractionTransIso.cpp
│ ├── FEPrescribedActiveContractionTransIso.h
│ ├── FEPrescribedActiveContractionTransIsoUC.cpp
│ ├── FEPrescribedActiveContractionTransIsoUC.h
│ ├── FEPrescribedActiveContractionUniaxial.cpp
│ ├── FEPrescribedActiveContractionUniaxial.h
│ ├── FEPrescribedActiveContractionUniaxialUC.cpp
│ ├── FEPrescribedActiveContractionUniaxialUC.h
│ ├── FEPrescribedDisplacement.cpp
│ ├── FEPrescribedDisplacement.h
│ ├── FEPrescribedNormalDisplacement.cpp
│ ├── FEPrescribedNormalDisplacement.h
│ ├── FEPrescribedRotation.cpp
│ ├── FEPrescribedRotation.h
│ ├── FEPrescribedShellDisplacement.cpp
│ ├── FEPrescribedShellDisplacement.h
│ ├── FEPressureLoad.cpp
│ ├── FEPressureLoad.h
│ ├── FEPressureRobinBC.cpp
│ ├── FEPressureRobinBC.h
│ ├── FERVEDamageMaterial.cpp
│ ├── FERVEDamageMaterial.h
│ ├── FERVEFatigueMaterial.cpp
│ ├── FERVEFatigueMaterial.h
│ ├── FERadialBodyForce.cpp
│ ├── FERadialBodyForce.h
│ ├── FEReactiveFatigue.cpp
│ ├── FEReactiveFatigue.h
│ ├── FEReactiveFatigueMaterialPoint.cpp
│ ├── FEReactiveFatigueMaterialPoint.h
│ ├── FEReactiveMaterialPoint.cpp
│ ├── FEReactiveMaterialPoint.h
│ ├── FEReactivePlasticDamage.cpp
│ ├── FEReactivePlasticDamage.h
│ ├── FEReactivePlasticDamageMaterialPoint.cpp
│ ├── FEReactivePlasticDamageMaterialPoint.h
│ ├── FEReactivePlasticity.cpp
│ ├── FEReactivePlasticity.h
│ ├── FEReactivePlasticityMaterialPoint.cpp
│ ├── FEReactivePlasticityMaterialPoint.h
│ ├── FEReactiveVEMaterialPoint.cpp
│ ├── FEReactiveVEMaterialPoint.h
│ ├── FEReactiveViscoelastic.cpp
│ ├── FEReactiveViscoelastic.h
│ ├── FERelativeVolumeCriterion.cpp
│ ├── FERelativeVolumeCriterion.h
│ ├── FERemodelingElasticDomain.cpp
│ ├── FERemodelingElasticDomain.h
│ ├── FERemodelingElasticMaterial.cpp
│ ├── FERemodelingElasticMaterial.h
│ ├── FEResidualVector.cpp
│ ├── FEResidualVector.h
│ ├── FERigidAngularDamper.cpp
│ ├── FERigidAngularDamper.h
│ ├── FERigidBody.cpp
│ ├── FERigidBody.h
│ ├── FERigidCable.cpp
│ ├── FERigidCable.h
│ ├── FERigidConnector.cpp
│ ├── FERigidConnector.h
│ ├── FERigidContractileForce.cpp
│ ├── FERigidContractileForce.h
│ ├── FERigidCylindricalJoint.cpp
│ ├── FERigidCylindricalJoint.h
│ ├── FERigidDamper.cpp
│ ├── FERigidDamper.h
│ ├── FERigidEulerAngles.cpp
│ ├── FERigidEulerAngles.h
│ ├── FERigidFollowerForce.cpp
│ ├── FERigidFollowerForce.h
│ ├── FERigidFollowerMoment.cpp
│ ├── FERigidFollowerMoment.h
│ ├── FERigidForce.cpp
│ ├── FERigidForce.h
│ ├── FERigidJoint.cpp
│ ├── FERigidJoint.h
│ ├── FERigidLock.cpp
│ ├── FERigidLock.h
│ ├── FERigidMaterial.cpp
│ ├── FERigidMaterial.h
│ ├── FERigidNodeSet.cpp
│ ├── FERigidNodeSet.h
│ ├── FERigidPlanarJoint.cpp
│ ├── FERigidPlanarJoint.h
│ ├── FERigidPrismaticJoint.cpp
│ ├── FERigidPrismaticJoint.h
│ ├── FERigidRevoluteJoint.cpp
│ ├── FERigidRevoluteJoint.h
│ ├── FERigidRotationVector.cpp
│ ├── FERigidRotationVector.h
│ ├── FERigidShellDomain.cpp
│ ├── FERigidShellDomain.h
│ ├── FERigidSolidDomain.cpp
│ ├── FERigidSolidDomain.h
│ ├── FERigidSolver.cpp
│ ├── FERigidSolver.h
│ ├── FERigidSphericalJoint.cpp
│ ├── FERigidSphericalJoint.h
│ ├── FERigidSpring.cpp
│ ├── FERigidSpring.h
│ ├── FERigidSystem.cpp
│ ├── FERigidSystem.h
│ ├── FERigidWallInterface.cpp
│ ├── FERigidWallInterface.h
│ ├── FESRIElasticSolidDomain.cpp
│ ├── FESRIElasticSolidDomain.h
│ ├── FESSIShellDomain.cpp
│ ├── FESSIShellDomain.h
│ ├── FEScaledElasticMaterial.cpp
│ ├── FEScaledElasticMaterial.h
│ ├── FEScaledUncoupledMaterial.cpp
│ ├── FEScaledUncoupledMaterial.h
│ ├── FEScriptedBodyForce.cpp
│ ├── FEScriptedBodyForce.h
│ ├── FEScriptedDisplacementBC.cpp
│ ├── FEScriptedDisplacementBC.h
│ ├── FEScriptedPressureLoad.cpp
│ ├── FEScriptedPressureLoad.h
│ ├── FEScriptedTractionLoad.cpp
│ ├── FEScriptedTractionLoad.h
│ ├── FEShenoyMaterial.cpp
│ ├── FEShenoyMaterial.h
│ ├── FESlideLineConstraint.cpp
│ ├── FESlideLineConstraint.h
│ ├── FESlidingElasticInterface.cpp
│ ├── FESlidingElasticInterface.h
│ ├── FESlidingInterface.cpp
│ ├── FESlidingInterface.h
│ ├── FESolidAnalysis.cpp
│ ├── FESolidAnalysis.h
│ ├── FESolidDomainFactory.cpp
│ ├── FESolidDomainFactory.h
│ ├── FESolidLinearSystem.cpp
│ ├── FESolidLinearSystem.h
│ ├── FESolidMaterial.cpp
│ ├── FESolidMaterial.h
│ ├── FESolidModule.cpp
│ ├── FESolidModule.h
│ ├── FESolidSolver.cpp
│ ├── FESolidSolver.h
│ ├── FESolidSolver2.cpp
│ ├── FESolidSolver2.h
│ ├── FESphericalFiberDistribution.cpp
│ ├── FESphericalFiberDistribution.h
│ ├── FESpringMaterial.cpp
│ ├── FESpringMaterial.h
│ ├── FESpringRuptureCriterion.cpp
│ ├── FESpringRuptureCriterion.h
│ ├── FEStVenantKirchhoff.cpp
│ ├── FEStVenantKirchhoff.h
│ ├── FEStickyInterface.cpp
│ ├── FEStickyInterface.h
│ ├── FESurfaceAttractionBodyForce.cpp
│ ├── FESurfaceAttractionBodyForce.h
│ ├── FESurfaceForceUniform.cpp
│ ├── FESurfaceForceUniform.h
│ ├── FESymmetryPlane.cpp
│ ├── FESymmetryPlane.h
│ ├── FETCNonlinearOrthotropic.cpp
│ ├── FETCNonlinearOrthotropic.h
│ ├── FETendonMaterial.cpp
│ ├── FETendonMaterial.h
│ ├── FETiedContactSurface.cpp
│ ├── FETiedContactSurface.h
│ ├── FETiedElasticInterface.cpp
│ ├── FETiedElasticInterface.h
│ ├── FETiedInterface.cpp
│ ├── FETiedInterface.h
│ ├── FETiedLineConstraint.cpp
│ ├── FETiedLineConstraint.h
│ ├── FETorsionalSpring.cpp
│ ├── FETorsionalSpring.h
│ ├── FETraceFreeNeoHookean.cpp
│ ├── FETraceFreeNeoHookean.h
│ ├── FETractionLoad.cpp
│ ├── FETractionLoad.h
│ ├── FETractionRobinBC.cpp
│ ├── FETractionRobinBC.h
│ ├── FETransIsoMREstrada.cpp
│ ├── FETransIsoMREstrada.h
│ ├── FETransIsoMooneyRivlin.cpp
│ ├── FETransIsoMooneyRivlin.h
│ ├── FETransIsoVerondaWestmann.cpp
│ ├── FETransIsoVerondaWestmann.h
│ ├── FETrussMaterial.cpp
│ ├── FETrussMaterial.h
│ ├── FEUDGHexDomain.cpp
│ ├── FEUDGHexDomain.h
│ ├── FEUT4Domain.cpp
│ ├── FEUT4Domain.h
│ ├── FEUncoupledActiveContraction.cpp
│ ├── FEUncoupledActiveContraction.h
│ ├── FEUncoupledActiveFiberContraction.cpp
│ ├── FEUncoupledActiveFiberContraction.h
│ ├── FEUncoupledElasticMixture.cpp
│ ├── FEUncoupledElasticMixture.h
│ ├── FEUncoupledFiberExpLinear.cpp
│ ├── FEUncoupledFiberExpLinear.h
│ ├── FEUncoupledMaterial.cpp
│ ├── FEUncoupledMaterial.h
│ ├── FEUncoupledReactiveFatigue.cpp
│ ├── FEUncoupledReactiveFatigue.h
│ ├── FEUncoupledReactiveViscoelastic.cpp
│ ├── FEUncoupledReactiveViscoelastic.h
│ ├── FEUncoupledViscoElasticDamage.cpp
│ ├── FEUncoupledViscoElasticDamage.h
│ ├── FEUncoupledViscoElasticMaterial.cpp
│ ├── FEUncoupledViscoElasticMaterial.h
│ ├── FEVerondaWestmann.cpp
│ ├── FEVerondaWestmann.h
│ ├── FEViscoElasticDamage.cpp
│ ├── FEViscoElasticDamage.h
│ ├── FEViscoElasticMaterial.cpp
│ ├── FEViscoElasticMaterial.h
│ ├── FEVolumeConstraint.cpp
│ ├── FEVolumeConstraint.h
│ ├── FEVonMisesPlasticity.cpp
│ ├── FEVonMisesPlasticity.h
│ ├── FEWrinkleOgdenMaterial.cpp
│ ├── FEWrinkleOgdenMaterial.h
│ ├── FEYeoh.cpp
│ ├── FEYeoh.h
│ ├── ObjectDataRecord.cpp
│ ├── ObjectDataRecord.h
│ ├── RigidBC.cpp
│ ├── RigidBC.h
│ ├── adcm.h
│ ├── febiomech_api.h
│ ├── gauss.h
│ ├── gausskronrod.h
│ ├── geodesic.h
│ ├── stdafx.cpp
│ ├── stdafx.h
│ └── triangle_sphere.h
├── FEBioMix/
│ ├── FEActiveConstantSupply.cpp
│ ├── FEActiveConstantSupply.h
│ ├── FEActiveMomentumSupply.cpp
│ ├── FEActiveMomentumSupply.h
│ ├── FEBioMix.cpp
│ ├── FEBioMix.h
│ ├── FEBioMixData.cpp
│ ├── FEBioMixData.h
│ ├── FEBioMixPlot.cpp
│ ├── FEBioMixPlot.h
│ ├── FEBiphasic.cpp
│ ├── FEBiphasic.h
│ ├── FEBiphasicAnalysis.cpp
│ ├── FEBiphasicAnalysis.h
│ ├── FEBiphasicContactSurface.cpp
│ ├── FEBiphasicContactSurface.h
│ ├── FEBiphasicDomain.cpp
│ ├── FEBiphasicDomain.h
│ ├── FEBiphasicModule.cpp
│ ├── FEBiphasicModule.h
│ ├── FEBiphasicShellDomain.cpp
│ ├── FEBiphasicShellDomain.h
│ ├── FEBiphasicSolidDomain.cpp
│ ├── FEBiphasicSolidDomain.h
│ ├── FEBiphasicSolute.cpp
│ ├── FEBiphasicSolute.h
│ ├── FEBiphasicSoluteAnalysis.cpp
│ ├── FEBiphasicSoluteAnalysis.h
│ ├── FEBiphasicSoluteDomain.cpp
│ ├── FEBiphasicSoluteDomain.h
│ ├── FEBiphasicSoluteShellDomain.cpp
│ ├── FEBiphasicSoluteShellDomain.h
│ ├── FEBiphasicSoluteSolidDomain.cpp
│ ├── FEBiphasicSoluteSolidDomain.h
│ ├── FEBiphasicSoluteSolver.cpp
│ ├── FEBiphasicSoluteSolver.h
│ ├── FEBiphasicSolver.cpp
│ ├── FEBiphasicSolver.h
│ ├── FECarterHayes.cpp
│ ├── FECarterHayes.h
│ ├── FEChemicalReaction.cpp
│ ├── FEChemicalReaction.h
│ ├── FEConcentrationIndependentReaction.cpp
│ ├── FEConcentrationIndependentReaction.h
│ ├── FEDiffAlbroIso.cpp
│ ├── FEDiffAlbroIso.h
│ ├── FEDiffConstIso.cpp
│ ├── FEDiffConstIso.h
│ ├── FEDiffConstOrtho.cpp
│ ├── FEDiffConstOrtho.h
│ ├── FEDiffRefIso.cpp
│ ├── FEDiffRefIso.h
│ ├── FEFiberExpPowSBM.cpp
│ ├── FEFiberExpPowSBM.h
│ ├── FEFiberPowLinearSBM.cpp
│ ├── FEFiberPowLinearSBM.h
│ ├── FEFixedConcentration.cpp
│ ├── FEFixedConcentration.h
│ ├── FEFixedFluidPressure.cpp
│ ├── FEFixedFluidPressure.h
│ ├── FEFluidFlux.cpp
│ ├── FEFluidFlux.h
│ ├── FEHydraulicPermeability.cpp
│ ├── FEHydraulicPermeability.h
│ ├── FEInitialConcentration.cpp
│ ├── FEInitialConcentration.h
│ ├── FEInitialEffectiveFluidPressure.cpp
│ ├── FEInitialEffectiveFluidPressure.h
│ ├── FEMassActionForward.cpp
│ ├── FEMassActionForward.h
│ ├── FEMassActionForwardEffective.cpp
│ ├── FEMassActionForwardEffective.h
│ ├── FEMassActionReversible.cpp
│ ├── FEMassActionReversible.h
│ ├── FEMassActionReversibleEffective.cpp
│ ├── FEMassActionReversibleEffective.h
│ ├── FEMatchingOsmoticCoefficientBC.cpp
│ ├── FEMatchingOsmoticCoefficientBC.h
│ ├── FEMatchingOsmoticCoefficientLoad.cpp
│ ├── FEMatchingOsmoticCoefficientLoad.h
│ ├── FEMembraneMassActionForward.cpp
│ ├── FEMembraneMassActionForward.h
│ ├── FEMembraneMassActionReversible.cpp
│ ├── FEMembraneMassActionReversible.h
│ ├── FEMembraneReaction.cpp
│ ├── FEMembraneReaction.h
│ ├── FEMembraneReactionRateConst.cpp
│ ├── FEMembraneReactionRateConst.h
│ ├── FEMembraneReactionRateIonChannel.cpp
│ ├── FEMembraneReactionRateIonChannel.h
│ ├── FEMembraneReactionRateVoltageGated.cpp
│ ├── FEMembraneReactionRateVoltageGated.h
│ ├── FEMichaelisMenten.cpp
│ ├── FEMichaelisMenten.h
│ ├── FEMixDomainFactory.cpp
│ ├── FEMixDomainFactory.h
│ ├── FEMixtureNormalTraction.cpp
│ ├── FEMixtureNormalTraction.h
│ ├── FEMultiphasic.cpp
│ ├── FEMultiphasic.h
│ ├── FEMultiphasicAnalysis.cpp
│ ├── FEMultiphasicAnalysis.h
│ ├── FEMultiphasicDomain.cpp
│ ├── FEMultiphasicDomain.h
│ ├── FEMultiphasicFluidPressureBC.cpp
│ ├── FEMultiphasicFluidPressureBC.h
│ ├── FEMultiphasicFluidPressureLoad.cpp
│ ├── FEMultiphasicFluidPressureLoad.h
│ ├── FEMultiphasicMultigeneration.cpp
│ ├── FEMultiphasicMultigeneration.h
│ ├── FEMultiphasicShellDomain.cpp
│ ├── FEMultiphasicShellDomain.h
│ ├── FEMultiphasicSolidDomain.cpp
│ ├── FEMultiphasicSolidDomain.h
│ ├── FEMultiphasicSolver.cpp
│ ├── FEMultiphasicSolver.h
│ ├── FEMultiphasicStandard.cpp
│ ├── FEMultiphasicStandard.h
│ ├── FENodalFluidFlux.cpp
│ ├── FENodalFluidFlux.h
│ ├── FEOsmCoefConst.cpp
│ ├── FEOsmCoefConst.h
│ ├── FEOsmCoefManning.cpp
│ ├── FEOsmCoefManning.h
│ ├── FEOsmoticCoefficient.cpp
│ ├── FEOsmoticCoefficient.h
│ ├── FEPermConstIso.cpp
│ ├── FEPermConstIso.h
│ ├── FEPermExpIso.cpp
│ ├── FEPermExpIso.h
│ ├── FEPermHolmesMow.cpp
│ ├── FEPermHolmesMow.h
│ ├── FEPermRefIso.cpp
│ ├── FEPermRefIso.h
│ ├── FEPermRefOrtho.cpp
│ ├── FEPermRefOrtho.h
│ ├── FEPermRefTransIso.cpp
│ ├── FEPermRefTransIso.h
│ ├── FEPorousNeoHookean.cpp
│ ├── FEPorousNeoHookean.h
│ ├── FEPrescribedConcentration.cpp
│ ├── FEPrescribedConcentration.h
│ ├── FEPrescribedNodalFluidPressure.cpp
│ ├── FEPrescribedNodalFluidPressure.h
│ ├── FEPressureStabilization.cpp
│ ├── FEPressureStabilization.h
│ ├── FEReaction.cpp
│ ├── FEReaction.h
│ ├── FEReactionRateConst.cpp
│ ├── FEReactionRateConst.h
│ ├── FEReactionRateExpSED.cpp
│ ├── FEReactionRateExpSED.h
│ ├── FEReactionRateHuiskes.cpp
│ ├── FEReactionRateHuiskes.h
│ ├── FEReactionRateNims.cpp
│ ├── FEReactionRateNims.h
│ ├── FEReactionRateRuberti.cpp
│ ├── FEReactionRateRuberti.h
│ ├── FEReactionRateSoluteAsSBM.cpp
│ ├── FEReactionRateSoluteAsSBM.h
│ ├── FERemodelingSolid.cpp
│ ├── FERemodelingSolid.h
│ ├── FESBMPointSource.cpp
│ ├── FESBMPointSource.h
│ ├── FESFDSBM.cpp
│ ├── FESFDSBM.h
│ ├── FESlidingInterface2.cpp
│ ├── FESlidingInterface2.h
│ ├── FESlidingInterface3.cpp
│ ├── FESlidingInterface3.h
│ ├── FESlidingInterfaceBiphasic.cpp
│ ├── FESlidingInterfaceBiphasic.h
│ ├── FESlidingInterfaceBiphasicMixed.cpp
│ ├── FESlidingInterfaceBiphasicMixed.h
│ ├── FESlidingInterfaceMP.cpp
│ ├── FESlidingInterfaceMP.h
│ ├── FESolubConst.cpp
│ ├── FESolubConst.h
│ ├── FESolubManning.cpp
│ ├── FESolubManning.h
│ ├── FESolute.cpp
│ ├── FESolute.h
│ ├── FESoluteFlux.cpp
│ ├── FESoluteFlux.h
│ ├── FESoluteInterface.cpp
│ ├── FESoluteInterface.h
│ ├── FESoluteNaturalFlux.cpp
│ ├── FESoluteNaturalFlux.h
│ ├── FESolutePointSource.cpp
│ ├── FESolutePointSource.h
│ ├── FESolutesMaterialPoint.cpp
│ ├── FESolutesMaterialPoint.h
│ ├── FESolventSupply.cpp
│ ├── FESolventSupply.h
│ ├── FESolventSupplyStarling.cpp
│ ├── FESolventSupplyStarling.h
│ ├── FESupplyBinding.cpp
│ ├── FESupplyBinding.h
│ ├── FESupplyConst.cpp
│ ├── FESupplyConst.h
│ ├── FESupplyMichaelisMenten.cpp
│ ├── FESupplyMichaelisMenten.h
│ ├── FESupplySynthesisBinding.cpp
│ ├── FESupplySynthesisBinding.h
│ ├── FETiedBiphasicInterface.cpp
│ ├── FETiedBiphasicInterface.h
│ ├── FETiedMultiphasicInterface.cpp
│ ├── FETiedMultiphasicInterface.h
│ ├── FETriphasic.cpp
│ ├── FETriphasic.h
│ ├── FETriphasicDomain.cpp
│ ├── FETriphasicDomain.h
│ ├── febiomix_api.h
│ └── stdafx.h
├── FEBioOpt/
│ ├── FEBioOpt.cpp
│ ├── FEBioOpt.h
│ ├── FEBioParamRun.cpp
│ ├── FEBioParamRun.h
│ ├── FEConstrainedLMOptimizeMethod.cpp
│ ├── FEConstrainedLMOptimizeMethod.h
│ ├── FEDataSource.cpp
│ ├── FEDataSource.h
│ ├── FELMOptimizeMethod.cpp
│ ├── FELMOptimizeMethod.h
│ ├── FEObjectiveFunction.cpp
│ ├── FEObjectiveFunction.h
│ ├── FEOptimize.cpp
│ ├── FEOptimize.h
│ ├── FEOptimizeData.cpp
│ ├── FEOptimizeData.h
│ ├── FEOptimizeInput.cpp
│ ├── FEOptimizeInput.h
│ ├── FEOptimizeMethod.cpp
│ ├── FEOptimizeMethod.h
│ ├── FEParameterSweep.cpp
│ ├── FEParameterSweep.h
│ ├── FEPowellOptimizeMethod.cpp
│ ├── FEPowellOptimizeMethod.h
│ ├── FEScanOptimizeMethod.cpp
│ ├── FEScanOptimizeMethod.h
│ ├── NLOptOptimizeMethod.cpp
│ ├── NLOptOptimizeMethod.h
│ ├── febioopt_api.h
│ ├── stdafx.h
│ └── targetver.h
├── FEBioPlot/
│ ├── FEBioPlotFile.cpp
│ ├── FEBioPlotFile.h
│ ├── PlotFile.cpp
│ ├── PlotFile.h
│ ├── PltArchive.cpp
│ ├── PltArchive.h
│ ├── VTKPlotFile.cpp
│ ├── VTKPlotFile.h
│ ├── febioplot_api.h
│ ├── stdafx.cpp
│ ├── stdafx.h
│ └── targetver.h
├── FEBioRVE/
│ ├── FE2OMicroConstraint.cpp
│ ├── FE2OMicroConstraint.h
│ ├── FEBCPrescribedDeformation2O.cpp
│ ├── FEBCPrescribedDeformation2O.h
│ ├── FEBioRVE.cpp
│ ├── FEBioRVE.h
│ ├── FEBioRVEPlot.cpp
│ ├── FEBioRVEPlot.h
│ ├── FEElasticMaterial2O.cpp
│ ├── FEElasticMaterial2O.h
│ ├── FEElasticMultiscaleDomain1O.cpp
│ ├── FEElasticMultiscaleDomain1O.h
│ ├── FEElasticMultiscaleDomain2O.cpp
│ ├── FEElasticMultiscaleDomain2O.h
│ ├── FEElasticSolidDomain2O.cpp
│ ├── FEElasticSolidDomain2O.h
│ ├── FEMicroMaterial.cpp
│ ├── FEMicroMaterial.h
│ ├── FEMicroMaterial2O.cpp
│ ├── FEMicroMaterial2O.h
│ ├── FEMindlinElastic2O.cpp
│ ├── FEMindlinElastic2O.h
│ ├── FEMultiscaleDomainFactory.cpp
│ ├── FEMultiscaleDomainFactory.h
│ ├── FEPeriodicBoundary1O.cpp
│ ├── FEPeriodicBoundary1O.h
│ ├── FEPeriodicBoundary2O.cpp
│ ├── FEPeriodicBoundary2O.h
│ ├── FEPeriodicLinearConstraint2O.cpp
│ ├── FEPeriodicLinearConstraint2O.h
│ ├── FERVEModel.cpp
│ ├── FERVEModel.h
│ ├── FERVEModel2O.cpp
│ ├── FERVEModel2O.h
│ ├── FERVEProbe.cpp
│ ├── FERVEProbe.h
│ ├── febiorve_api.h
│ └── stdafx.h
├── FEBioTest/
│ ├── FEBioDiagnostic.cpp
│ ├── FEBioDiagnostic.h
│ ├── FEBioTest.cpp
│ ├── FEBioTest.h
│ ├── FEBiphasicTangentDiagnostic.cpp
│ ├── FEBiphasicTangentDiagnostic.h
│ ├── FEContactDiagnostic.cpp
│ ├── FEContactDiagnostic.h
│ ├── FEContactDiagnosticBiphasic.cpp
│ ├── FEContactDiagnosticBiphasic.h
│ ├── FEDiagnostic.cpp
│ ├── FEDiagnostic.h
│ ├── FEEASShellTangentDiagnostic.cpp
│ ├── FEEASShellTangentDiagnostic.h
│ ├── FEFluidFSITangentDiagnostic.cpp
│ ├── FEFluidFSITangentDiagnostic.h
│ ├── FEFluidTangentDiagnostic.cpp
│ ├── FEFluidTangentDiagnostic.h
│ ├── FEJFNKTangentDiagnostic.cpp
│ ├── FEJFNKTangentDiagnostic.h
│ ├── FEMaterialTest.cpp
│ ├── FEMaterialTest.h
│ ├── FEMemoryDiagnostic.cpp
│ ├── FEMemoryDiagnostic.h
│ ├── FEMultiphasicTangentDiagnostic.cpp
│ ├── FEMultiphasicTangentDiagnostic.h
│ ├── FEPolarFluidTangentDiagnostic.cpp
│ ├── FEPolarFluidTangentDiagnostic.h
│ ├── FEPrintHBMatrixDiagnostic.cpp
│ ├── FEPrintHBMatrixDiagnostic.h
│ ├── FEPrintMatrixDiagnostic.cpp
│ ├── FEPrintMatrixDiagnostic.h
│ ├── FEResetTest.cpp
│ ├── FEResetTest.h
│ ├── FERestartDiagnostic.cpp
│ ├── FERestartDiagnostics.h
│ ├── FEStiffnessDiagnostic.cpp
│ ├── FEStiffnessDiagnostic.h
│ ├── FETangentDiagnostic.cpp
│ ├── FETangentDiagnostic.h
│ ├── FETiedBiphasicDiagnostic.cpp
│ ├── FETiedBiphasicDiagnostic.h
│ └── stdafx.h
├── FEBioXML/
│ ├── FEBModel.cpp
│ ├── FEBModel.h
│ ├── FEBioBoundarySection.cpp
│ ├── FEBioBoundarySection.h
│ ├── FEBioBoundarySection3.cpp
│ ├── FEBioBoundarySection3.h
│ ├── FEBioCodeSection.cpp
│ ├── FEBioCodeSection.h
│ ├── FEBioConstraintsSection.cpp
│ ├── FEBioConstraintsSection.h
│ ├── FEBioContactSection.cpp
│ ├── FEBioContactSection.h
│ ├── FEBioControlSection.cpp
│ ├── FEBioControlSection.h
│ ├── FEBioControlSection3.cpp
│ ├── FEBioControlSection3.h
│ ├── FEBioControlSection4.cpp
│ ├── FEBioControlSection4.h
│ ├── FEBioDiscreteSection.cpp
│ ├── FEBioDiscreteSection.h
│ ├── FEBioGeometrySection.cpp
│ ├── FEBioGeometrySection.h
│ ├── FEBioGeometrySection3.cpp
│ ├── FEBioGlobalsSection.cpp
│ ├── FEBioGlobalsSection.h
│ ├── FEBioImport.cpp
│ ├── FEBioImport.h
│ ├── FEBioIncludeSection.cpp
│ ├── FEBioIncludeSection.h
│ ├── FEBioInitialSection.cpp
│ ├── FEBioInitialSection.h
│ ├── FEBioInitialSection3.cpp
│ ├── FEBioInitialSection3.h
│ ├── FEBioLoadDataSection.cpp
│ ├── FEBioLoadDataSection.h
│ ├── FEBioLoadDataSection3.cpp
│ ├── FEBioLoadsSection.cpp
│ ├── FEBioLoadsSection.h
│ ├── FEBioLoadsSection3.cpp
│ ├── FEBioLoadsSection4.cpp
│ ├── FEBioMaterialSection.cpp
│ ├── FEBioMaterialSection.h
│ ├── FEBioMeshAdaptorSection.cpp
│ ├── FEBioMeshAdaptorSection.h
│ ├── FEBioMeshDataSection.cpp
│ ├── FEBioMeshDataSection.h
│ ├── FEBioMeshDataSection3.cpp
│ ├── FEBioMeshDataSection4.cpp
│ ├── FEBioMeshDomainsSection4.cpp
│ ├── FEBioMeshDomainsSection4.h
│ ├── FEBioMeshSection.cpp
│ ├── FEBioMeshSection.h
│ ├── FEBioMeshSection4.cpp
│ ├── FEBioMeshSection4.h
│ ├── FEBioModuleSection.cpp
│ ├── FEBioModuleSection.h
│ ├── FEBioOutputSection.cpp
│ ├── FEBioOutputSection.h
│ ├── FEBioRigidSection.cpp
│ ├── FEBioRigidSection.h
│ ├── FEBioRigidSection4.cpp
│ ├── FEBioRigidSection4.h
│ ├── FEBioScriptsSection.cpp
│ ├── FEBioScriptsSection.h
│ ├── FEBioStepSection.cpp
│ ├── FEBioStepSection.h
│ ├── FEBioStepSection3.cpp
│ ├── FEBioStepSection3.h
│ ├── FEBioStepSection4.cpp
│ ├── FEBioStepSection4.h
│ ├── FEModelBuilder.cpp
│ ├── FEModelBuilder.h
│ ├── FERestartImport.cpp
│ ├── FERestartImport.h
│ ├── FileImport.cpp
│ ├── FileImport.h
│ ├── XMLReader.cpp
│ ├── XMLReader.h
│ ├── XMLWriter.cpp
│ ├── XMLWriter.h
│ ├── febioxml_api.h
│ ├── stdafx.h
│ ├── xmltool.cpp
│ └── xmltool.h
├── FECore/
│ ├── AkimaSpline.cpp
│ ├── AkimaSpline.h
│ ├── BFGSSolver.cpp
│ ├── BFGSSolver.h
│ ├── BSpline.cpp
│ ├── BSpline.h
│ ├── CSRMatrix.cpp
│ ├── CSRMatrix.h
│ ├── Callback.cpp
│ ├── Callback.h
│ ├── ClassDescriptor.cpp
│ ├── ClassDescriptor.h
│ ├── CompactMatrix.cpp
│ ├── CompactMatrix.h
│ ├── CompactSymmMatrix.cpp
│ ├── CompactSymmMatrix.h
│ ├── CompactSymmMatrix64.cpp
│ ├── CompactSymmMatrix64.h
│ ├── CompactUnSymmMatrix.cpp
│ ├── CompactUnSymmMatrix.h
│ ├── DOFS.cpp
│ ├── DOFS.h
│ ├── DataRecord.cpp
│ ├── DataRecord.h
│ ├── DataStore.cpp
│ ├── DataStore.h
│ ├── DenseMatrix.cpp
│ ├── DenseMatrix.h
│ ├── DomainDataRecord.cpp
│ ├── DomainDataRecord.h
│ ├── DumpFile.cpp
│ ├── DumpFile.h
│ ├── DumpMemStream.cpp
│ ├── DumpMemStream.h
│ ├── DumpStream.cpp
│ ├── DumpStream.h
│ ├── EigenSolver.cpp
│ ├── EigenSolver.h
│ ├── ElementDataRecord.cpp
│ ├── ElementDataRecord.h
│ ├── FEAnalysis.cpp
│ ├── FEAnalysis.h
│ ├── FEAugLagLinearConstraint.cpp
│ ├── FEAugLagLinearConstraint.h
│ ├── FEBeamDomain.cpp
│ ├── FEBeamDomain.h
│ ├── FEBodyConstraint.cpp
│ ├── FEBodyConstraint.h
│ ├── FEBodyLoad.cpp
│ ├── FEBodyLoad.h
│ ├── FEBoundaryCondition.cpp
│ ├── FEBoundaryCondition.h
│ ├── FEBoundingBox.h
│ ├── FEBox.cpp
│ ├── FEBox.h
│ ├── FEBroydenStrategy.cpp
│ ├── FEBroydenStrategy.h
│ ├── FECallBack.h
│ ├── FECallback.cpp
│ ├── FEClosestPointProjection.cpp
│ ├── FEClosestPointProjection.h
│ ├── FEConstValueVec3.cpp
│ ├── FEConstValueVec3.h
│ ├── FECore.cpp
│ ├── FECore.h
│ ├── FECoreBase.cpp
│ ├── FECoreBase.h
│ ├── FECoreClass.cpp
│ ├── FECoreClass.h
│ ├── FECoreFactory.cpp
│ ├── FECoreFactory.h
│ ├── FECoreKernel.cpp
│ ├── FECoreKernel.h
│ ├── FECorePlot.cpp
│ ├── FECorePlot.h
│ ├── FECoreTask.cpp
│ ├── FECoreTask.h
│ ├── FECube.cpp
│ ├── FECube.h
│ ├── FEDataArray.cpp
│ ├── FEDataArray.h
│ ├── FEDataExport.cpp
│ ├── FEDataExport.h
│ ├── FEDataGenerator.cpp
│ ├── FEDataGenerator.h
│ ├── FEDataMap.cpp
│ ├── FEDataMap.h
│ ├── FEDataMathGenerator.cpp
│ ├── FEDataMathGenerator.h
│ ├── FEDataStream.h
│ ├── FEDataValue.cpp
│ ├── FEDataValue.h
│ ├── FEDiscreteDomain.cpp
│ ├── FEDiscreteDomain.h
│ ├── FEDiscreteMaterial.cpp
│ ├── FEDiscreteMaterial.h
│ ├── FEDiscreteSet.cpp
│ ├── FEDiscreteSet.h
│ ├── FEDofList.cpp
│ ├── FEDofList.h
│ ├── FEDomain.cpp
│ ├── FEDomain.h
│ ├── FEDomain2D.cpp
│ ├── FEDomain2D.h
│ ├── FEDomainList.cpp
│ ├── FEDomainList.h
│ ├── FEDomainMap.cpp
│ ├── FEDomainMap.h
│ ├── FEDomainParameter.cpp
│ ├── FEDomainParameter.h
│ ├── FEEdge.cpp
│ ├── FEEdge.h
│ ├── FEEdgeList.cpp
│ ├── FEEdgeList.h
│ ├── FEEdgeLoad.cpp
│ ├── FEEdgeLoad.h
│ ├── FEElemElemList.cpp
│ ├── FEElemElemList.h
│ ├── FEElement.cpp
│ ├── FEElement.h
│ ├── FEElementLibrary.cpp
│ ├── FEElementLibrary.h
│ ├── FEElementList.cpp
│ ├── FEElementList.h
│ ├── FEElementSet.cpp
│ ├── FEElementSet.h
│ ├── FEElementShape.cpp
│ ├── FEElementShape.h
│ ├── FEElementTraits.cpp
│ ├── FEElementTraits.h
│ ├── FEException.cpp
│ ├── FEException.h
│ ├── FEFaceList.cpp
│ ├── FEFaceList.h
│ ├── FEFacetSet.cpp
│ ├── FEFacetSet.h
│ ├── FEFixedBC.cpp
│ ├── FEFixedBC.h
│ ├── FEFullNewtonStrategy.cpp
│ ├── FEFullNewtonStrategy.h
│ ├── FEFunction1D.cpp
│ ├── FEFunction1D.h
│ ├── FEGlobalData.cpp
│ ├── FEGlobalData.h
│ ├── FEGlobalMatrix.cpp
│ ├── FEGlobalMatrix.h
│ ├── FEGlobalVector.cpp
│ ├── FEGlobalVector.h
│ ├── FEInitialCondition.cpp
│ ├── FEInitialCondition.h
│ ├── FEItemList.cpp
│ ├── FEItemList.h
│ ├── FELevelStructure.cpp
│ ├── FELevelStructure.h
│ ├── FELineSearch.cpp
│ ├── FELineSearch.h
│ ├── FELinearConstraint.cpp
│ ├── FELinearConstraint.h
│ ├── FELinearConstraintManager.cpp
│ ├── FELinearConstraintManager.h
│ ├── FELinearSolver.cpp
│ ├── FELinearSolver.h
│ ├── FELinearSystem.cpp
│ ├── FELinearSystem.h
│ ├── FELoadController.cpp
│ ├── FELoadController.h
│ ├── FELoadCurve.cpp
│ ├── FELoadCurve.h
│ ├── FELogData.cpp
│ ├── FELogData.h
│ ├── FELogDomainVolume.cpp
│ ├── FELogDomainVolume.h
│ ├── FELogElemData.cpp
│ ├── FELogElemData.h
│ ├── FELogElemMath.cpp
│ ├── FELogElemMath.h
│ ├── FELogElementVolume.cpp
│ ├── FELogElementVolume.h
│ ├── FELogEnclosedVolume.cpp
│ ├── FELogEnclosedVolume.h
│ ├── FELogNodeData.cpp
│ ├── FELogNodeData.h
│ ├── FELogSolutionNorm.cpp
│ ├── FELogSolutionNorm.h
│ ├── FEMat3dSphericalAngleMap.cpp
│ ├── FEMat3dSphericalAngleMap.h
│ ├── FEMat3dValuator.cpp
│ ├── FEMat3dValuator.h
│ ├── FEMat3dsValuator.cpp
│ ├── FEMat3dsValuator.h
│ ├── FEMaterial.cpp
│ ├── FEMaterial.h
│ ├── FEMaterialPoint.cpp
│ ├── FEMaterialPoint.h
│ ├── FEMaterialPointProperty.h
│ ├── FEMathController.cpp
│ ├── FEMathController.h
│ ├── FEMathIntervalController.cpp
│ ├── FEMathIntervalController.h
│ ├── FEMergedConstraint.cpp
│ ├── FEMergedConstraint.h
│ ├── FEMesh.cpp
│ ├── FEMesh.h
│ ├── FEMeshAdaptor.cpp
│ ├── FEMeshAdaptor.h
│ ├── FEMeshAdaptorCriterion.cpp
│ ├── FEMeshAdaptorCriterion.h
│ ├── FEMeshPartition.cpp
│ ├── FEMeshPartition.h
│ ├── FEMeshTopo.cpp
│ ├── FEMeshTopo.h
│ ├── FEModel.cpp
│ ├── FEModel.h
│ ├── FEModelComponent.cpp
│ ├── FEModelComponent.h
│ ├── FEModelDataRecord.cpp
│ ├── FEModelDataRecord.h
│ ├── FEModelLoad.cpp
│ ├── FEModelLoad.h
│ ├── FEModelParam.cpp
│ ├── FEModelParam.h
│ ├── FEModifiedNewtonStrategy.cpp
│ ├── FEModifiedNewtonStrategy.h
│ ├── FEModule.cpp
│ ├── FEModule.h
│ ├── FENLConstraint.cpp
│ ├── FENLConstraint.h
│ ├── FENNQuery.cpp
│ ├── FENNQuery.h
│ ├── FENewtonSolver.cpp
│ ├── FENewtonSolver.h
│ ├── FENewtonStrategy.cpp
│ ├── FENewtonStrategy.h
│ ├── FENodalBC.cpp
│ ├── FENodalBC.h
│ ├── FENodalLoad.cpp
│ ├── FENodalLoad.h
│ ├── FENode.cpp
│ ├── FENode.h
│ ├── FENodeDataMap.cpp
│ ├── FENodeDataMap.h
│ ├── FENodeElemList.cpp
│ ├── FENodeElemList.h
│ ├── FENodeList.cpp
│ ├── FENodeList.h
│ ├── FENodeNodeList.cpp
│ ├── FENodeNodeList.h
│ ├── FENodeReorder.cpp
│ ├── FENodeReorder.h
│ ├── FENodeSet.cpp
│ ├── FENodeSet.h
│ ├── FENodeSetConstraint.cpp
│ ├── FENodeSetConstraint.h
│ ├── FENormalProjection.cpp
│ ├── FENormalProjection.h
│ ├── FEOctree.cpp
│ ├── FEOctree.h
│ ├── FEOctreeSearch.cpp
│ ├── FEOctreeSearch.h
│ ├── FEPIDController.cpp
│ ├── FEPIDController.h
│ ├── FEParabolicMap.cpp
│ ├── FEParabolicMap.h
│ ├── FEParam.cpp
│ ├── FEParam.h
│ ├── FEParamValidator.cpp
│ ├── FEParamValidator.h
│ ├── FEParameterList.cpp
│ ├── FEParameterList.h
│ ├── FEPeriodicLinearConstraint.cpp
│ ├── FEPeriodicLinearConstraint.h
│ ├── FEPlotData.cpp
│ ├── FEPlotData.h
│ ├── FEPlotDataStore.cpp
│ ├── FEPlotDataStore.h
│ ├── FEPointFunction.cpp
│ ├── FEPointFunction.h
│ ├── FEPrescribedBC.cpp
│ ├── FEPrescribedBC.h
│ ├── FEPrescribedDOF.cpp
│ ├── FEPrescribedDOF.h
│ ├── FEProperty.cpp
│ ├── FEProperty.h
│ ├── FEPropertyT.h
│ ├── FESPRProjection.cpp
│ ├── FESPRProjection.h
│ ├── FEScalarValuator.cpp
│ ├── FEScalarValuator.h
│ ├── FEScriptedBehavior.cpp
│ ├── FEScriptedBehavior.h
│ ├── FEScriptedLoadController.cpp
│ ├── FEScriptedLoadController.h
│ ├── FESegmentSet.cpp
│ ├── FESegmentSet.h
│ ├── FEShellDomain.cpp
│ ├── FEShellDomain.h
│ ├── FEShellElement.cpp
│ ├── FEShellElement.h
│ ├── FESolidDomain.cpp
│ ├── FESolidDomain.h
│ ├── FESolidElement.cpp
│ ├── FESolidElement.h
│ ├── FESolidElementShape.cpp
│ ├── FESolidElementShape.h
│ ├── FESolver.cpp
│ ├── FESolver.h
│ ├── FEStepComponent.cpp
│ ├── FEStepComponent.h
│ ├── FESurface.cpp
│ ├── FESurface.h
│ ├── FESurfaceBC.cpp
│ ├── FESurfaceBC.h
│ ├── FESurfaceConstraint.cpp
│ ├── FESurfaceConstraint.h
│ ├── FESurfaceElement.cpp
│ ├── FESurfaceElement.h
│ ├── FESurfaceElementShape.cpp
│ ├── FESurfaceElementShape.h
│ ├── FESurfaceLoad.cpp
│ ├── FESurfaceLoad.h
│ ├── FESurfaceMap.cpp
│ ├── FESurfaceMap.h
│ ├── FESurfacePair.cpp
│ ├── FESurfacePair.h
│ ├── FESurfacePairConstraint.cpp
│ ├── FESurfacePairConstraint.h
│ ├── FESurfaceToSurfaceMap.cpp
│ ├── FESurfaceToSurfaceMap.h
│ ├── FESurfaceToSurfaceVectorMap.cpp
│ ├── FESurfaceToSurfaceVectorMap.h
│ ├── FETimeInfo.cpp
│ ├── FETimeInfo.h
│ ├── FETimeStepController.cpp
│ ├── FETimeStepController.h
│ ├── FETransform.cpp
│ ├── FETransform.h
│ ├── FETrussDomain.cpp
│ ├── FETrussDomain.h
│ ├── FEValuator.cpp
│ ├── FEValuator.h
│ ├── FEVec3dValuator.cpp
│ ├── FEVec3dValuator.h
│ ├── FSPath.cpp
│ ├── FSPath.h
│ ├── FaceDataRecord.cpp
│ ├── FaceDataRecord.h
│ ├── Integrate.cpp
│ ├── Integrate.h
│ ├── JFNKMatrix.cpp
│ ├── JFNKMatrix.h
│ ├── JFNKStrategy.cpp
│ ├── JFNKStrategy.h
│ ├── LUSolver.cpp
│ ├── LUSolver.h
│ ├── LinearSolver.cpp
│ ├── LinearSolver.h
│ ├── MCollect.cpp
│ ├── MDerive.cpp
│ ├── MEvaluate.cpp
│ ├── MEvaluate.h
│ ├── MExpand.cpp
│ ├── MFunctions.cpp
│ ├── MFunctions.h
│ ├── MIntegral.cpp
│ ├── MItem.cpp
│ ├── MItem.h
│ ├── MMath.h
│ ├── MMatrix.cpp
│ ├── MMatrix.h
│ ├── MObj2String.cpp
│ ├── MObj2String.h
│ ├── MObjBuilder.cpp
│ ├── MObjBuilder.h
│ ├── MReplace.cpp
│ ├── MSimplify.cpp
│ ├── MSolve.cpp
│ ├── MTypes.cpp
│ ├── MTypes.h
│ ├── MathObject.cpp
│ ├── MathObject.h
│ ├── MatrixOperator.h
│ ├── MatrixProfile.cpp
│ ├── MatrixProfile.h
│ ├── NLConstraintDataRecord.cpp
│ ├── NLConstraintDataRecord.h
│ ├── NodeDataRecord.cpp
│ ├── NodeDataRecord.h
│ ├── ParamString.cpp
│ ├── ParamString.h
│ ├── PointCurve.cpp
│ ├── PointCurve.h
│ ├── Preconditioner.cpp
│ ├── Preconditioner.h
│ ├── Quadric.cpp
│ ├── Quadric.h
│ ├── QuadricFit.cpp
│ ├── QuadricFit.h
│ ├── SchurComplement.cpp
│ ├── SchurComplement.h
│ ├── SkylineMatrix.cpp
│ ├── SkylineMatrix.h
│ ├── SkylineSolver.cpp
│ ├── SkylineSolver.h
│ ├── SparseMatrix.cpp
│ ├── SparseMatrix.h
│ ├── SurfaceDataRecord.cpp
│ ├── SurfaceDataRecord.h
│ ├── Timer.cpp
│ ├── Timer.h
│ ├── ad.cpp
│ ├── ad.h
│ ├── ad2.cpp
│ ├── ad2.h
│ ├── besselIK.cpp
│ ├── besselIK.h
│ ├── colsol.cpp
│ ├── eig3.cpp
│ ├── eig3.h
│ ├── expint_Ei.cpp
│ ├── expint_Ei.h
│ ├── fecore_api.h
│ ├── fecore_debug.cpp
│ ├── fecore_debug.h
│ ├── fecore_debug_t.h
│ ├── fecore_enum.h
│ ├── fecore_type.cpp
│ ├── fecore_type.h
│ ├── gamma.cpp
│ ├── gamma.h
│ ├── log.cpp
│ ├── log.h
│ ├── mat2d.h
│ ├── mat3d.cpp
│ ├── mat3d.h
│ ├── mat3d.hpp
│ ├── mat6d.h
│ ├── mathalg.cpp
│ ├── mathalg.h
│ ├── matrix.cpp
│ ├── matrix.h
│ ├── mortar.cpp
│ ├── mortar.h
│ ├── qsort.cpp
│ ├── quatd.cpp
│ ├── quatd.h
│ ├── sdk.h
│ ├── stdafx.cpp
│ ├── stdafx.h
│ ├── svd.cpp
│ ├── sys.h
│ ├── table.h
│ ├── targetver.h
│ ├── tens3d.cpp
│ ├── tens3d.h
│ ├── tens3d.hpp
│ ├── tens3dls.hpp
│ ├── tens3drs.hpp
│ ├── tens3ds.hpp
│ ├── tens4d.cpp
│ ├── tens4d.h
│ ├── tens4d.hpp
│ ├── tens4dmm.hpp
│ ├── tens4dms.hpp
│ ├── tens4ds.hpp
│ ├── tens5d.cpp
│ ├── tens5d.h
│ ├── tens5d.hpp
│ ├── tens5ds.hpp
│ ├── tens6d.cpp
│ ├── tens6d.h
│ ├── tens6d.hpp
│ ├── tens6ds.hpp
│ ├── tensor_base.h
│ ├── tools.cpp
│ ├── tools.h
│ ├── units.h
│ ├── vec2d.h
│ ├── vec3d.h
│ ├── vector.cpp
│ ├── vector.h
│ ├── version.h
│ ├── writeplot.cpp
│ └── writeplot.h
├── FEImgLib/
│ ├── FEImageDataMap.cpp
│ ├── FEImageDataMap.h
│ ├── FEImageSource.cpp
│ ├── FEImageSource.h
│ ├── FEImageValuator.cpp
│ ├── FEImageValuator.h
│ ├── FEImgLib.cpp
│ ├── FEImgLib.h
│ ├── Image.cpp
│ ├── Image.h
│ ├── ImageFilter.cpp
│ ├── ImageFilter.h
│ ├── ImageMap.cpp
│ ├── ImageMap.h
│ ├── feimglib_api.h
│ ├── fft.cpp
│ ├── image_tools.cpp
│ └── image_tools.h
├── FindDependencies.cmake
├── LICENSE
├── NumCore/
│ ├── AccelerateSparseSolver.cpp
│ ├── AccelerateSparseSolver.h
│ ├── BIPNSolver.cpp
│ ├── BIPNSolver.h
│ ├── BiCGStabSolver.cpp
│ ├── BiCGStabSolver.h
│ ├── BlockMatrix.cpp
│ ├── BlockMatrix.h
│ ├── BlockSolver.cpp
│ ├── BlockSolver.h
│ ├── BoomerAMGSolver.cpp
│ ├── BoomerAMGSolver.h
│ ├── FEASTEigenSolver.cpp
│ ├── FEASTEigenSolver.h
│ ├── FGMRESSolver.cpp
│ ├── FGMRESSolver.h
│ ├── HypreGMRESsolver.cpp
│ ├── HypreGMRESsolver.h
│ ├── Hypre_PCG_AMG.cpp
│ ├── Hypre_PCG_AMG.h
│ ├── ILU0_Preconditioner.cpp
│ ├── ILU0_Preconditioner.h
│ ├── ILUT_Preconditioner.cpp
│ ├── ILUT_Preconditioner.h
│ ├── IncompleteCholesky.cpp
│ ├── IncompleteCholesky.h
│ ├── MKLDSSolver.cpp
│ ├── MKLDSSolver.h
│ ├── MatrixTools.cpp
│ ├── MatrixTools.h
│ ├── NumCore.cpp
│ ├── NumCore.h
│ ├── PardisoProjectSolver.cpp
│ ├── PardisoProjectSolver.h
│ ├── PardisoSolver.cpp
│ ├── PardisoSolver.h
│ ├── PardisoSolver64.cpp
│ ├── PardisoSolver64.h
│ ├── RCICGSolver.cpp
│ ├── RCICGSolver.h
│ ├── SchurSolver.cpp
│ ├── SchurSolver.h
│ ├── StrategySolver.cpp
│ ├── StrategySolver.h
│ ├── SuperLU_MT.cpp
│ ├── SuperLU_MT.h
│ ├── TestSolver.cpp
│ ├── TestSolver.h
│ ├── numcore_api.h
│ ├── stdafx.cpp
│ ├── stdafx.h
│ └── targetver.h
├── README.md
├── ROADMAP.md
├── Xcode/
│ ├── FEAMR/
│ │ └── FEAMR.xcodeproj/
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ ├── FEBio3/
│ │ └── FEBio3.xcodeproj/
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ ├── FEBio3.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ ├── FEBioFluid/
│ │ └── FEBioFluid.xcodeproj/
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ ├── FEBioLib/
│ │ └── FEBioLib.xcodeproj/
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ ├── FEBioMech/
│ │ └── FEBioMech.xcodeproj/
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ ├── FEBioMix/
│ │ └── FEBioMix.xcodeproj/
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ ├── FEBioOpt/
│ │ └── FEBioOpt.xcodeproj/
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ ├── FEBioPlot/
│ │ └── FEBioPlot.xcodeproj/
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ ├── FEBioTest/
│ │ └── FEBioTest.xcodeproj/
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ ├── FEBioXML/
│ │ └── FEBioXML.xcodeproj/
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ ├── FECore/
│ │ └── FECore.xcodeproj/
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ └── NumCore/
│ └── NumCore.xcodeproj/
│ ├── project.pbxproj
│ └── project.xcworkspace/
│ └── contents.xcworkspacedata
├── build/
│ └── .gitignore
├── ci/
│ ├── Linux/
│ │ ├── build.sh
│ │ ├── create-sdk.sh
│ │ ├── scp-to-repo.sh
│ │ └── test.sh
│ ├── Windows/
│ │ ├── build.bat
│ │ ├── create-sdk.sh
│ │ ├── scp-to-repo.sh
│ │ └── test.sh
│ ├── febio.xml
│ ├── gather-plugins.py
│ ├── macOS/
│ │ ├── build.sh
│ │ ├── cmake.sh
│ │ ├── create-sdk.sh
│ │ ├── scp-to-repo.sh
│ │ └── test.sh
│ └── repo-plugins.py
├── docker-compose.yml
├── febcode/
│ ├── ast.cpp
│ ├── ast.h
│ ├── compiler.cpp
│ ├── compiler.h
│ ├── differentiator.cpp
│ ├── differentiator.h
│ ├── modifier.cpp
│ ├── modifier.h
│ ├── module.h
│ ├── module_mat2.cpp
│ ├── module_mat2.h
│ ├── module_mat3.cpp
│ ├── module_mat3.h
│ ├── module_math.h
│ ├── module_vec2.cpp
│ ├── module_vec2.h
│ ├── module_vec3.cpp
│ ├── module_vec3.h
│ ├── optimizer.cpp
│ ├── optimizer.h
│ ├── parser.cpp
│ ├── parser.h
│ ├── program.cpp
│ ├── program.h
│ ├── resolver.cpp
│ ├── resolver.h
│ ├── scanner.h
│ ├── simplifier.cpp
│ ├── simplifier.h
│ ├── types.cpp
│ ├── types.h
│ ├── vm.cpp
│ └── vm.h
└── infrastructure/
├── Dockerfile
├── DockerfileBase
├── DockerfileRuntime
├── ami-ubuntu.pkr.hcl
├── ami-windows-studio.pkr.hcl
├── ami-windows.pkr.hcl
├── common/
│ ├── linux/
│ │ ├── apt.sh
│ │ ├── aws.sh
│ │ ├── cmake.sh
│ │ ├── dependencies/
│ │ │ ├── common-functions.sh
│ │ │ ├── ffmpeg.sh
│ │ │ ├── hypre.sh
│ │ │ ├── install.sh
│ │ │ ├── itk.sh
│ │ │ ├── levmar.sh
│ │ │ ├── libzip.sh
│ │ │ ├── mmg.sh
│ │ │ ├── netgen.sh
│ │ │ ├── nlopt.sh
│ │ │ ├── occt.sh
│ │ │ ├── python.sh
│ │ │ ├── quazip.sh
│ │ │ ├── sitk.sh
│ │ │ └── tetgen.sh
│ │ ├── git.sh
│ │ ├── install-builder.sh
│ │ ├── openapi.sh
│ │ ├── packages.txt
│ │ └── qt.sh
│ ├── macos/
│ │ ├── ffmpeg.sh
│ │ ├── homebrew-packages.sh
│ │ ├── homebrew-x86.sh
│ │ ├── hypre.sh
│ │ ├── installation_prep.sh
│ │ ├── itk.sh
│ │ ├── levmar.sh
│ │ ├── libzip.sh
│ │ ├── lua.sh
│ │ ├── mmg.sh
│ │ ├── netgen.sh
│ │ ├── occt.sh
│ │ ├── openapi.sh
│ │ ├── qt.sh
│ │ ├── rosetta.sh
│ │ ├── sitk.sh
│ │ └── tetgen.sh
│ └── windows/
│ ├── aws.ps1
│ ├── choco.ps1
│ ├── cmake.ps1
│ ├── ffmpeg.ps1
│ ├── hypre.bat
│ ├── install-builder.ps1
│ ├── itk.bat
│ ├── jq.ps1
│ ├── levmar.bat
│ ├── libzip.bat
│ ├── lua.ps1
│ ├── mmg.bat
│ ├── msmpi.ps1
│ ├── netgen.bat
│ ├── nlopt.bat
│ ├── occt.bat
│ ├── pathprep.ps1
│ ├── python.bat
│ ├── qt.bat
│ ├── resize-partition.ps1
│ ├── sitk.bat
│ ├── tetgen.bat
│ ├── user-data.txt
│ ├── vcpkg-installer.ps1
│ ├── vcpkg-package-install.ps1
│ ├── vcpkg.json
│ ├── vcpkg.ps1
│ └── zlib.bat
└── macos.pkr.hcl
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/🐛-bug-report.md
================================================
---
name: "\U0001F41B Bug report"
about: Report bugs
title: "\U0001F41B Bug report | [Bug Title]"
labels: bug
assignees: ''
---
**Description:**
A clear and concise description of what the bug is.
**Version:**
**Steps To Reproduce:**
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
================================================
FILE: .github/ISSUE_TEMPLATE/📓-documentation-request.md
================================================
---
name: "\U0001F4D3 Documentation request"
about: Request updates to missing/outdated documentation or other documentation issues.
title: "\U0001F4D3 Documentation request | [Request Title]"
labels: documentation
assignees: ''
---
**Document & Version:**
**Section:**
**Request/Report:**
================================================
FILE: .github/ISSUE_TEMPLATE/🙏-feature-request.md
================================================
---
name: "\U0001F64F Feature request"
about: Request a feature for this project
title: "\U0001F64F Feature request | [Request Title]"
labels: enhancement
assignees: ''
---
**Request Description:**
A clear and concise description of what the problem is. Ex. Request to add new plotfile variable for [...]
================================================
FILE: .github/workflows/linux-pull-request.yml
================================================
name: CI - Linux Pull Request
on:
pull_request_target:
types:
- opened
- edited
- synchronize
- closed
permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout
jobs:
call_workflow:
uses: febiosoftware/febio-workflows/.github/workflows/linux-reusable.yml@develop
with:
runTests: true
package-name: febio4
package-sdk: true
build-plugins: true
publish: false
secrets: inherit
================================================
FILE: .github/workflows/linux-push.yml
================================================
name: CI - Linux - On Push
on:
push:
branches:
- 'develop'
workflow_dispatch:
inputs:
runTests:
description: "Run tests?"
type: boolean
required: false
build-plugins:
description: "Build all plugins?"
type: boolean
required: false
permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout
jobs:
call_workflow:
uses: febiosoftware/febio-workflows/.github/workflows/linux-reusable.yml@develop
with:
runTests: ${{ (github.event_name == 'workflow_dispatch' && inputs.runTests) || (github.event_name == 'push' && contains(fromJSON('["develop"]'), github.ref_name)) }}
build-plugins: ${{ (github.event_name == 'workflow_dispatch' && inputs.build-plugins) || github.event_name == 'push' }}
package-name: febio4
package-sdk: true
publish: true
secrets: inherit
================================================
FILE: .github/workflows/macos-pull-request.yml
================================================
name: CI - MacOS Pull Request
on:
pull_request_target:
types:
- opened
- edited
- synchronize
- closed
permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout
jobs:
call_workflow:
uses: febiosoftware/febio-workflows/.github/workflows/macos-reusable.yml@develop
with:
runTests: true
package-name: febio4
package-sdk: true
build-plugins: true
publish: false
secrets: inherit
================================================
FILE: .github/workflows/macos-push.yml
================================================
name: CI - MacOS Push
on:
push:
branches:
- 'develop'
workflow_dispatch:
inputs:
runTests:
description: "Run tests?"
required: false
type: boolean
default: false
build-plugins:
description: "Build all plugins?"
type: boolean
required: false
permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout
jobs:
call_workflow:
uses: febiosoftware/febio-workflows/.github/workflows/macos-reusable.yml@develop
with:
runTests: ${{ (github.event_name == 'workflow_dispatch' && inputs.runTests) || (github.event_name == 'push' && contains(fromJSON('["develop"]'), github.ref_name)) }}
build-plugins: ${{ (github.event_name == 'workflow_dispatch' && inputs.build-plugins) || github.event_name == 'push' }}
package-name: febio4
package-sdk: true
publish: true
secrets: inherit
================================================
FILE: .github/workflows/release-tag.yml
================================================
name: CI - FEBio Release
on:
release:
types: [published]
jobs:
annotate-tag:
name: "Annotate Release Tag"
runs-on: "ubuntu-latest"
steps:
- name: "Annotated Tag"
id: annotated-tag
uses: febiosoftware/febio-workflows/.github/actions/annotated-tag@develop
with:
github-pat-token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/windows-pull-request.yml
================================================
name: CI - Windows Pull Request
on:
pull_request_target:
types:
- opened
- edited
- synchronize
- closed
permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout
jobs:
call_workflow:
uses: febiosoftware/febio-workflows/.github/workflows/windows-reusable.yml@develop
with:
runTests: true
package-name: febio4
package-sdk: true
build-plugins: true
publish: false
secrets: inherit
================================================
FILE: .github/workflows/windows-push.yml
================================================
name: CI - Windows Push
on:
push:
branches:
- 'develop'
workflow_dispatch:
inputs:
runTests:
description: "Run tests?"
required: false
type: boolean
default: false
build-plugins:
description: "Build all plugins?"
type: boolean
required: false
permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout
jobs:
call_workflow:
uses: febiosoftware/febio-workflows/.github/workflows/windows-reusable.yml@develop
with:
runTests: ${{ (github.event_name == 'workflow_dispatch' && inputs.runTests) || (github.event_name == 'push' && contains(fromJSON('["develop"]'), github.ref_name)) }}
build-plugins: ${{ (github.event_name == 'workflow_dispatch' && inputs.build-plugins) || github.event_name == 'push' }}
package-name: febio4
package-sdk: true
publish: true
secrets: inherit
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
build/
# Visual Studio cache/options directory
.vs/
VS2019/
VS2022/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
*.sln
*.vcxproj
*.user
*.lib
*.dll
*.filters
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Prerequisites
*.d
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
# miscellaneous
Documentation/Doxygen/doc
Documentation/Doxygen/doc_only
.DS_Store
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
## User settings
xcuserdata/
## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
*.xcscmblueprint
*.xccheckout
*.xcuserstate
*.xcscheme
## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
DerivedData/
*.moved-aside
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
## Gcc Patch
/*.gcno
## cmake build directories
cbuild/
cmbuild*/
vs22/
CMakeFiles/
##cmake files
!CMakeLists.txt
CMakeCache.txt
!*.cmake
## Visual Studio Code
.vscode/
Documentation/FEBio_Theory_Manual.pdf
Documentation/FEBio_User_Manual.html.LyXconv/
/FEBioMech/FECGSolidSolver - Copy.cpp
febio*-sdk
.envrc
TestSuite
*.gz
================================================
FILE: .gitmodules
================================================
[submodule "ci/common"]
path = ci/common
url = https://github.com/febiosoftware/ci-common
================================================
FILE: BUILD.md
================================================
# FEBio Build Guide
### Table of contents
- [Prerequisites](#prereq)
- [Running CMake](#runCMake)
- [Building FEBio](#build)
- [Limitations of CMake](#limits)
- [Troubleshooting](#trouble)
## Prerequisites
### CMake
FEBio's build process utilizes CMake, an open-source, cross-platform tool designed to streamline the configuration of the build environment. The CMake script in this repository will help you to locate necessary third party libraries on your machine, set up include and library paths, and allow you to choose which of FEBio’s features you would like to include in your build.
Please download the latest release of CMake from https://cmake.org/, and install it on your machine before proceeding. Many Linux distributions come with CMake pre-installed, or have CMake available through their package managers.
### Intel Math Kernel Library
FEBio requires the Intel Math Kernel Library (MKL) in order to utilize the Pardiso linear solver and some of the iterative linear solvers. This library can be downloaded as part of the Intel oneAPI Base Toolkit from Intel's website: https://software.intel.com/content/www/us/en/develop/tools/oneapi/base-toolkit.html. In the absence of MKL, FEBio will default to using the Skyline linear solver. However, the Pardiso solver is significantly faster and more memory-efficient than the Skyline solver, and it is strongly recommended that the Pardiso solver be used.
### Additional Third Party Packages
FEBio makes use of the following third party packages to add additional functionality. If you do not need the functionality provided by a given package, you can still compile FEBio without it. The libraries below are organized according to the type of functionality they add.
* The Lourakis levmar routine is required by FEBio in order for it to perform its parameter optimization functions. The source for this library can be downloaded from http://users.ics.forth.gr/~lourakis/levmar/.
* MMG is used in the adaptive mesh refinement framework (the FEAMR FEBio library). FEBio only uses the mmg3d component of MMG. To use this library, you will need to download the source and compile it yourself. The source for this library can be downloaded from [MMG's GitHub account](https://github.com/MmgTools/mmg).
* HYPRE is used by FEBio for the BoomerAMG iterative linear solver, which is an algebraic multi-grid solver. To use this library, you will need to download the source and compile it yourself. The source for this library can be downloaded from [HYPRE's GitHub account](https://github.com/hypre-space/hypre).
* zlib is an open-source, lossless data-compression library that is used by FEBio to optionally compress plot files to save disc space. This library is generally pre-installed on macOS, and most Linux distributions. For Windows, you will need to download the latest source from zlib's website, and compile the library yourself.
* FFTW: Fastest Fourier Transform in the West. Alternate library to perform FFTs since certain solvers use conflicting versions of MKL. The library can be found at [FFTW's wegpage](https://fftw.org/)
## Running CMake
CMake is used to configure the build environment for FEBio on your machine. It can be used to generate a Microsoft Visual Studio Solution on Windows, an XCode Project on macOS, and a set of makefiles to be used with the GNU Make tool on Linux.
CMake generates a large number of configuration files that can cause the build directory to become cluttered. It is therefore strongly recommended that you do an [out-of-source build](https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#what-is-an-out-of-source-build) by pointing CMake to an empty directory. The _cbuild_ directory in the FEBio repository is provided for this purpose. If for some reason you find yourself needing to clear out your CMake configuration for FEBio and start this process from scratch, all you will need to do is delete everything in that build directory.
### CMake GUI
On Windows, and macOS CMake is run using the CMake graphical user interface (GUI). The CMake GUI is also available on Linux, but is generally installed separately, and so the command line interface (CLI) version, _ccmake_ is generally used (see below).
To start the configuration process, enter the path to the root directory of the FEBio repository that you've downloaded onto your machine into the box labeled _Where is the source code:_. To insure that you are doing an out-of-source build, enter the path to the _cbuild_ directory of your FEBio repository in the box labeled _Where to build the binaries:_. You may also locate these directories using a file browser by clicking on the _Browse_ buttons to the right of these fields.
### ccmake
If you are running Linux and have not installed the CMake GUI, there are two ways to run cmake. You can run the command `cmake` which will call CMake and run through the configuration and generation processes automatically. This method, however does not allow for interactivity, and so it is highly recommended that you instead run the command `ccmake`. This will run an interactive version of CMake with an in-terminal GUI as shown above. Using ccmake should allow you to follow along with the rest of this tutorial. To start an out-of-source build with ccmake, open a terminal in the _cbuild_ directory of your local copy fo the FEBio Studio repository and run the following command:
```
ccmake ..
```
### First Configuration
The configuration step in the CMake build process runs the script defined in `CMakeLists.txt` located in the root directory of the FEBio repository. This script does several things:
* Attempts to locate MKL, and any other third party packages that FEBio Studio uses.
* Automatically enables or disables FEBio features based on which libraries it was able to find.
* Automatically sets up include and library paths for your build system based on the libraries that it found, and the features that have been enabled.
To run the configuration process click the _Configure_ button in the lower left part of the GUI, or type `c` if you are using ccmake. If you are running the CMake GUI, you will be asked to choose a generator for the project. On Windows, choose the version of MSVC that you have installed and click _Finish_. On macOS, leave the default value and click _Finish_. CMake will now run the configuration process, the output of which can be seen in the text field at the bottom of the GUI. If all goes well, new fields will be added in red to the GUI, and it should look something like the image below:
After running the configuration process, the CMake GUI will populate with several build options that can be toggled on or off, each corresponding to one of the third party packages listed above. Building FEBio with a given build option enabled requires the corresponding third party packages to be installed on your machine and to be located by CMake.
The CMake script will do its best to automatically locate these packages, but if it is unable to do so, you will have to point CMake to the packages manually for each package that you'd like to use.
### Manually Locating MKL
If CMake is unable to locate MKL automatically, the `USE_MKL` option will be automatically turned off. A simple mechanism is provided for you to help the script to locate your MKL installtion. A variable called `MKLROOT` will have appeared in the CMake GUI. Enter the path to the _mkl_ directory of your Intel oneAPI installation as the value for the variable, then run the configuration step again. If you've correctly entered the path, it should find the necessary components of MKL. At this point you will need to manually turn the `USE_MKL` option back on.
### Manually Locating Other Packages
If CMake is unable to find any of the other third party packages on your system, it will automatically disable the corresponding build option. It will also make visible the fields for the include and library paths for the missing packages. In order to build with any of these options, you will need to manually edit the include and library paths for the required packages. The include path for a given package should point to the directory containing that package's header files, and the library path should point to the library file. Once you have updated the paths for the required packages, you then need to manually toggle the option back on.
### Project Generation
Once the desired optional packages have been located, and their corresponding build options have been enabled, it is time to generate the platform-specific build files. It's always a good idea to run Configure one more time before you generate the build files. This will make sure that the CMakeLists script catches any errors that you may have introduced by manually changing paths, or toggling build options. Once you've run Configure again, click the _Generate_ button (or type `g` if you're using ccmake). On Windows this will generate a Visual Studio Project, on macOS this will generate an XCode Project, and on Linux this will generate a Makefile. If you're running Windows or macOS, you can click the _Open Project_ button and it will automatically open the created project.
## Building FEBio
### Windows
Once you have the Visual Studio project open, you can choose whether you'd like to build a debug or a release version of the software, and then start the build process by either clicking on the Play button, or by pressing _F5_. After a successful build, the software should launch automatically.
### macOS
Once you have the XCode project open, you'll want to change the build target from `ALL_BUILD` to `FEBio`. Do this by clicking on the button that says `ALL_BUILD` in the upper left corner of XCode, next to the Play and Stop buttons. XCode will fully build FEBio with either target selected, but this will ensure that XCode will automatically launch FEBio after it's been built. Then you can start the build by either click on the Play button, or by pressing ⌘R. After a successful build, the software should launch automatically.
### Linux
Once the Makefiles have been generated, open a terminal in the _cbuild_ directory, and run `make`. If your machine has multiple cores, you can increase the speed of the build by passing a `-j` flag to _make_, followed by the number of threads you want _make_ to use (e.g. `make -j4`). Please note that this will only increase the speed of the build, and will in no way affect the final binary. After a successful build, the compiled binary can be found in the _bin_ subdirectory.
## Limitations of CMake
CMake is a useful tool for automating cross-platform builds, but it is not without its limitations:
* CMake is unable to create project files or makefiles that can automatically detect the presence of new source files. If you update your local repository after a new FEBio release, or if you modify FEBio's source and add new source files, you will have to rerun CMake in order to insure that any new source files are included in the build.
* On Linux, the type of build (e.g. debug, release, etc) is determined by CMake during the generation process, since the related options are baked into the resulting makefiles. To change the type of build you are building, you must rerun CMake and select the desired build type.
## Troubleshooting
* If you get errors that look something like this Could not find HYPRE library. Check HYPRE_LIB. This means that CMake is unable to locate the library associated with a currently active build option. To fix this issue, ensure that the CMake variable for that package's library is pointing to the correct location on your machine, and that the library file exists in that location. If CMake is still unable to find the required library, you may either have to rebuild or reinstall the third-party package, or disable the build option that uses it.
* If you run into other issues while building FEBio, please visit [our forums](https://forums.febio.org/) for more help.
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
project(FEBio)
set(FEBIO_LIBS FEBioFluid FEBioLib FEBioMech FEBioMix FEBioOpt FECore NumCore FEAMR FEBioRVE FEImgLib FEBioPlot FEBioXML)
set(STATIC_FEBIO_LIBS FEBioTest febcode)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER Autogen)
# Set a default build type if none was specified
set(default_build_type "Release")
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()
##### Set appropriate flag for operating system ####
if(WIN32)
add_definitions(-DWIN32 -DFECORE_DLL)
elseif(APPLE)
add_definitions(-D__APPLE__)
add_definitions(-DHAS_ACCEL)
else()
add_definitions(-DLINUX)
option(USE_STATIC_STDLIBS "Helps to create more portable binaries" ON)
endif()
##### Search for library and include directories #####
include(FindDependencies.cmake)
##### Check compiler for std::filesystem support #####
include(CheckCXXSourceCompiles)
check_cxx_source_compiles("
#include
int main() {
std::filesystem::path p{\"test\"};
return 0;
}
" HAS_STD_FILESYSTEM)
#### Check if paths are valid and find libs ####
function(findLib libName libDir libOut)
# Optional arguments ARGV3-ARVG6 can be used as alernative names for the library
if(WIN32)
find_library(TEMP NAMES ${libName}.lib ${ARGV3}.lib ${ARGV4}.lib ${ARGV5}.lib ${ARGV6}.lib
PATHS ${${libDir}} NO_DEFAULT_PATH)
else()
find_library(TEMP NAMES lib${libName}.a lib${ARGV3}.a lib${ARGV4}.a lib${ARGV5}.a lib${ARGV6}.a
PATHS ${${libDir}} NO_DEFAULT_PATH)
endif()
if(TEMP)
set(${libOut} ${TEMP} PARENT_SCOPE)
unset(TEMP CACHE)
else()
if(WIN32)
message(SEND_ERROR "Could not find ${libName}.lib. Check ${libName}.")
elseif(APPLE)
message(SEND_ERROR "Could not find lib${libName}.so, lib${libName}.a, or lib${libName}.dylib Check ${libDir}.")
else()
message(SEND_ERROR "Could not find lib${libName}.so, or lib${libName}.a. Check ${libDir}")
endif()
unset(TEMP CACHE)
endif()
endfunction()
if(USE_MKL)
set(MKL_LIB_NAMES mkl_intel_lp64 mkl_core mkl_intel_thread)
foreach(name IN LISTS MKL_LIB_NAMES)
findLib(${name} MKL_LIB_DIR MKL_LIB)
list(APPEND MKL_LIBS ${MKL_LIB})
unset(MKL_LIB)
endforeach(name)
if(NOT EXISTS ${MKL_OMP_LIB})
message(SEND_ERROR "Could not find MKL OMP library. Check MKL_OMP_LIB.")
endif()
endif()
if(USE_FFTW)
if(NOT EXISTS ${FFTW_LIB})
message(SEND_ERROR "Could not find FFTW library libfftw3-3. Check FFTW_LIB.")
message(SEND_ERROR "The library is " ${FFTW_LIB})
endif()
if(NOT EXISTS ${FFTW_INC}/fftw3.h)
message(SEND_ERROR "Could not find fftw3.h. Check FFTW_INC.")
endif()
endif()
if(USE_HYPRE)
if(NOT EXISTS ${HYPRE_LIB})
message(SEND_ERROR "Could not find HYPRE library. Check HYPRE_LIB.")
endif()
if(NOT EXISTS ${HYPRE_INC}/HYPRE_IJ_mv.h)
message(SEND_ERROR "Could not find HYPRE_IJ_mv.h. Check HYPRE_INC.")
endif()
endif()
if(USE_SUPERLU_MT)
if(NOT EXISTS ${SUPERLU_MT_LIB})
message(SEND_ERROR "Could not find SUPERLU_MT library. Check SUPERLU_MT_LIB.")
endif()
if(NOT EXISTS ${SUPERLU_MT_INC}/slu_mt_ddefs.h)
message(SEND_ERROR "Could not find slu_mt_ddefs.h. Check SUPERLU_MT_INC.")
endif()
endif()
if(USE_MMG)
if(NOT EXISTS ${MMG_LIB})
message(SEND_ERROR "Could not find MMG library. Check MMG_LIB.")
endif()
if(NOT EXISTS ${MMGS_LIB})
message(SEND_ERROR "Could not find MMGS library. Check MMGS_LIB.")
endif()
if(NOT EXISTS ${MMG_INC}/mmg/libmmg.h)
message(SEND_ERROR "Could not find libmmg.h. Check MMG_INC.")
endif()
endif()
if(USE_LEVMAR)
if(NOT EXISTS ${LEVMAR_INC}/levmar.h)
message(SEND_ERROR "Could not find levmar.h. Check LEVMAR_INC.")
endif()
if(NOT EXISTS ${LEVMAR_LIB})
message(SEND_ERROR "Could not find Levmar library. Check LEVMAR_LIB.")
endif()
endif()
if(USE_NLOPT)
if(NOT EXISTS ${NLOPT_INC}/nlopt.h)
message(SEND_ERROR "Could not find nlopt.h. Check NLOPT_INC.")
endif()
if(NOT EXISTS ${NLOPT_LIB})
message(SEND_ERROR "Could not find NLOPT library. Check NLOPT_LIB.")
endif()
endif()
if(USE_ZLIB)
if(NOT EXISTS ${ZLIB_LIBRARY_RELEASE})
message(SEND_ERROR "Could not find ZLIB. Check ZLIB_LIBRARY_RELEASE.")
endif()
if(NOT EXISTS ${ZLIB_INCLUDE_DIR}/zlib.h)
message(SEND_ERROR "Could not find zlib.h. Check ZLIB_INCLUDE_DIR.")
endif()
endif()
##### Set up compiler flags #####
if(WIN32)
add_compile_options(/MP /wd4996 /wd4251 /wd4275)
elseif(APPLE)
set(CMAKE_BUILD_RPATH @executable_path/../lib/;@executable_path/../Frameworks)
set(OMP_INC "" CACHE PATH "Path to the OMP include directory")
mark_as_advanced(OMP_INC)
else()
add_compile_options(-fopenmp -w)
set(CMAKE_BUILD_RPATH_USE_LINK_PATH FALSE)
set(CMAKE_BUILD_RPATH $ORIGIN/../lib/)
endif()
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
add_compile_options(-no-intel-extensions)
endif()
# Add openMP flags for macOS if found.
if(APPLE)
if(${OpenMP_C_FOUND})
add_compile_options(-Xpreprocessor -fopenmp)
endif()
endif()
##### Find Source Files #####
macro(findHdrSrc name)
file(GLOB HDR_${name} "${name}/*.h*")
file(GLOB SRC_${name} "${name}/*.cpp")
endmacro()
foreach(name IN LISTS FEBIO_LIBS)
findHdrSrc(${name})
endforeach(name)
foreach(name IN LISTS STATIC_FEBIO_LIBS)
findHdrSrc(${name})
endforeach(name)
macro(addLib name TYPE)
string(TOLOWER ${name} lname)
add_library(${lname} ${TYPE} ${HDR_${name}} ${SRC_${name}})
set_property(TARGET ${lname} PROPERTY AUTOGEN_BUILD_DIR ${CMAKE_BINARY_DIR}/CMakeFiles/AutoGen/${name}_autogen)
if(NOT WIN32)
set_property(TARGET ${lname} PROPERTY POSITION_INDEPENDENT_CODE ON)
endif()
if(APPLE)
target_link_libraries(${lname} PRIVATE "-undefined dynamic_lookup")
endif()
endmacro()
foreach(name IN LISTS FEBIO_LIBS)
addLib(${name} SHARED)
endforeach(name)
foreach(name IN LISTS STATIC_FEBIO_LIBS)
addLib(${name} STATIC)
endforeach(name)
##### Set up executable compilation #####
file(GLOB HEADERS "FEBio/*.h")
file(GLOB SOURCES "FEBio/*.cpp")
add_executable (febio4 ${HEADERS} ${SOURCES})
if(WIN32)
target_compile_options(febio4 PRIVATE /openmp)
target_compile_options(febiofluid PRIVATE /openmp)
target_compile_options(febiolib PRIVATE /openmp)
target_compile_options(febiomech PRIVATE /openmp)
target_compile_options(febiomix PRIVATE /openmp)
target_compile_options(febioopt PRIVATE /openmp)
target_compile_options(fecore PRIVATE /openmp)
target_compile_options(feamr PRIVATE /openmp)
target_compile_options(febiorve PRIVATE /openmp)
target_compile_options(feimglib PRIVATE /openmp)
target_compile_options(febioplot PRIVATE /openmp)
target_compile_options(febiotest PRIVATE /openmp)
target_compile_options(febioxml PRIVATE /openmp)
endif()
##### Set dev commit information #####
# Cross platform execute_process
macro(crossExecProcess OUT)
if(WIN32)
execute_process(COMMAND cmd.exe /c ${CMD}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE SUCCESS
OUTPUT_VARIABLE ${OUT}
OUTPUT_STRIP_TRAILING_WHITESPACE)
else()
execute_process(COMMAND ${CMD}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE SUCCESS
OUTPUT_VARIABLE ${OUT}
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
endmacro()
# Check for git and give warning if not available
option(SET_DEVCOMMIT "Set the DEVCOMMIT macro with git commit hash" ON)
if(${SET_DEVCOMMIT} AND EXISTS ${CMAKE_SOURCE_DIR}/.git)
if(WIN32)
set(CMD where git)
else()
set(CMD which git)
endif()
crossExecProcess(NULL)
if(SUCCESS EQUAL 0)
# Get branch name and check if we're on the develop branch
set(CMD git rev-parse --abbrev-ref HEAD)
crossExecProcess(BRANCH_NAME)
string(COMPARE EQUAL ${BRANCH_NAME} "master" ISMASTER)
# Get the commit info and set the DEVCOMMIT macro
if(SUCCESS EQUAL 0 AND NOT ISMASTER)
set(CMD git rev-parse --short=9 HEAD)
crossExecProcess(DEVCOMMIT)
if(${SUCCESS} EQUAL 0)
target_compile_definitions(febiolib PUBLIC "DEVCOMMIT=\"${DEVCOMMIT}\"")
endif()
endif()
else()
message(WARNING "Could not find git in system PATH. Development version info will not be addded.")
endif()
endif()
##### Temp fix for Gerard to fix HYPRE's MPI include problem #####
set(EXTRA_INC "" CACHE STRING "Enter extra include paths separated by spaces")
set(EXTRA_LIB "" CACHE STRING "Enter extra library paths separated by spaces")
mark_as_advanced(EXTRA_INC)
##### Setup includes, defnitions, and linking options #####
include_directories(${PROJECT_SOURCE_DIR})
if(HAS_STD_FILESYSTEM)
target_compile_definitions(febiolib PRIVATE HAS_STD_FILESYSTEM)
endif()
# Link LEVMAR
if(USE_LEVMAR)
target_include_directories(febioopt PRIVATE ${LEVMAR_INC})
target_compile_definitions(febioopt PRIVATE HAVE_LEVMAR)
target_link_libraries(febioopt PRIVATE ${LEVMAR_LIB})
endif()
# Link NLOPT
if(USE_NLOPT)
target_include_directories(febioopt PRIVATE ${NLOPT_INC})
target_compile_definitions(febioopt PRIVATE HAVE_NLOPT)
target_link_libraries(febioopt PRIVATE ${NLOPT_LIB})
endif()
# Link FFTW
if(USE_FFTW)
target_include_directories(feimglib PRIVATE ${FFTW_INC})
target_compile_definitions(feimglib PRIVATE HAVE_FFTW)
target_link_libraries(feimglib PRIVATE ${FFTW_LIB})
endif()
# Link HYPRE
if(USE_HYPRE)
target_include_directories(numcore PRIVATE ${HYPRE_INC})
target_compile_definitions(numcore PRIVATE HYPRE)
target_link_libraries(numcore PRIVATE ${HYPRE_LIB})
endif()
# Link SuperLU_MT
if(USE_SUPERLU_MT)
target_include_directories(numcore PRIVATE ${SUPERLU_MT_INC})
target_compile_definitions(numcore PRIVATE HAVE_SUPERLU_MT)
if(APPLE)
target_compile_definitions(numcore PRIVATE _PTHREAD)
endif()
target_link_libraries(numcore PRIVATE ${SUPERLU_MT_LIB})
endif()
# Link MKL
if(USE_MKL)
target_include_directories(numcore PRIVATE ${MKL_INC} ${OpenMP_C_LIBRARIES})
target_compile_definitions(numcore PRIVATE MKL_ISS PARDISO)
target_include_directories(febioopt PRIVATE ${MKL_INC})
target_compile_definitions(febioopt PRIVATE MKL_ISS PARDISO)
if(WIN32 OR APPLE)
target_link_libraries(numcore PRIVATE ${MKL_OMP_LIB} ${MKL_LIBS})
target_link_libraries(febioopt PRIVATE ${MKL_OMP_LIB} ${MKL_LIBS})
else()
target_link_libraries(numcore PRIVATE -Wl,--start-group ${MKL_OMP_LIB} ${MKL_LIBS} -Wl,--end-group)
target_link_libraries(febioopt PRIVATE -Wl,--start-group ${MKL_OMP_LIB} ${MKL_LIBS} -Wl,--end-group)
endif()
if(FORCE_SYSTEM_OMP)
target_link_libraries(numcore PRIVATE ${OpenMP_C_LIBRARIES})
target_link_libraries(febioopt PRIVATE ${OpenMP_C_LIBRARIES})
endif()
else()
# If not using MKL, we still need OpenMP from the system.
if(${OpenMP_C_FOUND})
target_link_libraries(numcore PRIVATE ${OpenMP_C_LIBRARIES})
target_link_libraries(febioopt PRIVATE ${OpenMP_C_LIBRARIES})
endif()
endif()
# Manually pull in include dirs for OpenMP on macOS
if(APPLE)
target_include_directories(febiomech PRIVATE ${OpenMP_C_INCLUDE_DIRS} ${OMP_INC})
endif()
# Link Pardiso-project
if(USE_PDL)
target_compile_definitions(numcore PRIVATE PARDISODL)
target_link_libraries(numcore PRIVATE ${PDL_LIB})
set(ENV{PARDISOLICMESSAGE} "1")
# We still need OpenMP from the system.
if(${OpenMP_C_FOUND})
target_link_libraries(numcore PRIVATE ${OpenMP_C_LIBRARIES})
target_link_libraries(febioopt PRIVATE ${OpenMP_C_LIBRARIES})
endif()
endif()
# Link Accelerate framework
if (APPLE)
target_link_libraries(numcore PRIVATE "-framework Accelerate")
endif()
# Link MMG
if(USE_MMG)
target_include_directories(feamr PRIVATE ${MMG_INC})
target_compile_definitions(feamr PRIVATE HAS_MMG)
target_link_libraries(feamr PRIVATE ${MMG_LIB} ${MMGS_LIB})
endif()
# Link ZLIB
if(USE_ZLIB)
target_include_directories(febioplot PRIVATE ${ZLIB_INCLUDE_DIR})
target_compile_definitions(febioplot PRIVATE HAVE_ZLIB)
target_link_libraries(febioplot PRIVATE ${ZLIB_LIBRARY_RELEASE})
endif()
# Extra Includes
target_include_directories(febioopt PRIVATE ${EXTRA_INC})
target_include_directories(numcore PRIVATE ${EXTRA_INC})
target_include_directories(feamr PRIVATE ${EXTRA_INC})
target_include_directories(febiolib PRIVATE ${EXTRA_INC})
# Extra Libs
target_link_libraries(numcore PRIVATE ${EXTRA_LIB})
if(WIN32)
target_link_libraries(febio4 psapi.lib ws2_32.lib)
else()
target_link_libraries(febio4 -ldl)
endif()
# Link Libraries into FEBioLib
target_link_libraries(numcore PRIVATE fecore)
target_link_libraries(febioxml PRIVATE fecore)
target_link_libraries(febiotest PRIVATE fecore)
target_link_libraries(febioplot PRIVATE fecore)
target_link_libraries(feimglib PRIVATE fecore)
target_link_libraries(feamr PRIVATE fecore)
target_link_libraries(febiorve PRIVATE fecore febiomech febioxml febioplot)
target_link_libraries(febioopt PRIVATE fecore febioxml)
target_link_libraries(febiomix PRIVATE febiomech fecore)
target_link_libraries(febiomech PRIVATE fecore feamr)
target_link_libraries(febiofluid PRIVATE febiomix febiomech fecore)
target_link_libraries(febiolib PRIVATE febioplot febiomech
febiomix febioxml numcore febioopt febiotest febiofluid feamr febiorve fecore feimglib)
# pull febcode into FECore
target_link_libraries(fecore PRIVATE febcode)
if (WIN32)
target_link_libraries(febiolib PRIVATE psapi.lib)
endif()
# Link FEBio libraries
if(WIN32 OR APPLE)
target_link_libraries(febio4 fecore febiolib)
else()
if(USE_STATIC_STDLIBS)
target_link_libraries(numcore PRIVATE -static-libstdc++ -static-libgcc)
target_link_libraries(febioxml PRIVATE -static-libstdc++ -static-libgcc)
target_link_libraries(febiotest PRIVATE -static-libstdc++ -static-libgcc)
target_link_libraries(febiorve PRIVATE -static-libstdc++ -static-libgcc)
target_link_libraries(febioplot PRIVATE -static-libstdc++ -static-libgcc)
target_link_libraries(febioopt PRIVATE -static-libstdc++ -static-libgcc)
target_link_libraries(febiomix PRIVATE -static-libstdc++ -static-libgcc)
target_link_libraries(febiomech PRIVATE -static-libstdc++ -static-libgcc)
target_link_libraries(febiofluid PRIVATE -static-libstdc++ -static-libgcc)
target_link_libraries(feimglib PRIVATE -static-libstdc++ -static-libgcc)
target_link_libraries(feamr PRIVATE -static-libstdc++ -static-libgcc)
target_link_libraries(febiolib PRIVATE -static-libstdc++ -static-libgcc)
target_link_libraries(fecore PRIVATE -static-libstdc++ -static-libgcc)
target_link_libraries(febio4 -static-libstdc++ -static-libgcc)
endif()
target_link_libraries(febio4 -Wl,--start-group fecore febiolib -Wl,--end-group)
# Extra compiler flags for intel compiler
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
target_link_libraries(febio4 -static-intel)
endif()
endif()
#### Set up installation #####
install(TARGETS febio4 numcore febioxml febiotest febiorve febioplot febioopt
febiomix febiomech febiofluid feamr feimglib fecore febiolib
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
install(DIRECTORY
FEBio NumCore FECore FEAMR FEImgLib FEBioFluid FEBioLib FEBioMech FEBioMix
FEBioOpt FEBioRVE FEBioPlot FEBioTest FEBioXML
DESTINATION include
FILES_MATCHING PATTERN "*.h*"
)
install(FILES FEBioConfig.cmake
DESTINATION lib/cmake/FEBio
)
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[info@febio.org].
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
================================================
FILE: CONTRIBUTING.md
================================================
# Contribution Guidelines
## Reporting issues
- **Search for existing issues.** Please check to see if someone else has reported the same issue.
- **Share as much information as possible.** Include operating system and version, browser and version. Also, include steps to reproduce the bug.
## Project Setup
Refer to the [README](README.md).
## Code Style
### Variable Naming
Not all current code follows the conventions below but these will be followed for future developments.
- Maximize the use of semantic and descriptive variables names (e.g. `faceIndices` not `fcInd` or `fi`). Avoid abbreviations except in cases of industry wide usage. In some cases non-descriptive and short variable names are exceptable for instance vertices (points), faces, edges, colors and logic arrays may be denoted `V`, `F`, `E`, `C`, `L`. Furthermore, if a mathematrical symbol or letter is commonly used for some entity it may be acceptable to use short names e.g. coordinates may be referred to as `X`, `Y` and `Z` and image coordinates of indices may be referred to as `I`, `J` and `K`.
## Testing
Proving example files as well as a description of the expected outcomes. This can be in the form of a log file or data file that contain partial solution data.
## Pull requests
- Try not to pollute your pull request with unintended changes – keep them simple and small. If possible, squash your commits.
- Try to share how your code has been tested before submitting a pull request.
- If your PR resolves an issue, include **closes #ISSUE_NUMBER** in your commit message (or a [synonym](https://help.github.com/articles/closing-issues-via-commit-messages)).
- Review
- If your PR is ready for review, another contributor will be assigned to review your PR
- The reviewer will accept or comment on the PR.
- If needed address the comments left by the reviewer. Once you're ready to continue the review, ping the reviewer in a comment.
- Once accepted your code will be merged to `master`
================================================
FILE: CppProperties.json
================================================
{
"configurations": [
{
"inheritEnvironments": [
"msvc_x64"
],
"name": "x64-Release",
"includePath": [
"${env.INCLUDE}",
"${workspaceRoot}\\**"
],
"defines": [
"WIN32",
"NDEBUG",
"UNICODE",
"_UNICODE"
],
"intelliSenseMode": "windows-msvc-x64"
}
]
}
================================================
FILE: Documentation/Copyright-FEBio.txt
================================================
1. Introduction to FEBio licenses
=================================
Prior to FEBio 2.9, FEBio (including the source code, SDK, and binaries) were distributed under a custom license that limited the use of FEBio and its derived products to academic users only. Commercial users were required to obtain a separate commercial license.
As of FEBio version 2.9 the FEBio source code and SDK are licensed under the MIT license, listed below. The binaries and installers available from febio.org are still distributed under the custom license, but the restrictions for commercial users were removed.
2. FEBio AUTHORS
================
The following people are considered AUTHORS of the FEBio software.
- Steve Maas
- Gerard A. Ateshian
- Jeffrey A. Weiss
The following people have also contributed to the FEBio software.
- David R. Rawlins
- Benjamin J. Ellis
- Alex A. Veress
- Sam Evans
- Shawn Reese
- Aaron Swedberg
- Jocelyn Todd
- Lowell Edgar
- Jay J. Shim
- Marsh Paulson
- Klevis Aliaj
- Brandon Zimmerman
- Jay C. Hou
3. Copyright HOLDERS
===================
The following lists the Copyright HOLDERS:
- University of Utah
- The Trustees of Columbia University in the City of New York
- The AUTHORS as defined above
4. FEBIO license
=================
The following text shall appear in all source code files that are part of the FEBio software.
-->
This file is part of the FEBio source code and is licensed under the MIT license
listed below.
See Copyright-FEBio.txt for details.
Copyright (c) 2020 University of Utah, The Trustees of Columbia University in
the City of New York, and others.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-->
================================================
FILE: Documentation/Doxygen/Doxyfile
================================================
# Doxyfile 1.12.0
# This file describes the settings to be used by the documentation system
# Doxygen (www.doxygen.org) for a project.
#
# All text after a double hash (##) is considered a comment and is placed in
# front of the TAG it is preceding.
#
# All text after a single hash (#) is considered a comment and will be ignored.
# The format is:
# TAG = value [value, ...]
# For lists, items can also be appended using:
# TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (\" \").
#
# Note:
#
# Use Doxygen to compare the used configuration file with the template
# configuration file:
# doxygen -x [configFile]
# Use Doxygen to compare the used configuration file with the template
# configuration file without replacing the environment variables or CMake type
# replacement variables:
# doxygen -x_noenv [configFile]
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
# This tag specifies the encoding used for all characters in the configuration
# file that follow. The default is UTF-8 which is also the encoding used for all
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
# iconv built into libc) for the transcoding. See
# https://www.gnu.org/software/libiconv/ for the list of possible encodings.
# The default value is: UTF-8.
DOXYFILE_ENCODING = UTF-8
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
# double-quotes, unless you are using Doxywizard) that should identify the
# project for which the documentation is generated. This name is used in the
# title of most generated pages and in a few other places.
# The default value is: My Project.
PROJECT_NAME = FEBio
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 4.8
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.
PROJECT_BRIEF = "Finite Elements for Biomechanics"
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
# the logo to the output directory.
PROJECT_LOGO = ../febio_logo.png
# With the PROJECT_ICON tag one can specify an icon that is included in the tabs
# when the HTML document is shown. Doxygen will copy the logo to the output
# directory.
PROJECT_ICON =
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
# entered, it will be relative to the location where Doxygen was started. If
# left blank the current directory will be used.
OUTPUT_DIRECTORY = doc
# If the CREATE_SUBDIRS tag is set to YES then Doxygen will create up to 4096
# sub-directories (in 2 levels) under the output directory of each output format
# and will distribute the generated files over these directories. Enabling this
# option can be useful when feeding Doxygen a huge amount of source files, where
# putting all generated files in the same directory would otherwise causes
# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to
# control the number of sub-directories.
# The default value is: NO.
CREATE_SUBDIRS = NO
# Controls the number of sub-directories that will be created when
# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every
# level increment doubles the number of directories, resulting in 4096
# directories at level 8 which is the default and also the maximum value. The
# sub-directories are organized in 2 levels, the first level always has a fixed
# number of 16 directories.
# Minimum value: 0, maximum value: 8, default value: 8.
# This tag requires that the tag CREATE_SUBDIRS is set to YES.
CREATE_SUBDIRS_LEVEL = 8
# If the ALLOW_UNICODE_NAMES tag is set to YES, Doxygen will allow non-ASCII
# characters to appear in the names of generated files. If set to NO, non-ASCII
# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
# U+3044.
# The default value is: NO.
ALLOW_UNICODE_NAMES = NO
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
# documentation generated by Doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian,
# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English
# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek,
# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with
# English messages), Korean, Korean-en (Korean with English messages), Latvian,
# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese,
# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish,
# Swedish, Turkish, Ukrainian and Vietnamese.
# The default value is: English.
OUTPUT_LANGUAGE = English
# If the BRIEF_MEMBER_DESC tag is set to YES, Doxygen will include brief member
# descriptions after the members that are listed in the file and class
# documentation (similar to Javadoc). Set to NO to disable this.
# The default value is: YES.
BRIEF_MEMBER_DESC = YES
# If the REPEAT_BRIEF tag is set to YES, Doxygen will prepend the brief
# description of a member or function before the detailed description
#
# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
# brief descriptions will be completely suppressed.
# The default value is: YES.
REPEAT_BRIEF = YES
# This tag implements a quasi-intelligent brief description abbreviator that is
# used to form the text in various listings. Each string in this list, if found
# as the leading text of the brief description, will be stripped from the text
# and the result, after processing the whole list, is used as the annotated
# text. Otherwise, the brief description is used as-is. If left blank, the
# following values are used ($name is automatically replaced with the name of
# the entity):The $name class, The $name widget, The $name file, is, provides,
# specifies, contains, represents, a, an and the.
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
"The $name file" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# Doxygen will generate a detailed section even if there is only a brief
# description.
# The default value is: NO.
ALWAYS_DETAILED_SEC = NO
# If the INLINE_INHERITED_MEMB tag is set to YES, Doxygen will show all
# inherited members of a class in the documentation of that class as if those
# members were ordinary class members. Constructors, destructors and assignment
# operators of the base classes will not be shown.
# The default value is: NO.
INLINE_INHERITED_MEMB = NO
# If the FULL_PATH_NAMES tag is set to YES, Doxygen will prepend the full path
# before files name in the file list and in the header files. If set to NO the
# shortest path that makes the file name unique will be used
# The default value is: YES.
FULL_PATH_NAMES = NO
# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
# Stripping is only done if one of the specified strings matches the left-hand
# part of the path. The tag can be used to show relative paths in the file list.
# If left blank the directory from which Doxygen is run is used as the path to
# strip.
#
# Note that you can specify absolute paths here, but also relative paths, which
# will be relative from the directory where Doxygen is started.
# This tag requires that the tag FULL_PATH_NAMES is set to YES.
STRIP_FROM_PATH =
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
# path mentioned in the documentation of a class, which tells the reader which
# header file to include in order to use a class. If left blank only the name of
# the header file containing the class definition is used. Otherwise one should
# specify the list of include paths that are normally passed to the compiler
# using the -I flag.
STRIP_FROM_INC_PATH =
# If the SHORT_NAMES tag is set to YES, Doxygen will generate much shorter (but
# less readable) file names. This can be useful is your file systems doesn't
# support long names like on DOS, Mac, or CD-ROM.
# The default value is: NO.
SHORT_NAMES = NO
# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen will interpret the
# first line (until the first dot) of a Javadoc-style comment as the brief
# description. If set to NO, the Javadoc-style will behave just like regular Qt-
# style comments (thus requiring an explicit @brief command for a brief
# description.)
# The default value is: NO.
JAVADOC_AUTOBRIEF = NO
# If the JAVADOC_BANNER tag is set to YES then Doxygen will interpret a line
# such as
# /***************
# as being the beginning of a Javadoc-style comment "banner". If set to NO, the
# Javadoc-style will behave just like regular comments and it will not be
# interpreted by Doxygen.
# The default value is: NO.
JAVADOC_BANNER = NO
# If the QT_AUTOBRIEF tag is set to YES then Doxygen will interpret the first
# line (until the first dot) of a Qt-style comment as the brief description. If
# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
# requiring an explicit \brief command for a brief description.)
# The default value is: NO.
QT_AUTOBRIEF = NO
# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen treat a
# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
# a brief description. This used to be the default behavior. The new default is
# to treat a multi-line C++ comment block as a detailed description. Set this
# tag to YES if you prefer the old behavior instead.
#
# Note that setting this tag to YES also means that rational rose comments are
# not recognized any more.
# The default value is: NO.
MULTILINE_CPP_IS_BRIEF = NO
# By default Python docstrings are displayed as preformatted text and Doxygen's
# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the
# Doxygen's special commands can be used and the contents of the docstring
# documentation blocks is shown as Doxygen documentation.
# The default value is: YES.
PYTHON_DOCSTRING = YES
# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
# documentation from any documented member that it re-implements.
# The default value is: YES.
INHERIT_DOCS = YES
# If the SEPARATE_MEMBER_PAGES tag is set to YES then Doxygen will produce a new
# page for each member. If set to NO, the documentation of a member will be part
# of the file/class/namespace that contains it.
# The default value is: NO.
SEPARATE_MEMBER_PAGES = NO
# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
# uses this value to replace tabs by spaces in code fragments.
# Minimum value: 1, maximum value: 16, default value: 4.
TAB_SIZE = 4
# This tag can be used to specify a number of aliases that act as commands in
# the documentation. An alias has the form:
# name=value
# For example adding
# "sideeffect=@par Side Effects:^^"
# will allow you to put the command \sideeffect (or @sideeffect) in the
# documentation, which will result in a user-defined paragraph with heading
# "Side Effects:". Note that you cannot put \n's in the value part of an alias
# to insert newlines (in the resulting output). You can put ^^ in the value part
# of an alias to insert a newline as if a physical newline was in the original
# file. When you need a literal { or } or , in the value part of an alias you
# have to escape them by means of a backslash (\), this can lead to conflicts
# with the commands \{ and \} for these it is advised to use the version @{ and
# @} or use a double escape (\\{ and \\})
ALIASES =
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
# only. Doxygen will then generate output that is more tailored for C. For
# instance, some of the names that are used will be different. The list of all
# members will be omitted, etc.
# The default value is: NO.
OPTIMIZE_OUTPUT_FOR_C = NO
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
# Python sources only. Doxygen will then generate output that is more tailored
# for that language. For instance, namespaces will be presented as packages,
# qualified scopes will look different, etc.
# The default value is: NO.
OPTIMIZE_OUTPUT_JAVA = NO
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
# sources. Doxygen will then generate output that is tailored for Fortran.
# The default value is: NO.
OPTIMIZE_FOR_FORTRAN = NO
# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
# sources. Doxygen will then generate output that is tailored for VHDL.
# The default value is: NO.
OPTIMIZE_OUTPUT_VHDL = NO
# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice
# sources only. Doxygen will then generate output that is more tailored for that
# language. For instance, namespaces will be presented as modules, types will be
# separated into more groups, etc.
# The default value is: NO.
OPTIMIZE_OUTPUT_SLICE = NO
# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given
# extension. Doxygen has a built-in mapping, but you can override or extend it
# using this tag. The format is ext=language, where ext is a file extension, and
# language is one of the parsers supported by Doxygen: IDL, Java, JavaScript,
# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice,
# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser
# tries to guess whether the code is fixed or free formatted code, this is the
# default for Fortran type files). For instance to make Doxygen treat .inc files
# as Fortran files (default is PHP), and .f files as C (default is Fortran),
# use: inc=Fortran f=C.
#
# Note: For files without extension you can use no_extension as a placeholder.
#
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
# the files are not read by Doxygen. When specifying no_extension you should add
# * to the FILE_PATTERNS.
#
# Note see also the list of default file extension mappings.
EXTENSION_MAPPING =
# If the MARKDOWN_SUPPORT tag is enabled then Doxygen pre-processes all comments
# according to the Markdown format, which allows for more readable
# documentation. See https://daringfireball.net/projects/markdown/ for details.
# The output of markdown processing is further processed by Doxygen, so you can
# mix Doxygen, HTML, and XML commands with Markdown formatting. Disable only in
# case of backward compatibilities issues.
# The default value is: YES.
MARKDOWN_SUPPORT = YES
# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
# to that level are automatically included in the table of contents, even if
# they do not have an id attribute.
# Note: This feature currently applies only to Markdown headings.
# Minimum value: 0, maximum value: 99, default value: 6.
# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
TOC_INCLUDE_HEADINGS = 0
# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to
# generate identifiers for the Markdown headings. Note: Every identifier is
# unique.
# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a
# sequence number starting at 0 and GITHUB use the lower case version of title
# with any whitespace replaced by '-' and punctuation characters removed.
# The default value is: DOXYGEN.
# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
MARKDOWN_ID_STYLE = DOXYGEN
# When enabled Doxygen tries to link words that correspond to documented
# classes, or namespaces to their corresponding documentation. Such a link can
# be prevented in individual cases by putting a % sign in front of the word or
# globally by setting AUTOLINK_SUPPORT to NO.
# The default value is: YES.
AUTOLINK_SUPPORT = YES
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should set this
# tag to YES in order to let Doxygen match functions declarations and
# definitions whose arguments contain STL classes (e.g. func(std::string);
# versus func(std::string) {}). This also makes the inheritance and
# collaboration diagrams that involve STL classes more complete and accurate.
# The default value is: NO.
BUILTIN_STL_SUPPORT = NO
# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
# The default value is: NO.
CPP_CLI_SUPPORT = NO
# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
# https://www.riverbankcomputing.com/software) sources only. Doxygen will parse
# them like normal C++ but will assume all classes use public instead of private
# inheritance when no explicit protection keyword is present.
# The default value is: NO.
SIP_SUPPORT = NO
# For Microsoft's IDL there are propget and propput attributes to indicate
# getter and setter methods for a property. Setting this option to YES will make
# Doxygen to replace the get and set methods by a property in the documentation.
# This will only work if the methods are indeed getting or setting a simple
# type. If this is not the case, or you want to show the methods anyway, you
# should set this option to NO.
# The default value is: YES.
IDL_PROPERTY_SUPPORT = YES
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
# tag is set to YES then Doxygen will reuse the documentation of the first
# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
# The default value is: NO.
DISTRIBUTE_GROUP_DOC = NO
# If one adds a struct or class to a group and this option is enabled, then also
# any nested class or struct is added to the same group. By default this option
# is disabled and one has to add nested compounds explicitly via \ingroup.
# The default value is: NO.
GROUP_NESTED_COMPOUNDS = NO
# Set the SUBGROUPING tag to YES to allow class member groups of the same type
# (for instance a group of public functions) to be put as a subgroup of that
# type (e.g. under the Public Functions section). Set it to NO to prevent
# subgrouping. Alternatively, this can be done per class using the
# \nosubgrouping command.
# The default value is: YES.
SUBGROUPING = YES
# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
# are shown inside the group in which they are included (e.g. using \ingroup)
# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
# and RTF).
#
# Note that this feature does not work in combination with
# SEPARATE_MEMBER_PAGES.
# The default value is: NO.
INLINE_GROUPED_CLASSES = NO
# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
# with only public data fields or simple typedef fields will be shown inline in
# the documentation of the scope in which they are defined (i.e. file,
# namespace, or group documentation), provided this scope is documented. If set
# to NO, structs, classes, and unions are shown on a separate page (for HTML and
# Man pages) or section (for LaTeX and RTF).
# The default value is: NO.
INLINE_SIMPLE_STRUCTS = NO
# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
# enum is documented as struct, union, or enum with the name of the typedef. So
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
# with name TypeT. When disabled the typedef will appear as a member of a file,
# namespace, or class. And the struct will be named TypeS. This can typically be
# useful for C code in case the coding convention dictates that all compound
# types are typedef'ed and only the typedef is referenced, never the tag name.
# The default value is: NO.
TYPEDEF_HIDES_STRUCT = NO
# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
# cache is used to resolve symbols given their name and scope. Since this can be
# an expensive process and often the same symbol appears multiple times in the
# code, Doxygen keeps a cache of pre-resolved symbols. If the cache is too small
# Doxygen will become slower. If the cache is too large, memory is wasted. The
# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
# symbols. At the end of a run Doxygen will report the cache usage and suggest
# the optimal cache size from a speed point of view.
# Minimum value: 0, maximum value: 9, default value: 0.
LOOKUP_CACHE_SIZE = 0
# The NUM_PROC_THREADS specifies the number of threads Doxygen is allowed to use
# during processing. When set to 0 Doxygen will based this on the number of
# cores available in the system. You can set it explicitly to a value larger
# than 0 to get more control over the balance between CPU load and processing
# speed. At this moment only the input processing can be done using multiple
# threads. Since this is still an experimental feature the default is set to 1,
# which effectively disables parallel processing. Please report any issues you
# encounter. Generating dot graphs in parallel is controlled by the
# DOT_NUM_THREADS setting.
# Minimum value: 0, maximum value: 32, default value: 1.
NUM_PROC_THREADS = 1
# If the TIMESTAMP tag is set different from NO then each generated page will
# contain the date or date and time when the page was generated. Setting this to
# NO can help when comparing the output of multiple runs.
# Possible values are: YES, NO, DATETIME and DATE.
# The default value is: NO.
TIMESTAMP = NO
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
# If the EXTRACT_ALL tag is set to YES, Doxygen will assume all entities in
# documentation are documented, even if no documentation was available. Private
# class members and static file members will be hidden unless the
# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
# Note: This will also disable the warnings about undocumented members that are
# normally produced when WARNINGS is set to YES.
# The default value is: NO.
EXTRACT_ALL = YES
# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
# be included in the documentation.
# The default value is: NO.
EXTRACT_PRIVATE = NO
# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual
# methods of a class will be included in the documentation.
# The default value is: NO.
EXTRACT_PRIV_VIRTUAL = NO
# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
# scope will be included in the documentation.
# The default value is: NO.
EXTRACT_PACKAGE = NO
# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
# included in the documentation.
# The default value is: NO.
EXTRACT_STATIC = NO
# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
# locally in source files will be included in the documentation. If set to NO,
# only classes defined in header files are included. Does not have any effect
# for Java sources.
# The default value is: YES.
EXTRACT_LOCAL_CLASSES = YES
# This flag is only useful for Objective-C code. If set to YES, local methods,
# which are defined in the implementation section but not in the interface are
# included in the documentation. If set to NO, only methods in the interface are
# included.
# The default value is: NO.
EXTRACT_LOCAL_METHODS = NO
# If this flag is set to YES, the members of anonymous namespaces will be
# extracted and appear in the documentation as a namespace called
# 'anonymous_namespace{file}', where file will be replaced with the base name of
# the file that contains the anonymous namespace. By default anonymous namespace
# are hidden.
# The default value is: NO.
EXTRACT_ANON_NSPACES = NO
# If this flag is set to YES, the name of an unnamed parameter in a declaration
# will be determined by the corresponding definition. By default unnamed
# parameters remain unnamed in the output.
# The default value is: YES.
RESOLVE_UNNAMED_PARAMS = YES
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
# undocumented members inside documented classes or files. If set to NO these
# members will be included in the various overviews, but no documentation
# section is generated. This option has no effect if EXTRACT_ALL is enabled.
# The default value is: NO.
HIDE_UNDOC_MEMBERS = NO
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy. If set
# to NO, these classes will be included in the various overviews. This option
# will also hide undocumented C++ concepts if enabled. This option has no effect
# if EXTRACT_ALL is enabled.
# The default value is: NO.
HIDE_UNDOC_CLASSES = NO
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all friend
# declarations. If set to NO, these declarations will be included in the
# documentation.
# The default value is: NO.
HIDE_FRIEND_COMPOUNDS = NO
# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
# documentation blocks found inside the body of a function. If set to NO, these
# blocks will be appended to the function's detailed documentation block.
# The default value is: NO.
HIDE_IN_BODY_DOCS = NO
# The INTERNAL_DOCS tag determines if documentation that is typed after a
# \internal command is included. If the tag is set to NO then the documentation
# will be excluded. Set it to YES to include the internal documentation.
# The default value is: NO.
INTERNAL_DOCS = NO
# With the correct setting of option CASE_SENSE_NAMES Doxygen will better be
# able to match the capabilities of the underlying filesystem. In case the
# filesystem is case sensitive (i.e. it supports files in the same directory
# whose names only differ in casing), the option must be set to YES to properly
# deal with such files in case they appear in the input. For filesystems that
# are not case sensitive the option should be set to NO to properly deal with
# output files written for symbols that only differ in casing, such as for two
# classes, one named CLASS and the other named Class, and to also support
# references to files without having to specify the exact matching casing. On
# Windows (including Cygwin) and macOS, users should typically set this option
# to NO, whereas on Linux or other Unix flavors it should typically be set to
# YES.
# Possible values are: SYSTEM, NO and YES.
# The default value is: SYSTEM.
CASE_SENSE_NAMES = NO
# If the HIDE_SCOPE_NAMES tag is set to NO then Doxygen will show members with
# their full class and namespace scopes in the documentation. If set to YES, the
# scope will be hidden.
# The default value is: NO.
HIDE_SCOPE_NAMES = NO
# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then Doxygen will
# append additional text to a page's title, such as Class Reference. If set to
# YES the compound reference will be hidden.
# The default value is: NO.
HIDE_COMPOUND_REFERENCE= NO
# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class
# will show which file needs to be included to use the class.
# The default value is: YES.
SHOW_HEADERFILE = YES
# If the SHOW_INCLUDE_FILES tag is set to YES then Doxygen will put a list of
# the files that are included by a file in the documentation of that file.
# The default value is: YES.
SHOW_INCLUDE_FILES = YES
# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
# grouped member an include statement to the documentation, telling the reader
# which file to include in order to use the member.
# The default value is: NO.
SHOW_GROUPED_MEMB_INC = NO
# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen will list include
# files with double quotes in the documentation rather than with sharp brackets.
# The default value is: NO.
FORCE_LOCAL_INCLUDES = NO
# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
# documentation for inline members.
# The default value is: YES.
INLINE_INFO = YES
# If the SORT_MEMBER_DOCS tag is set to YES then Doxygen will sort the
# (detailed) documentation of file and class members alphabetically by member
# name. If set to NO, the members will appear in declaration order.
# The default value is: YES.
SORT_MEMBER_DOCS = YES
# If the SORT_BRIEF_DOCS tag is set to YES then Doxygen will sort the brief
# descriptions of file, namespace and class members alphabetically by member
# name. If set to NO, the members will appear in declaration order. Note that
# this will also influence the order of the classes in the class list.
# The default value is: NO.
SORT_BRIEF_DOCS = NO
# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then Doxygen will sort the
# (brief and detailed) documentation of class members so that constructors and
# destructors are listed first. If set to NO the constructors will appear in the
# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
# member documentation.
# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
# detailed member documentation.
# The default value is: NO.
SORT_MEMBERS_CTORS_1ST = NO
# If the SORT_GROUP_NAMES tag is set to YES then Doxygen will sort the hierarchy
# of group names into alphabetical order. If set to NO the group names will
# appear in their defined order.
# The default value is: NO.
SORT_GROUP_NAMES = NO
# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
# fully-qualified names, including namespaces. If set to NO, the class list will
# be sorted only by class name, not including the namespace part.
# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
# Note: This option applies only to the class list, not to the alphabetical
# list.
# The default value is: NO.
SORT_BY_SCOPE_NAME = NO
# If the STRICT_PROTO_MATCHING option is enabled and Doxygen fails to do proper
# type resolution of all parameters of a function it will reject a match between
# the prototype and the implementation of a member function even if there is
# only one candidate or it is obvious which candidate to choose by doing a
# simple string match. By disabling STRICT_PROTO_MATCHING Doxygen will still
# accept a match between prototype and implementation in such cases.
# The default value is: NO.
STRICT_PROTO_MATCHING = NO
# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
# list. This list is created by putting \todo commands in the documentation.
# The default value is: YES.
GENERATE_TODOLIST = NO
# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
# list. This list is created by putting \test commands in the documentation.
# The default value is: YES.
GENERATE_TESTLIST = NO
# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
# list. This list is created by putting \bug commands in the documentation.
# The default value is: YES.
GENERATE_BUGLIST = NO
# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
# the deprecated list. This list is created by putting \deprecated commands in
# the documentation.
# The default value is: YES.
GENERATE_DEPRECATEDLIST= NO
# The ENABLED_SECTIONS tag can be used to enable conditional documentation
# sections, marked by \if ... \endif and \cond
# ... \endcond blocks.
ENABLED_SECTIONS =
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
# initial value of a variable or macro / define can have for it to appear in the
# documentation. If the initializer consists of more lines than specified here
# it will be hidden. Use a value of 0 to hide initializers completely. The
# appearance of the value of individual variables and macros / defines can be
# controlled using \showinitializer or \hideinitializer command in the
# documentation regardless of this setting.
# Minimum value: 0, maximum value: 10000, default value: 30.
MAX_INITIALIZER_LINES = 30
# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
# the bottom of the documentation of classes and structs. If set to YES, the
# list will mention the files that were used to generate the documentation.
# The default value is: YES.
SHOW_USED_FILES = YES
# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
# will remove the Files entry from the Quick Index and from the Folder Tree View
# (if specified).
# The default value is: YES.
SHOW_FILES = NO
# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
# page. This will remove the Namespaces entry from the Quick Index and from the
# Folder Tree View (if specified).
# The default value is: YES.
SHOW_NAMESPACES = YES
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# Doxygen should invoke to get the current version for each file (typically from
# the version control system). Doxygen will invoke the program by executing (via
# popen()) the command command input-file, where command is the value of the
# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
# by Doxygen. Whatever the program writes to standard output is used as the file
# version. For an example see the documentation.
FILE_VERSION_FILTER =
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by Doxygen. The layout file controls the global structure of the generated
# output files in an output format independent way. To create the layout file
# that represents Doxygen's defaults, run Doxygen with the -l option. You can
# optionally specify a file name after the option, if omitted DoxygenLayout.xml
# will be used as the name of the layout file. See also section "Changing the
# layout of pages" for information.
#
# Note that if you run Doxygen from a directory containing a file called
# DoxygenLayout.xml, Doxygen will parse it automatically even if the LAYOUT_FILE
# tag is left empty.
LAYOUT_FILE =
# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
# the reference definitions. This must be a list of .bib files. The .bib
# extension is automatically appended if omitted. This requires the bibtex tool
# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.
# For LaTeX the style of the bibliography can be controlled using
# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
# search path. See also \cite for info how to create references.
CITE_BIB_FILES =
# The EXTERNAL_TOOL_PATH tag can be used to extend the search path (PATH
# environment variable) so that external tools such as latex and gs can be
# found.
# Note: Directories specified with EXTERNAL_TOOL_PATH are added in front of the
# path already specified by the PATH variable, and are added in the order
# specified.
# Note: This option is particularly useful for macOS version 14 (Sonoma) and
# higher, when running Doxygen from Doxywizard, because in this case any user-
# defined changes to the PATH are ignored. A typical example on macOS is to set
# EXTERNAL_TOOL_PATH = /Library/TeX/texbin /usr/local/bin
# together with the standard path, the full search path used by doxygen when
# launching external tools will then become
# PATH=/Library/TeX/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
EXTERNAL_TOOL_PATH =
#---------------------------------------------------------------------------
# Configuration options related to warning and progress messages
#---------------------------------------------------------------------------
# The QUIET tag can be used to turn on/off the messages that are generated to
# standard output by Doxygen. If QUIET is set to YES this implies that the
# messages are off.
# The default value is: NO.
QUIET = NO
# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated to standard error (stderr) by Doxygen. If WARNINGS is set to YES
# this implies that the warnings are on.
#
# Tip: Turn warnings on while writing the documentation.
# The default value is: YES.
WARNINGS = YES
# If the WARN_IF_UNDOCUMENTED tag is set to YES then Doxygen will generate
# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
# will automatically be disabled.
# The default value is: YES.
WARN_IF_UNDOCUMENTED = YES
# If the WARN_IF_DOC_ERROR tag is set to YES, Doxygen will generate warnings for
# potential errors in the documentation, such as documenting some parameters in
# a documented function twice, or documenting parameters that don't exist or
# using markup commands wrongly.
# The default value is: YES.
WARN_IF_DOC_ERROR = YES
# If WARN_IF_INCOMPLETE_DOC is set to YES, Doxygen will warn about incomplete
# function parameter documentation. If set to NO, Doxygen will accept that some
# parameters have no documentation without warning.
# The default value is: YES.
WARN_IF_INCOMPLETE_DOC = YES
# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
# are documented, but have no documentation for their parameters or return
# value. If set to NO, Doxygen will only warn about wrong parameter
# documentation, but not about the absence of documentation. If EXTRACT_ALL is
# set to YES then this flag will automatically be disabled. See also
# WARN_IF_INCOMPLETE_DOC
# The default value is: NO.
WARN_NO_PARAMDOC = NO
# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, Doxygen will warn about
# undocumented enumeration values. If set to NO, Doxygen will accept
# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag
# will automatically be disabled.
# The default value is: NO.
WARN_IF_UNDOC_ENUM_VAL = NO
# If the WARN_AS_ERROR tag is set to YES then Doxygen will immediately stop when
# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS
# then Doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but
# at the end of the Doxygen process Doxygen will return with a non-zero status.
# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then Doxygen behaves
# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined Doxygen will not
# write the warning messages in between other messages but write them at the end
# of a run, in case a WARN_LOGFILE is defined the warning messages will be
# besides being in the defined file also be shown at the end of a run, unless
# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case
# the behavior will remain as with the setting FAIL_ON_WARNINGS.
# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT.
# The default value is: NO.
WARN_AS_ERROR = NO
# The WARN_FORMAT tag determines the format of the warning messages that Doxygen
# can produce. The string should contain the $file, $line, and $text tags, which
# will be replaced by the file and line number from which the warning originated
# and the warning text. Optionally the format may contain $version, which will
# be replaced by the version of the file (if it could be obtained via
# FILE_VERSION_FILTER)
# See also: WARN_LINE_FORMAT
# The default value is: $file:$line: $text.
WARN_FORMAT = "$file:$line: $text"
# In the $text part of the WARN_FORMAT command it is possible that a reference
# to a more specific place is given. To make it easier to jump to this place
# (outside of Doxygen) the user can define a custom "cut" / "paste" string.
# Example:
# WARN_LINE_FORMAT = "'vi $file +$line'"
# See also: WARN_FORMAT
# The default value is: at line $line of file $file.
WARN_LINE_FORMAT = "at line $line of file $file"
# The WARN_LOGFILE tag can be used to specify a file to which warning and error
# messages should be written. If left blank the output is written to standard
# error (stderr). In case the file specified cannot be opened for writing the
# warning and error messages are written to standard error. When as file - is
# specified the warning and error messages are written to standard output
# (stdout).
WARN_LOGFILE =
#---------------------------------------------------------------------------
# Configuration options related to the input files
#---------------------------------------------------------------------------
# The INPUT tag is used to specify the files and/or directories that contain
# documented source files. You may enter file names like myfile.cpp or
# directories like /usr/src/myproject. Separate the files or directories with
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
INPUT = ../../
# This tag can be used to specify the character encoding of the source files
# that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses
# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
# documentation (see:
# https://www.gnu.org/software/libiconv/) for the list of possible encodings.
# See also: INPUT_FILE_ENCODING
# The default value is: UTF-8.
INPUT_ENCODING = UTF-8
# This tag can be used to specify the character encoding of the source files
# that Doxygen parses The INPUT_FILE_ENCODING tag can be used to specify
# character encoding on a per file pattern basis. Doxygen will compare the file
# name with each pattern and apply the encoding instead of the default
# INPUT_ENCODING) if there is a match. The character encodings are a list of the
# form: pattern=encoding (like *.php=ISO-8859-1).
# See also: INPUT_ENCODING for further information on supported encodings.
INPUT_FILE_ENCODING =
# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
# *.h) to filter out the source-files in the directories.
#
# Note that for custom extensions or not directly supported extensions you also
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
# read by Doxygen.
#
# Note the list of default checked file patterns might differ from the list of
# default file extension mappings.
#
# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm,
# *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl,
# *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d,
# *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to
# be provided as Doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice.
FILE_PATTERNS = *.c \
*.cc \
*.cxx \
*.cpp \
*.c++ \
*.java \
*.ii \
*.ixx \
*.ipp \
*.i++ \
*.inl \
*.idl \
*.ddl \
*.odl \
*.h \
*.hh \
*.hxx \
*.hpp \
*.h++ \
*.cs \
*.d \
*.php \
*.php4 \
*.php5 \
*.phtml \
*.inc \
*.m \
*.markdown \
*.md \
*.mm \
*.dox \
*.py \
*.pyw \
*.f90 \
*.f95 \
*.f03 \
*.f08 \
*.f \
*.for \
*.tcl \
*.vhd \
*.vhdl \
*.ucf \
*.qsf
# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
# The default value is: NO.
RECURSIVE = YES
# The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
#
# Note that relative paths are relative to the directory from which Doxygen is
# run.
EXCLUDE =
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
# from the input.
# The default value is: NO.
EXCLUDE_SYMLINKS = NO
# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
# certain files from those directories.
#
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories for example use the pattern */test/*
EXCLUDE_PATTERNS = */build/* \
*/cmbuild/* \
*/cmbuild22/* \
*/VS2017/* \
*/VS2019/* \
*/XCode/*
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
# output. The symbol name can be a fully qualified name, a word, or if the
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# ANamespace::AClass, ANamespace::*Test
EXCLUDE_SYMBOLS =
# The EXAMPLE_PATH tag can be used to specify one or more files or directories
# that contain example code fragments that are included (see the \include
# command).
EXAMPLE_PATH =
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
# *.h) to filter out the source-files in the directories. If left blank all
# files are included.
EXAMPLE_PATTERNS = *
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude commands
# irrespective of the value of the RECURSIVE tag.
# The default value is: NO.
EXAMPLE_RECURSIVE = NO
# The IMAGE_PATH tag can be used to specify one or more files or directories
# that contain images that are to be included in the documentation (see the
# \image command).
IMAGE_PATH = images \
../../
# The INPUT_FILTER tag can be used to specify a program that Doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
# by executing (via popen()) the command:
#
#
#
# where is the value of the INPUT_FILTER tag, and is the
# name of an input file. Doxygen will then use the output that the filter
# program writes to standard output. If FILTER_PATTERNS is specified, this tag
# will be ignored.
#
# Note that the filter must not add or remove lines; it is applied before the
# code is scanned, but not when the output code is generated. If lines are added
# or removed, the anchors will not be placed correctly.
#
# Note that Doxygen will use the data processed and written to standard output
# for further processing, therefore nothing else, like debug statements or used
# commands (so in case of a Windows batch file always use @echo OFF), should be
# written to standard output.
#
# Note that for custom extensions or not directly supported extensions you also
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
# properly processed by Doxygen.
INPUT_FILTER =
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis. Doxygen will compare the file name with each pattern and apply the
# filter if there is a match. The filters are a list of the form: pattern=filter
# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
# patterns match the file name, INPUT_FILTER is applied.
#
# Note that for custom extensions or not directly supported extensions you also
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
# properly processed by Doxygen.
FILTER_PATTERNS =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER) will also be used to filter the input files that are used for
# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
# The default value is: NO.
FILTER_SOURCE_FILES = NO
# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
# it is also possible to disable source filtering for a specific pattern using
# *.ext= (so without naming a filter).
# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
FILTER_SOURCE_PATTERNS =
# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
# is part of the input, its contents will be placed on the main page
# (index.html). This can be useful if you have a project on for instance GitHub
# and want to reuse the introduction page also for the Doxygen output.
USE_MDFILE_AS_MAINPAGE =
# The Fortran standard specifies that for fixed formatted Fortran code all
# characters from position 72 are to be considered as comment. A common
# extension is to allow longer lines before the automatic comment starts. The
# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can
# be processed before the automatic comment starts.
# Minimum value: 7, maximum value: 10000, default value: 72.
FORTRAN_COMMENT_AFTER = 72
#---------------------------------------------------------------------------
# Configuration options related to source browsing
#---------------------------------------------------------------------------
# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
# generated. Documented entities will be cross-referenced with these sources.
#
# Note: To get rid of all source code in the generated output, make sure that
# also VERBATIM_HEADERS is set to NO.
# The default value is: NO.
SOURCE_BROWSER = NO
# Setting the INLINE_SOURCES tag to YES will include the body of functions,
# multi-line macros, enums or list initialized variables directly into the
# documentation.
# The default value is: NO.
INLINE_SOURCES = NO
# Setting the STRIP_CODE_COMMENTS tag to YES will instruct Doxygen to hide any
# special comment blocks from generated source code fragments. Normal C, C++ and
# Fortran comments will always remain visible.
# The default value is: YES.
STRIP_CODE_COMMENTS = YES
# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
# entity all documented functions referencing it will be listed.
# The default value is: NO.
REFERENCED_BY_RELATION = NO
# If the REFERENCES_RELATION tag is set to YES then for each documented function
# all documented entities called/used by that function will be listed.
# The default value is: NO.
REFERENCES_RELATION = NO
# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
# to YES then the hyperlinks from functions in REFERENCES_RELATION and
# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
# link to the documentation.
# The default value is: YES.
REFERENCES_LINK_SOURCE = YES
# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
# source code will show a tooltip with additional information such as prototype,
# brief description and links to the definition and documentation. Since this
# will make the HTML file larger and loading of large files a bit slower, you
# can opt to disable this feature.
# The default value is: YES.
# This tag requires that the tag SOURCE_BROWSER is set to YES.
SOURCE_TOOLTIPS = YES
# If the USE_HTAGS tag is set to YES then the references to source code will
# point to the HTML generated by the htags(1) tool instead of Doxygen built-in
# source browser. The htags tool is part of GNU's global source tagging system
# (see https://www.gnu.org/software/global/global.html). You will need version
# 4.8.6 or higher.
#
# To use it do the following:
# - Install the latest version of global
# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file
# - Make sure the INPUT points to the root of the source tree
# - Run doxygen as normal
#
# Doxygen will invoke htags (and that will in turn invoke gtags), so these
# tools must be available from the command line (i.e. in the search path).
#
# The result: instead of the source browser generated by Doxygen, the links to
# source code will now point to the output of htags.
# The default value is: NO.
# This tag requires that the tag SOURCE_BROWSER is set to YES.
USE_HTAGS = NO
# If the VERBATIM_HEADERS tag is set the YES then Doxygen will generate a
# verbatim copy of the header file for each class for which an include is
# specified. Set to NO to disable this.
# See also: Section \class.
# The default value is: YES.
VERBATIM_HEADERS = NO
# If the CLANG_ASSISTED_PARSING tag is set to YES then Doxygen will use the
# clang parser (see:
# http://clang.llvm.org/) for more accurate parsing at the cost of reduced
# performance. This can be particularly helpful with template rich C++ code for
# which Doxygen's built-in parser lacks the necessary type information.
# Note: The availability of this option depends on whether or not Doxygen was
# generated with the -Duse_libclang=ON option for CMake.
# The default value is: NO.
CLANG_ASSISTED_PARSING = NO
# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS
# tag is set to YES then Doxygen will add the directory of each input to the
# include path.
# The default value is: YES.
# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
CLANG_ADD_INC_PATHS = YES
# If clang assisted parsing is enabled you can provide the compiler with command
# line options that you would normally use when invoking the compiler. Note that
# the include paths will already be set by Doxygen for the files and directories
# specified with INPUT and INCLUDE_PATH.
# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
CLANG_OPTIONS =
# If clang assisted parsing is enabled you can provide the clang parser with the
# path to the directory containing a file called compile_commands.json. This
# file is the compilation database (see:
# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the
# options used when the source files were built. This is equivalent to
# specifying the -p option to a clang tool, such as clang-check. These options
# will then be passed to the parser. Any options specified with CLANG_OPTIONS
# will be added as well.
# Note: The availability of this option depends on whether or not Doxygen was
# generated with the -Duse_libclang=ON option for CMake.
CLANG_DATABASE_PATH =
#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
# compounds will be generated. Enable this if the project contains a lot of
# classes, structs, unions or interfaces.
# The default value is: YES.
ALPHABETICAL_INDEX = YES
# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes)
# that should be ignored while generating the index headers. The IGNORE_PREFIX
# tag works for classes, function and member names. The entity will be placed in
# the alphabetical list under the first letter of the entity name that remains
# after removing the prefix.
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the HTML output
#---------------------------------------------------------------------------
# If the GENERATE_HTML tag is set to YES, Doxygen will generate HTML output
# The default value is: YES.
GENERATE_HTML = YES
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: html.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_OUTPUT = html
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
# generated HTML page (for example: .htm, .php, .asp).
# The default value is: .html.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_FILE_EXTENSION = .html
# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
# each generated HTML page. If the tag is left blank Doxygen will generate a
# standard header.
#
# To get valid HTML the header file that includes any scripts and style sheets
# that Doxygen needs, which is dependent on the configuration options used (e.g.
# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
# default header using
# doxygen -w html new_header.html new_footer.html new_stylesheet.css
# YourConfigFile
# and then modify the file new_header.html. See also section "Doxygen usage"
# for information on how to generate the default header that Doxygen normally
# uses.
# Note: The header is subject to change so you typically have to regenerate the
# default header when upgrading to a newer version of Doxygen. For a description
# of the possible markers and block names see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_HEADER =
# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
# generated HTML page. If the tag is left blank Doxygen will generate a standard
# footer. See HTML_HEADER for more information on how to generate a default
# footer and what special commands can be used inside the footer. See also
# section "Doxygen usage" for information on how to generate the default footer
# that Doxygen normally uses.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_FOOTER =
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
# sheet that is used by each HTML page. It can be used to fine-tune the look of
# the HTML output. If left blank Doxygen will generate a default style sheet.
# See also section "Doxygen usage" for information on how to generate the style
# sheet that Doxygen normally uses.
# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
# it is more robust and this tag (HTML_STYLESHEET) will in the future become
# obsolete.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_STYLESHEET =
# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
# cascading style sheets that are included after the standard style sheets
# created by Doxygen. Using this option one can overrule certain style aspects.
# This is preferred over using HTML_STYLESHEET since it does not replace the
# standard style sheet and is therefore more robust against future updates.
# Doxygen will copy the style sheet files to the output directory.
# Note: The order of the extra style sheet files is of importance (e.g. the last
# style sheet in the list overrules the setting of the previous ones in the
# list).
# Note: Since the styling of scrollbars can currently not be overruled in
# Webkit/Chromium, the styling will be left out of the default doxygen.css if
# one or more extra stylesheets have been specified. So if scrollbar
# customization is desired it has to be added explicitly. For an example see the
# documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_EXTRA_STYLESHEET =
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
# that these files will be copied to the base HTML output directory. Use the
# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
# files will be copied as-is; there are no commands or markers available.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_EXTRA_FILES =
# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output
# should be rendered with a dark or light theme.
# Possible values are: LIGHT always generates light mode output, DARK always
# generates dark mode output, AUTO_LIGHT automatically sets the mode according
# to the user preference, uses light mode if no preference is set (the default),
# AUTO_DARK automatically sets the mode according to the user preference, uses
# dark mode if no preference is set and TOGGLE allows a user to switch between
# light and dark mode via a button.
# The default value is: AUTO_LIGHT.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE = AUTO_DARK
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
# will adjust the colors in the style sheet and background images according to
# this color. Hue is specified as an angle on a color-wheel, see
# https://en.wikipedia.org/wiki/Hue for more information. For instance the value
# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
# purple, and 360 is red again.
# Minimum value: 0, maximum value: 359, default value: 220.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE_HUE = 220
# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
# in the HTML output. For a value of 0 the output will use gray-scales only. A
# value of 255 will produce the most vivid colors.
# Minimum value: 0, maximum value: 255, default value: 100.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE_SAT = 100
# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
# luminance component of the colors in the HTML output. Values below 100
# gradually make the output lighter, whereas values above 100 make the output
# darker. The value divided by 100 is the actual gamma applied, so 80 represents
# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
# change the gamma.
# Minimum value: 40, maximum value: 240, default value: 80.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE_GAMMA = 80
# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
# documentation will contain a main index with vertical navigation menus that
# are dynamically created via JavaScript. If disabled, the navigation index will
# consists of multiple levels of tabs that are statically embedded in every HTML
# page. Disable this option to support browsers that do not have JavaScript,
# like the Qt help browser.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_DYNAMIC_MENUS = YES
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
# page has loaded.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_DYNAMIC_SECTIONS = NO
# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be
# dynamically folded and expanded in the generated HTML source code.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_CODE_FOLDING = YES
# If the HTML_COPY_CLIPBOARD tag is set to YES then Doxygen will show an icon in
# the top right corner of code and text fragments that allows the user to copy
# its content to the clipboard. Note this only works if supported by the browser
# and the web page is served via a secure context (see:
# https://www.w3.org/TR/secure-contexts/), i.e. using the https: or file:
# protocol.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COPY_CLIPBOARD = YES
# Doxygen stores a couple of settings persistently in the browser (via e.g.
# cookies). By default these settings apply to all HTML pages generated by
# Doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store
# the settings under a project specific key, such that the user preferences will
# be stored separately.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_PROJECT_COOKIE =
# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
# shown in the various tree structured indices initially; the user can expand
# and collapse entries dynamically later on. Doxygen will expand the tree to
# such a level that at most the specified number of entries are visible (unless
# a fully collapsed tree already exceeds this amount). So setting the number of
# entries 1 will produce a full collapsed tree by default. 0 is a special value
# representing an infinite number of entries and will result in a full expanded
# tree by default.
# Minimum value: 0, maximum value: 9999, default value: 100.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_INDEX_NUM_ENTRIES = 100
# If the GENERATE_DOCSET tag is set to YES, additional index files will be
# generated that can be used as input for Apple's Xcode 3 integrated development
# environment (see:
# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To
# create a documentation set, Doxygen will generate a Makefile in the HTML
# output directory. Running make will produce the docset in that directory and
# running make install will install the docset in
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy
# genXcode/_index.html for more information.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_DOCSET = NO
# This tag determines the name of the docset feed. A documentation feed provides
# an umbrella under which multiple documentation sets from a single provider
# (such as a company or product suite) can be grouped.
# The default value is: Doxygen generated docs.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_FEEDNAME = "Doxygen generated docs"
# This tag determines the URL of the docset feed. A documentation feed provides
# an umbrella under which multiple documentation sets from a single provider
# (such as a company or product suite) can be grouped.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_FEEDURL =
# This tag specifies a string that should uniquely identify the documentation
# set bundle. This should be a reverse domain-name style string, e.g.
# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_BUNDLE_ID = org.doxygen.Project
# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
# the documentation publisher. This should be a reverse domain-name style
# string, e.g. com.mycompany.MyDocSet.documentation.
# The default value is: org.doxygen.Publisher.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
# The default value is: Publisher.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_PUBLISHER_NAME = Publisher
# If the GENERATE_HTMLHELP tag is set to YES then Doxygen generates three
# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
# on Windows. In the beginning of 2021 Microsoft took the original page, with
# a.o. the download links, offline the HTML help workshop was already many years
# in maintenance mode). You can download the HTML help workshop from the web
# archives at Installation executable (see:
# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo
# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe).
#
# The HTML Help Workshop contains a compiler that can convert all HTML output
# generated by Doxygen into a single compiled HTML file (.chm). Compiled HTML
# files are now used as the Windows 98 help format, and will replace the old
# Windows help format (.hlp) on all Windows platforms in the future. Compressed
# HTML files also contain an index, a table of contents, and you can search for
# words in the documentation. The HTML workshop also contains a viewer for
# compressed HTML files.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_HTMLHELP = NO
# The CHM_FILE tag can be used to specify the file name of the resulting .chm
# file. You can add a path in front of the file if the result should not be
# written to the html output directory.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
CHM_FILE =
# The HHC_LOCATION tag can be used to specify the location (absolute path
# including file name) of the HTML help compiler (hhc.exe). If non-empty,
# Doxygen will try to run the HTML help compiler on the generated index.hhp.
# The file has to be specified with full path.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
HHC_LOCATION =
# The GENERATE_CHI flag controls if a separate .chi index file is generated
# (YES) or that it should be included in the main .chm file (NO).
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
GENERATE_CHI = NO
# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
# and project file content.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
CHM_INDEX_ENCODING =
# The BINARY_TOC flag controls whether a binary table of contents is generated
# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
# enables the Previous and Next buttons.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
BINARY_TOC = NO
# The TOC_EXPAND flag can be set to YES to add extra items for group members to
# the table of contents of the HTML help documentation and to the tree view.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
TOC_EXPAND = NO
# The SITEMAP_URL tag is used to specify the full URL of the place where the
# generated documentation will be placed on the server by the user during the
# deployment of the documentation. The generated sitemap is called sitemap.xml
# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL
# is specified no sitemap is generated. For information about the sitemap
# protocol see https://www.sitemaps.org
# This tag requires that the tag GENERATE_HTML is set to YES.
SITEMAP_URL =
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
# (.qch) of the generated HTML documentation.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_QHP = NO
# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
# the file name of the resulting .qch file. The path specified is relative to
# the HTML output folder.
# This tag requires that the tag GENERATE_QHP is set to YES.
QCH_FILE =
# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
# Project output. For more information please see Qt Help Project / Namespace
# (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_NAMESPACE = org.doxygen.Project
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
# Help Project output. For more information please see Qt Help Project / Virtual
# Folders (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders).
# The default value is: doc.
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_VIRTUAL_FOLDER = doc
# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
# filter to add. For more information please see Qt Help Project / Custom
# Filters (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_CUST_FILTER_NAME =
# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see Qt Help Project / Custom
# Filters (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_CUST_FILTER_ATTRS =
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's filter section matches. Qt Help Project / Filter Attributes (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes).
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_SECT_FILTER_ATTRS =
# The QHG_LOCATION tag can be used to specify the location (absolute path
# including file name) of Qt's qhelpgenerator. If non-empty Doxygen will try to
# run qhelpgenerator on the generated .qhp file.
# This tag requires that the tag GENERATE_QHP is set to YES.
QHG_LOCATION =
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
# generated, together with the HTML files, they form an Eclipse help plugin. To
# install this plugin and make it available under the help contents menu in
# Eclipse, the contents of the directory containing the HTML and XML files needs
# to be copied into the plugins directory of eclipse. The name of the directory
# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
# After copying Eclipse needs to be restarted before the help appears.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_ECLIPSEHELP = NO
# A unique identifier for the Eclipse help plugin. When installing the plugin
# the directory name containing the HTML and XML files should also have this
# name. Each documentation set should have its own identifier.
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
ECLIPSE_DOC_ID = org.doxygen.Project
# If you want full control over the layout of the generated HTML pages it might
# be necessary to disable the index and replace it with your own. The
# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
# of each HTML page. A value of NO enables the index and the value YES disables
# it. Since the tabs in the index contain the same information as the navigation
# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
DISABLE_INDEX = NO
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information. If the tag
# value is set to YES, a side panel will be generated containing a tree-like
# index structure (just like the one that is generated for HTML Help). For this
# to work a browser that supports JavaScript, DHTML, CSS and frames is required
# (i.e. any modern browser). Windows users are probably better off using the
# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
# further fine tune the look of the index (see "Fine-tuning the output"). As an
# example, the default style sheet generated by Doxygen has an example that
# shows how to put an image at the root of the tree instead of the PROJECT_NAME.
# Since the tree basically has the same information as the tab index, you could
# consider setting DISABLE_INDEX to YES when enabling this option.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_TREEVIEW = YES
# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the
# FULL_SIDEBAR option determines if the side bar is limited to only the treeview
# area (value NO) or if it should extend to the full height of the window (value
# YES). Setting this to YES gives a layout similar to
# https://docs.readthedocs.io with more room for contents, but less room for the
# project logo, title, and description. If either GENERATE_TREEVIEW or
# DISABLE_INDEX is set to NO, this option has no effect.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
FULL_SIDEBAR = NO
# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
# Doxygen will group on one line in the generated HTML documentation.
#
# Note that a value of 0 will completely suppress the enum values from appearing
# in the overview section.
# Minimum value: 0, maximum value: 20, default value: 4.
# This tag requires that the tag GENERATE_HTML is set to YES.
ENUM_VALUES_PER_LINE = 4
# When the SHOW_ENUM_VALUES tag is set doxygen will show the specified
# enumeration values besides the enumeration mnemonics.
# The default value is: NO.
SHOW_ENUM_VALUES = NO
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
# to set the initial width (in pixels) of the frame in which the tree is shown.
# Minimum value: 0, maximum value: 1500, default value: 250.
# This tag requires that the tag GENERATE_HTML is set to YES.
TREEVIEW_WIDTH = 250
# If the EXT_LINKS_IN_WINDOW option is set to YES, Doxygen will open links to
# external symbols imported via tag files in a separate window.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
EXT_LINKS_IN_WINDOW = NO
# If the OBFUSCATE_EMAILS tag is set to YES, Doxygen will obfuscate email
# addresses.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
OBFUSCATE_EMAILS = YES
# If the HTML_FORMULA_FORMAT option is set to svg, Doxygen will use the pdf2svg
# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see
# https://inkscape.org) to generate formulas as SVG images instead of PNGs for
# the HTML output. These images will generally look nicer at scaled resolutions.
# Possible values are: png (the default) and svg (looks nicer but requires the
# pdf2svg or inkscape tool).
# The default value is: png.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_FORMULA_FORMAT = png
# Use this tag to change the font size of LaTeX formulas included as images in
# the HTML documentation. When you change the font size after a successful
# Doxygen run you need to manually remove any form_*.png images from the HTML
# output directory to force them to be regenerated.
# Minimum value: 8, maximum value: 50, default value: 10.
# This tag requires that the tag GENERATE_HTML is set to YES.
FORMULA_FONTSIZE = 10
# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands
# to create new LaTeX commands to be used in formulas as building blocks. See
# the section "Including formulas" for details.
FORMULA_MACROFILE =
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
# https://www.mathjax.org) which uses client side JavaScript for the rendering
# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
# installed or if you want to formulas look prettier in the HTML output. When
# enabled you may also need to install MathJax separately and configure the path
# to it using the MATHJAX_RELPATH option.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
USE_MATHJAX = YES
# With MATHJAX_VERSION it is possible to specify the MathJax version to be used.
# Note that the different versions of MathJax have different requirements with
# regards to the different settings, so it is possible that also other MathJax
# settings have to be changed when switching between the different MathJax
# versions.
# Possible values are: MathJax_2 and MathJax_3.
# The default value is: MathJax_2.
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_VERSION = MathJax_2
# When MathJax is enabled you can set the default output format to be used for
# the MathJax output. For more details about the output format see MathJax
# version 2 (see:
# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3
# (see:
# http://docs.mathjax.org/en/latest/web/components/output.html).
# Possible values are: HTML-CSS (which is slower, but has the best
# compatibility. This is the name for Mathjax version 2, for MathJax version 3
# this will be translated into chtml), NativeMML (i.e. MathML. Only supported
# for MathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This
# is the name for Mathjax version 3, for MathJax version 2 this will be
# translated into HTML-CSS) and SVG.
# The default value is: HTML-CSS.
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_FORMAT = HTML-CSS
# When MathJax is enabled you need to specify the location relative to the HTML
# output directory using the MATHJAX_RELPATH option. The destination directory
# should contain the MathJax.js script. For instance, if the mathjax directory
# is located at the same level as the HTML output directory, then
# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
# Content Delivery Network so you can quickly see the result without installing
# MathJax. However, it is strongly recommended to install a local copy of
# MathJax from https://www.mathjax.org before deployment. The default value is:
# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2
# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
# extension names that should be enabled during MathJax rendering. For example
# for MathJax version 2 (see
# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions):
# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
# For example for MathJax version 3 (see
# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html):
# MATHJAX_EXTENSIONS = ams
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_EXTENSIONS =
# The MATHJAX_CODEFILE tag can be used to specify a file with JavaScript pieces
# of code that will be used on startup of the MathJax code. See the MathJax site
# (see:
# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an
# example see the documentation.
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_CODEFILE =
# When the SEARCHENGINE tag is enabled Doxygen will generate a search box for
# the HTML output. The underlying search engine uses JavaScript and DHTML and
# should work on any modern browser. Note that when using HTML help
# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
# there is already a search function so this one should typically be disabled.
# For large projects the JavaScript based search engine can be slow, then
# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
# search using the keyboard; to jump to the search box use + S
# (what the is depends on the OS and browser, but it is typically
# , /, or both). Inside the search box use the to jump into the search results window, the results can be navigated
# using the . Press to select an item or to cancel
# the search. The filter options can be selected when the cursor is inside the
# search box by pressing +. Also here use the
# to select a filter and or to activate or cancel the filter
# option.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
SEARCHENGINE = YES
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a web server instead of a web client using JavaScript. There
# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
# setting. When disabled, Doxygen will generate a PHP script for searching and
# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
# and searching needs to be provided by external tools. See the section
# "External Indexing and Searching" for details.
# The default value is: NO.
# This tag requires that the tag SEARCHENGINE is set to YES.
SERVER_BASED_SEARCH = NO
# When EXTERNAL_SEARCH tag is enabled Doxygen will no longer generate the PHP
# script for searching. Instead the search results are written to an XML file
# which needs to be processed by an external indexer. Doxygen will invoke an
# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
# search results.
#
# Doxygen ships with an example indexer (doxyindexer) and search engine
# (doxysearch.cgi) which are based on the open source search engine library
# Xapian (see:
# https://xapian.org/).
#
# See the section "External Indexing and Searching" for details.
# The default value is: NO.
# This tag requires that the tag SEARCHENGINE is set to YES.
EXTERNAL_SEARCH = NO
# The SEARCHENGINE_URL should point to a search engine hosted by a web server
# which will return the search results when EXTERNAL_SEARCH is enabled.
#
# Doxygen ships with an example indexer (doxyindexer) and search engine
# (doxysearch.cgi) which are based on the open source search engine library
# Xapian (see:
# https://xapian.org/). See the section "External Indexing and Searching" for
# details.
# This tag requires that the tag SEARCHENGINE is set to YES.
SEARCHENGINE_URL =
# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
# search data is written to a file for indexing by an external tool. With the
# SEARCHDATA_FILE tag the name of this file can be specified.
# The default file is: searchdata.xml.
# This tag requires that the tag SEARCHENGINE is set to YES.
SEARCHDATA_FILE = searchdata.xml
# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
# projects and redirect the results back to the right project.
# This tag requires that the tag SEARCHENGINE is set to YES.
EXTERNAL_SEARCH_ID =
# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through Doxygen
# projects other than the one defined by this configuration file, but that are
# all added to the same external search index. Each project needs to have a
# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
# to a relative location where the documentation can be found. The format is:
# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
# This tag requires that the tag SEARCHENGINE is set to YES.
EXTRA_SEARCH_MAPPINGS =
#---------------------------------------------------------------------------
# Configuration options related to the LaTeX output
#---------------------------------------------------------------------------
# If the GENERATE_LATEX tag is set to YES, Doxygen will generate LaTeX output.
# The default value is: YES.
GENERATE_LATEX = NO
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: latex.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_OUTPUT = latex
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
# invoked.
#
# Note that when not enabling USE_PDFLATEX the default is latex when enabling
# USE_PDFLATEX the default is pdflatex and when in the later case latex is
# chosen this is overwritten by pdflatex. For specific output languages the
# default can have been set differently, this depends on the implementation of
# the output language.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_CMD_NAME = latex
# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
# index for LaTeX.
# Note: This tag is used in the Makefile / make.bat.
# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file
# (.tex).
# The default file is: makeindex.
# This tag requires that the tag GENERATE_LATEX is set to YES.
MAKEINDEX_CMD_NAME = makeindex
# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to
# generate index for LaTeX. In case there is no backslash (\) as first character
# it will be automatically added in the LaTeX code.
# Note: This tag is used in the generated output file (.tex).
# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat.
# The default value is: makeindex.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_MAKEINDEX_CMD = makeindex
# If the COMPACT_LATEX tag is set to YES, Doxygen generates more compact LaTeX
# documents. This may be useful for small projects and may help to save some
# trees in general.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
COMPACT_LATEX = NO
# The PAPER_TYPE tag can be used to set the paper type that is used by the
# printer.
# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
# 14 inches) and executive (7.25 x 10.5 inches).
# The default value is: a4.
# This tag requires that the tag GENERATE_LATEX is set to YES.
PAPER_TYPE = a4
# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
# that should be included in the LaTeX output. The package can be specified just
# by its name or with the correct syntax as to be used with the LaTeX
# \usepackage command. To get the times font for instance you can specify :
# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
# To use the option intlimits with the amsmath package you can specify:
# EXTRA_PACKAGES=[intlimits]{amsmath}
# If left blank no extra packages will be included.
# This tag requires that the tag GENERATE_LATEX is set to YES.
EXTRA_PACKAGES =
# The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for
# the generated LaTeX document. The header should contain everything until the
# first chapter. If it is left blank Doxygen will generate a standard header. It
# is highly recommended to start with a default header using
# doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty
# and then modify the file new_header.tex. See also section "Doxygen usage" for
# information on how to generate the default header that Doxygen normally uses.
#
# Note: Only use a user-defined header if you know what you are doing!
# Note: The header is subject to change so you typically have to regenerate the
# default header when upgrading to a newer version of Doxygen. The following
# commands have a special meaning inside the header (and footer): For a
# description of the possible markers and block names see the documentation.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_HEADER =
# The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for
# the generated LaTeX document. The footer should contain everything after the
# last chapter. If it is left blank Doxygen will generate a standard footer. See
# LATEX_HEADER for more information on how to generate a default footer and what
# special commands can be used inside the footer. See also section "Doxygen
# usage" for information on how to generate the default footer that Doxygen
# normally uses. Note: Only use a user-defined footer if you know what you are
# doing!
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_FOOTER =
# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
# LaTeX style sheets that are included after the standard style sheets created
# by Doxygen. Using this option one can overrule certain style aspects. Doxygen
# will copy the style sheet files to the output directory.
# Note: The order of the extra style sheet files is of importance (e.g. the last
# style sheet in the list overrules the setting of the previous ones in the
# list).
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_EXTRA_STYLESHEET =
# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the LATEX_OUTPUT output
# directory. Note that the files will be copied as-is; there are no commands or
# markers available.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_EXTRA_FILES =
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
# contain links (just like the HTML output) instead of page references. This
# makes the output suitable for online browsing using a PDF viewer.
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.
PDF_HYPERLINKS = YES
# If the USE_PDFLATEX tag is set to YES, Doxygen will use the engine as
# specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX
# files. Set this option to YES, to get a higher quality PDF documentation.
#
# See also section LATEX_CMD_NAME for selecting the engine.
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.
USE_PDFLATEX = YES
# The LATEX_BATCHMODE tag signals the behavior of LaTeX in case of an error.
# Possible values are: NO same as ERROR_STOP, YES same as BATCH, BATCH In batch
# mode nothing is printed on the terminal, errors are scrolled as if is
# hit at every error; missing files that TeX tries to input or request from
# keyboard input (\read on a not open input stream) cause the job to abort,
# NON_STOP In nonstop mode the diagnostic message will appear on the terminal,
# but there is no possibility of user interaction just like in batch mode,
# SCROLL In scroll mode, TeX will stop only for missing files to input or if
# keyboard input is necessary and ERROR_STOP In errorstop mode, TeX will stop at
# each error, asking for user intervention.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_BATCHMODE = NO
# If the LATEX_HIDE_INDICES tag is set to YES then Doxygen will not include the
# index chapters (such as File Index, Compound Index, etc.) in the output.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_HIDE_INDICES = NO
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
# bibliography, e.g. plainnat, or ieeetr. See
# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
# The default value is: plain.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_BIB_STYLE = plain
# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
# path from which the emoji images will be read. If a relative path is entered,
# it will be relative to the LATEX_OUTPUT directory. If left blank the
# LATEX_OUTPUT directory will be used.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_EMOJI_DIRECTORY =
#---------------------------------------------------------------------------
# Configuration options related to the RTF output
#---------------------------------------------------------------------------
# If the GENERATE_RTF tag is set to YES, Doxygen will generate RTF output. The
# RTF output is optimized for Word 97 and may not look too pretty with other RTF
# readers/editors.
# The default value is: NO.
GENERATE_RTF = NO
# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: rtf.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_OUTPUT = rtf
# If the COMPACT_RTF tag is set to YES, Doxygen generates more compact RTF
# documents. This may be useful for small projects and may help to save some
# trees in general.
# The default value is: NO.
# This tag requires that the tag GENERATE_RTF is set to YES.
COMPACT_RTF = NO
# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
# contain hyperlink fields. The RTF file will contain links (just like the HTML
# output) instead of page references. This makes the output suitable for online
# browsing using Word or some other Word compatible readers that support those
# fields.
#
# Note: WordPad (write) and others do not support links.
# The default value is: NO.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_HYPERLINKS = NO
# Load stylesheet definitions from file. Syntax is similar to Doxygen's
# configuration file, i.e. a series of assignments. You only have to provide
# replacements, missing definitions are set to their default value.
#
# See also section "Doxygen usage" for information on how to generate the
# default style sheet that Doxygen normally uses.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_STYLESHEET_FILE =
# Set optional variables used in the generation of an RTF document. Syntax is
# similar to Doxygen's configuration file. A template extensions file can be
# generated using doxygen -e rtf extensionFile.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_EXTENSIONS_FILE =
# The RTF_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the RTF_OUTPUT output directory.
# Note that the files will be copied as-is; there are no commands or markers
# available.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_EXTRA_FILES =
#---------------------------------------------------------------------------
# Configuration options related to the man page output
#---------------------------------------------------------------------------
# If the GENERATE_MAN tag is set to YES, Doxygen will generate man pages for
# classes and files.
# The default value is: NO.
GENERATE_MAN = NO
# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it. A directory man3 will be created inside the directory specified by
# MAN_OUTPUT.
# The default directory is: man.
# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_OUTPUT = man
# The MAN_EXTENSION tag determines the extension that is added to the generated
# man pages. In case the manual section does not start with a number, the number
# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
# optional.
# The default value is: .3.
# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_EXTENSION = .3
# The MAN_SUBDIR tag determines the name of the directory created within
# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
# MAN_EXTENSION with the initial . removed.
# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_SUBDIR =
# If the MAN_LINKS tag is set to YES and Doxygen generates man output, then it
# will generate one additional man file for each entity documented in the real
# man page(s). These additional files only source the real man page, but without
# them the man command would be unable to find the correct page.
# The default value is: NO.
# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_LINKS = NO
#---------------------------------------------------------------------------
# Configuration options related to the XML output
#---------------------------------------------------------------------------
# If the GENERATE_XML tag is set to YES, Doxygen will generate an XML file that
# captures the structure of the code including all documentation.
# The default value is: NO.
GENERATE_XML = NO
# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: xml.
# This tag requires that the tag GENERATE_XML is set to YES.
XML_OUTPUT = xml
# If the XML_PROGRAMLISTING tag is set to YES, Doxygen will dump the program
# listings (including syntax highlighting and cross-referencing information) to
# the XML output. Note that enabling this will significantly increase the size
# of the XML output.
# The default value is: YES.
# This tag requires that the tag GENERATE_XML is set to YES.
XML_PROGRAMLISTING = YES
# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, Doxygen will include
# namespace members in file scope as well, matching the HTML output.
# The default value is: NO.
# This tag requires that the tag GENERATE_XML is set to YES.
XML_NS_MEMB_FILE_SCOPE = NO
#---------------------------------------------------------------------------
# Configuration options related to the DOCBOOK output
#---------------------------------------------------------------------------
# If the GENERATE_DOCBOOK tag is set to YES, Doxygen will generate Docbook files
# that can be used to generate PDF.
# The default value is: NO.
GENERATE_DOCBOOK = NO
# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
# front of it.
# The default directory is: docbook.
# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
DOCBOOK_OUTPUT = docbook
#---------------------------------------------------------------------------
# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
# If the GENERATE_AUTOGEN_DEF tag is set to YES, Doxygen will generate an
# AutoGen Definitions (see https://autogen.sourceforge.net/) file that captures
# the structure of the code including all documentation. Note that this feature
# is still experimental and incomplete at the moment.
# The default value is: NO.
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# Configuration options related to Sqlite3 output
#---------------------------------------------------------------------------
# If the GENERATE_SQLITE3 tag is set to YES Doxygen will generate a Sqlite3
# database with symbols found by Doxygen stored in tables.
# The default value is: NO.
GENERATE_SQLITE3 = NO
# The SQLITE3_OUTPUT tag is used to specify where the Sqlite3 database will be
# put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put
# in front of it.
# The default directory is: sqlite3.
# This tag requires that the tag GENERATE_SQLITE3 is set to YES.
SQLITE3_OUTPUT = sqlite3
# The SQLITE3_RECREATE_DB tag is set to YES, the existing doxygen_sqlite3.db
# database file will be recreated with each Doxygen run. If set to NO, Doxygen
# will warn if a database file is already found and not modify it.
# The default value is: YES.
# This tag requires that the tag GENERATE_SQLITE3 is set to YES.
SQLITE3_RECREATE_DB = YES
#---------------------------------------------------------------------------
# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
# If the GENERATE_PERLMOD tag is set to YES, Doxygen will generate a Perl module
# file that captures the structure of the code including all documentation.
#
# Note that this feature is still experimental and incomplete at the moment.
# The default value is: NO.
GENERATE_PERLMOD = NO
# If the PERLMOD_LATEX tag is set to YES, Doxygen will generate the necessary
# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
# output from the Perl module output.
# The default value is: NO.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.
PERLMOD_LATEX = NO
# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
# formatted so it can be parsed by a human reader. This is useful if you want to
# understand what is going on. On the other hand, if this tag is set to NO, the
# size of the Perl module output will be much smaller and Perl will parse it
# just the same.
# The default value is: YES.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.
PERLMOD_PRETTY = YES
# The names of the make variables in the generated doxyrules.make file are
# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
# so different doxyrules.make files included by the same Makefile don't
# overwrite each other's variables.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
# If the ENABLE_PREPROCESSING tag is set to YES, Doxygen will evaluate all
# C-preprocessor directives found in the sources and include files.
# The default value is: YES.
ENABLE_PREPROCESSING = YES
# If the MACRO_EXPANSION tag is set to YES, Doxygen will expand all macro names
# in the source code. If set to NO, only conditional compilation will be
# performed. Macro expansion can be done in a controlled way by setting
# EXPAND_ONLY_PREDEF to YES.
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
MACRO_EXPANSION = NO
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
# the macro expansion is limited to the macros specified with the PREDEFINED and
# EXPAND_AS_DEFINED tags.
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
EXPAND_ONLY_PREDEF = NO
# If the SEARCH_INCLUDES tag is set to YES, the include files in the
# INCLUDE_PATH will be searched if a #include is found.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
SEARCH_INCLUDES = YES
# The INCLUDE_PATH tag can be used to specify one or more directories that
# contain include files that are not input files but should be processed by the
# preprocessor. Note that the INCLUDE_PATH is not recursive, so the setting of
# RECURSIVE has no effect here.
# This tag requires that the tag SEARCH_INCLUDES is set to YES.
INCLUDE_PATH =
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
# directories. If left blank, the patterns specified with FILE_PATTERNS will be
# used.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
INCLUDE_FILE_PATTERNS =
# The PREDEFINED tag can be used to specify one or more macro names that are
# defined before the preprocessor is started (similar to the -D option of e.g.
# gcc). The argument of the tag is a list of macros of the form: name or
# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
# is assumed. To prevent a macro definition from being undefined via #undef or
# recursively expanded use the := operator instead of the = operator.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
PREDEFINED =
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
# macro definition that is found in the sources will be used. Use the PREDEFINED
# tag if you want to use a different macro definition that overrules the
# definition found in the source code.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
EXPAND_AS_DEFINED =
# If the SKIP_FUNCTION_MACROS tag is set to YES then Doxygen's preprocessor will
# remove all references to function-like macros that are alone on a line, have
# an all uppercase name, and do not end with a semicolon. Such function macros
# are typically used for boiler-plate code, and will confuse the parser if not
# removed.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration options related to external references
#---------------------------------------------------------------------------
# The TAGFILES tag can be used to specify one or more tag files. For each tag
# file the location of the external documentation should be added. The format of
# a tag file without this location is as follows:
# TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows:
# TAGFILES = file1=loc1 "file2 = loc2" ...
# where loc1 and loc2 can be relative or absolute paths or URLs. See the
# section "Linking to external documentation" for more information about the use
# of tag files.
# Note: Each tag file must have a unique name (where the name does NOT include
# the path). If a tag file is not located in the directory in which Doxygen is
# run, you must also specify the path to the tagfile here.
TAGFILES =
# When a file name is specified after GENERATE_TAGFILE, Doxygen will create a
# tag file that is based on the input files it reads. See section "Linking to
# external documentation" for more information about the usage of tag files.
GENERATE_TAGFILE =
# If the ALLEXTERNALS tag is set to YES, all external classes and namespaces
# will be listed in the class and namespace index. If set to NO, only the
# inherited external classes will be listed.
# The default value is: NO.
ALLEXTERNALS = NO
# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
# in the topic index. If set to NO, only the current project's groups will be
# listed.
# The default value is: YES.
EXTERNAL_GROUPS = YES
# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
# the related pages index. If set to NO, only the current project's pages will
# be listed.
# The default value is: YES.
EXTERNAL_PAGES = YES
#---------------------------------------------------------------------------
# Configuration options related to diagram generator tools
#---------------------------------------------------------------------------
# If set to YES the inheritance and collaboration graphs will hide inheritance
# and usage relations if the target is undocumented or is not a class.
# The default value is: YES.
HIDE_UNDOC_RELATIONS = YES
# If you set the HAVE_DOT tag to YES then Doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz (see:
# https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
# Bell Labs. The other options in this section have no effect if this option is
# set to NO
# The default value is: NO.
HAVE_DOT = NO
# The DOT_NUM_THREADS specifies the number of dot invocations Doxygen is allowed
# to run in parallel. When set to 0 Doxygen will base this on the number of
# processors available in the system. You can set it explicitly to a value
# larger than 0 to get control over the balance between CPU load and processing
# speed.
# Minimum value: 0, maximum value: 32, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_NUM_THREADS = 0
# DOT_COMMON_ATTR is common attributes for nodes, edges and labels of
# subgraphs. When you want a differently looking font in the dot files that
# Doxygen generates you can specify fontname, fontcolor and fontsize attributes.
# For details please see Node,
# Edge and Graph Attributes specification You need to make sure dot is able
# to find the font, which can be done by putting it in a standard location or by
# setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
# directory containing the font. Default graphviz fontsize is 14.
# The default value is: fontname=Helvetica,fontsize=10.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10"
# DOT_EDGE_ATTR is concatenated with DOT_COMMON_ATTR. For elegant style you can
# add 'arrowhead=open, arrowtail=open, arrowsize=0.5'. Complete documentation about
# arrows shapes.
# The default value is: labelfontname=Helvetica,labelfontsize=10.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10"
# DOT_NODE_ATTR is concatenated with DOT_COMMON_ATTR. For view without boxes
# around nodes set 'shape=plain' or 'shape=plaintext' Shapes specification
# The default value is: shape=box,height=0.2,width=0.4.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4"
# You can set the path where dot can find font specified with fontname in
# DOT_COMMON_ATTR and others dot attributes.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_FONTPATH =
# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then Doxygen will
# generate a graph for each documented class showing the direct and indirect
# inheritance relations. In case the CLASS_GRAPH tag is set to YES or GRAPH and
# HAVE_DOT is enabled as well, then dot will be used to draw the graph. In case
# the CLASS_GRAPH tag is set to YES and HAVE_DOT is disabled or if the
# CLASS_GRAPH tag is set to BUILTIN, then the built-in generator will be used.
# If the CLASS_GRAPH tag is set to TEXT the direct and indirect inheritance
# relations will be shown as texts / links. Explicit enabling an inheritance
# graph or choosing a different representation for an inheritance graph of a
# specific class, can be accomplished by means of the command \inheritancegraph.
# Disabling an inheritance graph can be accomplished by means of the command
# \hideinheritancegraph.
# Possible values are: NO, YES, TEXT, GRAPH and BUILTIN.
# The default value is: YES.
CLASS_GRAPH = YES
# If the COLLABORATION_GRAPH tag is set to YES then Doxygen will generate a
# graph for each documented class showing the direct and indirect implementation
# dependencies (inheritance, containment, and class references variables) of the
# class with other documented classes. Explicit enabling a collaboration graph,
# when COLLABORATION_GRAPH is set to NO, can be accomplished by means of the
# command \collaborationgraph. Disabling a collaboration graph can be
# accomplished by means of the command \hidecollaborationgraph.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
COLLABORATION_GRAPH = YES
# If the GROUP_GRAPHS tag is set to YES then Doxygen will generate a graph for
# groups, showing the direct groups dependencies. Explicit enabling a group
# dependency graph, when GROUP_GRAPHS is set to NO, can be accomplished by means
# of the command \groupgraph. Disabling a directory graph can be accomplished by
# means of the command \hidegroupgraph. See also the chapter Grouping in the
# manual.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
GROUP_GRAPHS = YES
# If the UML_LOOK tag is set to YES, Doxygen will generate inheritance and
# collaboration diagrams in a style similar to the OMG's Unified Modeling
# Language.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
UML_LOOK = NO
# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
# class node. If there are many fields or methods and many nodes the graph may
# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
# number of items for each type to make the size more manageable. Set this to 0
# for no limit. Note that the threshold may be exceeded by 50% before the limit
# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
# but if the number exceeds 15, the total amount of fields shown is limited to
# 10.
# Minimum value: 0, maximum value: 100, default value: 10.
# This tag requires that the tag UML_LOOK is set to YES.
UML_LIMIT_NUM_FIELDS = 10
# If the DOT_UML_DETAILS tag is set to NO, Doxygen will show attributes and
# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS
# tag is set to YES, Doxygen will add type and arguments for attributes and
# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, Doxygen
# will not generate fields with class member information in the UML graphs. The
# class diagrams will look similar to the default class diagrams but using UML
# notation for the relationships.
# Possible values are: NO, YES and NONE.
# The default value is: NO.
# This tag requires that the tag UML_LOOK is set to YES.
DOT_UML_DETAILS = NO
# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters
# to display on a single line. If the actual line length exceeds this threshold
# significantly it will be wrapped across multiple lines. Some heuristics are
# applied to avoid ugly line breaks.
# Minimum value: 0, maximum value: 1000, default value: 17.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_WRAP_THRESHOLD = 17
# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
# collaboration graphs will show the relations between templates and their
# instances.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
TEMPLATE_RELATIONS = NO
# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
# YES then Doxygen will generate a graph for each documented file showing the
# direct and indirect include dependencies of the file with other documented
# files. Explicit enabling an include graph, when INCLUDE_GRAPH is is set to NO,
# can be accomplished by means of the command \includegraph. Disabling an
# include graph can be accomplished by means of the command \hideincludegraph.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
INCLUDE_GRAPH = YES
# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
# set to YES then Doxygen will generate a graph for each documented file showing
# the direct and indirect include dependencies of the file with other documented
# files. Explicit enabling an included by graph, when INCLUDED_BY_GRAPH is set
# to NO, can be accomplished by means of the command \includedbygraph. Disabling
# an included by graph can be accomplished by means of the command
# \hideincludedbygraph.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
INCLUDED_BY_GRAPH = YES
# If the CALL_GRAPH tag is set to YES then Doxygen will generate a call
# dependency graph for every global function or class method.
#
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable call graphs for selected
# functions only using the \callgraph command. Disabling a call graph can be
# accomplished by means of the command \hidecallgraph.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
CALL_GRAPH = NO
# If the CALLER_GRAPH tag is set to YES then Doxygen will generate a caller
# dependency graph for every global function or class method.
#
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable caller graphs for selected
# functions only using the \callergraph command. Disabling a caller graph can be
# accomplished by means of the command \hidecallergraph.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
CALLER_GRAPH = NO
# If the GRAPHICAL_HIERARCHY tag is set to YES then Doxygen will graphical
# hierarchy of all classes instead of a textual one.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
GRAPHICAL_HIERARCHY = YES
# If the DIRECTORY_GRAPH tag is set to YES then Doxygen will show the
# dependencies a directory has on other directories in a graphical way. The
# dependency relations are determined by the #include relations between the
# files in the directories. Explicit enabling a directory graph, when
# DIRECTORY_GRAPH is set to NO, can be accomplished by means of the command
# \directorygraph. Disabling a directory graph can be accomplished by means of
# the command \hidedirectorygraph.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
DIRECTORY_GRAPH = YES
# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels
# of child directories generated in directory dependency graphs by dot.
# Minimum value: 1, maximum value: 25, default value: 1.
# This tag requires that the tag DIRECTORY_GRAPH is set to YES.
DIR_GRAPH_MAX_DEPTH = 1
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. For an explanation of the image formats see the section
# output formats in the documentation of the dot tool (Graphviz (see:
# https://www.graphviz.org/)).
# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
# to make the SVG files visible in IE 9+ (other browsers do not have this
# requirement).
# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,
# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
# png:gdiplus:gdiplus.
# The default value is: png.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_IMAGE_FORMAT = png
# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
#
# Note that this requires a modern browser other than Internet Explorer. Tested
# and working are Firefox, Chrome, Safari, and Opera.
# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
# the SVG files visible. Older versions of IE do not have SVG support.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
INTERACTIVE_SVG = NO
# The DOT_PATH tag can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_PATH =
# The DOTFILE_DIRS tag can be used to specify one or more directories that
# contain dot files that are included in the documentation (see the \dotfile
# command).
# This tag requires that the tag HAVE_DOT is set to YES.
DOTFILE_DIRS =
# You can include diagrams made with dia in Doxygen documentation. Doxygen will
# then run dia to produce the diagram and insert it in the documentation. The
# DIA_PATH tag allows you to specify the directory where the dia binary resides.
# If left empty dia is assumed to be found in the default search path.
DIA_PATH =
# The DIAFILE_DIRS tag can be used to specify one or more directories that
# contain dia files that are included in the documentation (see the \diafile
# command).
DIAFILE_DIRS =
# When using PlantUML, the PLANTUML_JAR_PATH tag should be used to specify the
# path where java can find the plantuml.jar file or to the filename of jar file
# to be used. If left blank, it is assumed PlantUML is not used or called during
# a preprocessing step. Doxygen will generate a warning when it encounters a
# \startuml command in this case and will not generate output for the diagram.
PLANTUML_JAR_PATH =
# When using PlantUML, the PLANTUML_CFG_FILE tag can be used to specify a
# configuration file for PlantUML.
PLANTUML_CFG_FILE =
# When using PlantUML, the specified paths are searched for files specified by
# the !include statement in a PlantUML block.
PLANTUML_INCLUDE_PATH =
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
# that will be shown in the graph. If the number of nodes in a graph becomes
# larger than this value, Doxygen will truncate the graph, which is visualized
# by representing a node as a red box. Note that if the number of direct
# children of the root node in a graph is already larger than
# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
# Minimum value: 0, maximum value: 10000, default value: 50.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_GRAPH_MAX_NODES = 50
# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
# generated by dot. A depth value of 3 means that only nodes reachable from the
# root by following a path via at most 3 edges will be shown. Nodes that lay
# further from the root node will be omitted. Note that setting this option to 1
# or 2 may greatly reduce the computation time needed for large code bases. Also
# note that the size of a graph can be further restricted by
# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
# Minimum value: 0, maximum value: 1000, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.
MAX_DOT_GRAPH_DEPTH = 0
# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
# makes dot run faster, but since only newer versions of dot (>1.8.10) support
# this, this feature is disabled by default.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_MULTI_TARGETS = NO
# If the GENERATE_LEGEND tag is set to YES Doxygen will generate a legend page
# explaining the meaning of the various boxes and arrows in the dot generated
# graphs.
# Note: This tag requires that UML_LOOK isn't set, i.e. the Doxygen internal
# graphical representation for inheritance and collaboration diagrams is used.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
GENERATE_LEGEND = YES
# If the DOT_CLEANUP tag is set to YES, Doxygen will remove the intermediate
# files that are used to generate the various graphs.
#
# Note: This setting is not only used for dot files but also for msc temporary
# files.
# The default value is: YES.
DOT_CLEANUP = YES
# You can define message sequence charts within Doxygen comments using the \msc
# command. If the MSCGEN_TOOL tag is left empty (the default), then Doxygen will
# use a built-in version of mscgen tool to produce the charts. Alternatively,
# the MSCGEN_TOOL tag can also specify the name an external tool. For instance,
# specifying prog as the value, Doxygen will call the tool as prog -T
# -o . The external tool should support
# output file formats "png", "eps", "svg", and "ismap".
MSCGEN_TOOL =
# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the \mscfile
# command).
MSCFILE_DIRS =
================================================
FILE: Documentation/Doxygen/Doxyfile_doc_only
================================================
# Doxyfile 1.12.0
# This file describes the settings to be used by the documentation system
# Doxygen (www.doxygen.org) for a project.
#
# All text after a double hash (##) is considered a comment and is placed in
# front of the TAG it is preceding.
#
# All text after a single hash (#) is considered a comment and will be ignored.
# The format is:
# TAG = value [value, ...]
# For lists, items can also be appended using:
# TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (\" \").
#
# Note:
#
# Use Doxygen to compare the used configuration file with the template
# configuration file:
# doxygen -x [configFile]
# Use Doxygen to compare the used configuration file with the template
# configuration file without replacing the environment variables or CMake type
# replacement variables:
# doxygen -x_noenv [configFile]
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
# This tag specifies the encoding used for all characters in the configuration
# file that follow. The default is UTF-8 which is also the encoding used for all
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
# iconv built into libc) for the transcoding. See
# https://www.gnu.org/software/libiconv/ for the list of possible encodings.
# The default value is: UTF-8.
DOXYFILE_ENCODING = UTF-8
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
# double-quotes, unless you are using Doxywizard) that should identify the
# project for which the documentation is generated. This name is used in the
# title of most generated pages and in a few other places.
# The default value is: My Project.
PROJECT_NAME = FEBio
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 4.0
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.
PROJECT_BRIEF = "Finite Elements for Biomechanics"
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
# the logo to the output directory.
PROJECT_LOGO = C:/Users/Steve/source/repos/FEBio/Documentation/febio_logo.png
# With the PROJECT_ICON tag one can specify an icon that is included in the tabs
# when the HTML document is shown. Doxygen will copy the logo to the output
# directory.
PROJECT_ICON =
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
# entered, it will be relative to the location where Doxygen was started. If
# left blank the current directory will be used.
OUTPUT_DIRECTORY = doc_only
# If the CREATE_SUBDIRS tag is set to YES then Doxygen will create up to 4096
# sub-directories (in 2 levels) under the output directory of each output format
# and will distribute the generated files over these directories. Enabling this
# option can be useful when feeding Doxygen a huge amount of source files, where
# putting all generated files in the same directory would otherwise causes
# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to
# control the number of sub-directories.
# The default value is: NO.
CREATE_SUBDIRS = NO
# Controls the number of sub-directories that will be created when
# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every
# level increment doubles the number of directories, resulting in 4096
# directories at level 8 which is the default and also the maximum value. The
# sub-directories are organized in 2 levels, the first level always has a fixed
# number of 16 directories.
# Minimum value: 0, maximum value: 8, default value: 8.
# This tag requires that the tag CREATE_SUBDIRS is set to YES.
CREATE_SUBDIRS_LEVEL = 8
# If the ALLOW_UNICODE_NAMES tag is set to YES, Doxygen will allow non-ASCII
# characters to appear in the names of generated files. If set to NO, non-ASCII
# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
# U+3044.
# The default value is: NO.
ALLOW_UNICODE_NAMES = NO
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
# documentation generated by Doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian,
# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English
# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek,
# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with
# English messages), Korean, Korean-en (Korean with English messages), Latvian,
# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese,
# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish,
# Swedish, Turkish, Ukrainian and Vietnamese.
# The default value is: English.
OUTPUT_LANGUAGE = English
# If the BRIEF_MEMBER_DESC tag is set to YES, Doxygen will include brief member
# descriptions after the members that are listed in the file and class
# documentation (similar to Javadoc). Set to NO to disable this.
# The default value is: YES.
BRIEF_MEMBER_DESC = YES
# If the REPEAT_BRIEF tag is set to YES, Doxygen will prepend the brief
# description of a member or function before the detailed description
#
# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
# brief descriptions will be completely suppressed.
# The default value is: YES.
REPEAT_BRIEF = YES
# This tag implements a quasi-intelligent brief description abbreviator that is
# used to form the text in various listings. Each string in this list, if found
# as the leading text of the brief description, will be stripped from the text
# and the result, after processing the whole list, is used as the annotated
# text. Otherwise, the brief description is used as-is. If left blank, the
# following values are used ($name is automatically replaced with the name of
# the entity):The $name class, The $name widget, The $name file, is, provides,
# specifies, contains, represents, a, an and the.
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
"The $name file" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# Doxygen will generate a detailed section even if there is only a brief
# description.
# The default value is: NO.
ALWAYS_DETAILED_SEC = NO
# If the INLINE_INHERITED_MEMB tag is set to YES, Doxygen will show all
# inherited members of a class in the documentation of that class as if those
# members were ordinary class members. Constructors, destructors and assignment
# operators of the base classes will not be shown.
# The default value is: NO.
INLINE_INHERITED_MEMB = NO
# If the FULL_PATH_NAMES tag is set to YES, Doxygen will prepend the full path
# before files name in the file list and in the header files. If set to NO the
# shortest path that makes the file name unique will be used
# The default value is: YES.
FULL_PATH_NAMES = YES
# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
# Stripping is only done if one of the specified strings matches the left-hand
# part of the path. The tag can be used to show relative paths in the file list.
# If left blank the directory from which Doxygen is run is used as the path to
# strip.
#
# Note that you can specify absolute paths here, but also relative paths, which
# will be relative from the directory where Doxygen is started.
# This tag requires that the tag FULL_PATH_NAMES is set to YES.
STRIP_FROM_PATH =
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
# path mentioned in the documentation of a class, which tells the reader which
# header file to include in order to use a class. If left blank only the name of
# the header file containing the class definition is used. Otherwise one should
# specify the list of include paths that are normally passed to the compiler
# using the -I flag.
STRIP_FROM_INC_PATH =
# If the SHORT_NAMES tag is set to YES, Doxygen will generate much shorter (but
# less readable) file names. This can be useful is your file systems doesn't
# support long names like on DOS, Mac, or CD-ROM.
# The default value is: NO.
SHORT_NAMES = NO
# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen will interpret the
# first line (until the first dot) of a Javadoc-style comment as the brief
# description. If set to NO, the Javadoc-style will behave just like regular Qt-
# style comments (thus requiring an explicit @brief command for a brief
# description.)
# The default value is: NO.
JAVADOC_AUTOBRIEF = NO
# If the JAVADOC_BANNER tag is set to YES then Doxygen will interpret a line
# such as
# /***************
# as being the beginning of a Javadoc-style comment "banner". If set to NO, the
# Javadoc-style will behave just like regular comments and it will not be
# interpreted by Doxygen.
# The default value is: NO.
JAVADOC_BANNER = NO
# If the QT_AUTOBRIEF tag is set to YES then Doxygen will interpret the first
# line (until the first dot) of a Qt-style comment as the brief description. If
# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
# requiring an explicit \brief command for a brief description.)
# The default value is: NO.
QT_AUTOBRIEF = NO
# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen treat a
# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
# a brief description. This used to be the default behavior. The new default is
# to treat a multi-line C++ comment block as a detailed description. Set this
# tag to YES if you prefer the old behavior instead.
#
# Note that setting this tag to YES also means that rational rose comments are
# not recognized any more.
# The default value is: NO.
MULTILINE_CPP_IS_BRIEF = NO
# By default Python docstrings are displayed as preformatted text and Doxygen's
# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the
# Doxygen's special commands can be used and the contents of the docstring
# documentation blocks is shown as Doxygen documentation.
# The default value is: YES.
PYTHON_DOCSTRING = YES
# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
# documentation from any documented member that it re-implements.
# The default value is: YES.
INHERIT_DOCS = YES
# If the SEPARATE_MEMBER_PAGES tag is set to YES then Doxygen will produce a new
# page for each member. If set to NO, the documentation of a member will be part
# of the file/class/namespace that contains it.
# The default value is: NO.
SEPARATE_MEMBER_PAGES = NO
# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
# uses this value to replace tabs by spaces in code fragments.
# Minimum value: 1, maximum value: 16, default value: 4.
TAB_SIZE = 4
# This tag can be used to specify a number of aliases that act as commands in
# the documentation. An alias has the form:
# name=value
# For example adding
# "sideeffect=@par Side Effects:^^"
# will allow you to put the command \sideeffect (or @sideeffect) in the
# documentation, which will result in a user-defined paragraph with heading
# "Side Effects:". Note that you cannot put \n's in the value part of an alias
# to insert newlines (in the resulting output). You can put ^^ in the value part
# of an alias to insert a newline as if a physical newline was in the original
# file. When you need a literal { or } or , in the value part of an alias you
# have to escape them by means of a backslash (\), this can lead to conflicts
# with the commands \{ and \} for these it is advised to use the version @{ and
# @} or use a double escape (\\{ and \\})
ALIASES =
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
# only. Doxygen will then generate output that is more tailored for C. For
# instance, some of the names that are used will be different. The list of all
# members will be omitted, etc.
# The default value is: NO.
OPTIMIZE_OUTPUT_FOR_C = NO
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
# Python sources only. Doxygen will then generate output that is more tailored
# for that language. For instance, namespaces will be presented as packages,
# qualified scopes will look different, etc.
# The default value is: NO.
OPTIMIZE_OUTPUT_JAVA = NO
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
# sources. Doxygen will then generate output that is tailored for Fortran.
# The default value is: NO.
OPTIMIZE_FOR_FORTRAN = NO
# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
# sources. Doxygen will then generate output that is tailored for VHDL.
# The default value is: NO.
OPTIMIZE_OUTPUT_VHDL = NO
# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice
# sources only. Doxygen will then generate output that is more tailored for that
# language. For instance, namespaces will be presented as modules, types will be
# separated into more groups, etc.
# The default value is: NO.
OPTIMIZE_OUTPUT_SLICE = NO
# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given
# extension. Doxygen has a built-in mapping, but you can override or extend it
# using this tag. The format is ext=language, where ext is a file extension, and
# language is one of the parsers supported by Doxygen: IDL, Java, JavaScript,
# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice,
# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser
# tries to guess whether the code is fixed or free formatted code, this is the
# default for Fortran type files). For instance to make Doxygen treat .inc files
# as Fortran files (default is PHP), and .f files as C (default is Fortran),
# use: inc=Fortran f=C.
#
# Note: For files without extension you can use no_extension as a placeholder.
#
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
# the files are not read by Doxygen. When specifying no_extension you should add
# * to the FILE_PATTERNS.
#
# Note see also the list of default file extension mappings.
EXTENSION_MAPPING =
# If the MARKDOWN_SUPPORT tag is enabled then Doxygen pre-processes all comments
# according to the Markdown format, which allows for more readable
# documentation. See https://daringfireball.net/projects/markdown/ for details.
# The output of markdown processing is further processed by Doxygen, so you can
# mix Doxygen, HTML, and XML commands with Markdown formatting. Disable only in
# case of backward compatibilities issues.
# The default value is: YES.
MARKDOWN_SUPPORT = YES
# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
# to that level are automatically included in the table of contents, even if
# they do not have an id attribute.
# Note: This feature currently applies only to Markdown headings.
# Minimum value: 0, maximum value: 99, default value: 6.
# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
TOC_INCLUDE_HEADINGS = 0
# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to
# generate identifiers for the Markdown headings. Note: Every identifier is
# unique.
# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a
# sequence number starting at 0 and GITHUB use the lower case version of title
# with any whitespace replaced by '-' and punctuation characters removed.
# The default value is: DOXYGEN.
# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
MARKDOWN_ID_STYLE = DOXYGEN
# When enabled Doxygen tries to link words that correspond to documented
# classes, or namespaces to their corresponding documentation. Such a link can
# be prevented in individual cases by putting a % sign in front of the word or
# globally by setting AUTOLINK_SUPPORT to NO.
# The default value is: YES.
AUTOLINK_SUPPORT = YES
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should set this
# tag to YES in order to let Doxygen match functions declarations and
# definitions whose arguments contain STL classes (e.g. func(std::string);
# versus func(std::string) {}). This also makes the inheritance and
# collaboration diagrams that involve STL classes more complete and accurate.
# The default value is: NO.
BUILTIN_STL_SUPPORT = NO
# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
# The default value is: NO.
CPP_CLI_SUPPORT = NO
# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
# https://www.riverbankcomputing.com/software) sources only. Doxygen will parse
# them like normal C++ but will assume all classes use public instead of private
# inheritance when no explicit protection keyword is present.
# The default value is: NO.
SIP_SUPPORT = NO
# For Microsoft's IDL there are propget and propput attributes to indicate
# getter and setter methods for a property. Setting this option to YES will make
# Doxygen to replace the get and set methods by a property in the documentation.
# This will only work if the methods are indeed getting or setting a simple
# type. If this is not the case, or you want to show the methods anyway, you
# should set this option to NO.
# The default value is: YES.
IDL_PROPERTY_SUPPORT = YES
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
# tag is set to YES then Doxygen will reuse the documentation of the first
# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
# The default value is: NO.
DISTRIBUTE_GROUP_DOC = NO
# If one adds a struct or class to a group and this option is enabled, then also
# any nested class or struct is added to the same group. By default this option
# is disabled and one has to add nested compounds explicitly via \ingroup.
# The default value is: NO.
GROUP_NESTED_COMPOUNDS = NO
# Set the SUBGROUPING tag to YES to allow class member groups of the same type
# (for instance a group of public functions) to be put as a subgroup of that
# type (e.g. under the Public Functions section). Set it to NO to prevent
# subgrouping. Alternatively, this can be done per class using the
# \nosubgrouping command.
# The default value is: YES.
SUBGROUPING = YES
# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
# are shown inside the group in which they are included (e.g. using \ingroup)
# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
# and RTF).
#
# Note that this feature does not work in combination with
# SEPARATE_MEMBER_PAGES.
# The default value is: NO.
INLINE_GROUPED_CLASSES = NO
# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
# with only public data fields or simple typedef fields will be shown inline in
# the documentation of the scope in which they are defined (i.e. file,
# namespace, or group documentation), provided this scope is documented. If set
# to NO, structs, classes, and unions are shown on a separate page (for HTML and
# Man pages) or section (for LaTeX and RTF).
# The default value is: NO.
INLINE_SIMPLE_STRUCTS = NO
# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
# enum is documented as struct, union, or enum with the name of the typedef. So
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
# with name TypeT. When disabled the typedef will appear as a member of a file,
# namespace, or class. And the struct will be named TypeS. This can typically be
# useful for C code in case the coding convention dictates that all compound
# types are typedef'ed and only the typedef is referenced, never the tag name.
# The default value is: NO.
TYPEDEF_HIDES_STRUCT = NO
# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
# cache is used to resolve symbols given their name and scope. Since this can be
# an expensive process and often the same symbol appears multiple times in the
# code, Doxygen keeps a cache of pre-resolved symbols. If the cache is too small
# Doxygen will become slower. If the cache is too large, memory is wasted. The
# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
# symbols. At the end of a run Doxygen will report the cache usage and suggest
# the optimal cache size from a speed point of view.
# Minimum value: 0, maximum value: 9, default value: 0.
LOOKUP_CACHE_SIZE = 0
# The NUM_PROC_THREADS specifies the number of threads Doxygen is allowed to use
# during processing. When set to 0 Doxygen will based this on the number of
# cores available in the system. You can set it explicitly to a value larger
# than 0 to get more control over the balance between CPU load and processing
# speed. At this moment only the input processing can be done using multiple
# threads. Since this is still an experimental feature the default is set to 1,
# which effectively disables parallel processing. Please report any issues you
# encounter. Generating dot graphs in parallel is controlled by the
# DOT_NUM_THREADS setting.
# Minimum value: 0, maximum value: 32, default value: 1.
NUM_PROC_THREADS = 1
# If the TIMESTAMP tag is set different from NO then each generated page will
# contain the date or date and time when the page was generated. Setting this to
# NO can help when comparing the output of multiple runs.
# Possible values are: YES, NO, DATETIME and DATE.
# The default value is: NO.
TIMESTAMP = NO
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
# If the EXTRACT_ALL tag is set to YES, Doxygen will assume all entities in
# documentation are documented, even if no documentation was available. Private
# class members and static file members will be hidden unless the
# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
# Note: This will also disable the warnings about undocumented members that are
# normally produced when WARNINGS is set to YES.
# The default value is: NO.
EXTRACT_ALL = YES
# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
# be included in the documentation.
# The default value is: NO.
EXTRACT_PRIVATE = NO
# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual
# methods of a class will be included in the documentation.
# The default value is: NO.
EXTRACT_PRIV_VIRTUAL = NO
# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
# scope will be included in the documentation.
# The default value is: NO.
EXTRACT_PACKAGE = NO
# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
# included in the documentation.
# The default value is: NO.
EXTRACT_STATIC = NO
# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
# locally in source files will be included in the documentation. If set to NO,
# only classes defined in header files are included. Does not have any effect
# for Java sources.
# The default value is: YES.
EXTRACT_LOCAL_CLASSES = YES
# This flag is only useful for Objective-C code. If set to YES, local methods,
# which are defined in the implementation section but not in the interface are
# included in the documentation. If set to NO, only methods in the interface are
# included.
# The default value is: NO.
EXTRACT_LOCAL_METHODS = NO
# If this flag is set to YES, the members of anonymous namespaces will be
# extracted and appear in the documentation as a namespace called
# 'anonymous_namespace{file}', where file will be replaced with the base name of
# the file that contains the anonymous namespace. By default anonymous namespace
# are hidden.
# The default value is: NO.
EXTRACT_ANON_NSPACES = NO
# If this flag is set to YES, the name of an unnamed parameter in a declaration
# will be determined by the corresponding definition. By default unnamed
# parameters remain unnamed in the output.
# The default value is: YES.
RESOLVE_UNNAMED_PARAMS = YES
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
# undocumented members inside documented classes or files. If set to NO these
# members will be included in the various overviews, but no documentation
# section is generated. This option has no effect if EXTRACT_ALL is enabled.
# The default value is: NO.
HIDE_UNDOC_MEMBERS = NO
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy. If set
# to NO, these classes will be included in the various overviews. This option
# will also hide undocumented C++ concepts if enabled. This option has no effect
# if EXTRACT_ALL is enabled.
# The default value is: NO.
HIDE_UNDOC_CLASSES = NO
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all friend
# declarations. If set to NO, these declarations will be included in the
# documentation.
# The default value is: NO.
HIDE_FRIEND_COMPOUNDS = NO
# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
# documentation blocks found inside the body of a function. If set to NO, these
# blocks will be appended to the function's detailed documentation block.
# The default value is: NO.
HIDE_IN_BODY_DOCS = NO
# The INTERNAL_DOCS tag determines if documentation that is typed after a
# \internal command is included. If the tag is set to NO then the documentation
# will be excluded. Set it to YES to include the internal documentation.
# The default value is: NO.
INTERNAL_DOCS = NO
# With the correct setting of option CASE_SENSE_NAMES Doxygen will better be
# able to match the capabilities of the underlying filesystem. In case the
# filesystem is case sensitive (i.e. it supports files in the same directory
# whose names only differ in casing), the option must be set to YES to properly
# deal with such files in case they appear in the input. For filesystems that
# are not case sensitive the option should be set to NO to properly deal with
# output files written for symbols that only differ in casing, such as for two
# classes, one named CLASS and the other named Class, and to also support
# references to files without having to specify the exact matching casing. On
# Windows (including Cygwin) and macOS, users should typically set this option
# to NO, whereas on Linux or other Unix flavors it should typically be set to
# YES.
# Possible values are: SYSTEM, NO and YES.
# The default value is: SYSTEM.
CASE_SENSE_NAMES = NO
# If the HIDE_SCOPE_NAMES tag is set to NO then Doxygen will show members with
# their full class and namespace scopes in the documentation. If set to YES, the
# scope will be hidden.
# The default value is: NO.
HIDE_SCOPE_NAMES = NO
# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then Doxygen will
# append additional text to a page's title, such as Class Reference. If set to
# YES the compound reference will be hidden.
# The default value is: NO.
HIDE_COMPOUND_REFERENCE= NO
# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class
# will show which file needs to be included to use the class.
# The default value is: YES.
SHOW_HEADERFILE = YES
# If the SHOW_INCLUDE_FILES tag is set to YES then Doxygen will put a list of
# the files that are included by a file in the documentation of that file.
# The default value is: YES.
SHOW_INCLUDE_FILES = YES
# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
# grouped member an include statement to the documentation, telling the reader
# which file to include in order to use the member.
# The default value is: NO.
SHOW_GROUPED_MEMB_INC = NO
# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen will list include
# files with double quotes in the documentation rather than with sharp brackets.
# The default value is: NO.
FORCE_LOCAL_INCLUDES = NO
# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
# documentation for inline members.
# The default value is: YES.
INLINE_INFO = YES
# If the SORT_MEMBER_DOCS tag is set to YES then Doxygen will sort the
# (detailed) documentation of file and class members alphabetically by member
# name. If set to NO, the members will appear in declaration order.
# The default value is: YES.
SORT_MEMBER_DOCS = YES
# If the SORT_BRIEF_DOCS tag is set to YES then Doxygen will sort the brief
# descriptions of file, namespace and class members alphabetically by member
# name. If set to NO, the members will appear in declaration order. Note that
# this will also influence the order of the classes in the class list.
# The default value is: NO.
SORT_BRIEF_DOCS = NO
# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then Doxygen will sort the
# (brief and detailed) documentation of class members so that constructors and
# destructors are listed first. If set to NO the constructors will appear in the
# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
# member documentation.
# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
# detailed member documentation.
# The default value is: NO.
SORT_MEMBERS_CTORS_1ST = NO
# If the SORT_GROUP_NAMES tag is set to YES then Doxygen will sort the hierarchy
# of group names into alphabetical order. If set to NO the group names will
# appear in their defined order.
# The default value is: NO.
SORT_GROUP_NAMES = NO
# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
# fully-qualified names, including namespaces. If set to NO, the class list will
# be sorted only by class name, not including the namespace part.
# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
# Note: This option applies only to the class list, not to the alphabetical
# list.
# The default value is: NO.
SORT_BY_SCOPE_NAME = NO
# If the STRICT_PROTO_MATCHING option is enabled and Doxygen fails to do proper
# type resolution of all parameters of a function it will reject a match between
# the prototype and the implementation of a member function even if there is
# only one candidate or it is obvious which candidate to choose by doing a
# simple string match. By disabling STRICT_PROTO_MATCHING Doxygen will still
# accept a match between prototype and implementation in such cases.
# The default value is: NO.
STRICT_PROTO_MATCHING = NO
# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
# list. This list is created by putting \todo commands in the documentation.
# The default value is: YES.
GENERATE_TODOLIST = YES
# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
# list. This list is created by putting \test commands in the documentation.
# The default value is: YES.
GENERATE_TESTLIST = YES
# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
# list. This list is created by putting \bug commands in the documentation.
# The default value is: YES.
GENERATE_BUGLIST = YES
# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
# the deprecated list. This list is created by putting \deprecated commands in
# the documentation.
# The default value is: YES.
GENERATE_DEPRECATEDLIST= YES
# The ENABLED_SECTIONS tag can be used to enable conditional documentation
# sections, marked by \if ... \endif and \cond
# ... \endcond blocks.
ENABLED_SECTIONS =
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
# initial value of a variable or macro / define can have for it to appear in the
# documentation. If the initializer consists of more lines than specified here
# it will be hidden. Use a value of 0 to hide initializers completely. The
# appearance of the value of individual variables and macros / defines can be
# controlled using \showinitializer or \hideinitializer command in the
# documentation regardless of this setting.
# Minimum value: 0, maximum value: 10000, default value: 30.
MAX_INITIALIZER_LINES = 30
# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
# the bottom of the documentation of classes and structs. If set to YES, the
# list will mention the files that were used to generate the documentation.
# The default value is: YES.
SHOW_USED_FILES = YES
# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
# will remove the Files entry from the Quick Index and from the Folder Tree View
# (if specified).
# The default value is: YES.
SHOW_FILES = YES
# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
# page. This will remove the Namespaces entry from the Quick Index and from the
# Folder Tree View (if specified).
# The default value is: YES.
SHOW_NAMESPACES = YES
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# Doxygen should invoke to get the current version for each file (typically from
# the version control system). Doxygen will invoke the program by executing (via
# popen()) the command command input-file, where command is the value of the
# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
# by Doxygen. Whatever the program writes to standard output is used as the file
# version. For an example see the documentation.
FILE_VERSION_FILTER =
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by Doxygen. The layout file controls the global structure of the generated
# output files in an output format independent way. To create the layout file
# that represents Doxygen's defaults, run Doxygen with the -l option. You can
# optionally specify a file name after the option, if omitted DoxygenLayout.xml
# will be used as the name of the layout file. See also section "Changing the
# layout of pages" for information.
#
# Note that if you run Doxygen from a directory containing a file called
# DoxygenLayout.xml, Doxygen will parse it automatically even if the LAYOUT_FILE
# tag is left empty.
LAYOUT_FILE =
# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
# the reference definitions. This must be a list of .bib files. The .bib
# extension is automatically appended if omitted. This requires the bibtex tool
# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.
# For LaTeX the style of the bibliography can be controlled using
# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
# search path. See also \cite for info how to create references.
CITE_BIB_FILES =
# The EXTERNAL_TOOL_PATH tag can be used to extend the search path (PATH
# environment variable) so that external tools such as latex and gs can be
# found.
# Note: Directories specified with EXTERNAL_TOOL_PATH are added in front of the
# path already specified by the PATH variable, and are added in the order
# specified.
# Note: This option is particularly useful for macOS version 14 (Sonoma) and
# higher, when running Doxygen from Doxywizard, because in this case any user-
# defined changes to the PATH are ignored. A typical example on macOS is to set
# EXTERNAL_TOOL_PATH = /Library/TeX/texbin /usr/local/bin
# together with the standard path, the full search path used by doxygen when
# launching external tools will then become
# PATH=/Library/TeX/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
EXTERNAL_TOOL_PATH =
#---------------------------------------------------------------------------
# Configuration options related to warning and progress messages
#---------------------------------------------------------------------------
# The QUIET tag can be used to turn on/off the messages that are generated to
# standard output by Doxygen. If QUIET is set to YES this implies that the
# messages are off.
# The default value is: NO.
QUIET = NO
# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated to standard error (stderr) by Doxygen. If WARNINGS is set to YES
# this implies that the warnings are on.
#
# Tip: Turn warnings on while writing the documentation.
# The default value is: YES.
WARNINGS = YES
# If the WARN_IF_UNDOCUMENTED tag is set to YES then Doxygen will generate
# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
# will automatically be disabled.
# The default value is: YES.
WARN_IF_UNDOCUMENTED = YES
# If the WARN_IF_DOC_ERROR tag is set to YES, Doxygen will generate warnings for
# potential errors in the documentation, such as documenting some parameters in
# a documented function twice, or documenting parameters that don't exist or
# using markup commands wrongly.
# The default value is: YES.
WARN_IF_DOC_ERROR = YES
# If WARN_IF_INCOMPLETE_DOC is set to YES, Doxygen will warn about incomplete
# function parameter documentation. If set to NO, Doxygen will accept that some
# parameters have no documentation without warning.
# The default value is: YES.
WARN_IF_INCOMPLETE_DOC = YES
# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
# are documented, but have no documentation for their parameters or return
# value. If set to NO, Doxygen will only warn about wrong parameter
# documentation, but not about the absence of documentation. If EXTRACT_ALL is
# set to YES then this flag will automatically be disabled. See also
# WARN_IF_INCOMPLETE_DOC
# The default value is: NO.
WARN_NO_PARAMDOC = NO
# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, Doxygen will warn about
# undocumented enumeration values. If set to NO, Doxygen will accept
# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag
# will automatically be disabled.
# The default value is: NO.
WARN_IF_UNDOC_ENUM_VAL = NO
# If the WARN_AS_ERROR tag is set to YES then Doxygen will immediately stop when
# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS
# then Doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but
# at the end of the Doxygen process Doxygen will return with a non-zero status.
# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then Doxygen behaves
# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined Doxygen will not
# write the warning messages in between other messages but write them at the end
# of a run, in case a WARN_LOGFILE is defined the warning messages will be
# besides being in the defined file also be shown at the end of a run, unless
# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case
# the behavior will remain as with the setting FAIL_ON_WARNINGS.
# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT.
# The default value is: NO.
WARN_AS_ERROR = NO
# The WARN_FORMAT tag determines the format of the warning messages that Doxygen
# can produce. The string should contain the $file, $line, and $text tags, which
# will be replaced by the file and line number from which the warning originated
# and the warning text. Optionally the format may contain $version, which will
# be replaced by the version of the file (if it could be obtained via
# FILE_VERSION_FILTER)
# See also: WARN_LINE_FORMAT
# The default value is: $file:$line: $text.
WARN_FORMAT = "$file:$line: $text"
# In the $text part of the WARN_FORMAT command it is possible that a reference
# to a more specific place is given. To make it easier to jump to this place
# (outside of Doxygen) the user can define a custom "cut" / "paste" string.
# Example:
# WARN_LINE_FORMAT = "'vi $file +$line'"
# See also: WARN_FORMAT
# The default value is: at line $line of file $file.
WARN_LINE_FORMAT = "at line $line of file $file"
# The WARN_LOGFILE tag can be used to specify a file to which warning and error
# messages should be written. If left blank the output is written to standard
# error (stderr). In case the file specified cannot be opened for writing the
# warning and error messages are written to standard error. When as file - is
# specified the warning and error messages are written to standard output
# (stdout).
WARN_LOGFILE =
#---------------------------------------------------------------------------
# Configuration options related to the input files
#---------------------------------------------------------------------------
# The INPUT tag is used to specify the files and/or directories that contain
# documented source files. You may enter file names like myfile.cpp or
# directories like /usr/src/myproject. Separate the files or directories with
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
INPUT = .
# This tag can be used to specify the character encoding of the source files
# that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses
# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
# documentation (see:
# https://www.gnu.org/software/libiconv/) for the list of possible encodings.
# See also: INPUT_FILE_ENCODING
# The default value is: UTF-8.
INPUT_ENCODING = UTF-8
# This tag can be used to specify the character encoding of the source files
# that Doxygen parses The INPUT_FILE_ENCODING tag can be used to specify
# character encoding on a per file pattern basis. Doxygen will compare the file
# name with each pattern and apply the encoding instead of the default
# INPUT_ENCODING) if there is a match. The character encodings are a list of the
# form: pattern=encoding (like *.php=ISO-8859-1).
# See also: INPUT_ENCODING for further information on supported encodings.
INPUT_FILE_ENCODING =
# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
# *.h) to filter out the source-files in the directories.
#
# Note that for custom extensions or not directly supported extensions you also
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
# read by Doxygen.
#
# Note the list of default checked file patterns might differ from the list of
# default file extension mappings.
#
# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm,
# *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl,
# *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d,
# *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to
# be provided as Doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice.
FILE_PATTERNS = *.c \
*.cc \
*.cxx \
*.cpp \
*.c++ \
*.java \
*.ii \
*.ixx \
*.ipp \
*.i++ \
*.inl \
*.idl \
*.ddl \
*.odl \
*.h \
*.hh \
*.hxx \
*.hpp \
*.h++ \
*.cs \
*.d \
*.php \
*.php4 \
*.php5 \
*.phtml \
*.inc \
*.m \
*.markdown \
*.md \
*.mm \
*.dox \
*.py \
*.pyw \
*.f90 \
*.f95 \
*.f03 \
*.f08 \
*.f \
*.for \
*.tcl \
*.vhd \
*.vhdl \
*.ucf \
*.qsf
# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
# The default value is: NO.
RECURSIVE = NO
# The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
#
# Note that relative paths are relative to the directory from which Doxygen is
# run.
EXCLUDE =
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
# from the input.
# The default value is: NO.
EXCLUDE_SYMLINKS = NO
# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
# certain files from those directories.
#
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories for example use the pattern */test/*
EXCLUDE_PATTERNS =
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
# output. The symbol name can be a fully qualified name, a word, or if the
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# ANamespace::AClass, ANamespace::*Test
EXCLUDE_SYMBOLS =
# The EXAMPLE_PATH tag can be used to specify one or more files or directories
# that contain example code fragments that are included (see the \include
# command).
EXAMPLE_PATH =
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
# *.h) to filter out the source-files in the directories. If left blank all
# files are included.
EXAMPLE_PATTERNS = *
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude commands
# irrespective of the value of the RECURSIVE tag.
# The default value is: NO.
EXAMPLE_RECURSIVE = NO
# The IMAGE_PATH tag can be used to specify one or more files or directories
# that contain images that are to be included in the documentation (see the
# \image command).
IMAGE_PATH = images
# The INPUT_FILTER tag can be used to specify a program that Doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
# by executing (via popen()) the command:
#
#
#
# where is the value of the INPUT_FILTER tag, and is the
# name of an input file. Doxygen will then use the output that the filter
# program writes to standard output. If FILTER_PATTERNS is specified, this tag
# will be ignored.
#
# Note that the filter must not add or remove lines; it is applied before the
# code is scanned, but not when the output code is generated. If lines are added
# or removed, the anchors will not be placed correctly.
#
# Note that Doxygen will use the data processed and written to standard output
# for further processing, therefore nothing else, like debug statements or used
# commands (so in case of a Windows batch file always use @echo OFF), should be
# written to standard output.
#
# Note that for custom extensions or not directly supported extensions you also
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
# properly processed by Doxygen.
INPUT_FILTER =
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis. Doxygen will compare the file name with each pattern and apply the
# filter if there is a match. The filters are a list of the form: pattern=filter
# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
# patterns match the file name, INPUT_FILTER is applied.
#
# Note that for custom extensions or not directly supported extensions you also
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
# properly processed by Doxygen.
FILTER_PATTERNS =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER) will also be used to filter the input files that are used for
# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
# The default value is: NO.
FILTER_SOURCE_FILES = NO
# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
# it is also possible to disable source filtering for a specific pattern using
# *.ext= (so without naming a filter).
# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
FILTER_SOURCE_PATTERNS =
# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
# is part of the input, its contents will be placed on the main page
# (index.html). This can be useful if you have a project on for instance GitHub
# and want to reuse the introduction page also for the Doxygen output.
USE_MDFILE_AS_MAINPAGE =
# The Fortran standard specifies that for fixed formatted Fortran code all
# characters from position 72 are to be considered as comment. A common
# extension is to allow longer lines before the automatic comment starts. The
# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can
# be processed before the automatic comment starts.
# Minimum value: 7, maximum value: 10000, default value: 72.
FORTRAN_COMMENT_AFTER = 72
#---------------------------------------------------------------------------
# Configuration options related to source browsing
#---------------------------------------------------------------------------
# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
# generated. Documented entities will be cross-referenced with these sources.
#
# Note: To get rid of all source code in the generated output, make sure that
# also VERBATIM_HEADERS is set to NO.
# The default value is: NO.
SOURCE_BROWSER = NO
# Setting the INLINE_SOURCES tag to YES will include the body of functions,
# multi-line macros, enums or list initialized variables directly into the
# documentation.
# The default value is: NO.
INLINE_SOURCES = NO
# Setting the STRIP_CODE_COMMENTS tag to YES will instruct Doxygen to hide any
# special comment blocks from generated source code fragments. Normal C, C++ and
# Fortran comments will always remain visible.
# The default value is: YES.
STRIP_CODE_COMMENTS = YES
# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
# entity all documented functions referencing it will be listed.
# The default value is: NO.
REFERENCED_BY_RELATION = NO
# If the REFERENCES_RELATION tag is set to YES then for each documented function
# all documented entities called/used by that function will be listed.
# The default value is: NO.
REFERENCES_RELATION = NO
# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
# to YES then the hyperlinks from functions in REFERENCES_RELATION and
# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
# link to the documentation.
# The default value is: YES.
REFERENCES_LINK_SOURCE = YES
# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
# source code will show a tooltip with additional information such as prototype,
# brief description and links to the definition and documentation. Since this
# will make the HTML file larger and loading of large files a bit slower, you
# can opt to disable this feature.
# The default value is: YES.
# This tag requires that the tag SOURCE_BROWSER is set to YES.
SOURCE_TOOLTIPS = YES
# If the USE_HTAGS tag is set to YES then the references to source code will
# point to the HTML generated by the htags(1) tool instead of Doxygen built-in
# source browser. The htags tool is part of GNU's global source tagging system
# (see https://www.gnu.org/software/global/global.html). You will need version
# 4.8.6 or higher.
#
# To use it do the following:
# - Install the latest version of global
# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file
# - Make sure the INPUT points to the root of the source tree
# - Run doxygen as normal
#
# Doxygen will invoke htags (and that will in turn invoke gtags), so these
# tools must be available from the command line (i.e. in the search path).
#
# The result: instead of the source browser generated by Doxygen, the links to
# source code will now point to the output of htags.
# The default value is: NO.
# This tag requires that the tag SOURCE_BROWSER is set to YES.
USE_HTAGS = NO
# If the VERBATIM_HEADERS tag is set the YES then Doxygen will generate a
# verbatim copy of the header file for each class for which an include is
# specified. Set to NO to disable this.
# See also: Section \class.
# The default value is: YES.
VERBATIM_HEADERS = YES
# If the CLANG_ASSISTED_PARSING tag is set to YES then Doxygen will use the
# clang parser (see:
# http://clang.llvm.org/) for more accurate parsing at the cost of reduced
# performance. This can be particularly helpful with template rich C++ code for
# which Doxygen's built-in parser lacks the necessary type information.
# Note: The availability of this option depends on whether or not Doxygen was
# generated with the -Duse_libclang=ON option for CMake.
# The default value is: NO.
CLANG_ASSISTED_PARSING = NO
# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS
# tag is set to YES then Doxygen will add the directory of each input to the
# include path.
# The default value is: YES.
# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
CLANG_ADD_INC_PATHS = YES
# If clang assisted parsing is enabled you can provide the compiler with command
# line options that you would normally use when invoking the compiler. Note that
# the include paths will already be set by Doxygen for the files and directories
# specified with INPUT and INCLUDE_PATH.
# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
CLANG_OPTIONS =
# If clang assisted parsing is enabled you can provide the clang parser with the
# path to the directory containing a file called compile_commands.json. This
# file is the compilation database (see:
# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the
# options used when the source files were built. This is equivalent to
# specifying the -p option to a clang tool, such as clang-check. These options
# will then be passed to the parser. Any options specified with CLANG_OPTIONS
# will be added as well.
# Note: The availability of this option depends on whether or not Doxygen was
# generated with the -Duse_libclang=ON option for CMake.
CLANG_DATABASE_PATH =
#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
# compounds will be generated. Enable this if the project contains a lot of
# classes, structs, unions or interfaces.
# The default value is: YES.
ALPHABETICAL_INDEX = YES
# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes)
# that should be ignored while generating the index headers. The IGNORE_PREFIX
# tag works for classes, function and member names. The entity will be placed in
# the alphabetical list under the first letter of the entity name that remains
# after removing the prefix.
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the HTML output
#---------------------------------------------------------------------------
# If the GENERATE_HTML tag is set to YES, Doxygen will generate HTML output
# The default value is: YES.
GENERATE_HTML = YES
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: html.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_OUTPUT = html
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
# generated HTML page (for example: .htm, .php, .asp).
# The default value is: .html.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_FILE_EXTENSION = .html
# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
# each generated HTML page. If the tag is left blank Doxygen will generate a
# standard header.
#
# To get valid HTML the header file that includes any scripts and style sheets
# that Doxygen needs, which is dependent on the configuration options used (e.g.
# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
# default header using
# doxygen -w html new_header.html new_footer.html new_stylesheet.css
# YourConfigFile
# and then modify the file new_header.html. See also section "Doxygen usage"
# for information on how to generate the default header that Doxygen normally
# uses.
# Note: The header is subject to change so you typically have to regenerate the
# default header when upgrading to a newer version of Doxygen. For a description
# of the possible markers and block names see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_HEADER =
# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
# generated HTML page. If the tag is left blank Doxygen will generate a standard
# footer. See HTML_HEADER for more information on how to generate a default
# footer and what special commands can be used inside the footer. See also
# section "Doxygen usage" for information on how to generate the default footer
# that Doxygen normally uses.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_FOOTER =
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
# sheet that is used by each HTML page. It can be used to fine-tune the look of
# the HTML output. If left blank Doxygen will generate a default style sheet.
# See also section "Doxygen usage" for information on how to generate the style
# sheet that Doxygen normally uses.
# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
# it is more robust and this tag (HTML_STYLESHEET) will in the future become
# obsolete.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_STYLESHEET =
# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
# cascading style sheets that are included after the standard style sheets
# created by Doxygen. Using this option one can overrule certain style aspects.
# This is preferred over using HTML_STYLESHEET since it does not replace the
# standard style sheet and is therefore more robust against future updates.
# Doxygen will copy the style sheet files to the output directory.
# Note: The order of the extra style sheet files is of importance (e.g. the last
# style sheet in the list overrules the setting of the previous ones in the
# list).
# Note: Since the styling of scrollbars can currently not be overruled in
# Webkit/Chromium, the styling will be left out of the default doxygen.css if
# one or more extra stylesheets have been specified. So if scrollbar
# customization is desired it has to be added explicitly. For an example see the
# documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_EXTRA_STYLESHEET =
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
# that these files will be copied to the base HTML output directory. Use the
# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
# files will be copied as-is; there are no commands or markers available.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_EXTRA_FILES =
# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output
# should be rendered with a dark or light theme.
# Possible values are: LIGHT always generates light mode output, DARK always
# generates dark mode output, AUTO_LIGHT automatically sets the mode according
# to the user preference, uses light mode if no preference is set (the default),
# AUTO_DARK automatically sets the mode according to the user preference, uses
# dark mode if no preference is set and TOGGLE allows a user to switch between
# light and dark mode via a button.
# The default value is: AUTO_LIGHT.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE = AUTO_LIGHT
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
# will adjust the colors in the style sheet and background images according to
# this color. Hue is specified as an angle on a color-wheel, see
# https://en.wikipedia.org/wiki/Hue for more information. For instance the value
# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
# purple, and 360 is red again.
# Minimum value: 0, maximum value: 359, default value: 220.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE_HUE = 220
# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
# in the HTML output. For a value of 0 the output will use gray-scales only. A
# value of 255 will produce the most vivid colors.
# Minimum value: 0, maximum value: 255, default value: 100.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE_SAT = 100
# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
# luminance component of the colors in the HTML output. Values below 100
# gradually make the output lighter, whereas values above 100 make the output
# darker. The value divided by 100 is the actual gamma applied, so 80 represents
# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
# change the gamma.
# Minimum value: 40, maximum value: 240, default value: 80.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE_GAMMA = 80
# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
# documentation will contain a main index with vertical navigation menus that
# are dynamically created via JavaScript. If disabled, the navigation index will
# consists of multiple levels of tabs that are statically embedded in every HTML
# page. Disable this option to support browsers that do not have JavaScript,
# like the Qt help browser.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_DYNAMIC_MENUS = YES
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
# page has loaded.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_DYNAMIC_SECTIONS = NO
# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be
# dynamically folded and expanded in the generated HTML source code.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_CODE_FOLDING = YES
# If the HTML_COPY_CLIPBOARD tag is set to YES then Doxygen will show an icon in
# the top right corner of code and text fragments that allows the user to copy
# its content to the clipboard. Note this only works if supported by the browser
# and the web page is served via a secure context (see:
# https://www.w3.org/TR/secure-contexts/), i.e. using the https: or file:
# protocol.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COPY_CLIPBOARD = YES
# Doxygen stores a couple of settings persistently in the browser (via e.g.
# cookies). By default these settings apply to all HTML pages generated by
# Doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store
# the settings under a project specific key, such that the user preferences will
# be stored separately.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_PROJECT_COOKIE =
# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
# shown in the various tree structured indices initially; the user can expand
# and collapse entries dynamically later on. Doxygen will expand the tree to
# such a level that at most the specified number of entries are visible (unless
# a fully collapsed tree already exceeds this amount). So setting the number of
# entries 1 will produce a full collapsed tree by default. 0 is a special value
# representing an infinite number of entries and will result in a full expanded
# tree by default.
# Minimum value: 0, maximum value: 9999, default value: 100.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_INDEX_NUM_ENTRIES = 100
# If the GENERATE_DOCSET tag is set to YES, additional index files will be
# generated that can be used as input for Apple's Xcode 3 integrated development
# environment (see:
# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To
# create a documentation set, Doxygen will generate a Makefile in the HTML
# output directory. Running make will produce the docset in that directory and
# running make install will install the docset in
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy
# genXcode/_index.html for more information.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_DOCSET = NO
# This tag determines the name of the docset feed. A documentation feed provides
# an umbrella under which multiple documentation sets from a single provider
# (such as a company or product suite) can be grouped.
# The default value is: Doxygen generated docs.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_FEEDNAME = "Doxygen generated docs"
# This tag determines the URL of the docset feed. A documentation feed provides
# an umbrella under which multiple documentation sets from a single provider
# (such as a company or product suite) can be grouped.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_FEEDURL =
# This tag specifies a string that should uniquely identify the documentation
# set bundle. This should be a reverse domain-name style string, e.g.
# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_BUNDLE_ID = org.doxygen.Project
# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
# the documentation publisher. This should be a reverse domain-name style
# string, e.g. com.mycompany.MyDocSet.documentation.
# The default value is: org.doxygen.Publisher.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
# The default value is: Publisher.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_PUBLISHER_NAME = Publisher
# If the GENERATE_HTMLHELP tag is set to YES then Doxygen generates three
# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
# on Windows. In the beginning of 2021 Microsoft took the original page, with
# a.o. the download links, offline the HTML help workshop was already many years
# in maintenance mode). You can download the HTML help workshop from the web
# archives at Installation executable (see:
# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo
# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe).
#
# The HTML Help Workshop contains a compiler that can convert all HTML output
# generated by Doxygen into a single compiled HTML file (.chm). Compiled HTML
# files are now used as the Windows 98 help format, and will replace the old
# Windows help format (.hlp) on all Windows platforms in the future. Compressed
# HTML files also contain an index, a table of contents, and you can search for
# words in the documentation. The HTML workshop also contains a viewer for
# compressed HTML files.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_HTMLHELP = NO
# The CHM_FILE tag can be used to specify the file name of the resulting .chm
# file. You can add a path in front of the file if the result should not be
# written to the html output directory.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
CHM_FILE =
# The HHC_LOCATION tag can be used to specify the location (absolute path
# including file name) of the HTML help compiler (hhc.exe). If non-empty,
# Doxygen will try to run the HTML help compiler on the generated index.hhp.
# The file has to be specified with full path.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
HHC_LOCATION =
# The GENERATE_CHI flag controls if a separate .chi index file is generated
# (YES) or that it should be included in the main .chm file (NO).
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
GENERATE_CHI = NO
# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
# and project file content.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
CHM_INDEX_ENCODING =
# The BINARY_TOC flag controls whether a binary table of contents is generated
# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
# enables the Previous and Next buttons.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
BINARY_TOC = NO
# The TOC_EXPAND flag can be set to YES to add extra items for group members to
# the table of contents of the HTML help documentation and to the tree view.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
TOC_EXPAND = NO
# The SITEMAP_URL tag is used to specify the full URL of the place where the
# generated documentation will be placed on the server by the user during the
# deployment of the documentation. The generated sitemap is called sitemap.xml
# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL
# is specified no sitemap is generated. For information about the sitemap
# protocol see https://www.sitemaps.org
# This tag requires that the tag GENERATE_HTML is set to YES.
SITEMAP_URL =
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
# (.qch) of the generated HTML documentation.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_QHP = NO
# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
# the file name of the resulting .qch file. The path specified is relative to
# the HTML output folder.
# This tag requires that the tag GENERATE_QHP is set to YES.
QCH_FILE =
# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
# Project output. For more information please see Qt Help Project / Namespace
# (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_NAMESPACE = org.doxygen.Project
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
# Help Project output. For more information please see Qt Help Project / Virtual
# Folders (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders).
# The default value is: doc.
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_VIRTUAL_FOLDER = doc
# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
# filter to add. For more information please see Qt Help Project / Custom
# Filters (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_CUST_FILTER_NAME =
# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see Qt Help Project / Custom
# Filters (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_CUST_FILTER_ATTRS =
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's filter section matches. Qt Help Project / Filter Attributes (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes).
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_SECT_FILTER_ATTRS =
# The QHG_LOCATION tag can be used to specify the location (absolute path
# including file name) of Qt's qhelpgenerator. If non-empty Doxygen will try to
# run qhelpgenerator on the generated .qhp file.
# This tag requires that the tag GENERATE_QHP is set to YES.
QHG_LOCATION =
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
# generated, together with the HTML files, they form an Eclipse help plugin. To
# install this plugin and make it available under the help contents menu in
# Eclipse, the contents of the directory containing the HTML and XML files needs
# to be copied into the plugins directory of eclipse. The name of the directory
# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
# After copying Eclipse needs to be restarted before the help appears.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_ECLIPSEHELP = NO
# A unique identifier for the Eclipse help plugin. When installing the plugin
# the directory name containing the HTML and XML files should also have this
# name. Each documentation set should have its own identifier.
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
ECLIPSE_DOC_ID = org.doxygen.Project
# If you want full control over the layout of the generated HTML pages it might
# be necessary to disable the index and replace it with your own. The
# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
# of each HTML page. A value of NO enables the index and the value YES disables
# it. Since the tabs in the index contain the same information as the navigation
# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
DISABLE_INDEX = NO
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information. If the tag
# value is set to YES, a side panel will be generated containing a tree-like
# index structure (just like the one that is generated for HTML Help). For this
# to work a browser that supports JavaScript, DHTML, CSS and frames is required
# (i.e. any modern browser). Windows users are probably better off using the
# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
# further fine tune the look of the index (see "Fine-tuning the output"). As an
# example, the default style sheet generated by Doxygen has an example that
# shows how to put an image at the root of the tree instead of the PROJECT_NAME.
# Since the tree basically has the same information as the tab index, you could
# consider setting DISABLE_INDEX to YES when enabling this option.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_TREEVIEW = YES
# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the
# FULL_SIDEBAR option determines if the side bar is limited to only the treeview
# area (value NO) or if it should extend to the full height of the window (value
# YES). Setting this to YES gives a layout similar to
# https://docs.readthedocs.io with more room for contents, but less room for the
# project logo, title, and description. If either GENERATE_TREEVIEW or
# DISABLE_INDEX is set to NO, this option has no effect.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
FULL_SIDEBAR = NO
# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
# Doxygen will group on one line in the generated HTML documentation.
#
# Note that a value of 0 will completely suppress the enum values from appearing
# in the overview section.
# Minimum value: 0, maximum value: 20, default value: 4.
# This tag requires that the tag GENERATE_HTML is set to YES.
ENUM_VALUES_PER_LINE = 4
# When the SHOW_ENUM_VALUES tag is set doxygen will show the specified
# enumeration values besides the enumeration mnemonics.
# The default value is: NO.
SHOW_ENUM_VALUES = NO
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
# to set the initial width (in pixels) of the frame in which the tree is shown.
# Minimum value: 0, maximum value: 1500, default value: 250.
# This tag requires that the tag GENERATE_HTML is set to YES.
TREEVIEW_WIDTH = 250
# If the EXT_LINKS_IN_WINDOW option is set to YES, Doxygen will open links to
# external symbols imported via tag files in a separate window.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
EXT_LINKS_IN_WINDOW = NO
# If the OBFUSCATE_EMAILS tag is set to YES, Doxygen will obfuscate email
# addresses.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
OBFUSCATE_EMAILS = YES
# If the HTML_FORMULA_FORMAT option is set to svg, Doxygen will use the pdf2svg
# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see
# https://inkscape.org) to generate formulas as SVG images instead of PNGs for
# the HTML output. These images will generally look nicer at scaled resolutions.
# Possible values are: png (the default) and svg (looks nicer but requires the
# pdf2svg or inkscape tool).
# The default value is: png.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_FORMULA_FORMAT = png
# Use this tag to change the font size of LaTeX formulas included as images in
# the HTML documentation. When you change the font size after a successful
# Doxygen run you need to manually remove any form_*.png images from the HTML
# output directory to force them to be regenerated.
# Minimum value: 8, maximum value: 50, default value: 10.
# This tag requires that the tag GENERATE_HTML is set to YES.
FORMULA_FONTSIZE = 10
# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands
# to create new LaTeX commands to be used in formulas as building blocks. See
# the section "Including formulas" for details.
FORMULA_MACROFILE =
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
# https://www.mathjax.org) which uses client side JavaScript for the rendering
# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
# installed or if you want to formulas look prettier in the HTML output. When
# enabled you may also need to install MathJax separately and configure the path
# to it using the MATHJAX_RELPATH option.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
USE_MATHJAX = YES
# With MATHJAX_VERSION it is possible to specify the MathJax version to be used.
# Note that the different versions of MathJax have different requirements with
# regards to the different settings, so it is possible that also other MathJax
# settings have to be changed when switching between the different MathJax
# versions.
# Possible values are: MathJax_2 and MathJax_3.
# The default value is: MathJax_2.
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_VERSION = MathJax_2
# When MathJax is enabled you can set the default output format to be used for
# the MathJax output. For more details about the output format see MathJax
# version 2 (see:
# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3
# (see:
# http://docs.mathjax.org/en/latest/web/components/output.html).
# Possible values are: HTML-CSS (which is slower, but has the best
# compatibility. This is the name for Mathjax version 2, for MathJax version 3
# this will be translated into chtml), NativeMML (i.e. MathML. Only supported
# for MathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This
# is the name for Mathjax version 3, for MathJax version 2 this will be
# translated into HTML-CSS) and SVG.
# The default value is: HTML-CSS.
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_FORMAT = HTML-CSS
# When MathJax is enabled you need to specify the location relative to the HTML
# output directory using the MATHJAX_RELPATH option. The destination directory
# should contain the MathJax.js script. For instance, if the mathjax directory
# is located at the same level as the HTML output directory, then
# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
# Content Delivery Network so you can quickly see the result without installing
# MathJax. However, it is strongly recommended to install a local copy of
# MathJax from https://www.mathjax.org before deployment. The default value is:
# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2
# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
# extension names that should be enabled during MathJax rendering. For example
# for MathJax version 2 (see
# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions):
# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
# For example for MathJax version 3 (see
# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html):
# MATHJAX_EXTENSIONS = ams
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_EXTENSIONS =
# The MATHJAX_CODEFILE tag can be used to specify a file with JavaScript pieces
# of code that will be used on startup of the MathJax code. See the MathJax site
# (see:
# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an
# example see the documentation.
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_CODEFILE =
# When the SEARCHENGINE tag is enabled Doxygen will generate a search box for
# the HTML output. The underlying search engine uses JavaScript and DHTML and
# should work on any modern browser. Note that when using HTML help
# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
# there is already a search function so this one should typically be disabled.
# For large projects the JavaScript based search engine can be slow, then
# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
# search using the keyboard; to jump to the search box use + S
# (what the is depends on the OS and browser, but it is typically
# , /, or both). Inside the search box use the to jump into the search results window, the results can be navigated
# using the . Press to select an item or to cancel
# the search. The filter options can be selected when the cursor is inside the
# search box by pressing +. Also here use the
# to select a filter and or to activate or cancel the filter
# option.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
SEARCHENGINE = YES
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a web server instead of a web client using JavaScript. There
# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
# setting. When disabled, Doxygen will generate a PHP script for searching and
# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
# and searching needs to be provided by external tools. See the section
# "External Indexing and Searching" for details.
# The default value is: NO.
# This tag requires that the tag SEARCHENGINE is set to YES.
SERVER_BASED_SEARCH = NO
# When EXTERNAL_SEARCH tag is enabled Doxygen will no longer generate the PHP
# script for searching. Instead the search results are written to an XML file
# which needs to be processed by an external indexer. Doxygen will invoke an
# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
# search results.
#
# Doxygen ships with an example indexer (doxyindexer) and search engine
# (doxysearch.cgi) which are based on the open source search engine library
# Xapian (see:
# https://xapian.org/).
#
# See the section "External Indexing and Searching" for details.
# The default value is: NO.
# This tag requires that the tag SEARCHENGINE is set to YES.
EXTERNAL_SEARCH = NO
# The SEARCHENGINE_URL should point to a search engine hosted by a web server
# which will return the search results when EXTERNAL_SEARCH is enabled.
#
# Doxygen ships with an example indexer (doxyindexer) and search engine
# (doxysearch.cgi) which are based on the open source search engine library
# Xapian (see:
# https://xapian.org/). See the section "External Indexing and Searching" for
# details.
# This tag requires that the tag SEARCHENGINE is set to YES.
SEARCHENGINE_URL =
# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
# search data is written to a file for indexing by an external tool. With the
# SEARCHDATA_FILE tag the name of this file can be specified.
# The default file is: searchdata.xml.
# This tag requires that the tag SEARCHENGINE is set to YES.
SEARCHDATA_FILE = searchdata.xml
# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
# projects and redirect the results back to the right project.
# This tag requires that the tag SEARCHENGINE is set to YES.
EXTERNAL_SEARCH_ID =
# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through Doxygen
# projects other than the one defined by this configuration file, but that are
# all added to the same external search index. Each project needs to have a
# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
# to a relative location where the documentation can be found. The format is:
# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
# This tag requires that the tag SEARCHENGINE is set to YES.
EXTRA_SEARCH_MAPPINGS =
#---------------------------------------------------------------------------
# Configuration options related to the LaTeX output
#---------------------------------------------------------------------------
# If the GENERATE_LATEX tag is set to YES, Doxygen will generate LaTeX output.
# The default value is: YES.
GENERATE_LATEX = NO
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: latex.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_OUTPUT = latex
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
# invoked.
#
# Note that when not enabling USE_PDFLATEX the default is latex when enabling
# USE_PDFLATEX the default is pdflatex and when in the later case latex is
# chosen this is overwritten by pdflatex. For specific output languages the
# default can have been set differently, this depends on the implementation of
# the output language.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_CMD_NAME = latex
# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
# index for LaTeX.
# Note: This tag is used in the Makefile / make.bat.
# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file
# (.tex).
# The default file is: makeindex.
# This tag requires that the tag GENERATE_LATEX is set to YES.
MAKEINDEX_CMD_NAME = makeindex
# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to
# generate index for LaTeX. In case there is no backslash (\) as first character
# it will be automatically added in the LaTeX code.
# Note: This tag is used in the generated output file (.tex).
# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat.
# The default value is: makeindex.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_MAKEINDEX_CMD = makeindex
# If the COMPACT_LATEX tag is set to YES, Doxygen generates more compact LaTeX
# documents. This may be useful for small projects and may help to save some
# trees in general.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
COMPACT_LATEX = NO
# The PAPER_TYPE tag can be used to set the paper type that is used by the
# printer.
# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
# 14 inches) and executive (7.25 x 10.5 inches).
# The default value is: a4.
# This tag requires that the tag GENERATE_LATEX is set to YES.
PAPER_TYPE = a4
# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
# that should be included in the LaTeX output. The package can be specified just
# by its name or with the correct syntax as to be used with the LaTeX
# \usepackage command. To get the times font for instance you can specify :
# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
# To use the option intlimits with the amsmath package you can specify:
# EXTRA_PACKAGES=[intlimits]{amsmath}
# If left blank no extra packages will be included.
# This tag requires that the tag GENERATE_LATEX is set to YES.
EXTRA_PACKAGES =
# The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for
# the generated LaTeX document. The header should contain everything until the
# first chapter. If it is left blank Doxygen will generate a standard header. It
# is highly recommended to start with a default header using
# doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty
# and then modify the file new_header.tex. See also section "Doxygen usage" for
# information on how to generate the default header that Doxygen normally uses.
#
# Note: Only use a user-defined header if you know what you are doing!
# Note: The header is subject to change so you typically have to regenerate the
# default header when upgrading to a newer version of Doxygen. The following
# commands have a special meaning inside the header (and footer): For a
# description of the possible markers and block names see the documentation.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_HEADER =
# The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for
# the generated LaTeX document. The footer should contain everything after the
# last chapter. If it is left blank Doxygen will generate a standard footer. See
# LATEX_HEADER for more information on how to generate a default footer and what
# special commands can be used inside the footer. See also section "Doxygen
# usage" for information on how to generate the default footer that Doxygen
# normally uses. Note: Only use a user-defined footer if you know what you are
# doing!
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_FOOTER =
# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
# LaTeX style sheets that are included after the standard style sheets created
# by Doxygen. Using this option one can overrule certain style aspects. Doxygen
# will copy the style sheet files to the output directory.
# Note: The order of the extra style sheet files is of importance (e.g. the last
# style sheet in the list overrules the setting of the previous ones in the
# list).
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_EXTRA_STYLESHEET =
# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the LATEX_OUTPUT output
# directory. Note that the files will be copied as-is; there are no commands or
# markers available.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_EXTRA_FILES =
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
# contain links (just like the HTML output) instead of page references. This
# makes the output suitable for online browsing using a PDF viewer.
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.
PDF_HYPERLINKS = YES
# If the USE_PDFLATEX tag is set to YES, Doxygen will use the engine as
# specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX
# files. Set this option to YES, to get a higher quality PDF documentation.
#
# See also section LATEX_CMD_NAME for selecting the engine.
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.
USE_PDFLATEX = YES
# The LATEX_BATCHMODE tag signals the behavior of LaTeX in case of an error.
# Possible values are: NO same as ERROR_STOP, YES same as BATCH, BATCH In batch
# mode nothing is printed on the terminal, errors are scrolled as if is
# hit at every error; missing files that TeX tries to input or request from
# keyboard input (\read on a not open input stream) cause the job to abort,
# NON_STOP In nonstop mode the diagnostic message will appear on the terminal,
# but there is no possibility of user interaction just like in batch mode,
# SCROLL In scroll mode, TeX will stop only for missing files to input or if
# keyboard input is necessary and ERROR_STOP In errorstop mode, TeX will stop at
# each error, asking for user intervention.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_BATCHMODE = NO
# If the LATEX_HIDE_INDICES tag is set to YES then Doxygen will not include the
# index chapters (such as File Index, Compound Index, etc.) in the output.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_HIDE_INDICES = NO
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
# bibliography, e.g. plainnat, or ieeetr. See
# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
# The default value is: plain.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_BIB_STYLE = plain
# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
# path from which the emoji images will be read. If a relative path is entered,
# it will be relative to the LATEX_OUTPUT directory. If left blank the
# LATEX_OUTPUT directory will be used.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_EMOJI_DIRECTORY =
#---------------------------------------------------------------------------
# Configuration options related to the RTF output
#---------------------------------------------------------------------------
# If the GENERATE_RTF tag is set to YES, Doxygen will generate RTF output. The
# RTF output is optimized for Word 97 and may not look too pretty with other RTF
# readers/editors.
# The default value is: NO.
GENERATE_RTF = NO
# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: rtf.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_OUTPUT = rtf
# If the COMPACT_RTF tag is set to YES, Doxygen generates more compact RTF
# documents. This may be useful for small projects and may help to save some
# trees in general.
# The default value is: NO.
# This tag requires that the tag GENERATE_RTF is set to YES.
COMPACT_RTF = NO
# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
# contain hyperlink fields. The RTF file will contain links (just like the HTML
# output) instead of page references. This makes the output suitable for online
# browsing using Word or some other Word compatible readers that support those
# fields.
#
# Note: WordPad (write) and others do not support links.
# The default value is: NO.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_HYPERLINKS = NO
# Load stylesheet definitions from file. Syntax is similar to Doxygen's
# configuration file, i.e. a series of assignments. You only have to provide
# replacements, missing definitions are set to their default value.
#
# See also section "Doxygen usage" for information on how to generate the
# default style sheet that Doxygen normally uses.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_STYLESHEET_FILE =
# Set optional variables used in the generation of an RTF document. Syntax is
# similar to Doxygen's configuration file. A template extensions file can be
# generated using doxygen -e rtf extensionFile.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_EXTENSIONS_FILE =
# The RTF_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the RTF_OUTPUT output directory.
# Note that the files will be copied as-is; there are no commands or markers
# available.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_EXTRA_FILES =
#---------------------------------------------------------------------------
# Configuration options related to the man page output
#---------------------------------------------------------------------------
# If the GENERATE_MAN tag is set to YES, Doxygen will generate man pages for
# classes and files.
# The default value is: NO.
GENERATE_MAN = NO
# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it. A directory man3 will be created inside the directory specified by
# MAN_OUTPUT.
# The default directory is: man.
# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_OUTPUT = man
# The MAN_EXTENSION tag determines the extension that is added to the generated
# man pages. In case the manual section does not start with a number, the number
# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
# optional.
# The default value is: .3.
# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_EXTENSION = .3
# The MAN_SUBDIR tag determines the name of the directory created within
# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
# MAN_EXTENSION with the initial . removed.
# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_SUBDIR =
# If the MAN_LINKS tag is set to YES and Doxygen generates man output, then it
# will generate one additional man file for each entity documented in the real
# man page(s). These additional files only source the real man page, but without
# them the man command would be unable to find the correct page.
# The default value is: NO.
# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_LINKS = NO
#---------------------------------------------------------------------------
# Configuration options related to the XML output
#---------------------------------------------------------------------------
# If the GENERATE_XML tag is set to YES, Doxygen will generate an XML file that
# captures the structure of the code including all documentation.
# The default value is: NO.
GENERATE_XML = NO
# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: xml.
# This tag requires that the tag GENERATE_XML is set to YES.
XML_OUTPUT = xml
# If the XML_PROGRAMLISTING tag is set to YES, Doxygen will dump the program
# listings (including syntax highlighting and cross-referencing information) to
# the XML output. Note that enabling this will significantly increase the size
# of the XML output.
# The default value is: YES.
# This tag requires that the tag GENERATE_XML is set to YES.
XML_PROGRAMLISTING = YES
# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, Doxygen will include
# namespace members in file scope as well, matching the HTML output.
# The default value is: NO.
# This tag requires that the tag GENERATE_XML is set to YES.
XML_NS_MEMB_FILE_SCOPE = NO
#---------------------------------------------------------------------------
# Configuration options related to the DOCBOOK output
#---------------------------------------------------------------------------
# If the GENERATE_DOCBOOK tag is set to YES, Doxygen will generate Docbook files
# that can be used to generate PDF.
# The default value is: NO.
GENERATE_DOCBOOK = NO
# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
# front of it.
# The default directory is: docbook.
# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
DOCBOOK_OUTPUT = docbook
#---------------------------------------------------------------------------
# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
# If the GENERATE_AUTOGEN_DEF tag is set to YES, Doxygen will generate an
# AutoGen Definitions (see https://autogen.sourceforge.net/) file that captures
# the structure of the code including all documentation. Note that this feature
# is still experimental and incomplete at the moment.
# The default value is: NO.
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# Configuration options related to Sqlite3 output
#---------------------------------------------------------------------------
# If the GENERATE_SQLITE3 tag is set to YES Doxygen will generate a Sqlite3
# database with symbols found by Doxygen stored in tables.
# The default value is: NO.
GENERATE_SQLITE3 = NO
# The SQLITE3_OUTPUT tag is used to specify where the Sqlite3 database will be
# put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put
# in front of it.
# The default directory is: sqlite3.
# This tag requires that the tag GENERATE_SQLITE3 is set to YES.
SQLITE3_OUTPUT = sqlite3
# The SQLITE3_RECREATE_DB tag is set to YES, the existing doxygen_sqlite3.db
# database file will be recreated with each Doxygen run. If set to NO, Doxygen
# will warn if a database file is already found and not modify it.
# The default value is: YES.
# This tag requires that the tag GENERATE_SQLITE3 is set to YES.
SQLITE3_RECREATE_DB = YES
#---------------------------------------------------------------------------
# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
# If the GENERATE_PERLMOD tag is set to YES, Doxygen will generate a Perl module
# file that captures the structure of the code including all documentation.
#
# Note that this feature is still experimental and incomplete at the moment.
# The default value is: NO.
GENERATE_PERLMOD = NO
# If the PERLMOD_LATEX tag is set to YES, Doxygen will generate the necessary
# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
# output from the Perl module output.
# The default value is: NO.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.
PERLMOD_LATEX = NO
# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
# formatted so it can be parsed by a human reader. This is useful if you want to
# understand what is going on. On the other hand, if this tag is set to NO, the
# size of the Perl module output will be much smaller and Perl will parse it
# just the same.
# The default value is: YES.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.
PERLMOD_PRETTY = YES
# The names of the make variables in the generated doxyrules.make file are
# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
# so different doxyrules.make files included by the same Makefile don't
# overwrite each other's variables.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
# If the ENABLE_PREPROCESSING tag is set to YES, Doxygen will evaluate all
# C-preprocessor directives found in the sources and include files.
# The default value is: YES.
ENABLE_PREPROCESSING = YES
# If the MACRO_EXPANSION tag is set to YES, Doxygen will expand all macro names
# in the source code. If set to NO, only conditional compilation will be
# performed. Macro expansion can be done in a controlled way by setting
# EXPAND_ONLY_PREDEF to YES.
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
MACRO_EXPANSION = NO
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
# the macro expansion is limited to the macros specified with the PREDEFINED and
# EXPAND_AS_DEFINED tags.
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
EXPAND_ONLY_PREDEF = NO
# If the SEARCH_INCLUDES tag is set to YES, the include files in the
# INCLUDE_PATH will be searched if a #include is found.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
SEARCH_INCLUDES = YES
# The INCLUDE_PATH tag can be used to specify one or more directories that
# contain include files that are not input files but should be processed by the
# preprocessor. Note that the INCLUDE_PATH is not recursive, so the setting of
# RECURSIVE has no effect here.
# This tag requires that the tag SEARCH_INCLUDES is set to YES.
INCLUDE_PATH =
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
# directories. If left blank, the patterns specified with FILE_PATTERNS will be
# used.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
INCLUDE_FILE_PATTERNS =
# The PREDEFINED tag can be used to specify one or more macro names that are
# defined before the preprocessor is started (similar to the -D option of e.g.
# gcc). The argument of the tag is a list of macros of the form: name or
# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
# is assumed. To prevent a macro definition from being undefined via #undef or
# recursively expanded use the := operator instead of the = operator.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
PREDEFINED =
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
# macro definition that is found in the sources will be used. Use the PREDEFINED
# tag if you want to use a different macro definition that overrules the
# definition found in the source code.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
EXPAND_AS_DEFINED =
# If the SKIP_FUNCTION_MACROS tag is set to YES then Doxygen's preprocessor will
# remove all references to function-like macros that are alone on a line, have
# an all uppercase name, and do not end with a semicolon. Such function macros
# are typically used for boiler-plate code, and will confuse the parser if not
# removed.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration options related to external references
#---------------------------------------------------------------------------
# The TAGFILES tag can be used to specify one or more tag files. For each tag
# file the location of the external documentation should be added. The format of
# a tag file without this location is as follows:
# TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows:
# TAGFILES = file1=loc1 "file2 = loc2" ...
# where loc1 and loc2 can be relative or absolute paths or URLs. See the
# section "Linking to external documentation" for more information about the use
# of tag files.
# Note: Each tag file must have a unique name (where the name does NOT include
# the path). If a tag file is not located in the directory in which Doxygen is
# run, you must also specify the path to the tagfile here.
TAGFILES =
# When a file name is specified after GENERATE_TAGFILE, Doxygen will create a
# tag file that is based on the input files it reads. See section "Linking to
# external documentation" for more information about the usage of tag files.
GENERATE_TAGFILE =
# If the ALLEXTERNALS tag is set to YES, all external classes and namespaces
# will be listed in the class and namespace index. If set to NO, only the
# inherited external classes will be listed.
# The default value is: NO.
ALLEXTERNALS = NO
# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
# in the topic index. If set to NO, only the current project's groups will be
# listed.
# The default value is: YES.
EXTERNAL_GROUPS = YES
# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
# the related pages index. If set to NO, only the current project's pages will
# be listed.
# The default value is: YES.
EXTERNAL_PAGES = YES
#---------------------------------------------------------------------------
# Configuration options related to diagram generator tools
#---------------------------------------------------------------------------
# If set to YES the inheritance and collaboration graphs will hide inheritance
# and usage relations if the target is undocumented or is not a class.
# The default value is: YES.
HIDE_UNDOC_RELATIONS = YES
# If you set the HAVE_DOT tag to YES then Doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz (see:
# https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
# Bell Labs. The other options in this section have no effect if this option is
# set to NO
# The default value is: NO.
HAVE_DOT = NO
# The DOT_NUM_THREADS specifies the number of dot invocations Doxygen is allowed
# to run in parallel. When set to 0 Doxygen will base this on the number of
# processors available in the system. You can set it explicitly to a value
# larger than 0 to get control over the balance between CPU load and processing
# speed.
# Minimum value: 0, maximum value: 32, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_NUM_THREADS = 0
# DOT_COMMON_ATTR is common attributes for nodes, edges and labels of
# subgraphs. When you want a differently looking font in the dot files that
# Doxygen generates you can specify fontname, fontcolor and fontsize attributes.
# For details please see Node,
# Edge and Graph Attributes specification You need to make sure dot is able
# to find the font, which can be done by putting it in a standard location or by
# setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
# directory containing the font. Default graphviz fontsize is 14.
# The default value is: fontname=Helvetica,fontsize=10.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10"
# DOT_EDGE_ATTR is concatenated with DOT_COMMON_ATTR. For elegant style you can
# add 'arrowhead=open, arrowtail=open, arrowsize=0.5'. Complete documentation about
# arrows shapes.
# The default value is: labelfontname=Helvetica,labelfontsize=10.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10"
# DOT_NODE_ATTR is concatenated with DOT_COMMON_ATTR. For view without boxes
# around nodes set 'shape=plain' or 'shape=plaintext' Shapes specification
# The default value is: shape=box,height=0.2,width=0.4.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4"
# You can set the path where dot can find font specified with fontname in
# DOT_COMMON_ATTR and others dot attributes.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_FONTPATH =
# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then Doxygen will
# generate a graph for each documented class showing the direct and indirect
# inheritance relations. In case the CLASS_GRAPH tag is set to YES or GRAPH and
# HAVE_DOT is enabled as well, then dot will be used to draw the graph. In case
# the CLASS_GRAPH tag is set to YES and HAVE_DOT is disabled or if the
# CLASS_GRAPH tag is set to BUILTIN, then the built-in generator will be used.
# If the CLASS_GRAPH tag is set to TEXT the direct and indirect inheritance
# relations will be shown as texts / links. Explicit enabling an inheritance
# graph or choosing a different representation for an inheritance graph of a
# specific class, can be accomplished by means of the command \inheritancegraph.
# Disabling an inheritance graph can be accomplished by means of the command
# \hideinheritancegraph.
# Possible values are: NO, YES, TEXT, GRAPH and BUILTIN.
# The default value is: YES.
CLASS_GRAPH = YES
# If the COLLABORATION_GRAPH tag is set to YES then Doxygen will generate a
# graph for each documented class showing the direct and indirect implementation
# dependencies (inheritance, containment, and class references variables) of the
# class with other documented classes. Explicit enabling a collaboration graph,
# when COLLABORATION_GRAPH is set to NO, can be accomplished by means of the
# command \collaborationgraph. Disabling a collaboration graph can be
# accomplished by means of the command \hidecollaborationgraph.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
COLLABORATION_GRAPH = YES
# If the GROUP_GRAPHS tag is set to YES then Doxygen will generate a graph for
# groups, showing the direct groups dependencies. Explicit enabling a group
# dependency graph, when GROUP_GRAPHS is set to NO, can be accomplished by means
# of the command \groupgraph. Disabling a directory graph can be accomplished by
# means of the command \hidegroupgraph. See also the chapter Grouping in the
# manual.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
GROUP_GRAPHS = YES
# If the UML_LOOK tag is set to YES, Doxygen will generate inheritance and
# collaboration diagrams in a style similar to the OMG's Unified Modeling
# Language.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
UML_LOOK = NO
# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
# class node. If there are many fields or methods and many nodes the graph may
# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
# number of items for each type to make the size more manageable. Set this to 0
# for no limit. Note that the threshold may be exceeded by 50% before the limit
# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
# but if the number exceeds 15, the total amount of fields shown is limited to
# 10.
# Minimum value: 0, maximum value: 100, default value: 10.
# This tag requires that the tag UML_LOOK is set to YES.
UML_LIMIT_NUM_FIELDS = 10
# If the DOT_UML_DETAILS tag is set to NO, Doxygen will show attributes and
# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS
# tag is set to YES, Doxygen will add type and arguments for attributes and
# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, Doxygen
# will not generate fields with class member information in the UML graphs. The
# class diagrams will look similar to the default class diagrams but using UML
# notation for the relationships.
# Possible values are: NO, YES and NONE.
# The default value is: NO.
# This tag requires that the tag UML_LOOK is set to YES.
DOT_UML_DETAILS = NO
# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters
# to display on a single line. If the actual line length exceeds this threshold
# significantly it will be wrapped across multiple lines. Some heuristics are
# applied to avoid ugly line breaks.
# Minimum value: 0, maximum value: 1000, default value: 17.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_WRAP_THRESHOLD = 17
# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
# collaboration graphs will show the relations between templates and their
# instances.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
TEMPLATE_RELATIONS = NO
# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
# YES then Doxygen will generate a graph for each documented file showing the
# direct and indirect include dependencies of the file with other documented
# files. Explicit enabling an include graph, when INCLUDE_GRAPH is is set to NO,
# can be accomplished by means of the command \includegraph. Disabling an
# include graph can be accomplished by means of the command \hideincludegraph.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
INCLUDE_GRAPH = YES
# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
# set to YES then Doxygen will generate a graph for each documented file showing
# the direct and indirect include dependencies of the file with other documented
# files. Explicit enabling an included by graph, when INCLUDED_BY_GRAPH is set
# to NO, can be accomplished by means of the command \includedbygraph. Disabling
# an included by graph can be accomplished by means of the command
# \hideincludedbygraph.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
INCLUDED_BY_GRAPH = YES
# If the CALL_GRAPH tag is set to YES then Doxygen will generate a call
# dependency graph for every global function or class method.
#
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable call graphs for selected
# functions only using the \callgraph command. Disabling a call graph can be
# accomplished by means of the command \hidecallgraph.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
CALL_GRAPH = NO
# If the CALLER_GRAPH tag is set to YES then Doxygen will generate a caller
# dependency graph for every global function or class method.
#
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable caller graphs for selected
# functions only using the \callergraph command. Disabling a caller graph can be
# accomplished by means of the command \hidecallergraph.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
CALLER_GRAPH = NO
# If the GRAPHICAL_HIERARCHY tag is set to YES then Doxygen will graphical
# hierarchy of all classes instead of a textual one.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
GRAPHICAL_HIERARCHY = YES
# If the DIRECTORY_GRAPH tag is set to YES then Doxygen will show the
# dependencies a directory has on other directories in a graphical way. The
# dependency relations are determined by the #include relations between the
# files in the directories. Explicit enabling a directory graph, when
# DIRECTORY_GRAPH is set to NO, can be accomplished by means of the command
# \directorygraph. Disabling a directory graph can be accomplished by means of
# the command \hidedirectorygraph.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
DIRECTORY_GRAPH = YES
# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels
# of child directories generated in directory dependency graphs by dot.
# Minimum value: 1, maximum value: 25, default value: 1.
# This tag requires that the tag DIRECTORY_GRAPH is set to YES.
DIR_GRAPH_MAX_DEPTH = 1
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. For an explanation of the image formats see the section
# output formats in the documentation of the dot tool (Graphviz (see:
# https://www.graphviz.org/)).
# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
# to make the SVG files visible in IE 9+ (other browsers do not have this
# requirement).
# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,
# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
# png:gdiplus:gdiplus.
# The default value is: png.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_IMAGE_FORMAT = png
# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
#
# Note that this requires a modern browser other than Internet Explorer. Tested
# and working are Firefox, Chrome, Safari, and Opera.
# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
# the SVG files visible. Older versions of IE do not have SVG support.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
INTERACTIVE_SVG = NO
# The DOT_PATH tag can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_PATH =
# The DOTFILE_DIRS tag can be used to specify one or more directories that
# contain dot files that are included in the documentation (see the \dotfile
# command).
# This tag requires that the tag HAVE_DOT is set to YES.
DOTFILE_DIRS =
# You can include diagrams made with dia in Doxygen documentation. Doxygen will
# then run dia to produce the diagram and insert it in the documentation. The
# DIA_PATH tag allows you to specify the directory where the dia binary resides.
# If left empty dia is assumed to be found in the default search path.
DIA_PATH =
# The DIAFILE_DIRS tag can be used to specify one or more directories that
# contain dia files that are included in the documentation (see the \diafile
# command).
DIAFILE_DIRS =
# When using PlantUML, the PLANTUML_JAR_PATH tag should be used to specify the
# path where java can find the plantuml.jar file or to the filename of jar file
# to be used. If left blank, it is assumed PlantUML is not used or called during
# a preprocessing step. Doxygen will generate a warning when it encounters a
# \startuml command in this case and will not generate output for the diagram.
PLANTUML_JAR_PATH =
# When using PlantUML, the PLANTUML_CFG_FILE tag can be used to specify a
# configuration file for PlantUML.
PLANTUML_CFG_FILE =
# When using PlantUML, the specified paths are searched for files specified by
# the !include statement in a PlantUML block.
PLANTUML_INCLUDE_PATH =
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
# that will be shown in the graph. If the number of nodes in a graph becomes
# larger than this value, Doxygen will truncate the graph, which is visualized
# by representing a node as a red box. Note that if the number of direct
# children of the root node in a graph is already larger than
# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
# Minimum value: 0, maximum value: 10000, default value: 50.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_GRAPH_MAX_NODES = 50
# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
# generated by dot. A depth value of 3 means that only nodes reachable from the
# root by following a path via at most 3 edges will be shown. Nodes that lay
# further from the root node will be omitted. Note that setting this option to 1
# or 2 may greatly reduce the computation time needed for large code bases. Also
# note that the size of a graph can be further restricted by
# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
# Minimum value: 0, maximum value: 1000, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.
MAX_DOT_GRAPH_DEPTH = 0
# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
# makes dot run faster, but since only newer versions of dot (>1.8.10) support
# this, this feature is disabled by default.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_MULTI_TARGETS = NO
# If the GENERATE_LEGEND tag is set to YES Doxygen will generate a legend page
# explaining the meaning of the various boxes and arrows in the dot generated
# graphs.
# Note: This tag requires that UML_LOOK isn't set, i.e. the Doxygen internal
# graphical representation for inheritance and collaboration diagrams is used.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
GENERATE_LEGEND = YES
# If the DOT_CLEANUP tag is set to YES, Doxygen will remove the intermediate
# files that are used to generate the various graphs.
#
# Note: This setting is not only used for dot files but also for msc temporary
# files.
# The default value is: YES.
DOT_CLEANUP = YES
# You can define message sequence charts within Doxygen comments using the \msc
# command. If the MSCGEN_TOOL tag is left empty (the default), then Doxygen will
# use a built-in version of mscgen tool to produce the charts. Alternatively,
# the MSCGEN_TOOL tag can also specify the name an external tool. For instance,
# specifying prog as the value, Doxygen will call the tool as prog -T
# -o . The external tool should support
# output file formats "png", "eps", "svg", and "ismap".
MSCGEN_TOOL =
# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the \mscfile
# command).
MSCFILE_DIRS =
================================================
FILE: Documentation/Doxygen/building_a_plugin.dox
================================================
/**
\page building_a_plugin Creating a Plugin
In order to create a plugin you need to have the FEBio SDK (Software Development Kit). This SDK contains the header files and the pre-built libraries that you need to create a plugin. The SDK is installed (optionally) as part of the FEBio Studio installation and is usually installed in the same location as FEBio in a subfolder named sdk. Next, you need a C++ compiler since the plugin has to be written in C++. We also recommend having an IDE (Integrated Development Environment) as this makes writing code much easier (e.g. Visual Studio on Windows, or XCode on Mac). Select one of the following links to learn more about setting up a plugin project for a specific operating system.
\li \subpage create_plugin_vs
\li \subpage create_plugin_osx
\li \subpage create_plugin_linux
\li \subpage create_plugin_fbs3
*/
================================================
FILE: Documentation/Doxygen/callback.dox
================================================
/**
\page callback FEBio callbacks
A callback is a function that is called by the FEBio framework at specific places in the code.
FEBio uses this callback mechanism to accomplish several things: A callback is used to update the title of the shell window to display the progress, to query for user interruptions (ctrl+c), and to write the output to the log and plot file.
To register a callback function, call the FEModel::AddCallback function.
\code
void FEModel::AddCallback(FEBCORE_CB_FNC pcb, unsigned int nwhen, void *pd, CBInsertPolicy insert = CBInsertPolicy::CB_ADD_END);
\endcode
This function takes three required parameters and one optional. The first is a pointer to the callback function. This function must be of FECORE_CB_FNC type which is described below.
The second parameter is an unsigned integer that defines when FEBio will call the callback. The third parameter is a void pointer that the user can use to pass data to the callback. The last parameter, which is optional, tells whether the callback should be added to the front or back of the callback queue.
The callback function must have the FEBIO_CB_FNC type which is defined as follows.
\code
void (*FEBIO_CB_FNC)(FEModel*, unsigned int, void*);
\endcode
When FEBio calls the function, the first parameter will be a pointer to the FE model. This pointer can be used to query information from the model. Users can also make changes to the FEModel if needed.
The second parameter is the reason why FEBio called this function. Since
callbacks can be called for multiple events, this parameter will contain the explicit reason.
It can take on the following values.
\li CB_INIT : Call after FEBio is done with initialization (and before the solve phase starts)
\li CB_STEP_ACTIVE : Call after a step was activated.
\li CB_MAJOR_ITERS : Call at end of major iterations, after it has converged.
\li CB_MINOR_ITERS : Call at the end of each minor iteration.
\li CB_SOLVED : Call after the entire model is solved.
\li CB_UPDATE_TIME : Call when the time was updated and before the time step is solved.
\li CB_AUGMENT : Call before each augmentation
\li CB_STEP_SOLVED : Call when the step was solved
\li CB_MATRIX_REFORM : Call when the stiffness matrix is reformed
\li CB_REMESH : Call after remesh
\li CB_PRE_MATRIX_SOLVE: Call right before matrix solve
\li CB_RESET : Call after FEModel::Reset
\li CB_ALWAYS : Call whenever FEBio calls the callbacks.
Note that these flags can be combined using bitwise OR. For instance, CB_MAJOR_ITERS | CB_MINOR_ITERS will cause the callback to be called both during the
major and minor iterstions.
The third parameter is the same parameter that was passed when the callback was registered. This allows users to pass custom data to the callback.
For example, the following code snippet shows how to define a callback that is always called.
\code
void my_cb(FEModel*, unsigned int, void*);
FEModel fem;
fem.AddCallback(my_cb, CB_ALWAYS, 0);
\endcode
Inside the callback function, the reason parameter can be used to determine why the callback was called.
\code
void my_cb(FEModel* fem, unsigned int nreason, void* pd)
{
if (nreason & CB_INIT)
{
// initialization has finished
}
else if (nreason & CB_MAJOR_ITERS)
{
// FEBio solved a converged state
}
else if (nreason & CB_MINOR_ITERS)
{
// a minor iteration has finished
}
}
\endcode
*/
================================================
FILE: Documentation/Doxygen/cb_plugin.dox
================================================
/**
\page cb_plugin Callback Plugins
A Callback plugin is a special type of plugin that extends FEBio's callback mechanism to the plugin framework. Callbacks are useful because they allow developers to interact with FEBio's solution pipeline; Something that otherwise would require changing the source code directly. FEBio uses callbacks for various tasks, including updating the shell window title, checking for user interrupts (ctrl+c), and for writing the log and plot files. Developers can now use the callback plugin to define additional callbacks via the plugin mechanism.
In essence, the same approach can be used as is explained in \ref callback. In this case, it is only necessary to obtain a reference to the FEModel class in order to register the callback. One way to accomplish this is in the constructor of another plugin class, since most classes receive a pointer to the FEModel class as a parameter to their constructor. For instance, the optimization module implements a task class. During initialization of this class, it also registers a callback that will be called repeatedly to collect data from the model.
However, the approach outlined in this section allows users to register callbacks via the FEBio input file. See below for details.
\section cb_base The FECallback Class
The base class for defining callback plugins, is the FECallback class (defined in FECore\FECallback.h). The constructor of the base class takes a pointer to an FEModel
and a parameter that defines when the callback should be called. The possible values are:
\li CB_INIT : Call after FEBio is done with initialization (and before the solve phase starts)
\li CB_STEP_ACTIVE : Call after a step was activated.
\li CB_MAJOR_ITERS : Call at end of major iterations, after it has converged.
\li CB_MINOR_ITERS : Call at the end of each minor iteration.
\li CB_SOLVED : Call after the entire model is solved.
\li CB_UPDATE_TIME : Call when the time was updated and before the time step is solved.
\li CB_AUGMENT : Call before each augmentation
\li CB_STEP_SOLVED : Call when the step was solved
\li CB_MATRIX_REFORM : Call when the stiffness matrix is reformed
\li CB_REMESH : Call after remesh
\li CB_PRE_MATRIX_SOLVE: Call right before matrix solve
\li CB_RESET : Call after FEModel::Reset
\li CB_MODEL_UPDATE : Called at the end of FEModel::Update
\li CB_TIMESTEP_SOLVED : Called at FEAnalysis::SolveTimeStep after the solver returns.
\li CB_SERIALIZE_SAVE : Called at the end of FEModel::Serialize when saving
\li CB_SERIALIZE_LOAD : Called at the end of FEModel::Serialize when loading
\li CB_USER1 : can be used by users
\li CB_ALWAYS : Call whenever FEBio calls the callbacks.
These parameters can be combined using a binary OR operator (e.g. CB_INIT | CB_MAJOR_ITERS). If you wish that the callback is called for all events you can use the value CB_ALWAYS.
The base class defines an abstract member, FECallback::Execute, which needs to be overridden by the derived class. This is the function that will be called by FEBio.
\section cb_create Creating an Callback Plugin
The first step in creating a callback plugin is deriving a new class from FECallback and defining the Execute member.
\code
class MyCallback : public FECallback
{
public:
MyCallback(FEModel* pfem) : FECallback(pfem, CB_ALWAYS){}
void Execute(FEModel& fem, unsigned int nreason);
};
\endcode
The constructor of the derived class calls the base class constructor with the pointer to the FEModel class and the events for which the callbacks wants to be called.
The Execute member is then called when the events occur for which the callback was registered. Inside this function, a developer can implement any additional functionality.
If the callback was requested for multiple events the nreason parameter can be used to identify the event.
\code
void MyCallback::Execute(FEModel& fem, unsigned int nreason)
{
if (nreason==CB_INIT)
{
// Model was initialized
}
else if (nreason == CB_SOLVED)
{
// Model is solved
}
}
\endcode
\section cb_using Using a callback plugin
In order to use a callback plugin, it must be registered with the framework. This can be done in the usual way. See \ref plugin_basics for details.
\code
REGISTER_FECORE_CLASS(MyCallbackPlugin, "my_callback");
\endcode
Once the plugin is registered, it can be referenced in the FEBio input file. A special Code section can be added where the callbacks can be defined.
\code
\endcode
The name attribute of the callback item is set to the name with which the callback plugin was registered with the framework.
*/
================================================
FILE: Documentation/Doxygen/create_plugin_fbs3.dox
================================================
/**
\page create_plugin_fbs3 Creating a plugin project with FEBio Studio 3
As of version 3.0, FEBio Studio has a build-in tool for generating plugin templates. This tool is often a more convenient starting point than trying to set up the plugin in your build environment manually. For most plugin types, the tool will generate skeleton code that is ready to build.
\section prep Prerequisites
Before you can use FEBio Studio to generate a plugin template, you must have the following installed.
\li FEBio Studio, version 3.0 or newer.
\li A build environment, e.g. Visual Studio on Windows.
\li CMake, which is used to generate the project files for the build environment.
With FEBioStudio3 installed, open the Options dialog box (menu Tools\Options) and select the FEBio item from the list. Set the locations for the FEBio SDK Include path, Library path, and set the default path where you would like FEBio Studio to place the plugin files. Make sure that this folder is writeable. (E.g. don't use the FEBioStudio installation folder.) You only have to set these fields once, the first time you create a plugin.
\section wizard The FEBio Plugin Wizard
Creating an FEBio plugin project is as simple as following the steps in the FEBio Plugin wizard. To start the wizard, select the menu FEBio\Create FEBio Plugin... .
\subsection wizard_page1 Page1 - Create FEBio Plugin
The first page of the wizard allows you to choose a name for the plugin. Since this name will be used to generate the plugin files, make sure to use only characters that are valid in file names. In addition, you can also choose the location where FEBioStudio will generate the plugin files. Lastly, choose the FEBio module that you will expand. For instance, if you intend to add a new constitutive model for an elastic material, select the solid module.
\image html plugin_wizard_page1.png
After filling out the information, click the Next button to proceed to the next page.
\subsection wizard_page2 Page2 - Configure Plugin
On the second page, you can select the plugin type (e.g. Elastic Material, if you intend to implement a new constitutive model) and enter the name of the class. Make sure to use a valid C++ class name. Optionally, you can enter the type string of the plugin class. This is the string value that will be used when registering the plugin and the string that users will use as the value for the type attribute in the FEBio input file. By default, the name of the plugin class will be used.
\image html plugin_wizard_page2.png
Once this page is completed, click Next to continue.
\subsection wizard_page3 Page 3 - Plugin Properties
This page will list properties you can set to further configure the particular plugin you want to create. The properties that are listed will depend on the type of plugin you selected. For example, if you selected the "Elastic Material" plugin, the properties will allow you to choose the base class for the material class.
\image html plugin_wizard_page3.png
Once the properties are set, click Finish to exit the wizard.
\subsection wizard_finish Finishing the Wizard
At this point, the wizard will generate all the necessary files for building the plugin. A dialog box will inform you whether FEBio Studio was able to generate the plugin files or not. If the wizard was successful, the following files should have been generated.
\li CMakeLists.txt This is the CMake file that will generate the project files for your build environment.
\li main.cpp This is the file that contains the required functions that FEBio needs to integrate your plugin.
\li MyPluginName.h The header file containing the class declaration. (The actual name will use the class name you entered in the wizard.)
\li MyPluginName.cpp The code file containing the class definition. (The actual name will use the class name you entered in the wizard.)
\section build_plugin Building the plugin
The wizard will generate a template code that is ready to build. Of course, the plugin may not actually do anything yet, but at this point, you can verify that the plugin builds correctly with your build environment and can be loaded in FEBio Studio.
The first step will be to build the project files for your build environment. This essentially means that you have to run CMake on the CMakeLists.txt that the wizard generated. If you are familiar with CMake, you can do this outside FEBioStudio, however, you can also do this from FEBio Studio. In fact, you can build the plugin directly from FEBio Studio.
If you show the Project panel, you'll notice that your plugin files are listed there under a new item that is named after your plugin. Double-clicking a file will open it up in an editor in FEBio Studio.
\image html plugin_project.png
To build the plugin, right-click the top-level item with the plugin's name and select the Build option. When doing this, FEBio Studio will now first call CMake to generate the project files, and then call CMake again to build the plugin with your native build environment. You can monitor the progress on the Output panel. (Make sure "Build" is selected in the show output from dropdown list.)
\section plugin_load Loading the Plugin
If the build was successful, you can now load the plugin into FEBio Studio. To load the plugin, right-click the item with the plugin's name in the Project panel and select the Load menu option. A dialog box will inform you whether the plugin was loaded successfully or not.
\section wrap_up Limitations
Although FEBioStudio has now the ability to generate plugin files, edit the files, and build the plugin, it is still highly recommended to familiarize yourself with your build environment since some tasks can only be done there.
One important thing to keep in mind is that FEBio Studio will only build the Release configuration of the plugin, since only the Release build can be loaded into FEBio Studio. For the purpose of testing your plugin code, it is more convenient to build the Debug configuration. However, this can only be done from your build environment. To build your Debug configuration, you can still use the wizard to generate the plugin files and build the Release configuration, as this will generate all the project files for your build environment. However, after that, you'll have to open the IDE (or manually change the project files) to build and test the Debug configuration of your plugin.
You can check out some of the other links in the \ref building_a_plugin section to learn more about how to use different build environments to build FEBio plugins.
*/
================================================
FILE: Documentation/Doxygen/create_plugin_linux.dox
================================================
/**
\page create_plugin_linux Creating a plugin project with Linux
A sample plugin, NeoHookeanPI, is included on the FEBio download page. Review the Makefile for specifics of compiling a plugin on Linux. The important points are:
- compile with the -fPIC flag.
- link with -shared -Wl,-soname,libname.so where libname is the name of the library.
*/
================================================
FILE: Documentation/Doxygen/create_plugin_osx.dox
================================================
/**
\page create_plugin_osx Creating a plugin project with XCode
A sample plugin, NeoHookeanPI, is included on the FEBio download page. Review the Makefile for specifics of compiling a plugin on Linux. The important points are:
- compile with the -fPIC flag.
- link with -dynamiclib
*/
================================================
FILE: Documentation/Doxygen/create_plugin_vs.dox
================================================
/**
\page create_plugin_vs Creating a plugin project with Visual Studio
\section vs_sec1_1 Creating the Visual Studio Project
As of FEBio 4, Visual Studio 2022 is the recommended IDE for developing plugins on Windows, however VS2019 should work as well.
To create a plugin for FEBio in Visual Studio, you need to create a new dll project. To do this, open Visual Studio and select the Dynamic-Link Library (DLL) template from the list. Then, click Next.
\image html create_plugin_with_vs_step_1.png
In the next page of the wizard, give the new project a name and a location and click Create. A new dll project will be created and VS will load the new project.
Note that VS already added some files to the project:
\li framework.h This includes Windows related header files.
\li pch.h This is the header file that generates the precompiled header file.
\li pch.cpp This file will be compiled into the precompiled header file
\li dllmain.cpp Starting point for the dll
In principle, none of these files are necessary for building an FEBio plugin. If you prefer to start from an empty project, feel free to delete all these files. (If you remove them, make sure to also delete them from the file system.) Deleting the pch.h and pch.cpp does require to turn off the precompiled header file feature in VS, as described below.
\section vs_sec_2 Configuring the project
Next, we'll need to tell Visual Studio where to find the FEBio header (.h) and library (.lib) files. To do this, right-click on the project name in the Solution Explorer and select Properties from the popup menu.
In the Property Pages window, nagivate to Configuration Properties \ C/C++ \ General . Locate the Additional Include Directories property and add the path to the include files (e.g. "C:\Program Files\FEBioStudio2\sdk\include"). To do this, select the "Include Directories" property and click the button on the right of the text edit field. Select "Edit..," from the popup menu. In the dialog box that pops up, the FEBio include folder can be added. Close OK when done.
Next, navigate to Configuration Properties \ Linker \ General , and add the path to the FEBio library files to the Additional Library Directories (e.g. "C:\Program Files\FEBioStudio2\sdk\lib").
Then, under the Configuration Properties \ Linker \ Input , add the febio libraries that you will need to the Additional dependencies property. Do not remove anything that is already there. Instead, click on the property's value, click on the dropdown button on the right side, and select the edit option from the dropdown menu. In the next dialog box that appears, add the febio libraries that you will need to link to. Which libraries you'll need to add, depends on the type of plugin. For example, if your developing a material plugin that is used in the solid module, you'll need to link to fecore.lib and febiomech.lib . Another thing to do is look at the header files that you are including and notice the libraries where they are located. For instance, if you are including "FEBioMech\FEElasticMaterial.h" , then you will need to link to febiomech.lib .
It is also necessary to define the WIN32 and FECORE_DLL preprocessor macros. This can be set in the Properties dialog box by navigating to Configuration Properties \ C/C++ \ Preprocessor . Then add WIN32 and FECORE_DLL to the Preprocessor definitions . Note that, as with most settings in VS, entries are separated by semicolons.
Note that the previous steps need to be done for both the Debug and Release configurations separately. Also make sure to link to the FEBio debug libraries when building the Debug configuration of your plugin, and similarly link to the FEBio release libraries when building the Release configuration. Using the wrong libraries may lead to build or runtime errors. Keep in mind that using the debug libraries may result in poor performance. This is to be expected. The debug libraries should only be used for initial testing and debugging. The release libraries should be used for the actual simulations.
\image html create_plugin_with_vs_step_4.png
If you deleted the pch.h and pch.cpp files that were automatically added to the project by VS, you also need to turn off the precompiled header file feature. This can be done as follows. Open the Properties dialog, and then navigate to Configuration Properties \ C/C++ \ Precompiled Header . Then, set the Precompiled header property to Not using precompiled headers . Make sure to change this for both the Debug and Release configurations.
Now you are ready to write your plugin.
\section vs_sec_3 Building the project
After you've written the plugin code, you'll need to build it. This will produce the final dynamic link library (dll) that you need to import in FEBio.
Before building the plugin, first check the configuration that is currently selected. Choose either Debug or Release depending on whether you are developing a version for testing (debug) or actual simulation (release). Remember that it is important that you selected the correct FEBio link libraries depending on the configuration.
Once you are ready to build the plugin, use the menu Build \ Build Solution to build the plugin. If all went well, Visual Studio should produce a dll file. You can now use this plugin in FEBio, as described in the section \ref using_plugins. (However, also see next section.)
The most likely errors you may see are "unresolved external symbols". This means that the linker was not able to locate some of the functions that you are calling in your plugin (either directly, or indirectly via another febio library). The usual solution is to find out the library these functions are located in and add it to the Additional Dependencies linker input option, as described above.
\section vs_sec_4 Testing the plugin
For initial testing and debugging, it might be more convenient to run the plugin code from within Visual Studio. To do this, open the Properties dialog box again for the project. Select the Configuration Properties \ Debugging settings. Then, change the following settings.
\li Command : Specify the path to the FEBio executable here. (e.g. C:\\Program Files\\FEBioStudio2\\sdk\\bin\\Debug\\febio4.exe).
\li Command Arguments : Set this to -import "$(TargetPath)" (if you do this, you do not need to specify the plugin in the FEBio configuration file.)
\li Working Directory : Set this to the location of your test febio input files.
Press OK and close the dialog box.
Now, use the menu Debug \ Start Debugging to start FEBio. FEBio should start, load the plugin, and display a message that it was able to load the plugin or not. Then, the FEBio prompt appears and you can run a test file by entering the command (assume the input file is called test.feb ) run test.feb [ENTER].
Alternatively, you can also add the file name to the Command Arguments property above. (e.g. -import "$(TargetPath)" -i test.feb ). In that case, FEBio will start, load the plugin and immediately run the specified input file. It will also exit immediately once the model completes. Thus, for small problems, it is possible that the whole process completes in a fraction of a second, and it may appear as nothing happened. You can always double-check the output files to check if FEBio ran correctly.
*/
================================================
FILE: Documentation/Doxygen/debug_tools.dox
================================================
/**
\page debug_tools Debugging Tools
Although the compiler and IDE debugging tools are the best tools for debugging an implementation, the FECore library also provides some useful tools that can help debug your code.
In order the use the FECore debugging tools, you must include the following header file.
\code
#include
\endcode
The FECore debugging tools are most easily accessed via a set of predefined macros. The following macros are available.
1. fecore_watch: Tells the FECore debugger to track the value of a variable.
2. fecore_print: Prints the value of a watched variable to the screen.
3. fecore_break: Brings up a command prompt from which users can inspect watched variables.
The FECore debugger manages so-called watched variables. A watched variable can be declared using the \c fecore_watch macro.
\code
int a;
vec3d r;
fecore_watch(a);
fecore_watch(r);
\endcode
Most variables can be made into watched variables, including most of FEBio's tensor classes (e.g. vec3d, mat3ds).
The value of a watched variable can be printed to the screen via the \c fecore_print macro.
\code
\\ declare watched variable
mat3ds s;
fecore_watch(s);
\\ calculate s
\\ print the value to the screen
fecore_print(s);
\endcode
An alternative, and often more convenient, way for inspecting watched variables, is by setting a break point via the fecore_break macro.
\code
\\ declare watched variable
mat3ds s;
fecore_watch(s);
\\ calculate s
\\ interrupt FEBio and bring up the febio prompt.
fecore_break();
\endcode
When the code reaches the breakpoint, FEBio will bring up a command prompt. At this prompt users can enter several commands:
\li cont : continue running FEBio.
\li print : print the value of a watched variable.
\li list : list all the watched variable names.
\li remove : remove this break point
\li help : print the list of available commands.
*/
================================================
FILE: Documentation/Doxygen/febio.dox
================================================
/**
\page febio Overview of FEBio
FEBio is a finite element solver that is specifically designed for biomechanical and biophysics applications. It offers biologically relevant constitutive models and modeling scenarios.
The source code is organized into different libraries.
The following figure shows the relationship between the different libraries (sometimes referred to as modules).
\image html febio_overview.png "Overview of FEBio's organization of modules."
Each library collects a set of classes and functions that implement part of the FEBio feature set. The following list shows the different
libraries and the functionality they implement. A more detailed description of each library is provided below.
\li FECore : a library containing mostly base classes that define the FEBio framework. FECore also manages the kernel.
\li NumCore : a library that contains mostly third-party linear solvers
\li FEBioMech : a library implementing solution algorithms for solving 3D structural mechanics problems.
\li FEBioMix : this library extends FEBioMech and adds support for biphasic and materials with solutes (e.g. triphasic and multiphasic), as well as chemical reactions.
\li FEBioFluid : a library that implements a fluid mechanics solver for solving transient fluid dynamics problems, as well as a fluid-solid-interaction (FSI) solver.
\li FEAMR : a library that implements adaptive remeshing algorithms.
\li FEImgLib : a library that implements a simple 3D image structure and some basic image operations.
\li FEBioOpt : a library implementing parameter optimization methods.
\li FEBioRVE : this library implements material homogenization approaches
\li FEBioTest : this library implements various tests and diagnostics.
\li FEBioXML : An xml-parser for reading the FEBio input files
\li FEBioPlot : library for creating the FEBio plot files.
\li FEBioLib : the main FEBio library that collects all features and provides the hooks for other codes to interact with FEBio directly.
\section febio_lbis FEBio Libraries
\subsection FECore FECore
The FECore library contains all the base classes for developing finite element software. It has classes for representing meshes, constitutive models,
boundary conditions, solvers, and more. Many of the classes in this library are virtual base classes. New features are implemented by deriving classes from
these base classes and overriding some of the virtual functions. This library also implements the FECore kernel class, which is used for registering
classes with the FEBio framework. Registering classes with FEBio is part of the automation mechanism that allows other modules to instantiate classes.
For instance, this mechanism makes it possible for users to implement a new feature that will automatically be recognized in the FEBio input file, without the need
to write any I/O code.
\subsection NumCore NumCore
The NumCore library implements algorithms for storing and solving linear systems of equations. Most of the linear solver classes are wrappers to third-party
linear solver packages, such as Pardiso. Most of these classes are designed for dealing with sparse matrices, although a dense matrix class and a linear solver
for dense systems is implemented as well.
\subsection FEBioMech FEBioMech
This library implements algorithms for solving 3D quasi-static and dynamic structural mechanics problems. Both implicit and explicit solvers are availalbe.
It also contains a large number of nonlinear, constitutive models. Many types of boundary conditions and loads can be found here.
Contact algorithms for various types of tied and sliding interfaces can be found in this library as well.
\subsection FEBioMix FEBioMix
The FEBioMix library extends the FEBioMech library by solving a type of coupled fluid-mechanics problem where the domain is assumed to be a solid-fluid
mixture. The fluid is assumed to be composed of a solvent that may contain one or more solutes. Optionally, the solute concentrations can be affected
by chemical reactions. This library also implements contact algorithms for handling fluid flow across contacting interfaces. Both quasi-static as well
as transient conditions can be modeled.
\subsection FEBioFluid FEBioFluid
The FEBioFluid library implements a fluid mechanics solver for solving quasi-static and transient fluid dynamics problems. It also implements a fluid-solid
(FSI) solver that couples the solid mechanics and the fluid solver.
\subsection FEAMR FEAMR
The FEAMR (pronounced 'femur') implements adaptive meshing algorithms that allows users to make changes to the mesh as part of the solution process.
Applications are element erosion, where elements are removed from the analysis based on certain criteria, and local mesh refinement, where accuracy heuristics
can be used to increase (or decrease) mesh resolution in parts of the mesh.
\subsection FEImgLib FEImgLib
This library implements a simple 3D image structure and basic image operations. This library exists mostly to support some other plugins that use images,
such as the FEBioWarp plugin.
\subsection FEBioOpt FEBioOpt
This library implements several algorithms for performing model parameter optimizations.
\subsection FEBioRVE FEBioRVE
The FEBioRVE library implements an algorithm for performing first-order "FE squared" material homogenization.
\subsection FEBioTest FEBioTest
This library provides various tests and diagnostics that can be used to test different aspects of model solving with FEBio. For instance, it offers several
tangent diagnostics to test whether the material tangent of a constitutive formulation is consistent with its stress evaluations. The library also has tools
for testing restart and other features.
\subsection FEBioXML FEBioXML
The FEBioXML library implements an XML-based parser that reads the FEBio input file. This library makes extensive use of the automation mechanism that
is implemented in FEBio. This mechanism facilitates the interaction between modules such that explicit knowledge of the contents of each module is
not required. A great advantage of this is that users rarely have to modify this library directly.
\subsection FEBioPlot FEBioPlot
This library implements the XPLT format that is used for storing the FEBio output results. The XPLT format is an extendible data format that can
easily by customized to the needs of the model. As in the FEBioXML library, the automation mechanism is used to define the contents of the xplt file
and developers will rarely need to modify this library directly.
\subsection FEBioLib FEBioLib
The FEBio library is a library that handles initialization of all the modules. It also defines the FEBioModel class, derived from FEModel,
which handles most of the file management. This library also manages all the plugins.
\subsection FEBio FEBio
The FEBio module brings everything together by providing a command line front-end to the FEBio libraries. This project effectively builds the executable
that is run by users. It also implements a command manager, used on the FEBio prompt, manages the configuration file and offers several diagnostic tools
for debugging implementations.
*/
================================================
FILE: Documentation/Doxygen/index.dox
================================================
/**
\mainpage FEBio Developer's Manual
The FEBio Developer's Manual describes how to extend the default feature set of FEBio. Although users can download the source code from https://github.com/febiosoftware/FEBio and edit the source code directly, the preferred way to extend FEBio is to write a plugin.
The FEBio plugin mechanism allows users to add new features without changing the source code or building the entire source code tree. Plugins can be used to create new constitutive models, boundary conditions, loads, plot variables, as well as couple FEBio to third-party libraries.
The following links can be used to learn more about specific topics.
\li \subpage febio
\li \subpage plugins
\li \subpage technical
The FEBio software is developed at the Musculoskeletal Research Laboratories at the University of Utah and at the Musculoskeletal Biomechanics Laboratory at Columbia University.
All rights reserved. Copyright (c) 2006 - 2023
*/
================================================
FILE: Documentation/Doxygen/material.dox
================================================
/**
\page material Material Plugins
In this section we will look at the details of setting up a plugin that implements a new constitutive formulation. The new material will be integrated seamlessly in FEBio's framework so that the user can take immediate advantage of additional functionality such as reading material parameters from the xml formatted FEBio input file, serialization to the restart archive, parameter optimization and more.
The basic procedure for creating a new material for FEBio requires the following steps.
1. Defining a new material class by deriving it from an suitable base class.
2. Registering the material with FEBio's framework.
3. Defining the material parameters.
4. Implementing the Init() and Validate() functions (optional)
5. Defining a MaterialPoint structure (optional)
6. Implementing the stress and tangent functions.
Next, the steps for the basic procedure will be discussed in more detail.
\section mat_sec1 Basic Procedure
\subsection step1 Defining the material class
FEBio is written in C++ and therefore the new material implementation must be coded in C++ as well. Each material requires a separate class and hence the first step is to define a new class. The class has to be derived from one of the available material base classes. In this section it is assumed that the new material is derived from FEElasticMaterial . Materials that are derived from this base class will be materials that are used to describe isotropic, compressible solid materials. An example of such a material is the neo-Hookean material, which will be used as a case study in this section. The implementation of more advanced models will be discussed later, but they too have to follow most of the same steps.
At this point it is useful to discuss a common practice in adding new classes in C++. Usually the definition of the class is split over two separate files. One file, the so-called header file, declares the new class. The implementation of the function members are placed in a separate file, usually a .cpp file. FEBio follows this practice and it is recommended that the implementation of new plugin classes follows this practice as well. Thus, we'll have to add a MyNeoHookean.h header file that contains the class declaration. Then, we'll add a MyNeoHookean.cpp file that will contain the implementation of the class' methods.
The definition of the neo-Hookean material class looks as follows.
\code
// MyNeoHookean.h
#include
#include
class MyNeoHookean : public FEElasticMaterial
{
public:
// constructor
MyNeoHookean(FEModel*);
// Cauchy-stress calculation
mat3ds Stress(FEMaterialPoint& pt) override;
// Spatial elasticity tensor calculation
tens4ds Tangent(FEMaterialPoint& pt) override;
// class initialization (optional)
bool Init() override;
// class validation (optional)
bool Validate() override;
private:
// material parameters
FEParamDouble m_E;
FEParamDouble m_v;
// required macro for integrating this class with FECore
DECLARE_FECORE_CLASS();
};
\endcode
The class derives, as expected, publicly from FEElasticMaterial. It then defines a constructor, which has to take the FEModel* parameter. Next, several functions are overridden in order to implement the specifics of the neo-Hookean material. Then, a list of material parameters is defined. Finally, at the end of the class definition, the required macro DECLARE_FECORE_CLASS is placed, which is needed as it is part of the process of integrating the plugin class with the framework.
The MyNeoHookean.cpp file contain the implementation of the class member functions, and a few other required code (e.g. parameter definitions). The top of the file will need the necessary include statements.
\code
// MyNeoHookean.cpp
#include "MyNeoHookean.h"
#include
/* rest of code here */
\endcode
\subsection step3 Defining the material parameters
Defining the material parameters of the class requires two steps. First, variables need to be defined that will store the values for these parameters. In our example, the MyNeoHookean class defines two parameters: m_E stores the Young's modulus and m_v stores the Poisson's ratio. The second step is to register the material parameters with FEBio's framework. A set of macros exist that will facilitate this process. The first one is placed in the class definition.
\code
DECLARE_FECORE_CLASS();
\endcode
This macro informs FEBio that this material class will be defining a set of material parameters. The actual
definition of the material parameter list is placed in the compilation unit (i.e. the .cpp file). In our
example, this list is found at the top of the MyNeoHookean.cpp file.
\code
BEGIN_FECORE_CLASS(MyNeoHookean, FEElasticMaterial);
ADD_PARAMETER(m_E, FE_RANGE_GREATER(0.0), "E");
ADD_PARAMETER(m_v, FE_RANGE_RIGHT_OPEN(-1, 0.5), "v");
END_FECORE_CLASS();
\endcode
The parameter list definition begins with the BEGIN_FECORE_CLASS macro, which takes two parameters: the name of the class, and the name of the base class. Next, for each parameter, the ADD_PARAMETER macro can be used to define it. This macro takes three parameters: the variable that will store the parameter's value, a range identifer, and a string name for the variable.
The type of the parameter can be either a C++ built-in type (e.g. double, int, bool, std::vector) or any of the following special types. These types are preferred as they allow users to assign mathematical expressions or maps to the material parameters:
\li FEParamDouble Define a mappable parameter of type double
\li FEParamVec3 Define a mappable parameter of type vec3d
\li FEParamMat3d Define a mappable parameter of type mat3d
\li FEParamMat3ds Define a mappable parameter of type mat3ds
The range identifier can be one of the following values.
\li FE_RANGE_DONT_CARE(): parameter can take on any value
\li FE_RANGE_GREATER(val): parameter must be greater than val.
\li FE_RANGE_GREATER_OR_EQUAL(val): parameter must be greater than or equal to val
\li FE_RANGE_LESS (val): parameter must be less than val
\li FE_RANGE_LESS_OR_EQUAL(val): parameter must be less than or equal to val
\li FE_RANGE_OPEN(min,max): parameter must be inside the open interval (min,max)
\li FE_RANGE_CLOSED(min,max): parameter must be inside the closed interval [min,max]
\li FE_RANGE_RIGHT_OPEN(min,max): parameter must be inside the right-open interval [min, max)
\li FE_RANGE_LEFT_OPEN(min,max): parameter must be inside the left-open interval (min, max]
\li FE_RANGE_NOT_EQUAL(val): parameter cannot equal val.
Defining the valid range of a variable helps FEBio to ensure that the value of the variable remains valid throughout the analysis. FEBio will check the range every time a parameter is changed (e.g. if the parameter defines a loadcurve then the value will be checked at the start of each time step).
Currently, automatic range checking is only available for double and int parameters. It is ignored for all other parameters, including all mappable parameter types.
Finally, the parameter list must end with the END_FECORE_CLASS macro. Note that there a couple of more advanced options to define material parameters, such as vector parameters and load-curve controlled parameters. These will be discussed in the advanced section below.
\subsection constructor Implementing the constructor
The constructor requires some special attention. It is always needed since it needs to pass the FEModel* parameter that it receives to the base class.
\code
MyNeoHookean::MyNeoHookean(FEModel* fem) : FEElasticMaterial(fem)
{
m_E = 0.0;
m_v = 0.0;
}
\endcode
In addition, all member variables should be initialized in the constructor. Note that in this example the material parameters are of type FEParamDouble. The easiest way to initialize a parameter of this type is by assigning a value of type double.
\subsection step4 Implementing the Init function
When implementing a new material class the user has the option to override the base class implementation of the Init function. This function is called during model initialization and can be used to allocate any data the class may require. In our example, this function is not necessary but is provided simply as an example. It is important to always call the base class as well.
\code
bool MyNeoHookean::Init()
{
// call the base-class first!
if (FEElasticMaterial::Init() == false) return false;
// TODO: Do additional initialization here
return true;
}
\endcode
\subsection step4b Implementing the Validate function
The Validate function is called whenever the values of the material parameters have changed. By default, FEBio will use the ranges defined in the material parameter definitions to validate materials so for most material implementation this function doest not have to be defined. However, if the material requires additional validation then the user should override the Validate member. Again, make sure to always call the base class version.
\code
bool MyNeoHookean::Validate()
{
// call base class first!
if (FEElasticMaterial::Validate() == false) return false;
// TODO: Do additional parameter validation here
return true;
}
\endcode
The Validate function should also be implemented when class members depend on material parameters. Since material parameters can change during an analysis (e.g. via a load curve), then all dependent parameters must be updated as well.
\subsection step5 Implementing the stress and tangent functions
Next follows the most important aspect of the implementation: the declaration of the stress and tangent functions. These functions will describe the physical reaction of this material to an applied deformation. Note that FEBio works in the spatial frame. This implies that the stress function needs to return the Cauchy stress and the tangent function needs to return the spatial elasticity tensor.
The stress function is defined as follows in the material class definition (i.e. the header file).
\code
mat3ds Stress(FEMaterialPoint& pt) override;
\endcode
This function takes one parameter of type FEMaterialPoint. This parameter stores all the important information about the point at which to calculate the stress value. For example, this variable stores the reference and current location of the point, the local deformation gradient, history variables (if defined) and much more. It also defines a bunch of useful functions that can facilitate the implementation of the stress function, such as a function that calculates the left and right Cauchy-Green tensors. There is a lot to say about this class, but in order not to digress, a detailed explanation of this class is postponed and only a few important aspects of it are mentioned here.
The actual definition of the stress function is, as usual, placed in the compilation unit. In our example, this is the MyNeoHookean.cpp file.
\code
mat3ds MYNeoHookean::Stress(FEMaterialPoint& mp)
{
FEElasticMaterialPoint& pt = mp.ExtractData();
mat3d &F = pt.m_F;
double detF = pt.m_J;
double detFi = 1.0/detF;
double lndetF = log(detF);
// calculate left Cauchy-Green tensor
mat3ds b = pt.LeftCauchyGreen();
// evaluate material parameters at current material point
double E = m_E(mp);
double v = m_v(mp);
// lame parameters
double lam = v*E/((1+v)*(1-2*v));
double mu = 0.5*E/(1+v);
// Identity
mat3dd I(1);
// calculate stress
mat3ds s = (b - I)*(mu*detFi) + I*(lam*lndetF*detFi);
return s;
}
\endcode
Although the detailed implementation of this constitutive model will not be explained, a few important points are noted.
The FEMaterialPoint contains all the data that is defined at this particular material point. (The material points can be any point in the material, but typically are the element integration points when evaluating the FE integrals.) The first line, then extracts the component of the material point data that we need here:
\code
FEElasticMaterialPoint& pt = *mp.ExtractData();
\endcode
Materials can define their own material point data classes and extract them in a similar way from the FEMaterialPoint parameter. However, in this case, the FEElasticMaterialPoint, which is defined by the FEElasticMaterial base class provides all the data we need.
Next, the local deformation gradient is accessed from the material point data, as well as the local Jacobian (which is the determinant of the deformation gradient ). These are data members that can be accessed directly.
\code
mat3d &F = pt.m_F;
double detF = pt.m_J;
\endcode
The FEElasticMaterialPoint class has some useful member functions to calculate commonly needed tensors (e.g. left and right Cauchy-Green tensors.) Here, the left Cauchy-Green tensor is retrieved using the LeftCauchyGreen member function. A more detailed description of the available data and function members can be found in the advanced section.
\code
mat3ds b = pt.LeftCauchyGreen();
\endcode
Next, the material parameters are evaluated at the current material point.
\code
double E = m_E(mp);
double v = m_v(mp);
\endcode
After all the necessary tensors are evaluated, the stress can be calculated. FEBio defines a large number of classes that facilitate the use of tensors. For example, the mat3ds class implements a second-order 3D symmetric tensor of doubles (the d stands for double). The mat3dd class implements a second-order 3D diagonal tensor. We will see some examples of fourth-order tensor classes in the tangent function. These tensors classes make it easy to implement otherwise complicate tensorial expressions.
\code
mat3ds s = (b - I)*(mu*detFi) + I*(lam*lndetF*detFi);
\endcode
Finally, the calculated stress value at the current material point. Note that the variable returned is of type mat3ds, that is, a symmetric second-order tensor.
The tangent function is declared in the class definition as well.
\code
tens4ds Tangent(FEMaterialPoint& pt) override;
\endcode
This function too takes a single FEMaterialPoint variable as input. Note that in this case the return value is of type tens4ds which is a class that implements a fourth-order tensor with major and minor symmetries. The definition of the function can be found in the MyNeoHookean.cpp file.
\code
tens4ds MyNeoHookean::Tangent(FEMaterialPoint& mp)
{
FEElasticMaterialPoint& pt = *mp.ExtractData();
// deformation gradient
mat3d &F = pt.m_F;
double detF = pt.m_J;
// evaluate material parameters at current material point
double E = m_E(mp);
double v = m_v(mp);
// lame parameters
double lam = v*E/((1+v)*(1-2*v));
double mu = 0.5*E/(1+v);
double lam1 = lam / detF;
double mu1 = (mu - lam*log(detF)) / detF;
mat3dd I(1);
tens4ds IxI = dyad1s(I);
tens4ds I4 = dyad4s(I);
return IxI*lam1 + I4*(2*mu1);
}
\endcode
First, the data of the material point data that pertains to elastic materials is extracted. The next few lines extract some data from the FEElasticMaterialPoint variable and calculate some other parameters, similarly to the evaluation of the stress.
Next, several tensor are evaluated that are need for the material tangent. Note the use of the fourth-order tensor class tens4ds. This code snippet also illustrates the use of the dyadic products to create fourth-order tensors from second-order tensors. A more detailed explanation of the use of the tensor classes can be found in chapter 3 of the FEBio Theory Manual.
\code
mat3dd I(1);
tens4ds IxI = dyad1s(I);
tens4ds I4 = dyad4s(I);
\endcode
\subsection step2 Registering the new material
In order for FEBio to recognize the new material, the material needs to be registered with the framework. In a plugin, this is done in the PluginInitialize function, which must be provided by the user. (see \ref register for more details implementing the required functions.)
\code
FECORE_EXPORT void PluginInitialize(FECoreKernel& fecore)
{
\\ Set the kernel to match FEBio's kernel
FECoreKernel::SetInstance(&fecore);
\\ Register the classes in this plugin
REGISTER_FECORE_CLASS(MyNeoHookean, "neo-Hookean");
}
\endcode
With the new feature class registered, FEBio will be able to allocate it when referenced in the febio input file, and call the appropriate member functions when needed.
\section mat_sec2 The FEMaterialPoint class
As was shown above, the stress and tangent are evaluated at so-called material points. These are points at which the state of the deformation is tracked. Most often, these points correspond to the integration points of the elements.
The FEMaterialPoint class contains all the data that is stored at the material points. Material classes can append additional data to this class as is described below in one of the advanced topics. Here, we'll take a look at the FEMaterialPoint class itself.
The FEMaterialPoint class contains the following member variables that may be useful in the evaluation of the stress and tangent.
\li vec3d m_r0: the position of the material point in the reference frame
\li vec3d m_rt: the position of the material point in the spatial frame
Note that the jacobians, are the jacobians of the transformation from the isoparametric space to the reference or current spatial frames. (These are not the derivates of the deformation gradient!)
The FEMaterialPoint class also contains a linked list of FEMaterialPointData classes, which hold the additional data needed by specific material implementations. One particular FEMaterialPointData class that we've encountered above is the FEElasticMaterial class, which holds additional data relevant for hyperelastic materials.
The FEElasticMaterialPoint class defines the state of an elastic material point, or more precisely, the state of a material derived from the FEElasticMaterial class. It defines the following additional state variables.
\li mat3d m_F: the deformation gradient
\li double m_J: the Jacobian, that is the determinant of the deformation gradient
\li mat3ds m_s: the Cauchy stress tensor
If your material derives from FEElasticMaterial (or FEUncoupledMaterial) and no additional state data is required, you do not need to derive a new material point class. For all elastic materials this is the default material point data class to store the point data.
A note of caution on the stress member variable. Usually the stress is evaluated before the tangent, so you could use the FEElasticMaterialPoint::m_s member in the evaluation of the tangent if needed. However, it is often safer to re-evaluate the stress in the tangent function than relying on the value of m_s. In fact, it is recommended that this member variable should not be accessed when evaluating the Stress and Tangent functions.
This FEElasticMaterialPoint class also defines some useful functions that can facilitate the implementation of stress and tangent functions.
\li Strain: Calculate the Euler-Lagrange strain tensor.
\li RightCauchyGreen: Calculate the right Cauchy-Green strain tensor.
\li RightCauchyGreen: Calculate the left Cauchy-Green strain tensor.
\li DevRightCauchyGreen: Calculate the deviatoric right Cauchy-Green tensor.
\li DevLeftCauchyGreen: Calculate the deviatoric left Cauchy-Green tensor.
\li pull_back: Calculate the pull-back of a 2nd order tensor.
\li push_back: Calculates the push-back of a tensor. Two versions are defined. One for 2nd order symmetric tensors, and one for 4th order symmetric tensors.
For materials that require additional information to be stored at the material points (e.g. history-dependent materials) a new material point data class needs to be defined, by deriving from the FEMaterialPointData class.
\section mat_sec3 Using the new material class
If the steps to register the material and its material parameters have been followed as outlined in the previous sections, the material class will be seamlessly integrated in FEBio's framework. One of the important consequences of this is that the xml-input file reader will automatically recognize the new material and its parameters. For example, imagine the user created a new class MyFancyMaterial and named it "fancy material" by registering the material as follows.
\code
REGISTER_FECORE_CLASS(MyFancyMaterial, "fancy material");
\endcode
This macro associates the name "fancy material" with the MyFancyMaterial class. This name will now be used as the type identifier in the xml-input file.
\code
...
\endcode
FEBio will recognize the type identifier as the name of the MyFancyMaterial class and will create an instance of this class. For all the elements in the mesh that have the material ID of this class (in this case "1"), the stress and tangent functions of the new class will be automatically called.
Material parameters are identified in a similar way. For each material parameter, the ADD_PARAMETER macro associates a name with the parameter. For example, imagine that for our new class MyFancyMaterial the following parameter is defined,
\code
ADD_PARAMETER(m_a, "a");
\endcode
The user can now enter a value for this parameter in the FEBio input file as follows,
\code
0.123
\endcode
FEBio will now automatically read the value (here 0.123) and store it in the m_a variable which will be defined as a public member variable of the MyFancyMaterial class.
\section mat_sec4 Testing the Material Implementation
Implementing a new material formulation can be tricky sometimes. Particularly the implementation of the correct tangent stiffness is often quite challenging. For this reason, FEBio offers a few tools that can help in diagnosing a new material implementation.
First, it is highly recommended to use the available tensor classes to implement the stress and tangent stiffness of the material. These classes allow the user to stay as true as possible to the mathematical formulation, facilitating the readability of the code. Obvious mistakes, such as sign errors, will therefore be relatively easy to spot by direct comparison of the code with the mathematical equations.
\subsection tangent_diagnostic The Tangent Diagnostic
FEBio offers a tangent diagnostic tool that allows the user a more direct inspection of the tangent implementation. The tool basically compares the actual implementation of the tangent with an approximation that is obtained by calculating the finite difference of the residual. To run the diagnostic, a separate FEBio input file needs to be defined. An example for the neo-Hookean material follows.
\code
1
1
PLOT_DEFAULT
0.15
1
0.45
\endcode
The diagnostics input file also takes an xml-formatted input file and is structured similarly as the FEBio input file. The first line is the xml declaration as required by the xml standard. The next line defines the root element of the xml format. In this case, it is defined as febio_diagnostics to indicate that this file is a diagnostics file. The name attribute identifies the type of diagnostic this file describes, and in this case this is a "tangent test". Next follows the definition of the three sections of the file.
The first section, the Control section, defines some general control settings such as the number of timesteps, time step size and so on.
The second section, the Scenario section, defines the type of model and boundary conditions to apply. This section replaces the geometry section in the usual FEBio input file. The geometry is now defined implicitly through the scenario. The uni-axial scenario runs a simple uni-axial tension or compression problem on a unit cube. The maximum strain level can be defined through the strain parameter.
The third section defines the material that will be assigned to the model. In the uni-axial scenario, only one material needs to be defined with the corresponding material parameters. Note that when the material class is properly registered with the framework as explained above, no additional steps need to be taken to use the tangent diagnostics feature aside from creating the diagnostics input file for the new material.
To run the tangent diagnostic, simply type the following at the command prompt.
\code
>febio -d filename
\endcode
Note that the command option -d needs to be used instead of the usual -i to inform FEBio that you are running a diagnostics problem and not a regular model. Replace "filename" with the name of the actual input file.
This diagnostic test outputs a log file that contains the tangent stiffness as calculated from the implementation and a finite difference approximation to this tangent. It also contains the difference between these two matrices and the matrix element where the difference is largest. Although a small difference between the two matrices can be expected due to the finite difference approximation, the difference should be small, e.g. less than 0.01%. If this is not the case, there is probably a mistake in either the Stress function or in the Tangent function or both. To identify the culprit, the result of the simulation, which is reported as usual in the plot file, can be compared to a known solution (or a solution obtained in a different fashion). If the solutions correspond, then the problem most likely lies with the tangent implementation. If the solutions do not agree, then the implementation of the Cauchy stress is probably also erroneous.
\subsection secant_tangent Secant Tangent
For particularly complex constitutive models the derivation of the tangent can be a daunting task. For this reason, there is an option that evaluates the tangent using an secant approximation.
In order to use the secant tangent approximation, override the UseSecantTangent() and have it return true:
\code
bool UseSecantTangent() override { return true; }
\endcode
When this function returns true, FEBio will not call the Tangent member (which does need to be defined, but can be left empty), but instead use an approximation.
Keep in mind that the secant tangent is just an approximation and may not result in an accurate representation of the actual material tangent. The consequence of this could be poor convergence or even failure to converge. In general it is best to calculate and implement the consistent material tangent, but the secant approximation might be a good place to start.
\section mat_sec5 Advanced Topics
\subsection subsec61 Array parameters
It is possible to define an array of parameters using a single material parameter declaration. This can be done by first defining a member variable as an array in the class definition. For example, imagine that the new material class has the following variable declared.
\code
double m_a[3];
\endcode
To define the variable m_a as the storage for a material parameter, specify the size of the array as the second argument. For example,
\code
ADD_PARAMETER(m_a, 3, "a");
\endcode
In the input file, the parameter's values can then be defined using a comma-separated list. For example,
\code
0.1, 0.23, -0.73
\endcode
There is no limitation on the size of array parameters. Currently, the only types that are supported for array parameters are int and double.
\subsection subsec62 Uncoupled Materials
Incompressible materials are an important class of materials since they are dealt with in a very particular manner. FEBio assumes that such materials use a decoupled hyperelastic strain energy function.
\f[
W(\mathbf{C})=\tilde{W}(\tilde{\mathbf{C}})+U(J)
\f]
Here, \f$\mathbf{C}\f$ is the right Cauchy-Green tensor, \f$\tilde{\mathbf{C}}\f$ is the deviatoric right Cauchy-Green tensor and J is the Jacobian. Since the incompressibility constraint can sometimes be hard to enforce for these materials with the usual displacement formulation of FE, a different formulation is used. FEBio uses a three-field formulation that requires a separate integration rule for the dilatational stiffness contribution. We refer to the FEBio theory manual for a more detailed description of the theory of incompressible hyperelasticity. As a consequence of the different formulation, incompressible materials require a few changes to the basic procedure.
First, incompressible materials using a decoupled strain energy function, need to be derived from the base class FEUncoupledMaterial. An example of such a class is the FEMooneyRivlin material. This class is defined as follows.
\code
class FEMooneyRivlin : public FEUncoupledMaterial
{
// ...
};
\endcode
The second important difference relates to the calculation of the stress. For a material with an uncoupled strain energy function, the stress is given by,
\f[
\mathbf{\sigma} = p\mathbf{I}+\frac{2}{J}\text{dev}(\mathbf{\tilde{F}}\frac{\partial W}{\partial C}\mathbf{\tilde{F}}^{T})
\f]
The pressure p is calculated by FEBio. The only thing that the material class needs to implement is the second term. This must be done in the DevStress member function which is inherited from FEUncoupledMaterial. For example, for the Mooney-Rivlin material, the stress is calculated as follows.
\code
mat3ds FEMooneyRivlin::DevStress(FEMaterialPoint& mp)
{
FEElasticMaterialPoint& pt = *mp.ExtractData();
...
mat3ds T = B*(W1 + W2*I1) - B2*W2;
return T.dev()*(2.0/J);
}
\endcode
Similarly, the elasticity tensor requires a slightly different form. It can be shown that it can be decomposed as follows.
\subsection subsec63 User-defined material points
In the previous sections we touched briefly on the concept of material points. In this section we will elaborate on this important topic and discuss how it can be used to add additional material point data, e.g. for use in history-dependent materials.
A material point is a point in the material at which the state is stored. Usually these correspond to the integration points of the elements. The state of the material at this point is defined by the position, the deformation gradient, the stress and so forth.
The FEMaterialPoint class (defined in FEMaterialPoint.h) contains a linked list of classes derived from FEMaterialPointData. The linked list is populated by the materials as described below, and materials can extract particular data classes using the ExtractData member of the FEMaterialPoint class. For example, we already saw above how to extract the FEElasticMaterialPoint data.
\code
FEElasticMaterialPoint& pt = *mp.ExtractData();
\endcode
If your material requires storing additional data, then you will need to create your own material point data class. This is the case, for instance, if your material is history dependent. A visco-elastic material is a good example and we'll use it as an example.
To define additional material data, one would need to first derive a new material point class from the FEMaterialPoint data base class.
\code
class FEViscoElasticMaterialPoint : public FEMaterialPointData
{
public:
enum { MAX_TERMS = 6 };
public:
//! constructor
FEViscoElasticMaterialPoint(FEMaterialPointData* mp = nullptr);
//! copy material point data
FEMaterialPointData* Copy();
//! Initialize material point data
void Init();
//! Update material point data
void Update(const FETimeInfo& timeInfo);
//! Serialize data to archive
void Serialize(DumpStream& ar);
public:
mat3ds m_Se; //!< elastic PK2 stress
mat3ds m_Sep; //!< elastic 2nd PK stress at previous time
mat3ds m_H[MAX_TERMS]; //!< internal variables
mat3ds m_Hp[MAX_TERMS]; //!< internal variables at previous timestep
double m_alpha[MAX_TERMS]; //!< exponent of right-stretch tensor in series spring
double m_alphap[MAX_TERMS]; //!< alpha at previous time step
double m_sed; //!< elastic strain energy density
double m_sedp; //!< elastic strain energy density at previous time
};
\endcode
The class inherits from FEMaterialPointData, defines several member variables that record the material point's state, and overrides several functions. The following functions should be defined:
\li Constructor: initialize all the class' member variables.
\li Copy: return a copy of this material point class
\li Init: initialize all the class' member variables. This function is called during a model reset, and the class should reset its default state.
\li Update: This is called at the start of a new time step, and the class can use this to update its internal state.
\li Serialize: Data should be stored and retrieved when the dumpstream is being written, read respectively. This is to ensure that the material works properly with FEBio's running and cold restart capabilities.
After defining the custom material point, it needs to be allocated and appended to the data linked list of each material point that belongs to this material. Much of this is handled by the framework, but the only thing that needs to be done is override and implement the CreateMaterialPointData class in the new material class.
\code
FEMaterialPointData* CreateMaterialPointData() override;
\endcode
For the viscoelastic material example above, this function is defined in FEViscoElasticMaterial.
\code
FEMaterialPointData* FEViscoElasticMaterial::CreateMaterialPointData()
{
return new FEViscoElasticMaterialPoint(m_Base->CreateMaterialPointData());
}
\endcode
The viscoelastic material defines a property, stored in the m_Base member, which can also store material point data. Therefore, the CreateMaterialPointData of this member needs to be called. Material properties are discussed in the next section.
Finally, to use the custom material point data, just call the ExtractData member function of the FEMaterialPoint class.
\code
mat3ds FEViscoElasticMaterial::Stress(FEMaterialPoint& mp)
{
FEViscoElasticMaterialPoint& pt = *mp.ExtractData();
}
\endcode
\subsection subsec64 Material Properties
In FEBio, materials can define material properties. A material property is different in a few ways from material parameters. Most importantly, a material property is defined by a pointer to a base class. The explicit class that is allocated and assigned will not be known until runtime. For example, the biphasic material requires a "solid" material property and a "permeability" material property. But which particular solid material or permeability is needed will be decided by the user in the FEBio input file.
Consider for example the following class:
\code
class MyViscoMaterial : public FEElasticMaterial
{
public:
MyViscoMaterial(FEModel* pfem);
mat3ds Stress(FEMaterialPoint& mp);
tens4ds Tangent(FEMaterialPoint& mp);
protected:
\\ Define the solid material property
FEElasticMaterial* m_Solid;
};
\endcode
Aside from the usual stuff (constructor, stress, tangent functions), it defines a variable, named m_Solid, of type FEElasticMaterial* that represents the solid phase of the visco-elastic material.
You can now turn this variable into a property of the material by defining it in the class descriptor using the ADD_PROPERTY macro.
\code
BEGIN_FECORE_CLASS(MyViscoMaterial, FEElasticMaterial)
ADD_PROPERTY(m_Solid, "solid");
END_FECORE_CLASS();
\endcode
This adds a property with the name "solid" to the property list of the material. The name is used in the input file for defining the solid property.
A specific solid material can be created using the type attribute. A definition for this new material will look like this. (Assuming the new material was registered under the name "my_visco").
\code
1.0
0.3
\endcode
The viscoelastic material is an example of a nested material class. This is a solid material that uses other solid materials as member variables. In this case, the properties will typically variables of type FEElasticMaterial or FEUncoupledMaterial.
In general, properties can be created from most FECore base classes. For the purpose of materials, the FEMaterialProperty base class might be a good place to start, aside from nested materials. One important reason to derive material properties from this class is that is facilitates accessing the local material orientation.
For example, the permeability property of the biphasic material is defined as follows.
\code
class FEBIOMIX_API FEHydraulicPermeability : public FEMaterialProperty
{
public:
FEHydraulicPermeability(FEModel* pfem) : FEMaterialProperty(pfem) {}
//! hydraulic permeability
virtual mat3ds Permeability(FEMaterialPoint& pt) = 0;
//! tangent of hydraulic permeability with respect to strain
virtual tens4dmm Tangent_Permeability_Strain(FEMaterialPoint& mp) = 0;
//! tangent of hydraulic permeability with respect to concentration
mat3ds Tangent_Permeability_Concentration(FEMaterialPoint& mp, const int isol);
FECORE_BASE_CLASS(FEHydraulicPermeability);
};
\endcode
Note that this function is a virtual base class and the expectation is that particular permeability models are implemented in derived classes. This will be the typical case for material properties: Create an abstract base class from FEMaterialProperty, and then implement specific functionality by deriving from the abstract base class.
In order to use material properties, they need to be registered with the framework in the same way as the material classes (and other plugin classes) themselves. (i.e. using the REGISTER_FECORE_CLASS in the PluginInitialize function.)
To use a particular material property in an FEBio model, use the type attribute followed by the name that the particular property was registed with.
\code
\endcode
*/
================================================
FILE: Documentation/Doxygen/modules.dox
================================================
/**
\page modules FEBio Modules
FEBio organizes all its features in \b modules. A module in FEBio is similar to a namespace in c++ and helps in resolving ambiguities in cases where features have the same type string.
Modules collect features that logically belong together, such as features needed for solving a particular type of physics problem.
As of FEBio4, all features, including those defined in plugins, require the specification of the module to which they are added. This is typically done by setting the active module before registering the features.
\section active_mod Setting the Active Module
Setting the active module is done by calling \c FECoreKernel::SetActiveModule.
\code
FECoreKernel& fecore = FECoreKernel::GetInstance();
fecore.SetActiveModule("solid");
\endcode
Features registered after this call will be added to the active module.
As of FEBio4, the following modules are defined.
\li \b solid The solid mechanics module.
\li \b biphasic Extends the solid module and adds biphasic simulation capabilities.
\li \b solute Extends the biphasic module and adds the ability to model solutes in the solvent of a biphasic material.
\li \b multiphasic Extends the solute module by adding multiple solutes to a biphasic material, as well as chemical reactions between solutes.
\li \b fluid Fluid mechanics module.
\li \b fluid-FSI Combines the solid and fluid modules to create fluid-solid interaction modeling capabilities.
Additional modules may be available via plugins. For instance the FEBioHeat plugin adds the \b heat module for solving heat transfer analyses.
If a feature should be made available for all modules, simply set the active module to zero.
\code
fecore.SetActiveModule(nullptr);
\endcode
Features registered after this call will be available to all modules.
\section creating_mods Creating New Modules
New modules can be created in a few different ways. The easiest way is to call \c FECoreKernel::CreateModule(const char* modName).
\code
fecore.CreateModule("new module");
\endcode
The new module will automatically be set as the active module.
An optional argument can be specified that provides additional information about the module. The optional argument is a JSON structured text that allows you to provide a title, a description, author and version string.
\code
fecore.CreateModule("new module",
"{"
" \"title\" : \"A New Module\","
" \"info\" : \"A module for solving relativistic quantum-chromodynamics simulations.\""
" \"author\" : \"Inco Gnito\""
" \"version\": \"3.14\""
"}");
\endcode
Note that none of the fields in the JSON text are required.
Internally, FEBio stores a list of classes derived from FEModule that manages all the information regarding the module. Therefore, modules can also be created by deriving a new class from the FEModule base class.
\code
class MyNewModule : public FEModule
{
public:
MyNewModule() : FEModule("new module") {}
};
\endcode
The module can then be registered by instantiating the new class.
\code
fecore.CreateModule(new MyNewModule());
\endcode
\section nested_mod Nested Modules
Modules can be nested. This means that a module can inherit the features from another module, in addition, to defining its own features.
To add a module dependency to the currently active module, call FECoreKernel::AddModuleDependency.
\code
fecore.AddModuleDependency("solid");
\endcode
In this case, all features defined in the \c solid module will then be available in the currently active module.
\section use_mods Using Modules
The FEBio input file defines an FEBio model. Before the model can be constructed, the active module must be set and it must be defined as the first tag in the FEBio input file.
For example,
\code
\endcode
This makes the "biphasic" module active, and only features that belong to this module (and its dependencies) can be referenced in the input file.
*/
================================================
FILE: Documentation/Doxygen/pipeline.dox
================================================
/**
\page pipeline The FEBio Pipeline
This document describes the standard pipeline that FEBio executes when solving a model defined via the FEBio input file. To be more precise, after startup and initialization, FEBio executes a task. The default task will solve the model defined in the input file. Therefore, this document is split into two sections. First, we'll look at the execution of the startup procedure, which is independent of the selected task. Then a description of FEBio's standard solver task follows.
\section febio_startup FEBio startup
\subsection febio_main The main Function
FEBio's main function resides in the file FEBio/FEBio.cpp. It first initializes the FEBio library by calling febio::InitLibrary(), which will load all the modules. Then it parses the command line arguments. If an input file was defined on the command line (with the -i option), it will call the Run function, otherwise the FEBio interactive prompt is shown where users can enter the input file. An important difference between specifying the input file on the command line and entering it on the FEBio prompt, is that FEBio will exit after solving a model when the input file is entered on the command line. If the FEBio prompt is used, FEBio will return to the FEBio prompt after solving a model. In either case, the Run function is called to solve the model.
\subsection febio_run the Run Function
To solve a model (or any task) FEBio calls the Run function, which can be found in FEBio/FEBio.cpp. The step it executes are:
1. Create an instance of an FEBioModel class.
2. Call the Input member of the FEBioModel class to read the input file.
3. Create a task to execute.
4. Run the task by calling the Run member of the task class.
The task that is executed is specified on the command line. If no task is specified, the default task, which is implemented in the FEBioStdSolver class, will be created. This task will simply call the Solve method of the FEModel class, which solves the model.
Regardless of the task, usually at some point the FE problem must be solved. This is done by calling the FEModel::Solve member. Note that the FEBio library defines a derived class, called FEBioModel, which is responsible for all the input and output file management. The FEModel::Solve function is discussed in the next section.
\section solver Solving the FE model
\subsection femodel_solve The FEModel::Solve method
The FEModel::Solve method is called whenever the finite element model, defined in the FEModel class, needs to be solved.
In FEBio, a finite element model is defined at the highest level as a sequence of analyses steps. Each analysis, implemented as an instance of the FEAnalysis class, defines what exactly will be solved for, and what boundary conditions and loads will be applied during that step. The FEModel::Solve function simply loops over all the analyis steps defined in the model and executes them one by one. Execution of an analysis proceeds in three steps:
1. Step activation: allow the step to initialize itself prior to execution.
2. Solve the step: call the FEAnalysis::Solve method to solve the analysis
3. Step deactivation: allow the step to clean up after itself.
\subsection feanalysis_solve The FEAnalysis::Solve method
The FEAnalys::Solve method executes the time stepping loop. The time steps are incremented in either fixed time increments or variable increments, depending on whether the auto-time stepper is enabled or not.
For each time step, the analysis class will call the FESolver::SolveStep method. The FESolver is an abstract base class, and classes that implement different types of FE solvers are derived from this class. What particular solver was assigned to the analysis will depend on the type of analysis that is defined in the input file. This is essentially determined by the Module tag of the input file.
*/
================================================
FILE: Documentation/Doxygen/plugin_basics.dox
================================================
/**
\page plugin_basics Plugin Basics
Plugins are a powerful mechanism for extending FEBio's basic feature set. A plugin is a dynamically linked library that can be loaded by FEBio at runtime. Plugins are typically build and maintained separately from the FEBio source code.
Plugins can be used to develop new constitutive models, boundary conditions, loads, and other model components. They can be used to extend the xplot database (i.e. plotfile), and log files, and can be used to couple FEBio to other codes.
Select one of the links below to learn more about a particular aspect
of plugin development.
\li \subpage building_a_plugin
\li \subpage required_functions
\li \subpage register
Once you're done developing a plugin, check out the following article that details how to use plugins in FEBio.
\li \subpage using_plugins
*/
================================================
FILE: Documentation/Doxygen/plugin_bc.dox
================================================
/**
\page plugin_bc Boundary Condition Plugin
Boundary condition plugins can be developed for applying special boundary conditions that might be difficult to achieve using the regular boundary condition options.
There are two possible starting points for BC plugins: FEPrescribedNodeset can be used as a base class if the BC can be applied directly to a set of nodes. Alternatively, FEPrescribedSurface if the BC is prescribed more naturally on a surface (e.g. if the prescribed value relates to the surface normal). In either case, since FEBio requires the nodal prescribed values, the plugin class will need to be able to return the desired prescribed value for a particular nodal degree of freedom.
\section sec_bc_node Prescribed Nodesets
For directly prescribing the values of nodal degrees of freedom, create a new class from FEPrescribedNodeSet and override the GetNodelValues function.
\code
class MyBC : public FEPrescribedNodeSet
{
public:
MyBC(FEModel* fem) : FEPrescribedNodeSet(fem){}
void GetNodalValues(int lid, std::vector& val) override;
};
\endcode
The \c GetNodalValues takes two parameters:
\li int : The local index into the node set associated with this bc.
\li std::vector& : return value with the values of the prescribed nodal degrees of freedom.
\section sec_bc_surf Prescribed Surface
Instead of a nodeset, boundary conditions can also be applied to surfaces. This allows plugin classes to use other information, e.g. surface normals, to define the nodal values. However, just like the node set approach above, the boundary condition derived from FEPrescribedSurface should also implement the GetNodalValues function.
\code
class MySurfBC : public FEPrescribedSurface
{
public:
MySurfBC(FEModel* fem) : FEPrescribedSurface(fem){}
void GetNodalValues(int lid, std::vector& val) override;
};
\endcode
In this case, the lid parameter is the local node index of the nodes of the surface.
*/
================================================
FILE: Documentation/Doxygen/plugin_cast.dox
================================================
/**
\page plugin_cast Using dynamic_cast in plugins
Care must be taken when using dynamic_cast inside plugins to cast a FECore base class to a derived class if the base class was allocated in FEBio (and not in the plugin).
This is the case for instance when creating plot fields for domains, where FEBio only gives you the FEDomain base class. Access to certain types of data is not possible
via the base class and a cast is necessary to convert to the correct domain class.
The problem is that a dynamic_cast does not always work across the dll boundary and usually will result in an incorrect case (usually NULL, but don't rely on that).
Basically a dynamic cast across the dll boundary is undefined.
Instead of using a dynamic_cast, use other mechanisms of inferring the correct derived type and then use a static_cast.
Unfortunately, often a dynamic_cast cannot be avoided. For instance, dynamic_casts are used by FEBio to extract specific material point data. If the plugin
defines a new material point class, accessing this material point data via the ExtractData member may not work.
The only alternative in this case is to ensure that dynamic_casts work correctly across the dll boundary. That can only be assured if both FEBio and the plugin
use the same c-runtime library. Under Windows this can be accomplished if the plugin is built with the same version of Microsoft Visual Studio as FEBio itself and
if the plugin uses the Multi-threaded DLL runtime library (Properties->Configuration Properties->C/C++->Code Generation->Runtime Library). On Linux and Mac this
has proven to be more challenging, but it is possible.
*/
================================================
FILE: Documentation/Doxygen/plugin_datagenerator.dox
================================================
/**
\page plugin_datagenerator Data Generator Plugins
Several model components can make use of maps to make their parameters depend on the position (e.g. materials, boundary conditions, loads). The maps are defined over different mesh partitions (e.g. nodesets, surfaces, domains) and are used to assign different values to different nodes or elements of the mesh. The map's values can be defined explicitly (e.g. as a tabulated list in the input file), or alternatively can be generated programatically using data generators.
The advantage of using data generators to generate the map's value is twofold: 1) It can reduce the size of input files considerably since the values are generated programatically, and 2) allows dynamic changes to map as the model evolves in time.
The following sections describe how to create data generators for specific mesh partitions.
\section node_gen Node data generators
Node data generators generate data for node sets and thus can be used by model components that are typically defined on node sets, such as prescribed displacements and nodal loads.
Node data generators inherit from the FENodeDataGenerator base class.
\code
class MyDataGenerator : public FENodeDataGenerator
{
public:
MyDataGenerator(FEModel* fem) : FENodeDataGenerator(fem){}
// implement this function
FENodeDataMap* Generate();
};
\endcode
The main function to implement is the \c Generate member. This member creates and returns the node data map.
\code
FENodeDataMap* MyDataGenerator::Generate()
{
FENodeDataMap* map = new FENodeDataMap(FEDataType::FE_DOUBLE);
FENodeSet* nodeSet = GetNodeSet();
map->Create(nodeSet);
map->fillValue(0.0);
return map;
}
\endcode
\section surf_gen Surface data generators
Surface data generators generate data for surfaces and can be used by model components that are typically defined on surfaces, such as surface loads.
Surface data generators inherit from the FEFaceDataGenerator base class.
\section elem_gen Element data generators
Element data generators generate data for domains and can be used by model components that are typically defined on domains, such as materials or body loads.
Element data generators inherit from the FEElemDataGenerator base class.
\code
class MyElemDataGenerator : public FEElemDataGenerator
{
public:
MyElemDataGenerator(FEModel* fem) : FEElemDataGenerator(fem){}
FEDomainMap* Generate() override;
}
\endcode
The \c Generate class member creates and returns the FEDomainMap.
\code
FEDomainMap* MyElemDataGenerator::Generate()
{
FEElementSet* elset = GetElementSet();
if (elset == nullptr) return nullptr;
FEDomainMap* map = new FEDomainMap(FEDataType::FE_DOUBLE, Storage_Fmt::FMT_MATPOINTS);
map->Create(elset);
map->fillValue(0.0);
return map;
}
\endcode
*/
================================================
FILE: Documentation/Doxygen/plugin_lc.dox
================================================
/**
\page plugin_lc Load controller Plugin
In FEBio, load controllers are used to manipulate the value of parameters in time. An example of a load controller is the load curve, which defines a function of time by interpolating between (time,value) pairs. Several other examples of load controllers are implemented in FEBio that provide different ways to modify parameter values as function of time. Users can create custom load controllers via a load controller plugin.
To create a load controller plugin, follow the following steps.
1. Derive a new class from FELoadController.
2. Implement the constructor and override the GetValue(double) function.
3. Register the plugin class.
\section sec1 Create load controller class
A load controller class should be derived from the FELoadController base class.
As an example, we'll build a load controller that toggles between two values after a particular duration.
\code
class MyLoadController : public FELoadController
{
public:
// constructor
MyLoadController(FEModel* fem);
// initialization (optional)
bool Init() override;
protected:
// required override
double GetValue(double currentTime) override;
private:
double m_val0;
double m_val1;
double m_duration;
DECLARE_FECORE_CLASS();
}
\endcode
If the load controller defines parameters that should be specified in the input file, the class needs to have the DECLARE_FECORE_CLASS macro.
\section sec2 Implement class functions
The contructor passes the FEModel pointer to the base class and initializes the parameters.
\code
MyLoadController::MyLoadController(FEModel* fem) : FELoadController(fem)
{
m_val0 = 0.0;
m_val1 = 1.0;
m_duration = 1.0;
}
\endcode
The Init function is not required, but can be helpful for initialization and validation of the parameters. Make sure to call the base class as well.
\code
bool MyLoadController::Init()
{
// add initialization here
// call base class
return FELoadController::Init();
}
\endcode
The GetValue(double) function evaluates the load controller and should return the value of the load controller at the particular time.
\code
double MyLoadController::GetValue(double currentTime)
{
return (currentTime > m_duration ? m_val1 : m_val0);
}
\endcode
\section sec3 Register the plugin
First, define the class parameters that will be exposed to the framework. To allows the class parameters to be recognized, for instance, by the FEBio input file reader.
\code
BEGIN_FECORE_CLASS(MyLoadController, FELoadController)
ADD_PARAMETER(m_val0, "val0");
ADD_PARAMETER(m_val1, "val1");
ADD_PARAMETER(m_duration, "duration");
END_FECORE_CLASS();
\endcode
Next, register the class in the PluginInitialize() function of the plugin.
\code
REGISTER_FECORE_CLASS(MyLoadController, "toggle");
\endcode
\section sec4 Using the load controller
Load controllers are defined in the LoadData section of the FEBio input file. The \c type attribute defines which load controller will be allocated.
\code
0.0
1.0
3.14
\endcode
The load controller can be assigned to any valid model parameter in the usual way with the "lc" attribute.
*/
================================================
FILE: Documentation/Doxygen/plugin_log.dox
================================================
/**
\page plugin_log Accessing the FEBio Log file
By default FEBio writes all output to a log file. More precisely, it uses the Logfile class which writes to both the standard output as well as to a file. FEBio also
provides special macros that can be used to write to the log file, whithout the need to know the specifics of how the logging mechanism works.
In order to access the FEBio log file, you must call the FECoreKernel::SetInstance during the PluginInitialize function.
\code
FECORE_EXPORT void PluginInitialize(FECoreKernel& febio)
{
FECoreKernel::SetInstance(&febio);
}
\endcode
This ensures that the plugin and FEBio use the same kernel and consequently the same resources (e.g. the logfile).
Writing to the logfile can be done by including the file and using the log macros.
\code
#include
\endcode
It is important to understand that a log file is associated with each model.
For classes derived from FECoreBase, you can use the following macros in any member function.
The feLog macro works just like the c printf function and can be used to write formatted text to the screen and the log file.
\code
feLog("A negative Jacobian was detected at integration point %d of element %d", 1, 123);
\endcode
For producing a warning or an error message, you can use the following two macros. The message will be shown in a box with a title.
\code
feLogInfo("This will print a message to the screen.");
feLogWarning("This will print a warning to the screen.");
feLogError("This will print an error message to the screen.");
\endcode
For debugging, you can use the feLogDebug function. This will only print to the output when the user runs a model in debug mode (e.g. -g was added as a command line option.)
\code
feLogDebug("A debug message is written only when the user runs in debug mode.")
\endcode
For classes that do not inherit from FECoreBase, or in non-member functions, you must use the extended macros, which take a pointer to the FEModel as its first argument.
\code
FEModel* fem;
FELogEx(fem, "So far, things are looking good.");
FELogDebugEx(fem, "Hmm, should this happen?");
FELogWarningEx(fem, "Oh oh, that shouldn't happen.");
FELogErrorEx(fem, "Exit the building! Now!!");
\endcode
*/
================================================
FILE: Documentation/Doxygen/plugin_logdata.dox
================================================
/**
\page plugin_logdata Log Data Plugin
Log data is written to the FEBio log file, or optionally to a separate text file. Plugins can extend the type of log data that can be exported from FEBio.
\section nodal_log Nodal Log Data
To export data for individual nodes, derive a class from FELogNodeData and implement the \c value virtual member function.
\code
class MyNodeLogData : public FELogNodeData
{
public:
MyNodeLogData(FEModel* fem) : FELogNodeData(fem) {}
double value(const FENode& node) override
{
// calculate something for this node
double val;
return val;
}
}
\endcode
\section elem_log Element Log Data
To export data for individual elements, derive a class from FELogElemData and implement the \c value virtual member function.
\code
class MyElemLogData : public FELogElemData
{
public:
MyElemLogData(FEModel* fem) : FELogElemData(fem) {}
double value(FEElement& el) override
{
// calculate something for this element
double val;
return val;
}
}
\endcode
Note that only a single value for each element can be returned. Since element data is often stored at integration points, FEBio usually returns the element average. The following example illustrates how to calculate an element average value.
\code
double MyElemLogData::value(FEElement& el)
{
double avg = 0.0;
int nint = el.GaussPoints();
for (int i=0; iResidual: calculate the contribution to the model's residual.
\li StiffnessMatrix : Calculate the contribution to the model's stiffness matrix.
\li Augment : Update Lagrange multipliers and determine convergence
\li BuildMatrixProfile : Must be implemented if the nonlinear constraint generates nonzero entries in the stiffness matrix that would otherwise not exist.
These functions are described in more detail below.
\section nlc_residual The Residual function
The Residual function implements the contribution to the model's residual, which in FEBio is defined as the difference between the internal forces (e.g. stresses), and external forces.
The function definition has two parameters.
\li FEGlobalVector : the vector that stores the residual.
\li FETimeInfo : information of the current time point.
Once the contributions to the residual are calculated, they can be assembled in the residual vector via FEGlobalVector::Assemble.
\section nlc_stiffness The StiffnessMatrix function
The StiffnessMatrix function implements the contribution to the model's global stiffness matrix. This function takes two parameters.
\li FESolver : The solver that is calling this funcion. This is used mostly for assembling.
\li FETimeInfo : information of the current time point.
Contributions to the global stiffness matrix are added by calling one of the Assemble members of the FESolver class.
\section nlc_augment The Augment function
As mentioned above, FEBio implements the augmented Lagrangian method for enforcing nonlinear constraints. This means that during the Newton iterations the (approximate) Lagrange multipliers are held constant. After the Newton iteration converges, each nonlinear constraint gets a chance to update the Lagrange multipliers and determine whether they converged. This is done in the Augment function. This function takes two parameters:
\li int naug : The augmentation number
\li FETimeInto& tp : information on the current time point
The return value, a boolean, should indicate whether the Lagrange multipliers have converged or not.
\section nlc_matrix The BuildMatrixProfile function
Since the global matrix is usually sparse in a finite-element analysis, FEBio only allocates the nonzero entries of the matrix. It does this by inspecting the connectivity of the mesh. However, nonlinear constraints can sometimes couple additional degrees of freedom that are not directly connected in the mesh. For instance, consider a constraint that forces two nodes to remain equidistance (this is implemented in FEBio in the FEDistanceConstraint). If the two nodes do not belong to the same element, the constraint will generate nonzero entries for the stiffness matrix that would otherwise not exist. In this situation, the nonlinear constraint must implement the BuildMatrixProfile method and add the nonzero matrix elements to the profile.
*/
================================================
FILE: Documentation/Doxygen/plugin_plotdata.dox
================================================
/**
\page plugin_plot Plot Data Plugin
With a PlotData plugin a new plot field can be defined for the xplt plot file. This allows users to customize the output generated by FEBio in an easy manner.
Data can be stored in the plot file using several data formats and storage formats. The data format refers to the type of data that is being stored.
The following values are allowed:
\li PLT_FLOAT : single floating point (s.f.p.) number
\li PLT_VEC3F : three s.f.p. numbers representing a 3D vector
\li PLT_MAT3FS : six s.f.p. numbers representing a 3D second order symmetric matrix (order is xx, yy, zz, xy, yz, xz).
\li PLT_MAT3FD : three s.f.p. numbers representing a 3D diagonal matrix (order is xx, yy, zz)
\li PLT_MAT3F : nine s.f.p. numbers representing a 3D matrix (order is xx, xy, xz, yx, yy, yz, zx, zy, zz)
The storage format defines who many data items are stored.
\li FMT_NODE : one value for each node
\li FMT_ITEM : one value for each item (i.e. element or facet)
\li FMT_MULT : one value for each node of each item.
\li FMT_REGION : one value for the entire region.
\li FMT_MATPOINTS : one value per integration point.
Note that for nodal data the storage format makes no difference and all formats results in a single value per node.
The FMT_MATPOINTS storage mode only applies to element data.
There are several classes of plot data currently defined:
\li Nodal plot data: Store a value for each node of the mesh
\li Element plot data: store data on elements of domains
\li Surface facet plot data: Store data on facets of surfaces
\section node_data Nodal Plot Data
To create a nodal plot data field, derive a new class from FEPlotNodeData and implement the \c Save member function. Note that the constructor of the FEPlotNodeData class
requires the data format and storage format. For nodal data the storage format is irrelevant since for nodal data one value per node is expected.
\code
#include
class MyNodeData : public FEPlotNodeData
{
public:
MyNodeData(FEModel* fem) : FEPlotNodeData(fem, PLT_FLOAT, FMT_NODE){}
bool Save(FEMesh& m, FEDataStream& a);
};
\endcode
The \c Save function takes the \c FEMesh as a parameter and FEDataStream reference.
\code
bool MyNodeData::Save(FEMesh& m, FEDataStream& a)
{
int N = m.Nodes();
for (int i=0; i
class MyElementData : public FEPlotDomainData
{
public:
MyElementData(FEModel* fem) : FEPlotDomainData(fem, PLT_FLOAT, FMT_ITEM){}
bool Save(FEDomain& dom, FEDataStream& a);
};
\endcode
The \c Save member function takes the FEDomain class and a FEDataStream as parameters. The domain references the current domain for which data is being stored. A cast may be necessary to convert the FEDomain base class to the correct domain class.
\code
class MyElementData::Save(FEDomain& dom, FEDataStream& a)
{
int NE = dom.Elements();
for (int i=0; i void writeAverageElementValue(FEMeshPartition& dom, FEDataStream& ar, std::function fnc)
\endcode
For example, this can be used to write the stress to the plot file follows.
\code
bool FEPlotElementStress::Save(FEDomain& dom, FEDataStream& a)
{
writeAverageElementValue(dom, a, [](const FEMaterialPoint& mp) {
const FEElasticMaterialPoint& ep = *mp.ExtractData< FEElasticMaterialPoint>();
return ep.m_s;
});
return true;
}
\endcode
\section face_data Facet Plot Data
To create a surface facet plot field, create a new class from FEPlotSurfaceData.
\code
#include
class MySurfaceData : public FEPlotSurfaceData
{
public:
MySurfaceData(FEModel* fem) : FEPlotSurfaceData(fem, PLT_FLOAT, FMT_ITEM){}
bool Save(FESurface& s, FEDataStream& a);
};
\endcode
The \c Save member function takes the FESurface class and a FEDataStream as parameters. The FESurface references the current surface for which data is being stored.
\code
class MySurfaceData::Save(FESurface& s, FEDataStream& a)
{
int NE = s.Elements();
for (int i=0; iFELinearSolver: base class for models that result in a linear set of equations
\li FENewtonSolver : base class for models that result in a nonlinear set of equations
\section solver_sec2 The FELinearSolver base class
This base class can be used to develop solvers that result in a linear system of equations.
\code
class MyLinearSolver : public FELinearSolver
{
public:
MyLinearSolver(FEModel* fem);
bool InitEquations();
void ForceVector(FEGlobalVector& R);
bool StiffnessMatrix(FELinearSystem& K);
};
\endcode
Four functions must be implemented.
\subsection The Constructor
The construct of the solver class needs to define the solution variable and degrees of freedom that this solver uses.
\code
MyLinearSolver::MyLinearSolver(FEModel* fem) : FELinearSolver(fem)
{
// define the solution variable that this solver will use
DOFS& dofs = fem->GetDOFS();
int varT = dofs.AddVariable("temperature");
dofs.SetDOFName(varT, 0, "T");
}
\endcode
The DOFS structure manages all the variables and degrees of freedom that are defined for the FEModel. A variable can manage
multiple degrees of freedom (e.g. a displacement variable can have an x, y, and z degree of freedom). Each degree of freedom can be
given a symbol using the DOFS::SetDOFName method. This symbol will be used in the FEBio input file to reference that degree of freedom
(e.g. in a fixed or prescribed bc).
\subsection InitEquations
The InitEquations function is called to assign equation numbers to the degrees of freedom.
\code
bool MyLinearSolver::InitEquations()
{
int dof_T = GetFEModel().GetDOFIndex("T");
vector dof;
dof.push_back(dof_T);
SetDOF(dof_T);
return FELinearSolver::InitEquations();
}
\endcode
The base class FELinearSolver does most of the work, but the solver needs to set which degrees of freedom will be solved for with
the FELinearSolver::SetDOF function.
\subsection ForceVector
This function is called by the base class whenever the right-hand side must be evaluated. The solver must implement all the terms that
contribute to the right-hand side vector of the model.
\code
void FEHeatSolver::ForceVector(FEGlobalVector& R)
{
// implement terms that contribute to right-hand side vector
}
\endcode
The parameter that is passed by this function is an object of type FEGlobalVector that represents the right-hand side vector. It also offers
methods for assembling element force vectors into the global vector.
\subsection StiffnessMatrix
This function is called by the base class whenever the stiffness matrix must be evaluated. The solver must implement all the terms that
contribute to the stiffness matrix of the model.
\code
bool FEHeatSolver::StiffnessMatrix(FELinearSystem& K)
{
// implement terms that contribute to the stiffness matrix
}
\endcode
The parameter that is passed by this function is an object of type FELinearSystem that represents the linear system of equations. It also offers
methods for assembling element quantities.
\section solver_sec3 Custom Material class
The material parameters that the solver class uses will be implemented in a new material class.
\code
class MyMaterial : public FEMaterial
{
public:
MyMaterial(FEModel* fem);
DECLARE_PARAMETER_LIST();
};
\endcode
See the section on Material plugins for more information on defining custom materials.
\section solver_sec4 Custom Domain class
A domain is a partiation of the mesh that will be used by the solver to solve the model on. Usually, the domain class is responsible for implementing
the terms that contribute to the stiffness and force vector. It should also store a pointer to the material that it uses.
\code
class MyDomain : public FESolidDomain
{
public:
MyDomain(FEModel* fem);
void SetMaterial(FEMaterial* mat);
bool Initialize();
void Update(const FETimeInfo& tp);
private:
MyMaterial* m_mat;
};
\endcode
\subsection Domain Initialization
Although the solver sets the solution variable and degrees of freedom, the domain decides which degrees of freedom are active within that domain.
\code
bool MyDomain::Initialize()
{
if (FESolidDomain::Initialize() == false) return false;
vector dof;
dof.push_back(GetFEModel().GetDOFIndex("T"));
SetDOF(dof);
return true;
}
\endcode
*/
================================================
FILE: Documentation/Doxygen/plugin_upgrade3.dox
================================================
/**
\page plugin_upgrade3 Upgrading plugins to FEBio 3.0
This document describes important details for upgrading a plugin that was designed for FEBio2 to FEBio3.
Parameter declaration
---------------------
\li DECLARE_PARAMETER_LIST must be replaced with DECLARE_FECORE_CLASS
\li BEGIN_PARAMETER_LIST must be replaced with BEGIN_FECORE_CLASS
\li END_PARAMETER_LIST must be replaced with END_FECORE_CLASS
\li Type specification in ADD_PARAMETER is no longer necessary
\li ADD_PARAMETER2 no longer exsists. ADD_PARAMETER must be used for all parameter declarations.
Property declaration
--------------------
\li Properties are now defined in the BEGIN_FECORE_CLASS/END_FECORE_CLASS using the ADD_PROPERTY macro.
\li Properties can be declared using pointer syntax and no longer require the FEPropertyT template declaration.
Class registration
------------------
\li Factory approach for registering plugin classes is deprecated. Use REGISTER_FECORE_CLASS instead in the PluginInitialize function.
Plot classes
------------
\li Base class for plot variables are now FEPlotDomainData (instead of FEDomainData)
\li Base class requires passing FEModel pointer
Miscellaneous
-------------
\li SetLocalCoordinateSystem is no longer available since material axes are defined via the new framework for specifying heterogeneous properties.
\li FECoreBase::GetFEModel() returns FEModel*.
\li Stiffness matrix assembly should be done via FELinearSystem class.
\li Use FEElementMatrix for creating element stiffness matrix.
\li FEModel needs to be acquired with GetFEModel() (base class variable m_fem is private)
\li log mechanism was changed.
*/
================================================
FILE: Documentation/Doxygen/plugin_upgrade4.dox
================================================
/**
\page plugin_upgrade4 Upgrading plugins to FEBio 4.0
This document describes important details for upgrading a plugin that was designed for FEBio3 to FEBio4.
Material Point Data
---------------------
In FEBio3, custom material point classes were derived from FEMaterialPoint. However, this resulted in every derived class inheriting the FEMaterialPoint member variables (e.g. m_r0), which is inefficient and can lead to confusion. For this reason, the material point is separated from the material point data needed by material classes. Now, the FEMaterialPoint class stores a list to classes derived from FEMaterialPointData. Custom material point data classes should be derived from \c FEMaterialPointData instead of \c FEMaterialPoint.
If your material plugin defined a custom material point, you need to change the base class from FEMaterialPoint to FEMaterialPointData .
*/
================================================
FILE: Documentation/Doxygen/plugins.dox
================================================
/**
\page plugins FEBio Plugins
Introduction
------------
FEBio has a plugin mechanism that allows users to add new capabilities to FEBio without changing or recompiling the source code. This makes it easy to implement new features, such as constitutive models, boundary conditions, loads, plot variables, and even couple FEBio to other codes.
Plugin documentation
--------------------
If you are new to FEBio plugins, it is recommended to checkout the following link first, which introduces the basics of developing and using plugins in FEBio.
\li \subpage plugin_basics
If you are looking for information about a particular type of plugin, choose one of the following links.
\li \subpage material
\li \subpage plugin_bc
\li \subpage plugin_plot
\li \subpage plugin_logdata
\li \subpage cb_plugin
\li \subpage task
\li \subpage plugin_solver
\li \subpage plugin_nlc
\li \subpage plugin_lc
\li \subpage plugin_datagenerator
Advanced topics
---------------
The following articles discuss some advanced topics related to the FEBio plugin framework. Please select one of the following links to learn more about a particular topic.
\li \subpage plugin_log
\li \subpage plugin_cast
\li \subpage plugin_upgrade3
\li \subpage plugin_upgrade4
*/
================================================
FILE: Documentation/Doxygen/register.dox
================================================
/**
\page register Registering Plugin Classes
Before a plugin class can be recognized by FEBio it must be registered with the framework. Registration is done in the PluginInitialize function, which is one of the required functions.
First, make sure to include any header files for the plugin classes at the top of the file.
\section init_plugin Using PluginInitialize
The PluginInitialize is one of the required functions and will be called by FEBio after it loads the plugin file. In this function a plugin can allocate and initialize any resources it may need. In this function the plugin classes can be registered using the REGISTER_FECORE_CLASS macro. However, before this macro is used it is important to:
1. call FECoreKernel::SetInstance with the parameter that is passed to PluginInitialize.
2. set the active physics module.
The following code excerpt presents an example of PluginInitialize.
\code
FECORE_EXPORT void PluginInitialize(FECoreKernel& fecore)
{
// Set the kernel to match FEBio's kernel
FECoreKernel::SetInstance(&fecore);
// set the active module to which to add this new feature
fecore.SetActiveModule("solid");
// Register the classes in this plugin
REGISTER_FECORE_CLASS(MyMaterial, "My material");
}
\endcode
The first call the FECoreKernel::SetInstance is important to make sure that the plugin and FEBio are using the same kernel.
Then, the active module is set by calling \c fecore.SetActiveModule. This function takes the name of the module as an argument. Please see \ref modules for more information on modules in FEBio.
The macro REGISTER_FECORE_CLASS takes two parameters. The first parameter is the name of the c++ plugin class (here, MyMaterial). The second parameter is a name that will be used to represent this class in the FEBio input file (i.e. the value for the type attribute).
*/
================================================
FILE: Documentation/Doxygen/required_functions.dox
================================================
/**
\page required_functions Writing a plugin
After you created a new plugin project, it is time to start writing the plugin code. There are two parts to this: writing the required functions that are common to all plugins, and write the code that is specific to type of plugin you wish to create. This page details the required functions that FEBio needs to interact with your plugin.
Add a new cpp file to your project. (A good name for this file would be the project's name.) Then, add the following include file to the top of your source file. (If you are using precompiled header files, make sure the precompiled header file (e.g. pch.h) is the first included file.)
\code
#include
\endcode
This will include all the features of the FEBio kernel that you need to register your plugin with the FEBio framework.
In addition, you will add any include files for plugin classes that are defined in the plugin.
The following functions need to be defined in the plugin and are needed for plugin registration, initialization, and cleanup.
1. GetSDKVersion : Returns the version of the SDK library that is used by this plugin.
2. GetPluginVersion : Return the version number of plugin.
3. PluginInitialize : Place for initializing plugin data
4. PluginCleanup : Place for releasing any resources allocated by the plugin.
Although these functions are referred to as the required functions, only the GetSDKVersion and PluginInitialize are really mandatory. The other ones only need to be defined if they are actually used.
\section GetSDKVersion
This function returns the version number of the SDK that was used to build the plugin. When loading the plugin, FEBio will check this number to see if the plugin is compatible with the FEBio version that is trying to load the plugin. This function needs to return the FE_SDK_VERSION macro which is defined in the file FECore\version.h
\code
FECORE_EXPORT unsigned int GetSDKVersion()
{
return FE_SDK_VERSION;
}
\endcode
FEBio will not load the plugin if this function is omitted or if the returned version number is incompatible with the version of FEBio that is trying to load the plugin.
\section GetPluginVersion
You can define a verion number for your plugin by implementing the optional function GetPluginVersion.
\code
FECORE_EXPORT void GetPluginVersion(int& major, int& minor, int& patch)
{
major = 1;
minor = 0;
patch = 3;
}
\endcode
FEBio prints these numbers to the screen when the plugin is loaded.
\section PluginInitialize
This function will be the first function called by FEBio and can be used to allocate and initialize plugin data. It is also recommended to call the SetInstance function as in the example below.
\code
FECORE_EXPORT void PluginInitialize(FECoreKernel& febio)
{
FECoreKernel::SetInstance(&febio);
// TODO: register your plugin classes here
}
\endcode
This function takes one parameter, a reference to the kernel object. This object is used for accessing the resources managed by this class.
This is also a good place to allocate any resources that the plugin may need. The call to SetInstance ensures
that the plugin uses the same kernel object as the FEBio executable.
The rest of this function typically registers the plugin classes with the framework (see \ref register).
\section PluginCleanup
This function will be called when FEBio terminates and can be used to deallocate resources.
\code
FECORE_EXPORT void PluginCleanup()
{
// Clean up plugin resources
}
\endcode
*/
================================================
FILE: Documentation/Doxygen/restart.dox
================================================
/**
\page restart Restart Capabilities
FEBio has several mechanism for restarting a problem. The "running restart" capability allows the model to recover from an otherwise fatal error during runtime and restart
from the last converged state. The "cold restart" allows the user to restart an analysis using a restart file. Again, the analysis will restart from the last converged state (for which a dump file was created).
The "reset" feature allows a user to reset all data and restart the analysis from scratch. The following sections describe these features in more detail.
\section restart_sec1 Running Restart
The running restart feature allows the analysis to recover from a potentially fatal error. In FEBio, the most common error that triggers a running restart is
an inverted element. Since in this case the solution has become non-physical, FEBio cannot continue and attempts to do a running restart. The analysis will
restart from the last converged time step and the time step size will be reduced in the hope that the analysis can proceed.
The way this works in FEBio is as follows. At the beginning of a time step, the current state of the model is backed up using FEModel::PushState. This places
the current state on a stack. This function in turn calls FEModel::ShallowCopy which will call the ShallowCopy function of all the model components.
Although most of this is taken care of by the framework, in some cases a new class should implement the ShallowCopy member function. This is the case if the class
stores data that describes the state of the model, and that cannot be calculated by re-evaluating the model state at the previous time step. History variables
for material classes is such as example. The Lagrange multipliers for non-linear constraints and contact data is another example.
\section restart_sec2 Cold Restart
The cold restart feature allows an analysis to restart from a restart file. The file can simply define the state of the model at the last converged timestep
or modify certain analysis parameters prior to restarting from the last converged time step. This feature is useful for restarting a model after a program or
system crash.
In FEBio this feature is implemented using the Serialize() member function. Data serialization is explained in more depth in another \ref serialize "technical page".
\section restart_sec3 Model Reset
The model reset allows the user to reset the model to the initial configuration prior to running the model.
This feature is used in FEBio by the optimization module, which resets the model at the beginning of each optimization iteration.
*/
================================================
FILE: Documentation/Doxygen/serialize.dox
================================================
/**
\page serialize Data Serialization
Data serialization refers to the process of reading and writing class data to or from an external file. This feature is used for the restart capabilities, that
allows an analysis to restart from a previous state.
Most aspects of serialization is taken care of by the framework, however in some cases a class needs to implement additional support by implementing the \c Serialize member.
This function takes a single parameter, namely the dump stream.
\code
void MyClass::Serialize(DumpStream& ar)
{
if (ar.IsSaving())
{
// write data using the << operator
}
else
{
// read data using the >> operator
}
}
\endcode
Data is written to the dump stream using the << operators (just like when using std::cout). Data is read from the dump file using the >> operators (just like using std::cin). Note that it is important that data is read in the same order as it was written.
Alternatively, you can use the ampersand operator (&), which will write on saving and read on loading.
For instance, consider a class, MyClass, that defines two parameters, m_a and m_b. You can serialize using either the explicit read and write operators.
\code
void MyClass::Serialize(DumpStream& ar)
{
if (ar.IsSaving())
{
ar << m_a << m_b;
}
else
{
ar >> m_a >> m_b;
}
}
\endcode
Alternatively, the following code is equivalent.
\code
void MyClass::Serialize(DumpStream& ar)
{
ar & m_a & m_b;
}
\endcode
\section ser_sec1 Shallow vs Deep Serialization
The serialization is used during running restarts and cold restarts. A running restart happens when a time step fails and the model's state needs to be restored to the last converged time step so that a new time step size can be tried. A cold restart happens when a model is restarted from a dump file (or restart input file).
During a running restart, not all of the model data needs to be serialized. (For instance, initial nodal coordinates, constant material parameter, and other values that do not change during the solution process.) In this case, only a "shallow" copy of the model needs to be stored to the dumpstream. This is in contrast to the cold restart, when a "deep" copy needs to be read, since all model parameters need to be restored from the dumpstream.
You can check whether a shallow or deep copy needs to be serialized using the \c DumpStream::IsShallow function. For instance, the following code illustrates how to serialize data for cold restarts.
\code
void MyClass::Serialize(DumpStream& ar)
{
if (ar.IsShallow() == false)
{
ar & m_a & m_b;
}
}
\endcode
*/
================================================
FILE: Documentation/Doxygen/task.dox
================================================
/**
\page task Task Plugins
In this section we will look at the details of creating a task plugin. A task executes the main loop in FEBio. For example, the default task simply calls the FEModel::Solve to solve the forward model. Another example is the optimization solver, which is implemented as a task and solves the FEModel repeatedly as part of a parameter optimization problem.
Custom task plugins give the user the very powerful capability to control exactly what FEBio does. Task plugins are often useful for coupling FEBio to other codes. Again, the optimization task is a great example since it couples FEBio to an optimization library (e.g. levmar).
In order to create a new task plugin, you must implement the following.
1. Create a new task class, derived from the FECoreTask base class.
2. Implement the virtual Init(const char*) member function do perform any initialization.
3. Implement the virtual Run() member function.
4. Register the task with the framework.
In the next section, we will discuss these steps in more detail.
\section task_sec1 Creating a Task Plugin
\subsection task_sec11 Create the Task Class
The first step is to create a new task class, derived from the FECoreTask base class, defined in FECore\FECoreTask.h. This class must implement a constructor and
the Run member function.
\code
class MyTask : public FECoreTask
{
public:
MyTask(FEModel* pfem);
bool Init(const char* szfile) override;
bool Run() override;
}
\endcode
The constructor MyTask takes a pointer to the current active FEModel.
The \c Init member function performs any initialization that the task may require. This function should at least call FEModel::Init to initialize the FEModel data.
The \c Run member function will then be called by FEBio and hands over control to the task.
\subsection task_sec12 Implement the Init function
This function is called by FEBio after the FEBio input file was read (if one was provided on the command line). In this function, the task can initialize any data it may need, as well as make any changes to the FEModel. It receives one input argument, namely a string. The string can define, for instance, the name of a control file or provide additional control parameters.
This function should at least call the FEModel::Init function to initialize the model data. If any changes to the FEModel are made, this function should be called after these changes. Once FEModel::Init is called, a task should not add to or remove any model components to the FEModel.
\code
bool MyTask::Init(const char* szfile)
{
// get the FE model
FEModel* fem = GetFEModel();
// make any changes necessary to the model
// then, initialize the model
return fem->Init();
}
\endcode
\subsection task_sec13 Implement the Run function
After FEBio is done initializing the model data, it will call the selected task's Run function and passes the main execution loop to the task.
Inside the Run() function, the task can execute the code that implements the task. After completing, the Run() function must return a boolean indicating whether the task was executed
successfully (true) or not (false).
\subsection task_sec14 Registering the task
As with any plugins, the task class must be registered with the framework. This is done in the PluginInitialize() function, which is one of the required functions that each plugin needs to define. In this function, the REGISTER_FECORE_CLASS macro can be used to register the task.
\code
REGISTER_FECORE_CLASS(MyTask, "mytask");
\endcode
\section task_sec2 Running a Task plugin
In order to use a task plugin you must first register the plugin with the framework in the usual manner (i.e. implementing the required plugin functions and
adding the plugin filename to the FEBio configuration file). Then, you must specify the name of the task on the command line when running FEBio.
\code{.unparsed}
>febio -i file.feb -task="mytask" data.txt
\endcode
Notice that the model input file is still required and defined with the -i command. FEBio will read the input file before the \c Init member function is called.
The -task command line option specifies which task FEBio needs to execute. The task's name is specified after the equal sign (=). The task command can be followed by an optional string. This string will be passed to the task plugin as a parameter to the Init() member function.
*/
================================================
FILE: Documentation/Doxygen/technical.dox
================================================
/**
\page technical Technical Pages
This is a collection of articles describing some of the technical aspects of FEBio. Understanding some of this material may be useful for developing with FEBio.
\li \subpage pipeline
\li \subpage restart
\li \subpage serialize
\li \subpage debug_tools
\li \subpage callback
\li \subpage modules
*/
================================================
FILE: Documentation/Doxygen/using_plugins.dox
================================================
/**
\page using_plugins Using a plugin in FEBio
In order to use a plugin FEBio needs to be informed on where the plugin lives on the file system. This is accomplished by adding the path to the plugin file to the FEBio configuration file. This file, usually called febio.xml , is usually located in the same folder as the FEBio executable. For each plugin, add the following line to this configuration file.
\code
c:\path\to\plugin\plugin.dll
\endcode
That is, enclose the full path and filename of the plugin between import tags.
Note that you can add as many import tags as needed. There is no limit to the number of plugins that FEBio can load.
If you wish to load many plugins, and these plugins are all located in the same folder structure, it might help to define the parent folder with a set tag. Then, plugins paths can be defined referencing this path.
\code
c:\path\to\plugin
$(PluginFolder)\plugin.dll
\endcode
When FEBio starts, it will read the configuration file and try to load all plugins listed therein. A message will be printed on the screen at the start of an FEBio analysis indicating if FEBio was successful in loading the plugin.
Alternatively, you can add the path to a plugin to the FEBio command line with the -import command line option.
\code
>febio4 -i test.feb -import "C:\path\to\plugin\plugin.dll"
\endcode
Make sure there is a space between -import and the plugin's path. Currently, you can only load one plugin via the command line option. If you need to load multiple plugins, you need to specify them in the configuration file.
*/
================================================
FILE: Documentation/FEBio3.bib
================================================
%% This BibTeX bibliography file was created using BibDesk.
%% http://bibdesk.sourceforge.net/
%% Created for Gerard Ateshian at 2025-12-17 07:51:29 -0500
%% Saved with string encoding Unicode (UTF-8)
@comment{jabref-meta: databaseType:bibtex;}
@article{Deshpande01,
author = {Deshpande, VS and Fleck, NA},
date-added = {2025-12-17 07:51:22 -0500},
date-modified = {2025-12-17 07:51:28 -0500},
journal = {Acta materialia},
number = {10},
pages = {1859--1866},
publisher = {Elsevier},
title = {Multi-axial yield behaviour of polymer foams},
volume = {49},
year = {2001}}
@article{Drucker52,
author = {Drucker, Daniel Charles and Prager, William},
date-added = {2025-12-16 14:07:53 -0500},
date-modified = {2025-12-16 14:08:09 -0500},
journal = {Quarterly of applied mathematics},
number = {2},
pages = {157--165},
title = {Soil mechanics and plastic analysis or limit design},
volume = {10},
year = {1952}}
@article{Xiao02,
author = {Xiao, H and Chen, LS},
date-added = {2025-06-19 13:52:52 -0400},
date-modified = {2025-06-19 13:53:00 -0400},
journal = {Acta Mechanica},
number = {1},
pages = {51--60},
publisher = {Springer},
title = {Hencky's elasticity model and linear stress-strain relations in isotropic finite hyperelasticity},
volume = {157},
year = {2002}}
@article{Coleman61,
author = {Coleman, Bernard D and Noll, Walter},
date-added = {2024-12-12 16:34:44 -0500},
date-modified = {2024-12-12 16:35:00 -0500},
journal = {Reviews of modern physics},
number = {2},
pages = {239},
publisher = {APS},
title = {Foundations of linear viscoelasticity},
volume = {33},
year = {1961}}
@book{Bland16,
author = {Bland, David Russell},
date-added = {2024-12-12 16:33:12 -0500},
date-modified = {2024-12-12 16:33:20 -0500},
publisher = {Courier Dover Publications},
title = {The theory of linear viscoelasticity},
year = {2016}}
@article{Brinkman49,
author = {Brinkman, Hendrik C},
date-added = {2024-12-12 16:28:33 -0500},
date-modified = {2024-12-12 16:28:42 -0500},
journal = {Flow, Turbulence and Combustion},
number = {1},
pages = {27--34},
publisher = {Springer},
title = {A calculation of the viscous force exerted by a flowing fluid on a dense swarm of particles},
volume = {1},
year = {1949}}
@article{Bowen69,
author = {Bowen, Ray M},
date-added = {2024-12-12 16:24:02 -0500},
date-modified = {2024-12-12 16:24:50 -0500},
journal = {Archive for Rational Mechanics and Analysis},
pages = {97--127},
publisher = {Springer-Verlag},
title = {The thermochemistry of a reacting mixture of elastic materials with diffusion},
volume = {34},
year = {1969}}
@article{Mullender94,
abstract = {Although the capacity of bone to adapt to functional mechanical requirements has been known for more than a century, it is still unclear how the bone adaptation processes are regulated. We hypothesize that osteocytes are sensitive to mechanical loading and control the regulation of bone mass in their environment. Recently, simulation models of such a process were developed, using the finite element method. It was discovered that these models produce discontinuous structures, not unlike trabecular bone. However, it was also found that severe discontinuities violate the continuum assumption underlying the finite element method and that the solutions were element mesh dependent. We have developed a simulation model (which is physiologically and mechanically more consistent) which maintains the self-organizational characteristics but does not produce these discontinuities. This was accomplished by separating the sensor density and range of action from the mesh. The results clearly show that predicted trabecular morphology, i.e. sizes and branching of struts, depend on the actual relationship between local load, sensor density and range of influence. We believe that the model is suitable to study the relationship between trabecular morphology and load and can also explain adaptation of morphology, in the sense of 'Wolff's law'.},
author = {Mullender, M G and Huiskes, R and Weinans, H},
date-added = {2024-08-29 05:59:22 -0400},
date-modified = {2024-08-29 05:59:22 -0400},
doi = {10.1016/0021-9290(94)90049-3},
journal = {J Biomech},
journal-full = {Journal of biomechanics},
mesh = {Adaptation, Physiological; Algorithms; Bone Remodeling; Bone and Bones; Cell Communication; Cell Count; Computer Simulation; Homeostasis; Humans; Models, Biological; Osteocytes; Stress, Mechanical},
month = {Nov},
number = {11},
pages = {1389-94},
pmid = {7798290},
pst = {ppublish},
title = {A physiological approach to the simulation of bone remodeling as a self-organizational control process},
volume = {27},
year = {1994},
bdsk-url-1 = {https://doi.org/10.1016/0021-9290(94)90049-3}}
@article{Ateshian23b,
abstract = {This study examines the theoretical foundations for the damage mechanics of biological tissues in relation to viscoelasticity. Its primary goal is to provide a mechanistic understanding of well-known experimental observations in biomechanics, which show that the ultimate tensile strength of viscoelastic biological tissues typically increases with increasing strain rate. The basic premise of this framework is that tissue damage occurs when strong bonds, such as covalent bonds in the solid matrix of a biological tissue, break in response to loading. This type of failure is described as elastic damage, under the idealizing assumption that strong bonds behave elastically. Viscoelasticity arises from three types of dissipative mechanisms: (1) Friction between molecules of the same species, which is represented by the tissue viscosity. (2) Friction between fluid and solid constituents of a porous medium, which is represented by the tissue hydraulic permeability. (3) Dissipative reactions arising from weak bonds breaking in response to loading, and reforming in a stress-free state, such as hydrogen bonds and other weak electrostatic bonds. When a viscoelastic tissue is subjected to loading, some of that load may be temporarily supported by those frictional and weak bond forces, reducing the amount of load supported by elastic strong bonds and thus, the extent of elastic damage sustained by those bonds. This protective effect depends on the characteristic time response of viscoelastic mechanisms in relation to the loading history. This study formalizes these concepts by presenting general equations that can model the damage mechanics of viscoelastic tissues.},
author = {Ateshian, Gerard A and Kroupa, Kimberly R and Petersen, Courtney A and Zimmerman, Brandon K and Maas, Steve A and Weiss, Jeffrey A},
date-added = {2024-05-30 11:26:36 -0400},
date-modified = {2024-05-30 11:27:14 -0400},
doi = {10.1115/1.4056063},
journal = {J Biomech Eng},
journal-full = {Journal of biomechanical engineering},
mesh = {Viscosity; Elasticity; Tensile Strength; Biomechanical Phenomena; Porosity; Models, Biological; Stress, Mechanical},
month = {Apr},
number = {4},
pmc = {PMC9791672},
pmid = {36301266},
pst = {ppublish},
title = {Damage Mechanics of Biological Tissues in Relation to Viscoelasticity},
volume = {145},
year = {2023},
bdsk-url-1 = {https://doi.org/10.1115/1.4056063}}
@article{Quemada78,
author = {Quemada, DJRA},
date-added = {2024-05-14 07:51:25 -0400},
date-modified = {2024-05-14 07:51:42 -0400},
journal = {Rheologica Acta},
number = {6},
pages = {632--642},
publisher = {Springer},
title = {Rheology of concentrated disperse systems II. A model for non-newtonian shear viscosity in steady flows},
volume = {17},
year = {1978}}
@article{KAMENSKY2018522,
abstract = {This work formulates frictionless contact between solid bodies in terms of a repulsive potential energy term and illustrates how numerical integration of the resulting forces is computationally similar to the ``pinball algorithm'' proposed and studied by Belytschko and collaborators in the 1990s. We thereby arrive at a numerical approach that has both the theoretical advantages of a potential-based formulation and the algorithmic simplicity, computational efficiency, and geometrical versatility of pinball contact. The singular nature of the contact potential requires a specialized nonlinear solver and an adaptive time stepping scheme to ensure reliable convergence of implicit dynamic calculations. We illustrate the effectiveness of this numerical method by simulating several benchmark problems and the structural mechanics of the right atrioventricular (tricuspid) heart valve. Atrioventricular valve closure involves contact between every combination of shell surfaces, edges of shells, and cables, but our formulation handles all contact scenarios in a unified manner. We take advantage of this versatility to demonstrate the effects of chordal rupture on tricuspid valve coaptation behavior.},
author = {David Kamensky and Fei Xu and Chung-Hao Lee and Jinhui Yan and Yuri Bazilevs and Ming-Chen Hsu},
doi = {https://doi.org/10.1016/j.cma.2017.11.007},
issn = {0045-7825},
journal = {Computer Methods in Applied Mechanics and Engineering},
keywords = {Heart valves, Contact problems, Pinball algorithm, Isogeometric analysis},
pages = {522-546},
title = {A contact formulation based on a volumetric potential: Application to isogeometric simulations of atrioventricular valves},
url = {https://www.sciencedirect.com/science/article/pii/S0045782517307120},
volume = {330},
year = {2018},
bdsk-url-1 = {https://www.sciencedirect.com/science/article/pii/S0045782517307120},
bdsk-url-2 = {https://doi.org/10.1016/j.cma.2017.11.007}}
@incollection{Ateshian16,
author = {Gerard A. Ateshian},
booktitle = {Studies in Mechanobiology, Tissue Engineering and Biomaterials},
date-added = {2023-05-16 21:01:13 -0400},
date-modified = {2023-05-16 21:01:17 -0400},
doi = {10.1007/978-3-319-41475-1_1},
pages = {1--51},
publisher = {Springer International Publishing},
title = {Mixture Theory for Modeling Biological Tissues: Illustrations from Articular Cartilage},
year = {2016},
bdsk-url-1 = {https://doi.org/10.1007/978-3-319-41475-1_1}}
@book{McNaught97,
address = {Oxford England Malden, MA, USA},
author = {McNaught, Alan},
date-added = {2023-05-16 18:23:14 -0400},
date-modified = {2023-05-16 18:23:16 -0400},
isbn = {0865426848},
publisher = {Blackwell Science},
title = {Compendium of chemical terminology : IUPAC recommendations},
year = {1997}}
@article{Ateshian13,
author = {Gerard A. Ateshian and Steve Maas and Jeffrey A. Weiss},
date-added = {2023-05-16 18:17:50 -0400},
date-modified = {2023-05-16 18:17:53 -0400},
doi = {10.1115/1.4024823},
journal = {J. Biomech. Eng.},
number = {11},
publisher = {{ASME} International},
title = {Multiphasic Finite Element Framework for Modeling Hydrated Mixtures With Multiple Neutral and Charged Solutes},
volume = {135},
year = {2013},
bdsk-url-1 = {https://doi.org/10.1115/1.4024823}}
@article{Ateshian14,
author = {Gerard A. Ateshian and Robert J. Nims and Steve Maas and Jeffrey A. Weiss},
date-added = {2023-05-16 18:17:50 -0400},
date-modified = {2023-05-16 18:17:56 -0400},
doi = {10.1007/s10237-014-0560-1},
journal = {Biomech. Model. Mechanobiol.},
number = {5},
pages = {1105--1120},
publisher = {Springer Science and Business Media {LLC}},
title = {Computational modeling of chemical reactions and interstitial growth and remodeling involving charged solutes and solid-bound molecules},
volume = {13},
year = {2014},
bdsk-url-1 = {https://doi.org/10.1007/s10237-014-0560-1}}
@article{Shim23,
abstract = {The objective of this study was to implement a novel fluid-solutes solver into the open-source finite element software FEBio, that extended available modeling capabilities for biological fluids and fluid-solute mixtures. Using a reactive mixture framework, this solver accommodates diffusion, convection, chemical reactions, electrical charge effects, and external body forces, without requiring stabilization methods that were deemed necessary in previous computational implementations of the convection-diffusion-reaction equation at high Peclet numbers. Verification and validation problems demonstrated the ability of this solver to produce solutions for Peclet numbers as high as 1e11, spanning the range of physiological conditions for convection-dominated solute transport. This outcome was facilitated by the use of a formulation that accommodates realistic values for solvent compressibility, and by expressing the solute mass balance such that it properly captured convective transport by the solvent and produced a natural boundary condition of zero diffusive solute flux at outflow boundaries. Since this numerical scheme was not necessarily foolproof, guidelines were included to achieve better outcomes that minimize or eliminate the potential occurrence of numerical artifacts. The fluid-solutes solver presented in this study represents an important and novel advancement in the modeling capabilities for biomechanics and biophysics as it allows modeling of mechanobiological processes via the incorporation of chemical reactions involving neutral or charged solutes within dynamic fluid flow. The incorporation of charged solutes in a reactive framework represents a significant novelty of this solver. This framework also applies to a broader range of non-biological applications.},
author = {Shim, Jay J and Maas, Steve A and Weiss, Jeffrey A and Ateshian, Gerard A},
date-added = {2023-05-31 13:48:25 -0400},
date-modified = {2023-05-31 13:48:50 -0400},
doi = {10.1115/1.4062594},
journal = {J Biomech Eng},
journal-full = {Journal of biomechanical engineering},
month = {May},
pages = {1-26},
pmid = {37219843},
pst = {aheadofprint},
title = {Finite Element Implementation Of Computational Fluid Dynamics With Reactive Neutral And Charged Solute Transport In Febio},
year = {2023},
bdsk-url-1 = {https://doi.org/10.1115/1.4062594}}
@article{Menzel12,
abstract = {Unlike common engineering materials, living matter can autonomously respond to environmental changes. Living structures can grow stronger, weaker, larger, or smaller within months, weeks, or days as a result of a continuous microstructural turnover and renewal. Hard tissues can adapt by increasing their density and grow strong. Soft tissues can adapt by increasing their volume and grow large. For more than three decades, the mechanics community has actively contributed to understand the phenomena of growth and remodeling from a mechanistic point of view. However, to date, there is no single, unified characterization of growth, which is equally accepted by all scientists in the field. Here we shed light on the continuum modeling of growth and remodeling of living matter, and give a comprehensive overview of historical developments and trends. We provide a state-of-the-art review of current research highlights, and discuss challenges and potential future directions. Using the example of volumetric growth, we illustrate how we can establish and utilize growth theories to characterize the functional adaptation of soft living matter. We anticipate this review to be the starting point for critical discussions and future research in growth and remodeling, with a potential impact on life science and medicine.},
author = {Menzel, Andreas and Kuhl, Ellen},
date-added = {2022-12-19 12:01:52 -0500},
date-modified = {2022-12-19 12:01:52 -0500},
doi = {10.1016/j.mechrescom.2012.02.007},
journal = {Mech Res Commun},
journal-full = {Mechanics research communications},
month = {Jun},
pages = {1-14},
pmc = {PMC3424004},
pmid = {22919118},
pst = {ppublish},
title = {Frontiers in growth and remodeling},
volume = {42},
year = {2012},
bdsk-url-1 = {https://doi.org/10.1016/j.mechrescom.2012.02.007}}
@article{Rodriguez94,
abstract = {Growth and remodeling in tissues may be modulated by mechanical factors such as stress. For example, in cardiac hypertrophy, alterations in wall stress arising from changes in mechanical loading lead to cardiac growth and remodeling. A general continuum formulation for finite volumetric growth in soft elastic tissues is therefore proposed. The shape change of an unloaded tissue during growth is described by a mapping analogous to the deformation gradient tensor. This mapping is decomposed into a transformation of the local zero-stress reference state and an accompanying elastic deformation that ensures the compatibility of the total growth deformation. Residual stress arises from this elastic deformation. Hence, a complete kinematic formulation for growth in general requires a knowledge of the constitutive law for stress in the tissue. Since growth may in turn be affected by stress in the tissue, a general form for the stress-dependent growth law is proposed as a relation between the symmetric growth-rate tensor and the stress tensor. With a thick-walled hollow cylinder of incompressible, isotropic hyperelastic material as an example, the mechanics of left ventricular hypertrophy are investigated. The results show that transmurally uniform pure circumferential growth, which may be similar to eccentric ventricular hypertrophy, changes the state of residual stress in the heart wall. A model of axially loaded bone is used to test a simple stress-dependent growth law in which growth rate depends on the difference between the stress due to loading and a predetermined growth equilibrium stress.},
author = {Rodriguez, E K and Hoger, A and McCulloch, A D},
date-added = {2022-12-19 11:31:36 -0500},
date-modified = {2022-12-19 11:31:36 -0500},
doi = {10.1016/0021-9290(94)90021-3},
journal = {J Biomech},
journal-full = {Journal of biomechanics},
mesh = {Bone Development; Bone and Bones; Elastic Tissue; Elasticity; Heart; Humans; Hypertrophy; Hypertrophy, Left Ventricular; Mathematics; Models, Biological; Stress, Mechanical},
month = {Apr},
number = {4},
pages = {455-67},
pmid = {8188726},
pst = {ppublish},
title = {Stress-dependent finite growth in soft elastic tissues},
volume = {27},
year = {1994},
bdsk-url-1 = {https://doi.org/10.1016/0021-9290(94)90021-3}}
@article{Shi22,
author = {Shi, Lei and Hu, Lingfeng and Lee, Nicole and Fang, Shuyang and Myers, Kristin},
date-added = {2022-11-01 16:48:10 -0400},
date-modified = {2022-11-01 16:48:15 -0400},
journal = {Acta Biomaterialia},
pages = {277--294},
publisher = {Elsevier},
title = {Three-dimensional anisotropic hyperelastic constitutive model describing the mechanical response of human and mouse cervix},
volume = {150},
year = {2022}}
@article{Ateshian23,
abstract = {Reactive viscoelasticity is a theoretical framework based on the theory of reactive constrained mixtures that encompasses nonlinear viscoelastic responses. It models a viscoelastic solid as a mixture of strong and weak bonds that maintain the cohesiveness of the molecular constituents of the solid matter. Strong bonds impart the elastic response while weak bonds break and reform into a stress-free state in response to loading. The process of bonds breaking and reforming is modeled as a reaction where loaded bonds are the reactants and bonds reformed into a stress-free state are the products of a reaction. The reaction is triggered by the evolving state of loading. The state of stress in strong bonds is a function of the total strain in the material, whereas the state of stress in weak bonds is based on the state of strain relative to the time that these bonds were reformed. This study introduces two important practical contributions to the reactive nonlinear viscoelasticity framework: (1) normally, the evaluation of the stress tensor involves taking a summation over a continually increasing number of weak bond generations, which is poorly suited for a computational scheme. Therefore, this study presents an effective numerical scheme for evaluating the strain energy density, the Cauchy stress, and spatial elasticity tensors of reactive viscoelastic materials. (2) We provide the conditions for satisfying frame indifference for anisotropic nonlinear viscoelasticity, including for tension-bearing fiber models. Code verifications and model validations against experimental data provide evidence in support of this updated formulation.},
author = {Ateshian, Gerard A and Petersen, Courtney A and Maas, Steve A and Weiss, Jeffrey A},
date-added = {2022-10-28 15:55:05 -0400},
date-modified = {2022-10-28 15:55:05 -0400},
doi = {10.1115/1.4054983},
journal = {J Biomech Eng},
journal-full = {Journal of biomechanical engineering},
mesh = {Anisotropy; Elasticity; Models, Biological; Nonlinear Dynamics; Stress, Mechanical; Viscosity},
month = {Jan},
number = {1},
pmid = {35838330},
pst = {ppublish},
title = {A Numerical Scheme for Anisotropic Reactive Nonlinear Viscoelasticity},
volume = {145},
year = {2023},
bdsk-url-1 = {https://doi.org/10.1115/1.4054983}}
@article{Ateshian22,
abstract = {This study examines the theoretical foundations for the damage mechanics of biological tissues in relation to viscoelasticity. Its primary goal is to provide a mechanistic understanding of well-known experimental observations in biomechanics, which show that the ultimate tensile strength of viscoelastic biological tissues typically increases with increasing strain rate. The basic premise of this framework is that tissue damage occurs when strong bonds, such as covalent bonds in the solid matrix of a biological tissue, break in response to loading. This type of failure is described as elastic damage, under the idealizing assumption that strong bonds behave elastically. Viscoelasticity arises from three types of dissipative mechanisms: (1) Friction between molecules of the same species, which is represented by the tissue viscosity. (2) Friction between fluid and solid constituents of a porous medium, which is represented by the tissue hydraulic permeability. (3) Dissipative reactions arising from weak bonds breaking in response to loading, and reforming in a stress-free state, such as hydrogen bonds and other weak electrostatic bonds. When a viscoelastic tissue is subjected to loading, some of that load may be temporarily supported by those frictional and weak bond forces, reducing the amount of load supported by elastic strong bonds and thus, the extent of elastic damage sustained by those bonds. This protective effect depends on the characteristic time response of viscoelastic mechanisms in relation to the loading history. This study formalizes these concepts by presenting general equations that can model the damage mechanics of viscoelastic tissues.},
author = {Ateshian, Gerard A and Kroupa, Kimberly and Petersen, Courtney A and Zimmerman, Brandon and Maas, Steve A and Weiss, Jeffrey A},
date-added = {2022-10-28 15:54:28 -0400},
date-modified = {2022-10-28 15:54:28 -0400},
doi = {10.1115/1.4056063},
journal = {J Biomech Eng},
journal-full = {Journal of biomechanical engineering},
month = {Oct},
pmid = {36301266},
pst = {aheadofprint},
title = {Damage Mechanics of Biological Tissues in Relation to Viscoelasticity},
year = {2022},
bdsk-url-1 = {https://doi.org/10.1115/1.4056063}}
@article{Green46,
author = {Green, MS and Tobolsky, AV},
date-added = {2022-10-28 15:53:02 -0400},
date-modified = {2022-10-28 15:53:02 -0400},
journal = {J Chem Phys},
number = {2},
pages = {80--92},
publisher = {AIP Publishing},
title = {A new approach to the theory of relaxing polymeric media},
volume = {14},
year = {1946}}
@book{Tobolsky60,
author = {Tobolsky, Arthur Victor},
date-added = {2022-10-28 15:53:02 -0400},
date-modified = {2022-10-28 15:53:02 -0400},
publisher = {New York and London.; John Wiley \&; Sons. Inc.},
title = {Properties and structure of polymers},
year = {1960}}
@article{Rice76,
author = {Rice, James R and Cleary, Michael P},
date-added = {2022-10-28 15:52:34 -0400},
date-modified = {2022-10-28 15:52:34 -0400},
journal = {Reviews of Geophysics},
number = {2},
pages = {227--241},
publisher = {Wiley Online Library},
title = {Some basic stress diffusion solutions for fluid-saturated elastic porous media with compressible constituents},
volume = {14},
year = {1976}}
@article{Cryer63,
author = {Cryer, CWA},
date-added = {2022-10-28 15:52:24 -0400},
date-modified = {2022-10-28 15:52:24 -0400},
journal = {The Quarterly Journal of Mechanics and Applied Mathematics},
number = {4},
pages = {401--412},
publisher = {Oxford University Press},
title = {A comparison of the three-dimensional consolidation theories of Biot and Terzaghi},
volume = {16},
year = {1963}}
@article{Coleman63,
author = {Coleman, Bernard D and Noll, Walter},
date-added = {2022-10-28 15:52:06 -0400},
date-modified = {2022-10-28 15:52:06 -0400},
journal = {Arch Ration Mech An},
number = {1},
pages = {167--178},
publisher = {Springer},
title = {The thermodynamics of elastic materials with heat conduction and viscosity},
volume = {13},
year = {1963}}
@article{Holzapfel96,
author = {Holzapfel, Gerhard A and Simo, Juan C},
date-added = {2022-10-28 15:36:17 -0400},
date-modified = {2022-10-28 15:36:17 -0400},
journal = {Int J Solids Struct},
number = {20},
pages = {3019--3034},
publisher = {Elsevier},
title = {A new viscoelastic constitutive model for continuous media at finite thermomechanical changes},
volume = {33},
year = {1996}}
@article{Lubliner85,
author = {Lubliner, J},
date-added = {2022-10-28 15:36:10 -0400},
date-modified = {2022-10-28 15:36:10 -0400},
journal = {Mech Res Commun},
number = {2},
pages = {93--99},
publisher = {Elsevier},
title = {A model of rubber viscoelasticity},
volume = {12},
year = {1985}}
@article{Coleman67,
author = {Coleman, Bernard D and Gurtin, Morton E},
date-added = {2022-10-28 15:33:51 -0400},
date-modified = {2022-10-28 15:33:51 -0400},
journal = {J Chem Phys},
number = {2},
pages = {597--613},
publisher = {AIP Publishing},
title = {Thermodynamics with internal state variables},
volume = {47},
year = {1967}}
@article{Shim22a,
abstract = {Mixture theory is a general framework that has been used to model mixtures of solid, fluid, and solute constituents, leading to significant advances in modeling the mechanics of biological tissues and cells. Though versatile and applicable to a wide range of problems in biomechanics and biophysics, standard multiphasic mixture frameworks incorporate neither dynamics of viscous fluids nor fluid compressibility, both of which facilitate the finite element implementation of computational fluid dynamics solvers. This study formulates governing equations for reactive multiphasic mixtures where the interstitial fluid has a solvent which is viscous and compressible. This hybrid reactive multiphasic framework uses state variables that include the deformation gradient of the porous solid matrix, the volumetric strain and rate of deformation of the solvent, the solute concentrations, and the relative velocities between the various constituents. Unlike standard formulations which employ a Lagrange multiplier to model fluid pressure, this framework requires the formulation of a function of state for the pressure, which depends on solvent volumetric strain and solute concentrations. Under isothermal conditions the formulation shows that the solvent volumetric strain remains continuous across interfaces between hybrid multiphasic domains. Apart from the Lagrange multiplier-state function distinction for the fluid pressure, and the ability to accommodate viscous fluid dynamics, this hybrid multiphasic framework remains fully consistent with standard multiphasic formulations previously employed in biomechanics. With these additional features, the hybrid multiphasic mixture theory makes it possible to address a wider range of problems that are important in biomechanics and mechanobiology.},
author = {Shim, Jay J and Ateshian, Gerard A},
date-added = {2022-08-05 09:25:40 -0400},
date-modified = {2022-08-05 09:25:40 -0400},
doi = {10.1115/1.4051926},
journal = {J Biomech Eng},
journal-full = {Journal of biomechanical engineering},
mesh = {Biomechanical Phenomena; Finite Element Analysis; Porosity; Solutions; Solvents; Viscosity},
month = {01},
number = {1},
pmc = {PMC8547015},
pmid = {34318318},
pst = {ppublish},
title = {A Hybrid Reactive Multiphasic Mixture With a Compressible Fluid Solvent},
volume = {144},
year = {2022},
bdsk-url-1 = {https://doi.org/10.1115/1.4051926}}
@article{Zimmerman22,
abstract = {The frictional response of porous and permeable hydrated biological tissues such as articular cartilage is significantly dependent on interstitial fluid pressurization. To model this response, it is common to represent such tissues as biphasic materials, consisting of a binary mixture of a porous solid matrix and an interstitial fluid. However, no computational algorithms currently exist in either commercial or open-source software that can model frictional contact between such materials. Therefore, this study formulates and implements a finite element algorithm for large deformation biphasic frictional contact in the open-source finite element software FEBio. This algorithm relies on a local form of a biphasic friction model that has been previously validated against experiments, and implements the model into our recently-developed surface-to-surface (STS) contact algorithm. Contact constraints, including those specific to pressurized porous media, are enforced with the penalty method regularized with an active-passive augmented Lagrangian scheme. Numerical difficulties specific to challenging finite deformation biphasic contact problems are overcome with novel smoothing schemes for fluid pressures and Lagrange multipliers. Implementation accuracy is verified against semi-analytical solutions for biphasic frictional contact, with extensive validation performed using canonical cartilage friction experiments from prior literature. Essential details of the formulation are provided in this paper, and the source code of this biphasic frictional contact algorithm is made available to the general public.},
author = {Zimmerman, Brandon K and Maas, Steve A and Weiss, Jeffrey A and Ateshian, Gerard A},
date-added = {2022-08-05 09:25:40 -0400},
date-modified = {2022-08-05 09:25:40 -0400},
doi = {10.1115/1.4052114},
journal = {J Biomech Eng},
journal-full = {Journal of biomechanical engineering},
mesh = {Algorithms; Biomechanical Phenomena; Cartilage, Articular; Finite Element Analysis; Friction; Models, Biological; Porosity; Stress, Mechanical},
month = {02},
number = {2},
pmc = {PMC8547016},
pmid = {34382640},
pst = {ppublish},
title = {A Finite Element Algorithm for Large Deformation Biphasic Frictional Contact Between Porous-Permeable Hydrated Soft Tissues},
volume = {144},
year = {2022},
bdsk-url-1 = {https://doi.org/10.1115/1.4052114}}
@article{Ateshian22a,
abstract = {Mixture theory models continua consisting of multiple constituents with independent motions. In constrained mixtures, all constituents share the same velocity but they may have different reference configurations. The theory of constrained reactive mixtures was formulated to analyze growth and remodeling in living biological tissues. It can also reproduce and extend classical frameworks of damage mechanics and viscoelasticity under isothermal conditions, when modeling bonds that can break and reform. This study focuses on establishing the thermodynamic foundations of constrained reactive mixtures under more general conditions, for arbitrary reactive processes where temperature varies in time and space. By incorporating general expressions for reaction kinetics, it is shown that the residual dissipation statement of the Clausius-Duhem inequality must include a reactive power density, while the axiom of energy balance must include a reactive heat supply density. Both of these functions are proportional to the molar production rate of a reaction, and they depend on the chemical potentials of the mixture constituents. We present novel formulas for the classical thermodynamic concepts of energy of formation and heat of reaction, making it possible to evaluate the heat supply generated by reactive processes from the knowledge of the specific free energy of mixture constituents as well as the reaction rate. We illustrate these novel concepts with mixtures of ideal gases, and isothermal reactive damage mechanics and viscoelasticity, as well as reactive thermoelasticity. This framework facilitates the analysis of reactive tissue biomechanics and physiological and biomedical engineering processes where temperature variations cannot be neglected.},
author = {Ateshian, Gerard A and Zimmerman, Brandon K},
date-added = {2022-08-05 09:25:40 -0400},
date-modified = {2022-08-05 09:25:40 -0400},
doi = {10.1115/1.4053084},
journal = {J Biomech Eng},
journal-full = {Journal of biomechanical engineering},
keywords = {constrained reactive mixtures; energy of formation; heat of reaction; ideal gas mixtures; thermodynamics; thermoelasticity},
mesh = {Biomechanical Phenomena; Entropy; Kinetics; Thermodynamics; Viscosity},
month = {04},
number = {4},
pmc = {PMC8719048},
pmid = {34802058},
pst = {ppublish},
title = {Continuum Thermodynamics of Constrained Reactive Mixtures},
volume = {144},
year = {2022},
bdsk-url-1 = {https://doi.org/10.1115/1.4053084}}
@article{Shim22,
abstract = {The primary aim of this study is to establish the theoretical foundations for a solid-fluid biphasic mixture domain that can accommodate inertial effects and a viscous interstitial fluid, which can interface with a dynamic viscous fluid domain. Most mixture formulations consist of constituents that are either all intrinsically incompressible or compressible, thereby introducing inherent limitations. In particular, mixtures with intrinsically incompressible constituents can only model wave propagation in the porous solid matrix, whereas those with compressible constituents require internal variables, and related evolution equations, to distinguish the compressibility of the solid and fluid under hydrostatic pressure. In this study, we propose a hybrid framework for a biphasic mixture where the skeleton of the porous solid is intrinsically incompressible but the interstitial fluid is compressible. We define a state variable as a measure of the fluid volumetric strain. Within an isothermal framework, the Clausius-Duhem inequality shows that a function of state arises for the fluid pressure as a function of this strain measure. We derive jump conditions across hybrid biphasic interfaces, which are suitable for modeling hydrated biological tissues. We then illustrate this framework using confined compression and dilatational wave propagation analyses. The governing equations for this hybrid biphasic framework reduce to those of the classical biphasic theory whenever the bulk modulus of the fluid is set to infinity and inertia terms and viscous fluid effects are neglected. The availability of this novel framework facilitates the implementation of finite element solvers for fluid-structure interactions at interfaces between viscous fluids and porous-deformable biphasic domains, which can include fluid exchanges across those interfaces.},
author = {Shim, Jay J and Ateshian, Gerard A},
date-added = {2022-08-05 09:25:13 -0400},
date-modified = {2022-08-05 09:25:13 -0400},
doi = {10.1007/s00419-020-01851-8},
journal = {Arch Appl Mech},
journal-full = {Archive of applied mechanics = Ingenieur-Archiv},
month = {Feb},
number = {2},
pages = {491-511},
pmc = {PMC8939891},
pmid = {35330673},
pst = {ppublish},
title = {A Hybrid Biphasic Mixture Formulation for Modeling Dynamics in Porous Deformable Biological Tissues},
volume = {92},
year = {2022},
bdsk-url-1 = {https://doi.org/10.1007/s00419-020-01851-8}}
@article{Hunter98,
abstract = {A model of passive and active cardiac muscle mechanics is presented, suitable for use in continuum mechanics models of the whole heart. The model is based on an extensive review of experimental data from a variety of preparations (intact trabeculae, skinned fibres and myofibrils) and species (mainly rat and ferret) at temperatures from 20 to 27 degrees C. Experimental tests include isometric tension development, isotonic loading, quick-release/restretch, length step and sinusoidal perturbations. We show that all of these experiments can be interpreted with a four state variable model which includes (i) the passive elasticity of myocardial tissue, (ii) the rapid binding of Ca2+ to troponin C and its slower tension-dependent release, (iii) the kinetics of tropomyosin movement and availability of crossbridge binding sites and the length dependence of this process and (iv) the kinetics of crossbridge tension development under perturbations of myofilament length.},
author = {Hunter, P J and McCulloch, A D and ter Keurs, H E},
date-added = {2022-04-16 18:28:38 -0400},
date-modified = {2022-04-16 18:28:38 -0400},
doi = {10.1016/s0079-6107(98)00013-3},
journal = {Prog Biophys Mol Biol},
journal-full = {Progress in biophysics and molecular biology},
mesh = {Actin Cytoskeleton; Animals; Biomechanical Phenomena; Calcium; Elasticity; Ferrets; Heart; In Vitro Techniques; Kinetics; Mathematics; Models, Cardiovascular; Myocardial Contraction; Myocardium; Rats; Troponin C},
number = {2-3},
pages = {289-331},
pmid = {9785944},
pst = {ppublish},
title = {Modelling the mechanical properties of cardiac muscle},
volume = {69},
year = {1998},
bdsk-url-1 = {https://doi.org/10.1016/s0079-6107(98)00013-3}}
@article{Estrada20,
abstract = {A wide range of emerging therapies, from surgical restraint to biomaterial injection to tissue engineering, aim to improve heart function and limit adverse remodeling following myocardial infarction (MI). We previously showed that longitudinal surgical reinforcement of large anterior infarcts in dogs could significantly enhance systolic function without restricting diastolic function, but the underlying mechanisms for this improvement are poorly understood. The goal of this study was to construct a finite element model that could match our previously published data on changes in regional strains and left ventricular function following longitudinal surgical reinforcement, then use the model to explore potential mechanisms for the improvement in systolic function we observed. The model presented here, implemented in febio, matches all the key features of our experiments, including diastolic remodeling strains in the ischemic region, small shifts in the end-diastolic pressure-volume relationship (EDPVR), and large changes in the end-systolic pressure-volume relationship (ESPVR) in response to ischemia and to patch application. Detailed examination of model strains and stresses suggests that longitudinal reinforcement reduces peak diastolic fiber stretch and systolic fiber stress in the remote myocardium and shifts those peaks away from the endocardial surface by reshaping the left ventricle (LV). These findings could help to guide the development of novel therapies to improve post-MI function by providing specific design objectives.},
author = {Estrada, Ana Cristina and Yoshida, Kyoko and Clarke, Samantha A and Holmes, Jeffrey W},
date-added = {2022-04-16 16:45:14 -0400},
date-modified = {2022-04-16 16:45:14 -0400},
doi = {10.1115/1.4044030},
journal = {J Biomech Eng},
journal-full = {Journal of biomechanical engineering},
mesh = {Animals; Diastole; Dogs; Myocardial Contraction; Myocardial Infarction; Ventricular Dysfunction, Left; Ventricular Function, Left},
month = {02},
number = {2},
pmc = {PMC7104755},
pmid = {31201738},
pst = {ppublish},
title = {Longitudinal Reinforcement of Acute Myocardial Infarcts Improves Function by Transmurally Redistributing Stretch and Stress},
volume = {142},
year = {2020},
bdsk-url-1 = {https://doi.org/10.1115/1.4044030}}
@article{Aguilar08,
author = {Aguilar, G and Gaspar, F and Lisbona, F and Rodrigo, C24558811158},
date-added = {2022-02-16 16:49:15 -0500},
date-modified = {2022-02-16 16:49:28 -0500},
journal = {International journal for numerical methods in engineering},
number = {11},
pages = {1282--1300},
publisher = {Wiley Online Library},
title = {Numerical stabilization of Biot's consolidation model by a perturbation on the flow equation},
volume = {75},
year = {2008}}
@article{Malkin06,
author = {Malkin, A Ya},
date-added = {2022-01-07 17:07:34 -0500},
date-modified = {2022-01-07 17:07:44 -0500},
journal = {Applied Mechanics and Engineering},
number = {2},
pages = {235},
title = {Continuous relaxation spectrum-its advantages and methods of calculation},
volume = {11},
year = {2006}}
@book{Fung81,
address = {New York},
author = {Fung, Y. C},
call-number = {QP88},
date-added = {2022-01-07 17:03:53 -0500},
date-modified = {2022-01-07 17:03:53 -0500},
dewey-call-number = {599.01/852},
genre = {Tissues},
isbn = {0387904727},
library-id = {80016532},
publisher = {Springer-Verlag},
title = {Biomechanics: mechanical properties of living tissues},
year = {1981}}
@book{Fung72,
address = {Englewood Cliffs, N.J.},
author = {Fung, Y. C and Perrone, Nicholas and Anliker, M},
call-number = {QP88},
date-added = {2022-01-07 16:34:55 -0500},
date-modified = {2022-01-07 16:34:55 -0500},
dewey-call-number = {612/.7},
genre = {Biomechanics},
isbn = {013077149X},
library-id = {78160253},
publisher = {Prentice-Hall},
title = {Biomechanics, its foundations and objectives},
year = {1972}}
@misc{Foley96,
author = {Foley, James D and van Dam, Andries and Feiner, Steven K and Hughes, John F},
date-added = {2021-08-20 13:23:10 -0400},
date-modified = {2021-08-20 13:23:10 -0400},
publisher = {Addison-Wesley, Reading, Massachusetts},
title = {Computer Graphics: Principles and Pract Edition},
year = {1996}}
@article{Zavarise09,
author = {Zavarise, Giorgio and De Lorenzis, Laura},
date-added = {2021-08-20 13:14:58 -0400},
date-modified = {2021-08-20 13:14:58 -0400},
journal = {Computer Methods in Applied Mechanics and Engineering},
number = {41},
pages = {3428--3451},
publisher = {Elsevier},
title = {The node-to-segment algorithm for 2D frictionless contact: classical formulation and special cases},
volume = {198},
year = {2009}}
@article{Tur09,
author = {Tur, M and Fuenmayor, FJ and Wriggers, P},
date-added = {2021-08-20 13:14:35 -0400},
date-modified = {2021-08-20 13:14:35 -0400},
journal = {Computer Methods in Applied Mechanics and Engineering},
number = {37},
pages = {2860--2873},
publisher = {Elsevier},
title = {A mortar-based frictional contact formulation for large deformations using Lagrange multipliers},
volume = {198},
year = {2009}}
@article{Simo92c,
author = {Simo, J Ci and Laursen, TA},
date-added = {2021-08-20 11:45:00 -0400},
date-modified = {2021-08-20 11:45:04 -0400},
journal = {Computers \& Structures},
number = {1},
pages = {97--116},
publisher = {Elsevier},
title = {An augmented Lagrangian treatment of contact problems involving friction},
volume = {42},
year = {1992}}
@article{Giannakopoulos89,
author = {Giannakopoulos, AE},
date-added = {2021-08-20 11:44:02 -0400},
date-modified = {2021-08-20 11:44:02 -0400},
journal = {Computers \& structures},
number = {1},
pages = {157--167},
publisher = {Elsevier},
title = {The return mapping method for the integration of friction constitutive relations},
volume = {32},
year = {1989}}
@book{Wriggers06,
address = {Berlin},
author = {Wriggers, P},
call-number = {TA353},
date-added = {2021-08-20 11:43:40 -0400},
date-modified = {2021-08-20 11:43:40 -0400},
dewey-call-number = {620.1/05},
edition = {2nd ed},
genre = {Contact mechanics},
isbn = {9783540326083 (acid-free paper)},
library-id = {2006922005},
publisher = {Springer},
title = {Computational contact mechanics},
url = {http://www.loc.gov/catdir/enhancements/fy0663/2006922005-d.html},
year = {2006},
bdsk-url-1 = {http://www.loc.gov/catdir/enhancements/fy0663/2006922005-d.html}}
@article{Saracibar97,
author = {de Saracibar, C Agelet},
date-added = {2021-08-20 11:43:11 -0400},
date-modified = {2021-08-20 11:43:11 -0400},
journal = {Computer Methods in Applied Mechanics and Engineering},
number = {3-4},
pages = {303--334},
publisher = {Elsevier},
title = {A new frictional time integration algorithm for large slip multi-body frictional contact problems},
volume = {142},
year = {1997}}
@article{Sauer15,
author = {Sauer, Roger A and De Lorenzis, Laura},
date-added = {2021-08-20 11:43:00 -0400},
date-modified = {2021-08-20 11:43:00 -0400},
journal = {International Journal for Numerical Methods in Engineering},
number = {4},
pages = {251--280},
publisher = {Wiley Online Library},
title = {An unbiased computational contact formulation for 3D friction},
volume = {101},
year = {2015}}
@article{Wriggers90,
author = {Wriggers, Peter and Van, T Vu and Stein, Erwin},
date-added = {2021-08-20 11:42:46 -0400},
date-modified = {2021-08-20 11:42:46 -0400},
journal = {Computers \& Structures},
number = {3},
pages = {319--331},
publisher = {Elsevier},
title = {Finite element formulation of large deformation impact-contact problems with friction},
volume = {37},
year = {1990}}
@article{Poulios15,
author = {Poulios, Konstantinos and Renard, Yves},
date-added = {2021-08-20 11:42:11 -0400},
date-modified = {2021-08-20 11:42:11 -0400},
journal = {Computers \& Structures},
pages = {75--90},
publisher = {Elsevier},
title = {An unconstrained integral approximation of large sliding frictional contact between deformable solids},
volume = {153},
year = {2015}}
@book{Bertsekas82,
address = {New York},
author = {Bertsekas, Dimitri P},
call-number = {QA402.5},
date-added = {2021-08-20 11:18:29 -0400},
date-modified = {2021-08-20 11:18:29 -0400},
dewey-call-number = {519.4},
genre = {Mathematical optimization},
isbn = {0120934809},
library-id = {81017612},
publisher = {Academic Press},
title = {Constrained optimization and Lagrange multiplier methods},
year = {1982}}
@incollection{Curnier95,
author = {Curnier, Alain and He, Qi-Chang and Klarbring, Anders},
booktitle = {Contact mechanics},
date-added = {2021-08-20 11:15:58 -0400},
date-modified = {2021-08-20 11:15:58 -0400},
pages = {145--158},
publisher = {Springer},
title = {Continuum mechanics modelling of large deformation contact with friction},
year = {1995}}
@book{Wriggers07,
address = {Wien},
author = {Wriggers, P and Laursen, Tod A},
call-number = {TA353},
date-added = {2021-08-20 11:15:46 -0400},
date-modified = {2021-08-20 11:15:46 -0400},
dewey-call-number = {620.105},
genre = {Contact mechanics},
isbn = {9783211772973},
library-id = {2008273250},
publisher = {Springer},
series = {CISM courses and lectures},
title = {Computational contact mechanics},
volume = {no. 498},
year = {2007},
bdsk-url-1 = {http://www.loc.gov/catdir/enhancements/fy0904/2008273250-d.html}}
@article{Zimmerman18,
abstract = {This study formulates a finite element algorithm for frictional contact of solid materials, accommodating finite deformation and sliding. The algorithm uses a penalty method regularized with an augmented Lagrangian scheme to enforce contact constraints in a nonmortar surface-to-surface approach. Use of a novel kinematical approach to contact detection and enforcement of frictional constraints allows solution of complex problems previously requiring mortar methods or contact smoothing algorithms. Patch tests are satisfied to a high degree of accuracy with a single-pass penalty method, ensuring formulation errors do not affect the solution. The accuracy of the implementation is verified with Hertzian contact, and illustrations demonstrating the ability to handle large deformations and sliding are presented and validated against prior literature. A biomechanically relevant example addressing finger friction during grasping demonstrates the utility of the proposed algorithm. The algorithm is implemented in the open source software febio, and the source code is made available to the general public.},
author = {Zimmerman, Brandon K and Ateshian, Gerard A},
date-added = {2021-08-20 11:02:59 -0400},
date-modified = {2021-08-20 11:02:59 -0400},
doi = {10.1115/1.4040497},
journal = {J Biomech Eng},
journal-full = {Journal of biomechanical engineering},
mesh = {Algorithms; Biomechanical Phenomena; Finite Element Analysis; Friction; Surface Properties},
month = {08},
number = {8},
pmc = {PMC6056201},
pmid = {30003262},
pst = {ppublish},
title = {A Surface-to-Surface Finite Element Algorithm for Large Deformation Frictional Contact in febio},
volume = {140},
year = {2018},
bdsk-url-1 = {https://doi.org/10.1115/1.4040497}}
@article{Ateshian09b,
abstract = {Over the last two decades, considerable progress has been reported in the field of cartilage mechanics that impacts our understanding of the role of interstitial fluid pressurization on cartilage lubrication. Theoretical and experimental studies have demonstrated that the interstitial fluid of cartilage pressurizes considerably under loading, potentially supporting most of the applied load under various transient or steady-state conditions. The fraction of the total load supported by fluid pressurization has been called the fluid load support. Experimental studies have demonstrated that the friction coefficient of cartilage correlates negatively with this variable, achieving remarkably low values when the fluid load support is greatest. A theoretical framework that embodies this relationship has been validated against experiments, predicting and explaining various outcomes, and demonstrating that a low friction coefficient can be maintained for prolonged loading durations under normal physiological function. This paper reviews salient aspects of this topic, as well as its implications for improving our understanding of boundary lubrication by molecular species in synovial fluid and the cartilage superficial zone. Effects of cartilage degeneration on its frictional response are also reviewed.},
author = {Ateshian, Gerard A},
date-added = {2021-08-20 11:02:05 -0400},
date-modified = {2021-08-20 11:02:05 -0400},
doi = {10.1016/j.jbiomech.2009.04.040},
journal = {J Biomech},
journal-full = {Journal of biomechanics},
mesh = {Animals; Cartilage, Articular; Chondroitin ABC Lyase; Compressive Strength; Extracellular Fluid; Friction; Humans; Stress, Mechanical; Synovial Fluid},
month = {Jun},
number = {9},
pages = {1163-76},
pmc = {PMC2758165},
pmid = {19464689},
pst = {ppublish},
title = {The role of interstitial fluid pressurization in articular cartilage lubrication},
volume = {42},
year = {2009},
bdsk-url-1 = {https://doi.org/10.1016/j.jbiomech.2009.04.040}}
@article{Kiousis08,
author = {Kiousis, DE and Gasser, TC and Holzapfel, GA},
date-added = {2021-08-16 11:00:46 -0400},
date-modified = {2021-08-16 11:00:57 -0400},
journal = {International journal for numerical methods in engineering},
number = {7},
pages = {826--855},
publisher = {Wiley Online Library},
title = {Smooth contact strategies with emphasis on the modeling of balloon angioplasty with stenting},
volume = {75},
year = {2008}}
@article{Kiousis09,
author = {Kiousis, Dimitrios E and Wulff, Alexander R and Holzapfel, Gerhard A},
date-added = {2021-08-16 11:00:32 -0400},
date-modified = {2021-08-16 11:00:57 -0400},
journal = {Annals of Biomedical Engineering},
number = {2},
pages = {315--330},
publisher = {Springer},
title = {Experimental studies and numerical analysis of the inflation and interaction of vascular balloon catheter-stent systems},
volume = {37},
year = {2009}}
@article{Skelton97,
author = {Skelton, RP and Maier, HJ and Christ, H-J},
date-added = {2021-06-28 07:15:40 -0400},
date-modified = {2021-06-28 07:15:40 -0400},
journal = {Materials Science and Engineering: A},
number = {2},
pages = {377--390},
publisher = {Elsevier},
title = {The Bauschinger effect, Masing model and the Ramberg--Osgood relation for cyclic deformation in metals},
volume = {238},
year = {1997}}
@article{Nims17,
author = {Nims, Robert J and Ateshian, Gerard A},
date-added = {2021-06-27 13:43:05 -0400},
date-modified = {2021-06-27 13:43:05 -0400},
journal = {Journal of Elasticity},
number = {1-2},
pages = {69--105},
publisher = {Springer},
title = {Reactive constrained mixtures for modeling the solid matrix of biological tissues},
volume = {129},
year = {2017}}
@article{Bonora97,
author = {Bonora, Nicola},
date-added = {2021-06-27 10:34:21 -0400},
date-modified = {2021-06-27 10:34:21 -0400},
journal = {Engineering fracture mechanics},
number = {1-2},
pages = {11--28},
publisher = {Elsevier},
title = {A nonlinear CDM model for ductile failure},
volume = {58},
year = {1997}}
@book{Lemaitre05,
author = {Lemaitre, Jean and Desmorat, Rodrigue},
date-added = {2021-06-27 10:33:56 -0400},
date-modified = {2021-06-27 10:33:56 -0400},
publisher = {Springer Science \& Business Media},
title = {Engineering damage mechanics: ductile, creep, fatigue and brittle failures},
year = {2005}}
@article{Zimmerman21,
abstract = {This study presents a framework for plasticity and elastoplastic damage mechanics by treating materials as reactive solids whose internal composition evolves in response to applied loading. Using the framework of constrained reactive mixtures, plastic deformation is accounted for by allowing loaded bonds within the material to break and reform in a stressed state. Bonds which break and reform represent a new generation with a new reference configuration, which is time-invariant and provided by constitutive assumption. The constitutive relation for the reference configuration of each generation may depend on the selection of a suitable yield measure. The choice of this measure and the resulting plastic flow conditions are constrained by the Clausius-Duhem inequality. We show that this framework remains consistent with classical plasticity approaches and principles. Verification of this reactive plasticity framework, which is implemented in the open source FEBio finite element software (febio.org), is performed against standard 2D and 3D benchmark problems. Damage is incorporated into this reactive framework by allowing loaded bonds to break permanently according to a suitable damage measure, where broken bonds can no longer store free energy. Validation is also demonstrated against experimental data for problems involving plasticity and plastic damage. This study demonstrates that it is possible to formulate simple elastoplasticity and elastoplastic damage models within a consistent framework which uses measures of material mass composition as theoretically observable state variables. This theoretical frame can be expanded in scope to account for more complex behaviors.},
author = {Brandon K. Zimmerman and David Jiang and Jeffrey A. Weiss and Lucas H. Timmins and Gerard A. Ateshian},
date-added = {2021-06-27 10:31:23 -0400},
date-modified = {2021-06-27 10:31:23 -0400},
doi = {https://doi.org/10.1016/j.jmps.2021.104534},
issn = {0022-5096},
journal = {Journal of the Mechanics and Physics of Solids},
keywords = {Reactive constrained mixtures, Continuum thermodynamics, Plasticity, Damage mechanics},
pages = {104534},
title = {On the use of constrained reactive mixtures of solids to model finite deformation isothermal elastoplasticity and elastoplastic damage mechanics},
url = {https://www.sciencedirect.com/science/article/pii/S0022509621001940},
year = {2021},
bdsk-url-1 = {https://www.sciencedirect.com/science/article/pii/S0022509621001940},
bdsk-url-2 = {https://doi.org/10.1016/j.jmps.2021.104534}}
@article{Papanastasiou87,
author = {Papanastasiou, Tasos C},
date-added = {2021-06-13 20:55:49 -0400},
date-modified = {2021-06-13 20:56:02 -0400},
journal = {Journal of Rheology},
number = {5},
pages = {385--404},
publisher = {The Society of Rheology},
title = {Flows of materials with yield},
volume = {31},
year = {1987}}
@article{Drucker49,
author = {Drucker, Daniel Charles},
date-added = {2021-05-16 18:26:09 -0400},
date-modified = {2021-05-16 18:26:18 -0400},
journal = {Journal of Applied Mechanics},
title = {Relation of experiments to mathematical theories of plasticity},
year = {1949}}
@article{Hou89,
abstract = {The objective of this study is to establish and verify the set of boundary conditions at the interface between a biphasic mixture (articular cartilage) and a Newtonian or non-Newtonian fluid (synovial fluid) such that a set of well-posed mathematical problems may be formulated to investigate joint lubrication problems. A "pseudo-no-slip" kinematic boundary condition is proposed based upon the principle that the conditions at the interface between mixtures or mixtures and fluids must reduce to those boundary conditions in single phase continuum mechanics. From this proposed kinematic boundary condition, and balances of mass, momentum and energy, the boundary conditions at the interface between a biphasic mixture and a Newtonian or non-Newtonian fluid are mathematically derived. Based upon these general results, the appropriate boundary conditions needed in modeling the cartilage-synovial fluid-cartilage lubrication problem are deduced. For two simple cases where a Newtonian viscous fluid is forced to flow (with imposed Couette or Poiseuille flow conditions) over a porous-permeable biphasic material of relatively low permeability, the well known empirical Taylor slip condition may be derived using matched asymptotic analysis of the boundary layer at the interface.},
author = {Hou, J S and Holmes, M H and Lai, W M and Mow, V C},
date-added = {2021-03-26 16:13:09 -0400},
date-modified = {2021-03-26 16:13:09 -0400},
doi = {10.1115/1.3168343},
journal = {J Biomech Eng},
journal-full = {Journal of biomechanical engineering},
mesh = {Cartilage, Articular; Joints; Lubrication; Models, Biological; Rheology; Synovial Fluid; Viscosity},
month = {Feb},
number = {1},
pages = {78-87},
pmid = {2747237},
pst = {ppublish},
title = {Boundary conditions at the cartilage-synovial fluid interface for joint lubrication and theoretical verifications},
volume = {111},
year = {1989},
bdsk-url-1 = {https://doi.org/10.1115/1.3168343}}
@article{Shim19,
abstract = {Many physiological systems involve strong interactions between fluids and solids, posing a signicant challenge when modeling biomechanics. The objective of this study was to implement a fluid-structure interaction (FSI) solver in the free, open-source finite element code FEBio (febio.org), that combined the existing solid mechanics and rigid body dynamics solver with a recently-developed computational fluid dynamics (CFD) solver. A novel Galerkin-based finite element FSI formulation was introduced based on mixture theory, where the FSI domain was described as a mixture of fluid and solid constituents that have distinct motions. The mesh was defined on the solid domain, specialized to have zero mass, negligible stiffness and zero frictional interactions with the fluid, whereas the fluid was modeled as isothermal and compressible. The mixture framework provided the foundation for evaluating material time derivatives in a material frame for the solid and in a spatial frame for the fluid. Similar to our recently reported CFD solver, our FSI formulation did not require stabilization methods to achieve good convergence, producing a compact set of equations and code implementation. The code was successfully verified against benchmark problems and an analytical solution for squeeze-film lubrication. It was validated against experimental measurements of the flow rate in a peristaltic pump, and illustrated using non-Newtonian blood flow through a bifurcated carotid artery with a thick arterial wall. The successful formulation and implementation of this FSI solver enhances the multiphysics modeling capabilities in FEBio relevant to the biomechanics and biophysics communities.},
author = {Shim, Jay J and Maas, Steve A and Weiss, Jeffrey A and Ateshian, Gerard A},
date-added = {2021-03-26 16:02:30 -0400},
date-modified = {2021-03-26 16:02:30 -0400},
doi = {10.1115/1.4043031},
journal = {J Biomech Eng},
journal-full = {Journal of biomechanical engineering},
month = {Mar},
pmc = {PMC6528685},
pmid = {30835271},
pst = {aheadofprint},
title = {A Formulation for Fluid Structure-Interactions in FEBio Using Mixture Theory},
year = {2019},
bdsk-url-1 = {https://doi.org/10.1115/1.4043031}}
@article{Gatti20,
abstract = {Pulse wave imaging (PWI) is an ultrasound-based method that allows spatiotemporal mapping of the arterial pulse wave propagation, from which the local pulse wave velocity (PWV) can be derived. Recent reports indicate that PWI can help the assessment of atherosclerotic plaque composition and mechanical properties. However, the effect of the atherosclerotic plaque's geometry and mechanics on the arterial wall distension and local PWV remains unclear. In this study we investigated the accuracy of a finite element (FE) fluid-structure interaction (FSI) approach to predict the velocity of a pulse wave propagating through a stenotic artery with an asymmetrical plaque, as quantified with PWI method. Experiments were designed to compare FE-FSI modeling of the pulse wave propagation through a stenotic artery against PWI obtained with manufactured phantom arteries made of PVA material. FSI-generated spatiotemporal maps were used to estimate PWV at the plaque region and compare it to the experimental results. Velocity of the pulse wave propagation and magnitude of the wall distension were correctly predicted with the FE analysis. In addition, findings indicate that a plaque with a high degree of stenosis (>70%) attenuates the propagation of the pulse pressure wave. Results of this study support the validity of the FE-FSI methods to investigate the effect of arterial wall structural and mechanical properties on the pulse wave propagation. This modeling method can help to guide the optimization of PWI to characterize plaque properties and substantiate clinical findings.},
author = {Gatti, Vittorio and Nauleau, Pierre and Karageorgos, Grigorios Mario and Shim, Jay J and Ateshian, Gerard A and Konofagou, Elisa E},
date-added = {2021-03-26 16:02:27 -0400},
date-modified = {2021-03-26 16:02:27 -0400},
doi = {10.1115/1.4048708},
journal = {J Biomech Eng},
journal-full = {Journal of biomechanical engineering},
month = {Oct},
pmc = {PMC7872000},
pmid = {33030208},
pst = {aheadofprint},
title = {Modelling Pulse Wave Propagation Through a Stenotic Artery with Fluid Structure Interaction: A Validation Study Using Ultrasound Pulse Wave Imaging},
year = {2020},
bdsk-url-1 = {https://doi.org/10.1115/1.4048708}}
@article{Shim21,
abstract = {In biomechanics, solid-fluid mixtures have commonly been used to model the response of hydrated biological tissues. In cartilage mechanics, this type of mixture, where the fluid and solid constituents are both assumed to be intrinsically incompressible, is often called a biphasic material. Various physiological processes involve the interaction of a viscous fluid with a porous-hydrated tissue, as encountered in synovial joint lubrication, cardiovascular mechanics, and respiratory mechanics. The objective of this study was to implement a finite element solver in the open-source software FEBio that models dynamic interactions between a viscous fluid and a biphasic domain, accommodating finite deformations of both domains as well as fluid exchanges between them. For compatibility with our recent implementation of solvers for computational fluid dynamics (CFD) and fluid-structure interactions (FSI), where the fluid is slightly compressible, this study employs a novel hybrid biphasic formulation where the porous skeleton is intrinsically incompressible but the fluid is also slightly compressible. The resulting biphasic-FSI (BFSI) implementation is verified against published analytical and numerical benchmark problems, as well as novel analytical solutions derived for the purposes of this study. An illustration of this BFSI solver is presented for two-dimensional air flow through a simulated face mask under five cycles of breathing, showing that masks significantly reduce air dispersion compared to the no-mask control analysis. The successful formulation and implementation of this BFSI solver offers enhanced multiphysics modeling capabilities that are accessible via an open-source software platform.},
author = {Shim, Jay J and Maas, Steve A and Weiss, Jeffrey A and Ateshian, Gerard A},
date-added = {2021-03-26 16:02:25 -0400},
date-modified = {2021-03-26 16:02:25 -0400},
doi = {10.1115/1.4050646},
journal = {J Biomech Eng},
journal-full = {Journal of biomechanical engineering},
month = {Mar},
pmid = {33764435},
pst = {aheadofprint},
title = {Finite Element Implementation of Biphasic-Fluid Structure Interactions in FEBio},
year = {2021},
bdsk-url-1 = {https://doi.org/10.1115/1.4050646}}
@article{Gultekin19,
author = {G{\"u}ltekin, Osman and Dal, H{\"u}sn{\"u} and Holzapfel, Gerhard A},
date-added = {2020-12-23 09:12:27 -0500},
date-modified = {2020-12-23 09:12:37 -0500},
journal = {Computational mechanics},
number = {3},
pages = {443--453},
publisher = {Springer},
title = {On the quasi-incompressible finite element analysis of anisotropic hyperelastic materials},
volume = {63},
year = {2019}}
@article{Sansour08,
author = {Sansour, Carlo},
date-added = {2020-12-23 09:11:29 -0500},
date-modified = {2020-12-23 09:12:32 -0500},
journal = {European Journal of Mechanics-A/Solids},
number = {1},
pages = {28--39},
publisher = {Elsevier},
title = {On the physical assumptions underlying the volumetric-isochoric split and the case of anisotropy},
volume = {27},
year = {2008}}
@article{Helfenstein10,
author = {Helfenstein, J and Jabareen, M and Mazza, Edoardo and Govindjee, S},
date-added = {2020-12-23 08:58:40 -0500},
date-modified = {2020-12-23 08:58:46 -0500},
journal = {International Journal of Solids and Structures},
number = {16},
pages = {2056--2061},
publisher = {Elsevier},
title = {On non-physical response in models for fiber-reinforced hyperelastic materials},
volume = {47},
year = {2010}}
@article{Simo87a,
author = {Simo, Juan C and Ju, JW},
date-added = {2020-08-23 18:43:17 -0400},
date-modified = {2020-08-23 18:44:13 -0400},
journal = {International journal of solids and structures},
number = {7},
pages = {821--840},
publisher = {Elsevier},
title = {Strain-and stress-based continuum damage models---I. Formulation},
volume = {23},
year = {1987}}
@article{Chaboche81,
author = {Chaboche, Jean-Louis},
date-added = {2020-08-23 18:42:58 -0400},
date-modified = {2020-08-23 18:43:23 -0400},
journal = {Nuclear Engineering and Design},
number = {2},
pages = {233--247},
publisher = {Elsevier},
title = {Continuous damage mechanics---a tool to describe phenomena before crack initiation},
volume = {64},
year = {1981}}
@article{Lemaitre85,
author = {Lemaitre, Jean},
date-added = {2020-08-23 18:42:37 -0400},
date-modified = {2020-08-23 18:43:33 -0400},
journal = {J. Eng. Mater. Technol.},
title = {A continuous damage mechanics model for ductile fracture},
year = {1985}}
@article{Lemaitre84,
author = {Lemaitre, Jean},
date-added = {2020-08-23 18:42:20 -0400},
date-modified = {2020-08-23 18:43:31 -0400},
journal = {Nuclear engineering and design},
number = {2},
pages = {233--245},
publisher = {Elsevier},
title = {How to use damage mechanics},
volume = {80},
year = {1984}}
@book{Rabotnov80,
author = {Rabotnov, Yu N},
date-added = {2020-08-23 18:41:17 -0400},
date-modified = {2020-08-23 18:45:19 -0400},
publisher = {MIT Publishers, Moscow},
title = {Elements of hereditary solid mechanics},
year = {1980}}
@article{Kachanov58,
author = {Kachanov, Lazar M},
date-added = {2020-08-23 18:40:55 -0400},
date-modified = {2020-08-23 18:44:51 -0400},
journal = {International Journal of Fracture},
publisher = {IZVESTIA ACADEMII NAUK SSSR OTDELENIE TEKHNICHESKICH NAUK},
title = {Rupture time under creep conditions},
year = {1958}}
@article{Nims16,
abstract = {This study presents a damage mechanics framework that employs observable state variables to describe damage in isotropic or anisotropic fibrous tissues. In this mixture theory framework, damage is tracked by the mass fraction of bonds that have broken. Anisotropic damage is subsumed in the assumption that multiple bond species may coexist in a material, each having its own damage behaviour. This approach recovers the classical damage mechanics formulation for isotropic materials, but does not appeal to a tensorial damage measure for anisotropic materials. In contrast with the classical approach, the use of observable state variables for damage allows direct comparison of model predictions to experimental damage measures, such as biochemical assays or Raman spectroscopy. Investigations of damage in discrete fibre distributions demonstrate that the resilience to damage increases with the number of fibre bundles; idealizing fibrous tissues using continuous fibre distribution models precludes the modelling of damage. This damage framework was used to test and validate the hypothesis that growth of cartilage constructs can lead to damage of the synthesized collagen matrix due to excessive swelling caused by synthesized glycosaminoglycans. Therefore, alternative strategies must be implemented in tissue engineering studies to prevent collagen damage during the growth process. },
author = {Nims, Robert J and Durney, Krista M and Cigan, Alexander D and Duss{\'e}aux, Antoine and Hung, Clark T and Ateshian, Gerard A},
date-added = {2020-08-23 18:21:23 -0400},
date-modified = {2020-08-23 18:21:32 -0400},
doi = {10.1098/rsfs.2015.0063},
journal = {Interface Focus},
journal-full = {Interface focus},
keywords = {cartilage tissue engineering; damage mechanics; fibrous tissues},
month = {Feb},
number = {1},
pages = {20150063},
pmc = {PMC4686240},
pmid = {26855751},
pst = {ppublish},
title = {Continuum theory of fibrous tissue damage mechanics using bond kinetics: application to cartilage tissue engineering},
volume = {6},
year = {2016},
bdsk-url-1 = {https://doi.org/10.1098/rsfs.2015.0063}}
@article{Hou18,
author = {Hou, Jay C and Maas, Steve A and Weiss, Jeffrey A and Ateshian, Gerard A},
date-added = {2020-07-30 18:51:23 -0400},
date-modified = {2020-07-30 18:51:34 -0400},
journal = {Journal of Biomechanical Engineering},
number = {12},
publisher = {American Society of Mechanical Engineers Digital Collection},
title = {Finite Element Formulation of Multiphasic Shell Elements for Cell Mechanics Analyses in FEBio},
volume = {140},
year = {2018}}
@article{Simo93,
author = {Simo, JC and Armero, F and Taylor, RL},
date-added = {2020-07-30 17:19:55 -0400},
date-modified = {2020-07-30 17:20:02 -0400},
journal = {Computer methods in applied mechanics and engineering},
number = {3-4},
pages = {359--386},
publisher = {Elsevier},
title = {Improved versions of assumed enhanced strain tri-linear elements for 3D finite deformation problems},
volume = {110},
year = {1993}}
@article{Simo90,
author = {Simo, Juan C and Rifai, MS10587420724},
date-added = {2020-07-30 17:18:41 -0400},
date-modified = {2020-07-30 17:18:55 -0400},
journal = {International journal for numerical methods in engineering},
number = {8},
pages = {1595--1638},
publisher = {Wiley Online Library},
title = {A class of mixed assumed strain methods and the method of incompatible modes},
volume = {29},
year = {1990}}
@article{Vu-Quoc03,
author = {Vu-Quoc, L and Tan, XG},
date-added = {2020-07-30 17:16:13 -0400},
date-modified = {2020-07-30 17:16:31 -0400},
journal = {Computer methods in applied mechanics and engineering},
number = {9-10},
pages = {975--1016},
publisher = {Elsevier},
title = {Optimal solid shells for non-linear analyses of multilayer composites. I. Statics},
volume = {192},
year = {2003}}
@article{Klinkel99,
author = {Klinkel, S and Gruttmann, F and Wagner, W},
date-added = {2020-07-30 17:15:51 -0400},
date-modified = {2020-07-30 17:16:25 -0400},
journal = {Computers \& Structures},
number = {1},
pages = {43--62},
publisher = {Elsevier},
title = {A continuum based three-dimensional shell element for laminated structures},
volume = {71},
year = {1999}}
@article{Bischoff97,
author = {Bischoff, M and Ramm, E},
date-added = {2020-07-30 17:15:20 -0400},
date-modified = {2020-07-30 17:15:29 -0400},
journal = {International Journal for Numerical Methods in Engineering},
number = {23},
pages = {4427--4449},
publisher = {Wiley Online Library},
title = {Shear deformable shell elements for large strains and rotations},
volume = {40},
year = {1997}}
@article{Betsch95,
author = {Betsch, P and Stein, E},
date-added = {2020-07-30 17:14:57 -0400},
date-modified = {2020-07-30 17:15:04 -0400},
journal = {Communications in Numerical Methods in Engineering},
number = {11},
pages = {899--909},
publisher = {Wiley Online Library},
title = {An assumed strain approach avoiding artificial thickness straining for a non-linear 4-node shell element},
volume = {11},
year = {1995}}
@article{Bathe86,
author = {Bathe, Klaus-J{\"u}rgen and Dvorkin, Eduardo N},
date-added = {2020-07-30 17:14:19 -0400},
date-modified = {2020-07-30 17:14:24 -0400},
journal = {International journal for numerical methods in engineering},
number = {3},
pages = {697--722},
publisher = {Wiley Online Library},
title = {A formulation of general shell elements---the use of mixed interpolation of tensorial components},
volume = {22},
year = {1986}}
@article{MacNeal78,
author = {MacNeal, Richard H},
date-added = {2020-07-30 17:13:45 -0400},
date-modified = {2020-07-30 17:13:55 -0400},
journal = {Computers \& Structures},
number = {2},
pages = {175--183},
publisher = {Elsevier},
title = {A simple quadrilateral shell element},
volume = {8},
year = {1978}}
@article{Bischoff18,
author = {Bischoff, Manfred and Ramm, E and Irslinger, J},
date-added = {2020-07-30 17:12:54 -0400},
date-modified = {2020-07-30 17:13:05 -0400},
journal = {Encyclopedia of Computational Mechanics Second Edition},
pages = {1--86},
publisher = {Wiley Online Library},
title = {Models and finite elements for thin-walled structures},
year = {2018}}
@article{Gasser06,
abstract = {Constitutive relations are fundamental to the solution of problems in continuum mechanics, and are required in the study of, for example, mechanically dominated clinical interventions involving soft biological tissues. Structural continuum constitutive models of arterial layers integrate information about the tissue morphology and therefore allow investigation of the interrelation between structure and function in response to mechanical loading. Collagen fibres are key ingredients in the structure of arteries. In the media (the middle layer of the artery wall) they are arranged in two helically distributed families with a small pitch and very little dispersion in their orientation (i.e. they are aligned quite close to the circumferential direction). By contrast, in the adventitial and intimal layers, the orientation of the collagen fibres is dispersed, as shown by polarized light microscopy of stained arterial tissue. As a result, continuum models that do not account for the dispersion are not able to capture accurately the stress-strain response of these layers. The purpose of this paper, therefore, is to develop a structural continuum framework that is able to represent the dispersion of the collagen fibre orientation. This then allows the development of a new hyperelastic free-energy function that is particularly suited for representing the anisotropic elastic properties of adventitial and intimal layers of arterial walls, and is a generalization of the fibre-reinforced structural model introduced by Holzapfel & Gasser (Holzapfel & Gasser 2001 Comput. Meth. Appl. Mech. Eng. 190, 4379-4403) and Holzapfel et al. (Holzapfel et al. 2000 J. Elast. 61, 1-48). The model incorporates an additional scalar structure parameter that characterizes the dispersed collagen orientation. An efficient finite element implementation of the model is then presented and numerical examples show that the dispersion of the orientation of collagen fibres in the adventitia of human iliac arteries has a significant effect on their mechanical response.},
author = {Gasser, T Christian and Ogden, Ray W and Holzapfel, Gerhard A},
date-added = {2020-02-27 09:16:38 -0500},
date-modified = {2020-02-27 09:16:38 -0500},
doi = {10.1098/rsif.2005.0073},
journal = {J R Soc Interface},
journal-full = {Journal of the Royal Society, Interface},
mesh = {Animals; Anisotropy; Arteries; Biomechanical Phenomena; Elasticity; Fibrillar Collagens; Humans; Models, Cardiovascular; Protein Conformation; Stress, Mechanical},
month = {Feb},
number = {6},
pages = {15-35},
pmc = {PMC1618483},
pmid = {16849214},
pst = {ppublish},
title = {Hyperelastic modelling of arterial layers with distributed collagen fibre orientations},
volume = {3},
year = {2006},
bdsk-url-1 = {https://doi.org/10.1098/rsif.2005.0073}}
@article{Criscione00,
author = {Criscione, John C and Humphrey, Jay D and Douglas, Andrew S and Hunter, William C},
date-added = {2019-09-07 09:58:47 -0400},
date-modified = {2019-09-07 09:59:18 -0400},
journal = {J. Mech. Phys. Solids},
number = {12},
pages = {2445--2465},
publisher = {Elsevier},
title = {An invariant basis for natural strain which yields orthogonal stress response terms in isotropic hyperelasticity},
volume = {48},
year = {2000}}
@article{Ateshian18,
abstract = {The mechanics of biological fluids is an important topic in biomechanics, often requiring the use of computational tools to analyze problems with realistic geometries and material properties. This study describes the formulation and implementation of a finite element framework for computational fluid dynamics (CFD) in FEBio, a free software designed to meet the computational needs of the biomechanics and biophysics communities. This formulation models nearly incompressible flow with a compressible isothermal formulation that uses a physically realistic value for the fluid bulk modulus. It employs fluid velocity and dilatation as essential variables: The virtual work integral enforces the balance of linear momentum and the kinematic constraint between fluid velocity and dilatation, while fluid density varies with dilatation as prescribed by the axiom of mass balance. Using this approach, equal-order interpolations may be used for both essential variables over each element, contrary to traditional mixed formulations that must explicitly satisfy the inf-sup condition. The formulation accommodates Newtonian and non-Newtonian viscous responses as well as inviscid fluids. The efficiency of numerical solutions is enhanced using Broyden's quasi-Newton method. The results of finite element simulations were verified using well-documented benchmark problems as well as comparisons with other free and commercial codes. These analyses demonstrated that the novel formulation introduced in FEBio could successfully reproduce the results of other codes. The analogy between this CFD formulation and standard finite element formulations for solid mechanics makes it suitable for future extension to fluid-structure interactions (FSIs).},
author = {Ateshian, Gerard A and Shim, Jay J and Maas, Steve A and Weiss, Jeffrey A},
date-added = {2018-08-05 11:55:36 -0400},
date-modified = {2018-08-05 11:55:36 -0400},
doi = {10.1115/1.4038716},
journal = {J Biomech Eng},
journal-full = {Journal of biomechanical engineering},
month = {Feb},
number = {2},
pmc = {PMC5816258},
pmid = {29238817},
pst = {ppublish},
title = {Finite Element Framework for Computational Fluid Dynamics in FEBio},
volume = {140},
year = {2018},
bdsk-url-1 = {https://doi.org/10.1115/1.4038716}}
@article{Bazilevs08,
author = {Bazilevs, Yuri and Calo, Victor M and Hughes, Thomas JR and Zhang, Yongjie},
date-added = {2018-03-11 22:10:43 +0000},
date-modified = {2018-03-11 22:10:50 +0000},
journal = {Computational mechanics},
number = {1},
pages = {3--37},
publisher = {Springer},
title = {Isogeometric fluid-structure interaction: theory, algorithms, and computations},
volume = {43},
year = {2008}}
@article{Simo91a,
author = {Simo, Juan Carlos and Wong, Kachung Kevin},
date-added = {2017-05-17 11:32:46 +0000},
date-modified = {2017-05-17 11:32:55 +0000},
journal = {International journal for numerical methods in engineering},
number = {1},
pages = {19--52},
publisher = {Wiley Online Library},
title = {Unconditionally stable algorithms for rigid body dynamics that exactly preserve energy and momentum},
volume = {31},
year = {1991}}
@article{Puso02,
author = {Puso, Michael Anthony},
date-added = {2017-05-17 11:29:50 +0000},
date-modified = {2017-05-17 11:30:01 +0000},
journal = {International Journal for numerical methods in engineering},
number = {6},
pages = {1393--1414},
publisher = {Wiley Online Library},
title = {An energy and momentum conserving method for rigid--flexible body dynamics},
volume = {53},
year = {2002}}
@article{Gonzalez00,
author = {Gonzalez, Oscar},
date-added = {2017-05-17 11:29:12 +0000},
date-modified = {2017-05-17 11:29:18 +0000},
journal = {Computer Methods in Applied Mechanics and Engineering},
number = {13},
pages = {1763--1783},
publisher = {Elsevier},
title = {Exact energy and momentum conserving algorithms for general models in nonlinear elasticity},
volume = {190},
year = {2000}}
@article{Simo92b,
author = {Simo, Juan C and Tarnow, N and Wong, KK},
date-added = {2017-05-17 11:28:15 +0000},
date-modified = {2017-05-17 11:28:30 +0000},
journal = {Computer methods in applied mechanics and engineering},
number = {1},
pages = {63--116},
publisher = {Elsevier},
title = {Exact energy-momentum conserving algorithms and symplectic schemes for nonlinear dynamics},
volume = {100},
year = {1992}}
@article{Simo92a,
author = {Simo, JC and Tarnow, Nils},
date-added = {2017-05-17 11:28:00 +0000},
date-modified = {2017-05-17 11:28:27 +0000},
journal = {Zeitschrift f{\"u}r angewandte Mathematik und Physik (ZAMP)},
number = {5},
pages = {757--792},
publisher = {Springer},
title = {The discrete energy-momentum method. Conserving algorithms for nonlinear elastodynamics},
volume = {43},
year = {1992}}
@article{Hilber77,
author = {Hilber, Hans M and Hughes, Thomas JR and Taylor, Robert L},
date-added = {2017-05-17 11:26:42 +0000},
date-modified = {2017-05-17 11:26:49 +0000},
journal = {Earthquake Engineering \& Structural Dynamics},
number = {3},
pages = {283--292},
publisher = {Wiley Online Library},
title = {Improved numerical dissipation for time integration algorithms in structural dynamics},
volume = {5},
year = {1977}}
@article{Vignon-Clementel06,
author = {Vignon-Clementel, Irene E and Figueroa, C Alberto and Jansen, Kenneth E and Taylor, Charles A},
date-added = {2017-05-17 00:38:10 +0000},
date-modified = {2017-05-17 00:38:10 +0000},
journal = {Comput. Methods Appl. Mech. Engrg.},
journal-full = {Computer methods in applied mechanics and engineering},
number = {29},
pages = {3776--3796},
publisher = {Elsevier},
title = {Outflow boundary conditions for three-dimensional finite element modeling of blood flow and pressure in arteries},
volume = {195},
year = {2006}}
@article{Esmaily-Moghadam11,
author = {Esmaily Moghadam, Mahdi and Bazilevs, Yuri and Hsia, Tain-Yen and Vignon-Clementel, Irene E and Marsden, Alison L},
date-added = {2017-05-17 00:37:42 +0000},
date-modified = {2017-05-17 00:37:42 +0000},
journal = {Comput. Mech.},
journal-full = {Computational Mechanics},
number = {3},
pages = {277--291},
publisher = {Springer},
title = {A comparison of outlet boundary treatments for prevention of backflow divergence with relevance to blood flow simulations},
volume = {48},
year = {2011}}
@article{Bazilevs09,
author = {Bazilevs, Y and Gohean, JR and Hughes, TJR and Moser, RD and Zhang, Y},
date-added = {2017-05-17 00:37:37 +0000},
date-modified = {2017-05-17 00:37:37 +0000},
journal = {Comput. Methods Appl. Mech. Engrg.},
journal-full = {Computer Methods in Applied Mechanics and Engineering},
number = {45},
pages = {3534--3550},
publisher = {Elsevier},
title = {Patient-specific isogeometric fluid--structure interaction analysis of thoracic aortic blood flow due to implantation of the {Jarvik} 2000 left ventricular assist device},
volume = {198},
year = {2009}}
@book{Reddy01,
address = {Boca Raton, FL},
author = {Reddy, J. N. and Gartling, David K.},
date-added = {2017-05-17 00:36:56 +0000},
date-modified = {2017-05-17 00:36:56 +0000},
edition = {2nd},
isbn = {084932355X (alk. paper)},
pages = {469 p.},
publisher = {CRC Press},
title = {The finite element method in heat transfer and fluid dynamics},
type = {Book},
url = {Publisher description http://www.loc.gov/catdir/enhancements/fy0646/00048638-d.html},
year = {2001},
bdsk-url-1 = {Publisher%20description%20http://www.loc.gov/catdir/enhancements/fy0646/00048638-d.html}}
@article{Cho91,
abstract = {Effects of the non-Newtonian viscosity of blood on a flow in a coronary arterial casting of man were studied numerically using a finite element method. Various constitutive models were examined to model the non-Newtonian viscosity of blood and their model constants were summarized. A method to incorporate the non-Newtonian viscosity of blood was introduced so that the viscosity could be calculated locally. The pressure drop, wall shear stress and velocity profiles for the case of blood viscosity were compared for the case of Newtonian viscosity (0.0345 poise). The effect of the non-Newtonian viscosity of blood on the overall pressure drop across the arterial casting was found to be significant at a flow of the Reynolds number of 100 or less. Also in the region of flow separation or recirculation, the non-Newtonian viscosity of blood yields larger wall shear stress than the Newtonian case. The origin of the non-Newtonian viscosity of blood was discussed in relation to the viscoelasticity and yield stress of blood.},
author = {Cho, Y I and Kensey, K R},
date-added = {2017-05-17 00:24:02 +0000},
date-modified = {2017-05-17 00:24:02 +0000},
journal = {Biorheology},
journal-full = {Biorheology},
mesh = {Biomechanical Phenomena; Blood Pressure; Blood Viscosity; Coronary Disease; Coronary Vessels; Humans; Models, Biological; Regional Blood Flow},
number = {3-4},
pages = {241-62},
pmid = {1932716},
pst = {ppublish},
title = {Effects of the non-{Newtonian} viscosity of blood on flows in a diseased arterial vessel. {Part} 1: {Steady} flows},
volume = {28},
year = {1991}}
@book{Panton06,
author = {Panton, Ronald L},
date-added = {2017-05-17 00:23:49 +0000},
date-modified = {2017-05-17 00:23:49 +0000},
publisher = {John Wiley \& Sons},
title = {Incompressible flow},
year = {2006}}
@book{Reddy08,
address = {New York},
author = {Reddy, J. N.},
date-added = {2017-05-17 00:23:33 +0000},
date-modified = {2017-05-17 00:23:33 +0000},
isbn = {9780521870443 (hardback) 0521870445 (hardback)},
pages = {xiv, 354 p.},
publisher = {Cambridge University Press},
title = {An introduction to continuum mechanics : with applications},
type = {Book},
url = {Table of contents only http://www.loc.gov/catdir/toc/ecip0720/2007025254.html Contributor biographical information http://www.loc.gov/catdir/enhancements/fy0729/2007025254-b.html Publisher description http://www.loc.gov/catdir/enhancements/fy0729/2007025254-d.html},
year = {2008},
bdsk-url-1 = {Table%20of%20contents%20only%20http://www.loc.gov/catdir/toc/ecip0720/2007025254.html%20Contributor%20biographical%20information%20http://www.loc.gov/catdir/enhancements/fy0729/2007025254-b.html%20Publisher%20description%20http://www.loc.gov/catdir/enhancements/fy0729/2007025254-d.html}}
@article{Jansen00,
author = {Jansen, Kenneth E and Whiting, Christian H and Hulbert, Gregory M},
date-added = {2017-05-17 00:20:46 +0000},
date-modified = {2017-05-17 00:20:46 +0000},
journal = {Comput. Methods Appl. Mech. Engrg.},
journal-full = {Computer Methods in Applied Mechanics and Engineering},
number = {3},
pages = {305--319},
publisher = {Elsevier},
title = {A generalized-$\alpha$ method for integrating the filtered {Navier}--{Stokes} equations with a stabilized finite element method},
volume = {190},
year = {2000}}
@article{Ateshian12,
abstract = {A finite element formulation of neutral solute transport across a contact interface between deformable porous media is implemented and validated against analytical solutions. By reducing the integral statements of external virtual work on the two contacting surfaces into a single contact integral, the algorithm automatically enforces continuity of solute molar flux across the contact interface, whereas continuity of the effective solute concentration (a measure of the solute mechano-chemical potential) is achieved using a penalty method. This novel formulation facilitates the analysis of problems in biomechanics where the transport of metabolites across contact interfaces of deformable tissues may be of interest. This contact algorithm is the first to address solute transport across deformable interfaces, and is made available in the public domain, open-source finite element code FEBio (http://www.febio.org).},
author = {Ateshian, Gerard A and Maas, Steve and Weiss, Jeffrey A},
date-added = {2017-01-22 16:40:27 +0000},
date-modified = {2017-01-22 16:40:27 +0000},
doi = {10.1016/j.jbiomech.2012.01.003},
journal = {J Biomech},
journal-full = {Journal of biomechanics},
mesh = {Algorithms; Animals; Biological Transport; Finite Element Analysis; Humans; Models, Biological; Porosity},
month = {Apr},
number = {6},
pages = {1023-7},
pmc = {PMC3351088},
pmid = {22281406},
pst = {ppublish},
title = {Solute transport across a contact interface in deformable porous media},
volume = {45},
year = {2012},
bdsk-url-1 = {http://dx.doi.org/10.1016/j.jbiomech.2012.01.003}}
@book{Bathe82,
address = {Englewood Cliffs, N.J.},
author = {Bathe, Klaus-J{\"u}rgen},
call-number = {TA347.F5},
date-added = {2016-12-27 19:16:12 +0000},
date-modified = {2016-12-27 19:16:12 +0000},
dewey-call-number = {620/.00422},
genre = {Finite element method},
isbn = {0133173054},
library-id = {81012067},
publisher = {Prentice-Hall},
title = {Finite element procedures in engineering analysis},
year = {1982}}
@article{Azeloglu08,
abstract = {The arterial wall contains a significant amount of charged proteoglycans, which are inhomogeneously distributed, with the greatest concentrations in the intimal and medial layers. The hypothesis of this study is that the transmural distribution of proteoglycans plays a significant role in regulating residual stresses in the arterial wall. This hypothesis was first tested theoretically, using the framework of mixture theory for charged hydrated tissues, and then verified experimentally by measuring the opening angle of rat aorta in NaCl solutions of various ionic strengths. A three-dimensional finite element model of aortic ring, using realistic values of the solid matrix shear modulus and proteoglycan fixed-charge density, yielded opening angles and changes with osmolarity comparable to values reported in the literature. Experimentally, the mean opening angle in isotonic saline (300 mosM) was 15 +/- 17 degrees and changed to 4 +/- 19 degrees and 73 +/- 18 degrees under hypertonic (2,000 mosM) and hypotonic (0 mosM) conditions, respectively (n = 16). In addition, the opening angle in isotonic (300 mosM) sucrose, an uncharged molecule, was 60 +/- 16 degrees (n = 11), suggesting that the charge effect, not cellular swelling, was the major underlying mechanism for these observations. The extent of changes in opening angle under osmotic challenges suggests that transmural heterogeneity of fixed-charge density plays a crucial role in governing the zero-stress configuration of the aorta. A significant implication of this finding is that arterial wall remodeling in response to altered wall stresses may occur via altered deposition of proteoglycans across the wall thickness, providing a novel mechanism for regulating mechanical homeostasis in vascular tissue.},
author = {Azeloglu, Evren U and Albro, Michael B and Thimmappa, Vikrum A and Ateshian, Gerard A and Costa, Kevin D},
date-added = {2016-12-27 19:05:22 +0000},
date-modified = {2016-12-27 19:05:22 +0000},
doi = {10.1152/ajpheart.01027.2007},
journal = {Am J Physiol Heart Circ Physiol},
journal-full = {American journal of physiology. Heart and circulatory physiology},
mesh = {Algorithms; Animals; Aorta, Thoracic; Finite Element Analysis; Glycosaminoglycans; In Vitro Techniques; Male; Osmolar Concentration; Poisson Distribution; Proteoglycans; Rats; Rats, Sprague-Dawley; Stress, Physiological},
month = {Mar},
number = {3},
pages = {H1197-205},
pmid = {18156194},
pst = {ppublish},
title = {Heterogeneous transmural proteoglycan distribution provides a mechanism for regulating residual stresses in the aorta},
volume = {294},
year = {2008},
bdsk-url-1 = {http://dx.doi.org/10.1152/ajpheart.01027.2007}}
@book{Holzapfel00,
address = {Chichester},
author = {Holzapfel, Gerhard A},
call-number = {QA808.2},
date-added = {2016-12-27 18:45:16 +0000},
date-modified = {2016-12-27 18:45:16 +0000},
dewey-call-number = {531},
genre = {Continuum mechanics},
isbn = {047182304X (acid-free paper)},
library-id = {00027315},
publisher = {Wiley},
title = {Nonlinear solid mechanics: a continuum approach for engineering},
url = {http://www.loc.gov/catdir/description/wiley035/00027315.html},
year = {2000},
bdsk-url-1 = {http://www.loc.gov/catdir/description/wiley035/00027315.html}}
@book{Lai10,
address = {Amsterdam},
author = {Lai, W. Michael and Rubin, David and Krempl, Erhard},
call-number = {QA808.2},
date-added = {2016-12-27 18:43:23 +0000},
date-modified = {2016-12-27 18:43:23 +0000},
dewey-call-number = {531},
edition = {4th ed},
genre = {Continuum mechanics},
isbn = {9780750685603 (hardcover)},
library-id = {2009003607},
publisher = {Butterworth-Heinemann/Elsevier},
title = {Introduction to continuum mechanics},
year = {2010}}
@article{Weinans92,
abstract = {The process of adaptive bone remodeling can be described mathematically and simulated in a computer model, integrated with the finite element method. In the model discussed here, cortical and trabecular bone are described as continuous materials with variable density. The remodeling rule applied to simulate the remodeling process in each element individually is, in fact, an objective function for an optimization process, relative to the external load. Its purpose is to obtain a constant, preset value for the strain energy per unit bone mass, by adapting the density. If an element in the structure cannot achieve that, it either turns to its maximal density (cortical bone) or resorbs completely. It is found that the solution obtained in generally a discontinuous patchwork. For a two-dimensional proximal femur model this patchwork shows a good resemblance with the density distribution of a real proximal femur. It is shown that the discontinuous end configuration is dictated by the nature of the differential equations describing the remodeling process. This process can be considered as a nonlinear dynamical system with many degrees of freedom, which behaves divergent relative to the objective, leading to many possible solutions. The precise solution is dependent on the parameters in the remodeling rule, the load and the initial conditions. The feedback mechanism in the process is self-enhancing, denser bone attracts more strain energy, whereby the bone becomes even more dense. It is suggested that this positive feedback of the attractor state (the strain energy field) creates order in the end configuration. In addition, the process ensures that the discontinuous end configuration is a structure with a relatively low mass, perhaps a minimal-mass structure, although this is no explicit objective in the optimization process. It is hypothesized that trabecular bone is a chaotically ordered structure which can be considered as a fractal with characteristics of optimal mechanical resistance and minimal mass, of which the actual morphology depends on the local (internal) loading characteristics, the sensor-cell density and the degree of mineralization.},
author = {Weinans, H and Huiskes, R and Grootenboer, H J},
date-added = {2016-12-22 04:40:28 +0000},
date-modified = {2016-12-22 04:40:28 +0000},
journal = {J Biomech},
journal-full = {Journal of biomechanics},
mesh = {Bone Density; Bone Remodeling; Bone Resorption; Bone and Bones; Computer Simulation; Elasticity; Femur; Femur Head; Humans; Models, Biological; Periosteum; Stress, Mechanical},
month = {Dec},
number = {12},
pages = {1425-41},
pmid = {1491020},
pst = {ppublish},
title = {The behavior of adaptive bone-remodeling simulation models},
volume = {25},
year = {1992}}
@article{Albro09,
abstract = {This study reports experimental measurements of solute diffusivity and partition coefficient for various solute concentrations and gel porosities, and proposes novel constitutive relations to describe these observed values. The longer-term aim is to explore the theoretical ramifications of accommodating variations in diffusivity and partition coefficient with solute concentration and tissue porosity, and investigate whether they might suggest novel mechanisms not previously recognized in the field of solute transport in deformable porous media. The study implements a model transport system of agarose hydrogels to investigate the effect of solute concentration and hydrogel porosity on the transport of dextran polysaccharides. The proposed phenomenological constitutive relations are shown to provide better fits of experimental results than prior models proposed in the literature based on the microstructure of the gel. While these constitutive models were developed for the transport of dextran in agarose hydrogels, it is expected that they may also be applied to the transport of similar molecular weight solutes in other porous media. This quantification can assist in the application of biophysical models that describe biological transport in deformable tissues, as well as the cell cytoplasm.},
author = {Albro, Michael B and Rajan, Vikram and Li, Roland and Hung, Clark T and Ateshian, Gerard A},
date-added = {2016-12-22 04:38:26 +0000},
date-modified = {2025-12-16 14:06:51 -0500},
doi = {10.1007/s12195-009-0076-4},
journal = {Cell Mol Bioeng},
journal-full = {Cellular and molecular bioengineering},
keywords = {Collagen},
month = {Sep},
number = {3},
pages = {295-305},
pmc = {PMC2996616},
pmid = {21152414},
pst = {ppublish},
title = {Characterization of the Concentration-Dependence of Solute Diffusivity and Partitioning in a Model Dextran-Agarose Transport System},
volume = {2},
year = {2009},
bdsk-url-1 = {http://dx.doi.org/10.1007/s12195-009-0076-4}}
@article{Simo87,
author = {Simo, JC},
date-added = {2016-12-22 04:33:15 +0000},
date-modified = {2016-12-22 04:33:27 +0000},
journal = {Computer methods in applied mechanics and engineering},
number = {2},
pages = {153--173},
publisher = {Elsevier},
title = {On a fully three-dimensional finite-strain viscoelastic damage model: formulation and computational aspects},
volume = {60},
year = {1987}}
@article{Ateshian15,
abstract = {This study presents a framework for viscoelasticity where the free energy density depends on the stored energy of intact strong and weak bonds, where weak bonds break and reform in response to loading. The stress is evaluated by differentiating the free energy density with respect to the deformation gradient, similar to the conventional approach for hyperelasticity. The breaking and reformation of weak bonds is treated as a reaction governed by the axiom of mass balance, where the constitutive relation for the mass supply governs the bond kinetics. The evolving mass contents of these weak bonds serve as observable state variables. Weak bonds reform in an energy-free and stress-free state, therefore their reference configuration is given by the current configuration at the time of their reformation. A principal advantage of this formulation is the availability of a strain energy density function that depends only on observable state variables, also allowing for a separation of the contributions of strong and weak bonds. The Clausius-Duhem inequality is satisfied by requiring that the net free energy from all breaking bonds must be decreasing at all times. In the limit of infinitesimal strains, linear stress-strain responses and first-order kinetics for breaking and reforming of weak bonds, the reactive framework reduces exactly to classical linear viscoelasticity. For large strains, the reactive and classical quasilinear viscoelasticity theories produce different equations, though responses to standard loading configurations behave similarly. This formulation complements existing tools for modeling the nonlinear viscoelastic response of biological soft tissues under large deformations.},
author = {Ateshian, Gerard A},
date-added = {2016-12-22 04:31:42 +0000},
date-modified = {2016-12-22 04:31:42 +0000},
doi = {10.1016/j.jbiomech.2015.02.019},
journal = {J Biomech},
journal-full = {Journal of biomechanics},
keywords = {Mixture theory; Reaction kinetics; Soft tissue mechanics; Viscoelasticity},
mesh = {Elasticity; Kinetics; Models, Theoretical; Viscosity},
month = {Apr},
number = {6},
pages = {941-7},
pmc = {PMC4422403},
pmid = {25757663},
pst = {ppublish},
title = {Viscoelasticity using reactive constrained solid mixtures},
volume = {48},
year = {2015},
bdsk-url-1 = {http://dx.doi.org/10.1016/j.jbiomech.2015.02.019}}
@article{Lai91,
abstract = {Swelling of articular cartilage depends on its fixed charge density and distribution, the stiffness of its collagen-proteoglycan matrix, and the ion concentrations in the interstitium. A theory for a tertiary mixture has been developed, including the two fluid-solid phases (biphasic), and an ion phase, representing cation and anion of a single salt, to describe the deformation and stress fields for cartilage under chemical and/or mechanical loads. This triphasic theory combines the physico-chemical theory for ionic and polyionic (proteoglycan) solutions with the biphasic theory for cartilage. The present model assumes the fixed charge groups to remain unchanged, and that the counter-ions are the cations of a single-salt of the bathing solution. The momentum equation for the neutral salt and for the intersitial water are expressed in terms of their chemical potentials whose gradients are the driving forces for their movements. These chemical potentials depend on fluid pressure p, salt concentration c, solid matrix dilatation e and fixed charge density cF. For a uni-uni valent salt such as NaCl, they are given by mu i = mu io + (RT/Mi)ln[gamma 2 +/- c(c + cF)] and mu w = mu wo + [p-RT phi (2c + cF) + Bwe]/pwT, where R, T, Mi, gamma +/-, phi, pwT and Bw are universal gas constant, absolute temperature, molecular weight, mean activity coefficient of salt, osmotic coefficient, true density of water, and a coupling material coefficient, respectively. For infinitesimal strains and material isotropy, the stress-strain relationship for the total mixture stress is sigma = - pI-TcI + lambda s(trE)I + 2 musE, where E is the strain tensor and (lambda s, mu s) are the Lam{\'e} constants of the elastic solid matrix. The chemical-expansion stress (-Tc) derives from the charge-to-charge repulsive forces within the solid matrix. This theory can be applied to both equilibrium and non-equilibrium problems. For equilibrium free swelling problems, the theory yields the well known Donnan equilibrium ion distribution and osmotic pressure equations, along with an analytical expression for the "pre-stress" in the solid matrix. For the confined-compression swelling problem, it predicts that the applied compressive stress is shared by three load support mechanisms: 1) the Donnan osmotic pressure; 2) the chemical-expansion stress; and 3) the solid matrix elastic stress. Numerical calculations have been made, based on a set of equilibrium free-swelling and confined-compression data, to assess the relative contribution of each mechanism to load support. Our results show that all three mechanisms are important in determining the overall compressive stiffness of cartilage.},
author = {Lai, W M and Hou, J S and Mow, V C},
date-added = {2016-12-22 04:22:59 +0000},
date-modified = {2016-12-22 04:22:59 +0000},
journal = {J Biomech Eng},
journal-full = {Journal of biomechanical engineering},
mesh = {Biomechanical Phenomena; Cartilage, Articular; Elasticity; Models, Biological; Osmosis; Solutions; Stress, Mechanical},
month = {Aug},
number = {3},
pages = {245-58},
pmid = {1921350},
pst = {ppublish},
title = {A triphasic theory for the swelling and deformation behaviors of articular cartilage},
volume = {113},
year = {1991}}
@article{Overbeek56,
author = {Overbeek, J T},
date-added = {2016-12-22 04:22:34 +0000},
date-modified = {2020-08-23 18:44:28 -0400},
journal = {Prog Biophys Biophys Chem},
journal-full = {Progress in biophysics and biophysical chemistry},
keywords = {CHEMISTRY, PHYSICAL},
mesh = {Chemical Phenomena; Chemistry, Physical; Physical Examination},
pages = {57-84},
pmid = {13420188},
pst = {ppublish},
title = {The Donnan equilibrium},
volume = {6},
year = {1956}}
@article{Carter77,
abstract = {Compression tests of human and bovine trabecular bone specimens with and without marrow in situ were conducted at strain rates of from 0.001 to 10.0 per second. A porous platen above the specimens allowed the escape of marrow during testing. The presence of marrow increased the strength, modulus, and energy absorption of specimens only at the highest strain rate of 10.0 per second. This enhancement of material properties at the highest strain rate was due primarily to the restricted viscous flow of marrow through the platen rather than the flow through the pores of the trabecular bone. In specimens without marrow, the strength was proportional to the square of the apparent density and the modulus was proportional to the cube of the apparent density. Both strength and modulus were approximately proportional to the strain rate raised to the 0.06 power. These power relationships, which were shown to hold for all bone in the skeleton, allow meaningful predictions of bone tissue strength and stiffness based on in vivo density measurements.},
author = {Carter, D R and Hayes, W C},
date-added = {2016-12-22 04:21:10 +0000},
date-modified = {2016-12-22 04:21:10 +0000},
journal = {J Bone Joint Surg Am},
journal-full = {The Journal of bone and joint surgery. American volume},
mesh = {Animals; Bone and Bones; Cattle; Humans; Stress, Mechanical; Tensile Strength},
month = {Oct},
number = {7},
pages = {954-62},
pmid = {561786},
pst = {ppublish},
title = {The compressive behavior of bone as a two-phase porous structure},
volume = {59},
year = {1977}}
@article{Carter76,
abstract = {The compressive strength of bone is proportional to the square of the apparent density and to the strain rate raised to the 0.06 power. This relationship is applicable to trabecular and compact bone, and provides clinical guidelines for predicting bone strength on the basis of x-ray and densitometric examination.},
author = {Carter, D R and Hayes, W C},
date-added = {2016-12-22 04:20:57 +0000},
date-modified = {2016-12-22 04:20:57 +0000},
journal = {Science},
journal-full = {Science (New York, N.Y.)},
mesh = {Animals; Bone Marrow; Bone and Bones; Cattle; Humans; Stress, Mechanical},
month = {Dec},
number = {4270},
pages = {1174-6},
pmid = {996549},
pst = {ppublish},
title = {Bone compressive strength: the influence of density and strain rate},
volume = {194},
year = {1976}}
@article{Ateshian07c,
abstract = {Porous-permeable tissues have often been modeled using porous media theories such as the biphasic theory. This study examines the equivalence of the short-time biphasic and incompressible elastic responses for arbitrary deformations and constitutive relations from first principles. This equivalence is illustrated in problems of unconfined compression of a disk, and of articular contact under finite deformation, using two different constitutive relations for the solid matrix of cartilage, one of which accounts for the large disparity observed between the tensile and compressive moduli in this tissue. Demonstrating this equivalence under general conditions provides a rationale for using available finite element codes for incompressible elastic materials as a practical substitute for biphasic analyses, so long as only the short-time biphasic response is sought. In practice, an incompressible elastic analysis is representative of a biphasic analysis over the short-term response deltat3.0.CO;2-7},
volume = {45},
year = {1999},
bdsk-url-1 = {http://dx.doi.org/10.1002/(SICI)1097-0207(19990810)45:10%3C1375::AID-NME635%3E3.0.CO;2-7}}
@book{Tinoco-Jr.95,
author = {Tinoco Jr., I. and Sauer, K. and Wang, J. C.},
date-added = {2016-12-22 02:50:22 +0000},
date-modified = {2016-12-22 02:50:24 +0000},
publisher = {Prentice Hall},
title = {Physical chemistry : principles and applications in biological sciences},
type = {Book},
year = {1995}}
@book{Truesdell60,
address = {Heidelberg},
author = {Truesdell, C. and Toupin, R.},
date-added = {2016-12-22 02:50:22 +0000},
date-modified = {2016-12-22 02:50:24 +0000},
publisher = {Springer},
series = {Handbuch der physik},
title = {The classical field theories},
type = {Book},
volume = {III/1},
year = {1960}}
@article{Un06,
author = {Un, K. and Spilker, R. L.},
date-added = {2016-12-22 02:50:22 +0000},
date-modified = {2016-12-22 02:50:24 +0000},
issn = {0148-0731 (Print)},
journal = {J Biomech Eng},
number = {6},
pages = {934-42},
title = {A penetration-based finite element method for hyperelastic 3D biphasic tissues in contact. Part II: finite element simulations},
type = {Journal Article},
url = {http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&dopt=Citation&list_uids=17154696},
volume = {128},
year = {2006},
bdsk-url-1 = {http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&dopt=Citation&list_uids=17154696}}
@article{Un06a,
author = {Un, K. and Spilker, R. L.},
date-added = {2016-12-22 02:50:22 +0000},
date-modified = {2016-12-22 02:50:24 +0000},
issn = {0148-0731 (Print)},
journal = {J Biomech Eng},
number = {1},
pages = {124-30},
title = {A penetration-based finite element method for hyperelastic 3D biphasic tissues in contact: Part 1--Derivation of contact boundary conditions},
type = {Journal Article},
url = {http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&dopt=Citation&list_uids=16532625},
volume = {128},
year = {2006},
bdsk-url-1 = {http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&dopt=Citation&list_uids=16532625}}
@article{Veress06,
author = {Veress, A. I. and Segars, W. P. and Weiss, J. A. and Tsui, B. M. and Gullberg, G. T.},
date-added = {2016-12-22 02:50:22 +0000},
date-modified = {2016-12-22 02:50:24 +0000},
issn = {0278-0062 (Print)},
journal = {IEEE Trans Med Imaging},
number = {12},
pages = {1604-16},
title = {Normal and pathological NCAT image and phantom data based on physiologically realistic left ventricle finite-element models},
type = {Journal Article},
url = {http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&dopt=Citation&list_uids=17167995},
volume = {25},
year = {2006},
bdsk-url-1 = {http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&dopt=Citation&list_uids=17167995}}
@article{Veronda70,
author = {Veronda, D.R. and Westmann, R.A.},
date-added = {2016-12-22 02:50:22 +0000},
date-modified = {2016-12-22 02:50:24 +0000},
journal = {J. Biomechanics},
pages = {111-124},
title = {Mechanical Characterization of Skin - Finite Deformations},
type = {Journal Article},
volume = {Vol. 3},
year = {1970}}
@article{Wayne91,
author = {Wayne, J. S. and Woo, S. L. and Kwan, M. K.},
date-added = {2016-12-22 02:50:22 +0000},
date-modified = {2016-12-22 02:50:24 +0000},
journal = {J Biomech Eng},
number = {4},
pages = {397-403},
title = {Application of the u-p finite element method to the study of articular cartilage},
type = {Journal Article},
url = {http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&dopt=Citation&list_uids=1762436},
volume = {113},
year = {1991},
bdsk-url-1 = {http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&dopt=Citation&list_uids=1762436}}
@article{Weiss03,
author = {Weiss, J.A. and Gardiner, J.C. and Maker, B.N.},
date-added = {2016-12-22 02:50:22 +0000},
date-modified = {2016-12-22 02:50:24 +0000},
journal = {Computer Methods in Biomechanics and Biomedical Engineering},
title = {An iterative update algorithm to apply initial stretch to finite element models of ligaments},
type = {Journal Article},
volume = {In Review},
year = {2003}}
@article{Weiss96,
author = {Weiss, J.A. and Maker, B.N. and Govindjee, S.},
date-added = {2016-12-22 02:50:22 +0000},
date-modified = {2016-12-22 02:50:24 +0000},
journal = {Computer Methods in Applications of Mechanics and Engineering},
pages = {107-128},
title = {Finite element implementation of incompressible, transversely isotropic hyperelasticity},
type = {Journal Article},
volume = {135},
year = {1996}}
@inproceedings{Weiss,
author = {Weiss, J.A. and Maker, B.N. and Schauer, D.A.},
booktitle = {ASME Summer Bioengineering Conference},
date-added = {2016-12-22 02:50:22 +0000},
date-modified = {2016-12-22 02:50:24 +0000},
pages = {105-106},
title = {Treatment of initial stress in hyperelastic finite element models of soft tissues},
type = {Conference Proceedings},
volume = {BED-29}}
@inproceedings{Weissa,
author = {Weiss, J.A. and Schauer, D.A. and Gardiner, J.C.},
booktitle = {ASME Winter Annual Meeting},
date-added = {2016-12-22 02:50:22 +0000},
date-modified = {2016-12-22 02:50:24 +0000},
pages = {347-348},
title = {Modeling contact in biological joints using penalty and augmented Lagrangian methods},
type = {Conference Proceedings},
volume = {BED-33}}
@article{Weiss2002,
author = {Weiss, J.A. and Gardiner, J.C. and Bonifasi-Lista C.},
journal = {Journal of Biomechanics},
number = {7},
pages = {943-950},
title = {Ligament material behavior is nonlinear, viscoelastic and rate-independent under shear loading},
volume = {35},
year = {2002}}
@article{Swedberg2014,
author = {Swedberg, A.M. and Reese, S.P. and Maas, S.A. and Ellis, B. J. and Weiss, J.A.},
journal = {Journal of Biomechanics},
number = {12},
pages = {3201-3209},
title = {Continuum description of the Poisson's ratio of ligament and tendon under finite deformation.},
volume = {47},
year = {2014}}
@article{Ateshian2012,
author = {Ateshian, G.A and Morrison B. and Holmes, J.W. and Hung, C. T.},
journal = {Mechanics Research Communications},
pages = {118-125},
title = {Mechanics of cell growth},
volume = {42},
year = {2012}}
@article{Hou16,
author = {Hou, C and Ateshian, G.A.},
date-modified = {2020-07-30 18:51:32 -0400},
journal = {Computer Methods in Biomechanics and Biomedical Engineering},
number = {8},
pages = {883-893},
title = {A Gauss-Kronrod-Trapezoidal integration scheme for modeling biological tissues with continuous fiber distributions.},
volume = {19},
year = {2016}}
@article{Ateshian2011,
author = {Ateshian, G.A. and Albro, M. B. and Maas, S.A. and Weiss, J.A.},
journal = {Journal of Biomechanical Engineering},
number = {8},
pages = {1005-1017},
title = {Finite element implementation of mechanochemical phenomena in neutral deformable porous media under finite deformation.},
volume = {133},
year = {2011}}
@article{Maas2016,
author = {Maas, S.A. and Erdemir, A. and Halloran, J.P. and Weiss, J.A.},
journal = {Journal of Biomechanical Behavior of Biomedical Materials},
pages = {499-510},
title = {A general framework for applications of prestrain to computational models of biological materials.},
volume = {61},
year = {2016}}
@article{BALZANI2012139,
author = {Daniel Balzani and Sarah Brinkhues and Gerhard A. Holzapfel},
doi = {https://doi.org/10.1016/j.cma.2011.11.015},
issn = {0045-7825},
journal = {Computer Methods in Applied Mechanics and Engineering},
pages = {139-151},
title = {Constitutive framework for the modeling of damage in collagenous soft tissues with application to arterial walls},
url = {https://www.sciencedirect.com/science/article/pii/S0045782511003616},
volume = {213-216},
year = {2012},
bdsk-url-1 = {https://www.sciencedirect.com/science/article/pii/S0045782511003616},
bdsk-url-2 = {https://doi.org/10.1016/j.cma.2011.11.015}}
@article{Birzle2019,
author = {Birzle, Anna M. and Martin, Christian and Uhlig, Stefan and Wall, Wolfgang A.},
date-modified = {2022-07-20 20:08:15 -0400},
journal = {Journal of the Mechanical Behavior of Biomedical Materials},
pages = {126--143},
title = {A coupled approach for identification of nonlinear and compressible material models for soft tissue based on different experimental setups - exemplified and detailed for Lung Parenchyma},
volume = {94},
year = {2019},
bdsk-url-1 = {https://doi.org/10.1016/j.jmbbm.2019.02.019}}
@article{ALLAN2022105342,
abstract = {Many painful and physically debilitating conditions involve sub-failure mechanical damage to seemingly intact connective tissues such as tendons and ligaments. We found that the amount of denatured collagen in rat tail tendon (RTT) fascicles increased over experiments of cyclic loading to a constant load level (creep cyclic fatigue) with fluorescently tagged collagen hybridizing peptides (CHPs) that bind to denatured collagen. To better understand tendon sub-failure damage progression, computational modeling of tendon materials via finite element analysis in FEBio has been conducted. The objective of this project was to develop, implement, and test the ability of a new continuum damage mechanics (CDM) model in FEBio to represent the sub-failure damage behavior seen in our RTT fascicle creep cyclic fatigue experimental data. There appeared to be two distinct mechanisms responsible for the creep cyclic fatigue softening behavior of RTT fascicles over the number of cycles to failure: the preconditioning effect and overall collagen damage. In our finite element (FE) models, the RTT fascicle undamaged elastic constitutive material was composed of a matrix and fibers described by the Coupled Veronda-Westmann and exponential-linear materials. This undamaged elastic material was convolved with a modified CDM model adapted from Balzani et al., in 2012. The novelty of the Balzani damage model is the inclusion of two interrelated mechanisms described as continuous and discontinuous damage. The continuous damage formulation calculates damage accumulation during the loading and reloading of each new cycle, while the discontinuous damage approach accumulates damage from the maximum strain over the loading history to the current time. We modified the Balzani damage model formulations to represent exponential and sigmoidal increases in damage marked by the preconditioning effect and collagen damage in RTT fascicles as functions of continuous and discontinuous damage. The original Balzani damage model was first verified, then the modified CDM model was implemented into FEBio and used to reproduce the sample specific experimental creep cyclic fatigue stress-strain data as well as predict incremental cyclic fatigue. The resulting model will be useful for future experimental and computational studies of damage mechanics to understand tendon pathologies.},
author = {Alexandra N. Allan and Jared L. Zitnay and Steve A. Maas and Jeffrey A. Weiss},
doi = {https://doi.org/10.1016/j.jmbbm.2022.105342},
issn = {1751-6161},
journal = {Journal of the Mechanical Behavior of Biomedical Materials},
keywords = {Sub-failure, Damage, Tendon, FEBio, Collagen, Continuum damage mechanics},
pages = {105342},
title = {Development of a continuum damage model to predict accumulation of sub-failure damage in tendons},
url = {https://www.sciencedirect.com/science/article/pii/S1751616122002533},
volume = {135},
year = {2022},
bdsk-url-1 = {https://www.sciencedirect.com/science/article/pii/S1751616122002533},
bdsk-url-2 = {https://doi.org/10.1016/j.jmbbm.2022.105342}}
@article{rauff_nonparametric_2022,
abstract = {Many biological tissues contain an underlying fibrous microstructure that is optimized to suit a physiological function. The fiber architecture dictates physical characteristics such as stiffness, diffusivity, and electrical conduction. Abnormal deviations of fiber architecture are often associated with disease. Thus, it is useful to characterize fiber network organization from image data in order to better understand pathological mechanisms. We devised a method to quantify distributions of fiber orientations based on the Fourier transform and the Qball algorithm from diffusion MRI. The Fourier transform was used to decompose images into directional components, while the Qball algorithm efficiently converted the directional data from the frequency domain to the orientation domain. The representation in the orientation domain does not require any particular functional representation, and thus the method is nonparametric. The algorithm was verified to demonstrate its reliability and used on datasets from microscopy to show its applicability. This method increases the ability to extract information of microstructural fiber organization from experimental data that will enhance our understanding of structure-function relationships and enable accurate representation of material anisotropy in biological tissues.},
author = {Rauff, Adam and Timmins, Lucas H. and Whitaker, Ross T. and Weiss, Jeffrey A.},
doi = {10.1109/TMI.2021.3115716},
file = {IEEE Xplore Abstract Record:/home/mherron/Zotero/storage/E338ZCUL/9548066.html:text/html;PubMed Central Full Text PDF:/home/mherron/Zotero/storage/JC837KWX/Rauff et al. - 2022 - A Nonparametric Approach for Estimating Three-Dimensional Fiber Orientation Distribution Functions (.pdf:application/pdf},
issn = {1558-254X},
journal = {IEEE Transactions on Medical Imaging},
keywords = {Fibers, Fourier transform, Fourier transforms, Image resolution, Magnetic resonance imaging, nonparametric distributions, Optical fiber dispersion, Optical fiber networks, Optical fiber polarization, orientation distribution function (ODF), Three-dimensional displays},
month = feb,
note = {Conference Name: IEEE Transactions on Medical Imaging},
number = {2},
pages = {446--455},
title = {A {Nonparametric} {Approach} for {Estimating} {Three}-{Dimensional} {Fiber} {Orientation} {Distribution} {Functions} ({ODFs}) in {Fibrous} {Materials}},
url = {https://ieeexplore.ieee.org/document/9548066},
urldate = {2025-01-10},
volume = {41},
year = {2022},
bdsk-url-1 = {https://ieeexplore.ieee.org/document/9548066},
bdsk-url-2 = {https://doi.org/10.1109/TMI.2021.3115716}}
@article{rauff_algorithmic_2024,
abstract = {Biological tissues and biomaterials routinely feature a fibrous microstructure that contributes to physical and mechanical properties while influencing cellular guidance, organization and extracellular matrix (ECM) production. Specialized three-dimensional (3D) imaging techniques can visualize fibrillar structure and orientation, and previously we developed a nonparametric approach to extract orientation distribution functions (ODFs) directly from 3D image data [1]. In this work, we expanded our previous approach to provide a complete algorithmic and software framework to characterize inhomogeneous ODFs in image data and use ODFs to model the physics of materials with the finite element method. We characterized inhomogeneity using image subdomains and specialized interpolation methods, and we developed methods to incorporate ODFs directly into constitutive models. To facilitate its adoption by the biomechanics and biophysics communities, we developed a unified software framework in FEBio Studio (www.febio.org). This included new interpolation methods to spatially map the ODFs onto finite element meshes and an approach to downsample ODFs for efficient numerical calculations. The software provides the option to fit ODFs to parametric distributions, and scalar metrics provide means to assess goodness of fit. We evaluated the utility and accuracy of the algorithms and implementation using representative 3D image datasets. Our results demonstrated that utilizing the true measured ODFs provide a more accurate and spatially resolved representation of fiber ODFs and the resulting predicted mechanical response when compared with parametric approaches to approximating the true ODFs. This research provides a powerful, interactive software framework to extract and represent the inhomogeneous anisotropic characteristics of fibrous tissues directly from image data, and to incorporate them into biomechanics and biophysics simulations using the finite element method.
Statement of Significance
Biological tissues and biomaterials routinely feature a fibrous microstructure that contributes to physical and mechanical properties while influencing cellular guidance, organization and extracellular matrix (ECM) production. In this study, we developed a complete algorithmic and software framework to characterize inhomogeneous orientation distribution functions (ODFs) directly from biomedical image data and apply the ODFs to model the physics of biological materials. We characterized inhomogeneity using image subdomains and specialized interpolation methods, and we developed methods to incorporate ODFs directly into constitutive models. We developed a unified software framework in FEBio Studio (www.febio.org) to accommodate its adoption by the biomechanics and biophysics communities. The result is a powerful, interactive software framework to extract and represent inhomogeneous, anisotropic characteristics directly from image data, and incorporate them into biomechanics and biophysics simulations.},
author = {Rauff, Adam and Herron, Michael R. and Maas, Steve A. and Weiss, Jeffrey A.},
doi = {10.1016/j.actbio.2024.11.043},
file = {ScienceDirect Snapshot:/home/mherron/Zotero/storage/Y72ZR633/S1742706124007074.html:text/html},
issn = {1742-7061},
journal = {Acta Biomaterialia},
keywords = {Anisotropy, FEBio, Finite element analysis, Image analysis, Multiscale modeling, Orientation distribution function},
month = nov,
title = {An algorithmic and software framework to incorporate orientation distribution functions in finite element simulations for biomechanics and biophysics},
url = {https://www.sciencedirect.com/science/article/pii/S1742706124007074},
urldate = {2025-01-10},
year = {2024},
bdsk-url-1 = {https://www.sciencedirect.com/science/article/pii/S1742706124007074},
bdsk-url-2 = {https://doi.org/10.1016/j.actbio.2024.11.043}}
================================================
FILE: Documentation/FEBio_EULA_3.rtf
================================================
{\rtf1\ansi\deff3\adeflang1025
{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset0 Liberation Serif{\*\falt Times New Roman};}{\f4\fswiss\fprq2\fcharset0 Liberation Sans{\*\falt Arial};}{\f5\froman\fprq2\fcharset0 Times New Roman;}{\f6\froman\fprq2\fcharset0 Tahoma;}{\f7\froman\fprq2\fcharset0 Segoe UI;}{\f8\froman\fprq2\fcharset0 Cambria;}{\f9\froman\fprq2\fcharset0 Arial;}{\f10\fnil\fprq2\fcharset0 Noto Sans CJK SC;}{\f11\fnil\fprq2\fcharset0 Segoe UI;}{\f12\fnil\fprq2\fcharset0 Times New Roman;}{\f13\fnil\fprq2\fcharset0 Lohit Devanagari;}{\f14\fnil\fprq0\fcharset128 Lohit Devanagari;}{\f15\fnil\fprq2\fcharset0 Tahoma;}{\f16\fnil\fprq2\fcharset0 Cambria;}{\f17\fnil\fprq2\fcharset0 Arial;}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red51\green51\blue51;}
{\stylesheet{\s0\snext0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033 Normal;}
{\*\cs15\snext15 Default Paragraph Font;}
{\*\cs16\sbasedon15\snext16\dbch\af12 apple-converted-space;}
{\*\cs17\sbasedon15\snext17\dbch\af12\fs16 annotation reference;}
{\*\cs18\sbasedon15\snext18\dbch\af12 Comment Text Char;}
{\*\cs19\sbasedon18\snext19\b\dbch\af12\ab Comment Subject Char;}
{\*\cs20\sbasedon15\snext20\dbch\af11\afs18\loch\f7\fs18 Balloon Text Char;}
{\*\cs21\sbasedon15\snext21\b\kerning1\dbch\af12\dbch\af16\afs32\ab\loch\f8\fs32 Title Char;}
{\*\cs22\snext22\dbch\af12 ListLabel 1;}
{\*\cs23\snext23\dbch\af12 ListLabel 2;}
{\*\cs24\snext24\dbch\af12 ListLabel 3;}
{\*\cs25\snext25\dbch\af12 ListLabel 4;}
{\*\cs26\snext26\dbch\af12 ListLabel 5;}
{\*\cs27\snext27\dbch\af12 ListLabel 6;}
{\*\cs28\snext28\dbch\af12 ListLabel 7;}
{\*\cs29\snext29\dbch\af12 ListLabel 8;}
{\*\cs30\snext30\dbch\af12 ListLabel 9;}
{\*\cs31\snext31\dbch\af12 ListLabel 10;}
{\*\cs32\snext32\dbch\af12 ListLabel 11;}
{\*\cs33\snext33\dbch\af12 ListLabel 12;}
{\*\cs34\snext34\dbch\af12 ListLabel 13;}
{\*\cs35\snext35\dbch\af12 ListLabel 14;}
{\*\cs36\snext36\dbch\af12 ListLabel 15;}
{\*\cs37\snext37\dbch\af12 ListLabel 16;}
{\*\cs38\snext38\dbch\af12 ListLabel 17;}
{\*\cs39\snext39\dbch\af12 ListLabel 18;}
{\s40\sbasedon0\snext41\ql\widctlpar\faauto\sb240\sa120\keepn\ltrpar\dbch\af10\langfe1033\dbch\af13\afs28\alang1025\loch\f4\fs28\lang1033 Heading;}
{\s41\sbasedon0\snext41\sl276\slmult1\ql\widctlpar\faauto\sb0\sa140\ltrpar\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\loch\f5\fs24\lang1033 Text Body;}
{\s42\sbasedon41\snext42\sl276\slmult1\ql\widctlpar\faauto\sb0\sa140\ltrpar\dbch\af11\langfe1033\dbch\af14\afs24\alang1025\loch\f5\fs24\lang1033 List;}
{\s43\sbasedon0\snext43\ql\widctlpar\faauto\sb120\sa120\noline\ltrpar\i\dbch\af11\langfe1033\dbch\af14\afs24\alang1025\ai\loch\f5\fs24\lang1033 Caption;}
{\s44\sbasedon0\snext44\ql\widctlpar\faauto\noline\ltrpar\dbch\af11\langfe1033\dbch\af14\afs24\alang1025\loch\f5\fs24\lang1033 Index;}
{\s45\snext45\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs20\alang1025\cf0\kerning1\loch\f5\fs20\lang1033 DocumentMap;}
{\s46\sbasedon0\snext46\ql\widctlpar\faauto\ltrpar\dbch\af11\langfe1033\dbch\af12\afs20\alang1025\loch\f5\fs20\lang1033 annotation text;}
{\s47\sbasedon46\snext47\ql\widctlpar\faauto\ltrpar\b\dbch\af11\langfe1033\dbch\af12\afs20\alang1025\ab\loch\f5\fs20\lang1033 annotation subject;}
{\s48\sbasedon0\snext48\ql\widctlpar\faauto\ltrpar\dbch\af11\langfe1033\dbch\af15\afs16\alang1025\loch\f6\fs16\lang1033 Balloon Text;}
{\s49\snext49\ql\widctlpar\faauto\ltrpar\hyphpar0\cf1\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\kerning1\loch\f5\fs24\lang1033 Default;}
{\s50\sbasedon49\snext50\ql\widctlpar\faauto\ltrpar\cf1\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\loch\f5\fs24\lang1033 Title;}
{\s51\snext51\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033 Revision;}
}{\*\revtbl {Unknown;}{steve maas;}{Unknown Author;}}
{\*\generator LibreOffice/6.0.7.3$Linux_X86_64 LibreOffice_project/00m0$Build-3}{\info{\*\company University of Utah}{\title 1}{\author Technology Commercialization Office}{\creatim\yr2019\mo7\dy8\hr15\min55}{\revtim\yr2020\mo8\dy18\hr13\min18}{\printim\yr0\mo0\dy0\hr0\min0}}{\*\userprops{\propname Operator}\proptype30{\staticval steve maas}}\deftab720\deftab720\deftab720\deftab720
\viewscale170\revisions
{\*\pgdsctbl
{\pgdsc0\pgdscuse451\pgwsxn12240\pghsxn15840\marglsxn1800\margrsxn1800\margtsxn1440\margbsxn1440\pgdscnxt0 Default Style;}}
\formshade{\*\pgdscno0}\paperh15840\paperw12240\margl1800\margr1800\margt1440\margb1440\sectd\sbknone\sectunlocked1\pgndec\pgwsxn12240\pghsxn15840\marglsxn1800\margrsxn1800\margtsxn1440\margbsxn1440\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc\htmautsp
{\*\ftnsep\chftnsep}\pgndec\pard\plain \s50\ql\widctlpar\faauto\ltrpar\cf1\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\loch\f5\fs24\lang1033\qc\li0\ri0\lin0\rin0\fi0\ltrpar{\cf1\ul\ulc0\b\langfe1033\dbch\af17\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f9\hich\af9
FEBIO SOFTWARE LICENSE}
\par \pard\plain \s50\ql\widctlpar\faauto\ltrpar\cf1\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\loch\f5\fs24\lang1033\qc\li0\ri0\lin0\rin0\fi0\ltrpar{\cf1\ul\ulc0\b\langfe1033\dbch\af17\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f9\hich\af9
Version }{\deleted\revauthdel1\revdttmdel1735780940 \cf1\ul\ulc0\b\langfe1033\dbch\af17\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f9\hich\af9
2}{\revised\revauth1\revdttm1735780940 \cf1\ul\ulc0\b\langfe1033\dbch\af17\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f9\hich\af9
3}{\cf1\ul\ulc0\b\langfe1033\dbch\af17\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f9\hich\af9
.0 }
\par \pard\plain \s49\ql\widctlpar\faauto\ltrpar\hyphpar0\cf1\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\kerning1\loch\f5\fs24\lang1033\li0\ri0\lin0\rin0\fi0\ltrpar\cf1\langfe1033\dbch\af12\afs24\alang1025\rtlch \ltrch\loch\fs24\lang1033
\par \pard\plain \s49\ql\widctlpar\faauto\ltrpar\hyphpar0\cf1\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\kerning1\loch\f5\fs24\lang1033\li0\ri0\lin0\rin0\fi0\ltrpar\cf1\langfe1033\dbch\af12\afs24\alang1025\rtlch \ltrch\loch\fs24\lang1033
\par \pard\plain \s49\ql\widctlpar\faauto\ltrpar\hyphpar0\cf1\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
THIS AGREEMENT, between you the licensee, hereinafter referred to as }{\deleted\revauthdel2\revdttmdel1200132945 \cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
\u8220\'93}{\revised\revauth2\revdttm1200132945 \cf1\dbch\af11\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
"}{\cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
Recipient,}{\deleted\revauthdel2\revdttmdel1200132946 \cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
\u8221\'94}{\revised\revauth2\revdttm1200132946 \cf1\dbch\af11\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
"}{\cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
and }{\cf1\ul\ulc0\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
the University of Utah}{\cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
, having an address at the }{\cf1\ul\ulc0\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
University of Utah, Technology Commercialization Office, 615 Arapeen Drive, Suite 310, Salt Lake City, Utah 84108}{\cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
, hereinafter referred to as }{\deleted\revauthdel2\revdttmdel1200132945 \cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
\u8220\'93}{\revised\revauth2\revdttm1200132945 \cf1\dbch\af11\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
"}{\cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
University,}{\deleted\revauthdel2\revdttmdel1200132946 \cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
\u8221\'94}{\revised\revauth2\revdttm1200132946 \cf1\dbch\af11\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
"}{\cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
shall govern the conditions of disclosure by University to Recipient of certain software (SOFTWARE) named: }{\cf1\b\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
FEBio}{\cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
, developed by Steve Maas and Jeff Weiss}{\deleted\revauthdel1\revdttmdel1735780934 \cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
,}{\cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
of the University of Utah}{\revised\revauth1\revdttm1735780934 \cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
, and }{\revised\revauth1\revdttm1735780935 \cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
Gerard Ateshian, of Columbia University}{\cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
. SOFTWARE, as used herein, includes all such software actually provided to Recipient, including, as the case may be, }{\deleted\revauthdel1\revdttmdel1735780936 \cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
source code or }{\cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
any binaries or executables thereof, plus any software derived directly therefrom}{\revised\revauth1\revdttm1735780936 \cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
, but excludes the source code and the Software Development Kit (SDK)}{\cf1\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
. }
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\li0\ri0\lin0\rin0\fi0\ltrpar\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
1.\~ LICENSE.\~ University grants to you a non-exclusive, non-transferable right to use the SOFTWARE in a single installation on a single machine in a single geographic location}{\deleted\revauthdel1\revdttmdel1735780936 \cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
for Non-Commercial Use}{\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
.}{\deleted\revauthdel1\revdttmdel1735780937 \cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
\~ Recipient agrees not to use such SOFTWARE for any Commercial Purpose. }
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\deleted\revauthdel1\revdttmdel1735780937 \cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
Use of the software for any Commercial Purpose means use of Software by you for direct or indirect financial, commercial or strategic gain or advantage. Examples of a Commercial Purpose include, but are not limited to:}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\deleted\revauthdel1\revdttmdel1735780937 \cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
Integrating the SOFTWARE with other software for sale as a bundled product.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\deleted\revauthdel1\revdttmdel1735780937 \cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
Use of the SOFTWARE for a fee-based service or subscription.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\deleted\revauthdel1\revdttmdel1735780937 \cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
Use of the SOFTWARE in the creation of commercial products.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\deleted\revauthdel1\revdttmdel1735780937 \cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
Use of the SOFTWARE for research or educational purposes, for or on behalf of a commercial or for-profit entity or project, whether or not such use is a commercial use.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\deleted\revauthdel1\revdttmdel1735780937 \cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
Use of the software by an individual employed at an academic or non-profit research institution to perform contract work funded by a commercial entity.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\deleted\revauthdel1\revdttmdel1735780937 \cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
Use of the software by an individual in the course of consulting or contracting activities for which you are compensated.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\deleted\revauthdel1\revdttmdel1735780937 \cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
Examples of Non-Commercial Use include, but are not limited to:}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\deleted\revauthdel1\revdttmdel1735780937 \cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
Use of the SOFTWARE by an individual employed by an academic or non-profit research institution for non-commercial research.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\deleted\revauthdel1\revdttmdel1735780937 \cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
Use of the SOFTWARE by an individual employed by an academic or non-profit research institution for teaching or learning.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\deleted\revauthdel1\revdttmdel1735780937 \cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
Personal use of the SOFTWARE for non-commercial research, learning or entertainment, not leading to the creation of a commercial product.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\revised\revauth1\revdttm1735780937 \cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\fs16\lang1033\loch\f9\hich\af9
}{\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
It is further agreed that the furnishing of SOFTWARE to Recipient shall not constitute any grant of license to Recipient under any legal rights now or hereinafter held by University.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\rtlch \ltrch\loch
\line \line }{\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
2.\~ TERMINATION.\~ The use of the SOFTWARE by Recipient is conditioned upon Recipient\u8217\'92s compliance with the terms of this Agreement.\~ When this Agreement terminates, Recipient is required to remove all copies of the SOFTWARE and discontinue all use.\~ Recipient agrees that Recipient will only copy the SOFTWARE into any machine readable or printed form as necessary to use it in accordance with this Agreement or for backup purposes in support of Recipients use of the SOFTWARE. This Agreement is effective until terminated. Recipient may terminate it at any point by destroying the SOFTWARE together with all copies of the SOFTWARE.\~ Also, University has the option to terminate if Recipient fails to comply with any term or condition of this Agreement or upon 30 days written notice.\~ Recipient agrees upon such termination to destroy the SOFTWARE together with all copies of the SOFTWARE.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\rtlch \ltrch\loch
\line \line }{\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
3.\~ COPYRIGHT.\~ The SOFTWARE is protected by United States copyright law and international treaty provisions.\~ Recipient acknowledges that no title to the intellectual property in the SOFTWARE is transferred to Recipient.\~ Recipient further acknowledge that title and full ownership rights to the SOFTWARE will remain the exclusive property of University or its suppliers, and Recipient will not acquire any rights to the SOFTWARE except as expressly set forth in this Agreement.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\rtlch \ltrch\loch
\line \line }{\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
4.\~ LIMITATIONS.\~ }{\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
Recipient may modify the SOFTWARE or create derivative works based upon the SOFTWARE for their own internal or personal use. }{\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
Recipient may not rent, lease, distribute, transfer or sublicense the SOFTWARE or any derivative works thereof to any third parties, without first negotiating in good faith with University a separate license agreement.\~ Recipient may not export the SOFTWARE or any derivative works thereof into any country prohibited by the United States Export Administration Act and the regulations there under.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\rtlch \ltrch\loch
\line \line }{\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
5.\~ LIMITED WARRANTIES.\~ University warrants that the media on which the SOFTWARE is furnished will be free from defects in materials and workmanship under normal use.}{\cs16\dbch\af12\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
\~}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\rtlch \ltrch\loch
\line \line }{\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
6.\~ DISCLAIMER OF WARRANTY: EXCEPT AS SET FORTH HEREIN, SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND.\~ TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, UNIVERISTY FURTHER DISCLAIMS ALL EXPRESSED AND IMPLIED WARRANTIES, INCLUDING WITHOUT LIMITATIONS ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\~ THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS AGREEMENT.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\rtlch \ltrch\loch
\line \line }{\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
7.\~ GOVERNING LAW.\~ This Agreement will be governed by the internal laws of the State of Utah without regard to conflict of laws.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\rtlch \ltrch\loch
\line \line }{\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
8.\~ ENTIRE AGREEMENT.\~ This is the entire agreement between Recipient and University, which supersedes any prior agreement or understanding, whether written, or oral, relating to the subject matter of this license.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\deleted\revauthdel1\revdttmdel1735780940 \cs16\dbch\af12\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\fs16\lang1033\loch\f9\hich\af9
\~}{\rtlch \ltrch\loch
\line \line }{\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
9.\~ NO LIABILITY FOR CONSEQUENTIAL DAMAGES: IN NO EVENT SHALL UNIVERSITY BE LIABLE TO RECIPIENT FOR ANY CONSEQUENTIAL, SPECIAL, INCIDENTAL OR INDIRECT DAMAGES OF ANY KIND ARISING OUT OF THE DELIVERY, PERFORMANCE OR USE OF THE SOFTWARE, EVEN IF UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar{\rtlch \ltrch\loch
\line \line }{\cf17\chcbpat8\langfe1033\dbch\af17\afs18\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f9\hich\af9
10.\~ BASIS OF BARGAIN.\~ The limited warranty, exclusive remedies, and limited liability set forth above are fundamental elements of the basis of the agreement between University and Recipient.\~ University would not be able to provide the SOFTWARE on an economic basis without such limitations.}
\par \pard\plain \s0\ql\widctlpar\faauto\ltrpar\hyphpar0\dbch\af11\langfe1033\dbch\af12\afs24\alang1025\cf0\kerning1\loch\f5\fs24\lang1033\qj\li0\ri0\lin0\rin0\fi0\ltrpar\rtlch \ltrch\loch
\par }
================================================
FILE: Documentation/FEBio_EULA_3.txt
================================================
FEBIO SOFTWARE LICENSE
Version 3.0
THIS AGREEMENT, between you the licensee, hereinafter referred to as "Recipient," and the University of Utah, having an address at the University of Utah, Technology Commercialization Office, 615 Arapeen Drive, Suite 310, Salt Lake City, Utah 84108, hereinafter referred to as "University," shall govern the conditions of disclosure by University to Recipient of certain software (SOFTWARE) named: FEBio, developed by Steve Maas and Jeff Weiss of the University of Utah, and Gerard Ateshian, of Columbia University. SOFTWARE, as used herein, includes all such software actually provided to Recipient, including, as the case may be, any binaries or executables thereof, plus any software derived directly therefrom, but excludes the source code and the Software Development Kit (SDK).
1. LICENSE. University grants to you a non-exclusive, non-transferable right to use the SOFTWARE in a single installation on a single machine in a single geographic location. It is further agreed that the furnishing of SOFTWARE to Recipient shall not constitute any grant of license to Recipient under any legal rights now or hereinafter held by University.
2. TERMINATION. The use of the SOFTWARE by Recipient is conditioned upon Recipient’s compliance with the terms of this Agreement. When this Agreement terminates, Recipient is required to remove all copies of the SOFTWARE and discontinue all use. Recipient agrees that Recipient will only copy the SOFTWARE into any machine readable or printed form as necessary to use it in accordance with this Agreement or for backup purposes in support of Recipients use of the SOFTWARE. This Agreement is effective until terminated. Recipient may terminate it at any point by destroying the SOFTWARE together with all copies of the SOFTWARE. Also, University has the option to terminate if Recipient fails to comply with any term or condition of this Agreement or upon 30 days written notice. Recipient agrees upon such termination to destroy the SOFTWARE together with all copies of the SOFTWARE.
3. COPYRIGHT. The SOFTWARE is protected by United States copyright law and international treaty provisions. Recipient acknowledges that no title to the intellectual property in the SOFTWARE is transferred to Recipient. Recipient further acknowledge that title and full ownership rights to the SOFTWARE will remain the exclusive property of University or its suppliers, and Recipient will not acquire any rights to the SOFTWARE except as expressly set forth in this Agreement.
4. LIMITATIONS. Recipient may modify the SOFTWARE or create derivative works based upon the SOFTWARE for their own internal or personal use. Recipient may not rent, lease, distribute, transfer or sublicense the SOFTWARE or any derivative works thereof to any third parties, without first negotiating in good faith with University a separate license agreement. Recipient may not export the SOFTWARE or any derivative works thereof into any country prohibited by the United States Export Administration Act and the regulations there under.
5. LIMITED WARRANTIES. University warrants that the media on which the SOFTWARE is furnished will be free from defects in materials and workmanship under normal use.
6. DISCLAIMER OF WARRANTY: EXCEPT AS SET FORTH HEREIN, SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, UNIVERISTY FURTHER DISCLAIMS ALL EXPRESSED AND IMPLIED WARRANTIES, INCLUDING WITHOUT LIMITATIONS ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS AGREEMENT.
7. GOVERNING LAW. This Agreement will be governed by the internal laws of the State of Utah without regard to conflict of laws.
8. ENTIRE AGREEMENT. This is the entire agreement between Recipient and University, which supersedes any prior agreement or understanding, whether written, or oral, relating to the subject matter of this license.
9. NO LIABILITY FOR CONSEQUENTIAL DAMAGES: IN NO EVENT SHALL UNIVERSITY BE LIABLE TO RECIPIENT FOR ANY CONSEQUENTIAL, SPECIAL, INCIDENTAL OR INDIRECT DAMAGES OF ANY KIND ARISING OUT OF THE DELIVERY, PERFORMANCE OR USE OF THE SOFTWARE, EVEN IF UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
10. BASIS OF BARGAIN. The limited warranty, exclusive remedies, and limited liability set forth above are fundamental elements of the basis of the agreement between University and Recipient. University would not be able to provide the SOFTWARE on an economic basis without such limitations.
================================================
FILE: Documentation/FEBio_EULA_4.txt
================================================
FEBIO SOFTWARE LICENSE
Version 4.0
THIS AGREEMENT, between you the licensee, hereinafter referred to as "Recipient," and the University of Utah, having an address at the University of Utah, Technology Commercialization Office, 615 Arapeen Drive, Suite 310, Salt Lake City, Utah 84108, hereinafter referred to as "University," shall govern the conditions of disclosure by University to Recipient of certain software (SOFTWARE) named: FEBio, developed by Steve Maas and Jeff Weiss of the University of Utah, and Gerard Ateshian, of Columbia University. SOFTWARE, as used herein, includes all such software actually provided to Recipient, including, as the case may be, any binaries or executables thereof, plus any software derived directly therefrom, but excludes the source code and the Software Development Kit (SDK).
1. LICENSE. University grants to you a non-exclusive, non-transferable right to use the SOFTWARE in a single installation on a single machine in a single geographic location. It is further agreed that the furnishing of SOFTWARE to Recipient shall not constitute any grant of license to Recipient under any legal rights now or hereinafter held by University.
2. TERMINATION. The use of the SOFTWARE by Recipient is conditioned upon Recipient's compliance with the terms of this Agreement. When this Agreement terminates, Recipient is required to remove all copies of the SOFTWARE and discontinue all use. Recipient agrees that Recipient will only copy the SOFTWARE into any machine readable or printed form as necessary to use it in accordance with this Agreement or for backup purposes in support of Recipients use of the SOFTWARE. This Agreement is effective until terminated. Recipient may terminate it at any point by destroying the SOFTWARE together with all copies of the SOFTWARE. Also, University has the option to terminate if Recipient fails to comply with any term or condition of this Agreement or upon 30 days written notice. Recipient agrees upon such termination to destroy the SOFTWARE together with all copies of the SOFTWARE.
3. COPYRIGHT. The SOFTWARE is protected by United States copyright law and international treaty provisions. Recipient acknowledges that no title to the intellectual property in the SOFTWARE is transferred to Recipient. Recipient further acknowledge that title and full ownership rights to the SOFTWARE will remain the exclusive property of University or its suppliers, and Recipient will not acquire any rights to the SOFTWARE except as expressly set forth in this Agreement.
4. LIMITATIONS. Recipient may modify the SOFTWARE or create derivative works based upon the SOFTWARE for their own internal or personal use. Recipient may not rent, lease, distribute, transfer or sublicense the SOFTWARE or any derivative works thereof to any third parties, without first negotiating in good faith with University a separate license agreement. Recipient may not export the SOFTWARE or any derivative works thereof into any country prohibited by the United States Export Administration Act and the regulations there under.
5. LIMITED WARRANTIES. University warrants that the media on which the SOFTWARE is furnished will be free from defects in materials and workmanship under normal use.
6. DISCLAIMER OF WARRANTY: EXCEPT AS SET FORTH HEREIN, SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, UNIVERISTY FURTHER DISCLAIMS ALL EXPRESSED AND IMPLIED WARRANTIES, INCLUDING WITHOUT LIMITATIONS ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS AGREEMENT.
7. GOVERNING LAW. This Agreement will be governed by the internal laws of the State of Utah without regard to conflict of laws.
8. ENTIRE AGREEMENT. This is the entire agreement between Recipient and University, which supersedes any prior agreement or understanding, whether written, or oral, relating to the subject matter of this license.
9. NO LIABILITY FOR CONSEQUENTIAL DAMAGES: IN NO EVENT SHALL UNIVERSITY BE LIABLE TO RECIPIENT FOR ANY CONSEQUENTIAL, SPECIAL, INCIDENTAL OR INDIRECT DAMAGES OF ANY KIND ARISING OUT OF THE DELIVERY, PERFORMANCE OR USE OF THE SOFTWARE, EVEN IF UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
10. BASIS OF BARGAIN. The limited warranty, exclusive remedies, and limited liability set forth above are fundamental elements of the basis of the agreement between University and Recipient. University would not be able to provide the SOFTWARE on an economic basis without such limitations.
11. PRIVACY. The SOFTWARE adheres to the privacy policy set out by the University of Utah (https://www.utah.edu/privacy/gdpr.php). The SOFTWARE does not collect, distribute, or share any personal data. Upon launch, the SOFTWARE does connect to a remote server, managed by University of Utah personnel, and passes a Universally Unique ID (UUID), which was generated upon first use after installation of the SOFTWARE and stored on the Recipient's local computer, to the remote server. This UUID is used as part of a process that accumulates general usage statistics, but is otherwise not distributed or shared with any third party.
================================================
FILE: Documentation/FEBio_Theory_Manual.lyx
================================================
#LyX 2.4 created this file. For more info see https://www.lyx.org/
\lyxformat 620
\begin_document
\begin_header
\save_transient_properties true
\origin unavailable
\textclass extbook
\begin_preamble
\usepackage{hyperref}
\end_preamble
\use_default_options true
\begin_modules
theorems-ams
eqs-within-sections
figs-within-sections
\end_modules
\maintain_unincluded_children no
\language english
\language_package default
\inputencoding auto-legacy
\fontencoding auto
\font_roman "default" "default"
\font_sans "helvet" "default"
\font_typewriter "default" "default"
\font_math "auto" "auto"
\font_default_family sfdefault
\use_non_tex_fonts false
\font_sc false
\font_roman_osf false
\font_sans_osf false
\font_typewriter_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\use_microtype false
\use_dash_ligatures true
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize 11
\spacing single
\use_hyperref false
\papersize default
\use_geometry true
\use_package amsmath 2
\use_package amssymb 2
\use_package cancel 2
\use_package esint 2
\use_package mathdots 2
\use_package mathtools 2
\use_package mhchem 2
\use_package stackrel 2
\use_package stmaryrd 2
\use_package undertilde 0
\cite_engine natbib
\cite_engine_type numerical
\biblio_style plainnat
\biblio_options sort&compress
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 1
\use_formatted_ref 0
\use_minted 0
\use_lineno 0
\index Index
\shortcut idx
\color #008000
\end_index
\leftmargin 1in
\topmargin 1in
\rightmargin 1in
\bottommargin 1in
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\is_math_indent 0
\math_numbering_side default
\quotes_style english
\dynamic_quotes 0
\papercolumns 1
\papersides 2
\paperpagestyle default
\tablestyle default
\tracking_changes false
\output_changes false
\change_bars false
\postpone_fragile_content false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\docbook_table_output 0
\docbook_mathml_prefix 1
\end_header
\begin_body
\begin_layout Standard
\begin_inset FormulaMacro
\newcommand{\Dev}{\operatorname{Dev}}
{\text{Dev}}
\end_inset
\begin_inset FormulaMacro
\newcommand{\dev}{\operatorname{dev}}
{\text{dev}}
\end_inset
\begin_inset FormulaMacro
\newcommand{\grad}{\operatorname{grad}}
{\text{grad}}
\end_inset
\begin_inset FormulaMacro
\newcommand{\Grad}{\operatorname{Grad}}
{\text{Grad}}
\end_inset
\begin_inset FormulaMacro
\newcommand{\divg}{\operatorname{div}}
{\text{div}}
\end_inset
\begin_inset FormulaMacro
\newcommand{\Ei}{\operatorname{Ei}}
{\text{Ei}}
\end_inset
\begin_inset FormulaMacro
\newcommand{\tr}{\operatorname{tr}}
{\text{tr}}
\end_inset
\begin_inset FormulaMacro
\newcommand{\Divg}{\operatorname{Div}}
{\text{Div}}
\end_inset
\begin_inset FormulaMacro
\newcommand{\cay}{\operatorname{cay}}
{\text{cay}}
\end_inset
\begin_inset FormulaMacro
\newcommand{\rot}{\operatorname{rot}}
{\text{rot}}
\end_inset
\end_layout
\begin_layout Title
\begin_inset Graphics
filename Figures/FigFEBioTitle.png
width 4.88in
\end_inset
\series bold
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
\series default
Theory Manual Version 4.12
\end_layout
\begin_layout Date
Last Updated:
February 25,
2026
\end_layout
\begin_layout Paragraph*
Contributors
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Steve Maas (
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{mailto:steve.maas@utah.edu}{steve.maas@utah.edu}
\end_layout
\end_inset
)
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
Michael Herron (
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{mailto:michael.herron@utah.edu}{michael.herron@utah.edu}
\end_layout
\end_inset
)
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
Dr.
Jeffrey Weiss (
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{mailto:jeff.weiss@utah.edu}{jeff.weiss@utah.edu}
\end_layout
\end_inset
)
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
Dr.
Gerard Ateshian (
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{mailto:ateshian@columbia.edu}{ateshian@columbia.edu}
\end_layout
\end_inset
)
\end_layout
\begin_layout Paragraph*
Contact address
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Musculoskeletal Research Laboratories,
University of Utah
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
72 S.
Central Campus Drive,
Room 2646
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
Salt Lake City,
Utah
\end_layout
\begin_layout Paragraph*
Website
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Weiss Lab:
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
url{https://weisslabutah.org}
\end_layout
\end_inset
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
FEBio:
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
url{http://febio.org}
\end_layout
\end_inset
\end_layout
\begin_layout Paragraph*
Forum
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
url{https://forums.febio.org/index.php}
\end_layout
\end_inset
\end_layout
\begin_layout Paragraph*
Acknowledgments
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Development of the FEBio project is supported in part by a grant from the U.S.
National Institutes of Health (R01GM083925).
\end_layout
\begin_layout Standard
\begin_inset Graphics
filename Figures/NIHlogo.png
lyxscale 25
width 2cm
special height=0.75in
\end_inset
\end_layout
\begin_layout Standard
\begin_inset CommandInset toc
LatexCommand tableofcontents
\end_inset
\end_layout
\begin_layout Chapter
Introduction
\end_layout
\begin_layout Standard
\begin_inset CommandInset label
LatexCommand label
name "chap:introduction"
\end_inset
\end_layout
\begin_layout Section
Overview of FEBio
\begin_inset CommandInset label
LatexCommand label
name "sec:overview"
\end_inset
\end_layout
\begin_layout Standard
FEBio is an implicit,
nonlinear finite element solver that is specifically designed for applications in biomechanics.
It offers analyses,
constitutive models and boundary conditions that are relevant for this particular field.
This section describes briefly the available features of FEBio.
A more detailed overview of features can be found in the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio User's Manual}}
\end_layout
\end_inset
.
\end_layout
\begin_layout Standard
FEBio supports two analysis types,
namely
\emph on
quasi-static
\emph default
and
\emph on
quasi-static poroelastic
\emph default
.
In a
\emph on
quasi-static
\emph default
analysis the (quasi-) static response of the system is sought;
inertial terms are ignored.
In a
\emph on
quasi-static poroelastic
\emph default
analysis a coupled solid-fluid problem is solved.
The latter analysis type is useful for modeling tissues that have high water content and the explicit modeling of fluid movement relative to the solid phase is important.
\end_layout
\begin_layout Standard
Several nonlinear constitutive models are available to allow the user to model the often complicated biological tissue behavior.
Several isotropic constitutive models are supported such as Neo-Hookean,
Mooney-Rivlin,
Veronda-Westmann,
Arruda-Boyce and Ogden.
These models have a nonlinear stress-strain response.
In addition to the isotropic models,
there are several anisotropic models available.
These materials show anisotropic behavior in at least one preferred direction and are useful for modeling biological tissues such as tendons,
muscles and other tissues that contain fibers.
FEBio also contains a
\emph on
rigid body
\emph default
material model,
which can be used to model rigid structures whose deformation is negligible compared to the deformable geometry.
\end_layout
\begin_layout Standard
Biological tissues can interact in very complicated ways.
Therefore FEBio supports a wide range of boundary conditions to model these interactions.
These include prescribed displacements,
nodal forces,
and pressure forces.
Deformable models can also be connected to rigid bodies so that the user can model prescribed rotations and torques.
Rigid bodies can be connected with rigid joints.
Even more complicated interactions can be modeled using FEBio's contact interfaces.
The user can choose between different types of contact interfaces,
such as sliding interfaces,
tied interfaces and rigid wall interfaces.
A sliding interface is defined between two surfaces that are allowed to separate and slide across each other but are not allowed to penetrate.
The rigid wall interface is also similar to the sliding interface,
except that one of the contacting surfaces is a movable rigid wall.
As of version 1.2,
there is an implementation of a sliding interface that allows for fluid flow crossing the contact interface.
The tied interface is similar to the sliding interface,
but in this case,
the surfaces are not allowed to slide or separate.
In addition,
the user may specify a body force which can be used to model the effects of gravity or base acceleration.
\end_layout
\begin_layout Section
About this document
\begin_inset CommandInset label
LatexCommand label
name "sec:about-this-document"
\end_inset
\end_layout
\begin_layout Standard
This document is a part of a set of three manuals that accompany FEBio:
the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio User's Manual}}
\end_layout
\end_inset
,
describing how to use FEBio,
the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Developer's
\end_layout
\begin_layout Plain Layout
Manual}}
\end_layout
\end_inset
for users who wish to modify or add features to the code,
and this manual,
which describes the theory behind most of the FEBio algorithms.
\end_layout
\begin_layout Standard
The purpose of this manual is to provide theoretical background on many of the algorithms that are implemented in FEBio.
In this way the user can develop a better understanding of how the program works and how it can be used to create well defined biomechanical simulations.
The authors have tried to be as detailed as possible to make the text coherent and comprehensible,
but due to the complexity of some of the topics,
some descriptions only skim the surface.
Many of the theoretical ideas discussed in this manual can and have filled entire bookshelves.
The explanations contained herein should be sufficient to give the reader a basic understanding of the theoretical developments.
References to textbooks and the primary literature are provided for further reading.
\end_layout
\begin_layout Standard
Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:continuum-mechanics"
nolink "false"
\end_inset
starts with a brief overview of some of the important concepts in continuum mechanics.
Readers who are already familiar with this field can skip this chapter,
although the material may be useful to get familiar with the notation and terminology used in this manual.
\end_layout
\begin_layout Standard
Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Nonlinear-FE-Method"
nolink "false"
\end_inset
describes the nonlinear finite element method.
It also explains the Newton-Raphson method,
which is the basis for most implementations of the nonlinear finite element method.
A more specialized version of this algorithm,
the BFGS method,
is described as well since it is used in FEBio.
\end_layout
\begin_layout Standard
In Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Element-Library"
nolink "false"
\end_inset
the different element types that are available in FEBio are described in detail.
FEBio currently supports 3D solid elements,
such as the linear hexahedral,
pentahedral and tetrahedral elements,
as well as quadrilateral and triangular shell elements.
\end_layout
\begin_layout Standard
Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Constitutive-Models"
nolink "false"
\end_inset
contains a detailed description of the material models in FEBio.
Most of these models are based on hyperelasticity,
which is introduced in chapter 2.
Several transversely isotropic materials are described as well.
This also discusses the biphasic material and its implementation in FEBio.
\end_layout
\begin_layout Standard
Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Contact-and-Coupling"
nolink "false"
\end_inset
describes the basics of the theory of contact and coupling.
In FEBio the user can connect the different parts of the geometry in a variety of ways.
There are rigid interfaces where a deformable model is attached to a rigid model,
rigid joints where two or more rigid bodies connect,
and sliding interfaces where two surfaces are allowed to separate and slide across each other but are not allowed to penetrate.
The various contact and coupling algorithms are discussed as well together with their implementation in FEBio.
\end_layout
\begin_layout Chapter
Continuum Mechanics
\begin_inset CommandInset label
LatexCommand label
name "chap:continuum-mechanics"
\end_inset
\end_layout
\begin_layout Standard
This chapter contains an overview of some of the important concepts from continuum mechanics and establishes some of the notation and terminology that will be used in the rest of this document.
The section begins by introducing the important concepts of deformation,
stress and strain.
Next the concept of hyperelasticity is discussed.
Finally the concept of virtual work is discussed.
This concept will be used later to derive the nonlinear finite element equations.
For a more thorough introduction to the mathematics needed for continuum mechanics,
the user can consult
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
.
\end_layout
\begin_layout Section
Vectors and Tensors
\begin_inset CommandInset label
LatexCommand label
name "sec:vectors-and-tensors"
\end_inset
\end_layout
\begin_layout Standard
It is assumed that the reader is familiar with the concepts of vectors and tensors.
This section summarizes the notation and some useful relations that will be used throughout the manual.
\end_layout
\begin_layout Standard
Vectors are denoted by small,
bold letters,
e.g.
\series bold
v
\series default
.
Their components will be denoted by
\begin_inset space \quad{}
\end_inset
\begin_inset Formula $v_{i}$
\end_inset
,
where,
unless otherwise stated,
Latin under scripts such as
\begin_inset Formula $i$
\end_inset
or
\begin_inset Formula $I$
\end_inset
will range from 1 to 3.
In matrix form a vector will be represented as a column vector and its transpose as a row vector:
\begin_inset Formula
\begin{equation}
\begin{array}{cc}
\mathbf{v}=\left(\begin{array}{c}
v_{1}\\
v_{2}\\
v_{3}
\end{array}\right),\quad & \mathbf{v}^{T}=\left(\begin{array}{ccc}
v_{1}, & v_{2}, & v_{3}\end{array}\right)\end{array}.\label{eq1}
\end{equation}
\end_inset
The following products are defined between vectors.
Assume
\series bold
u
\series default
,
\series bold
v
\series default
are vectors.
Also note that the Einstein summation convention is used throughout this manual
\begin_inset CommandInset citation
LatexCommand citep
key "Lai10"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
The
\emph on
dot
\emph default
or
\emph on
scalar product
\emph default
:
\begin_inset Formula
\begin{equation}
\mathbf{u}\cdot\mathbf{v}=u_{i}v_{i}\,.\label{eq2}
\end{equation}
\end_inset
The
\emph on
cross product
\emph default
:
\begin_inset Formula
\begin{equation}
\mathbf{u}\times\mathbf{v}=\left[\begin{array}{c}
u_{2}v_{3}-u_{3}v_{2}\\
u_{3}v_{1}-u_{1}v_{3}\\
u_{1}v_{2}-u_{2}v_{1}
\end{array}\right]\,.\label{eq3}
\end{equation}
\end_inset
The
\emph on
vector
\emph default
\emph on
outer product
\emph default
:
\begin_inset Formula
\begin{equation}
\left(\mathbf{u}\otimes\mathbf{v}\right)_{ij}=u_{i}v_{j}\,.\label{eq4}
\end{equation}
\end_inset
Note that vectors are also known as first order tensors.
Scalars are known as zero order tensors.
The outer product,
defined by equation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq4"
nolink "false"
\end_inset
,
is a second order tensor.
\end_layout
\begin_layout Standard
Second order tensors are denoted by bold,
capital letters,
e.g.
\series bold
\begin_inset Formula $\mathbf{A}$
\end_inset
\series default
.
Some exceptions will be made to remain consistent with the literature.
For instance,
the Cauchy stress tensor is denoted by
\begin_inset Formula $\mathbf{\boldsymbol{\sigma}}$
\end_inset
.
However,
the nature of the objects will always be clear from the context.
The following operations on tensors are defined.
Assume
\series bold
\begin_inset Formula $\mathbf{A}$
\end_inset
\series default
and
\series bold
\begin_inset Formula $\mathbf{B}$
\end_inset
\series default
are second-order tensors.
\end_layout
\begin_layout Standard
The
\emph on
double contraction
\emph default
or
\emph on
tensor inner product
\emph default
is defined as:
\begin_inset Formula
\begin{equation}
\mathbf{A}:\mathbf{B}=A_{ij}B_{ij}\,.\label{eq5}
\end{equation}
\end_inset
The
\emph on
trace
\emph default
is defined as:
\begin_inset Formula
\begin{equation}
\tr\mathbf{A}=\mathbf{I}:\mathbf{A}=A_{ii}\,.\label{eq6}
\end{equation}
\end_inset
Here
\begin_inset Formula $\mathbf{I}$
\end_inset
is the second order identity tensor with components
\begin_inset Formula $\delta_{ij}$
\end_inset
.
\end_layout
\begin_layout Standard
In general the components of tensors will change under a change of coordinate system.
Nevertheless,
certain intrinsic quantities associated with them will remain invariant under such a transformation.
The scalar product between two vectors is such an example.
The double contraction between two second-order tensors is another example.
The following set of invariants for second-order tensors is commonly used:
\begin_inset Formula
\begin{equation}
\begin{aligned}I_{1} & =\tr\mathbf{A},\\
I_{2} & =\frac{1}{2}\left(\left(\tr\mathbf{A}\right)^{2}-\tr\mathbf{A}^{2}\right)\\
I_{3} & =\det\mathbf{A}.
\end{aligned}
\,.\label{eq7}
\end{equation}
\end_inset
A tensor
\series bold
\begin_inset Formula $\mathbf{S}$
\end_inset
\series default
is called symmetric if it is equal to its transpose:
\begin_inset Formula
\begin{equation}
\mathbf{S}=\mathbf{S}^{T}\,.\label{eq8}
\end{equation}
\end_inset
A tensor
\series bold
\begin_inset Formula $\mathbf{W}$
\end_inset
\series default
is called anti-symmetric if it is equal to the negative of its transpose:
\begin_inset Formula
\begin{equation}
\mathbf{W}=-\mathbf{W}^{T}\,.\label{eq9}
\end{equation}
\end_inset
Any second order tensor
\series bold
\begin_inset Formula $\mathbf{A}$
\end_inset
\series default
can be written as the sum of a symmetric tensor
\begin_inset Formula $\mathbf{S}$
\end_inset
\series bold
\series default
and an anti-symmetric tensor
\series bold
\begin_inset Formula $\mathbf{W}$
\end_inset
\series default
:
\begin_inset Formula
\begin{equation}
\mathbf{A}=\mathbf{S}+\mathbf{W},\label{eq10}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{S}=\frac{1}{2}\left(\mathbf{A}+\mathbf{A}^{T}\right),\mbox{\thinspace and\thinspace}\mathbf{W}=\frac{1}{2}\left(\mathbf{A}-\mathbf{A}^{T}\right).\label{eq11}
\end{equation}
\end_inset
Also note that for any tensor
\series bold
\begin_inset Formula $\mathbf{B}$
\end_inset
\series default
the following holds:
\begin_inset Formula
\begin{equation}
\mathbf{B}:\mathbf{A}=\mathbf{B}:\mathbf{S}\,,\quad\mathbf{B}:\mathbf{W}=\mathbf{0}\,.\label{eq12}
\end{equation}
\end_inset
With any anti-symmetric tensor a dual vector
\series bold
\begin_inset Formula $\mathbf{w}$
\end_inset
\series default
can be associated such that,
\begin_inset Formula
\begin{equation}
\mathbf{\hat{w}}\cdot\mathbf{u}=\mathbf{w}\times\mathbf{u}\,,\label{eq13}
\end{equation}
\end_inset
where the second order tensor
\begin_inset Formula $\mathbf{\hat{w}}$
\end_inset
is defined as,
\begin_inset Formula
\begin{equation}
\mathbf{\hat{w}}=\left[\begin{array}{ccc}
0 & -w_{3} & w_{2}\\
w_{3} & 0 & -w_{1}\\
-w_{2} & w_{1} & 0
\end{array}\right]\,.\label{eq14}
\end{equation}
\end_inset
A second order
\series bold
\begin_inset Formula $\mathbf{Q}$
\end_inset
\series default
tensor is called
\emph on
orthogonal
\emph default
if
\begin_inset Formula $\mathbf{Q}^{-1}=\mathbf{Q}^{T}$
\end_inset
.
\end_layout
\begin_layout Standard
In the implementation of the FE method it is often convenient to write symmetric second-order tensors using
\emph on
Voigt notation
\emph default
.
In this notation the components of a 2
\begin_inset Formula $^{\mathrm{nd}}$
\end_inset
order symmetric tensor
\series bold
\begin_inset Formula $\mathbf{A}$
\end_inset
\series default
are arranged as a column vector:
\begin_inset Formula
\begin{equation}
\left[\mathbf{A}\right]=\left[\begin{array}{c}
A_{11}\\
A_{22}\\
A_{33}\\
A_{12}\\
A_{23}\\
A_{13}
\end{array}\right]\,.\label{eq15}
\end{equation}
\end_inset
Higher order tensors will be denoted by bold,
capital,
script symbols,
e.g.
\begin_inset Formula $\boldsymbol{\mathcal{A}}$
\end_inset
.
An example of a third-order tensor is the
\emph on
permutation tensor
\emph default
\begin_inset Formula $\mathcal{E}_{ijk}$
\end_inset
,
whose components are 1 for an even permutation of
\begin_inset Formula $\left(1,2,3\right)$
\end_inset
,
-1 for an odd permutation of
\begin_inset Formula $\left(1,2,3\right)$
\end_inset
and zero otherwise.
The permutation symbol is useful for expressing the cross-product of two vectors in index notation:
\begin_inset Formula
\begin{equation}
\left(\mathbf{u}\times\mathbf{v}\right)_{i}=\mathcal{E}_{ijk}u_{j}v_{k}\,.\label{eq16}
\end{equation}
\end_inset
An example of a fourth-order tensor is the elasticity tensor
\begin_inset Formula $\boldsymbol{\mathcal{C}}$
\end_inset
which,
in linear elasticity theory,
relates the small strain tensor
\begin_inset Formula $\mathbf{\boldsymbol{\varepsilon}}$
\end_inset
and the Cauchy stress tensor
\begin_inset Formula $\boldsymbol{\sigma}=\boldsymbol{\mathcal{C}}:\boldsymbol{\varepsilon}$
\end_inset
.
\end_layout
\begin_layout Standard
Higher order tensors can be constructed from second order tensors in a similar way as second order tensors can be constructed from vectors.
If
\begin_inset Formula $\mathbf{A}$
\end_inset
and
\begin_inset Formula $\mathbf{B}$
\end_inset
are second order tensors,
then the following fourth order tensors can be defind by requiring that the following must hold for any second order tensor
\begin_inset Formula $\mathbf{X}$
\end_inset
:
\begin_inset Formula
\begin{equation}
\left(\mathbf{A}\otimes\mathbf{B}\right):\mathbf{X}=\left(\mathbf{B}:\mathbf{X}\right)\mathbf{A}\,,\label{eq17}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\left(\mathbf{A}\oslash\mathbf{B}\right):\mathbf{X}=\mathbf{A}\cdot\mathbf{X}\cdot\mathbf{B}^{T}\,,\label{eq18}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\left(\mathbf{A}\obslash\mathbf{B}\right):\mathbf{X}=\mathbf{A}\cdot\mathbf{X}^{T}\cdot\mathbf{B}^{T}\,,\label{eq19}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\left(\mathbf{A}\odot\mathbf{B}\right):\mathbf{X}=\frac{1}{2}\left(\mathbf{A}\cdot\mathbf{X}\cdot\mathbf{B}^{T}+\mathbf{A}\cdot\mathbf{X}^{T}\cdot\mathbf{B}^{T}\right)\,.\label{eq20}
\end{equation}
\end_inset
The Cartesian component forms of the operators
\begin_inset Formula $\otimes$
\end_inset
,
\begin_inset Formula $\oslash$
\end_inset
,
\begin_inset Formula $\obslash$
\end_inset
and
\begin_inset Formula $\odot$
\end_inset
are defined as follows:
\begin_inset Formula
\begin{equation}
\left(\mathbf{A}\otimes\mathbf{B}\right)_{ijkl}=\mathbf{A}_{ij}\mathbf{B}_{kl}\,,\label{eq21}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\left(\mathbf{A}\oslash\mathbf{B}\right)_{ijkl}=\mathbf{A}_{ik}\mathbf{B}_{jl}\,,\label{eq22}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\left(\mathbf{A}\obslash\mathbf{B}\right)_{ijkl}=A_{il}B_{jk}\,,\label{eq23}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\left(\mathbf{A}\odot\mathbf{B}\right)_{ijkl}=\frac{1}{2}\left(A_{ik}B_{jl}+A_{il}B_{jk}\right)\,.\label{eq24}
\end{equation}
\end_inset
The fourth order identity tensors are defined as:
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{A} & =\underline{\mathcal{I}}:\mathbf{A}\,,\\
\mathbf{A}^{T} & =\overline{\mathcal{I}}:\mathbf{A}\,,
\end{aligned}
\label{eq25}
\end{equation}
\end_inset
where
\begin_inset Formula $\underline{\mathcal{I}}=\mathbf{I}\oslash\mathbf{I}$
\end_inset
and
\begin_inset Formula $\overline{\boldsymbol{\mathcal{I}}}=\mathbf{I}\obslash\mathbf{I}$
\end_inset
.
The components are given by:
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathcal{\underline{I}}_{ijkl} & =\delta_{ik}\delta_{jl}\,,\\
\overline{\mathcal{I}}_{ijkl} & =\delta_{il}\delta_{jk}\,.
\end{aligned}
\label{eq26}
\end{equation}
\end_inset
We may also define
\begin_inset Formula $\boldsymbol{\mathcal{I}}=\frac{1}{2}\left(\underline{\boldsymbol{\mathcal{I}}}+\overline{\boldsymbol{\mathcal{I}}}\right)$
\end_inset
,
such that
\begin_inset Formula $\boldsymbol{\mathcal{I}}:\mathbf{A}=\frac{1}{2}\left(\mathbf{A}+\mathbf{A}^{T}\right)$
\end_inset
returns the symmetric part of
\begin_inset Formula $\mathbf{A}$
\end_inset
.
In the special case when
\begin_inset Formula $\mathbf{A}$
\end_inset
is symmetric it follows that
\begin_inset Formula $\underline{\mathcal{I}}:\mathbf{A}=\boldsymbol{\mathcal{I}}:\mathbf{A}=\mathbf{A}$
\end_inset
.
\end_layout
\begin_layout Section
The Directional Derivative
\begin_inset CommandInset label
LatexCommand label
name "sec:The-Directional-Derivative"
\end_inset
\end_layout
\begin_layout Standard
In later sections the nonlinear finite element method will be formulated.
Anticipating an iterative solution method to solve the nonlinear equations,
it will be necessary to linearize the quantities involved.
This linearization process will utilize a construction called the
\emph on
directional derivative
\emph default
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
The directional derivative of a function
\begin_inset Formula $f\left(\mathbf{x}\right)$
\end_inset
is defined as follows:
\begin_inset Formula
\begin{equation}
Df\left(\mathbf{x}\right)\left[\mathbf{u}\right]=\left.\frac{d}{d\varepsilon}\right|_{\varepsilon=0}f\left(\mathbf{x}+\varepsilon\mathbf{u}\right)\,.\label{eq27}
\end{equation}
\end_inset
The quantity
\series bold
\begin_inset Formula $\mathbf{x}$
\end_inset
\series default
may be a scalar,
a vector or even a vector of unknown functions.
For instance,
consider a scalar function
\begin_inset Formula $f\left(\mathbf{x}\right)$
\end_inset
,
where
\series bold
\begin_inset Formula $\mathbf{x}$
\end_inset
\series default
is the position vector in
\begin_inset Formula $\mathbb{R}^{3}$
\end_inset
.
In this case the directional derivative is given by:
\begin_inset Formula
\begin{equation}
\begin{aligned}Df\left(\mathbf{x}\right)\left[\mathbf{u}\right] & =\left.\frac{d}{d\varepsilon}\right|_{\varepsilon=0}f\left(\mathbf{x}+\varepsilon\mathbf{u}\right)\\
& =\frac{\partial f}{\partial x_{i}}u_{i}\\
& =\nabla f\cdot\mathbf{u}\,.
\end{aligned}
\label{eq28}
\end{equation}
\end_inset
Here,
the symbol
\begin_inset Formula $\nabla$
\end_inset
(
\begin_inset Quotes eld
\end_inset
nabla
\begin_inset Quotes erd
\end_inset
) depicts the gradient operator.
\end_layout
\begin_layout Standard
The linearization of a function implies that it is approximated by a linear function.
Using the directional derivative,
a function
\begin_inset Formula $f$
\end_inset
can be linearized as follows:
\begin_inset Formula
\begin{equation}
f\left(\mathbf{x}+\mathbf{u}\right)\cong f\left(\mathbf{x}\right)+Df\left(\mathbf{x}\right)\left[\mathbf{u}\right].\label{eq29}
\end{equation}
\end_inset
The directional derivative obeys the usual properties for derivatives.
\end_layout
\begin_layout Enumerate
\emph on
sum rule
\emph default
:
If
\begin_inset Formula $f=f_{1}+f_{2}$
\end_inset
,
then
\begin_inset Formula
\begin{equation}
Df\left(\mathbf{x}\right)\left[\mathbf{u}\right]=Df_{1}\left(\mathbf{x}\right)\left[\mathbf{u}\right]+Df_{2}\left(\mathbf{x}\right)\left[\mathbf{u}\right]\,.\label{eq30}
\end{equation}
\end_inset
\end_layout
\begin_layout Enumerate
\emph on
product rule
\emph default
:
If
\begin_inset Formula $f=f_{1}\cdot f_{2}$
\end_inset
,
then
\begin_inset Formula
\begin{equation}
Df\left(\mathbf{x}\right)\left[\mathbf{u}\right]=f_{1}\left(\mathbf{x}\right)\cdot Df_{2}\left(\mathbf{x}\right)\left[\mathbf{u}\right]+f_{2}\cdot Df_{1}\left(\mathbf{x}\right)\left[\mathbf{u}\right]\,.\label{eq31}
\end{equation}
\end_inset
\end_layout
\begin_layout Enumerate
\emph on
chain rule
\emph default
:
If
\begin_inset Formula $f=g\left(h\left(\mathbf{x}\right)\right)$
\end_inset
,
then
\begin_inset Formula
\begin{equation}
Df\left(\mathbf{x}\right)\left[\mathbf{u}\right]=Dg\left(h\left(\mathbf{x}\right)\right)\left[Dh\left(\mathbf{x}\right)\left[\mathbf{u}\right]\right]\,.\label{eq32}
\end{equation}
\end_inset
\end_layout
\begin_layout Section
Cauchy Stress
\begin_inset CommandInset label
LatexCommand label
name "sec:Cauchy-Stress"
\end_inset
\end_layout
\begin_layout Standard
Let the plane with unit normal
\begin_inset Formula $\mathbf{n}$
\end_inset
bisect a loaded material body,
such that
\begin_inset Formula $\mathbf{n}$
\end_inset
represents the outward normal (pointing away from the material) to one of the two halves.
The traction vector
\begin_inset Formula $\mathbf{t}$
\end_inset
at any point
\begin_inset Formula $P$
\end_inset
on this cross-section represents the limit of the reaction force
\begin_inset Formula $\Delta\mathbf{f}_{n}$
\end_inset
acting over an elemental area
\begin_inset Formula $\Delta A_{n}$
\end_inset
in the neighborhood of
\begin_inset Formula $P$
\end_inset
,
as
\begin_inset Formula $\Delta A_{n}\to0$
\end_inset
.
For a non-polar medium,
it is assumed that the reaction moment
\begin_inset Formula $\Delta\mathbf{m}_{n}$
\end_inset
acting over
\begin_inset Formula $\Delta A_{n}$
\end_inset
at
\begin_inset Formula $P$
\end_inset
vanishes as
\begin_inset Formula $\Delta A_{n}\to0$
\end_inset
.
Since there can be an infinite number of planes passing through the point
\begin_inset Formula $P$
\end_inset
,
it follows that
\begin_inset Formula $\mathbf{t}$
\end_inset
may assume an infinity of values for each different
\begin_inset Formula $\mathbf{n}$
\end_inset
.
Therefore,
we define a unique tensorial measure
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
at
\begin_inset Formula $P$
\end_inset
,
which returns the traction
\begin_inset Formula $\mathbf{t}$
\end_inset
for any unit normal
\begin_inset Formula $\mathbf{n}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\mathbf{t}=\boldsymbol{\sigma}\cdot\mathbf{n}.\label{eq:traction-stress-relation}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
is the
\emph on
Cauchy stress tensor
\emph default
at any point
\begin_inset Formula $P$
\end_inset
inside the material body.
The Cauchy stress tensor,
a spatial tensor,
is the actual physical stress,
since the corresponding traction vector is the force in the deformed configuration,
per unit deformed area.
\end_layout
\begin_layout Section
Axioms of Conservation
\begin_inset CommandInset label
LatexCommand label
name "sec:Axioms-of-Conservation"
\end_inset
\end_layout
\begin_layout Standard
The governing equations of continuum mechanics are given by the axioms of conservation of mass,
linear and angular momentum,
and energy.
These axioms produce differential equations that need to be solved for the material response.
However,
on their own,
these equations are insufficient to solve for all the unknowns in an analysis,
therefore we must also provide equations of state that describe the behavior of specific classes of materials,
such as elastic solids,
viscoelastic solids,
viscous fluids,
etc.
These equations of state are formulated as constitutive models,
which may not be chosen arbitrarily:
they must be constrained by the axiom of entropy inequality.
In this section,
we summarize all the axioms of conservation for a pure substance,
as well as the axiom of entropy inequality.
\end_layout
\begin_layout Subsection
Axiom of Mass Balance
\begin_inset CommandInset label
LatexCommand label
name "subsec:Axiom-Mass-Balance"
\end_inset
\end_layout
\begin_layout Standard
The axiom of mass balance simply states that mass is conserved,
or equivalently,
its time rate of change is zero.
Normally,
we formulate this axiom in a volumetric domain (such as a fixed control volume with permeable boundary,
a material region with impermeable boundary,
or a material region with permeable boundary),
then convert it to its differential form.
In a spatial (Eulerian) frame,
the differential statement of the axiom of mass balance takes the form
\begin_inset Formula
\begin{equation}
\frac{\partial\rho}{\partial t}+\divg\left(\rho\mathbf{v}\right)=0\,,\label{eq:axiom-mass-balance}
\end{equation}
\end_inset
where
\begin_inset Formula $\rho$
\end_inset
is the mass density of the matter and
\begin_inset Formula $\mathbf{v}$
\end_inset
is its velocity vector.
Since
\begin_inset Formula $\divg\left(\rho\mathbf{v}\right)=\grad\rho\cdot\mathbf{v}+\rho\divg\mathbf{v}$
\end_inset
,
we may also write this relation in the form
\begin_inset Formula
\begin{equation}
\frac{D\rho}{Dt}+\rho\divg\mathbf{v}=0\,,\label{eq:mass-balance-redux}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\frac{D\rho}{Dt}=\frac{\partial\rho}{\partial t}+\grad\rho\cdot\mathbf{v}\label{eq:material-derivative-density}
\end{equation}
\end_inset
is the
\emph on
material time derivative
\emph default
of the mass density
\emph on
in the spatial frame
\emph default
.
\end_layout
\begin_layout Subsection
Axioms of Momentum Balance
\begin_inset CommandInset label
LatexCommand label
name "subsec:Axiom-Linear-Momentum"
\end_inset
\end_layout
\begin_layout Standard
The axioms of linear and angular momentum balance are also known as Newton's second law of motion.
The axiom of linear momentum balance states that the time rate of change of linear momentum is equal to the sum of all surface and body forces.
The differential statement of the axiom of mass balance in a spatial frame is given by
\begin_inset Formula
\begin{equation}
\rho\frac{D\mathbf{v}}{Dt}=\divg\boldsymbol{\sigma}+\rho\mathbf{b}\,,\label{eq:axiom-linear-momentum}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
is the Cauchy stress tensor in the material,
and
\begin_inset Formula $\mathbf{b}$
\end_inset
is the specific body force vector (body force per mass),
which is typically prescribed.
Note that
\begin_inset Formula $D\mathbf{v}/Dt$
\end_inset
is the acceleration of the matter at every point in the continuum,
as evaluated in the spatial frame.
\end_layout
\begin_layout Standard
The axiom of angular momentum balance states that the time rate of change of angular momentum is equal to the sum of all surface and body moments.
The angular momentum represents the moment of the linear momentum about a fixed point (such as the origin) in an inertial frame.
In a
\emph on
non-polar medium
\emph default
,
we assume that moments are only produces by surface and body forces.
In that case,
the axiom of angular momentum balance is satisfied by the linear momentum balance
\emph on
and
\emph default
by letting the Cauchy stress be symmetric,
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}^{T}=\boldsymbol{\sigma}\,.\label{eq:axiom-angular-momentum}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Axiom of Energy Balance
\begin_inset CommandInset label
LatexCommand label
name "subsec:Axiom-Energy-Balance"
\end_inset
\end_layout
\begin_layout Standard
The axiom of energy balance is also known as the first law of thermodynamics.
The time rate of change of internal and kinetic energy is balanced by the rate of work done by body and surface forces,
the rate of heat flow into the medium,
and rate of heat supply from external sources.
Its differential statement takes the form
\begin_inset Formula
\begin{equation}
\rho\frac{D\varepsilon}{Dt}=\boldsymbol{\sigma}:\mathbf{L}-\divg\mathbf{q}+\rho r\,,\label{eq:axiom-energy-balance}
\end{equation}
\end_inset
where
\begin_inset Formula $\varepsilon$
\end_inset
is the specific internal energy (internal energy per mass),
\begin_inset Formula $\mathbf{L}=\grad\mathbf{v}$
\end_inset
is the velocity gradient,
\begin_inset Formula $\mathbf{q}$
\end_inset
is the heat flux in the medium (units of power per area),
and
\begin_inset Formula $r$
\end_inset
is the heat supply per unit mass from external sources that are not modeled explicitly (such as microwave heating in a framework that does not model microwave radiation explicitly,
or Joule heating in electrical conductors,
in a framework that does not model frictional interactions between electrons and atomic nuclei explicitly).
\end_layout
\begin_layout Standard
For non-polar media,
since the Cauchy stress is symmetric according to eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:axiom-angular-momentum"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
it follows that
\begin_inset Formula $\boldsymbol{\sigma}:\mathbf{L}=\boldsymbol{\sigma}:\mathbf{D}$
\end_inset
,
where
\begin_inset Formula $\mathbf{D}=\frac{1}{2}\left(\mathbf{L}+\mathbf{L}^{T}\right)$
\end_inset
is the symmetric part of the velocity gradient,
also known as the
\emph on
rate of deformation tensor
\emph default
.
\end_layout
\begin_layout Subsection
Axiom of Entropy Inequality
\begin_inset CommandInset label
LatexCommand label
name "subsec:Axiom-Entropy-Inequality"
\end_inset
\end_layout
\begin_layout Standard
The axioms of conservation presented above have introduced several functions of state that describe the behavior of specific materials,
such as the Cauchy stress
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
,
the specific internal energy
\begin_inset Formula $\varepsilon$
\end_inset
,
and the heat flux
\begin_inset Formula $\mathbf{q}$
\end_inset
.
These axioms of conservation have a total of ten scalar unknowns (six compoments of
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
,
three components of
\begin_inset Formula $\mathbf{q}$
\end_inset
,
and
\begin_inset Formula $\varepsilon$
\end_inset
),
whereas the equations have five scalar components (three components of the vectorial linear momentum balance,
and one component for each of the scalar mass and energy balance equations).
Therefore,
there are too few equations to solve for all the unknowns.
Consequently,
constitutive models must be provided for these functions of state,
which depend on a user-specified set of state variables (such as strain for elastic solids,
rate of deformation for viscous fluids,
temperature for heat transfer,
etc.).
\end_layout
\begin_layout Standard
Constitutive relations must be formulated in a manner that does not violate the axiom of entropy inequality,
also known as the second law of thermodynamics.
The second law of thermodynamics stipulates that the time rate of change of entropy in a medium is greater than the rate of entropy supply into the medium by various sources of heat.
In a spatial frame,
the differential statement of the axiom of entropy inequality is given by
\begin_inset Formula
\begin{equation}
\rho\frac{D\eta}{Dt}+\divg\frac{\mathbf{q}}{\theta}-\rho\frac{r}{\theta}\geqslant0\,,\label{eq:axiom-entropy-inequality}
\end{equation}
\end_inset
where
\begin_inset Formula $\eta$
\end_inset
is the specific entropy (entropy per unit mass) of the matter.
Entropy is a measure of disorder in a medium.
It represents another function of state.
\end_layout
\begin_layout Standard
Since Eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:axiom-entropy-inequality"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
does not include all of the functions of state,
we may combine it with the energy balance to recover
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
and
\begin_inset Formula $\varepsilon$
\end_inset
in the entropy inequality.
This may be achived by multiplying the entropy inequality in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:axiom-entropy-inequality"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
by the absolute temperature
\begin_inset Formula $\theta$
\end_inset
(recalling that
\begin_inset Formula $\theta$
\end_inset
is always positive) and adding it to the energy balance in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:axiom-energy-balance"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
to produce
\begin_inset Formula
\[
-\rho\left(\frac{D\varepsilon}{Dt}-\theta\frac{D\eta}{Dt}\right)+\boldsymbol{\sigma}:\mathbf{D}-\frac{1}{\theta}\mathbf{q}\cdot\grad\theta\geqslant0\,.
\]
\end_inset
The term in parentheses may be rearranged as
\begin_inset Formula
\[
\frac{D\varepsilon}{Dt}-\theta\frac{D\eta}{Dt}=\frac{D}{Dt}\left(\varepsilon-\theta\eta\right)+\eta\frac{D\theta}{Dt}\,.
\]
\end_inset
We now introduce the specific Helmholtz free energy,
\begin_inset Formula $\psi$
\end_inset
,
which relates the specific internal energy and entropy according to
\begin_inset Formula
\begin{equation}
\psi=\varepsilon-\theta\eta\,.\label{eq:specific-free-energy}
\end{equation}
\end_inset
We may say that the free energy is the part of the internal energy which is available to produce useful work.
Substituting this expression above produces the form of the Clausius-Duhem inequality that involves all the independent functions of state appearing in these axioms,
(
\begin_inset Formula $\psi$
\end_inset
,
\begin_inset Formula $\eta$
\end_inset
,
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
and
\begin_inset Formula $\mathbf{q}$
\end_inset
),
\begin_inset Formula
\begin{equation}
-\rho\left(\dot{\psi}+\eta\dot{\theta}\right)+\boldsymbol{\sigma}:\mathbf{D}-\frac{1}{\theta}\mathbf{q}\cdot\grad\theta\geqslant0\,,\label{eq:Clausius-Duhem-inequality}
\end{equation}
\end_inset
where we have substituted
\begin_inset Formula $D\left(\cdot\right)/Dt$
\end_inset
with the
\begin_inset Formula $\left(\dot{}\right)$
\end_inset
operator,
for notational simplicity.
\end_layout
\begin_layout Standard
It is important to understant that all functions of state are non-observable properties of matter:
No instruments exist to measure the complete state of stress inside a material,
nor the heat flux,
the internal energy,
or the entropy.
However,
we can formulate constitutive models that relate these functions of state to observable state variables,
then calculate their value for a specific state.
Observable state variables are all based on measurements of space (length,
area and volume) and time.
For example,
we can measure (observe) displacement,
velocity and acceleration of matter at various spatial locations,
from which we can calculate their spatial gradients and treat these as observable state variables.
From measurements of length in calibrated materials,
we can derive measurements of force (using a load cell) and temperature (using a thermometer).
\end_layout
\begin_layout Standard
To better understand the choice of state variables relevant to mechanics,
we proceed to describe the kinematics of a continuum in the next section.
\end_layout
\begin_layout Section
Kinematics of the Continuum
\begin_inset CommandInset label
LatexCommand label
name "sec:Kinematics-of-Continuum"
\end_inset
\end_layout
\begin_layout Subsection
Motion and Path Lines
\end_layout
\begin_layout Standard
At any instant of time
\begin_inset Formula $t$
\end_inset
,
the
\emph on
motion
\emph default
of a material particle
\begin_inset Formula $P$
\end_inset
in the continuum is given by the function
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigKinematicsContinuum.png
lyxscale 25
scale 50
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Kinematics of the continuum.
\begin_inset CommandInset label
LatexCommand label
name "fig15"
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{x}=\boldsymbol{\chi}\left(\mathbf{X},t\right)\label{eq:motion-chi}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{X}$
\end_inset
is the reference position,
at some reference time
\begin_inset Formula $t_{0}$
\end_inset
,
of the material particle
\begin_inset Formula $P$
\end_inset
currently located at the spatial location
\begin_inset Formula $\mathbf{x}$
\end_inset
.
This motion describes the
\emph on
path line
\emph default
of the particle that starts at
\begin_inset Formula $\mathbf{X}$
\end_inset
at
\begin_inset Formula $t=t_{0}$
\end_inset
and passes through
\begin_inset Formula $\mathbf{x}$
\end_inset
at time
\begin_inset Formula $t$
\end_inset
.
At a subsequent time
\begin_inset Formula $t^{\prime}$
\end_inset
,
the material particle passing through
\begin_inset Formula $\mathbf{x}$
\end_inset
would have originated at a different location
\begin_inset Formula $\mathbf{X}^{\prime}$
\end_inset
at
\begin_inset Formula $t_{0}$
\end_inset
,
so that
\begin_inset Formula $\mathbf{x}=\boldsymbol{\chi}\left(\mathbf{X}^{\prime},t^{\prime}\right)=\boldsymbol{\chi}\left(\mathbf{X},t\right)$
\end_inset
.
The material particle
\begin_inset Formula $P$
\end_inset
is uniquely identified by its position
\begin_inset Formula $\mathbf{X}$
\end_inset
in the reference configuration.
Therefore,
any function
\begin_inset Formula $f$
\end_inset
associated with each material point
\begin_inset Formula $\mathbf{X}$
\end_inset
,
such as density,
temperature,
velocity,
etc.,
may be expressed as
\begin_inset Formula $f=\hat{f}\left(\mathbf{X},t\right)$
\end_inset
in the
\emph on
material
\emph default
(or
\emph on
Lagrangian
\emph default
) frame.
Alternatively,
the same function may be expressed in terms of the spatial position
\begin_inset Formula $\mathbf{x}$
\end_inset
through which the material particle originating at
\begin_inset Formula $\mathbf{X}$
\end_inset
passes at time
\begin_inset Formula $t$
\end_inset
.
In that case,
\begin_inset Formula $f=\tilde{f}\left(\mathbf{x},t\right)$
\end_inset
expresses this function in the
\emph on
spatial
\emph default
(or
\emph on
Eulerian
\emph default
) frame.
Importantly,
since the function
\begin_inset Formula $f$
\end_inset
is associated with the material,
its time rate of change as the material moves is called the
\emph on
material time derivative
\emph default
of
\begin_inset Formula $f$
\end_inset
.
The material time derivative of
\begin_inset Formula $f$
\end_inset
in the material frame is given by
\begin_inset Formula
\begin{equation}
\dot{f}=\frac{\partial\hat{f}\left(\mathbf{X},t\right)}{\partial t}\,.\label{eq:material-deriv-material}
\end{equation}
\end_inset
Therefore,
the velocity
\begin_inset Formula $\mathbf{v}\left(\mathbf{X},t\right)$
\end_inset
of the particle
\begin_inset Formula $P$
\end_inset
is defined in the material frame as the material time derivative
\begin_inset Formula $\dot{\boldsymbol{\chi}}\left(\mathbf{X},t\right)$
\end_inset
of the motion,
\begin_inset Formula
\begin{equation}
\mathbf{v}\left(\mathbf{X},t\right)=\frac{\partial\boldsymbol{\chi}\left(\mathbf{X},t\right)}{\partial t}\,.\label{eq75}
\end{equation}
\end_inset
The material time derivative of
\begin_inset Formula $f$
\end_inset
in the spatial frame may be evaluated by using the chain rule on
\begin_inset Formula $f=\tilde{f}\left(\mathbf{x},t\right)\equiv f\left(\boldsymbol{\chi}\left(\mathbf{X},t\right),t\right)$
\end_inset
,
thus
\begin_inset Formula
\[
\dot{f}=\frac{\partial\tilde{f}\left(\boldsymbol{\chi},t\right)}{\partial t}+\frac{\partial\tilde{f}\left(\boldsymbol{\chi},t\right)}{\partial\boldsymbol{\chi}}\cdot\frac{\partial\boldsymbol{\chi}}{\partial t}\,.
\]
\end_inset
Using Eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq75"
nolink "false"
\end_inset
and recognizing that
\begin_inset Formula $\partial\tilde{f}/\partial\boldsymbol{\chi}\equiv\partial\tilde{f}/\partial\mathbf{x}=\grad\tilde{f}$
\end_inset
,
this expression may be rewritten as
\begin_inset Formula
\begin{equation}
\dot{f}=\frac{\partial\tilde{f}}{\partial t}+\grad\tilde{f}\cdot\mathbf{v}\equiv\frac{D\tilde{f}\left(\mathbf{x},t\right)}{Dt}\,.\label{eq77}
\end{equation}
\end_inset
We used the operator
\begin_inset Formula $D\left(\cdot\right)/Dt$
\end_inset
to emphasize that this expression represents the material time derivative of
\begin_inset Formula $f$
\end_inset
in the spatial frame.
\end_layout
\begin_layout Standard
For a given particle
\begin_inset Formula $P$
\end_inset
,
the actual value of the function
\begin_inset Formula $f$
\end_inset
must be the same in the material and spatial frames,
thus
\begin_inset Formula $f=\hat{f}\left(\mathbf{X},t\right)=\tilde{f}\left(\mathbf{x},t\right)$
\end_inset
.
Similarly,
its material time derivative must have the same value in either frame,
\begin_inset Formula $\dot{f}=\frac{\partial\hat{f}}{\partial t}=\frac{D\tilde{f}}{Dt}$
\end_inset
.
For notational convenience,
we drop the caret and tilde symbols and assume from the context that
\begin_inset Formula $f\left(\mathbf{X},t\right)\equiv\hat{f}\left(\mathbf{X},t\right)$
\end_inset
and
\begin_inset Formula $f\left(\mathbf{x},t\right)\equiv\tilde{f}\left(\mathbf{x},t\right)$
\end_inset
.
\end_layout
\begin_layout Subsection
Deformation Gradient
\end_layout
\begin_layout Standard
For a continuum,
the increment in motion between the neigboring points
\begin_inset Formula $\mathbf{X}$
\end_inset
and
\begin_inset Formula $\mathbf{X}+d\mathbf{X}$
\end_inset
at a given time
\begin_inset Formula $t$
\end_inset
is given by
\begin_inset Formula
\begin{equation}
d\mathbf{x}=\boldsymbol{\chi}\left(\mathbf{X}+d\mathbf{X},t\right)-\boldsymbol{\chi}\left(\mathbf{X},t\right)=\left(\Grad\boldsymbol{\chi}\right)\cdot d\mathbf{X}\,.\label{eq:motion-gradient}
\end{equation}
\end_inset
Since the differentiation of
\begin_inset Formula $\boldsymbol{\chi}\left(\mathbf{X},t\right)$
\end_inset
is performed with respect to
\begin_inset Formula $\mathbf{X}$
\end_inset
,
we denote this gradient as
\begin_inset Formula $\Grad\equiv\partial\left(\cdot\right)/\partial\mathbf{X}$
\end_inset
.
In particular,
\begin_inset Formula
\begin{equation}
\mathbf{F}\equiv\frac{\partial\boldsymbol{\chi}}{\partial\mathbf{X}}=\Grad\boldsymbol{\chi}\label{eq:deformation-gradient}
\end{equation}
\end_inset
is known as the
\emph on
deformation gradient
\emph default
.
It follows from this relationship that a material element
\begin_inset Formula $d\mathbf{X}$
\end_inset
of solid constituent deforms into the material element
\begin_inset Formula $d\mathbf{x}$
\end_inset
at the current time
\begin_inset Formula $t$
\end_inset
such that
\begin_inset Formula $d\mathbf{x}=\mathbf{F}\cdot d\mathbf{X}$
\end_inset
.
\end_layout
\begin_layout Standard
The length of the element,
\begin_inset Formula $ds$
\end_inset
,
is given by
\begin_inset Formula
\begin{equation}
ds^{2}=d\mathbf{x}\cdot d\mathbf{x}=\left(\mathbf{F}\cdot d\mathbf{X}\right)\cdot\left(\mathbf{F}\cdot d\mathbf{X}\right)=d\mathbf{X}\cdot\left(\mathbf{F}^{T}\cdot\mathbf{F}\right)\cdot d\mathbf{X}\equiv d\mathbf{X}\cdot\mathbf{C}\cdot d\mathbf{X}\label{eq82}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{C}=\mathbf{F}^{T}\cdot\mathbf{F}\label{eq83}
\end{equation}
\end_inset
is the
\shape italic
right Cauchy-Green deformation tensor
\shape default
.
Note that
\begin_inset Formula $\mathbf{C}^{T}=\left(\mathbf{F}^{T}\cdot\mathbf{F}\right)^{T}=\mathbf{F}^{T}\cdot\mathbf{F}=\mathbf{C}$
\end_inset
,
thus
\begin_inset Formula $\mathbf{C}$
\end_inset
is symmetric.
\end_layout
\begin_layout Standard
Let the material element
\begin_inset Formula $d\mathbf{X}$
\end_inset
be of length
\begin_inset Formula $dS$
\end_inset
and directed along the unit normal
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
,
\begin_inset Formula $d\mathbf{X}=dS\mathbf{n}_{r}$
\end_inset
.
Upon deformation,
we have
\begin_inset Formula $d\mathbf{x}=\mathbf{F}\cdot d\mathbf{X}=dS\mathbf{F}\cdot\mathbf{n}_{r}$
\end_inset
and the length of the element in this deformed configuration is given by
\begin_inset Formula $ds$
\end_inset
where
\begin_inset Formula
\begin{equation}
ds^{2}=d\mathbf{x}\cdot d\mathbf{x}=\left(dS\mathbf{F}\cdot\mathbf{n}_{r}\right)\cdot\left(dS\mathbf{F}\cdot\mathbf{n}_{r}\right)=dS^{2}\mathbf{n}_{r}\cdot\left(\mathbf{F}^{T}\cdot\mathbf{F}\right)\cdot\mathbf{n}_{r}=dS^{2}\mathbf{n}_{r}\cdot\mathbf{C}\cdot\mathbf{n}_{r}\label{eq84}
\end{equation}
\end_inset
The length of the element in the current configuration relative to its length in the reference configuration is given by
\begin_inset Formula
\begin{equation}
\frac{ds}{dS}=\sqrt{\mathbf{n}_{r}\cdot\mathbf{C}\cdot\mathbf{n}_{r}}\equiv\lambda_{n}\label{eq85}
\end{equation}
\end_inset
where
\begin_inset Formula $\lambda_{n}$
\end_inset
is the relative change in length of the material element
\begin_inset Formula $d\mathbf{X}$
\end_inset
which is oriented along
\begin_inset Formula $\mathbf{n}$
\end_inset
.
\begin_inset Formula $\lambda_{n}$
\end_inset
is known as the
\shape italic
stretch ratio
\shape default
along
\begin_inset Formula $\mathbf{n}$
\end_inset
.
Note that
\begin_inset Formula $\lambda_{n}^{2}=\mathbf{n}_{r}\cdot\mathbf{C}\cdot\mathbf{n}_{r}$
\end_inset
is the normal component of
\begin_inset Formula $\mathbf{C}$
\end_inset
along
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
.
If we let
\begin_inset Formula $d\mathbf{x}=ds\,\mathbf{n}$
\end_inset
,
it follows from
\begin_inset Formula $d\mathbf{x}=\mathbf{F}\cdot d\mathbf{X}$
\end_inset
that
\begin_inset Formula
\begin{equation}
\lambda_{n}\mathbf{n}=\mathbf{F}\cdot\mathbf{n}_{r}\label{eq85a}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
Now consider two material elements
\begin_inset Formula $d\mathbf{X}_{m}=dS_{m}\mathbf{m}_{r}$
\end_inset
and
\begin_inset Formula $d\mathbf{X}_{n}=dS_{n}\mathbf{n}_{r}$
\end_inset
.
They each transform according to
\begin_inset Formula $d\mathbf{x}_{m}=\mathbf{F}\cdot d\mathbf{X}_{m}$
\end_inset
and
\begin_inset Formula $d\mathbf{x}_{n}=\mathbf{F}\cdot d\mathbf{X}_{n}$
\end_inset
and their dot product produces
\begin_inset Formula
\begin{equation}
d\mathbf{x}_{m}\cdot d\mathbf{x}_{n}=\left(\mathbf{F}\cdot d\mathbf{X}_{m}\right)\cdot\left(\mathbf{F}\cdot d\mathbf{X}_{n}\right)=d\mathbf{X}_{n}\cdot\mathbf{C}\cdot d\mathbf{X}_{m}\label{eq85b}
\end{equation}
\end_inset
or equivalently,
\begin_inset Formula
\begin{equation}
\lambda_{m}\lambda_{n}\mathbf{m}\cdot\mathbf{n}=\mathbf{n}_{r}\cdot\mathbf{C}\cdot\mathbf{m}_{r}\,,\quad\lambda_{m}=\frac{ds_{m}}{dS_{m}},\,\lambda_{n}=\frac{ds_{n}}{dS_{n}}\label{eq85c}
\end{equation}
\end_inset
where
\begin_inset Formula $d\mathbf{x}_{m}=ds_{m}\mathbf{m}$
\end_inset
and
\begin_inset Formula $d\mathbf{x}_{n}=ds_{n}\mathbf{n}$
\end_inset
.
Note that we may write
\begin_inset Formula $\mathbf{m}\cdot\mathbf{n}=\cos\theta=\sin\gamma$
\end_inset
,
where
\begin_inset Formula $\theta$
\end_inset
is the angle between
\begin_inset Formula $d\mathbf{x}_{m}$
\end_inset
and
\begin_inset Formula $d\mathbf{x}_{n}$
\end_inset
and
\begin_inset Formula $\gamma=\frac{\pi}{2}-\theta$
\end_inset
is its complementary angle (Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig17"
nolink "false"
\end_inset
),
so that
\begin_inset Formula
\begin{equation}
\mathbf{n}_{r}\cdot\mathbf{C}\cdot\mathbf{m}_{r}=\lambda_{m}\lambda_{n}\sin\gamma\,.\label{eq85d}
\end{equation}
\end_inset
Now consider the case where
\begin_inset Formula $\mathbf{m}_{r}\cdot\mathbf{n}_{r}=0$
\end_inset
,
i.e.,
the material elements
\begin_inset Formula $d\mathbf{X}_{m}$
\end_inset
and
\begin_inset Formula $d\mathbf{X}_{n}$
\end_inset
are orthogonal,
so that
\begin_inset Formula $\mathbf{n}_{r}\cdot\mathbf{C}\cdot\mathbf{m}_{r}=C_{mn}$
\end_inset
where
\begin_inset Formula $C_{mn}$
\end_inset
is a shear component of
\begin_inset Formula $\mathbf{C}$
\end_inset
.
It follows from this result that
\begin_inset Formula $C_{mn}$
\end_inset
represents a combined measure of the change in angle between
\begin_inset Formula $\mathbf{m}_{r}$
\end_inset
and
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
,
as well as the stretching of elements
\begin_inset Formula $d\mathbf{X}_{m}$
\end_inset
and
\begin_inset Formula $d\mathbf{X}_{n}$
\end_inset
.
The angle
\begin_inset Formula $\gamma$
\end_inset
,
which represents the change in angle between initially orthogonal line elements along
\begin_inset Formula $\mathbf{m}_{r}$
\end_inset
and
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
,
is called the
\emph on
engineering shear strain
\emph default
.
In particular,
in the range of small strains and rotations,
\begin_inset Formula $\lambda_{m}\approx1$
\end_inset
,
\begin_inset Formula $\lambda_{n}\approx1$
\end_inset
and
\begin_inset Formula $\sin\gamma\approx\gamma$
\end_inset
,
so that
\begin_inset Formula $C_{mn}\approx\gamma$
\end_inset
.
\end_layout
\begin_layout Standard
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigShearStrain.png
lyxscale 25
scale 50
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Change of angle between filaments.
\begin_inset CommandInset label
LatexCommand label
name "fig17"
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
According to the
\emph on
polar decomposition theorem
\emph default
,
the deformation gradient may be decomposed uniquely into
\begin_inset Formula
\begin{equation}
\mathbf{F}=\mathbf{R}\cdot\mathbf{U}=\mathbf{V}\cdot\mathbf{R}\label{eq:polar-decomposition-RU}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{R}$
\end_inset
is a proper orthogonal transformation (a rotation,
with
\begin_inset Formula $\det\mathbf{R}=+1$
\end_inset
),
\begin_inset Formula $\mathbf{U}$
\end_inset
is a symmetric tensor called the
\emph on
right
\emph default
(or
\emph on
material
\emph default
)
\emph on
stretch tensor
\emph default
,
and
\begin_inset Formula $\mathbf{V}$
\end_inset
is a symmetric tensor called the
\emph on
left stretch tensor
\emph default
.
It follows from this decomposition that
\begin_inset Formula $d\mathbf{x}=\mathbf{F}\cdot d\mathbf{X}=\mathbf{R}\cdot\left(\mathbf{U}\cdot d\mathbf{X}\right)$
\end_inset
may be viewed as a stretching of
\begin_inset Formula $d\mathbf{X}$
\end_inset
by
\begin_inset Formula $\mathbf{U}$
\end_inset
followed by a rotation by
\begin_inset Formula $\mathbf{R}$
\end_inset
,
whereas
\begin_inset Formula $d\mathbf{x}=\mathbf{V}\cdot\left(\mathbf{R}\cdot d\mathbf{X}\right)$
\end_inset
is the rotation of
\begin_inset Formula $d\mathbf{X}$
\end_inset
,
followed by stretching by
\begin_inset Formula $\mathbf{V}$
\end_inset
.
Since
\begin_inset Formula $\mathbf{C}=\mathbf{F}^{T}\cdot\mathbf{F}=\mathbf{U}^{2}$
\end_inset
,
it follows that the eigenvalues of
\begin_inset Formula $\mathbf{C}$
\end_inset
are the square of the eigenvalues of
\begin_inset Formula $\mathbf{U}$
\end_inset
.
Thus,
these eigenvalues provide a measure of the stretch,
not a measure of the rotation.
\begin_inset Formula $\mathbf{C}$
\end_inset
and
\begin_inset Formula $\mathbf{U}$
\end_inset
also share the same eigenvectors.
Thus,
if
\begin_inset Formula $\mathbf{C}$
\end_inset
is given by its spectral representation,
\begin_inset Formula
\begin{equation}
\mathbf{C}=\lambda_{1}^{2}\mathbf{u}_{1}\otimes\mathbf{u}_{1}+\lambda_{2}^{2}\mathbf{u}_{2}\otimes\mathbf{u}_{2}+\lambda_{3}^{2}\mathbf{u}_{3}\otimes\mathbf{u}_{3}\label{eq:85-2}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{u}_{i}$
\end_inset
's are its eigenvectors,
then
\begin_inset Formula $\mathbf{U}$
\end_inset
may be evaluated from
\begin_inset Formula
\begin{equation}
\mathbf{U}=\lambda_{1}\mathbf{u}_{1}\otimes\mathbf{u}_{1}+\lambda_{2}\mathbf{u}_{2}\otimes\mathbf{u}_{2}+\lambda_{3}\mathbf{u}_{3}\otimes\mathbf{u}_{3}\label{eq:85-3}
\end{equation}
\end_inset
and
\begin_inset Formula $\mathbf{R}=\mathbf{F}\cdot\mathbf{U}^{-1}$
\end_inset
,
where
\begin_inset Formula $\mathbf{U}^{-1}=\lambda_{1}^{-1}\mathbf{u}_{1}\otimes\mathbf{u}_{1}+\lambda_{2}^{-1}\mathbf{u}_{2}\otimes\mathbf{u}_{2}+\lambda_{3}^{-1}\mathbf{u}_{3}\otimes\mathbf{u}_{3}$
\end_inset
.
\end_layout
\begin_layout Standard
The motion can also be conveniently represented in terms of a
\shape italic
displacement
\shape default
function
\begin_inset Formula $\mathbf{u}$
\end_inset
in a material frame of reference such that
\begin_inset Formula
\begin{equation}
\mathbf{x}=\mathbf{X}+\mathbf{u}\left(\mathbf{X},t\right)\label{eq78}
\end{equation}
\end_inset
Then the deformation gradient for this motion is given by
\begin_inset Formula
\begin{equation}
\mathbf{F}=\frac{\partial\mathbf{x}}{\partial\mathbf{X}}=\Grad\mathbf{x}=\mathbf{I}+\Grad\mathbf{u}\label{eq81}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\begin{array}{cl}
\mathbf{C} & =\mathbf{F}^{T}\cdot\mathbf{F}=\left(\mathbf{I}+\Grad\mathbf{u}\right)^{T}\cdot\left(\mathbf{I}+\Grad\mathbf{u}\right)\\
& =\mathbf{I}+\Grad\mathbf{u}+\Grad^{T}\mathbf{u}+\left(\Grad^{T}\mathbf{u}\right)\cdot\left(\Grad\mathbf{u}\right)
\end{array}\label{eq83-1}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
Finally,
we can also define the
\shape italic
Lagrangian strain tensor
\shape default
\begin_inset Formula $\mathbf{E}$
\end_inset
(also known as the
\emph on
Green-Lagrange
\emph default
strain) from the above relation such that
\begin_inset Formula $\mathbf{C}=\mathbf{I}+2\mathbf{E}$
\end_inset
,
or
\begin_inset Formula
\begin{equation}
\mathbf{E}=\frac{1}{2}\left(\mathbf{C}-\mathbf{I}\right)=\frac{1}{2}\left[\Grad\mathbf{u}+\Grad^{T}\mathbf{u}+\left(\Grad^{T}\mathbf{u}\right)\cdot\left(\Grad\mathbf{u}\right)\right]\label{eq:E-C-relation}
\end{equation}
\end_inset
In the case of rigid body motion (translation and/or rotation,
\begin_inset Formula $\mathbf{C}=\mathbf{I}$
\end_inset
),
the Lagrangian strain tensor is equal to the null tensor.
Just as in the case of the stress tensor,
the strain tensors
\begin_inset Formula $\mathbf{C}$
\end_inset
and
\begin_inset Formula $\mathbf{E}$
\end_inset
also have strain invariants,
principal normal strains and principal directions of normal strain,
maximum shear strains and directions of maximum shear strain.
If
\begin_inset Formula $\lambda^{2}$
\end_inset
is an eigenvalue of
\begin_inset Formula $\mathbf{C}$
\end_inset
,
and
\begin_inset Formula $\mathbf{v}$
\end_inset
is its associated eigenvector,
then
\begin_inset Formula $\mathbf{v}$
\end_inset
is also an eigenvector of
\begin_inset Formula $\mathbf{E}$
\end_inset
since
\begin_inset Formula
\begin{equation}
\mathbf{E}\cdot\mathbf{v}=\frac{1}{2}\left(\mathbf{C}-\mathbf{I}\right)\cdot\mathbf{v}=\frac{1}{2}\left(\mathbf{C}\cdot\mathbf{v}-\mathbf{v}\right)=\frac{1}{2}\left(\lambda^{2}-1\right)\mathbf{v}\label{eq84-1}
\end{equation}
\end_inset
Therefore the corresponding eigenvalue of
\begin_inset Formula $\mathbf{E}$
\end_inset
is
\begin_inset Formula $\left(\lambda^{2}-1\right)/2$
\end_inset
,
which also established the relation between the normal components of
\begin_inset Formula $\mathbf{E}$
\end_inset
and
\begin_inset Formula $\mathbf{C}$
\end_inset
.
The shear components of
\begin_inset Formula $\mathbf{E}$
\end_inset
may be related to those of
\begin_inset Formula $\mathbf{C}$
\end_inset
according to
\begin_inset Formula
\[
E_{mn}=\mathbf{m}\cdot\mathbf{E}\cdot\mathbf{n}=\frac{1}{2}\mathbf{m}\cdot\mathbf{C}\cdot\mathbf{n}=\frac{1}{2}C_{mn}
\]
\end_inset
where
\begin_inset Formula $\mathbf{m}$
\end_inset
and
\begin_inset Formula $\mathbf{n}$
\end_inset
are orthogonal unit vectors.
Therefore,
the interpretation of
\begin_inset Formula $E_{mn}$
\end_inset
is similar to that of
\begin_inset Formula $C_{mn}$
\end_inset
,
with a factor of
\begin_inset Formula $1/2$
\end_inset
.
\end_layout
\begin_layout Standard
In the limit of small displacement gradients (small strains and rotations,
\begin_inset Formula $\left\Vert \Grad\mathbf{u}\right\Vert \ll1$
\end_inset
),
the expression for the Lagrangian strain tensor in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:E-C-relation"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
reduces to the
\emph on
infinitesimal strain tensor
\emph default
,
\begin_inset Formula
\begin{equation}
\boldsymbol{\varepsilon}=\frac{1}{2}\left(\grad\mathbf{u}+\grad^{T}\mathbf{u}\right)\,.\label{eq46}
\end{equation}
\end_inset
Note that this strain tensor is also the linearization of the Lagrangian strain tensor,
\begin_inset Formula
\begin{equation}
D\mathbf{E}\left[\mathbf{u}\right]=\mathbf{F}^{T}\cdot\boldsymbol{\varepsilon}\cdot\mathbf{F}\,.\label{eq47}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Rate of Deformation
\begin_inset CommandInset label
LatexCommand label
name "sec:Rate-of-Deformation"
\end_inset
\end_layout
\begin_layout Standard
The material time derivative of the deformation gradient may be denoted by
\begin_inset Formula $\dot{\mathbf{F}}$
\end_inset
.
Since
\begin_inset Formula $\mathbf{F}=\Grad\boldsymbol{\chi}$
\end_inset
,
it follows that
\begin_inset Formula $\dot{\mathbf{F}}=\Grad\dot{\boldsymbol{\chi}}=\Grad\mathbf{v}$
\end_inset
.
Using the chain rule,
\begin_inset Formula
\begin{equation}
\dot{\mathbf{F}}=\frac{\partial\mathbf{v}}{\partial\mathbf{X}}=\frac{\partial\mathbf{v}}{\partial\mathbf{x}}\cdot\frac{\partial\mathbf{x}}{\partial\mathbf{X}}=\grad\mathbf{v}\cdot\mathbf{F}\label{eq85e}
\end{equation}
\end_inset
or simply
\begin_inset Formula
\begin{equation}
\dot{\mathbf{F}}=\mathbf{L}\cdot\mathbf{F}\label{eq85f}
\end{equation}
\end_inset
Differentiating
\begin_inset Formula $\mathbf{C}=\mathbf{F}^{T}\cdot\mathbf{F}$
\end_inset
with respect to time,
and making use of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq85e"
nolink "false"
\end_inset
produces
\begin_inset Formula
\begin{equation}
\mbox{\dot{\mathbf{C}}}=\dot{\mathbf{F}}^{T}\cdot\mathbf{F}+\mathbf{F}^{T}\cdot\dot{\mathbf{F}}=\mathbf{F}^{T}\cdot\left(\mathbf{L}^{T}+\mathbf{L}\right)\cdot\mathbf{F}\label{eq85g}
\end{equation}
\end_inset
or equivalently,
\begin_inset Formula
\begin{equation}
\dot{\mathbf{C}}=2\mathbf{F}^{T}\cdot\mathbf{D}\cdot\mathbf{F}\label{eq85h}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{D}$
\end_inset
is the rate of deformation tensor.
This result may now be used in the time differentiation of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq85d"
nolink "false"
\end_inset
,
\begin_inset Formula
\begin{equation}
\mathbf{n}_{r}\cdot\dot{\mathbf{C}}\cdot\mathbf{m}_{r}=\left(\dot{\lambda}_{m}\lambda_{n}+\lambda_{m}\dot{\lambda}_{n}\right)\sin\gamma+\lambda_{m}\lambda_{n}\dot{\gamma}\cos\gamma\label{eq85i}
\end{equation}
\end_inset
where the left-hand-side reduces to
\begin_inset Formula $\mathbf{n}_{r}\cdot\dot{\mathbf{C}}\cdot\mathbf{m}_{r}=2\left(\mathbf{F}\cdot\mathbf{m}_{r}\right)\cdot\mathbf{D}\cdot\left(\mathbf{F}\cdot\mathbf{n}_{r}\right)=2\lambda_{m}\lambda_{n}\mathbf{m}\cdot\mathbf{D}\cdot\mathbf{n}$
\end_inset
.
Substituting this result above produces
\begin_inset Formula
\begin{equation}
\mathbf{m}\cdot\mathbf{D}\cdot\mathbf{n}=\frac{1}{2}\left(\frac{\dot{\lambda}_{m}}{\lambda_{m}}+\frac{\dot{\lambda}_{n}}{\lambda_{n}}\right)\sin\gamma+\frac{\dot{\gamma}}{2}\cos\gamma\label{eq85j}
\end{equation}
\end_inset
We now consider two cases:
When
\begin_inset Formula $\mathbf{m}=\mathbf{n}$
\end_inset
,
it follows that
\begin_inset Formula $\gamma=\pi/2$
\end_inset
,
so that
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq85j"
nolink "false"
\end_inset
reduces to
\begin_inset Formula
\begin{equation}
D_{nn}\equiv\mathbf{n}\cdot\mathbf{D}\cdot\mathbf{n}=\frac{\dot{\lambda}_{n}}{\lambda_{n}}\,.\label{eq:D-normal}
\end{equation}
\end_inset
In other words,
the normal component of the rate of deformation tensor along
\begin_inset Formula $\mathbf{n}$
\end_inset
is the rate of stretch per stretch of a differential line element along
\begin_inset Formula $\mathbf{n}$
\end_inset
.
\end_layout
\begin_layout Standard
When
\begin_inset Formula $\mathbf{m}\cdot\mathbf{n}=0$
\end_inset
,
it follows that
\begin_inset Formula $\gamma=0$
\end_inset
,
so that
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq85j"
nolink "false"
\end_inset
reduces to
\begin_inset Formula
\begin{equation}
D_{mn}\equiv\mathbf{m}\cdot\mathbf{D}\cdot\mathbf{n}=\frac{\dot{\gamma}}{2}\,.\label{eq:D-shear}
\end{equation}
\end_inset
Thus,
the shear component of
\begin_inset Formula $\mathbf{D}$
\end_inset
in the plane containing
\begin_inset Formula $\mathbf{m}$
\end_inset
and
\begin_inset Formula $\mathbf{n}$
\end_inset
is equal to half the rate at which the angle between those line elements changes with the deformation.
The quantity
\begin_inset Formula $\dot{\gamma}$
\end_inset
is called the
\emph on
engineering shear rate
\emph default
,
or simply the
\emph on
shear rate
\emph default
.
\end_layout
\begin_layout Standard
Finally,
we note from eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:E-C-relation"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq85h"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
that the material time derivative of the Lagrangian strain is related to the rate of deformation via
\begin_inset Formula
\begin{equation}
\dot{\mathbf{E}}=\mathbf{F}^{T}\cdot\mathbf{D}\cdot\mathbf{F}\,.\label{eq:Edot-D-relation}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Volume Deformation
\begin_inset CommandInset label
LatexCommand label
name "sec:Volume-Deformation"
\end_inset
\end_layout
\begin_layout Standard
Let us show that the deformation of a volume of material
\begin_inset Formula $dV_{r}$
\end_inset
is given by
\begin_inset Formula
\begin{equation}
dV=J\,dV_{r},\quad J=\det\mathbf{F}=\left(\det\mathbf{C}\right)^{1/2}\label{eq87}
\end{equation}
\end_inset
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigReferentialVolume.png
lyxscale 25
scale 50
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Elemental volume.
\begin_inset CommandInset label
LatexCommand label
name "fig:Elemental-volume"
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Note that
\begin_inset Formula $\det\mathbf{C}=\det\left(\mathbf{F}^{T}\cdot\mathbf{F}\right)=\det\mathbf{F}^{T}\det\mathbf{F}=\left(\det\mathbf{F}\right)^{2}$
\end_inset
,
thus
\begin_inset Formula $\det\mathbf{F}=\left(\det\mathbf{C}\right)^{1/2}$
\end_inset
,
which proves the second equation above.
To prove the first equation,
let us define three non-collinear material elements in the undeformed reference state,
\begin_inset Formula $d\mathbf{X}_{1}$
\end_inset
,
\begin_inset Formula $d\mathbf{X}_{2}$
\end_inset
,
and
\begin_inset Formula $d\mathbf{X}_{3}$
\end_inset
.
The elemental volume defined by these three elements has the magnitude
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
dV_{r}=\left(d\mathbf{X}_{1}\times d\mathbf{X}_{2}\right)\cdot d\mathbf{X}_{3}\tag{a}
\]
\end_inset
in the reference state,
and the magnitude
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
dV=\left(d\mathbf{x}_{1}\times d\mathbf{x}_{2}\right)\cdot d\mathbf{x}_{3}=\left(\mathbf{F}\cdot d\mathbf{X}_{1}\times\mathbf{F}\cdot d\mathbf{X}_{2}\right)\cdot\mathbf{F}\cdot d\mathbf{X}_{3}\tag{b}
\]
\end_inset
in the deformed state.
Let the elements
\begin_inset Formula $d\mathbf{X}_{1}$
\end_inset
,
\begin_inset Formula $d\mathbf{X}_{2}$
\end_inset
,
and
\begin_inset Formula $d\mathbf{X}_{3}$
\end_inset
be aligned with the orthogonal coordinate axes such that
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
d\mathbf{X}_{1}=dS_{1}\mathbf{e}_{1}\quad d\mathbf{X}_{2}=dS_{2}\mathbf{e}_{2}\quad d\mathbf{X}_{3}=dS_{3}\mathbf{e}_{3}\tag{c}
\]
\end_inset
where
\begin_inset Formula $\mathbf{e}_{i}\cdot\mathbf{e}_{j}=\delta_{ij}$
\end_inset
,
then we find from (a) that
\begin_inset Formula $dV_{r}=dS_{1}dS_{2}dS_{3}$
\end_inset
.
From (b) we get that
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
dV=\left(\mathbf{F}\cdot\mathbf{e}_{1}\times\mathbf{F}\cdot\mathbf{e}_{2}\right)\cdot\mathbf{F}\cdot\mathbf{e}_{3}\,dS_{1}dS_{2}dS_{3}=\det\mathbf{F}\,dV_{r}\tag{d}
\]
\end_inset
according to the definition of the determinant given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsubsec:determinant"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
In a compressible material,
the density will change with changes in volume.
If an elemental volume of mass
\begin_inset Formula $dm$
\end_inset
occupies a volume
\begin_inset Formula $dV_{r}$
\end_inset
in some
\emph on
reference configuration
\emph default
,
then the density in the current configuration is given by
\begin_inset Formula
\begin{equation}
\rho=\frac{dm}{dV}=\frac{dm}{dV_{r}}\frac{dV_{r}}{dV}=\frac{\rho_{r}}{J}\label{eq88}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\rho_{r}$
\end_inset
represents the density of the material in the reference configuration,
which is a constant.
The result of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq88"
nolink "false"
\end_inset
is the solution to the axiom of mass balance.
To prove that point,
we use the kinematic identity
\begin_inset Formula
\begin{equation}
\frac{\partial J}{\partial\mathbf{F}}=J\mathbf{F}^{-T}\label{eq89-1}
\end{equation}
\end_inset
to express the material time derivative of
\begin_inset Formula $J$
\end_inset
as
\begin_inset Formula
\begin{equation}
\dot{J}=\frac{\partial J}{\partial\mathbf{F}}:\dot{\mathbf{F}}\label{eq90-1}
\end{equation}
\end_inset
Recalling that
\begin_inset Formula $\dot{\mathbf{F}}=\mathbf{L}\cdot\mathbf{F}$
\end_inset
,
it follows that
\begin_inset Formula
\begin{equation}
\dot{J}=J\mathbf{F}^{-T}:\mathbf{L}\cdot\mathbf{F}=J\mathbf{I}:\mathbf{L}=J\tr\mathbf{L}=J\divg\mathbf{v}\label{eq91-1}
\end{equation}
\end_inset
or
\begin_inset Formula
\begin{equation}
\divg\mathbf{v}=\frac{\dot{J}}{J}\label{eq92-1}
\end{equation}
\end_inset
Now,
the axiom of mass balance in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:mass-balance-redux"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
may be rewritten as
\begin_inset Formula
\begin{equation}
\frac{D\rho}{Dt}+\rho\divg\mathbf{v}=\dot{\rho}+\frac{\rho}{J}\dot{J}=0\label{eq93}
\end{equation}
\end_inset
Multiplying this equation across by
\begin_inset Formula $J$
\end_inset
,
we find that the resulting expression is equivalent to
\begin_inset Formula
\begin{equation}
\frac{D\left(\rho J\right)}{Dt}=0\label{eq93b}
\end{equation}
\end_inset
Integrating this expression produces
\begin_inset Formula $\rho J=\rho_{r}$
\end_inset
,
where
\begin_inset Formula $\rho_{r}$
\end_inset
is the value of
\begin_inset Formula $\rho$
\end_inset
when
\begin_inset Formula $J=1$
\end_inset
.
This result reproduces
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq88"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
Finally,
since we know that
\begin_inset Formula $\mathbf{F}=\mathbf{R}\cdot\mathbf{U}$
\end_inset
according to
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:polar-decomposition-RU"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
it follows that
\begin_inset Formula
\[
J=\det\mathbf{F}=\left(\det\mathbf{R}\right)\left(\det\mathbf{U}\right)=\det\mathbf{U}=\lambda_{1}\lambda_{2}\lambda_{3}\,,
\]
\end_inset
where
\begin_inset Formula $\lambda_{i}$
\end_inset
are the principal stretches of
\begin_inset Formula $\mathbf{U}$
\end_inset
.
\end_layout
\begin_layout Subsection
Area Deformation
\begin_inset CommandInset label
LatexCommand label
name "subsec:Area-Deformation"
\end_inset
\end_layout
\begin_layout Standard
In general,
we can express the position of a material point
\begin_inset Formula $\mathbf{X}$
\end_inset
as a function of parametric coordinates
\begin_inset Formula $\eta^{i}$
\end_inset
(i=1,2,3),
thus
\begin_inset Formula $\mathbf{X}=\mathbf{X}\left(\eta^{i}\right)$
\end_inset
.
Then,
a line element in the reference configuration is given by
\begin_inset Formula
\begin{equation}
d\mathbf{X}=\frac{\partial\mathbf{X}}{\partial\eta^{i}}d\eta^{i}\equiv\mathbf{G}_{i}d\eta^{i}\,,\label{eq:covariant-basis-material}
\end{equation}
\end_inset
where we use the implicit (Einstein) summation convention of indicial notation.
Here,
the vectors
\begin_inset Formula $\mathbf{G}_{i}$
\end_inset
are called the covariant basis vectors of
\begin_inset Formula $\mathbf{X}\left(\eta^{i}\right)$
\end_inset
,
in the material frame.
We may also express the motion in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:motion-chi"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
as a function of the same parametric coordinates,
such that the corresponding line element in the spatial frame is
\begin_inset Formula
\begin{equation}
d\mathbf{x}=\frac{\partial\boldsymbol{\chi}}{\partial\eta^{i}}d\eta^{i}\equiv\mathbf{g}_{i}d\eta^{i}\,,\label{eq:covariant-basis-spatial}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{g}_{i}$
\end_inset
's represent the covariant basis vector at
\begin_inset Formula $\mathbf{x}=\boldsymbol{\chi}\left(\mathbf{X},t\right)$
\end_inset
in the spatial frame.
Since
\begin_inset Formula $d\mathbf{x}$
\end_inset
is related to
\begin_inset Formula $d\mathbf{X}$
\end_inset
by the deformation gradient as per eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:motion-gradient"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
or
\begin_inset Formula $d\mathbf{x}=\mathbf{F}\cdot d\mathbf{X}$
\end_inset
,
it can be shown that the deformation gradient is given by
\begin_inset Formula
\begin{equation}
\mathbf{F}=\mathbf{g}_{i}\otimes\mathbf{G}^{i}\,,\label{eq:defgrad-cov-cont}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{G}^{i}$
\end_inset
's represent the contravariant basis vector of
\begin_inset Formula $\mathbf{X}\left(\eta^{i}\right)$
\end_inset
,
in the material frame.
Covariant and contravariant basis vectors satisfy
\begin_inset Formula $\mathbf{G}_{i}\cdot\mathbf{G}^{j}=\mathbf{G}^{i}\cdot\mathbf{G}_{j}=\delta_{j}^{i}$
\end_inset
,
where
\begin_inset Formula $\delta_{j}^{i}$
\end_inset
is the Kronecker delta.
The same is true in the spatial frame.
The expression for
\begin_inset Formula $\mathbf{F}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:defgrad-cov-cont"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
emphasizes that
\begin_inset Formula $\mathbf{F}$
\end_inset
is a
\emph on
two-point tensor
\emph default
:
It has one leg in the material frame (
\begin_inset Formula $\mathbf{G}^{i}$
\end_inset
) and the other in the spatial frame (
\begin_inset Formula $\mathbf{g}_{i}$
\end_inset
).
It follows from eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:defgrad-cov-cont"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
that covariant basis vectors in the material and spatial frames are related by
\begin_inset Formula
\begin{equation}
\mathbf{F}\cdot\mathbf{G}_{j}=\mathbf{g}_{j}\,.\label{eq:cov-basis-xformation}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
Now consider that an elemental volume
\begin_inset Formula $dV_{r}$
\end_inset
in the reference configuration can be evaluated from
\begin_inset Formula
\[
dV_{r}=\left(\mathbf{G}_{1}d\eta^{1}\times\mathbf{G}_{2}d\eta^{2}\right)\cdot\mathbf{G}_{3}d\eta^{3}\equiv d\mathbf{A}\cdot\mathbf{G}_{3}d\eta^{3}\,,
\]
\end_inset
where
\begin_inset Formula $d\mathbf{A}$
\end_inset
is the vectorial representation of the elemental directed area
\begin_inset Formula $\mathbf{G}_{1}d\eta^{1}\times\mathbf{G}_{2}d\eta^{2}$
\end_inset
.
Similarly,
the elemental volume
\begin_inset Formula $dV$
\end_inset
in the current configuration is given by
\begin_inset Formula
\[
dV=\left(\mathbf{g}_{1}d\eta^{1}\times\mathbf{g}_{2}d\eta^{2}\right)\cdot\mathbf{g}_{3}d\eta^{3}\equiv d\mathbf{a}\cdot\mathbf{g}_{3}d\eta^{3}\,.
\]
\end_inset
Using eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq87"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:cov-basis-xformation"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
we may rewrite this expression as
\begin_inset Formula
\[
dV=d\mathbf{a}\cdot\mathbf{F}\cdot\mathbf{G}_{3}d\eta^{3}=JdV_{r}=Jd\mathbf{A}\cdot\mathbf{G}_{3}d\eta^{3}\,.
\]
\end_inset
From this general expression,
we can find the relation between
\begin_inset Formula $d\mathbf{a}$
\end_inset
and
\begin_inset Formula $d\mathbf{A}$
\end_inset
,
\begin_inset Formula
\begin{equation}
d\mathbf{a}=J\mathbf{F}^{-T}\cdot d\mathbf{A}\,,\label{eq:Nanson-formula}
\end{equation}
\end_inset
which is known as Nanson's formula
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "false"
\end_inset
.
It relates the change in surface area,
and the reorientation of the surface normal,
between the referential area
\begin_inset Formula $d\mathbf{A}$
\end_inset
and its corresponding area
\begin_inset Formula $d\mathbf{a}$
\end_inset
in the current configuration.
\end_layout
\begin_layout Standard
Using the general expression for the deformation gradient in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:defgrad-cov-cont"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
it follows that the right Cauchy-Green tensor is given by
\begin_inset Formula
\[
\mathbf{C}=\mathbf{F}^{T}\cdot\mathbf{F}=g_{ij}\mathbf{G}^{i}\otimes\mathbf{G}^{j}
\]
\end_inset
where
\begin_inset Formula $g_{ij}=\mathbf{g}_{i}\cdot\mathbf{g}_{j}$
\end_inset
is called the covariant metric tensor in the spatial frame.
\end_layout
\begin_layout Section
Hyperelasticity
\begin_inset CommandInset label
LatexCommand label
name "sec:Hyperelasticity"
\end_inset
\end_layout
\begin_layout Subsection
Constitutive Restrictions
\begin_inset CommandInset label
LatexCommand label
name "subsec:Constitutive-Restrictions"
\end_inset
\end_layout
\begin_layout Standard
Now,
we need to make constitutive assumptions on the dependent variables which appears in Clausius-Duhem inequality,
eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Clausius-Duhem-inequality"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
namely,
\begin_inset Formula $\psi$
\end_inset
,
\begin_inset Formula $\eta$
\end_inset
,
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
and
\begin_inset Formula $\mathbf{q}$
\end_inset
.
These functions could depend on a number of
\emph on
state variables
\emph default
,
such as strain,
rate of deformation,
temperature,
temperature gradient,
etc.
For example,
the pressure in a gas is generally assumed to depend on temperature and density,
so it would follow that
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
for a gas should exhibit the same dependencies.
\end_layout
\begin_layout Standard
For solid materials we have found that that the mass density is dependent on the strain (eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq88"
nolink "false"
\end_inset
,
\begin_inset Formula $\rho=\rho_{r}\left(\det\mathbf{C}\right)^{-1/2}=\rho_{r}/J$
\end_inset
,
where
\begin_inset Formula $\rho_{r}$
\end_inset
is a constant);
so long as a dependence on the strain is provided,
an explicit dependency on mass density is not required.
\end_layout
\begin_layout Standard
For the purpose of modeling elastic solids under isothermal conditions,
we would like to restrict our constitutive models to be independent of the temperature or its gradient.
For an elastic solid,
the rate of load application does not have an effect;
therefore,
there should be no dependency on the rate of deformation
\begin_inset Formula $\mathbf{D}$
\end_inset
.
Furthermore,
for an elastic solid,
upon removal of the loading,
deformations should disappear completely.
This implies that there should be no dependence on the history (or path) of loading,
only on the current state of loading.
\end_layout
\begin_layout Standard
Given these restrictions,
we assume that the non-observable functions of state
\begin_inset Formula $\psi$
\end_inset
,
\begin_inset Formula $\eta$
\end_inset
,
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
and
\begin_inset Formula $\mathbf{q}$
\end_inset
depend only on the observable solid matrix strain,
such as
\begin_inset Formula $\mathbf{E}$
\end_inset
.
Based on the principle of equipresence,
all functions of state depend only on
\begin_inset Formula $\mathbf{E}$
\end_inset
.
In particular,
since
\begin_inset Formula $\psi$
\end_inset
is the only function of state which is differentiated with respect to time in the Clausius-Duhem inequality,
eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Clausius-Duhem-inequality"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
we express it explicitly as
\begin_inset Formula
\begin{equation}
\psi=\psi\left(\mathbf{E}\right)\,.\label{eq95-1}
\end{equation}
\end_inset
Given this dependence,
we can use the chain rule of differentiation to get
\begin_inset Formula
\begin{equation}
\dot{\psi}=\frac{d\psi}{d\mathbf{E}}:\dot{\mathbf{E}}=\frac{d\psi}{d\mathbf{E}}:\mathbf{F}^{T}\cdot\mathbf{D}\cdot\mathbf{F}\label{eq96-1}
\end{equation}
\end_inset
where we have made use of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Edot-D-relation"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
Making use of the identity
\begin_inset Formula
\begin{equation}
\frac{d\psi}{d\mathbf{E}}:\mathbf{F}^{T}\cdot\mathbf{D}\cdot\mathbf{F}=\mathbf{F}\cdot\frac{d\psi}{d\mathbf{E}}\cdot\mathbf{F}^{T}:\mathbf{D}\label{eq100-1}
\end{equation}
\end_inset
we find that the entropy inequality reduces to
\begin_inset Formula
\begin{equation}
-\rho\eta\dot{\theta}-\frac{1}{\theta}\mathbf{q}\cdot\grad\theta+\left(\boldsymbol{\sigma}-\rho\mathbf{F}\cdot\frac{d\psi}{d\mathbf{E}}\cdot\mathbf{F}^{T}\right):\mathbf{D}\geqslant0\label{eq101-1}
\end{equation}
\end_inset
This inequality must hold for arbitrary processes,
i.e.,
for arbitrary changes in
\begin_inset Formula $\mathbf{D}$
\end_inset
,
\begin_inset Formula $\dot{\theta}$
\end_inset
and
\begin_inset Formula $\grad\theta$
\end_inset
(all of which are independent,
observable variables of state),
under our self-imposed constraint that
\begin_inset Formula $\psi$
\end_inset
,
\begin_inset Formula $\eta$
\end_inset
,
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
and
\begin_inset Formula $\mathbf{q}$
\end_inset
only depend on the state variable
\begin_inset Formula $\mathbf{E}$
\end_inset
.
For example,
since the temperature
\begin_inset Formula $\theta$
\end_inset
in the leftmost term of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq101-1"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
may either increase or decrease at various times in any process,
the sign of
\begin_inset Formula $\dot{\theta}$
\end_inset
may be variably positive or negative.
However,
the sign of the product
\begin_inset Formula $-\rho\eta\dot{\theta}$
\end_inset
may not be set strictly positive since
\begin_inset Formula $\rho\eta$
\end_inset
does not depend on
\begin_inset Formula $\dot{\theta}$
\end_inset
.
The same argument applies to the remaining terms in the entropy inequality,
each of which may vary independently of other terms.
Therefore,
the only way that the entropy inequality may be satisfied for arbitrary processes,
given our choice of state variables,
is to have each term be independently equal to zero.
Thus,
the entropy inequality requires that
\begin_inset Formula
\begin{equation}
\eta=0\label{eq102-1}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\rho\mathbf{F}\cdot\frac{d\psi}{d\mathbf{E}}\cdot\mathbf{F}^{T}\label{eq103-1}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{q}=\mathbf{0}\label{eq105-1}
\end{equation}
\end_inset
Equation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq102-1"
nolink "false"
\end_inset
shows that the entropy must be zero for our choice of state variable,
whereas Eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq103-1"
nolink "false"
\end_inset
is the fundamental constraint we seek for formulating constitutive relations in elasticity problems.
The constraint of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq105-1"
nolink "false"
\end_inset
implies that isothermal processes must be adiabatic,
as there cannot be heat flow in such problems.
\end_layout
\begin_layout Standard
Let the Helmholtz free energy per unit
\shape italic
reference
\shape default
volume (
\shape italic
energy density
\shape default
) be denoted by
\begin_inset Formula
\begin{equation}
\Psi_{r}\left(\mathbf{E}\right)\equiv\rho_{r}\psi\left(\mathbf{E}\right)\label{eq106-1}
\end{equation}
\end_inset
Then,
using eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq88"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
and recalling that
\begin_inset Formula $\rho_{r}$
\end_inset
is constant,
eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq103-1"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
reduces to
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=J^{-1}\mathbf{F}\cdot\frac{d\Psi_{r}}{d\mathbf{E}}\cdot\mathbf{F}^{T}\,.\label{eq:hyperelastic-stress-E}
\end{equation}
\end_inset
This formula represents the constraint imposed by the second law of thermodynamics on the formulation of a constitutive relation for an elastic solid.
For historical reasons,
this formula is described as the
\emph on
hyperelasticity
\emph default
constraint.
The method described for obtaining this formula was first proposed by Coleman and Noll in 1963
\begin_inset CommandInset citation
LatexCommand citep
key "Coleman63"
literal "false"
\end_inset
.
Prior to that formulation,
other constitutive relations had been proposed for elastic solids (such as hypoelasticity),
though it is now believed that the only thermodynamically valid formulation is the one given here.
\end_layout
\begin_layout Standard
In hyperelasticity theory,
since the free energy density
\begin_inset Formula $\Psi_{r}$
\end_inset
only depends on the strain,
we may also call it the
\emph on
strain energy density
\emph default
.
A common alternative symbol for the strain energy density is
\begin_inset Formula $W\left(\mathbf{E}\right)$
\end_inset
.
Since it is common to include multiple state variables in a general formulation of
\begin_inset Formula $\Psi_{r}$
\end_inset
for a material,
the derivative
\begin_inset Formula $d\Psi_{r}/d\mathbf{E}$
\end_inset
appearing in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq103-1"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
is often written as a partial derivative,
\begin_inset Formula $\partial\Psi_{r}/\partial\mathbf{E}$
\end_inset
.
It is also common to use
\begin_inset Formula $\mathbf{C}$
\end_inset
instead of
\begin_inset Formula $\mathbf{E}$
\end_inset
as a suitable alternative measure of strain under finite deformation and rotation.
In that case,
based on eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:E-C-relation"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
the expression of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq103-1"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
takes the form
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=2J^{-1}\mathbf{F}\cdot\frac{\partial\Psi_{r}}{\partial\mathbf{C}}\cdot\mathbf{F}^{T}\,.\label{eq:hyperelastic-stress-C}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Other Stress Tensors
\begin_inset CommandInset label
LatexCommand label
name "subsec:Other-Stress-Tensors"
\end_inset
\end_layout
\begin_layout Standard
The reaction force
\begin_inset Formula $\mathbf{f}$
\end_inset
exerted on a surface
\begin_inset Formula $S$
\end_inset
whose outward normal is
\begin_inset Formula $\mathbf{n}$
\end_inset
is given by
\begin_inset Formula
\[
\mathbf{f}=\int_{S}\mathbf{t}\,da=\int_{S}\boldsymbol{\sigma}\cdot\mathbf{n}\,da
\]
\end_inset
where
\begin_inset Formula $da$
\end_inset
is an elemental area of
\begin_inset Formula $S$
\end_inset
in the current configuration.
Here,
we used the relation between the traction vector
\begin_inset Formula $\mathbf{t}$
\end_inset
and the Cauchy stress
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
,
given in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:traction-stress-relation"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
Note that the directed area
\begin_inset Formula $d\mathbf{a}=\mathbf{n}\,da$
\end_inset
in this integral may be related to
\begin_inset Formula $d\mathbf{A}$
\end_inset
in the reference configuration,
using Nanson's formula in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Nanson-formula"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
to produce
\begin_inset Formula
\[
\mathbf{f}=\int_{S_{r}}\boldsymbol{\sigma}\cdot J\mathbf{F}^{-T}\cdot d\mathbf{A}=\int_{S_{r}}J\boldsymbol{\sigma}\cdot\mathbf{F}^{-T}\cdot\mathbf{n}_{r}\,dA\,.
\]
\end_inset
Here,
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
is the unit outward normal on
\begin_inset Formula $S_{r}$
\end_inset
in the reference configuration.
Equating these two forms of
\begin_inset Formula $\mathbf{f}$
\end_inset
and using the divergence theorem produces
\begin_inset Formula
\[
\mathbf{f}=\int_{V}\divg\boldsymbol{\sigma}\,dV=\int_{V_{r}}\Divg\left(J\boldsymbol{\sigma}\cdot\mathbf{F}^{-T}\right)dV_{r}\,,
\]
\end_inset
where the divergence operator in the material frame is denoted by
\begin_inset Formula $\Divg\left(\cdot\right)$
\end_inset
.
The expression in the argument of this divergence operator is known as the
\emph on
first Piola-Kirchhoff stress tensor,
\emph default
\begin_inset Formula
\begin{equation}
\mathbf{P}=J\boldsymbol{\sigma}\cdot\mathbf{F}^{-T}\,.\label{eq50}
\end{equation}
\end_inset
Note that
\series bold
\begin_inset Formula $\mathbf{P}$
\end_inset
\series default
,
like
\series bold
\begin_inset Formula $\mathbf{F}$
\end_inset
\series default
,
is not symmetric.
Also,
like
\series bold
\begin_inset Formula $\mathbf{F}$
\end_inset
\series default
,
\series bold
\begin_inset Formula $\mathbf{P}$
\end_inset
\series default
is known as a
\emph on
two-point
\emph default
tensor,
meaning it is neither a material nor a spatial tensor.
This is demonstrated more easily by expressing
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
in terms of its contravariant components
\begin_inset Formula $\sigma^{ij}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\sigma^{ij}\mathbf{g}_{i}\otimes\mathbf{g}_{j}\label{eq:Cauchy-cov-cont}
\end{equation}
\end_inset
and noting that
\begin_inset Formula
\begin{equation}
\mathbf{F}^{-1}=\mathbf{G}_{i}\otimes\mathbf{g}^{i}\label{eq:Finv-cov-cont}
\end{equation}
\end_inset
so that the component form of
\begin_inset Formula $\mathbf{P}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq50"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
reduces to
\begin_inset Formula
\[
\mathbf{P}=J\sigma^{ij}\left(\mathbf{g}_{i}\otimes\mathbf{g}_{j}\right)\cdot\left(\mathbf{g}^{k}\otimes\mathbf{G}_{k}\right)=J\sigma^{ij}\mathbf{g}_{i}\otimes\mathbf{G}_{j}\,,
\]
\end_inset
confirming that it is a two-point tensor.
\end_layout
\begin_layout Standard
Two other stress measures are often used in continuum mechanics.
Examining eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:hyperelastic-stress-E"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
or eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:hyperelastic-stress-C"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
we may define the
\emph on
second Piola-Kirchhoff (PK2) stress tensor
\emph default
as
\begin_inset Formula
\begin{equation}
\mathbf{S}=J\mathbf{F}^{-1}\cdot\boldsymbol{\sigma}\cdot\mathbf{F}^{-T}\,,\label{eq51}
\end{equation}
\end_inset
where,
for a hyperelastic material,
\begin_inset Formula
\begin{equation}
\mathbf{S}=\frac{\partial\Psi_{r}}{\partial\mathbf{E}}=2\frac{\partial\Psi_{r}}{\partial\mathbf{C}}\,.\label{eq:PK2-hyperelasticity}
\end{equation}
\end_inset
Substituting the component form of
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Cauchy-cov-cont"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
into eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq51"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
and using
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Finv-cov-cont"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
we find that
\begin_inset Formula
\begin{equation}
\mathbf{S}=J\sigma^{ij}\mathbf{G}_{i}\otimes\mathbf{G}_{j}\,,\label{eq:PK2-cov-cont}
\end{equation}
\end_inset
showing that
\begin_inset Formula $\mathbf{S}$
\end_inset
is a material tensor.
This component form suggests that may also define the
\emph on
Kirchhoff stress tensor
\emph default
as the spatial version of
\begin_inset Formula $\mathbf{S}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\boldsymbol{\tau}=J\boldsymbol{\sigma}=J\sigma^{ij}\mathbf{g}_{i}\otimes\mathbf{g}_{j}\,.\label{eq49}
\end{equation}
\end_inset
Since
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
is symmetric,
it follows that
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
is symmetric.
\end_layout
\begin_layout Standard
The inverse relations for these various stresses are are
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathbf{\sigma}}=\frac{1}{J}\boldsymbol{\tau}\,,\quad\boldsymbol{\sigma}=\frac{1}{J}\mathbf{P}\cdot\mathbf{F}^{T}\,,\quad\boldsymbol{\sigma}=\frac{1}{J}\mathbf{F}\cdot\mathbf{S}\cdot\mathbf{F}^{T}\,.\label{eq52}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Directional Derivative of the Stress
\begin_inset CommandInset label
LatexCommand label
name "subsec:Stress-Directional-Derivative"
\end_inset
\end_layout
\begin_layout Standard
The directional derivative of the 2
\begin_inset Formula $^{\mathrm{nd}}$
\end_inset
PK stress tensor needs to be calculated for the linearization of the finite element equations.
For a hyperelastic material,
as expressed in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:PK2-hyperelasticity"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
a linear relationship between the directional derivative of
\begin_inset Formula $\mathbf{S}$
\end_inset
and the linearized strain
\begin_inset Formula $D\mathbf{E}\left[\mathbf{u}\right]$
\end_inset
can be obtained:
\begin_inset Formula
\begin{equation}
D\mathbf{S}\left[\mathbf{u}\right]=\boldsymbol{\mathbb{C}}:D\mathbf{E}\left[\mathbf{u}\right]\,.\label{eq54}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\boldsymbol{\mathbb{C}}$
\end_inset
is a fourth-order tensor known as the
\emph on
material elasticity tensor
\emph default
.
Its Cartesian components and tensorial definition are given by
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbb{C}_{IJKL} & =\frac{\partial S_{IJ}}{\partial E_{KL}}=\frac{4\partial^{2}\Psi_{r}}{\partial C_{IJ}\partial C_{KL}}\\
\boldsymbol{\mathbb{C}} & =\frac{\partial\mathbf{S}}{\partial\mathbf{E}}=\frac{4\partial^{2}\Psi_{r}}{\partial\mathbf{C}\partial\mathbf{C}}
\end{aligned}
\,.\label{eq55}
\end{equation}
\end_inset
The spatial equivalent – the
\emph on
spatial elasticity tensor
\emph default
\begin_inset Formula $\boldsymbol{\mathcal{C}}$
\end_inset
– can be obtained from
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathcal{C}_{ijkl} & =\frac{1}{J}F_{iI}F_{jJ}F_{kK}F_{lL}\mathbb{C}_{IJKL}\\
\boldsymbol{\mathcal{C}} & =\frac{1}{J}\left(\mathbf{F}\oslash\mathbf{F}\right):\boldsymbol{\mathbb{C}}:\left(\mathbf{F}^{T}\oslash\mathbf{F}^{T}\right)
\end{aligned}
.\label{eq56}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Isotropic Hyperelasticity
\begin_inset CommandInset label
LatexCommand label
name "subsec:isotropic-hyperelasticity"
\end_inset
\end_layout
\begin_layout Standard
The hyperelastic constitutive equations discussed so far are unrestricted in their application.
Isotropic material symmetry is defined by requiring the constitutive behavior to be independent of any material axes.
Consequently,
\begin_inset Formula $\Psi_{r}$
\end_inset
must only be a function of the invariants of
\series bold
\begin_inset Formula $\mathbf{C}$
\end_inset
\series default
(or
\begin_inset Formula $\mathbf{E}$
\end_inset
),
\begin_inset Formula
\begin{equation}
\Psi_{r}=\Psi_{r}\left(I_{1},I_{2},I_{3}\right)\,,\label{eq:isotropic-SED}
\end{equation}
\end_inset
where the invariants of
\begin_inset Formula $\mathbf{C}$
\end_inset
\series bold
\series default
are defined here as,
\begin_inset Formula
\begin{equation}
I_{1}=\tr\mathbf{C}=\mathbf{I}:\mathbf{C},\,I_{2}=\frac{1}{2}\left[\left(\tr\mathbf{C}\right)^{2}-\tr\mathbf{C}^{2}\right],\,I_{3}=\det\mathbf{C}=J^{2}\,.\label{eq:C-invariants}
\end{equation}
\end_inset
As a result of the isotropic restriction,
the second Piola-Kirchhoff stress tensor can be written as,
\begin_inset Formula
\begin{equation}
\mathbf{S}=2\frac{\partial\Psi}{\partial\mathbf{C}}=2\frac{\partial\Psi}{\partial I_{1}}\frac{\partial I_{1}}{\partial\mathbf{C}}+2\frac{\partial\Psi}{\partial I_{2}}\frac{\partial I_{2}}{\partial\mathbf{C}}+2\frac{\partial\Psi}{\partial I_{3}}\frac{\partial I_{3}}{\partial\mathbf{C}}\,.\label{eq:PK2-isotropic}
\end{equation}
\end_inset
The second order tensors formed by the derivatives of the invariants with respect to
\begin_inset Formula $\mathbf{C}$
\end_inset
can be evaluated as
\begin_inset Formula
\begin{equation}
\frac{\partial I_{1}}{\partial\mathbf{C}}=\mathbf{I}\,,\,\frac{\partial I_{2}}{\partial\mathbf{C}}=I_{1}\mathbf{I}-\mathbf{C}\,,\,\frac{\partial I_{3}}{\partial\mathbf{C}}=I_{3}\mathbf{C}^{-1}\,.\label{eq:C-invariant-deriv}
\end{equation}
\end_inset
Introducing expressions
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:C-invariant-deriv"
nolink "false"
\end_inset
into equation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:PK2-isotropic"
nolink "false"
\end_inset
enables the second Piola-Kirchhoff stress to be evaluated as,
\begin_inset Formula
\begin{equation}
\mathbf{S}=2\left(\Psi_{1}+I_{1}\Psi_{2}+I_{2}\Psi_{3})\right)\mathbf{I}-2\left(\Psi_{2}+I_{1}\Psi_{3}\right)\mathbf{C}+\Psi_{3}\mathbf{C}^{2}\,,\label{eq:PK2-isotropic-final}
\end{equation}
\end_inset
where
\begin_inset Formula $\Psi_{1}=\partial\Psi/\partial I_{1}$
\end_inset
,
\begin_inset Formula $\Psi_{2}=\partial\Psi/\partial I_{2}$
\end_inset
,
and
\begin_inset Formula $\Psi_{3}=\partial\Psi/\partial I_{3}$
\end_inset
.
\end_layout
\begin_layout Standard
The Cauchy stresses can now be obtained from the second Piola-Kirchhoff stresses by using
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq52"
nolink "false"
\end_inset
:
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=J^{-1}\left(2\left(\Psi_{1}+I_{1}\Psi_{2}+I_{2}\Psi_{3})\right)\mathbf{b}-2\left(\Psi_{2}+I_{1}\Psi_{3}\right)\mathbf{b}^{2}+\Psi_{3}\mathbf{b}^{3}\right)\,,\label{eq:Cauchy-isotropic}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{b}=\mathbf{F}\cdot\mathbf{F}^{T}\,.\label{eq:left-Cauchy-Green}
\end{equation}
\end_inset
is the
\emph on
left Cauchy-Green tensor
\emph default
.
Note that in this equation
\begin_inset Formula $\Psi_{1}$
\end_inset
,
\begin_inset Formula $\Psi_{2}$
\end_inset
,
and
\begin_inset Formula $\Psi_{3}$
\end_inset
still involve derivatives with respect to the invariants of
\series bold
\begin_inset Formula $\mathbf{C}$
\end_inset
\series default
.
However,
since the invariants of
\series bold
\begin_inset Formula $\mathbf{b}$
\end_inset
\series default
are identical to those of
\series bold
\begin_inset Formula $\mathbf{C}$
\end_inset
\series default
,
the quantities
\begin_inset Formula $\Psi_{1}$
\end_inset
,
\begin_inset Formula $\Psi_{2}$
\end_inset
and
\begin_inset Formula $\Psi_{3}$
\end_inset
may also be considered to be the derivatives with respect to the invariants of
\series bold
\begin_inset Formula $\mathbf{b}$
\end_inset
\series default
.
\end_layout
\begin_layout Subsection
Isotropic Elasticity in Principal Directions
\begin_inset CommandInset label
LatexCommand label
name "subsec:Isotropic-Elasticity-Principal"
\end_inset
\end_layout
\begin_layout Standard
For isotropic materials,
the principal directions of the strain and stress tensors are the same.
Let the eigenvalues of
\begin_inset Formula $\mathbf{C}$
\end_inset
be denoted by
\begin_inset Formula $\lambda_{i}^{2}$
\end_inset
(
\begin_inset Formula $i=1,2,3)$
\end_inset
,
then the strain energy density may be given as a function of these eigenvalues,
\begin_inset Formula $\Psi\left(\lambda_{1}^{2},\lambda_{2}^{2},\lambda_{3}^{2}\right)$
\end_inset
.
To derive the expression for the stress,
recognize that
\begin_inset Formula
\begin{equation}
\frac{\partial\lambda_{i}^{2}}{\partial\mathbf{C}}=\mathbf{N}_{i}\otimes\mathbf{N}_{i}\equiv\mathbf{A}_{i}\,,\label{eq68}
\end{equation}
\end_inset
where the
\begin_inset Formula $\mathbf{N}_{i}$
\end_inset
are the eigenvectors of
\begin_inset Formula $\mathbf{C}$
\end_inset
.
It follows that the second Piola-Kirchhoff stress may be represented as
\begin_inset Formula
\begin{equation}
\mathbf{S}=\sum\limits_{i=1}^{3}S_{i}\mathbf{A}_{i}\,,\label{eq69}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
S_{i}=2\frac{\partial\Psi}{\partial\lambda_{i}^{2}}\,.\label{eq70}
\end{equation}
\end_inset
To evaluate the material elasticity tensor,
recognize that
\begin_inset Formula
\begin{equation}
\frac{\partial\mathbf{A}_{i}}{\partial\mathbf{C}}=\frac{1}{\lambda_{i}^{2}-\lambda_{j}^{2}}\left(\mathbf{A}_{i}\odot\mathbf{A}_{j}+\mathbf{A}_{j}\odot\mathbf{A}_{i}\right)+\frac{1}{\lambda_{i}^{2}-\lambda_{k}^{2}}\left(\mathbf{A}_{i}\odot\mathbf{A}_{k}+\mathbf{A}_{k}\odot\mathbf{A}_{i}\right)\,,\label{eq71}
\end{equation}
\end_inset
where
\begin_inset Formula $i,j,k$
\end_inset
form a permutation over
\begin_inset Formula $1,2,3$
\end_inset
.
Then it can be shown that the material elasticity tensor is given by
\begin_inset Formula
\begin{equation}
\begin{aligned}\boldsymbol{\mathbb{C}} & =\sum\limits_{i=1}^{3}4\frac{\partial^{2}\Psi}{\partial\lambda_{i}^{2}\partial\lambda_{i}^{2}}\mathbf{A}_{i}\otimes\mathbf{A}_{i}\\
& +\sum\limits_{i=1}^{3}\sum\limits_{j=i+1}^{3}4\frac{\partial^{2}\Psi}{\partial\lambda_{i}^{2}\partial\lambda_{j}^{2}}\left(\mathbf{A}_{i}\otimes\mathbf{A}_{j}+\mathbf{A}_{j}\otimes\mathbf{A}_{i}\right)\\
& +\sum\limits_{i=1}^{3}\sum\limits_{j=i+1}^{3}2\frac{S_{i}-S_{j}}{\lambda_{i}^{2}-\lambda_{j}^{2}}\left(\mathbf{A}_{i}\odot\mathbf{A}_{j}+\mathbf{A}_{j}\odot\mathbf{A}_{i}\right)
\end{aligned}
\,.\label{eq72}
\end{equation}
\end_inset
When eigenvalues coincide,
L'Hospital's rule may be used to evaluate the coefficient in the last term,
\begin_inset Formula
\begin{equation}
\lim\limits_{\lambda_{j}^{2}\to\lambda_{i}^{2}}2\frac{S_{i}-S_{j}}{\lambda_{i}^{2}-\lambda_{j}^{2}}=4\left(\frac{\partial^{2}\Psi}{\partial\lambda_{j}^{2}\partial\lambda_{j}^{2}}-\frac{\partial^{2}\Psi}{\partial\lambda_{i}^{2}\partial\lambda_{j}^{2}}\right)\,.\label{eq73}
\end{equation}
\end_inset
The double summations in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq72"
nolink "false"
\end_inset
are arranged such that the summands represent fourth-order tensors with major and minor symmetries.
\end_layout
\begin_layout Standard
In the spatial frame,
the Cauchy stress is given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\sum\limits_{i=1}^{3}\sigma_{i}\mathbf{a}_{i}\,,\label{eq:IEPD-stress}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{a}_{i}=\mathbf{n}_{i}\otimes\mathbf{n}_{i}\,,\label{eq:IEPD-tensor-basis}
\end{equation}
\end_inset
and
\begin_inset Formula $\mathbf{n}_{i}=\left(\mathbf{F}\cdot\mathbf{N}_{i}\right)/\lambda_{i}$
\end_inset
are the eigenvectors of
\begin_inset Formula $\mathbf{b}$
\end_inset
.
The principal normal stresses are
\begin_inset Formula
\begin{equation}
\sigma_{i}=\frac{\lambda_{i}}{J}\frac{\partial\Psi}{\partial\lambda_{i}}\,.\label{eq:IEPD-principal-stress}
\end{equation}
\end_inset
The spatial elasticity tensor is given by
\begin_inset Formula
\begin{equation}
\begin{aligned}\boldsymbol{\mathcal{C}} & =\sum\limits_{i=1}^{3}\left(J^{-1}\lambda_{i}^{2}\frac{\partial^{2}\Psi}{\partial\lambda_{i}^{2}}-\sigma_{i}\right)\mathbf{a}_{i}\otimes\mathbf{a}_{i}\\
& +\sum\limits_{i=1}^{3}\sum\limits_{j=i+1}^{3}J^{-1}\lambda_{i}\lambda_{j}\frac{\partial^{2}\Psi}{\partial\lambda_{i}\partial\lambda_{j}}\left(\mathbf{a}_{i}\otimes\mathbf{a}_{j}+\mathbf{a}_{j}\otimes\mathbf{a}_{i}\right)\\
& +\sum\limits_{i=1}^{3}\sum\limits_{j=i+1}^{3}2\frac{\lambda_{j}^{2}\sigma_{i}-\lambda_{i}^{2}\sigma_{j}}{\lambda_{i}^{2}-\lambda_{j}^{2}}\left(\mathbf{a}_{i}\odot\mathbf{a}_{j}+\mathbf{a}_{j}\odot\mathbf{a}_{i}\right)
\end{aligned}
\,.\label{eq:IEPD-elasticity}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Transversely Isotropic Hyperelasticity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Transversely-Isotropic-Hyperelas"
\end_inset
\end_layout
\begin_layout Standard
Transverse isotropy can be introduced by adding a vector field representing the material preferred direction explicitly into the strain energy
\begin_inset CommandInset citation
LatexCommand citep
key "Weiss96"
literal "true"
\end_inset
.
We require that the strain energy depends on a unit vector field
\begin_inset Formula $\mathbf{A}$
\end_inset
,
which describes the local fiber direction in the undeformed configuration.
When the material undergoes deformation,
the vector
\begin_inset Formula $\mathbf{A}\left(\mathbf{X}\right)$
\end_inset
may be described by a unit vector field
\begin_inset Formula $\mathbf{a}\left(\boldsymbol{\varphi}\left(\mathbf{X}\right)\right)$
\end_inset
.
In general,
the fibers will also undergo length change.
The fiber stretch,
\begin_inset Formula $\lambda$
\end_inset
,
can be determined in terms of the deformation gradient and the fiber direction in the undeformed configuration,
\begin_inset Formula
\begin{equation}
\lambda\mathbf{a}=\mathbf{F}\cdot\mathbf{A}\,.\label{eq95}
\end{equation}
\end_inset
Also,
since
\begin_inset Formula $\mathbf{a}$
\end_inset
is a unit vector,
\begin_inset Formula
\begin{equation}
\lambda^{2}=\mathbf{A}\cdot\mathbf{C}\cdot\mathbf{A}\,.\label{eq96}
\end{equation}
\end_inset
The strain energy function for a transversely isotropic material,
\begin_inset Formula $\Psi\left(\mathbf{C},\mathbf{A},\mathbf{X}\right)$
\end_inset
is an isotropic function of
\begin_inset Formula $\mathbf{C}$
\end_inset
and
\begin_inset Formula $\mathbf{A}\otimes\mathbf{A}$
\end_inset
.
It can be shown
\begin_inset CommandInset citation
LatexCommand citep
key "Spencer84"
literal "true"
\end_inset
that the following set of invariants are sufficient to describe the material fully:
\begin_inset Formula
\begin{equation}
I_{1}=\tr\mathbf{C}\,,\quad I_{2}=\frac{1}{2}\left[\left(\tr\mathbf{C}\right)^{2}-\tr\mathbf{C}^{2}\right]\,,\quad I_{3}=\det C=J^{2}\,,\label{eq97}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
I_{4}=\mathbf{A}\cdot\mathbf{C}\cdot\mathbf{A}\,,\quad I_{5}=\mathbf{A}\cdot\mathbf{C}^{2}\cdot\mathbf{A}\,.\label{eq98}
\end{equation}
\end_inset
The strain energy function can be written in terms of these invariants such that
\begin_inset Formula
\begin{equation}
\Psi\left(\mathbf{C},\mathbf{A},\mathbf{X}\right)=\Psi\left(I_{1}\left(\mathbf{C}\right),I_{2}\left(\mathbf{C}\right),I_{3}\left(\mathbf{C}\right),I_{4}\left(\mathbf{C},\mathbf{A}\right),I_{5}\left(\mathbf{C},\mathbf{A}\right)\right)\,.\label{eq99}
\end{equation}
\end_inset
The second Piola-Kirchhoff can now be obtained in the standard manner:
\begin_inset Formula
\begin{equation}
\mathbf{S}=2\frac{\partial\Psi}{\partial\mathbf{C}}=2\sum\limits_{i=1}^{5}\frac{\partial\Psi}{\partial I_{i}}\frac{\partial I_{i}}{\partial\mathbf{C}}\,.\label{eq100}
\end{equation}
\end_inset
In the transversely isotropic constitutive models described in Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Constitutive-Models"
nolink "false"
\end_inset
it is further assumed that the strain energy function can be split into the following terms:
\begin_inset Formula
\begin{equation}
\Psi\left(\mathbf{C},\mathbf{A}\right)=\Psi_{1}\left(I_{1},I_{2},I_{3}\right)+\Psi_{2}\left(I_{4}\right)+\Psi_{3}\left(I_{1},I_{2},I_{3}I_{4}\right)\,.\label{eq101}
\end{equation}
\end_inset
The strain energy function
\begin_inset Formula $\Psi_{1}$
\end_inset
represents the material response of the isotropic ground substance matrix,
\begin_inset Formula $\Psi_{2}$
\end_inset
represents the contribution from the fiber family (e.g.
collagen),
and
\begin_inset Formula $\Psi_{3}$
\end_inset
is the contribution from interactions between the fibers and matrix.
The form
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq101"
nolink "false"
\end_inset
generalizes many constitutive equations that have been successfully used in the past to describe biological soft tissues e.g.
\begin_inset CommandInset citation
LatexCommand citep
key "Horowitz88,Humphrey90,Humphrey87"
literal "true"
\end_inset
.
While this relation represents a large simplification when compared to the general case,
it also embodies almost all of the material behavior that one would expect from transversely isotropic,
large deformation matrix-fiber composites.
\end_layout
\begin_layout Subsection
Incompressibility
\begin_inset CommandInset label
LatexCommand label
name "subsec:Incompressibility"
\end_inset
\end_layout
\begin_layout Standard
A material is incompressible when its mass density remains constant,
\begin_inset Formula $\rho=\rho_{r}$
\end_inset
,
or equivalently according to eq.
\begin_inset CommandInset ref
LatexCommand ref
reference "eq87"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
its relative volume satisfies
\begin_inset Formula
\begin{equation}
J=1\label{eq:incompressibility-constraint}
\end{equation}
\end_inset
everywhere throughout the material.
No real material is truly incompressible,
since true incompressibility implies that the speed of sound in that medium is infinite,
which is not physically possible.
Thus,
one should view this assumption as an idealization of the behavior of real materials.
We may replace eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:incompressibility-constraint"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
with the equivalent form
\begin_inset Formula $\dot{J}=0$
\end_inset
,
and make use of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq91-1"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
in the form
\begin_inset Formula
\begin{equation}
\divg\mathbf{v}=\mathbf{I}:\mathbf{D}=0\,,\label{eq:incompressibility-redux}
\end{equation}
\end_inset
where we recognized that the divergence of the velocity is equal to the trace of the velocity gradient
\begin_inset Formula $\mathbf{L}$
\end_inset
,
hence,
the trace of its symmetric part
\begin_inset Formula $\mathbf{D}$
\end_inset
.
\end_layout
\begin_layout Standard
Since
\begin_inset Formula $J=\left(\det\mathbf{C}\right)^{1/2}$
\end_inset
,
the incompressibility constraint of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:incompressibility-constraint"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
implies that the symmetric strain tensor
\begin_inset Formula $\mathbf{E}=\frac{1}{2}\left(\mathbf{C}-\mathbf{I}\right)$
\end_inset
used as a state variable in the derivation of the hyperelasticity relation (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Constitutive-Restrictions"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
) does not truly have six independent components.
Therefore,
we cannot claim that
\begin_inset Formula $\mathbf{E}$
\end_inset
can vary arbitrarily when enforcing the entropy inequality.
Instead,
we introduce the incompressibility constraint of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:incompressibility-redux"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
into the Clausius-Duhem inequality,
eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Clausius-Duhem-inequality"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
using the method of Lagrange multipliers,
\begin_inset Formula
\[
-\rho\left(\dot{\psi}+\eta\dot{\theta}\right)+\left(\boldsymbol{\sigma}+\lambda\mathbf{I}\right):\mathbf{D}-\frac{1}{\theta}\mathbf{q}\cdot\grad\theta\geqslant0\,,
\]
\end_inset
where
\begin_inset Formula $\lambda$
\end_inset
is the Lagrange multiplier.
Now,
we may proceed with the constitutive assumption that
\begin_inset Formula $\psi=\psi\left(\mathbf{E}\right)$
\end_inset
,
as done in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Constitutive-Restrictions"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
until we conclude that the stress
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
is constrained to have the form
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=p\mathbf{I}+2J^{-1}\mathbf{F}\cdot\frac{\partial\Psi_{r}}{\partial\mathbf{C}}\cdot\mathbf{F}^{T}\,,\quad p\equiv-\lambda\,.\label{eq:Cauchy-hyperelastic-incomp}
\end{equation}
\end_inset
This expression shows that the incompressibility constraint requires us to have a parameter
\begin_inset Formula $p$
\end_inset
(a pressure) that accounts for that part of the strain energy density that would normally be stored in the material as a result of volumetric strain.
Analytically,
we would solve for this additional scalar parameter
\begin_inset Formula $p$
\end_inset
using the constraint of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:incompressibility-constraint"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
Finally,
substituting eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Cauchy-hyperelastic-incomp"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
into eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq51"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
the PK2 stress in an incompressible material takes the form
\begin_inset Formula
\begin{equation}
\mathbf{S}=Jp\mathbf{C}^{-1}+2\frac{\partial\Psi_{r}}{\partial\mathbf{C}}\,.\label{eq:PK2-hyperelastic-incomp}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Nearly-Incompressible Hyperelasticity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Nearly-Incompressible-Hyperelast"
\end_inset
\end_layout
\begin_layout Standard
When dealing with incompressible and nearly incompressible materials,
it proves useful to separate the volumetric and the deviatoric (distortional) components of the deformation gradient
\begin_inset Formula $\mathbf{F}$
\end_inset
.
Such a separation must ensure that the deviatoric part of the deformation gradient,
namely
\begin_inset Formula $\mathbf{\tilde{F}}$
\end_inset
,
does not produce any change in volume.
Noting that the determinant of the deformation gradient gives the volume ratio,
the determinant of
\begin_inset Formula $\mathbf{\tilde{F}}$
\end_inset
must therefore satisfy,
\begin_inset Formula
\begin{equation}
\det\mathbf{\tilde{F}}=1\,.\label{eq38}
\end{equation}
\end_inset
This condition can be achieved by choosing
\begin_inset Formula $\mathbf{\tilde{F}}$
\end_inset
as,
\begin_inset Formula
\begin{equation}
\mathbf{\tilde{F}}=J^{-1/3}\mathbf{F}\,.\label{eq39}
\end{equation}
\end_inset
The right Cauchy-Green tensor can also be split into volumetric and deviatoric components.
With the use of,
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq39"
nolink "false"
\end_inset
the deviatoric right Cauchy-Green tensor is given by
\begin_inset Formula
\begin{equation}
\mathbf{\tilde{C}}=\tilde{\mathbf{F}}^{T}\cdot\tilde{\mathbf{F}}=J^{-2/3}\mathbf{C}\,.\label{eq43-1}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
The process of defining constitutive equations in the case of nearly incompressible hyperelasticity is simplified by uncoupling the strain energy density
\begin_inset Formula $\Psi_{r}\left(\mathbf{C}\right)$
\end_inset
into a volumetric energy component
\begin_inset Formula $U\left(J\right)$
\end_inset
and a distortional component
\begin_inset Formula $\tilde{\Psi}\left(\mathbf{C}\right)$
\end_inset
:
\begin_inset Formula
\begin{equation}
\Psi\left(\mathbf{C}\right)=\tilde{\Psi}\left(\mathbf{C}\right)+U\left(J\right)\,.\label{eq:UC-SED}
\end{equation}
\end_inset
The second Piola-Kirchhoff tensor for a material defined by
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:UC-SED"
nolink "false"
\end_inset
is obtained in the standard manner with the help of equation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:PK2-isotropic"
nolink "false"
\end_inset
.
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{S} & =2\frac{\partial\Psi}{\partial\mathbf{C}}\\
& =2\frac{\partial\tilde{\Psi}}{\partial\mathbf{C}}+2\frac{dU}{dJ}\frac{\partial J}{\partial C}\\
& =2\frac{\partial\tilde{\Psi}}{\partial\mathbf{C}}+pJ\mathbf{C}^{-1}
\end{aligned}
\,,\label{eq:UC-PK2-redux}
\end{equation}
\end_inset
where the pressure
\begin_inset Formula $p$
\end_inset
is defined as
\begin_inset Formula
\begin{equation}
p=\frac{dU}{dJ}\,.\label{eq:UC-p}
\end{equation}
\end_inset
An example for
\begin_inset Formula $U$
\end_inset
that will be used later in the definition of the constitutive models is
\begin_inset Formula
\begin{equation}
U\left(J\right)=\frac{1}{2}\kappa\left(\ln J\right)^{2}\,.\label{eq:UC-U-exa}
\end{equation}
\end_inset
The parameter
\begin_inset Formula $\kappa$
\end_inset
will be used later as a penalty factor that will enforce the (nearly-) incompressible constraint.
However,
\begin_inset Formula $\kappa$
\end_inset
can represent a true material coefficient,
namely the bulk modulus,
for a compressible material that happens to have a hyperelastic strain energy function in the form of
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:UC-SED"
nolink "false"
\end_inset
.
In the case where the dilatational energy is given by
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:UC-U-exa"
nolink "false"
\end_inset
,
the pressure is
\begin_inset Formula
\begin{equation}
p=\kappa\frac{\ln J}{J}\,.\label{eq:UC-p-exa}
\end{equation}
\end_inset
Equation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:UC-PK2-redux"
nolink "false"
\end_inset
can be further developed by applying the chain rule to the first term:
\begin_inset Formula
\begin{equation}
\mathbf{S}=pJ\mathbf{C}^{-1}+J^{-2/3}\dev\tilde{\mathbf{S}}\,,\label{eq:UC-PK2-redux2}
\end{equation}
\end_inset
where the
\emph on
fictitious second Piola-Kirchoff
\emph default
tensor
\begin_inset CommandInset citation
LatexCommand citep
key "Holzapfel00"
literal "true"
\end_inset
is defined by,
\begin_inset Formula
\begin{equation}
\tilde{\mathbf{S}}=2\frac{\partial\tilde{\Psi}}{\partial\tilde{\mathbf{C}}}\,,\label{eq:UC-PK2-tilde}
\end{equation}
\end_inset
and
\begin_inset Formula $\Dev$
\end_inset
is the deviator operator in the reference frame:
\begin_inset Formula
\begin{equation}
\Dev\left(\cdot\right)=\left(\cdot\right)-\frac{1}{3}\left(\left(\cdot\right):\mathbf{C}\right)\mathbf{C}^{-1}.\label{eq:UC-Dev}
\end{equation}
\end_inset
The Cauchy stress can then be obtained from eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq52"
nolink "false"
\end_inset
\begin_inset Formula $_{\mathrm{3}}$
\end_inset
:
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=p\mathbf{I}+\dev\tilde{\boldsymbol{\sigma}}\,,\label{eq:UC-Cauchy-stress}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\sigma}}=\frac{2}{J}\mathbf{\tilde{F}}\cdot\frac{\partial\tilde{\Psi}}{\partial\mathbf{\tilde{C}}}\cdot\mathbf{\tilde{F}}^{T}\,,\label{eq:UC-Cauchy-stress-tilde}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\dev\left(\cdot\right)=\left(\cdot\right)-\frac{1}{3}\left(\left(\cdot\right):\mathbf{I}\right)\mathbf{I}\label{eq:UC-dev}
\end{equation}
\end_inset
is the deviator operator in the spatial frame.
\end_layout
\begin_layout Standard
The following expression will be useful in the following development.
\begin_inset Formula
\begin{equation}
\begin{aligned}\frac{d\tilde{C}_{IJ}}{dC_{KL}} & =J^{-2/3}\left(\frac{1}{2}\left(\delta_{IK}\delta_{JL}+\delta_{IL}\delta_{JK}\right)-\frac{1}{3}\tilde{C}_{IJ}\tilde{C}_{KL}^{-1}\right)\\
\frac{\partial\tilde{\mathbf{C}}}{\partial\mathbf{C}} & =J^{-2/3}\left(\mathbf{I}\odot\mathbf{I}-\frac{1}{3}\tilde{\mathbf{C}}\otimes\tilde{\mathbf{C}}^{-1}\right)
\end{aligned}
\,.\label{eq89}
\end{equation}
\end_inset
Notice that the contraction with a symmetric tensor
\series bold
\begin_inset Formula $\mathbf{A}$
\end_inset
\series default
results in,
\begin_inset Formula
\begin{equation}
\begin{aligned}\frac{d\tilde{C}_{IJ}}{dC_{KL}}A_{IJ} & =J^{-2/3}\Dev A_{KL}\\
\mathbf{A}:\frac{\partial\tilde{\mathbf{C}}}{\partial\mathbf{C}} & =J^{-2/3}\Dev\mathbf{A}
\end{aligned}
\,.\label{eq90}
\end{equation}
\end_inset
The elasticity tensor,
defined in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq55"
nolink "false"
\end_inset
,
takes on the following form.
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbb{C}_{IJKL} & =\left(J^{2}\frac{dp}{dJ}+Jp\right)C_{IJ}^{-1}C_{KL}^{-1}-2pJ\mathcal{I}_{IJKL}\\
& -\frac{2}{3}J^{-2/3}\left(\Dev\tilde{S}_{IJ}C_{KL}^{-1}+C_{IJ}^{-1}\Dev\tilde{S}_{KL}\right)\\
& +\frac{2}{3}\tilde{S}_{RS}\tilde{C}_{RS}\left(\mathcal{I}_{IJKL}-\frac{1}{3}C_{KL}^{-1}C_{IJ}^{-1}\right)+J^{-4/3}\hat{\mathbb{C}}_{IJKL}\\
\boldsymbol{\mathbb{C}} & =\left(J^{2}\frac{dp}{dJ}+Jp\right)\mathbf{C}^{-1}\otimes\mathbf{C}^{-1}-2pJ\boldsymbol{\mathcal{I}}\\
& -\frac{2}{3}J^{-2/3}\left(\Dev\tilde{\mathbf{S}}\otimes\mathbf{C}^{-1}+\mathbf{C}^{-1}\otimes\Dev\tilde{\mathbf{S}}\right)\\
& +\frac{2}{3}\left(\tilde{\mathbf{S}}:\tilde{\mathbf{C}}\right)\left(\boldsymbol{\mathcal{I}}-\frac{1}{3}\mathbf{C}^{-1}\otimes\mathbf{C}^{-1}\right)+J^{-4/3}\hat{\boldsymbol{\mathbb{C}}}
\end{aligned}
\,,\label{eq91}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\hat{\mathcal{\mathbb{C}}}_{IJKL} & =\tilde{\mathcal{\mathbb{C}}}_{IJKL}-\frac{1}{3}\left(\tilde{\mathcal{\mathbb{C}}}_{IJRS}\tilde{C}_{RS}\tilde{C}_{KL}^{-1}+\tilde{\mathcal{\mathbb{C}}}_{RSKL}\tilde{C}_{RS}\tilde{C}_{IJ}^{-1}\right)+\frac{1}{9}\tilde{C}_{IJ}^{-1}\tilde{C}_{RS}\tilde{\mathbb{C}}_{RSMN}\tilde{C}_{MN}\tilde{C}_{KL}^{-1}\\
\hat{\mathcal{\boldsymbol{\mathbb{C}}}} & =\tilde{\mathcal{\boldsymbol{\mathbb{C}}}}-\frac{1}{3}\left(\tilde{\mathcal{\boldsymbol{\mathbb{C}}}}:\tilde{\mathbf{C}}\otimes\tilde{\mathbf{C}}^{-1}+\tilde{\mathbf{C}}^{-1}\otimes\tilde{\mathbf{C}}:\tilde{\boldsymbol{\mathcal{\mathbb{C}}}}\right)+\frac{1}{9}\tilde{\mathbf{C}}^{-1}\otimes\tilde{\mathbf{C}}:\tilde{\boldsymbol{\mathbb{C}}}:\tilde{\mathbf{C}}\otimes\tilde{\mathbf{C}}^{-1}
\end{aligned}
\,.\label{eq92}
\end{equation}
\end_inset
The spatial elasticity tensor follows from
\begin_inset Formula
\begin{equation}
\begin{aligned}\boldsymbol{\mathcal{C}} & =\left(J\frac{dp}{dJ}+p\right)\mathbf{I}\otimes\mathbf{I}-2p\mathbf{I}\odot\mathbf{I}\\
& -\frac{2}{3}\left(\dev\tilde{\boldsymbol{\sigma}}\otimes\mathbf{I}+\mathbf{I}\otimes\dev\tilde{\boldsymbol{\sigma}}\right)\\
& +\frac{2}{3}\left(\tilde{\boldsymbol{\sigma}}:\mathbf{I}\right)\left(\mathbf{I}\odot\mathbf{I}-\frac{1}{3}\mathbf{I}\otimes\mathbf{I}\right)+\hat{\mathcal{\boldsymbol{C}}}
\end{aligned}
\,,\label{eq:UC-spatial-elasticity}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\hat{\mathcal{C}}_{ijkl} & =\frac{1}{J}\tilde{F}_{iI}\tilde{F}_{jJ}\tilde{F}_{kK}\tilde{F}_{lL}\hat{\mathcal{\mathbb{C}}}_{IJKL}\\
\hat{\boldsymbol{\mathcal{C}}} & =\frac{1}{J}\left(\tilde{\mathbf{F}}\oslash\tilde{\mathbf{F}}\right):\hat{\boldsymbol{\mathbb{C}}}:\left(\tilde{\mathbf{F}}^{T}\oslash\tilde{\mathbf{F}}^{T}\right)\\
& =\tilde{\boldsymbol{\mathcal{C}}}-\frac{1}{3}\left(\mathbf{I}\otimes\mathbf{I}:\tilde{\boldsymbol{\mathcal{C}}}+\tilde{\boldsymbol{\mathcal{C}}}:\mathbf{I}\otimes\mathbf{I}\right)+\frac{1}{9}\left(\mathbf{I}:\tilde{\boldsymbol{\mathcal{C}}}:\mathbf{I}\right)\mathbf{I}\otimes\mathbf{I}
\end{aligned}
\,.\label{eq:UC-spatial-elasticity-hat}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Tension-Bearing Fiber Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Tension-Bearing-Fiber-Materials"
\end_inset
\end_layout
\begin_layout Standard
In biomechanics we often find it convenient to model fibrous or fibrillar materials using one-dimensional fibers that can only sustain tension.
Typically,
such fibers are represented with a strain energy density function
\begin_inset Formula
\begin{equation}
\Psi_{r}\left(\mathbf{C}\right)=H\left(I_{n}-1\right)\Psi_{n}\left(I_{n}\right)\,,\quad I_{n}=\mathbf{n}_{r}\cdot\mathbf{C}\cdot\mathbf{n}_{r}\label{eq:fiber-model}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
is the unit vector along the fiber in its reference configuration,
and
\begin_inset Formula $I_{n}$
\end_inset
is the square of the stretch ratio along the fiber.
The Heaviside unit step function
\begin_inset Formula $H\left(I_{n}-1\right)$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:fiber-model"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
ensures that the fiber contributes strain energy only when it is under tension (
\begin_inset Formula $I_{n}>1$
\end_inset
);
thus,
the constitutive model
\begin_inset Formula $\Psi_{n}\left(I_{n}\right)$
\end_inset
for the tensile response of the fiber must reduce to zero when
\begin_inset Formula $I_{n}=1$
\end_inset
.
\end_layout
\begin_layout Standard
Using the hyperelasticity relations presented above,
the Cauchy stress in this fiber material can be evaluated as
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=H\left(I_{n}-1\right)2J^{-1}\frac{d\Psi_{n}}{dI_{n}}\left(\mathbf{F}\cdot\mathbf{n}_{r}\right)\otimes\left(\mathbf{F}\cdot\mathbf{n}_{r}\right)\,,\label{eq:fiber-stress}
\end{equation}
\end_inset
and the spatial elasticity tensor is
\begin_inset Formula
\begin{equation}
\mathcal{C}=4J^{-1}\frac{d^{2}\Psi_{n}}{dI_{n}^{2}}\left(\mathbf{F}\cdot\mathbf{n}_{r}\right)\otimes\left(\mathbf{F}\cdot\mathbf{n}_{r}\right)\otimes\left(\mathbf{F}\cdot\mathbf{n}_{r}\right)\otimes\left(\mathbf{F}\cdot\mathbf{n}_{r}\right)\,.\label{eq:fiber-elasticity}
\end{equation}
\end_inset
If we denote the unit vector along the fiber in the current configuration as
\begin_inset Formula $\mathbf{n}\equiv I_{n}^{-1/2}\mathbf{F}\cdot\mathbf{n}_{r}$
\end_inset
,
the above expressions may be rewritten as
\begin_inset Formula $\boldsymbol{\sigma}=H\left(I_{n}-1\right)2J^{-1}I_{n}\Psi_{n}^{\prime}\left(I_{n}\right)\mathbf{n}\otimes\mathbf{n}$
\end_inset
and
\begin_inset Formula $\mathcal{C}=4J^{-1}I_{n}^{2}\Psi_{n}^{\prime\prime}\left(I_{n}\right)\mathbf{n}\otimes\mathbf{n}\otimes\mathbf{n}\otimes\mathbf{n}$
\end_inset
.
As explained in
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian07a"
literal "false"
\end_inset
,
these fiber models must be combined with a ground matrix in order to produce a stable material response.
In FEBio this can be done by using a constrained mixture of solid constituents (for example,
see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Simple-Solid-Mixtures"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Standard
In the classical fiber mechanics literature it was suggested that uncoupled fiber formulations could also be implemented,
whereby
\begin_inset Formula
\begin{equation}
\Psi_{r}\left(\mathbf{C}\right)=H\left(\tilde{I}_{n}-1\right)\tilde{\Psi}_{n}\left(\tilde{I}_{n}\right)+U\left(J\right)\,,\quad\tilde{I}_{n}=\mathbf{n}_{r}\cdot\tilde{\mathbf{C}}\cdot\mathbf{n}_{r}\,,\label{eq:fiber-model-UC}
\end{equation}
\end_inset
and the Cauchy stress
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
is given by eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:UC-Cauchy-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
where
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\sigma}}=H\left(\tilde{I}_{n}-1\right)2J^{-1}\frac{d\tilde{\Psi}_{n}}{d\tilde{I}_{n}}\left(\tilde{\mathbf{F}}\cdot\mathbf{n}_{r}\right)\otimes\left(\tilde{\mathbf{F}}\cdot\mathbf{n}_{r}\right)\,.\label{eq:fiber-stress-UC}
\end{equation}
\end_inset
Uncoupled fiber formulations of this kind are available in FEBio.
More recently however,
several studies have demonstrated that using
\begin_inset Formula $H\left(\tilde{I}_{n}-1\right)$
\end_inset
to detect whether a fiber is in tension or compression is non-physical,
since
\begin_inset Formula $\tilde{I}_{n}\ne I_{n}$
\end_inset
and
\begin_inset Formula $I_{n}$
\end_inset
is the sole true measure of the tensile stretch in the fiber
\begin_inset CommandInset citation
LatexCommand citep
key "Sansour08,Helfenstein10,Gultekin19"
literal "false"
\end_inset
.
Therefore,
uncoupled fiber formulations have fallen out of favor,
even though FEBio still allows users to employ these for historical reasons.
It is now recommended to use the standard (unconstrained) fiber models,
also available in FEBio,
with the formulation given in Eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:fiber-model"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:fiber-elasticity"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
even when the ground matrix uses an uncoupled formulation.
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Biphasic Material
\begin_inset CommandInset label
LatexCommand label
name "sec:Biphasic-Material"
\end_inset
\end_layout
\begin_layout Standard
Biphasic materials may be used to model deformable porous media.
A biphasic material represents a mixture of a porous permeable solid and an interstitial fluid.
Each constituent is intrinsically incompressible,
but the mixture may change volume as interstitial fluid is exchanged with the pore space of the solid.
Biphasic materials require the explicit modeling of fluid that permeates the solid.
The biphasic material model is useful to simulate materials that show flow-dependent viscoelastic behavior resulting from the frictional interactions of the fluid and solid.
Several biological materials such as cartilage can be described more accurately this way.
\end_layout
\begin_layout Subsection
Governing Equations
\begin_inset CommandInset label
LatexCommand label
name "subsec:Biphasic-governing-equations"
\end_inset
\end_layout
\begin_layout Standard
Consider a mixture consisting of a solid constituent and a fluid constituent.
Both constituents are considered to be intrinsically incompressible,
but the mixture can change volume when fluid enters or leaves the porous solid matrix
\begin_inset CommandInset citation
LatexCommand citep
key "Bowen80,Mow80"
literal "true"
\end_inset
.
According to the kinematics of the continuum
\begin_inset CommandInset citation
LatexCommand citep
key "Truesdell60"
literal "true"
\end_inset
,
each constituent
\begin_inset Formula $\alpha$
\end_inset
of a mixture (
\begin_inset Formula $\alpha=s$
\end_inset
for the solid and
\begin_inset Formula $\alpha=w$
\end_inset
for the fluid) has a separate motion
\begin_inset Formula $\boldsymbol{\chi}^{\alpha}\left(\mathbf{X}^{\alpha},t\right)$
\end_inset
which places particles of each mixture constituent,
originally located at
\begin_inset Formula $\mathbf{X}^{\alpha}$
\end_inset
,
in the current configuration
\begin_inset Formula $\mathbf{x}$
\end_inset
according to
\begin_inset Formula
\begin{equation}
\mathbf{x}=\boldsymbol{\chi}^{\alpha}\left(\mathbf{X}^{\alpha},t\right)\,.\label{eq102}
\end{equation}
\end_inset
For the purpose of finite element analyses,
the motion of the solid matrix,
\begin_inset Formula $\alpha=s$
\end_inset
,
is of particular interest.
\end_layout
\begin_layout Standard
The governing equations that enter into the statement of virtual work are the conservation of linear momentum and the conservation of mass,
for the mixture as a whole.
Under quasi-static conditions,
the conservation of momentum reduces to
\begin_inset Formula
\begin{equation}
\divg\boldsymbol{\sigma}+\rho\mathbf{b}=\mathbf{0}\,,\label{eq103}
\end{equation}
\end_inset
where
\begin_inset Formula $\sigma$
\end_inset
is the Cauchy stress for the mixture,
\begin_inset Formula $\rho$
\end_inset
is the mixture density and
\begin_inset Formula $\mathbf{b}$
\end_inset
is the external mixture body force per mass.
Since the mixture is porous,
this stress may also be written as
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=-p\mathbf{I}+\boldsymbol{\sigma}^{e}\,,\label{eq104}
\end{equation}
\end_inset
where
\begin_inset Formula $p$
\end_inset
is the fluid pressure and
\begin_inset Formula $\sigma^{e}$
\end_inset
is the effective or extra stress,
resulting from the deformation of the solid matrix.
Conservation of mass for the mixture requires that
\begin_inset Formula
\begin{equation}
\divg\left(\mathbf{v}^{s}+\mathbf{w}\right)=0\,,\label{eq105}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{v}^{s}=\partial\boldsymbol{\chi}^{s}/\partial t$
\end_inset
is the solid matrix velocity and
\begin_inset Formula $\mathbf{w}$
\end_inset
is the flux of the fluid relative to the solid matrix.
Let the solid matrix displacement be denoted by
\begin_inset Formula $\mathbf{u}$
\end_inset
,
then
\begin_inset Formula $\mathbf{v}^{s}=\mathbf{\dot{u}}$
\end_inset
.
\end_layout
\begin_layout Standard
To relate the relative fluid flux
\begin_inset Formula $\mathbf{w}$
\end_inset
to the fluid pressure and solid deformation,
it is necessary to employ the equation of conservation of linear momentum for the fluid,
\begin_inset Formula
\begin{equation}
-\varphi^{w}\grad p+\rho^{w}\mathbf{b}^{w}+\mathbf{\hat{p}}_{d}^{w}=\mathbf{0}\,,\label{eq106}
\end{equation}
\end_inset
where
\begin_inset Formula $\varphi^{w}$
\end_inset
is the solid matrix porosity,
\begin_inset Formula $\rho^{w}=\varphi^{w}\rho_{T}^{w}$
\end_inset
is the apparent fluid density and
\begin_inset Formula $\rho_{T}^{w}$
\end_inset
is the true fluid density,
\begin_inset Formula $\mathbf{b}^{w}$
\end_inset
is the external body force per mass acting on the fluid,
and
\begin_inset Formula $\mathbf{\hat{p}}_{d}^{w}$
\end_inset
is the momentum exchange between the solid and fluid constituents,
typically representing the frictional interaction between these constituents.
This equation neglects the viscous stress of the fluid in comparison to
\begin_inset Formula $\mathbf{\hat{p}}_{d}^{w}$
\end_inset
.
The most common constitutive relation is
\begin_inset Formula $\mathbf{\hat{p}}_{d}^{w}=-\varphi^{w}\mathbf{k}^{-1}\cdot\mathbf{w}$
\end_inset
,
where the second order,
symmetric tensor
\begin_inset Formula $\mathbf{k}$
\end_inset
is the hydraulic permeability of the mixture.
When combined with eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq106"
nolink "false"
\end_inset
,
it produces
\begin_inset Formula
\begin{equation}
\mathbf{w}=-\mathbf{k}\cdot\left(\grad p-\rho_{T}^{w}\mathbf{b}^{w}\right)\,,\label{eq107}
\end{equation}
\end_inset
which is equivalent to Darcy's law.
In general,
\begin_inset Formula $\mathbf{k}$
\end_inset
may be a function of the deformation.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Biphasic-Solute Material
\begin_inset CommandInset label
LatexCommand label
name "sec:Biphasic-Solute-Material"
\end_inset
\end_layout
\begin_layout Standard
A biphasic-solute material is an extension of the biphasic material model that also includes transport and mechano-chemical effects of a neutral solute.
Transport of a solute in a porous medium includes diffusion,
resulting from gradients in the solute concentration,
and convection of the solute by the solvent,
as a result of fluid pressure gradients.
Mechano-chemical effects describe phenomena such as osmotic pressurization and swelling.
\end_layout
\begin_layout Subsection
Governing Equations
\begin_inset CommandInset label
LatexCommand label
name "subsec:BS-governing-equations"
\end_inset
\end_layout
\begin_layout Standard
The governing equations adopted in this finite element implementation of neutral solute transport in deformable porous media are based on the framework of mixture theory
\begin_inset CommandInset citation
LatexCommand citep
key "Truesdell60,Bowen76"
literal "true"
\end_inset
.
A single solute is considered in this presentation for notational simplicity,
though the extension of equations to multiple solutes is straightforward.
Various forms of the governing equations have been presented in the prior literature
\begin_inset CommandInset citation
LatexCommand citep
key "Mauck03,Ateshian06"
literal "true"
\end_inset
,
though a presentation that incorporates all the desired features of this implementation has not been reported previously and is thus detailed here.
\end_layout
\begin_layout Standard
The fundamental modeling assumptions adopted in this treatment are quasi-static conditions for momentum balance (negligible effects of inertia),
intrinsic incompressibility of all constituents (invariant true densities),
isothermal conditions,
negligible volume fraction of solute relative to the solid and solvent,
and negligible effects of solute and solvent viscosities (friction within constituents) relative to frictional interactions between constituents.
These assumptions are often made in studies of biological tissues and cells.
External body forces and chemical reactions are not considered.
\end_layout
\begin_layout Standard
The three constituents of the mixture are the porous-permeable solid matrix (
\begin_inset Formula $\alpha=s)$
\end_inset
,
the solvent (
\begin_inset Formula $\alpha=w)$
\end_inset
,
and the solute (
\begin_inset Formula $\alpha=u)$
\end_inset
.
The motion of the solid matrix is described by the displacement vector
\begin_inset Formula $\mathbf{u}$
\end_inset
,
the pressure of the interstitial fluid (solvent
\begin_inset Formula $+$
\end_inset
solute) is
\begin_inset Formula $p$
\end_inset
,
and the solute concentration (on a solution-volume basis) is
\begin_inset Formula $c$
\end_inset
.
The total (or mixture) stress may be described by the Cauchy stress tensor
\begin_inset Formula $\boldsymbol{\sigma}=-p\mathbf{I}+\boldsymbol{\sigma}^{e}$
\end_inset
,
where
\begin_inset Formula $\mathbf{I}$
\end_inset
is the identity tensor and
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
is the stress arising from the strain in the porous solid matrix.
Because it is porous,
the solid matrix is compressible since the volume of pores changes as interstitial fluid enters or leaves the matrix.
Under the conditions outlined above,
the balance of linear momentum for the mixture reduces to
\begin_inset Formula
\begin{equation}
\divg\boldsymbol{\sigma}=-\grad p+\divg\boldsymbol{\sigma}^{e}=\mathbf{0}\,.\label{eq108}
\end{equation}
\end_inset
Similarly,
the equations of balance of linear momentum for the solvent and solute are given by
\begin_inset Formula
\begin{equation}
\begin{aligned}\rho^{w}\grad\tilde{\mu}^{w}+\mathbf{f}^{ws}\cdot\left(\mathbf{v}^{s}-\mathbf{v}^{w}\right)+\mathbf{f}^{wu}\cdot\left(\mathbf{v}^{u}-\mathbf{v}^{w}\right) & =\mathbf{0}\,,\\
-\rho^{u}\grad\tilde{\mu}^{u}+\mathbf{f}^{us}\cdot\left(\mathbf{v}^{s}-\mathbf{v}^{u}\right)+\mathbf{f}^{uw}\cdot\left(\mathbf{v}^{w}-\mathbf{v}^{u}\right) & =\mathbf{0}\,,
\end{aligned}
\label{eq109}
\end{equation}
\end_inset
where
\begin_inset Formula $\rho^{\alpha}$
\end_inset
is the apparent density (mass of
\begin_inset Formula $\alpha$
\end_inset
per volume of the mixture),
\begin_inset Formula $\tilde{\mu}^{\alpha}$
\end_inset
is the mechano-chemical potential and
\begin_inset Formula $\mathbf{v}^{\alpha}$
\end_inset
is the velocity of constituent
\begin_inset Formula $\alpha$
\end_inset
.
\begin_inset Formula $\mathbf{f}^{\alpha\beta}$
\end_inset
is the diffusive drag tensor between constituents
\begin_inset Formula $\alpha$
\end_inset
and
\begin_inset Formula $\beta$
\end_inset
representing momentum exchange via frictional interactions,
which satisfies
\begin_inset Formula $\mathbf{f}^{\beta\alpha}=\mathbf{f}^{\alpha\beta}$
\end_inset
.
An important feature of these relations is the incorporation of momentum exchange term between the solute and solid matrix,
\begin_inset Formula $\mathbf{f}^{us}\cdot\left(\mathbf{v}^{s}-\mathbf{v}^{u}\right)$
\end_inset
,
which is often neglected in other treatments but plays an important role for describing solid-solute interactions
\begin_inset CommandInset citation
LatexCommand citep
key "Mauck03,Albro08,Albro10"
literal "true"
\end_inset
.
These momentum equations show that the driving force for the transport of solvent or solute is the gradient in its mechano-chemical potential,
which is resisted by frictional interactions with other constituents.
\end_layout
\begin_layout Standard
The mechano-chemical potential is the sum of the mechanical and chemical potentials.
The chemical potential
\begin_inset Formula $\mu^{\alpha}$
\end_inset
of
\begin_inset Formula $\alpha$
\end_inset
represents the rate at which the mixture free energy changes with increasing mass of
\begin_inset Formula $\alpha$
\end_inset
.
The mechanical potential represents the rate at which the mixture free energy density changes with increasing volumetric strain of
\begin_inset Formula $\alpha$
\end_inset
.
In a mixture of intrinsically incompressible constituents,
where the volumetric strain is idealized to be zero,
this potential is given by
\begin_inset Formula $\left(p-p_{0}\right)/\rho_{T}^{\alpha}$
\end_inset
,
where
\begin_inset Formula $\rho_{T}^{\alpha}$
\end_inset
is the true density of
\begin_inset Formula $\alpha$
\end_inset
(mass of
\begin_inset Formula $\alpha$
\end_inset
per volume of
\begin_inset Formula $\alpha)$
\end_inset
,
which is invariant for incompressible constituents,
and
\begin_inset Formula $p_{0}$
\end_inset
is some arbitrarily set reference pressure (e.g.,
ambient pressure).
\end_layout
\begin_layout Standard
From classical physical chemistry,
the general form of a constitutive relation for the chemical potential is
\begin_inset Formula $\mu^{\alpha}=\mu_{0}^{\alpha}\left(\theta\right)+\left(R\theta/M^{\alpha}\right)\ln a^{\alpha}$
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Tinoco-Jr.95"
literal "true"
\end_inset
,
where
\begin_inset Formula $R$
\end_inset
is the universal gas constant,
\begin_inset Formula $\theta$
\end_inset
is the absolute temperature,
\begin_inset Formula $M^{\alpha}$
\end_inset
is the molecular weight (invariant) and
\begin_inset Formula $a^{\alpha}$
\end_inset
is the activity of constituent
\begin_inset Formula $\alpha$
\end_inset
(a non-dimensional quantity);
\begin_inset Formula $\mu_{0}^{\alpha}\left(\theta\right)$
\end_inset
is the chemical potential at some arbitrary reference state,
at a given temperature.
For solutes,
physical chemistry treatments let
\begin_inset Formula $a^{u}=\gamma c/c_{0}$
\end_inset
,
where
\begin_inset Formula $c_{0}$
\end_inset
is the solute concentration in some standard reference state (an invariant,
typically
\begin_inset Formula $c_{0}=1\,\mbox{M})$
\end_inset
,
and
\begin_inset Formula $\gamma$
\end_inset
is the non-dimensional activity coefficient,
which generally depends on the current state (e.g.,
concentration) but reduces to unity under the assumption of ideal physico-chemical behavior
\begin_inset CommandInset citation
LatexCommand citep
key "Tinoco-Jr.95"
literal "true"
\end_inset
.
Since this representation is strictly valid for free solutions only,
whereas solutes may be partially excluded from some of the interstitial space of a porous solid matrix,
Mauck et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Mauck03"
literal "true"
\end_inset
extended this representation of the solute activity to let
\begin_inset Formula $a^{u}=\gamma c/\kappa c_{0}$
\end_inset
,
where the solubility
\begin_inset Formula $\kappa$
\end_inset
represents the fraction of the pore space which is accessible to the solute (
\begin_inset Formula $0<\kappa\leqslant1)$
\end_inset
.
In this extended form,
it becomes clear that even under ideal behavior (
\begin_inset Formula $\gamma=1)$
\end_inset
,
the solute activity may be affected by the solubility.
Indeed,
for neutral solutes,
the solubility also represents the partition coefficient of the solute between the tissue and external bath
\begin_inset CommandInset citation
LatexCommand citep
key "Laurent63,Ogston61"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
When accounting for the fact that the solute volume fraction is negligible compared to the solvent volume fraction
\begin_inset CommandInset citation
LatexCommand citep
key "Tinoco-Jr.95,Ateshian07b"
literal "true"
\end_inset
,
the general expressions for
\begin_inset Formula $\tilde{\mu}^{w}$
\end_inset
and
\begin_inset Formula $\tilde{\mu}^{u}$
\end_inset
take the form
\begin_inset Formula
\begin{equation}
\begin{aligned}\tilde{\mu}^{w} & =\mu_{0}^{w}\left(\theta\right)+\frac{1}{\rho_{T}^{w}}\left(p-p_{0}-R\theta\,\Phi\,c\right)\,,\\
\tilde{\mu}^{u} & =\mu_{0}^{u}\left(\theta\right)+\frac{R\theta}{M}\ln\frac{\gamma c}{\kappa c_{0}}\,,
\end{aligned}
\label{eq110}
\end{equation}
\end_inset
where
\begin_inset Formula $\Phi$
\end_inset
is the osmotic coefficient (a non-dimensional function of the state),
which deviates from unity under non-ideal physico-chemical behavior.
Therefore,
a complete description of the physico-chemical state of solvent and solute requires constitutive relations for
\begin_inset Formula $\Phi$
\end_inset
and the effective solubility
\begin_inset Formula $\tilde{\kappa}=\kappa/\gamma$
\end_inset
,
which should generally depend on the solid matrix strain and the solute concentration.
\end_layout
\begin_layout Standard
It is also necessary to satisfy the balance of mass for each of the constituents.
In the absence of chemical reactions,
the statement of balance of mass for constituent
\begin_inset Formula $\alpha$
\end_inset
reduces to
\begin_inset Formula
\begin{equation}
\frac{\partial\rho^{\alpha}}{\partial t}+\divg\left(\rho^{\alpha}\mathbf{v}^{\alpha}\right)=0\,.\label{eq111}
\end{equation}
\end_inset
The apparent density may be related to the true density via
\begin_inset Formula $\rho^{\alpha}=\varphi^{\alpha}\rho_{T}^{\alpha}$
\end_inset
,
where
\begin_inset Formula $\varphi^{\alpha}$
\end_inset
is the volume fraction of
\begin_inset Formula $\alpha$
\end_inset
in the mixture.
Due to mixture saturation (no voids),
the volume fractions add up to unity.
Since the volume fraction of solute is considered negligible (
\begin_inset Formula $\varphi^{u}\ll\varphi^{s},\varphi^{w})$
\end_inset
,
it follows that
\begin_inset Formula $\sum\nolimits_{\alpha}\varphi^{\alpha}\approx\varphi^{s}+\varphi^{w}=1$
\end_inset
.
Since
\begin_inset Formula $\rho_{T}^{\alpha}$
\end_inset
of an incompressible constituent is invariant in space and time,
these relations may be combined to produce the mixture balance of mass relation,
\begin_inset Formula
\begin{equation}
\divg\left(\mathbf{v}^{s}+\mathbf{w}\right)=0,\label{eq112}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{w}=\varphi^{w}\left(\mathbf{v}^{w}-\mathbf{v}^{s}\right)$
\end_inset
is the volumetric flux of solvent relative to the solid.
The balance of mass for the solute may also be written as
\begin_inset Formula
\begin{equation}
\frac{\partial\left(\varphi^{w}c\right)}{\partial t}+\divg\left(\mathbf{j}+\varphi^{w}c\,\mathbf{v}^{s}\right)=0\,,\label{eq113}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{j}=\varphi^{w}c\left(\mathbf{v}^{u}-\mathbf{v}^{s}\right)$
\end_inset
is the molar flux of solute relative to the solid.
This mass balance relation is obtained by recognizing that the solute apparent density (mass per mixture volume) is related to its concentration (moles per solution volume) via
\begin_inset Formula $\rho^{u}=\left(1-\varphi^{s}\right)Mc\approx\varphi^{w}Mc$
\end_inset
.
Finally,
it can be shown via standard arguments that the mass balance for the solid matrix reduces to
\begin_inset Formula
\begin{equation}
\varphi^{s}=\frac{\varphi_{r}^{s}}{J}\,,\label{eq114}
\end{equation}
\end_inset
where
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
is the solid volume fraction in the reference state,
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
and
\begin_inset Formula $\mathbf{F}=\mathbf{I}+\grad\mathbf{u}$
\end_inset
is the deformation gradient of the solid matrix.
\end_layout
\begin_layout Standard
Inverting the momentum balance equations in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq109"
nolink "false"
\end_inset
,
it is now possible to relate the solvent and solute fluxes to the driving forces according to
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{w} & =-\tilde{\mathbf{k}}\cdot\left(\rho_{T}^{w}\grad\tilde{\mu}^{w}+Mc\frac{\mathbf{d}}{d_{0}}\grad\tilde{\mu}^{u}\right)\,,\\
\mathbf{j} & =\mathbf{d}\cdot\left(-\frac{M}{R\theta}\varphi^{w}c\grad\tilde{\mu}^{u}+\frac{c}{d_{0}}\mathbf{w}\right)\,,
\end{aligned}
\label{eq115}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{d}$
\end_inset
is the solute diffusivity tensor in the mixture (solid
\begin_inset Formula $+$
\end_inset
solution),
\begin_inset Formula $d_{0}$
\end_inset
is its (isotropic) diffusivity in free solution;
\begin_inset Formula $\mathbf{\tilde{k}}$
\end_inset
is the hydraulic permeability tensor of the solution (solvent
\begin_inset Formula $+$
\end_inset
solute) through the porous solid matrix,
which depends explicitly on concentration according to
\begin_inset Formula
\begin{equation}
\tilde{\mathbf{k}}=\left[\mathbf{k}^{-1}+\frac{R\theta c}{\varphi^{w}d_{0}}\left(\mathbf{I}-\frac{\mathbf{d}}{d_{0}}\right)\right]^{-1},\label{eq116}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{k}$
\end_inset
represents the hydraulic permeability tensor of the solvent through the solid matrix.
The permeability and diffusivity tensors are related to the diffusive drag tensors appearing in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq109"
nolink "false"
\end_inset
according to
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{k} & =\left(\varphi^{w}\right)^{2}\left(\mathbf{f}^{ws}\right)^{-1}\,,\\
\mathbf{d}_{0} & =R\theta\varphi^{w}c\left(\mathbf{f}^{uw}\right)^{-1}\equiv d_{0}\mathbf{I}\,,\\
\mathbf{d} & =R\theta\varphi^{w}c\left(\mathbf{f}^{us}+\mathbf{f}^{uw}\right)^{-1}\,,
\end{aligned}
\label{eq117}
\end{equation}
\end_inset
though these explicit relationships are not needed here since
\begin_inset Formula $\mathbf{k}$
\end_inset
,
\begin_inset Formula $\mathbf{d}$
\end_inset
and
\begin_inset Formula $d_{0}$
\end_inset
may be directly specified in a particular analysis.
Since the axiom of entropy inequality requires that the tensors
\begin_inset Formula $\mathbf{f}^{\alpha\beta}$
\end_inset
be positive semi-definite (see appendix of
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10"
literal "true"
\end_inset
),
it follows that
\begin_inset Formula $d_{0}$
\end_inset
must be greater than or equal to the largest eigenvalue of
\begin_inset Formula $\mathbf{d}$
\end_inset
.
Constitutive relations are needed for these transport properties,
which relate them to the solid matrix strain and solute concentration.
Note that the relations in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq117"
nolink "false"
\end_inset
represent generalizations of Darcy's law for fluid permeation through porous media,
and Fick's law for solute diffusion in porous media or free solution.
\end_layout
\begin_layout Subsection
Continuous Variables
\begin_inset CommandInset label
LatexCommand label
name "subsec:BS-continuous-variables"
\end_inset
\end_layout
\begin_layout Standard
In principle,
the objective of the finite element analysis is to solve for the three unknowns,
\begin_inset Formula $\mathbf{u}$
\end_inset
,
\begin_inset Formula $p$
\end_inset
and
\begin_inset Formula $c$
\end_inset
,
using the partial differential equations that enforce mixture momentum balance in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq108"
nolink "false"
\end_inset
,
mixture mass balance in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq112"
nolink "false"
\end_inset
,
and solute mass balance in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq113"
nolink "false"
\end_inset
.
The remaining solvent and solute momentum balances in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq115"
nolink "false"
\end_inset
,
and solid mass balance in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq114"
nolink "false"
\end_inset
,
have been reduced to relations that may be substituted into the three partial differential equations as needed.
Solving these equations requires the application of suitable boundary conditions that are consistent with mass,
momentum and energy balances across boundary surfaces or interfaces.
When defining boundaries or interfaces on the solid matrix (the conventional approach in solid mechanics),
whose outward unit normal is
\begin_inset Formula $\mathbf{n}$
\end_inset
,
mass and momentum balance relations demonstrate that the mixture traction
\begin_inset Formula $\mathbf{t}=\boldsymbol{\sigma}\cdot\mathbf{n}$
\end_inset
and normal flux components
\begin_inset Formula $w_{n}=\mathbf{w}\cdot\mathbf{n}$
\end_inset
and
\begin_inset Formula $j_{n}=\mathbf{j}\cdot\mathbf{n}$
\end_inset
must be continuous across the interface
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian07b,Eringen65"
literal "true"
\end_inset
.
Therefore,
\begin_inset Formula $\mathbf{t}$
\end_inset
,
\begin_inset Formula $w_{n}$
\end_inset
and
\begin_inset Formula $j_{n}$
\end_inset
may be prescribed as boundary conditions.
\end_layout
\begin_layout Standard
Combining momentum and energy balances across an interface also demonstrates that
\begin_inset Formula $\tilde{\mu}^{w}$
\end_inset
and
\begin_inset Formula $\tilde{\mu}^{u}$
\end_inset
must be continuous
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian07b,Katzir-Katchalsky65"
literal "true"
\end_inset
,
implying that these mechano-chemical potentials may be prescribed as boundary conditions.
However,
because of the arbitrariness of the reference states
\begin_inset Formula $\mu_{0}^{w}$
\end_inset
,
\begin_inset Formula $\mu_{0}^{u}$
\end_inset
,
\begin_inset Formula $p_{0}$
\end_inset
and
\begin_inset Formula $c_{0}$
\end_inset
,
and the ill-conditioning of the logarithm function in the limit of small solute concentration,
the mechano-chemical potentials do not represent practical choices for primary variables in a finite element implementation.
An examination of
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq110"
nolink "false"
\end_inset
also shows that continuity of these potentials across an interface does not imply continuity of the fluid pressure
\begin_inset Formula $p$
\end_inset
or solute concentration
\begin_inset Formula $c$
\end_inset
.
Therefore,
pressure and concentration are also unsuitable as nodal variables in a finite element analysis and they must be replaced by alternative choices.
Based on the similar reasoning presented by Sun et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Sun99"
literal "true"
\end_inset
,
an examination of the expressions in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq110"
nolink "false"
\end_inset
shows that continuity may be enforced by using
\begin_inset Formula
\begin{equation}
\begin{aligned}\tilde{p} & =p-R\theta\,\Phi\,c\,,\\
\tilde{c} & =\frac{c}{\tilde{\kappa}}\,,
\end{aligned}
\label{eq118}
\end{equation}
\end_inset
where
\begin_inset Formula $\tilde{p}$
\end_inset
is the effective fluid pressure and
\begin_inset Formula $\tilde{c}$
\end_inset
is the effective solute concentration in the mixture.
Note that
\begin_inset Formula $\tilde{p}$
\end_inset
represents that part of the fluid pressure which does not result from osmotic effects (since the term
\begin_inset Formula $R\theta\,\Phi\,c$
\end_inset
may be viewed as the osmotic pressure contribution to
\begin_inset Formula $p)$
\end_inset
,
and
\begin_inset Formula $\tilde{c}$
\end_inset
is a straightforward measure of the solute activity,
since
\begin_inset Formula $a^{u}=\tilde{c}/c_{0}$
\end_inset
.
Therefore these alternative variables have clear physical meanings.
\end_layout
\begin_layout Standard
Since the unknowns are now given by
\begin_inset Formula $\mathbf{u}$
\end_inset
,
\begin_inset Formula $\tilde{p}$
\end_inset
and
\begin_inset Formula $\tilde{c}$
\end_inset
,
the governing partial differential equations may be rewritten in the form
\begin_inset Formula
\begin{equation}
\begin{aligned} & \grad\left(\tilde{p}+R\theta\,\Phi\,\tilde{\kappa}\tilde{c}\right)+\divg\boldsymbol{\sigma}^{e}=\mathbf{0}\,,\\
& \divg\left(\mathbf{v}^{s}+\mathbf{w}\right)=0\,,\\
& \frac{\partial\left(\varphi^{w}\tilde{\kappa}\tilde{c}\right)}{\partial t}+\divg\left(\mathbf{j}+\varphi^{w}\tilde{\kappa}\tilde{c}\,\mathbf{v}^{s}\right)=0\,,
\end{aligned}
\label{eq119}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{w} & =-\tilde{\mathbf{k}}\cdot\left(\grad\tilde{p}+R\theta\frac{\tilde{\kappa}}{d_{0}}\mathbf{d}\cdot\grad\tilde{c}\right)\,,\\
\mathbf{j} & =\tilde{\kappa}\mathbf{d}\cdot\left(-\varphi^{w}\grad\tilde{c}+\frac{\tilde{c}}{d_{0}}\mathbf{w}\right)\,,\\
\tilde{\mathbf{k}} & =\left[\mathbf{k}^{-1}+\frac{R\theta}{\varphi^{w}}\frac{\tilde{\kappa}\tilde{c}}{d_{0}}\left(\mathbf{I}-\frac{\mathbf{d}}{d_{0}}\right)\right]^{-1}\,.
\end{aligned}
\label{eq120}
\end{equation}
\end_inset
Constitutive equations are needed to relate
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
,
\begin_inset Formula $\mathbf{k}$
\end_inset
,
\begin_inset Formula $\mathbf{d}$
\end_inset
,
\begin_inset Formula $d_{0}$
\end_inset
,
\begin_inset Formula $\tilde{\kappa}$
\end_inset
and
\begin_inset Formula $\Phi$
\end_inset
to the solid matrix strain and effective solute concentration.
\end_layout
\begin_layout Section
Triphasic and Multiphasic Materials
\begin_inset CommandInset label
LatexCommand label
name "sec:Triphasic-Multiphasic-Materials"
\end_inset
\end_layout
\begin_layout Standard
Multiphasic materials represent an extension of the biphasic-solute material,
where the mixture may contain a multitude of solutes.
These solutes may be either electrically charged (ionized) or neutral.
Similarly,
the solid matrix may either carry electrical charge (a fixed charge density) or be neutral.
A triphasic material is a special case of a multiphasic material,
having two solutes that carry opposite charges.
Triphasic and multiphasic materials may be used to model porous deformable biological tissues whose solid matrix may be charged and whose interstitial fluid may contain any number of charged or neutral solutes.
When mixture constituents are electrically charged,
the response of the tissue to various loading conditions may encompass a range of mechano-electrochemical phenomena,
including permeation,
diffusion,
osmosis,
streaming potentials and streaming currents.
To better understand multiphasic materials,
the reader is encouraged to review the descriptions of biphasic (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Biphasic-Material"
nolink "false"
\end_inset
) and biphasic-solute materials (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Biphasic-Solute-Material"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Subsection
Governing Equations
\begin_inset CommandInset label
LatexCommand label
name "subsec:MP-governing-equations"
\end_inset
\end_layout
\begin_layout Standard
In multiphasic materials the solvent is assumed to be neutral,
whereas the solid and solutes may carry charge.
The mixture is isothermal and all constituents are considered to be intrinsically incompressible.
Since the viscosity of the fluid constituents (solvent and solutes) is considered negligible relative to the frictional interactions among constituents,
the stress tensor
\begin_inset Formula $\sigma$
\end_inset
for the mixture includes only a contribution from the fluid pressure
\begin_inset Formula $p$
\end_inset
and the stress
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
in the solid,
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=-p\mathbf{I}+\boldsymbol{\sigma}^{e}\,.\label{eq121}
\end{equation}
\end_inset
The mechano-chemical potential of the solvent is given by
\begin_inset Formula
\begin{equation}
\tilde{\mu}^{w}=\mu_{0}^{w}\left(\theta\right)+\frac{1}{\rho_{T}^{w}}\left(p-p_{0}-R\theta\Phi\sum\limits_{\alpha}c^{\alpha}\right)\,,\label{eq122}
\end{equation}
\end_inset
where
\begin_inset Formula $\mu_{0}^{w}\left(\theta\right)$
\end_inset
is the solvent chemical potential in the solvent standard state,
\begin_inset Formula $\theta$
\end_inset
is the absolute temperature,
\begin_inset Formula $\rho_{T}^{w}$
\end_inset
is the true density of the solvent (which is invariant since the solvent is assumed intrinsically incompressible),
\begin_inset Formula $p$
\end_inset
is the fluid pressure,
\begin_inset Formula $p_{0}$
\end_inset
is the corresponding pressure in the standard state,
\begin_inset Formula $R$
\end_inset
is the universal gas constant,
\begin_inset Formula $\Phi$
\end_inset
is the non-dimensional osmotic coefficient,
and
\begin_inset Formula $c^{\alpha}$
\end_inset
is the solution volume-based concentration of solute
\begin_inset Formula $\alpha$
\end_inset
.
The summation is taken over all solutes in the mixture.
The mechano-electrochemical potential of each solute is similarly given by
\begin_inset Formula
\begin{equation}
\tilde{\mu}^{\alpha}=\mu_{0}^{\alpha}\left(\theta\right)+\frac{R\theta}{M^{\alpha}}\left(\frac{z^{\alpha}F_{c}}{R\theta}\left(\psi-\psi_{0}\right)+\ln\frac{\gamma^{\alpha}c^{\alpha}}{\kappa^{\alpha}c_{0}^{\alpha}}\right),\label{eq123}
\end{equation}
\end_inset
where
\begin_inset Formula $M^{\alpha}$
\end_inset
is the molar mass of the solute,
\begin_inset Formula $\gamma^{\alpha}$
\end_inset
is its activity coefficient,
\begin_inset Formula $\kappa^{\alpha}$
\end_inset
is its solubility,
\begin_inset Formula $z^{\alpha}$
\end_inset
is its charge number,
and
\begin_inset Formula $c_{0}^{\alpha}$
\end_inset
is its concentration in the solute standard state;
\begin_inset Formula $F_{c}$
\end_inset
is Faraday's constant,
\begin_inset Formula $\psi$
\end_inset
is the electrical potential of the mixture,
and
\begin_inset Formula $\psi_{0}$
\end_inset
is the corresponding potential in the standard state.
\end_layout
\begin_layout Standard
In these relations,
\begin_inset Formula $\Phi$
\end_inset
and
\begin_inset Formula $\gamma^{\alpha}$
\end_inset
are functions of state that describe the deviation of the mixture from ideal physico-chemical behavior;
\begin_inset Formula $\kappa^{\alpha}$
\end_inset
represents the fraction of the pore volume which may be occupied by solute
\begin_inset Formula $\alpha$
\end_inset
.
The standard state represents an arbitrary set of reference conditions for the physico-chemical state of each constituent.
Therefore,
the values of
\begin_inset Formula $\mu_{0}^{w}\left(\theta\right)$
\end_inset
,
\begin_inset Formula $p_{0}$
\end_inset
,
\begin_inset Formula $\psi_{0}$
\end_inset
,
\begin_inset Formula $\mu_{0}^{\alpha}\left(\theta\right)$
\end_inset
,
and
\begin_inset Formula $c_{0}^{\alpha}$
\end_inset
,
remain invariant over the entire domain of definition of an analysis.
Since
\begin_inset Formula $\kappa^{\alpha}$
\end_inset
and
\begin_inset Formula $\gamma^{\alpha}$
\end_inset
appear together as a ratio,
they may be combined into a single material function,
\begin_inset Formula $\hat{\kappa}^{\alpha}=\kappa^{\alpha}/\gamma^{\alpha}$
\end_inset
,
called the effective solubility.
\end_layout
\begin_layout Standard
In multiphasic mixtures,
it is also assumed that electroneutrality is satisfied at every point in the continuum.
Therefore,
the net electrical charge summed over all constituents must reduce to zero,
and no net charge accumulation may occur at any time.
Denoting the fixed charge density of the solid by
\begin_inset Formula $c^{F}$
\end_inset
(moles of equivalent charge per solution volume),
and recognizing that the solvent is always considered neutral,
the electroneutrality condition may be written as
\begin_inset Formula
\begin{equation}
c^{F}+\sum\limits_{\alpha}z^{\alpha}c^{\alpha}=0\,.\label{eq124}
\end{equation}
\end_inset
This condition represents a constraint on a mixture of charged constituents.
If none of the constituents are charged (
\begin_inset Formula $c^{F}=0$
\end_inset
and
\begin_inset Formula $z^{\alpha}=0$
\end_inset
for all
\begin_inset Formula $\alpha)$
\end_inset
,
the constraint disappears.
\end_layout
\begin_layout Standard
Each constituent of the mixture must satisfy the axiom of mass balance.
In the absence of chemical reactions involving constituent
\begin_inset Formula $\alpha$
\end_inset
,
its mass balance equation is
\begin_inset Formula
\begin{equation}
\frac{\partial\rho^{\alpha}}{\partial t}+\divg\left(\rho^{\alpha}\mathbf{v}^{\alpha}\right)=0\,,\label{eq125}
\end{equation}
\end_inset
where
\begin_inset Formula $\rho^{\alpha}$
\end_inset
is the apparent density and
\begin_inset Formula $\mathbf{v}^{\alpha}$
\end_inset
is the velocity of that constituent.
For solutes,
the apparent density is related to the concentration according to
\begin_inset Formula $\rho^{\alpha}=\left(1-\varphi^{s}\right)M^{\alpha}c^{\alpha}$
\end_inset
,
where
\begin_inset Formula $\varphi^{s}$
\end_inset
is the volume fraction of the solid.
When the solute volume fractions are negligible,
it follows that
\begin_inset Formula $1-\varphi^{s}\approx\varphi^{w}$
\end_inset
,
where
\begin_inset Formula $\varphi^{w}$
\end_inset
is the solvent volume fraction.
The molar flux of the solute relative to the solid is given by
\begin_inset Formula $\mathbf{j}^{\alpha}=\varphi^{w}c^{\alpha}\left(\mathbf{v}^{\alpha}-\mathbf{v}^{s}\right)$
\end_inset
,
where
\begin_inset Formula $\mathbf{v}^{\alpha}$
\end_inset
is the solute velocity.
Using these relations,
the mass balance relation for the solute may be rewritten as
\begin_inset Formula
\begin{equation}
\frac{1}{J}\frac{D^{s}}{Dt}\left(J\varphi^{w}c^{\alpha}\right)+\divg\mathbf{j}^{\alpha}=0\,,\label{eq126}
\end{equation}
\end_inset
where
\begin_inset Formula $D^{s}\left(\cdot\right)/Dt$
\end_inset
represents the material time derivative in the spatial frame,
following the solid;
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
,
where
\begin_inset Formula $\mathbf{F}$
\end_inset
is the deformation gradient of the solid.
This form of the mass balance for the solute is convenient for a finite element formulation where the mesh is defined on the solid matrix.
\end_layout
\begin_layout Standard
The volume flux of solvent relative to the solid is given by
\begin_inset Formula $\mathbf{w}=\varphi^{w}\left(\mathbf{v}^{w}-\mathbf{v}^{s}\right)$
\end_inset
,
where
\begin_inset Formula $\mathbf{v}^{w}$
\end_inset
is the solvent velocity.
When solute volume fractions are negligible,
the mass balance equation for the mixture reduces to
\begin_inset Formula
\begin{equation}
\divg\left(\mathbf{v}^{s}+\mathbf{w}\right)=0\,.\label{eq126b}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
Finally,
the mass balance for the solid may be reduced to the form
\begin_inset Formula $D^{s}\left(J\varphi^{s}\right)/Dt=0$
\end_inset
,
which may be integrated to produce the algebraic relation
\begin_inset Formula $\varphi^{s}=\varphi_{r}^{s}/J$
\end_inset
,
where
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
is the solid volume fraction in the stress-free reference state of the solid.
\end_layout
\begin_layout Standard
Differentiating the electroneutrality condition in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq124"
nolink "false"
\end_inset
using the material time derivative following the solid,
and substituting the mass balance relations into the resulting expressions,
produces a constraint on the solute fluxes:
\begin_inset Formula
\begin{equation}
\divg\sum\limits_{\alpha\ne s,w}z^{\alpha}\mathbf{j}^{\alpha}=0\,.\label{eq127}
\end{equation}
\end_inset
Recognizing that
\begin_inset Formula $\mathbf{I}_{e}=F_{c}\sum\nolimits_{\alpha\ne s,w}z^{\alpha}\mathbf{j}^{\alpha}$
\end_inset
is the current density in the mixture,
with
\begin_inset Formula $F_{c}$
\end_inset
representing Faraday's constant,
the relation of
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq127"
nolink "false"
\end_inset
reduces to one of the Maxwell's equation,
\begin_inset Formula $\divg\mathbf{I}_{e}=0$
\end_inset
,
in the special case when there can be no charge accumulation (electroneutrality).
\end_layout
\begin_layout Standard
As described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:BS-continuous-variables"
nolink "false"
\end_inset
,
the fluid pressure
\begin_inset Formula $p$
\end_inset
and solute concentrations
\begin_inset Formula $c^{\alpha}$
\end_inset
are not continuous across boundaries of a mixture,
whereas
\begin_inset Formula $\tilde{\mu}^{w}$
\end_inset
and
\begin_inset Formula $\tilde{\mu}^{\alpha}$
\end_inset
's for the solutes do satisfy continuity.
Therefore,
in a finite element implementation,
the following continuous variables are used as nodal degrees of freedom:
\begin_inset Formula
\begin{equation}
\tilde{p}=p-R\theta\Phi\sum\limits_{\alpha\ne s,w}c^{\alpha}\,,\label{eq128}
\end{equation}
\end_inset
which represents the effective fluid pressure,
and
\begin_inset Formula
\begin{equation}
\tilde{c}^{\alpha}=c^{\alpha}/\tilde{\kappa}^{\alpha}\,,\label{eq129}
\end{equation}
\end_inset
which represents the effective solute concentration.
In the last expression,
\begin_inset Formula $\tilde{\kappa}^{\alpha}$
\end_inset
is the partition coefficient of the solute,
which is related to the effective solubility and electric potential according to
\begin_inset Formula
\begin{equation}
\tilde{\kappa}^{\alpha}=\hat{\kappa}^{\alpha}\exp\left(-\frac{z^{\alpha}F_{c}\psi}{R\theta}\right)\,.\label{eq130}
\end{equation}
\end_inset
Physically,
since
\begin_inset Formula $R\theta\,\Phi\sum\nolimits_{\alpha\ne s,w}c^{\alpha}$
\end_inset
is the osmotic (chemical) contribution to the fluid pressure,
\begin_inset Formula $\tilde{p}$
\end_inset
may be interpreted as that part of the total (mechano-chemical) fluid pressure which does not result from osmotic effects;
thus,
it is the mechanical contribution to
\begin_inset Formula $p$
\end_inset
.
Similarly,
the effective solute concentration
\begin_inset Formula $\tilde{c}^{\alpha}$
\end_inset
represents the true contribution of the molar solute content to its electrochemical potential.
\end_layout
\begin_layout Standard
When using these variables instead of mechano-electrochemical potentials,
the momentum equations for the solvent and solutes may be inverted to produce the following flux relations:
\begin_inset Formula
\begin{equation}
\mathbf{w}=-\tilde{\mathbf{k}}\cdot\left(\mbox{grad}\tilde{p}+R\theta\sum\limits_{\beta\ne s,w}\frac{\tilde{\kappa}^{\beta}}{d_{0}^{\beta}}\mathbf{d}^{\beta}\cdot\mbox{grad}\tilde{c}^{\beta}\right)\,,\label{eq131}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\mathbf{j}^{\alpha}=\tilde{\kappa}^{\alpha}\mathbf{d}^{\alpha}\cdot\left(-\varphi^{w}\mbox{grad}\tilde{c}^{\alpha}+\frac{\tilde{c}^{\alpha}}{d_{0}^{\alpha}}\mathbf{w}\right)\,,\label{eq132}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\tilde{\mathbf{k}}=\left[\mathbf{k}^{-1}+\frac{R\theta}{\varphi^{w}}\sum\limits_{\alpha\ne s,w}\frac{c^{\alpha}}{d_{0}^{\alpha}}\left(\mathbf{I}-\frac{\mathbf{d}^{\alpha}}{d_{0}^{\alpha}}\right)\right]^{-1}\label{eq133}
\end{equation}
\end_inset
is the effective hydraulic permeability of the solution (solvent
\begin_inset Formula $+$
\end_inset
solutes) in the mixture.
The momentum equation for the mixture is
\begin_inset Formula
\begin{equation}
\divg\boldsymbol{\sigma}=\mathbf{0}\,.\label{eq134}
\end{equation}
\end_inset
\end_layout
\begin_layout Section
Constrained Reactive Mixture of Solids
\begin_inset CommandInset label
LatexCommand label
name "sec:Mixture-of-Solids"
\end_inset
\end_layout
\begin_layout Standard
A solid material may consist of a heterogeneous mixture of various solid constituents that are constrained to move together.
In this section we describe fundamental considerations for such constrained mixtures.
\end_layout
\begin_layout Subsection
Mixture Kinematics
\begin_inset CommandInset label
LatexCommand label
name "subsec:Mixture-Kinematics"
\end_inset
\end_layout
\begin_layout Standard
Consider a constrained mixture of multiple solid constituents
\begin_inset Formula $\sigma$
\end_inset
.
The motion of each constituent is given by
\begin_inset Formula $\boldsymbol{\chi}^{\sigma}\left(\mathbf{X}^{\sigma},t\right)$
\end_inset
,
where
\begin_inset Formula $\mathbf{X}^{\sigma}$
\end_inset
denotes a material point in the reference configuration of that constituent.
At the current time
\begin_inset Formula $t$
\end_inset
,
various constituents
\begin_inset Formula $\sigma$
\end_inset
which occupy an elemental region with a spatial position
\begin_inset Formula $\mathbf{x}$
\end_inset
may have originated from distinct referential positions
\begin_inset Formula $\mathbf{X}^{\sigma}$
\end_inset
.
We often label a convenient constituent as the
\shape italic
master constituent
\shape default
\begin_inset Formula $s$
\end_inset
(e.g.,
the oldest constituent in a reactive mixture with evolving composition) and call the reference configuration
\begin_inset Formula $\mathbf{X}^{s}$
\end_inset
the
\shape italic
master reference configuration
\shape default
.
All the referential mass densities and mass density supplies (see below) are evaluated relative to the master reference configuration
\begin_inset Formula $\mathbf{X}^{s}$
\end_inset
.
The kinematics of each constituent
\begin_inset Formula $\sigma$
\end_inset
may be related to the kinematics of the master constituent
\begin_inset Formula $s$
\end_inset
through
\begin_inset Formula
\begin{equation}
\mathbf{x}=\boldsymbol{\chi}^{s}\left(\mathbf{X}^{s},t\right)=\boldsymbol{\chi}^{\sigma}\left(\mathbf{X}^{\sigma},t\right)\,.\label{eq:general-mixture-kinematics}
\end{equation}
\end_inset
Taking the material time derivative of this relation in the material frame and recognizing that this relation must hold for all
\begin_inset Formula $t$
\end_inset
in the case of a constrained mixture establishes that all constituents share the same velocity
\begin_inset Formula $\mathbf{v}^{\sigma}=\mathbf{v}^{s}$
\end_inset
.
However,
as detailed previously
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10,Nims17"
literal "false"
\end_inset
,
constituents may have distinct deformation gradients
\begin_inset Formula $\mathbf{F}^{\sigma}=\partial\boldsymbol{\chi}^{\sigma}/\partial\mathbf{X}^{\sigma}$
\end_inset
.
When a reaction converts a reactant
\begin_inset Formula $\sigma=a$
\end_inset
into a product
\begin_inset Formula $\sigma=b$
\end_inset
,
these constituents may have distinct reference configurations.
The deformation gradient of the master constituent
\begin_inset Formula $\mathbf{F}^{s}$
\end_inset
,
which also serves as the total deformation gradient,
may be related to the
\shape italic
relative deformation gradient
\shape default
\begin_inset Formula $\mathbf{F}^{\sigma}$
\end_inset
of constituent
\begin_inset Formula $\sigma$
\end_inset
by applying the chain rule to eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-mixture-kinematics"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
producing
\begin_inset Formula
\begin{equation}
\mathbf{F}^{s}\left(\mathbf{X}^{s},t\right)=\frac{\partial\boldsymbol{\chi}^{s}\left(\mathbf{X}^{s},t\right)}{\partial\mathbf{X}^{\sigma}}\cdot\frac{\partial\mathbf{X}^{\sigma}\left(\mathbf{X}^{s}\right)}{\partial\mathbf{X}^{s}}=\mathbf{F}^{\sigma}\left(\mathbf{X}^{s},t\right)\cdot\mathbf{F}^{\sigma s}\left(\mathbf{X}^{s}\right)\,.\label{eq:general-total-def-grad}
\end{equation}
\end_inset
In this expression,
\begin_inset Formula $\mathbf{F}^{\sigma s}\left(\mathbf{X}^{s}\right)$
\end_inset
is the deformation gradient of
\begin_inset Formula $\sigma$
\end_inset
relative to
\begin_inset Formula $s$
\end_inset
,
which must be
\emph on
postulated by constitutive assumption
\emph default
.
The relationship between
\begin_inset Formula $\mathbf{X}^{\sigma}$
\end_inset
and
\begin_inset Formula $\mathbf{X}^{s}$
\end_inset
is time-invariant;
consequently,
\begin_inset Formula $\mathbf{F}^{\sigma s}$
\end_inset
is a time-invariant spatial mapping.
It follows that only one deformation gradient represents an independent state variable in a constrained mixture framework,
whereas all others are related to it via eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-total-def-grad"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
;
any of the
\begin_inset Formula $\mathbf{F}^{\sigma}$
\end_inset
's may be selected,
based on convenience.
In eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-total-def-grad"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
the spatio-temporal arguments have been written explicitly for clarity.
These dependencies are implied in the forthcoming sections and henceforth those arguments may be selectively suppressed.
Taking the determinant of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-total-def-grad"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
produces a relation between the volume ratios
\begin_inset Formula $J^{\sigma}=\det\mathbf{F}^{\sigma}$
\end_inset
and
\begin_inset Formula $J^{s}=\det\mathbf{F}^{s}$
\end_inset
,
\begin_inset Formula
\begin{equation}
J^{s}=J^{\sigma}J^{\sigma s}\,,\label{eq:general-jacobian-relation}
\end{equation}
\end_inset
where
\begin_inset Formula $J^{\sigma s}=\det\mathbf{F}^{\sigma s}$
\end_inset
.
\end_layout
\begin_layout Subsection
Mixture Composition
\begin_inset CommandInset label
LatexCommand label
name "subsec:Mixture-Composition"
\end_inset
\end_layout
\begin_layout Standard
Each constituent
\begin_inset Formula $\sigma$
\end_inset
has an
\shape italic
apparent mass density
\shape default
\begin_inset Formula $\rho^{\sigma}$
\end_inset
which may evolve due to deformation,
or due to reactive processes which alter the mixture composition.
Following
\begin_inset CommandInset citation
LatexCommand citep
key "Bowen69,Ateshian07b"
literal "false"
\end_inset
,
we define the
\shape italic
referential apparent mass density
\shape default
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
of each constituent as
\begin_inset Formula
\begin{equation}
\rho_{r}^{\sigma}=J^{s}\rho^{\sigma}\,.\label{eq:general-referential-mass-density}
\end{equation}
\end_inset
Equation
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-referential-mass-density"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
expresses the mass of constituent
\begin_inset Formula $\sigma$
\end_inset
per referential volume of the master constituent
\begin_inset Formula $s$
\end_inset
;
thus
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
may only evolve if the mass content changes via reactions,
making it a suitable state variable for tracking composition in a reactive framework.
The axiom of mass balance for each constituent
\begin_inset Formula $\sigma$
\end_inset
may be written as
\begin_inset Formula
\begin{equation}
\dot{\rho}_{r}^{\sigma}=\hat{\rho}_{r}^{\sigma}\,,\label{eq:mass-balance-alpha-1}
\end{equation}
\end_inset
where the dot operator represents the material time derivative and
\begin_inset Formula $\hat{\rho}_{r}^{\sigma}$
\end_inset
is the
\shape italic
referential mass supply density
\shape default
for constituent
\begin_inset Formula $\sigma$
\end_inset
,
representing the rate at which mass (per referential volume) is added to
\begin_inset Formula $\sigma$
\end_inset
due to reactions with all other mixture constituents
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10,Nims17"
literal "false"
\end_inset
.
A constitutive relation must be provided for
\begin_inset Formula $\hat{\rho}_{r}^{\sigma}$
\end_inset
for various types of reactions.
The mixture referential mass density
\begin_inset Formula $\rho_{r}$
\end_inset
is given by
\begin_inset Formula
\begin{equation}
\rho_{r}=\sum_{\sigma}\rho_{r}^{\sigma}\,.\label{eq:general-mass-balance}
\end{equation}
\end_inset
This summation is carried out over all constituents.
When a constrained mixture of solid constituents represents a closed system,
\begin_inset Formula $\rho_{r}$
\end_inset
remains constant over time.
Taking the material time derivative of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-mass-balance"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
and using eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:mass-balance-alpha-1"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
shows that the referential mass density supplies must satisfy
\begin_inset Formula
\begin{equation}
\sum_{\sigma}\hat{\rho}_{r}^{\sigma}=0\,.\label{eq:mass-balance-constraint}
\end{equation}
\end_inset
However,
if a constrained mixture of solid constituents represents an open system (i.e.,
if fluid constituents are present in the mixture,
either explicitly or implicitly),
then
\begin_inset Formula $\rho_{r}$
\end_inset
is no longer necessarily constant,
since there may be mass exchange between fluid and solid constituents.
\end_layout
\begin_layout Subsection
Mixture Free Energy and Stress
\begin_inset CommandInset label
LatexCommand label
name "subsec:Mixture-Free-Energy"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
referential free energy density
\shape default
of the mixture is obtained as
\begin_inset Formula
\begin{equation}
\Psi_{r}=\rho_{r}\psi=\sum_{\sigma}\rho_{r}^{\sigma}\psi^{\sigma}\,,\label{eq:general-free-energy}
\end{equation}
\end_inset
where
\begin_inset Formula $\psi^{\sigma}$
\end_inset
is the
\shape italic
specific free energy
\shape default
of constituent
\begin_inset Formula $\sigma$
\end_inset
and
\begin_inset Formula $\psi$
\end_inset
is the specific free energy of the mixture.
An important function of state which arises later in our treatment is the
\shape italic
chemical potential
\shape default
of constituent
\begin_inset Formula $\sigma$
\end_inset
,
given by
\begin_inset Formula
\begin{equation}
\mu^{\sigma}=\frac{\partial\Psi_{r}}{\partial\rho_{r}^{\sigma}}\,.\label{eq:general-chemical-potential}
\end{equation}
\end_inset
The mixture Cauchy stress is given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\frac{1}{J^{s}}\frac{\partial\Psi_{r}}{\partial\mathbf{F}^{s}}\cdot\left(\mathbf{F}^{s}\right)^{T}=\frac{2}{J^{s}}\mathbf{F}^{s}\cdot\frac{\partial\Psi_{r}}{\partial\mathbf{C}^{s}}\cdot\left(\mathbf{F}^{s}\right)^{T}\,,\label{eq:general-mixture-stress}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{C}^{s}=\mathbf{F}^{s}\cdot\left(\mathbf{F}^{s}\right)^{T}$
\end_inset
is the right Cauchy-Green tensor.
The spatial elasticity tensor may be evaluated from
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{C}}=\frac{4}{J^{s}}\left(\mathbf{F}^{s}\oslash\mathbf{F}^{s}\right):\frac{\partial^{2}\Psi_{r}}{\partial\mathbf{C}^{s}\partial\mathbf{C}^{s}}:\left(\left(\mathbf{F}^{s}\right)^{T}\oslash\left(\mathbf{F}^{s}\right)^{T}\right)\,.\label{eq:general-mixture-elasticity}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
Closed System of Solid Constituents
\end_layout
\begin_layout Standard
In reactive frameworks where
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
evolves according to eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:mass-balance-alpha-1"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
and where
\begin_inset Formula $\rho_{r}$
\end_inset
remains constant due to the fact that the solid mixture represents a closed system,
it may be convenient to define the mass fraction
\begin_inset Formula
\begin{equation}
w^{\sigma}=\frac{\rho_{r}^{\sigma}}{\rho_{r}}\,,\label{eq:mass-fraction}
\end{equation}
\end_inset
in which case we may rewrite eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-free-energy"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
as
\begin_inset Formula $\Psi_{r}=\sum_{\sigma}w^{\sigma}\Psi_{r}^{\sigma}$
\end_inset
where
\begin_inset Formula $\Psi_{r}^{\sigma}\equiv\rho_{r}\psi^{\sigma}$
\end_inset
is the referential strain energy density of solid
\begin_inset Formula $\sigma$
\end_inset
under the assumption that it is the sole mixture constituent,
normalized by the referential volume of the master constituent
\begin_inset Formula $s$
\end_inset
.
Based on eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-mass-balance"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
the mass fractions satisfy
\begin_inset Formula $\sum_{\sigma}w^{\sigma}=1$
\end_inset
.
In this case,
when
\begin_inset Formula $\mathbf{X}^{\sigma}\ne\mathbf{X}^{s}$
\end_inset
and
\begin_inset Formula $\psi^{\sigma}$
\end_inset
is most conveniently expressed as a function of
\begin_inset Formula $\mathbf{F}^{\sigma}$
\end_inset
,
we may use eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-total-def-grad"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
to evaluate
\begin_inset Formula $\partial\mathbf{F}^{s}/\partial\mathbf{F}^{\sigma}=\mathbf{I}\oslash\left(\mathbf{F}^{\sigma s}\right)^{-T}$
\end_inset
and calculate the mixture stress using the alternative form
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\frac{1}{J^{s}}\sum_{\sigma}w^{\sigma}\frac{\partial\Psi_{r}^{\sigma}}{\partial\mathbf{F}^{\sigma}}\cdot\left(\mathbf{F}^{\sigma}\right)^{T}\,.\label{eq:general-mixture-stress-redux}
\end{equation}
\end_inset
This expression shows that the mixture stress may evolve not only due to temporal changes in the state of strain but also due to reactive changes in the mass fractions
\begin_inset Formula $w^{\sigma}$
\end_inset
.
\end_layout
\begin_layout Standard
In FEBio the referential strain energy density for any solid mixture constituent
\begin_inset Formula $\sigma$
\end_inset
is evaluated from the same library of constitutive models used in single-constituent solids.
In this library the calculation of the referential strain energy density is based on the assumption that the reference configuration corresponds to the configuration when the deformation gradient passed to those functions is equal to the identity tensor.
Thus,
passing
\begin_inset Formula $\mathbf{F}^{s}$
\end_inset
to those functions returns the correct
\begin_inset Formula $\Psi_{r}^{\sigma}$
\end_inset
.
However,
when passing
\begin_inset Formula $\mathbf{F}^{\sigma}$
\end_inset
as an argument to those functions,
the referential volume is based on the configuration
\begin_inset Formula $\mathbf{X}^{\sigma}$
\end_inset
.
Let the referential free energy density returned by FEBio for an argument
\begin_inset Formula $\mathbf{F}^{\sigma}$
\end_inset
be denoted by
\begin_inset Formula $\Psi_{0}^{\sigma}$
\end_inset
.
We may similarly denote the corresponding Cauchy stress and spatial elasticity tensors by
\begin_inset Formula $\boldsymbol{\sigma}_{0}^{\sigma}$
\end_inset
and
\begin_inset Formula $\boldsymbol{\mathcal{C}}_{0}^{\sigma}$
\end_inset
.
Here,
the subscript
\begin_inset Formula $0$
\end_inset
has two meanings:
First it emphasizes that the corresponding function is evaluated using
\begin_inset Formula $\mathbf{F}^{\sigma}$
\end_inset
for the mixture constituent
\begin_inset Formula $\sigma$
\end_inset
;
second it emphasizes that the calculation returns the corresponding measure under the assumption that the mixture consists entirely of that constituent,
so that its multiplication by the scale factor
\begin_inset Formula $w^{\sigma}$
\end_inset
returns the actual contribution of that measure to the entire mixture.
Based on eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-jacobian-relation"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
we find that
\begin_inset Formula $\Psi_{r}^{\sigma}=J^{\sigma s}\Psi_{0}^{\sigma}$
\end_inset
so that the mixture free energy density may be evaluated from
\begin_inset Formula
\begin{equation}
\Psi_{r}=\sum_{\sigma}w^{\sigma}J^{\sigma s}\Psi_{0}^{\sigma}\left(\mathbf{F}^{\sigma}\right)\,,\label{eq:febio-mixture-sed}
\end{equation}
\end_inset
whereas the mixture Cauchy stress and spatial elasticity are given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\sum_{\sigma}w^{\sigma}\boldsymbol{\sigma}_{0}^{\sigma}\,,\quad\boldsymbol{\mathcal{C}}=\sum_{\sigma}w^{\sigma}\boldsymbol{\mathcal{C}}_{0}^{\sigma}\,,\label{eq:febio-mixture-stress}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}_{0}^{\sigma}=\frac{1}{J^{\sigma}}\frac{\partial\Psi_{0}^{\sigma}}{\partial\mathbf{F}^{\sigma}}\cdot\left(\mathbf{F}^{\sigma}\right)^{T}=\frac{1}{J^{s}}\frac{\partial\Psi_{r}^{\sigma}}{\partial\mathbf{F}^{\sigma}}\cdot\left(\mathbf{F}^{\sigma}\right)^{T}\label{eq:febio-stress-function}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{C}}_{0}^{\sigma}=\frac{4}{J^{\sigma}}\left(\mathbf{F}^{\sigma}\oslash\mathbf{F}^{\sigma}\right):\frac{\partial^{2}\Psi_{0}^{\sigma}}{\partial\mathbf{C}^{\sigma}\partial\mathbf{C}^{\sigma}}:\left(\left(\mathbf{F}^{\sigma}\right)^{T}\oslash\left(\mathbf{F}^{\sigma}\right)^{T}\right)\,.\label{eq:febio-elasticity-function}
\end{equation}
\end_inset
These relations show that the Cauchy stress and spatial elasticity tensor of constituent
\begin_inset Formula $\sigma$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:febio-mixture-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
may be evaluated using existing FEBio functions without needing to adjust for the choice of reference configuration
\begin_inset Formula $\mathbf{X}^{s}$
\end_inset
or
\begin_inset Formula $\mathbf{X}^{\sigma}$
\end_inset
,
as evidenced by eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:febio-stress-function"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
in the case of the stress.
However the referential strain energy density needs to be properly scaled by
\begin_inset Formula $J^{\sigma s}$
\end_inset
as shown in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:febio-mixture-sed"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
The calculation of the 2nd Piola-Kirchhoff stress
\begin_inset Formula $\mathbf{S}$
\end_inset
for each generation
\begin_inset Formula $\sigma$
\end_inset
is more elaborate.
When using the master reference configuration
\begin_inset Formula $\mathbf{X}^{s}$
\end_inset
,
this stress is given by
\begin_inset Formula
\[
\mathbf{S}^{\sigma}\left(\mathbf{F}^{s}\right)=2\frac{\partial\Psi_{r}^{\sigma}\left(\mathbf{F}^{s}\right)}{\partial\mathbf{C}^{s}}\,.
\]
\end_inset
When using the reference configuration
\begin_inset Formula $\mathbf{X}^{\sigma}$
\end_inset
,
the stress is evaluated from a similar relation
\begin_inset Formula
\[
\mathbf{S}_{0}^{\sigma}\left(\mathbf{F}^{\sigma}\right)=2\frac{\partial\Psi_{0}^{\sigma}\left(\mathbf{F}^{\sigma}\right)}{\partial\mathbf{C}^{\sigma}}\,.
\]
\end_inset
It can be shown that these stresses are related according to
\begin_inset Formula
\[
\mathbf{S}^{\sigma}\left(\mathbf{F}^{s}\right)=J^{\sigma s}\left(\mathbf{F}^{\sigma s}\right)^{-1}\cdot\mathbf{S}_{0}^{\sigma}\left(\mathbf{F}^{\sigma}\right)\cdot\left(\mathbf{F}^{\sigma s}\right)^{-T}\,.
\]
\end_inset
FEBio does not use this calculation for solid mixtures,
as all internal calculations employ the Cauchy stress.
\end_layout
\begin_layout Subsubsection
Open System of Solid Constituents
\end_layout
\begin_layout Standard
When
\begin_inset Formula $\rho_{r}$
\end_inset
as defined in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-mass-balance"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
does not remain constant due to the implicit or explicit presence of fluid constituents,
we may choose to define the mass fraction
\begin_inset Formula $\omega^{\sigma}$
\end_inset
of constituent
\begin_inset Formula $\sigma$
\end_inset
based on the true density
\begin_inset Formula $\rho_{0}^{\sigma}$
\end_inset
of the solid constituent,
\begin_inset Formula
\begin{equation}
\omega^{\sigma}=\frac{\rho_{r}^{\sigma}}{\rho_{0}^{\sigma}}\,,\label{eq:mass-fraction-1}
\end{equation}
\end_inset
In this case,
\begin_inset Formula $\omega^{\sigma}=1$
\end_inset
when the solid mixture consists entirely of constituent
\begin_inset Formula $\sigma$
\end_inset
.
Unlike
\begin_inset Formula $w^{\sigma}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-mass-balance"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
the summation of
\begin_inset Formula $\omega^{\sigma}$
\end_inset
over all
\begin_inset Formula $\sigma$
\end_inset
is meaningless here,
since the denominator in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:mass-fraction-1"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
is not common to all
\begin_inset Formula $\sigma$
\end_inset
.
Nevertheless,
the mixture free energy density in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-free-energy"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
may be rewritten conveniently as
\begin_inset Formula $\Psi_{r}=\sum_{\sigma}\omega^{\sigma}\Psi_{0}^{\sigma}$
\end_inset
where
\begin_inset Formula $\Psi_{0}^{\sigma}\equiv\rho_{0}^{\sigma}\psi^{\sigma}$
\end_inset
represents the free energy density of pure solid
\begin_inset Formula $\sigma$
\end_inset
.
Here again,
\begin_inset Formula $\psi^{\sigma}$
\end_inset
is most conveniently expressed as a function of
\begin_inset Formula $\mathbf{F}^{\sigma}$
\end_inset
,
so that eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-total-def-grad"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
may be use to evaluate
\begin_inset Formula $\partial\mathbf{F}^{s}/\partial\mathbf{F}^{\sigma}=\mathbf{I}\oslash\left(\mathbf{F}^{\sigma s}\right)^{-T}$
\end_inset
and calculate the mixture stress using the alternative form
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\frac{1}{J^{s}}\sum_{\sigma}\omega^{\sigma}\frac{\partial\Psi_{0}^{\sigma}}{\partial\mathbf{F}^{\sigma}}\cdot\left(\mathbf{F}^{\sigma}\right)^{T}\,.\label{eq:general-mixture-stress-redux-1}
\end{equation}
\end_inset
This expression shows that the mixture stress may evolve not only due to temporal changes in the state of strain but also due to reactive changes in the mass fractions
\begin_inset Formula $\omega^{\sigma}$
\end_inset
.
In this type of open-system formulation it becomes the user's responsibility to ensure that all other
\begin_inset Formula $\omega^{\sigma}$
\end_inset
values reduce to zero when one of the
\begin_inset Formula $\omega^{\sigma}$
\end_inset
reaches unity.
\end_layout
\begin_layout Subsection
Frame Indifference
\begin_inset CommandInset label
LatexCommand label
name "subsec:Frame-Indifference"
\end_inset
\end_layout
\begin_layout Standard
To maintain frame indifference for constrained mixtures we must satisfy
\begin_inset Formula $\boldsymbol{\sigma}\left(\mathbf{Q}\cdot\mathbf{F}^{s}\right)=\mathbf{Q}\cdot\boldsymbol{\sigma}\left(\mathbf{F}^{s}\right)\cdot\mathbf{Q}^{T}$
\end_inset
,
where
\begin_inset Formula $\mathbf{Q}$
\end_inset
is an orthogonal transformation that maintains the symmetry group of
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian22a"
literal "false"
\end_inset
.
Here,
we abbreviated the list of state variables for
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
to just
\begin_inset Formula $\mathbf{F}^{s}$
\end_inset
,
for notational simplicity.
This frame indifference is automatically satisfied for
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
based on the hyperelasticity relation of
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-mixture-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
and the invariance of
\begin_inset Formula $\psi$
\end_inset
to
\begin_inset Formula $\mathbf{Q}$
\end_inset
.
By the same argument,
\begin_inset Formula $\boldsymbol{\sigma}_{0}^{\sigma}$
\end_inset
as given in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:febio-stress-function"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
satisfies
\begin_inset Formula $\boldsymbol{\sigma}_{0}^{\sigma}\left(\mathbf{Q}\cdot\mathbf{F}^{\sigma}\right)=\mathbf{Q}\cdot\boldsymbol{\sigma}_{0}^{\sigma}\left(\mathbf{F}^{\sigma}\right)\cdot\mathbf{Q}^{T}$
\end_inset
for transformations that maintain the symmetry group of
\begin_inset Formula $\psi^{\sigma}$
\end_inset
.
Since the symmetry transformations
\begin_inset Formula $\mathbf{Q}$
\end_inset
of
\begin_inset Formula $\psi$
\end_inset
must also belong to the symmetry groups of all
\begin_inset Formula $\psi^{\sigma}$
\end_inset
,
we need to ensure that
\begin_inset Formula $\mathbf{F}^{s*}=\mathbf{Q}\cdot\mathbf{F}^{s}$
\end_inset
and
\begin_inset Formula $\mathbf{F}^{\sigma*}=\mathbf{Q}\cdot\mathbf{F}^{\sigma}$
\end_inset
also satisfy the kinematic constraint of
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:general-total-def-grad"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for those transformations
\begin_inset Formula $\mathbf{Q}$
\end_inset
,
namely
\begin_inset Formula $\mathbf{F}^{s*}=\mathbf{F}^{\sigma*}\cdot\mathbf{F}^{\sigma s}$
\end_inset
.
This can be achieved if and only if
\begin_inset Formula $\mathbf{F}^{\sigma s}$
\end_inset
is invariant under a change of frame.
It follows from this argument that the right Cauchy-Green tensors are invariant,
\begin_inset Formula $\mathbf{C}^{s*}=\left(\mathbf{F}^{s*}\right)^{T}\cdot\mathbf{F}^{s*}=\left(\mathbf{F}^{s}\right)^{T}\cdot\mathbf{F}^{s}=\mathbf{C}^{s}$
\end_inset
and similarly
\begin_inset Formula $\mathbf{C}^{\sigma*}=\mathbf{C}^{\sigma}$
\end_inset
,
while also satisfying
\begin_inset Formula $\mathbf{C}^{s*}=\mathbf{C}^{s}=\left(\mathbf{F}^{\sigma s}\right)^{T}\cdot\mathbf{C}^{\sigma}\cdot\mathbf{F}^{\sigma s}$
\end_inset
.
Right stretch tensors
\begin_inset Formula $\mathbf{U}^{s}$
\end_inset
and
\begin_inset Formula $\mathbf{U}^{\sigma}$
\end_inset
are also invariant.
\end_layout
\begin_layout Subsection
Simple Solid Mixtures
\begin_inset CommandInset label
LatexCommand label
name "subsec:Simple-Solid-Mixtures"
\end_inset
\end_layout
\begin_layout Standard
In the simplest type of non-reactive constrained mixtures of solids all constituents
\begin_inset Formula $\sigma$
\end_inset
share the same reference configuration
\begin_inset Formula $\mathbf{X}^{\sigma}=\mathbf{X}^{s}$
\end_inset
,
in which case
\begin_inset Formula $\mathbf{F}^{\sigma}=\mathbf{F}^{s}$
\end_inset
and
\begin_inset Formula $J^{\sigma s}=1$
\end_inset
.
For this type of mixture where
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
does not evolve,
it is convenient to set
\begin_inset Formula $w^{\sigma}=1$
\end_inset
for all
\begin_inset Formula $\sigma$
\end_inset
and scale the material properties of
\begin_inset Formula $\Psi_{r}^{\sigma}$
\end_inset
to properly reflect the contribution of each constituent
\begin_inset Formula $\sigma$
\end_inset
to the mixture.
Thus,
the relation of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:febio-mixture-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
reduces to
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\sum_{\sigma}\boldsymbol{\sigma}_{0}^{\sigma}\,.\label{eq:simple-mixture-stress}
\end{equation}
\end_inset
This type of non-reactive mixture of solids is represented in FEBio using the material
\begin_inset Quotes eld
\end_inset
\emph on
solid mixture
\emph default
\begin_inset Quotes erd
\end_inset
.
\end_layout
\begin_layout Standard
When each constituent of a solid mixture is modeled using an uncoupled formulation to enforce nearly isochoric responses,
the strain energy density of this type of mixture is given by
\begin_inset Formula
\begin{equation}
\Psi_{r}=U\left(J\right)+\sum\limits_{\sigma}\tilde{\Psi}_{r}^{\sigma}\left(\mathbf{\tilde{F}}^{s},\rho_{r}^{\sigma}\right)\,,\label{eq140}
\end{equation}
\end_inset
where
\begin_inset Formula $U\left(J\right)$
\end_inset
is the volumetric energy component,
\begin_inset Formula $\tilde{\Psi}_{r}=\sum\nolimits_{\sigma}\tilde{\Psi}_{r}^{\sigma}$
\end_inset
is the distortional energy component,
and
\begin_inset Formula $\mathbf{\tilde{F}}^{s}$
\end_inset
is the distortional part of the deformation gradient,
as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Nearly-Incompressible-Hyperelast"
nolink "false"
\end_inset
.
This type of non-reactive mixture of uncoupled solids is represented in FEBio using the material
\begin_inset Quotes eld
\end_inset
\emph on
uncoupled solid mixture
\emph default
\begin_inset Quotes erd
\end_inset
.
\end_layout
\begin_layout Subsection
Multigenerational Interstitial Growth
\begin_inset CommandInset label
LatexCommand label
name "subsec:Multigen-Interstitial-Growth"
\end_inset
\end_layout
\begin_layout Standard
Multigenerational interstitial growth mechanics may be modeled using a reactive mixture of constrained solids as described in
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10a"
literal "false"
\end_inset
.
In this framework it is assumed that a porous solid matrix may gain mass via interstitial growth,
such that the porosity of the solid decreases with increasing solid mass content.
The history of growth is discretized temporally into generations
\begin_inset Formula $\sigma$
\end_inset
such that the mass added in the time interval
\begin_inset Formula $t^{\sigma}\le t0$
\end_inset
is the stretch ratio.
A value greater than unity causes swelling whereas a value less than unity causes contraction;
\begin_inset Formula $\lambda^{\sigma s}=1$
\end_inset
produces
\begin_inset Formula $\mathbf{F}^{\sigma s}=\mathbf{I}$
\end_inset
,
which recovers the simple solid mixture described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Simple-Solid-Mixtures"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
In FEBio a load curve may be associated with
\begin_inset Formula $\lambda^{\sigma s}$
\end_inset
to ramp up the prescribed deposition stretch.
\end_layout
\begin_layout Standard
For orthotropic stretching we define mutually orthogonal symmetry planes with unit normals
\begin_inset Formula $\mathbf{a}_{i}$
\end_inset
(
\begin_inset Formula $i=1,2,3$
\end_inset
and
\begin_inset Formula $\mathbf{a}_{i}\cdot\mathbf{a}_{j}=\delta_{ij}$
\end_inset
).
Then,
\begin_inset Formula
\begin{equation}
\mathbf{F}^{\sigma s}=\sum_{i=1}^{3}\lambda_{i}^{\sigma s}\mathbf{a}_{i}\otimes\mathbf{a}_{i}\,,\label{eq:prescribed-defgrad-orthotropic}
\end{equation}
\end_inset
where
\begin_inset Formula $\lambda_{i}^{\sigma s}$
\end_inset
is the stretch ratio for the prescribed stretch along
\begin_inset Formula $\mathbf{a}_{i}$
\end_inset
;
in general,
\begin_inset Formula $\lambda_{1}^{\sigma s}\ne\lambda_{2}^{\sigma s}\ne\lambda_{3}^{\sigma s}$
\end_inset
,
though this model can be specialized to transversely isotropic stretch by setting two of these stretch ratios equal to each other.
\end_layout
\begin_layout Standard
At lower symmetries the constitutive model for
\begin_inset Formula $\mathbf{F}^{\sigma s}$
\end_inset
must necessarily combine stretch and rotation.
For monoclinic materials,
deformations may be prescribed along three unit vectors
\begin_inset Formula $\mathbf{a}_{i}$
\end_inset
that satisfy
\begin_inset Formula $\mathbf{a}_{1}\cdot\mathbf{a}_{2}=0$
\end_inset
,
\begin_inset Formula $\mathbf{a}_{1}\cdot\mathbf{a}_{3}=0$
\end_inset
,
and
\begin_inset Formula $\mathbf{a}_{2}\cdot\mathbf{a}_{3}\ne0$
\end_inset
,
such that
\begin_inset Formula $\mathbf{a}_{1}$
\end_inset
defines the single plane of symmetry.
In this case,
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{F}^{\sigma s} & =\lambda_{1}^{\sigma s}\mathbf{a}_{1}\otimes\mathbf{a}_{1}+\frac{\lambda_{2}^{\sigma s}}{1-\alpha_{23}^{2}}\mathbf{a}_{2}\otimes\left(\mathbf{a}_{2}-\alpha_{23}\mathbf{a}_{3}\right)\\
& +\frac{\lambda_{3}^{\sigma s}}{1-\alpha_{23}^{2}}\mathbf{a}_{3}\otimes\left(\mathbf{a}_{3}-\alpha_{23}\mathbf{a}_{2}\right)
\end{aligned}
\,,\label{eq:prescribed-defgrad-monoclinic}
\end{equation}
\end_inset
where
\begin_inset Formula $\lambda_{i}^{\sigma s}$
\end_inset
is the stretch along
\begin_inset Formula $\mathbf{a}_{i}$
\end_inset
and
\begin_inset Formula $\alpha_{23}=\mathbf{a}_{2}\cdot\mathbf{a}_{3}$
\end_inset
.
Under general conditions (i.e.,
when
\begin_inset Formula $\lambda_{1}^{\sigma s}\ne\lambda_{2}^{\sigma s}\ne\lambda_{3}^{\sigma s}$
\end_inset
and
\begin_inset Formula $\alpha_{23}\ne0$
\end_inset
),
the polar decomposition theorem shows that this deformation gradient is not a pure stretch,
as it also involves a rotation.
\end_layout
\begin_layout Standard
The deformation gradient for expansion of a triclinic material may be similarly constructed by finding
\begin_inset Formula $\mathbf{F}^{\sigma s}$
\end_inset
such that
\begin_inset Formula $\mathbf{F}^{\sigma s}\cdot\mathbf{a}_{i}=\lambda_{i}^{\sigma s}\mathbf{a}_{i}$
\end_inset
(no sum) for non-orthogonal and non-collinear unit vectors
\begin_inset Formula $\mathbf{a}_{i}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{F}^{\sigma s} & =\frac{\lambda_{1}^{\sigma s}}{d}\mathbf{a}_{1}\otimes\left(\left(1-\alpha_{23}^{2}\right)\mathbf{a}_{1}-\left(\alpha_{12}-\alpha_{13}\alpha_{23}\right)\mathbf{a}_{2}-\left(\alpha_{13}-\alpha_{12}\alpha_{23}\right)\mathbf{a}_{3}\right)\\
& +\frac{\lambda_{2}^{\sigma s}}{d}\mathbf{a}_{2}\otimes\left(-\left(\alpha_{12}-\alpha_{13}\alpha_{23}\right)\mathbf{a}_{1}+\left(1-\alpha_{13}^{2}\right)\mathbf{a}_{2}-\left(\alpha_{23}-\alpha_{12}\alpha_{13}\right)\mathbf{a}_{3}\right)\\
& +\frac{\lambda_{3}^{\sigma s}}{d}\mathbf{a}_{3}\otimes\left(-\left(\alpha_{13}-\alpha_{12}\alpha_{23}\right)\mathbf{a}_{1}-\left(\alpha_{23}-\alpha_{12}\alpha_{13}\right)\mathbf{a}_{2}+\left(1-\alpha_{12}^{2}\right)\mathbf{a}_{3}\right)
\end{aligned}
\label{eq:prescribed-defgrad-triclinic}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
d=1-\alpha_{12}^{2}-\alpha_{13}^{2}-\alpha_{23}^{2}+2\alpha_{23}\alpha_{13}\alpha_{12}\label{eq:triclinic-defgrad-denominator}
\end{equation}
\end_inset
and
\begin_inset Formula $\alpha_{ij}=\mathbf{a}_{i}\cdot\mathbf{a}_{j}$
\end_inset
is the cosine of the angle between
\begin_inset Formula $\mathbf{a}_{i}$
\end_inset
and
\begin_inset Formula $\mathbf{a}_{j}$
\end_inset
.
All of these constitutive models for
\begin_inset Formula $\mathbf{F}^{\sigma s}$
\end_inset
satisy frame indifference since they depend on material vectors
\begin_inset Formula $\mathbf{a}_{i}$
\end_inset
.
\end_layout
\begin_layout Standard
This type of elastic solid with prescribed pre-stretch is modeled in FEBio using the materials
\begin_inset Quotes eld
\end_inset
\emph on
prestretch elastic
\emph default
\begin_inset Quotes erd
\end_inset
and
\begin_inset Quotes eld
\end_inset
\emph on
prestretch uncoupled elastic
\emph default
\begin_inset Quotes erd
\end_inset
.
In the uncoupled version each solid constituent in the mixture has a deformation gradient
\begin_inset Formula $\mathbf{F}^{\sigma}$
\end_inset
which produces nearly isochoric responses (
\begin_inset Formula $J^{\sigma}=1$
\end_inset
),
whereas no constraint is placed on the volumetric strain of the pre-stretch
\begin_inset Formula $\mathbf{F}^{\sigma s}$
\end_inset
.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Equilibrium Swelling
\begin_inset CommandInset label
LatexCommand label
name "sec:Equilibrium-swelling"
\end_inset
\end_layout
\begin_layout Standard
When the interstitial fluid of a porous medium contains one or more solutes,
an osmotic pressure may be produced in the fluid if the osmolarity of the interstitial fluid is non-uniform,
or if it is different from that of the external bathing solution surrounding the porous medium.
In general,
since the osmolarity of the interstitial fluid may vary over time in transient problems,
the analysis of such swelling effects may be addressed using,
for example,
the biphasic-solute material model described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Biphasic-Solute-Material"
nolink "false"
\end_inset
.
However,
if we are only interested in the steady-state response for such types of materials,
when solvent and solute fluxes have subsided,
the analysis may be simplified considerably.
\end_layout
\begin_layout Standard
The Cauchy stress tensor for a mixture of a porous solid and interstitial fluid is given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=-p\mathbf{I}+\boldsymbol{\sigma}^{e}\,,\label{eq141}
\end{equation}
\end_inset
where
\begin_inset Formula $p$
\end_inset
is he fluid pressure and
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
is the stress in the solid matrix resulting from solid strain.
When steady-state conditions are achieved,
the fluid pressure
\begin_inset Formula $p$
\end_inset
results exclusively from osmotic effects and ambient conditions (i.e.,
it does not depend on the loading history).
Thus,
in analogy to eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq118"
nolink "false"
\end_inset
,
\begin_inset Formula $p=\tilde{p}+R\theta\Phi c$
\end_inset
where
\begin_inset Formula $\tilde{p}$
\end_inset
is the mechanical pressure resulting from ambient conditions and
\begin_inset Formula $R\theta\Phi c$
\end_inset
is the osmotic pressure resulting from the osmolarity
\begin_inset Formula $c$
\end_inset
of the solution.
\end_layout
\begin_layout Standard
The osmotic pressure
\begin_inset Formula $p$
\end_inset
may produce swelling of the solid matrix,
which is opposed by the solid matrix stress.
This becomes more apparent when considering,
for example,
the case of a traction-free body.
The traction is given by
\begin_inset Formula $\mathbf{t}=\boldsymbol{\sigma}\cdot\mathbf{n}$
\end_inset
,
where
\begin_inset Formula $\mathbf{n}$
\end_inset
is the unit outward normal to the boundary.
When
\begin_inset Formula $\mathbf{t}=\mathbf{0}$
\end_inset
,
the relation of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq141"
nolink "false"
\end_inset
produces
\begin_inset Formula $p=\mathbf{n}\cdot\boldsymbol{\sigma}^{e}\cdot\mathbf{n}$
\end_inset
,
clearly showing that the osmotic pressure
\begin_inset Formula $p$
\end_inset
is balanced by the swelling solid matrix.
\end_layout
\begin_layout Standard
The interstitial osmolarity (number of moles of solute per volume of interstitial fluid) may be related to the solute and solid content according to
\begin_inset Formula
\begin{equation}
c=\frac{c_{r}}{J-\varphi_{r}^{s}}\,,\label{eq142}
\end{equation}
\end_inset
where
\begin_inset Formula $c_{r}$
\end_inset
is the number of moles of solute per volume of the mixture in the reference configuration,
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
is the volume fraction of the solid in the reference configuration,
and
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
is the volume ratio of the porous solid matrix.
Neither
\begin_inset Formula $c_{r}$
\end_inset
nor
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
depend on the solid matrix deformation,
thus eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq142"
nolink "false"
\end_inset
provides the explicit dependence of
\begin_inset Formula $c$
\end_inset
on
\begin_inset Formula $J$
\end_inset
.
This relation shows that the osmolarity of the interstitial fluid is dependent on the relative change in volume of the solid matrix with deformation.
Effectively,
under equilibrium swelling conditions,
the term
\begin_inset Formula $-p\mathbf{I}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq141"
nolink "false"
\end_inset
represents an elastic stress and may be treated in this manner when analyzing equilibrium swelling conditions.
\end_layout
\begin_layout Standard
Since
\begin_inset Formula $p$
\end_inset
also depends on the osmotic coefficient,
if we assume that
\begin_inset Formula $\Phi$
\end_inset
depends on the solid strain at most via a dependence on
\begin_inset Formula $J$
\end_inset
,
we may thus state generically that
\begin_inset Formula $p=p\left(J\right)$
\end_inset
under equilibrium swelling.
It follows that the elasticity tensor for
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
is
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{C}}=-\left(p+J\frac{dp}{dJ}\right)\mathbf{I}\otimes\mathbf{I}+2p\mathbf{I}\,\overline{\underline{\otimes}}\,\mathbf{I}+\boldsymbol{\mathcal{C}}^{e}\,,\label{eq143}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\mathcal{C}}^{e}$
\end_inset
is the elasticity tensor of
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
.
\end_layout
\begin_layout Subsection
Perfect Osmometer
\begin_inset CommandInset label
LatexCommand label
name "subsec:Perfect-osmometer"
\end_inset
\end_layout
\begin_layout Standard
Consider a porous medium with an interstitial fluid that consists of a solvent and one or more solutes,
whose boundary is permeable to the solvent but not to the solutes (e.g.,
a biological cell).
Since solutes are trapped within such a medium,
\begin_inset Formula $c_{r}$
\end_inset
is a constant in this type of problem.
Since the boundary is permeable to the solvent,
\begin_inset Formula $\tilde{p}$
\end_inset
must be continuous across the boundary.
Assuming ideal physicochemical conditions,
\begin_inset Formula $\Phi=1$
\end_inset
,
and zero ambient pressure,
this continuity requirement implies that
\begin_inset Formula $p=R\theta\left(c-c^{\ast}\right)$
\end_inset
,
where
\begin_inset Formula $c^{\ast}$
\end_inset
is the osmolarity of the external environment.
Using eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq142"
nolink "false"
\end_inset
,
it follows that
\begin_inset Formula
\begin{equation}
p=R\theta\left(\frac{c_{r}}{J-\varphi_{r}^{s}}-c^{\ast}\right)\,.\label{eq144}
\end{equation}
\end_inset
The reference configuration (the stress-free configuration of the solid) is achieved when
\begin_inset Formula $J=1$
\end_inset
and
\begin_inset Formula $p=0$
\end_inset
,
from which it follows that
\begin_inset Formula $c_{r}=\left(1-\varphi_{r}^{s}\right)c_{0}^{\ast}$
\end_inset
,
where
\begin_inset Formula $c_{0}^{\ast}$
\end_inset
is the value of
\begin_inset Formula $c^{\ast}$
\end_inset
in the reference state.
Therefore eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq144"
nolink "false"
\end_inset
may also be written as
\begin_inset Formula
\begin{equation}
p=R\theta c^{\ast}\left(\frac{1-\varphi_{r}^{s}}{J-\varphi_{r}^{s}}\frac{c_{0}^{\ast}}{c^{\ast}}-1\right)\,,\label{eq145}
\end{equation}
\end_inset
and this expression may be substituted into eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq143"
nolink "false"
\end_inset
to evaluate the corresponding elasticity tensor.
\end_layout
\begin_layout Standard
A perfect osmometer is a porous material whose interstitial fluid behaves ideally and whose solid matrix exhibits negligible resistance to swelling (
\begin_inset Formula $\boldsymbol{\sigma}^{e}\approx\mathbf{0})$
\end_inset
.
In that case
\begin_inset Formula $p=0$
\end_inset
and eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq145"
nolink "false"
\end_inset
may be rearranged to yield
\begin_inset Formula
\begin{equation}
J=\left(1-\varphi_{r}^{s}\right)\frac{c_{0}^{\ast}}{c^{\ast}}+\varphi_{r}^{s}.\label{eq146}
\end{equation}
\end_inset
This equation is known as the Boyle-van't Hoff relation for a perfect osmometer.
It predicts that variations in the relative volume of such as medium with changes in external osmolarity
\begin_inset Formula $c^{\ast}$
\end_inset
is an affine function of
\begin_inset Formula $c_{0}^{\ast}/c^{\ast}$
\end_inset
,
with the intercept at the origin representing the solid volume fraction and the slope representing the fluid volume fraction,
in the reference configuration.
\end_layout
\begin_layout Standard
FEBio implements the relation of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq145"
nolink "false"
\end_inset
for the purpose of modeling equilibrium swelling even when solid matrix stresses are not negligible.
The name
\begin_inset Quotes eld
\end_inset
perfect osmometer
\begin_inset Quotes erd
\end_inset
is adopted for this model because it reproduces the Boyle-van't Hoff response in the special case when
\begin_inset Formula $\boldsymbol{\sigma}^{e}=\mathbf{0}$
\end_inset
.
\end_layout
\begin_layout Subsection
Cell Growth
\begin_inset CommandInset label
LatexCommand label
name "subsec:Cell-Growth"
\end_inset
\end_layout
\begin_layout Standard
The growth of cells requires the active uptake of soluble mass to provide the building blocks for various intracellular structures,
such as the cytoskeleton or chromosomes,
and growth contributes to the osmolarity of the intracellular space.
The resulting mechano-chemical gradient drives solvent into the cell as well,
contributing to its volumetric growth.
\end_layout
\begin_layout Standard
Cell growth may be modeled using the
\begin_inset Quotes eld
\end_inset
perfect osmometer
\begin_inset Quotes erd
\end_inset
framework by simply increasing the mass of the intracellular solid matrix and membrane-impermeant solute.
This is achieved by using eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq144"
nolink "false"
\end_inset
to model the osmotic pressure and allowing the parameters
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
and
\begin_inset Formula $c_{r}$
\end_inset
(normally constant) to increase over time as a result of growth.
Since cell growth is often accompanied by cell division,
and since daughter cells typically achieve the same solid and solute content as their parent,
it may be convenient to assume that
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
and
\begin_inset Formula $c_{r}$
\end_inset
increase proportionally,
though this is not an obligatory relationship.
To ensure that the initial configuration is a stress-free reference configuration,
let
\begin_inset Formula $c_{r}=\left(1-\varphi_{r}^{s}\right)c^{\ast}$
\end_inset
in the initial state prior to growth.
\end_layout
\begin_layout Subsection
Donnan Equilibrium Swelling
\begin_inset CommandInset label
LatexCommand label
name "subsec:Donnan-Equilibrium-Swelling"
\end_inset
\end_layout
\begin_layout Standard
Consider a porous medium whose solid matrix holds a fixed electrical charge and whose interstitial fluid consists of a solvent and two monovalent counter-ions (such as Na
\begin_inset Formula $^{\mathrm{+}}$
\end_inset
and Cl
\begin_inset Formula $^{\mathrm{-}})$
\end_inset
.
The boundaries of the medium are permeable to the solvent and ions.
The fixed charge density is denoted by
\begin_inset Formula $c^{F}$
\end_inset
;
it is a measure of the number of fixed charges per volume of the interstitial fluid in the current configuration.
This charge density may be either negative or positive,
thereby producing an imbalance in the concentration of anions and cations in the interstitial fluid.
To determine the osmolarity of the interstitial fluid,
it is necessary to equate the mechano-chemical potential of the solvent and the mechano-electrochemical potential of the ions between the porous medium and its surrounding bath.
When assuming ideal physicochemical behavior,
the interstitial osmolarity (resulting from the interstitial ions) is given by
\begin_inset Formula
\begin{equation}
c=\sqrt{\left(c^{F}\right)^{2}+\left(2c^{\ast}\right)^{2}}\,,\label{eq147}
\end{equation}
\end_inset
where
\begin_inset Formula $c^{\ast}$
\end_inset
is the salt concentration in the bath.
Alternatively,
we note that the osmolarity of the bath is
\begin_inset Formula $\bar{c}^{\ast}=2c^{\ast}$
\end_inset
.
Though this expression may be equated with eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq142"
nolink "false"
\end_inset
,
the resulting value of
\begin_inset Formula $c_{r}$
\end_inset
is not constant in this case,
since ions may transport into or out of the pore space;
therefore that relation is not useful here.
\end_layout
\begin_layout Standard
However,
since the number of charges fixed to the solid matrix is invariant,
we may manipulate eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq142"
nolink "false"
\end_inset
to produce a relation between the fixed charge density in the current configuration,
\begin_inset Formula $c^{F}$
\end_inset
,
and the corresponding value in the reference configuration,
\begin_inset Formula $c_{r}^{F}$
\end_inset
,
\begin_inset Formula
\begin{equation}
c^{F}=\frac{1-\varphi_{r}^{s}}{J-\varphi_{r}^{s}}c_{r}^{F}\,.\label{eq148}
\end{equation}
\end_inset
Now the osmotic pressure resulting from the difference in osmolarity between the porous medium and its surrounding bath is given by
\begin_inset Formula
\begin{equation}
p=R\theta\left(\sqrt{\left(\frac{1-\varphi_{r}^{s}}{J-\varphi_{r}^{s}}c_{r}^{F}\right)^{2}+\left(\bar{c}^{\ast}\right)^{2}}-\bar{c}^{\ast}\right)\,.\label{eq149}
\end{equation}
\end_inset
This expression may be substituted into eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq143"
nolink "false"
\end_inset
to evaluate the corresponding elasticity tensor.
\end_layout
\begin_layout Standard
When the osmotic pressure results from an imbalance in osmolarity produced by a fixed charge density,
it is called a Donnan osmotic pressure.
The analysis associated with this relation is called Donnan equilibrium.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Chemical Reactions
\begin_inset CommandInset label
LatexCommand label
name "sec:Chemical-Reactions"
\end_inset
\end_layout
\begin_layout Standard
Chemical reactions may be incorportated into a multiphasic mixture by adding a mass supply term to the equation of mass balance,
\begin_inset Formula
\begin{equation}
\frac{\partial\rho^{\alpha}}{\partial t}+\divg\left(\rho^{\alpha}\mathbf{v}^{\alpha}\right)=\hat{\rho}^{\alpha}\,,\label{eq150}
\end{equation}
\end_inset
Where
\begin_inset Formula $\hat{\rho}^{\alpha}$
\end_inset
is the volume density of mass supply to
\begin_inset Formula $\alpha$
\end_inset
resulting from chemical reactions with all other mixture constitutents.
Since mass must be conserved over all constituents,
mass supply terms are constrained by
\begin_inset Formula
\begin{equation}
\sum\limits_{\alpha}\hat{\rho}^{\alpha}=0\,.\label{eq151}
\end{equation}
\end_inset
In a mixture containing a solid constituent (denoted by
\begin_inset Formula $\alpha=s$
\end_inset
),
it is conveniemt to define the mixture domain (and thus the finite element mesh) on the solid and evaluate mass fluxes of constituents relative to the solid,
\begin_inset Formula
\begin{equation}
\mathbf{m}^{\alpha}=\rho^{\alpha}\left(\mathbf{v}^{\alpha}-\mathbf{v}^{s}\right)\,.\label{eq152}
\end{equation}
\end_inset
Substituting eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq152"
nolink "false"
\end_inset
into eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq150"
nolink "false"
\end_inset
,
the differential form of the mass balance may be rewritten as
\begin_inset Formula
\begin{equation}
\frac{D^{s}\rho_{r}^{\alpha}}{Dt}+J\divg\mathbf{m}^{\alpha}=\hat{\rho}_{r}^{\alpha}\,,\label{eq153}
\end{equation}
\end_inset
Where
\begin_inset Formula $D^{s}\left(\cdot\right)/Dt$
\end_inset
represents the material time derivative in the spatial frame,
following the solid,
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
,
where
\begin_inset Formula $\mathbf{F}$
\end_inset
is the deformation gradient of the solid matrix;
\begin_inset Formula $\rho_{r}^{\alpha}$
\end_inset
is the apparent density and
\begin_inset Formula $\hat{\rho}_{r}^{\alpha}$
\end_inset
is the volume density of mass supply to
\begin_inset Formula $\alpha$
\end_inset
normalized to the mixture volume in the reference configuration,
\begin_inset Formula
\begin{equation}
\rho_{r}^{\alpha}=J\rho^{\alpha},\quad\hat{\rho}_{r}^{\alpha}=J\hat{\rho}^{\alpha}.\label{eq154}
\end{equation}
\end_inset
Since
\begin_inset Formula $\rho_{r}^{\alpha}$
\end_inset
is the mass of
\begin_inset Formula $\alpha$
\end_inset
in the current configuration per volume of the mixture in the reference configuration (an invariant quantity),
this parameter represents a direct measure of the mass content of
\begin_inset Formula $\alpha$
\end_inset
in the mixture,
which may thus be used as a state variable in a framework that accounts for chemical reactions.
A distinction is now made between solid and solute species in the mixture,
since they are often treated differential in an analysis.
\end_layout
\begin_layout Subsection
Solid Matrix and Solid-Bound Molecular Constituents
\begin_inset CommandInset label
LatexCommand label
name "subsec:Solid-Matrix-SBM"
\end_inset
\end_layout
\begin_layout Standard
For constituents constrained to move with the solid (denoted generically by
\begin_inset Formula $\alpha=\sigma$
\end_inset
and satisfying
\begin_inset Formula $\mathbf{v}^{s}=\mathbf{v}^{\sigma}$
\end_inset
,
\begin_inset Formula $\forall\sigma)$
\end_inset
,
the statement of mass balance in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq153"
nolink "false"
\end_inset
reduces to the special form
\begin_inset Formula
\begin{equation}
D^{s}\rho_{r}^{\sigma}/Dt=\hat{\rho}_{r}^{\sigma}\,.\label{eq155}
\end{equation}
\end_inset
This representation makes it easy to see that alterations in
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
can occur only as a result of chemical reactions (such as synthesis,
degradation,
or binding).
In contrast,
as seen in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq153"
nolink "false"
\end_inset
,
alterations in
\begin_inset Formula $\rho_{r}^{\alpha}$
\end_inset
for solutes or solvent (
\begin_inset Formula $\alpha\ne\sigma)$
\end_inset
may also occur as a result of mass transport into or out of the pore space of the solid matrix.
Therefore,
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
is the natural choice of state variable for describing the content of solid constituents in a reactive mixture.
\end_layout
\begin_layout Standard
When multiple solid species are present,
the net solid mass content may be given by
\begin_inset Formula $\rho_{r}^{s}=\sum\limits_{\sigma}\rho_{r}^{\sigma}$
\end_inset
whereas the net mass supply of solid is
\begin_inset Formula $\hat{\rho}_{r}^{s}=\sum\limits_{\sigma}\hat{\rho}_{r}^{\sigma}$
\end_inset
such that
\begin_inset Formula $D^{s}\rho_{r}^{s}/Dt=\hat{\rho}_{r}^{s}$
\end_inset
.
The referential solid volume fraction,
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
,
may be evaluated from
\begin_inset Formula
\begin{equation}
\varphi_{r}^{s}=\varphi_{0}^{s}+\sum\limits_{\sigma}\rho_{r}^{\sigma}/\rho_{T}^{\sigma},\label{eq:referential-solid-volume-fraction}
\end{equation}
\end_inset
where
\begin_inset Formula $\rho_{T}^{\sigma}$
\end_inset
is the true density of solid constituent
\begin_inset Formula $\sigma$
\end_inset
(mass of
\begin_inset Formula $\sigma$
\end_inset
per volume of
\begin_inset Formula $\sigma$
\end_inset
) and
\begin_inset Formula $\varphi_{0}^{s}$
\end_inset
is the referential solid volume fraction of solid constituents not explicitly modeled by solid-bound molecules (a user-defined parameter).
According to eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq154"
nolink "false"
\end_inset
,
it follows that the solid volume fraction in the current configuration is given by
\begin_inset Formula $\varphi^{s}=\varphi_{r}^{s}/J$
\end_inset
.
Note that
\begin_inset Formula $0\leqslant\varphi^{s}\leqslant1$
\end_inset
under all circumstances,
while
\begin_inset Formula $0\leqslant\varphi_{r}^{s}\leqslant J$
\end_inset
,
implying that
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
may exceed unity when solid growth occurs.
In this study,
it is assumed that all mixture constituents are intrinsically incompressible,
implying that their true density is invariant.
\end_layout
\begin_layout Standard
At the start of an analysis,
the formula of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:referential-solid-volume-fraction"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
takes the form
\begin_inset Formula
\begin{equation}
\varphi_{r}^{s}\left(0\right)=\varphi_{0}^{s}+\sum\limits_{\sigma}\rho_{r}^{\sigma}\left(0\right)/\rho_{T}^{\sigma}\label{eq:initial-referential-solid-fraction}
\end{equation}
\end_inset
where
\begin_inset Formula $\rho_{r}^{\sigma}\left(0\right)$
\end_inset
represents the initial apparent mass densities of solid constituents.
This initial value of
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
must satisfy
\begin_inset Formula $0\le\varphi_{r}^{s}\left(0\right)\le1$
\end_inset
,
since
\begin_inset Formula $J=1$
\end_inset
at the start of an analysis.
\end_layout
\begin_layout Standard
The various constituents of the porous solid matrix of a multiphasic mixture may be electrically charged.
The charge density in the current configuration,
normalized by the mixture volume in the current configuration,
is given by
\begin_inset Formula
\begin{equation}
\check{c}^{F}=\frac{z^{F}dn^{F}+\sum_{\sigma}z^{\sigma}dn^{\sigma}}{dV}\,,\label{eq:FCD-mixture-volume}
\end{equation}
\end_inset
where
\begin_inset Formula $z^{F}$
\end_inset
is the charge number (equivalent charge per mole) and
\begin_inset Formula $dn^{F}$
\end_inset
is the elemental number of moles associated with fixed charges present in the initial volume fraction
\begin_inset Formula $\varphi_{0}^{s}$
\end_inset
of the solid matrix.
Similarly,
\begin_inset Formula $z^{\sigma}$
\end_inset
is the charge number of evolving solid constituent
\begin_inset Formula $\sigma$
\end_inset
.
By convention however,
the fixed charge density
\begin_inset Formula $c^{F}$
\end_inset
of a multiphasic material is normalized by the fluid volume of the mixture,
thus it can be shown that
\begin_inset Formula
\begin{equation}
c^{F}=\frac{\check{c}^{F}}{1-\varphi^{s}}=\frac{1}{J-\varphi_{r}^{s}}\left(\frac{z^{F}dn^{F}}{dV_{r}}+\sum_{\sigma}\frac{z^{\sigma}\rho_{r}^{\sigma}}{M^{\sigma}}\right)\,.\label{eq:FCD-fluid-volume}
\end{equation}
\end_inset
In particular,
in the reference configuration this formula produces
\begin_inset Formula
\begin{equation}
c^{F}\left(0\right)=\frac{1}{1-\varphi_{r}^{s}\left(0\right)}\left(\frac{z^{F}dn^{F}\left(0\right)}{dV_{r}}+\sum_{\sigma}\frac{z^{\sigma}\rho_{r}^{\sigma}\left(0\right)}{M^{\sigma}}\right)\,.\label{eq:FCD-initial-time}
\end{equation}
\end_inset
We define the first term on the right-hand-side of this equation as the initial value of the user-specified fixed charge density
\begin_inset Formula $c_{0}^{F}$
\end_inset
(which is not associated with solid species
\begin_inset Formula $\sigma$
\end_inset
),
\begin_inset Formula
\begin{equation}
c_{0}^{F}\equiv\frac{1}{1-\varphi_{r}^{s}\left(0\right)}\frac{z^{F}dn^{F}\left(0\right)}{dV_{r}}\,.\label{eq:user-specified-cF0}
\end{equation}
\end_inset
Therefore,
in the current configuration,
we may rewrite
\begin_inset Formula
\begin{equation}
c^{F}=\frac{1-\varphi_{r}^{s}\left(0\right)}{J-\varphi_{r}^{s}}c_{0}^{F}+\frac{1}{J-\varphi_{r}^{s}}\sum_{\sigma}\frac{z^{\sigma}\rho_{r}^{\sigma}}{M^{\sigma}}\,.\label{eq158}
\end{equation}
\end_inset
where the user-specified
\begin_inset Formula $c_{0}^{F}$
\end_inset
may optionally be associated with a load curve representing the scale factor
\begin_inset Formula $dn^{F}/dn^{F}\left(0\right)$
\end_inset
,
in case the user would like to allow
\begin_inset Formula $c_{0}^{F}$
\end_inset
to evolve.
By analogy,
we may now define the referential fixed-charge density
\begin_inset Formula $c_{r}^{F}$
\end_inset
of the mixture as
\begin_inset Formula
\begin{equation}
c_{r}^{F}\equiv\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}\left(0\right)}c^{F}=c_{0}^{F}+\frac{1}{1-\varphi_{r}^{s}\left(0\right)}\sum_{\sigma}\frac{z^{\sigma}\rho_{r}^{\sigma}}{M^{\sigma}}\label{eq157}
\end{equation}
\end_inset
Here,
\begin_inset Formula $c_{r}^{F}$
\end_inset
may evolve with time,
but it represents the number of fixed equivalent charges in the current configuration,
per fluid volume in the reference configuration.
Hence we may also write
\begin_inset Formula
\[
c^{F}=\frac{1-\varphi_{r}^{s}\left(0\right)}{J-\varphi_{r}^{s}}c_{r}^{F}\,.
\]
\end_inset
\end_layout
\begin_layout Standard
The molar concentration of a solid-bound molecular constituent,
which may be needed in a reactive process involving solutes,
is given by
\begin_inset Formula
\begin{equation}
c^{\sigma}=\frac{1}{J-\varphi_{r}^{s}}\frac{\rho_{r}^{\sigma}}{M^{\sigma}}\,.\label{eq:sbm-molar-concentration}
\end{equation}
\end_inset
An alternative to using solid-bound molecules is to define solutes
\begin_inset Formula $\sigma$
\end_inset
whose diffusivity
\begin_inset Formula $\mathbf{d}^{\sigma}$
\end_inset
in the mixture is set to
\begin_inset Formula $\mathbf{0}$
\end_inset
(however,
the free diffusivity
\begin_inset Formula $d_{0}^{\sigma}$
\end_inset
should not be set to zero,
to prevent a division by zero;
its exact value is not important,
thus let
\begin_inset Formula $d_{0}^{\sigma}=1$
\end_inset
).
Then,
FEBio treats these solutes as equivalent to solid-bound molecules:
(1) Their concentration does not contribute to the osmolarity of the interstitial fluid;
(2) their concentration contributes to the fixed charge density
\begin_inset Formula $c^{F}$
\end_inset
in the current configuration;
(3) these solutes do not contribute to the effective hydraulic permeability
\begin_inset Formula $\tilde{\mathbf{k}}$
\end_inset
of the porous multiphasic mixture;
(4) these solutes can be involved in chemical reactions;
(5) while their initial effective concentration may be prescribed,
it must not contribute to the prescribed initial effective fluid pressure,
and the user should not prescribe any boundary conditions on the effective concentration of these solutes.
Using these 'solid-bound' solutes increases the number of degrees of freedom in an FEBio analysis;
however,
unlike solid-bound molecules,
the solution for the effective concentration of these solutes remains as accurate as all other degrees of freedom in an analysis.
\end_layout
\begin_layout Standard
To evaluate the contribution of these solutes to the referential solid volume fraction
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
and to chemical reactions,
we use eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:sbm-molar-concentration"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
above and substitute it into eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:referential-solid-volume-fraction"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
to produce
\begin_inset Formula
\[
\varphi_{r}^{s}=\varphi_{0}^{s}+\left(J-\varphi_{r}^{s}\right)\sum\limits_{\sigma}\frac{M^{\sigma}c^{\sigma}}{\rho_{T}^{\sigma}}
\]
\end_inset
which can be solved for
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
using the concentrations
\begin_inset Formula $c^{\sigma}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\varphi_{r}^{s}=\frac{\varphi_{0}^{s}+J\sum\limits_{\sigma}\frac{M^{\sigma}c^{\sigma}}{\rho_{T}^{\sigma}}}{1+\sum\limits_{\sigma}\frac{M^{\sigma}c^{\sigma}}{\rho_{T}^{\sigma}}}\,.\label{eq:phirs-solutes-as-SBMs}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Solutes
\begin_inset CommandInset label
LatexCommand label
name "subsec:Solutes"
\end_inset
\end_layout
\begin_layout Standard
Solutes are denoted generically by
\begin_inset Formula $\alpha=\iota$
\end_inset
.
In chemistry solute content is often represented in units of molar concentration (moles per fluid volume).
It follows that solute molar concentration
\begin_inset Formula $c^{\iota}$
\end_inset
and molar supply
\begin_inset Formula $\hat{c}^{\iota}$
\end_inset
are related to
\begin_inset Formula $\rho^{\iota}$
\end_inset
and
\begin_inset Formula $\hat{\rho}^{\iota}$
\end_inset
via
\begin_inset Formula
\begin{equation}
c^{\iota}=\frac{\rho^{\iota}}{\left(1-\varphi^{s}\right)M^{\iota}},\quad\hat{c}^{\iota}=\frac{\hat{\rho}^{\iota}}{\left(1-\varphi^{s}\right)M^{\iota}}\,.\label{eq159}
\end{equation}
\end_inset
The molar flux of constituent
\begin_inset Formula $\iota$
\end_inset
relative to the solid is given by
\begin_inset Formula
\begin{equation}
\mathbf{j}^{\iota}=\left(1-\varphi^{s}\right)c^{\iota}\left(\mathbf{v}^{\iota}-\mathbf{v}^{s}\right)\,,\label{eq160}
\end{equation}
\end_inset
where it may be noted that
\begin_inset Formula $\mathbf{m}^{\iota}=M^{\iota}\mathbf{j}^{\iota}$
\end_inset
.
Combining these relations with Eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq153"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq154"
nolink "false"
\end_inset
produces the desired form of the mass balance for the solutes,
\begin_inset Formula
\begin{equation}
\frac{1}{J}\frac{D^{s}\left[J\left(1-\varphi^{s}\right)c^{\iota}\right]}{Dt}+\mbox{div}\mathbf{j}^{\iota}=\left(1-\varphi^{s}\right)\hat{c}^{\iota}\,.\label{eq161}
\end{equation}
\end_inset
This form is suitable for implementation in a finite element analysis where the mesh is defined on the solid matrix.
\end_layout
\begin_layout Subsection
Mixture with Negligible Solute Volume Fraction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Negligible-Solute-Fraction"
\end_inset
\end_layout
\begin_layout Standard
The volume fraction of each constituent is given by
\begin_inset Formula $\varphi^{\alpha}=\rho^{\alpha}/\rho_{T}^{\alpha}$
\end_inset
.
In a saturated mixture these volume fractions satisfy
\begin_inset Formula $\sum\limits_{\alpha}\varphi^{\alpha}=1$
\end_inset
.
Substituting
\begin_inset Formula $\rho^{\alpha}=\varphi^{\alpha}\rho_{T}^{\alpha}$
\end_inset
into eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq150"
nolink "false"
\end_inset
,
dividing across by
\begin_inset Formula $\rho_{T}^{\alpha}$
\end_inset
(invariant for intrinsically incompressible constituents),
and taking the sum of the resulting expression over all constituents produces
\begin_inset Formula
\begin{equation}
\divg\left(\sum\limits_{\alpha}\varphi^{\alpha}\mathbf{v}^{\alpha}\right)=\sum\limits_{\alpha}\frac{\hat{\rho}^{\alpha}}{\rho_{T}^{\alpha}}\,.\label{eq162}
\end{equation}
\end_inset
This mass balance relation for the mixture expresses the fact that the mixture volume will change as a result of chemical reactions where the true density of products is different from that of reactants.
Indeed,
assuming that
\begin_inset Formula $\rho_{T}^{\alpha}$
\end_inset
is the same for all
\begin_inset Formula $\alpha$
\end_inset
would nullify the right-hand-side of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq162"
nolink "false"
\end_inset
based on eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq151"
nolink "false"
\end_inset
.
We now adopt the assumption that solutes occupy a negligible volume fraction of the mixture (
\begin_inset Formula $\varphi^{\iota}\ll1)$
\end_inset
,
from which it follows that
\begin_inset Formula $\varphi^{s}+\varphi^{w}\approx1$
\end_inset
and
\begin_inset Formula $\sum\limits_{\alpha}\varphi^{\alpha}\mathbf{v}^{\alpha}\approx\mathbf{v}^{s}+\mathbf{w}$
\end_inset
,
where
\begin_inset Formula $\mathbf{w}=\varphi^{w}\left(\mathbf{v}^{w}-\mathbf{v}^{s}\right)$
\end_inset
is the volumetrix flux of solvent relative to the solid.
Thus,
the mixture mass balance may be reduced to
\begin_inset Formula
\begin{equation}
\divg\left(\mathbf{v}^{s}+\mathbf{w}\right)=\sum\limits_{\alpha}\frac{\hat{\rho}^{\alpha}}{\rho_{T}^{\alpha}}\,.\label{eq163}
\end{equation}
\end_inset
In the special case of the solvent (
\begin_inset Formula $\alpha=w$
\end_inset
),
FEBio uses a solvent supply,
\begin_inset Formula $\hat{\varphi}^{w}=\hat{\rho}^{w}/\hat{\rho}_{T}^{w}$
\end_inset
,
which may be incorporated in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq163"
nolink "false"
\end_inset
as
\begin_inset Formula
\begin{equation}
\divg\left(\mathbf{v}^{s}+\mathbf{w}\right)=\hat{\varphi}^{w}+\sum\limits_{\alpha\ne w}\frac{\hat{\rho}^{\alpha}}{\rho_{T}^{\alpha}}\,.\label{eq163b}
\end{equation}
\end_inset
From the mass balance equation for the solvent we have
\begin_inset Formula
\[
\begin{aligned}\hat{\varphi}^{w} & =\frac{D^{s}\varphi^{w}}{Dt}+\grad\varphi^{w}\cdot\left(\mathbf{v}^{w}-\mathbf{v}^{s}\right)+\varphi^{w}\divg\mathbf{v}^{w}\end{aligned}
\]
\end_inset
so that the mixture mass balance takes the form
\begin_inset Formula
\[
\begin{aligned}\divg\left(\mathbf{v}^{s}+\mathbf{w}\right) & =\frac{D^{s}\varphi^{w}}{Dt}+\grad\varphi^{w}\cdot\left(\mathbf{v}^{w}-\mathbf{v}^{s}\right)+\varphi^{w}\divg\mathbf{v}^{w}+\sum\limits_{\alpha\ne w}\frac{\hat{\rho}^{\alpha}}{\rho_{T}^{\alpha}}\,\end{aligned}
\]
\end_inset
Using
\begin_inset Formula $\varphi^{w}+\varphi^{s}=1$
\end_inset
this relation further simplifies to
\begin_inset Formula
\[
\varphi^{s}\divg\mathbf{v}^{s}+\frac{D^{s}\varphi^{s}}{Dt}=\sum\limits_{\alpha\ne w}\frac{\hat{\rho}^{\alpha}}{\rho_{T}^{\alpha}}\,.
\]
\end_inset
Now we use the kinematic relation
\begin_inset Formula $\divg\mathbf{v}^{s}=\frac{1}{J}\frac{D^{s}J}{Dt}$
\end_inset
to reduce this equation further to
\begin_inset Formula
\[
\frac{D^{s}\left(J\varphi^{s}\right)}{Dt}=J\sum\limits_{\alpha\ne w}\frac{\hat{\rho}^{\alpha}}{\rho_{T}^{\alpha}}\,.
\]
\end_inset
But recall that
\begin_inset Formula
\[
J\varphi^{s}=\varphi_{r}^{s}
\]
\end_inset
thus the mixture mass balance now simplifies to
\begin_inset Formula
\[
\frac{1}{J}\frac{D^{s}\varphi_{r}^{s}}{Dt}=\sum\limits_{\alpha\ne w}\frac{\hat{\rho}^{\alpha}}{\rho_{T}^{\alpha}}
\]
\end_inset
Since
\begin_inset Formula
\[
\hat{\rho}^{\alpha}=\left(1-\varphi^{s}\right)M^{\alpha}\hat{c}^{\alpha}
\]
\end_inset
it follows that
\begin_inset Formula
\[
\frac{D^{s}\varphi_{r}^{s}}{Dt}=J\left(1-\varphi^{s}\right)\sum\limits_{\alpha\ne w}\frac{M^{\alpha}\hat{c}^{\alpha}}{\rho_{T}^{\alpha}}
\]
\end_inset
Another way of presenting these results is to restate the mixture mass balance as
\begin_inset Formula
\begin{equation}
\divg\left(\mathbf{v}^{s}+\mathbf{w}\right)=\hat{\varphi}_{0}^{w}+\frac{1}{J}\frac{D^{s}\varphi_{r}^{s}}{Dt}\label{eq:mixture-mass-reactive}
\end{equation}
\end_inset
where
\begin_inset Formula $\hat{\varphi}_{0}^{w}$
\end_inset
is the solvent supply from user-specified sources (not from the chemical reactions).
\end_layout
\begin_layout Subsection
Chemical Kinetics
\begin_inset CommandInset label
LatexCommand label
name "subsec:Chemical-Kinetics"
\end_inset
\end_layout
\begin_layout Standard
Productions rates are described by constitutive relations which are functions of the state variables.
In a biological mixture under isothermal conditions,
the minimum set of state variables needed to describe reactive mixtures that include a solid matrix are:
the (uniform) temperature
\begin_inset Formula $\theta$
\end_inset
,
the solid matrix deformation gradient
\begin_inset Formula $\mathbf{F}$
\end_inset
(or related strain measures),
and the molar content
\begin_inset Formula $c^{\alpha}$
\end_inset
of the various constituents.
This set differs from the classical treatment of chemical kinetics in fluid mixtures by the inclusion of
\begin_inset Formula $\mathbf{F}$
\end_inset
and the subset of constituents bound to the solid matrix.
To maintain a consistent notation in this section,
solid-bound molecular species are described by their molar concentrations and molar supplies which may be related to their referential mass density and referential mass supply according to
\begin_inset Formula
\begin{equation}
c^{\sigma}=\frac{\rho_{r}^{\sigma}}{\left(J-\varphi_{r}^{s}\right)M^{\sigma}},\quad\hat{c}^{\sigma}=\frac{\hat{\rho}_{r}^{\sigma}}{\left(J-\varphi_{r}^{s}\right)M^{\sigma}}\,.\label{eq164}
\end{equation}
\end_inset
Consider a general chemical reaction,
\begin_inset Formula
\begin{equation}
\sum\limits_{\alpha}\nu_{R}^{\alpha}\mathcal{E}^{\alpha}\to\sum\limits_{\alpha}\nu_{P}^{\alpha}\mathcal{E}^{\alpha}\,,\label{eq165}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathcal{E}^{\alpha}$
\end_inset
is the chemical species representing constituent
\begin_inset Formula $\alpha$
\end_inset
;
\begin_inset Formula $\nu_{R}^{\alpha}$
\end_inset
and
\begin_inset Formula $\nu_{P}^{\alpha}$
\end_inset
represent stoichiometric coefficients of the reactants and products,
respectively.
Since the molar supply of reactants and products is constrained by stoichiometry,
it follows that all molar supplies
\begin_inset Formula $\hat{c}^{\alpha}$
\end_inset
in a specific chemical reaction may be related to a production rate
\begin_inset Formula $\hat{\zeta}$
\end_inset
according to
\begin_inset Formula
\begin{equation}
\hat{c}^{\alpha}=\nu^{\alpha}\hat{\zeta}\,,\label{eq166}
\end{equation}
\end_inset
where
\begin_inset Formula $\nu^{\alpha}$
\end_inset
represents the net stoichiometric coefficient for
\begin_inset Formula $\mathcal{E}^{\alpha}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\nu^{\alpha}=\nu_{P}^{\alpha}-\nu_{R}^{\alpha}\,.\label{eq167}
\end{equation}
\end_inset
Thus,
formulating constitutive relations for
\begin_inset Formula $\hat{c}^{\alpha}$
\end_inset
is equivalent to providing a single relation for
\begin_inset Formula $\hat{\zeta}\left(\theta,\mathbf{F},c^{\alpha}\right)$
\end_inset
.
When the chemical reaction is reversible,
\begin_inset Formula
\begin{equation}
\sum\limits_{\alpha}\nu_{R}^{\alpha}\mathcal{E}^{\alpha}\rightleftharpoons\sum\limits_{\alpha}\nu_{P}^{\alpha}\mathcal{E}^{\alpha}\,,\label{eq168}
\end{equation}
\end_inset
the relations of Eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq166"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq167"
nolink "false"
\end_inset
still apply but the form of
\begin_inset Formula $\hat{\zeta}$
\end_inset
would be different.
\end_layout
\begin_layout Standard
Using the relations of Eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq159"
nolink "false"
\end_inset
,
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq164"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq166"
nolink "false"
\end_inset
,
it follows in general that
\begin_inset Formula $\hat{\rho}^{\alpha}=\left(1-\varphi^{s}\right)M^{\alpha}\nu^{\alpha}\hat{\zeta}$
\end_inset
,
so that the constraint of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq151"
nolink "false"
\end_inset
is equivalent to enforcing stoichiometry,
namely,
\begin_inset Formula
\begin{equation}
\sum\limits_{\alpha}\nu^{\alpha}M^{\alpha}=0\,.\label{eq169}
\end{equation}
\end_inset
Thus,
properly balancing a chemical reaction satisfies this constraint.
\end_layout
\begin_layout Standard
The mixture mass balance in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq163b"
nolink "false"
\end_inset
may now be rewritten as
\begin_inset Formula
\begin{equation}
\divg\left(\mathbf{v}^{s}+\mathbf{w}^{w}\right)=\hat{\varphi}_{0}^{w}+\left(1-\varphi^{s}\right)\hat{\zeta}\overline{\mathcal{V}}\,,\label{eq170}
\end{equation}
\end_inset
where
\begin_inset Formula $\overline{\mathcal{V}}=\sum\limits_{\alpha\ne w}\nu^{\alpha}\mathcal{V}^{\alpha}$
\end_inset
and
\begin_inset Formula $\mathcal{V}^{\alpha}=M^{\alpha}/\rho_{T}^{\alpha}$
\end_inset
is the molar volume of
\begin_inset Formula $\alpha$
\end_inset
.
(Currently in FEBio,
\begin_inset Formula $\hat{\varphi}_{0}^{w}$
\end_inset
is specified independently of
\begin_inset Formula $\hat{\zeta}$
\end_inset
,
because users may choose to neglect the contribution from
\begin_inset Formula $\overline{\mathcal{V}}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq170"
nolink "false"
\end_inset
;
therefore,
if one desires to model chemical reactions,
eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq165"
nolink "false"
\end_inset
or eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq168"
nolink "false"
\end_inset
,
that involve the solvent,
it is necessary to explicitly provide a solvent supply function compatible with the above relations,
namely
\begin_inset Formula $\hat{\varphi}_{0}^{w}=\left(1-\varphi^{s}\right)\hat{\zeta}\nu^{w}\mathcal{V}^{w}$
\end_inset
.) Similarly,
the solute mass balance in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq161"
nolink "false"
\end_inset
becomes
\begin_inset Formula
\begin{equation}
\frac{1}{J}\frac{D^{s}\left[J\left(1-\varphi^{s}\right)c^{\iota}\right]}{Dt}+\divg\mathbf{j}^{\iota}=\left(1-\varphi^{s}\right)\nu^{\iota}\hat{\zeta}\,.\label{eq:solute-mass-balance}
\end{equation}
\end_inset
These mass balance equations reduce to those of non-reactive mixtures when
\begin_inset Formula $\hat{\zeta}=0$
\end_inset
.
\end_layout
\begin_layout Section
Fluid Mechanics
\begin_inset CommandInset label
LatexCommand label
name "sec:Fluid-Mechanics"
\end_inset
\end_layout
\begin_layout Subsection
Mass and Momentum Balance
\begin_inset CommandInset label
LatexCommand label
name "subsec:CFD-Mass-Momentum"
\end_inset
\end_layout
\begin_layout Standard
In a spatial (Eulerian) frame,
the momentum balance equation for a continuum is
\begin_inset Formula
\begin{equation}
\rho\mathbf{a}=\divg\boldsymbol{\sigma}+\rho\mathbf{b}\,,\label{eq:momentum-balance}
\end{equation}
\end_inset
where
\begin_inset Formula $\rho$
\end_inset
is the density,
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
is the Cauchy stress,
\begin_inset Formula $\mathbf{b}$
\end_inset
is the body force per mass,
and
\begin_inset Formula $\mathbf{a}$
\end_inset
is the acceleration,
given by the material time derivative of the velocity
\begin_inset Formula $\mathbf{v}$
\end_inset
in the spatial frame,
\begin_inset Formula
\begin{equation}
\mathbf{a}=\dot{\mathbf{v}}=\frac{\partial\mathbf{v}}{\partial t}+\mathbf{L}\cdot\mathbf{v}\,,\label{eq:acceleration}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{L}=\grad\mathbf{v}$
\end_inset
is the spatial velocity gradient.
The mass balance equation is
\begin_inset Formula
\begin{equation}
\dot{\rho}+\rho\divg\mathbf{v}=0\,,\label{eq:mass-balance}
\end{equation}
\end_inset
where the material time derivative of the density in the spatial frame is
\begin_inset Formula
\begin{equation}
\dot{\rho}=\frac{\partial\rho}{\partial t}+\grad\rho\cdot\mathbf{v}\,.\label{eq:density-material-derivative}
\end{equation}
\end_inset
Let
\begin_inset Formula $\mathbf{F}$
\end_inset
denote the deformation gradient (the gradient of the motion with respect to the material coordinate).
The material time derivative of
\begin_inset Formula $\mathbf{F}$
\end_inset
is related to
\begin_inset Formula $\mathbf{L}$
\end_inset
via
\begin_inset Formula
\begin{equation}
\dot{\mathbf{F}}=\mathbf{L}\cdot\mathbf{F}\,.\label{eq:F-dot}
\end{equation}
\end_inset
Let
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
denote the Jacobian of the motion (the volume ratio,
or ratio of current to referential volume,
\begin_inset Formula $J>0$
\end_inset
);
then,
the dilatation (relative change in volume between current and reference configurations) is given by
\begin_inset Formula $e=J-1$
\end_inset
.
Using the chain rule,
\begin_inset Formula $J$
\end_inset
's material time derivative is
\begin_inset Formula $\dot{J}=J\mathbf{F}^{-T}:\dot{\mathbf{F}}$
\end_inset
which,
when combined with eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:F-dot"
nolink "false"
\end_inset
,
produces a kinematic constraint between
\begin_inset Formula $\dot{J}$
\end_inset
and
\begin_inset Formula $\divg\mathbf{v}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\dot{J}=J\,\divg\mathbf{v}\,.\label{eq:divv-kinematic-relation}
\end{equation}
\end_inset
Substituting this relation into the mass balance,
eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:mass-balance"
nolink "false"
\end_inset
,
produces
\begin_inset Formula $\dot{\overline{\rho J}}=0$
\end_inset
,
which may be integrated directly to yield
\begin_inset Formula
\begin{equation}
\rho=\rho_{r}/J\,,\label{eq:mass-balance-integrated}
\end{equation}
\end_inset
where
\begin_inset Formula $\rho_{r}$
\end_inset
is the density in the reference configuration (when
\begin_inset Formula $J=1$
\end_inset
).
Since
\begin_inset Formula $\rho_{r}$
\end_inset
is obtained by integrating the above material time derivative of
\begin_inset Formula $\rho J$
\end_inset
,
it is an intrinsic material property that must be invariant in time and space.
\end_layout
\begin_layout Standard
The Cauchy stress is given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=-p\mathbf{I}+\boldsymbol{\tau}\,,\label{eq:stress}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{I}$
\end_inset
is the identity tensor,
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
is the viscous stress,
\begin_inset Formula $p$
\end_inset
is the pressure arising from the elastic response,
\begin_inset Formula
\begin{equation}
p=-\frac{d\Psi_{r}\left(J\right)}{dJ}\,,\label{eq:elastic-pressure}
\end{equation}
\end_inset
and
\begin_inset Formula $\Psi_{r}$
\end_inset
is the free energy density of the fluid (free energy per volume of the continuum in the reference configuration).
The axiom of entropy inequality dictates that
\begin_inset Formula $\Psi_{r}$
\end_inset
cannot be a function of the rate of deformation
\begin_inset Formula $\mathbf{D}=\left(\mathbf{L}+\mathbf{L}^{T}\right)/2$
\end_inset
.
In contrast,
the viscous stress
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
is generally a function of
\begin_inset Formula $J$
\end_inset
and
\begin_inset Formula $\mathbf{D}$
\end_inset
.
\end_layout
\begin_layout Standard
Boundary conditions may be derived by satisfying mass and momentum balance across a moving interface
\begin_inset Formula $\Gamma$
\end_inset
.
Let
\begin_inset Formula $\Gamma$
\end_inset
divide the material domain
\begin_inset Formula $V$
\end_inset
into subdomains
\begin_inset Formula $V_{+}$
\end_inset
and
\begin_inset Formula $V_{-}$
\end_inset
and let the outward normal to
\begin_inset Formula $V_{+}$
\end_inset
on
\begin_inset Formula $\Gamma$
\end_inset
be denoted by
\begin_inset Formula $\mathbf{n}$
\end_inset
.
The jump condition across
\begin_inset Formula $\Gamma$
\end_inset
derived from the axiom of mass balance requires that
\begin_inset Formula
\begin{equation}
\left[\left[\rho\mathbf{u}_{\Gamma}\right]\right]\cdot\mathbf{n}=0\,,\label{eq:mass-jump}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{u}_{\Gamma}\equiv\mathbf{v}-\mathbf{v}_{\Gamma}$
\end_inset
on
\begin_inset Formula $\Gamma$
\end_inset
and
\begin_inset Formula $\mathbf{v}_{\Gamma}$
\end_inset
is the velocity of the interface
\begin_inset Formula $\Gamma$
\end_inset
.
Thus,
\begin_inset Formula $\mathbf{u}_{\Gamma}$
\end_inset
represents the velocity of the fluid relative to
\begin_inset Formula $\Gamma$
\end_inset
.
The double bracket notation denotes
\begin_inset Formula $\left[\left[f\right]\right]=f_{+}-f_{-}$
\end_inset
,
where
\begin_inset Formula $f_{+}$
\end_inset
and
\begin_inset Formula $f_{-}$
\end_inset
represent the value of
\begin_inset Formula $f$
\end_inset
on
\begin_inset Formula $\Gamma$
\end_inset
in
\begin_inset Formula $V_{+}$
\end_inset
and
\begin_inset Formula $V_{-}$
\end_inset
,
respectively.
This jump condition implies that the mass flux normal to
\begin_inset Formula $\Gamma$
\end_inset
must be continuous.
In particular,
if
\begin_inset Formula $V_{+}$
\end_inset
is a fluid domain and
\begin_inset Formula $V_{-}$
\end_inset
is a solid domain,
and
\begin_inset Formula $\Gamma$
\end_inset
denotes the solid boundary (e.g.,
a wall),
we use
\begin_inset Formula $\rho_{+}=\rho$
\end_inset
,
\begin_inset Formula $\mathbf{v}_{+}=\mathbf{v}$
\end_inset
for the fluid,
and
\begin_inset Formula $\mathbf{v}_{-}=\mathbf{v}_{\Gamma}$
\end_inset
for the solid,
such that eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:mass-jump"
nolink "false"
\end_inset
reduces to
\begin_inset Formula $\rho\left(\mathbf{v}-\mathbf{v}_{\Gamma}\right)\cdot\mathbf{n}=0$
\end_inset
.
The jump condition derived from the axiom of linear momentum balance similarly requires that
\begin_inset Formula
\begin{equation}
\left[\left[\boldsymbol{\sigma}-\rho\mathbf{u}_{\Gamma}\otimes\mathbf{u}_{\Gamma}\right]\right]\cdot\mathbf{n}=\mathbf{0}\,.\label{eq:momentum-jump}
\end{equation}
\end_inset
This condition implies that the jump in the traction
\begin_inset Formula $\boldsymbol{\sigma}\cdot\mathbf{n}$
\end_inset
across
\begin_inset Formula $\Gamma$
\end_inset
must be balanced by the jump in momentum flux normal to
\begin_inset Formula $\Gamma$
\end_inset
.
In addition to jump conditions dictated by axioms of conservation,
viscous fluids require the satisfaction of the no-slip condition,
\begin_inset Formula
\begin{equation}
\left(\mathbf{I}-\mathbf{n}\otimes\mathbf{n}\right)\cdot\left[\left[\mathbf{u}_{\Gamma}\right]\right]=\mathbf{0}\,,\label{eq:no-slip-condition}
\end{equation}
\end_inset
which implies that the velocity component tangential to
\begin_inset Formula $\Gamma$
\end_inset
is continuous across that interface.
\end_layout
\begin_layout Standard
In our finite element treatment we use
\begin_inset Formula $\mathbf{v}$
\end_inset
and
\begin_inset Formula $J$
\end_inset
as nodal variables,
implying that our formulation automatically enforces continuity of these variables across element boundaries,
thus
\begin_inset Formula $\left[\left[\mathbf{v}\right]\right]=\left[\left[\mathbf{u}_{\Gamma}\right]\right]=\mathbf{0}$
\end_inset
and
\begin_inset Formula $\left[\left[J\right]\right]=0$
\end_inset
.
Based on Eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:mass-balance-integrated"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:elastic-pressure"
nolink "false"
\end_inset
,
it follows that the density and elastic pressure are continuous across element boundaries in this formulation,
\begin_inset Formula $\left[\left[\rho\right]\right]=0$
\end_inset
and
\begin_inset Formula $\left[\left[p\right]\right]=0$
\end_inset
.
Thus,
the mass jump in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:mass-jump"
nolink "false"
\end_inset
is automatically satisfied,
and the momentum jump in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:momentum-jump"
nolink "false"
\end_inset
reduces to
\begin_inset Formula $\left[\left[\boldsymbol{\sigma}\right]\right]\cdot\mathbf{n}=\mathbf{0}$
\end_inset
,
requiring continuity of the traction,
or more specifically according to
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:stress"
nolink "false"
\end_inset
,
the continuity of the viscous traction
\begin_inset Formula $\boldsymbol{\tau}\cdot\mathbf{n}$
\end_inset
,
since
\begin_inset Formula $p$
\end_inset
is automatically continuous.
\end_layout
\begin_layout Subsection
Wall Shear Stress
\begin_inset CommandInset label
LatexCommand label
name "subsec:Wall-Shear-Stress"
\end_inset
\end_layout
\begin_layout Standard
Consider a no-slip impermeable wall (a wall on which the fluid velocity is equal to the wall velocity,
\begin_inset Formula $\mathbf{v}=\mathbf{v}_{\Gamma}$
\end_inset
).
Let
\begin_inset Formula $\left\{ \mathbf{n},\mathbf{s},\mathbf{t}\right\} $
\end_inset
be an orthonormal basis where
\begin_inset Formula $\mathbf{n}$
\end_inset
is the outward normal to the fluid on the wall,
\begin_inset Formula $\mathbf{s}$
\end_inset
is a unit tangent to the wall along the local direction of the flow (in the immediate wall vicinity),
and
\begin_inset Formula $\mathbf{t}$
\end_inset
is a unit tangent to the wall in the direction orthogonal to
\begin_inset Formula $\mathbf{n}$
\end_inset
and
\begin_inset Formula $\mathbf{s}$
\end_inset
.
The components of the velocity gradient
\begin_inset Formula $\mathbf{L}=\grad\mathbf{v}$
\end_inset
on the wall,
when expressed in matrix form in the basis
\begin_inset Formula $\left\{ \mathbf{n},\mathbf{s},\mathbf{t}\right\} $
\end_inset
,
are zero in the directions of the wall tangent (since there is no variation in any of the velocity components along those directions).
Moreover,
by construction,
the tangential velocity component
\begin_inset Formula $v_{t}$
\end_inset
along
\begin_inset Formula $\mathbf{t}$
\end_inset
is zero,
not only on the wall but also in its vicinity (thus,
\begin_inset Formula $\partial v_{t}/\partial x_{n}=0$
\end_inset
).
Combining these factors produces
\begin_inset Formula
\begin{equation}
\left[\mathbf{L}\right]=\left[\begin{array}{ccc}
\frac{\partial v_{n}}{\partial x_{n}} & \frac{\partial v_{n}}{\partial x_{s}} & \frac{\partial v_{n}}{\partial x_{t}}\\
\frac{\partial v_{s}}{\partial x_{n}} & \frac{\partial v_{s}}{\partial x_{s}} & \frac{\partial v_{s}}{\partial x_{t}}\\
\frac{\partial v_{t}}{\partial x_{n}} & \frac{\partial v_{t}}{\partial x_{s}} & \frac{\partial v_{t}}{\partial x_{t}}
\end{array}\right]=\left[\begin{array}{ccc}
\frac{\partial v_{n}}{\partial x_{n}} & 0 & 0\\
\frac{\partial v_{s}}{\partial x_{n}} & 0 & 0\\
0 & 0 & 0
\end{array}\right]\label{eq:wss-L}
\end{equation}
\end_inset
where
\begin_inset Formula $dx_{n}$
\end_inset
,
\begin_inset Formula $dx_{s}$
\end_inset
and
\begin_inset Formula $dx_{t}$
\end_inset
represent line elements along each of the coordinate directions.
The resulting rate of deformation tensor is
\begin_inset Formula
\begin{equation}
\left[\mathbf{D}\right]=\frac{1}{2}\left(\left[\mathbf{L}\right]+\left[\mathbf{L}\right]^{T}\right)=\left[\begin{array}{ccc}
\frac{\partial v_{n}}{\partial x_{n}} & \frac{1}{2}\frac{\partial v_{s}}{\partial x_{n}} & 0\\
\frac{1}{2}\frac{\partial v_{s}}{\partial x_{n}} & 0 & 0\\
0 & 0 & 0
\end{array}\right]\label{eq:wss=D}
\end{equation}
\end_inset
Therefore the fluid stress evaluated from Eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
will typically have the form
\begin_inset Formula
\begin{equation}
\left[\boldsymbol{\sigma}\right]=-p\left[\mathbf{I}\right]+\left(\kappa-\frac{2}{3}\mu\right)\left(\tr\mathbf{D}\right)\left[\mathbf{I}\right]+2\mu\left[\mathbf{D}\right]=\left[\begin{array}{ccc}
-p+\left(\kappa+\frac{4}{3}\eta\right)\frac{\partial v_{n}}{\partial x_{n}} & \mu\frac{\partial v_{s}}{\partial x_{n}} & 0\\
\mu\frac{\partial v_{s}}{\partial x_{n}} & -p & 0\\
0 & 0 & -p
\end{array}\right]\label{eq:wss-stress}
\end{equation}
\end_inset
where
\begin_inset Formula $\kappa$
\end_inset
is the bulk viscosity and
\begin_inset Formula $\mu$
\end_inset
is the shear viscosity (which may be a function of the rate of deformation in the case of a non-Newtonian fluid),
see Eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:viscous-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Viscous-Fluids"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
From this result we conclude that the wall shear stress is
\begin_inset Formula
\begin{equation}
\sigma_{ns}=\sigma_{sn}=\mu\frac{\partial v_{s}}{\partial x_{n}}\label{eq:wss-shear-stress}
\end{equation}
\end_inset
In practice it is inconvenient to evaluate this wall shear stress in a local coordinate system attached to the wall and directed along the flow in the wall vicinity.
As it turns out,
the principal normal stresses evaluated from
\begin_inset Formula $\left[\boldsymbol{\sigma}\right]$
\end_inset
in Eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:wss-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
are
\begin_inset Formula
\begin{equation}
\begin{aligned}\sigma_{1} & =-p & \sigma_{2} & =-p+\frac{1}{2}\left(\sigma_{nn}-\sqrt{\sigma_{nn}^{2}+4\sigma_{sn}^{2}}\right) & \sigma_{3} & =-p+\frac{1}{2}\left(\sigma_{nn}+\sqrt{\sigma_{nn}^{2}+4\sigma_{sn}^{2}}\right)\end{aligned}
\label{eq:wss-principal-normal}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\sigma_{nn} & =-p+\left(\kappa+\frac{4}{3}\mu\right)\frac{\partial v_{n}}{\partial x_{n}} & \sigma_{sn} & =\mu\frac{\partial v_{s}}{\partial x_{n}}\end{aligned}
\label{eq:wss-normal-shear-tractions}
\end{equation}
\end_inset
Thus,
the maximum shear stress is
\begin_inset Formula
\begin{equation}
\begin{aligned}\sigma_{s,\text{max}} & =\max\left(\frac{\left|\sigma_{1}-\sigma_{2}\right|}{2},\frac{\left|\sigma_{2}-\sigma_{3}\right|}{2},\frac{\left|\sigma_{3}-\sigma_{1}\right|}{2}\right)\\
& =\max\left(\frac{1}{4}\left|\sigma_{nn}-\sqrt{\sigma_{nn}^{2}+4\sigma_{sn}^{2}}\right|,\frac{1}{2}\left|\sqrt{\sigma_{nn}^{2}+4\sigma_{sn}^{2}}\right|,\frac{1}{4}\left|\sigma_{nn}+\sqrt{\sigma_{nn}^{2}+4\sigma_{sn}^{2}}\right|\right)
\end{aligned}
\label{eq:wss-max-shear-stress-general}
\end{equation}
\end_inset
When the flow is incompressible it follows that
\begin_inset Formula $\tr\mathbf{D}=\frac{\partial v_{n}}{\partial x_{n}}=0$
\end_inset
,
in which case
\begin_inset Formula $\boldsymbol{\sigma}_{nn}=-p$
\end_inset
according to Eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:wss-normal-shear-tractions"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
Thus,
\begin_inset Formula
\begin{equation}
\sigma_{s,\text{max}}=\max\left(\frac{\left|\sigma_{ns}\right|}{2},\left|\sigma_{ns}\right|,\frac{\left|\sigma_{ns}\right|}{2}\right)=\left|\sigma_{sn}\right|\label{eq:wss-max-shear-incompressible}
\end{equation}
\end_inset
Therefore,
when the flow is incompressible the wall shear stress is equal to the maximum fluid shear stress.
This result makes it convenient to use the maximum fluid shear stress on the wall as the value of the wall shear stress.
Conversely,
if the flow is compressible (which is generally the case in FEBio) but as long as
\begin_inset Formula
\begin{equation}
\left|\sigma_{nn}\right|\ll2\left|\sigma_{sn}\right|\label{eq:wss-negligible-normal}
\end{equation}
\end_inset
the conclusion remains the same.
Therefore,
in most applications one can use the maximum fluid shear stress as a method for estimating the wall shear stress.
This result remains valid for problems where the wall is not stationary,
such as fluid-structure interaction problems.
In practice one can always examine the principal normal stresses in the fluid,
along the wall,
from which one can deduce if Eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:wss-negligible-normal"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
is satisfied satisfactorily.
\end_layout
\begin_layout Standard
However,
if the wall is porous or if slippage is allowed,
then the wall velocity components are not necessarily zero or negligible.
Thus,
the maximum shear stress is not always equal to the wall shear stress.
\end_layout
\begin_layout Subsection
Energy Balance
\begin_inset CommandInset label
LatexCommand label
name "subsec:CFD-Energy-Balance"
\end_inset
\end_layout
\begin_layout Standard
The energy balance for a continuum may be written in integral form over a control volume
\begin_inset Formula $V$
\end_inset
as
\begin_inset Formula
\begin{equation}
\begin{aligned}\frac{d}{dt}\int_{V}\rho\left(\varepsilon+\frac{1}{2}\mathbf{v}\cdot\mathbf{v}\right)\,dV & =-\int_{S}\rho\left(\varepsilon+\frac{1}{2}\mathbf{v}\cdot\mathbf{v}\right)\left(\mathbf{v}\cdot\mathbf{n}\right)\,dS+\int_{S}\mathbf{t}\cdot\mathbf{v}\,dS+\int_{V}\rho\mathbf{b}\cdot\mathbf{v}\,dV\\
& -\int_{S}\mathbf{q}\cdot\mathbf{n}\,dS+\int_{V}\rho r\,dV
\end{aligned}
\,,\label{eq:energy-balance-integral}
\end{equation}
\end_inset
where
\begin_inset Formula $S$
\end_inset
is the control surface bounding
\begin_inset Formula $V$
\end_inset
,
\begin_inset Formula $\varepsilon$
\end_inset
is the specific internal energy,
\begin_inset Formula $\mathbf{q}$
\end_inset
is the heat flux across
\begin_inset Formula $S$
\end_inset
,
and
\begin_inset Formula $r$
\end_inset
is the heat supply per mass to the material in
\begin_inset Formula $V$
\end_inset
resulting from other sources.
Bringing the time derivative inside the integral on the left-hand-side,
and using the divergence theorem,
this integral statement of the energy balance may be written as
\begin_inset Formula
\begin{equation}
\begin{aligned} & \int_{V}\left[\rho\left(\dot{\varepsilon}+\mathbf{v}\cdot\mathbf{a}\right)+\rho\left(\varepsilon+\frac{1}{2}\mathbf{v}\cdot\mathbf{v}\right)\left(\divg\mathbf{v}-\frac{\dot{J}}{J}\right)\right]\,dV\\
& =\int_{V}\left[\boldsymbol{\sigma}:\mathbf{D}-\divg\mathbf{q}+\rho r+\mathbf{v}\cdot\left(\divg\boldsymbol{\sigma}+\rho\mathbf{b}\right)\right]\,dV
\end{aligned}
\,.\label{eq:energy-integral-redux}
\end{equation}
\end_inset
This statement must be valid for arbitrary control volumes and arbitrary processes,
from which we conventionally derive the differential form of the axioms of mass,
momentum and energy balance.
\end_layout
\begin_layout Standard
For the specialized conditions of a viscous fluid at constant temperature assumed in our treatment,
the only state variables for the functions of state
\begin_inset Formula $\varepsilon$
\end_inset
,
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
and
\begin_inset Formula $\mathbf{q}$
\end_inset
are
\begin_inset Formula $J$
\end_inset
and
\begin_inset Formula $\mathbf{D}$
\end_inset
(i.e.,
the temperature is not a state variable since it is assumed constant).
Under these conditions the entropy inequality shows that the specific entropy
\begin_inset Formula $\eta$
\end_inset
and the heat flux
\begin_inset Formula $\mathbf{q}$
\end_inset
must be zero,
and the Cauchy stress
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
must have the form of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:stress"
nolink "false"
\end_inset
where
\begin_inset Formula $p$
\end_inset
is given by eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:elastic-pressure"
nolink "false"
\end_inset
as a function of
\begin_inset Formula $J$
\end_inset
only,
leaving the residual dissipation statement
\begin_inset Formula $\boldsymbol{\tau}:\mathbf{D}\ge0$
\end_inset
as a constraint that must be satisfied by constitutive relations for
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
.
(For a Newtonian fluid,
this constraint is satisfied when the viscosities
\begin_inset Formula $\mu$
\end_inset
and
\begin_inset Formula $\kappa$
\end_inset
are positive.) From these thermodynamic restrictions we conclude that
\begin_inset Formula $\varepsilon=\psi$
\end_inset
,
where
\begin_inset Formula $\psi$
\end_inset
is the specific (Helmholtz) free energy,
with
\begin_inset Formula $\Psi_{r}=\rho_{r}\psi$
\end_inset
.
\end_layout
\begin_layout Standard
For the conditions adopted here (isothermal viscous fluid),
the axiom of energy balance reduces to
\begin_inset Formula $\rho\dot{\psi}=\boldsymbol{\sigma}:\mathbf{D}+\rho r$
\end_inset
;
since
\begin_inset Formula $\psi$
\end_inset
is only a function of
\begin_inset Formula $J$
\end_inset
,
this expression may be further simplified using Eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:divv-kinematic-relation"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:elastic-pressure"
nolink "false"
\end_inset
to produce
\begin_inset Formula $\boldsymbol{\tau}:\mathbf{D}+\rho r=0$
\end_inset
.
In other words,
isothermal conditions may be maintained only if heat dissipated by the viscous stress is emitted in the form of a heat supply density
\begin_inset Formula $\rho r=-\boldsymbol{\tau}:\mathbf{D}$
\end_inset
(heat leaving the system).
Now,
the integral form of the energy balance in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:energy-integral-redux"
nolink "false"
\end_inset
simplifies to
\begin_inset Formula
\begin{equation}
\int_{V}\left[\mathbf{v}\cdot\left(\divg\boldsymbol{\sigma}+\rho\left(\mathbf{b}-\mathbf{a}\right)\right)+\rho\left(\psi+\frac{1}{2}\mathbf{v}\cdot\mathbf{v}\right)\left(\frac{\dot{J}}{J}-\divg\mathbf{v}\right)\right]\,dV=0\,.\label{eq:energy-isothermal-viscous}
\end{equation}
\end_inset
A comparison of this statement with the statement of virtual work,
presented below in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:virtual work"
nolink "false"
\end_inset
,
establishes a clear correspondence between the virtual velocity
\begin_inset Formula $\delta\mathbf{v}$
\end_inset
and
\begin_inset Formula $\mathbf{v}$
\end_inset
,
and between the virtual energy density
\begin_inset Formula $\delta J$
\end_inset
and
\begin_inset Formula $\rho\left(\psi+\frac{1}{2}\mathbf{v}\cdot\mathbf{v}\right)$
\end_inset
,
with the latter representing the sum of the internal (free) and kinetic energy densities.
\end_layout
\begin_layout Section
Fluid-Structure Interactions
\begin_inset CommandInset label
LatexCommand label
name "sec:Fluid-Structure-Interactions"
\end_inset
\end_layout
\begin_layout Standard
We model the fluid domain in an FSI analysis as a mixture of an isothermal compressible viscous fluid and a hyperelastic compressible solid,
where the solid has zero apparent density,
and negligible (but non-zero) elasticity
\begin_inset CommandInset citation
LatexCommand citep
key "Shim19"
literal "false"
\end_inset
.
In a mixture framework,
all mixture constituents coexist at every point in the continuum.
For our FSI implementation,
the finite element mesh is defined on the solid material,
and the negligible (but non-zero) elasticity of the solid is intended to regularize the mesh deformation.
The fluid flows through this mesh,
unimpeded by the solid.
In particular,
in this FSI model there is no frictional interaction between the fluid and solid materials inside the mixture domain (i.e.,
no Darcy-Brinkman type of friction),
but the no-slip boundary condition may be prescribed on boundaries of the mixture domain,
where applicable.
\end_layout
\begin_layout Subsection
FSI Governing Equations
\begin_inset CommandInset label
LatexCommand label
name "subsec:FSI-Governing-Equations"
\end_inset
\end_layout
\begin_layout Standard
The momentum balance for the fluid is
\begin_inset Formula
\begin{equation}
\rho^{f}\mathbf{a}^{f}=\divg\boldsymbol{\sigma}^{f}+\rho^{f}\mathbf{b}\,,\label{eq:fsi-fluid-momentum}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{b}$
\end_inset
is the external body force acting on the FSI domain,
\begin_inset Formula $\mathbf{a}^{f}$
\end_inset
is the fluid acceleration,
\begin_inset Formula
\begin{equation}
\mathbf{a}^{f}=\frac{\partial\mathbf{v}^{f}}{\partial t}+\mathbf{L}^{f}\cdot\mathbf{v}^{f}\,,\label{eq:fsi-fluid-acceleration}
\end{equation}
\end_inset
and
\begin_inset Formula $\mathbf{L}^{f}=\grad\mathbf{v}^{f}$
\end_inset
is the fluid velocity gradient.
In principle,
the same momentum equation may be used for the solid (substituting
\begin_inset Formula $f$
\end_inset
with
\begin_inset Formula $s$
\end_inset
);
however,
since we opted to let
\begin_inset Formula $\rho^{s}=0$
\end_inset
(no solid mass),
the momentum balance for the solid simply reduces to
\begin_inset Formula
\begin{equation}
\divg\boldsymbol{\sigma}^{s}=\mathbf{0}\,.\label{eq:fsi-solid-momentum}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
We model the fluid as isothermal and compressible,
consistent with our CFD implementation.
Thus,
the fluid stress may be separated into the elastic pressure
\begin_inset Formula $p\left(J^{f}\right)$
\end_inset
,
which only depends on the fluid volume ratio
\begin_inset Formula $J^{f}$
\end_inset
,
and the viscous stress
\begin_inset Formula $\boldsymbol{\tau}\left(J^{f},\mathbf{L}^{f}\right)$
\end_inset
,
as
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}^{f}=-p\mathbf{I}+\boldsymbol{\tau}\,.\label{eq:fsi-fluid-stress-split}
\end{equation}
\end_inset
Recall that there is no dependence on temperature in an isothermal formulation.
As done in our previous study,
we integrate the mass balance for the fluid to produce
\begin_inset Formula
\begin{equation}
\rho^{f}=\frac{\rho_{r}^{f}}{J^{f}}\,,\label{eq:fsi-integrated-fluid-mass}
\end{equation}
\end_inset
where
\begin_inset Formula $\rho_{r}^{f}$
\end_inset
is the fluid density in the reference state (e.g.,
under ambient pressure) and
\begin_inset Formula $J^{f}=\det\mathbf{F}^{f}$
\end_inset
,
where
\begin_inset Formula $\mathbf{F}^{f}$
\end_inset
is the fluid deformation gradient.
We also use the kinematic constraint
\begin_inset Formula
\begin{equation}
\frac{\partial J^{f}}{\partial t}+\grad J^{f}\cdot\mathbf{v}^{f}=J^{f}\divg\mathbf{v}^{f}\,,\label{eq:fsi-fluid-kinematic constraint}
\end{equation}
\end_inset
to relate the fluid volume ratio
\begin_inset Formula $J^{f}$
\end_inset
to its velocity
\begin_inset Formula $\mathbf{v}^{f}$
\end_inset
,
in the spatial frame.
\end_layout
\begin_layout Standard
The mesh through which the fluid flows is defined on the solid component of the mixture.
Therefore,
we define the relative velocity between the fluid and solid as
\begin_inset Formula
\begin{equation}
\mathbf{w}=\mathbf{v}^{f}-\mathbf{v}^{s}\,.\label{eq:fsi-fluid-relative-velocity}
\end{equation}
\end_inset
Since the solid has zero volume fraction,
this expression is the same as the flux of fluid relative to the solid.
We choose to define the nodal degrees of freedom in the mixture domain to be the relative fluid velocity
\begin_inset Formula $\mathbf{w}$
\end_inset
,
the fluid dilatation
\begin_inset Formula $e^{f}=J^{f}-1$
\end_inset
,
and the solid displacement
\begin_inset Formula $\mathbf{u}^{s}$
\end_inset
,
which is related to the solid velocity via
\begin_inset Formula $\mathbf{v}^{s}=\dot{\mathbf{u}}^{s}$
\end_inset
,
with the dot operator denoting the material time derivative following the solid.
(For notational convenience,
we will continue using
\begin_inset Formula $J^{f}$
\end_inset
in the equations below,
instead of
\begin_inset Formula $e^{f}$
\end_inset
).
Now,
\begin_inset Formula
\begin{equation}
\mathbf{v}^{f}=\mathbf{w}+\mathbf{v}^{s}\,,\label{eq:fsi-fluid-velocity}
\end{equation}
\end_inset
from which it follows that the fluid velocity gradient is
\begin_inset Formula
\begin{equation}
\mathbf{L}^{f}=\mathbf{L}^{w}+\mathbf{L}^{s}\,,\label{eq:fsi-fluid-velocity-gradient}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{L}^{w}=\grad\mathbf{w}$
\end_inset
and
\begin_inset Formula $\mathbf{L}^{s}=\grad\mathbf{v}^{s}$
\end_inset
.
The fluid acceleration may now be rewritten in terms of the FEA degrees of freedom as
\begin_inset Formula
\begin{equation}
\mathbf{a}^{f}=\dot{\mathbf{w}}+\dot{\mathbf{v}}^{s}+\left(\mathbf{L}^{w}+\mathbf{L}^{s}\right)\cdot\mathbf{w}\,,\label{eq:fsi-fluid-acceleration-redux}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\dot{\mathbf{v}}^{s} & =\frac{\partial\mathbf{v}^{s}}{\partial t}+\mathbf{L}^{s}\cdot\mathbf{v}^{s}\\
\dot{\mathbf{w}} & =\frac{\partial\mathbf{w}}{\partial t}+\mathbf{L}^{w}\cdot\mathbf{v}^{s}
\end{aligned}
\label{eq:fsi-vs-w-material-derivs}
\end{equation}
\end_inset
are the material time derivatives of the solid and relative fluid velocities,
in the frame following the solid.
We conveniently use this material time derivative (instead of the material time derivative following the fluid) since we define the mixture domain mesh on the solid.
\end_layout
\begin_layout Standard
Similarly,
the kinematic constraint relating
\begin_inset Formula $J^{f}$
\end_inset
and
\begin_inset Formula $\mathbf{v}^{f}$
\end_inset
may be rewritten as
\begin_inset Formula
\begin{equation}
\dot{J}^{f}+\grad J^{f}\cdot\mathbf{w}=J^{f}\divg\left(\mathbf{w}+\mathbf{v}^{s}\right)\,,\label{eq:fsi-fluid-kinematic-redux}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\dot{J}^{f}=\frac{\partial J^{f}}{\partial t}+\grad J^{f}\cdot\mathbf{v}^{s}\,.\label{eq:fsi-dilatation-material-deriv}
\end{equation}
\end_inset
Finally,
as done routinely in our studies of biphasic and multiphasic materials,
we find it convenient to substitute the kinematic identity
\begin_inset Formula
\begin{equation}
\divg\mathbf{v}^{s}=\frac{\dot{J}^{s}}{J^{s}}\,,\label{eq:fsi-solid-kinematic-constraint}
\end{equation}
\end_inset
where
\begin_inset Formula $J^{s}=\det\mathbf{F}^{s}$
\end_inset
and
\begin_inset Formula $\mathbf{F}^{s}=\mathbf{I}+\Grad\mathbf{u}^{s}$
\end_inset
is the solid deformation gradient.
\end_layout
\begin_layout Standard
In summary,
the governing equations for the FSI mixture domain are
\begin_inset Formula
\begin{equation}
\begin{aligned} & \divg\boldsymbol{\sigma}^{s}=\mathbf{0}\\
& \rho^{f}\mathbf{a}^{f}=\divg\boldsymbol{\sigma}^{f}+\rho^{f}\mathbf{b}\\
& \frac{1}{J^{f}}\left(\dot{J}^{f}+\grad J^{f}\cdot\mathbf{w}\right)=\divg\mathbf{w}+\frac{\dot{J}^{s}}{J^{s}}
\end{aligned}
\label{eq:fsi-governing-equations}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{a}^{f}$
\end_inset
is given in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:fsi-fluid-acceleration-redux"
nolink "false"
\end_inset
above.
\end_layout
\begin_layout Section
Hybrid Biphasic Material
\begin_inset CommandInset label
LatexCommand label
name "sec:Hybrid-Biphasic-Material"
\end_inset
\end_layout
\begin_layout Standard
In FEBio,
the standard biphasic material consists of a mixture of intrinsically incompressible solid and fluid constituents,
as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Biphasic-Material"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
In this standard material,
the solid and fluid dynamics are neglected,
as well as the fluid viscosity.
When a user wishes to consider these dynamics effects,
as well as fluid viscosity,
they may use a hybrid biphasic material,
as described in this section.
The complete theoretical framework for such materials can be found in
\begin_inset CommandInset citation
LatexCommand citep
key "Shim22"
literal "false"
\end_inset
.
A hybrid biphasic domain is a mixture of an isothermal compressible viscous fluid and a hyperelastic compressible porous solid whose solid skeleton is intrinsically incompressible.
Unlike the fluid-FSI material,
here the solid has non-negligible mass density and elasticity,
and frictional interactions may occur between the fluid and solid constituents,
modeled using a hydraulic permeability (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Hydraulic-Permeability"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
In FEBio,
the hybrid biphasic material is called
\begin_inset Quotes eld
\end_inset
biphasic-FSI
\begin_inset Quotes erd
\end_inset
,
since it allows dynamic fluid-structure interactions between this material and a fluid-FSI material,
or a solid material.
Here,
we may abbreviate
\begin_inset Quotes eld
\end_inset
biphasic-FSI
\begin_inset Quotes erd
\end_inset
as BFSI.
For BFSI domains,
as with standard biphasic domains,
the finite element mesh is defined on the porous solid material.
The viscous fluid flows through this mesh,
experiencing frictional drag caused by the porous solid.
When two BFSI domains are interfaced,
or when a BFSI domain is interfaced with a fluid-FSI domain,
the pseudo-no slip condition
\begin_inset CommandInset citation
LatexCommand citep
key "Hou89"
literal "false"
\end_inset
is enforced automatically on those interfaces.
When a BFSI domain interfaces with a solid domain,
the no-slip boundary condition has to be prescribed explicitly on those interfaces,
where applicable.
\end_layout
\begin_layout Subsection
BFSI Governing Equations
\begin_inset CommandInset label
LatexCommand label
name "subsec:BFSI-Governing-Equations"
\end_inset
\end_layout
\begin_layout Standard
We model the BFSI domain as an unconstrained mixture of an isothermal,
compressible,
and viscous fluid and an isothermal,
deformable porous solid whose skeleton material is intrinsically incompressible.
As usual in mixture theory,
each constituent
\begin_inset Formula $\alpha$
\end_inset
(
\begin_inset Formula $\alpha=s,f$
\end_inset
for solid and fluid,
respectively) has its own apparent density
\begin_inset Formula $\rho^{\alpha}=dm^{\alpha}/dV$
\end_inset
,
which represents the ratio of the elemental mass
\begin_inset Formula $dm^{\alpha}$
\end_inset
of constituent
\begin_inset Formula $\alpha$
\end_inset
in the elemental mixture volume
\begin_inset Formula $dV$
\end_inset
.
This apparent density is related to the true density
\begin_inset Formula $\rho_{T}^{\alpha}=dm^{\alpha}/dV^{\alpha}$
\end_inset
(mass of
\begin_inset Formula $\alpha$
\end_inset
per volume of
\begin_inset Formula $\alpha$
\end_inset
) via
\begin_inset Formula $\rho^{\alpha}=\varphi^{\alpha}\rho_{T}^{\alpha}$
\end_inset
,
where
\begin_inset Formula $\varphi^{\alpha}=dV^{\alpha}/dV$
\end_inset
is the volume fraction of
\begin_inset Formula $\alpha$
\end_inset
in the mixture,
satisfying
\begin_inset Formula $\varphi^{s}+\varphi^{f}=1$
\end_inset
.
Since the solid skeleton is intrinsically incompressible,
\begin_inset Formula $\rho_{T}^{s}$
\end_inset
is constant.
The boundaries of a biphasic domain are defined on the porous solid matrix.
The deformation gradient of the solid is denoted by
\begin_inset Formula $\mathbf{F}^{s}$
\end_inset
and its determinant,
\begin_inset Formula $J^{s}=\det\mathbf{F}^{s}=dV/dV_{r}$
\end_inset
,
represents the ratio of the mixture elemental volumes in the current (
\begin_inset Formula $dV$
\end_inset
) and reference (
\begin_inset Formula $dV_{r}$
\end_inset
) configurations.
Thus,
since the solid skeleton is intrinsically incompressible,
\begin_inset Formula $J^{s}$
\end_inset
purely represents the compressibility of the pore volume as fluid enters or leaves the pore space,
or as the compressible fluid within the pores changes in volume.
The axiom of mass balance for the solid may be integrated in closed form to produce
\begin_inset Formula $\rho^{s}=\rho_{r}^{s}/J^{s}$
\end_inset
,
where
\begin_inset Formula $\rho_{r}^{s}=dm^{s}/dV_{r}$
\end_inset
is the solid apparent density in the mixture reference configuration.
Therefore,
we may define the referential solid volume fraction as
\begin_inset Formula $\varphi_{r}^{s}=\rho_{r}^{s}/\rho_{T}^{s}$
\end_inset
.
In the finite element analysis,
\begin_inset Formula $\varphi_{r}^{s}=dV^{s}/dV_{r}$
\end_inset
and
\begin_inset Formula $\rho_{T}^{s}$
\end_inset
are both specified by the user,
then
\begin_inset Formula $\rho_{r}^{s}$
\end_inset
,
\begin_inset Formula $\rho^{s}$
\end_inset
,
\begin_inset Formula $\varphi^{s}$
\end_inset
and
\begin_inset Formula $\varphi^{f}$
\end_inset
are evaluated from the above relations,
given a solution for
\begin_inset Formula $\mathbf{F}^{s}$
\end_inset
(and thus,
\begin_inset Formula $J^{s}$
\end_inset
).
The solution for
\begin_inset Formula $\mathbf{F}^{s}=\mathbf{I}+\Grad\mathbf{u}$
\end_inset
is obtained by solving for the nodal solid displacement vector
\begin_inset Formula $\mathbf{u}$
\end_inset
,
where
\begin_inset Formula $\Grad\left(\cdot\right)$
\end_inset
represents the gradient operator in the material frame.
\end_layout
\begin_layout Standard
For the compressible fluid phase of a hybrid biphasic material,
the true density
\begin_inset Formula $\rho_{T}^{f}$
\end_inset
varies with the intrinsic fluid volumetric strain,
or dilatation,
\begin_inset Formula $e^{f}=J^{f}-1$
\end_inset
,
where
\begin_inset Formula $J^{f}$
\end_inset
is the volume ratio of the fluid in its current and reference configurations,
\begin_inset Formula $dm^{f}$
\end_inset
is the element mass of fluid and
\begin_inset Formula $dV^{f}$
\end_inset
is the elemental volume of that fluid in the pores of the mixture,
in the current configuration.
It follows from this definition that
\begin_inset Formula
\begin{equation}
J^{f}=\frac{dV^{f}}{dV_{r}^{f}}=\frac{dV^{f}}{dm^{f}}\frac{dm^{f}}{dV_{r}^{f}}=\frac{\rho_{Tr}^{f}}{\rho_{T}^{f}}\thinspace,\label{eq:bfsi-Jf}
\end{equation}
\end_inset
where
\begin_inset Formula $dV_{r}^{f}$
\end_inset
is the elemental volume of this same fluid (having the same elemental mass
\begin_inset Formula $dm^{f}$
\end_inset
) in the fluid's reference configuration.
Thus,
\begin_inset Formula $\rho_{Tr}^{f}=dm^{f}/dV_{r}^{f}$
\end_inset
is a constant representing the true fluid density in its reference configuration,
which is specified by the user.
Accordingly,
\begin_inset Formula $J^{f}=1$
\end_inset
in the limit when the fluid is idealized to be intrinsically incompressible.
This definition of
\begin_inset Formula $J^{f}$
\end_inset
is consistent with that for a pure fluid,
as shown in our earlier formulation of computational fluid dynamics
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian18"
literal "false"
\end_inset
.
As shown above,
\begin_inset Formula $\rho^{f}$
\end_inset
may be evaluated as
\begin_inset Formula $\varphi^{f}\rho_{T}^{f}$
\end_inset
,
which now expands into an expression involving solid and fluid volume ratios,
\begin_inset Formula
\begin{equation}
\rho^{f}=\left(1-\frac{\varphi_{r}^{s}}{J^{s}}\right)\frac{\rho_{Tr}^{f}}{J^{f}}\,.\label{eq:bfsi-rhof-Jf-Js}
\end{equation}
\end_inset
The limiting case when the fluid within the solid matrix pores has been completely squeezed out corresponds to
\begin_inset Formula $\rho^{f}=0$
\end_inset
(or
\begin_inset Formula $dm^{f}=0$
\end_inset
).
Based on the above relation,
this is equivalent to having the entire mixture volume
\begin_inset Formula $dV$
\end_inset
reduce to the solid volume
\begin_inset Formula $dV^{s}$
\end_inset
in the current configuration,
or equivalently
\begin_inset Formula $J^{s}=\varphi_{r}^{s}$
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10"
literal "false"
\end_inset
.
In this limiting case,
the mixture becomes an intrinsically incompressible solid and the finite element formulation presented in this study no longer applies.
\end_layout
\begin_layout Standard
We assume that
\begin_inset Formula $\mathbf{F}^{s}=\mathbf{I}$
\end_inset
(or equivalently,
\begin_inset Formula $\mathbf{u}=\mathbf{0}$
\end_inset
) and
\begin_inset Formula $e^{f}=0$
\end_inset
at the start of a finite element analysis.
The fluid dilatation
\begin_inset Formula $e^{f}$
\end_inset
is included as a nodal degree of freedom,
implying that it is continuous across finite element boundaries.
This assumption is verified below,
when we review the jump conditions on axioms of mass,
momentum and energy balance across interfaces.
\end_layout
\begin_layout Standard
Since the axiom of mass balance for the solid has already been solved in closed form,
we only need to be concerned with the axiom of mass balance for the fluid,
or alternatively,
that of the mixture,
which takes the form
\begin_inset Formula
\begin{equation}
\frac{D^{f}J^{f}}{Dt}=\frac{J^{f}}{\varphi^{f}}\divg\left(\mathbf{v}^{s}+\mathbf{w}\right)\thinspace,\label{eq:bfsi-mix-mass-balance-f}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{v}^{s}$
\end_inset
is the solid velocity (the material time derivative of the solid displacement
\begin_inset Formula $\mathbf{u}$
\end_inset
),
and
\begin_inset Formula
\begin{equation}
\mathbf{w}=\varphi^{f}\left(\mathbf{v}^{f}-\mathbf{v}^{s}\right)\thinspace\label{eq:bfsi-fluid-flux}
\end{equation}
\end_inset
is the volumetric flux of the fluid relative to the solid ,
with
\begin_inset Formula $\mathbf{v}^{f}$
\end_inset
representing the fluid velocity.
Here,
\begin_inset Formula $D^{f}\left(\cdot\right)/Dt$
\end_inset
is the material time derivative operator in the spatial frame,
following the fluid motion.
Since the finite element mesh is defined on the porous solid matrix of a biphasic mixture,
and since the fluid flows relative to the solid,
material time derivatives need to follow the solid motion in the finite element implementation.
A similar scheme was used in our implementations of solute transport within deformable porous domains (Sections
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Triphasic-Multiphasic-Materials"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
),
to account for the motion of solutes relative to the porous solid matrix,
as well as in our FSI formulation (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Fluid-Structure-Interactions"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
)
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian12,Ateshian13,Shim19"
literal "true"
\end_inset
.
Thus,
we substitute the following identity,
\begin_inset Formula
\begin{equation}
\begin{aligned}\frac{D^{f}J^{f}}{Dt} & =\frac{\partial J^{f}}{\partial t}+\grad J^{f}\cdot\mathbf{v}^{f}\\
& =\frac{D^{s}J^{f}}{Dt}+\grad J^{f}\cdot\left(\mathbf{v}^{f}-\mathbf{v}^{s}\right)
\end{aligned}
\,,\label{eq:bfsi-DfJf-DsJf}
\end{equation}
\end_inset
into the axiom of mixture mass balance in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-mix-mass-balance-f"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
to produce the final form
\begin_inset Formula
\begin{equation}
\dot{J}^{f}+\frac{1}{\varphi^{f}}\grad J^{f}\cdot\mathbf{w}=\frac{J^{f}}{\varphi^{f}}\divg\left(\mathbf{v}^{s}+\mathbf{w}\right)\,.\label{eq:bfsi-fluid-kin-constr}
\end{equation}
\end_inset
In this expression,
the dot operator in
\begin_inset Formula $\dot{J}^{f}$
\end_inset
represents the material time derivative following the solid motion.
In the solid material frame,
this material time derivative reduces to the partial time derivative.
Accordingly,
we may now write
\begin_inset Formula $\mathbf{v}^{s}=\dot{\mathbf{u}}$
\end_inset
.
In the BFSI implementation,
the fluid volumetric flux
\begin_inset Formula $\mathbf{w}$
\end_inset
relative to the solid is added to the list of nodal DOFs,
giving us the complete set
\begin_inset Formula $\left(\mathbf{u},\mathbf{w},e^{f}\right)$
\end_inset
.
This choice implies that
\begin_inset Formula $\mathbf{w}$
\end_inset
is continuous across finite element boundaries,
as justified further below when we review jump conditions across interfaces.
\end_layout
\begin_layout Standard
Based on the constitutive assumptions of our hybrid biphasic formulation
\begin_inset CommandInset citation
LatexCommand citep
key "Shim22"
literal "false"
\end_inset
,
the momentum balance equations for the fluid and solid constituents reduce to
\begin_inset Formula
\begin{equation}
\rho^{f}\mathbf{a}^{f}=-\varphi^{f}\grad p+\divg\boldsymbol{\tau}^{f}+\rho^{f}\mathbf{b}^{f}-\varphi^{f}\mathbf{k}^{-1}\cdot\mathbf{w}\,,\label{eq:bfsi-fluid-momentum}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\rho^{s}\mathbf{a}^{s}=-\varphi^{s}\grad p+\divg\boldsymbol{\sigma}^{e}+\rho^{s}\mathbf{b}^{s}+\varphi^{f}\mathbf{k}^{-1}\cdot\mathbf{w}\,,\label{eq:bfsi-solid-momentum}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{a}^{\alpha}=D^{\alpha}\mathbf{v}^{\alpha}/Dt$
\end_inset
is the acceleration,
\begin_inset Formula $\mathbf{b}^{\alpha}$
\end_inset
is the body force per mass acting on constituent
\begin_inset Formula $\alpha$
\end_inset
,
\begin_inset Formula $p$
\end_inset
is the fluid pressure,
\begin_inset Formula $\boldsymbol{\tau}^{f}$
\end_inset
is the apparent fluid viscous stress,
and
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
is the apparent solid elastic stress.
These stress tensors are called apparent because their associated traction vectors represent a force acting on constituent
\begin_inset Formula $\alpha$
\end_inset
per elemental
\emph on
mixture
\emph default
area.
Here,
\begin_inset Formula $\mathbf{k}$
\end_inset
is the hydraulic permeability tensor which regulates frictional drag between the fluid and solid constituents;
setting
\begin_inset Formula $\mathbf{k}^{-1}$
\end_inset
to
\begin_inset Formula $\mathbf{0}$
\end_inset
implies that this frictional drag is non-existent.
Since the fluid is compressible,
its pressure must be given by a function of state.
In the isothermal framework used here,
this function only depends on
\begin_inset Formula $e^{f}$
\end_inset
,
and the form adopted in FEBio is
\begin_inset Formula
\begin{equation}
p=-Ke^{f}\,,\label{eq:bfsi-pressure-state}
\end{equation}
\end_inset
where
\begin_inset Formula $K$
\end_inset
is the fluid bulk modulus (a user-specified material property).
In the limit when inertia and body forces are neglected (
\begin_inset Formula $\mathbf{a}^{f}=\mathbf{b}^{f}=\mathbf{0}$
\end_inset
),
the fluid momentum balance
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-fluid-momentum"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
produces the classical Darcy-Brinkman relation
\begin_inset CommandInset citation
LatexCommand citep
key "Brinkman49"
literal "false"
\end_inset
.
If the fluid viscous stress is also neglected (
\begin_inset Formula $\boldsymbol{\tau}^{f}=\mathbf{0}$
\end_inset
),
we recover Darcy's law,
\begin_inset Formula $\mathbf{w}=-\mathbf{k}\cdot\grad p$
\end_inset
.
\end_layout
\begin_layout Standard
Since the finite element implementation requires all material time derivatives to follow the motion of the solid,
we recognize that
\begin_inset Formula $\mathbf{a}^{s}=\ddot{\mathbf{u}}$
\end_inset
and we evaluate the fluid acceleration as
\begin_inset Formula $\mathbf{a}^{f}=\dot{\mathbf{v}}^{f}+\grad\mathbf{v}^{f}\cdot\left(\mathbf{v}^{f}-\mathbf{v}^{s}\right)$
\end_inset
.
However,
since
\begin_inset Formula $\mathbf{v}^{f}$
\end_inset
is not a nodal degree of freedom,
we use eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-fluid-flux"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
to substitute
\begin_inset Formula
\begin{equation}
\mathbf{v}^{f}=\frac{1}{\varphi^{f}}\mathbf{w}+\mathbf{v}^{s}\label{eq:bfsi-fluid-velocity}
\end{equation}
\end_inset
into this expression.
It follows that the fluid velocity gradient
\begin_inset Formula $\mathbf{L}^{f}=\grad\mathbf{v}^{f}$
\end_inset
may be evaluated as
\begin_inset Formula
\begin{equation}
\mathbf{L}^{f}=\mathbf{L}^{s}+\frac{1}{\varphi^{f}}\left(\mathbf{L}^{w}-\frac{1}{\varphi^{f}}\mathbf{w}\otimes\grad\varphi^{f}\right)\,,\label{eq:bfsi-Lf}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{L}^{w}=\grad\mathbf{w}$
\end_inset
and
\begin_inset Formula $\mathbf{L}^{s}=\grad\mathbf{v}^{s}$
\end_inset
.
Now,
the fluid acceleration takes the form
\begin_inset Formula
\begin{equation}
\mathbf{a}^{f}=\frac{1}{\varphi^{f}}\left(\dot{\mathbf{w}}+\phi^{f}\ddot{\mathbf{u}}-\frac{\varphi^{s}}{\varphi^{f}}\frac{\dot{J}^{s}}{J^{s}}\mathbf{w}+\mathbf{L}^{f}\cdot\mathbf{w}\right)\,.\label{eq:bfsi-af}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
BFSI Continuous Variables
\begin_inset CommandInset label
LatexCommand label
name "subsec:BFSI-Continuous-Variables"
\end_inset
\end_layout
\begin_layout Standard
Jump conditions on the axioms of mass,
momentum and energy balance are needed to determine which variables may be selected as nodal DOFs in the finite element implementation,
and which tractions are naturally continuous across an interface.
The full set of jump conditions for a hybrid biphasic material were derived in our recent study for the constitutive assumptions adopted in this formulation
\begin_inset CommandInset citation
LatexCommand citep
key "Shim22"
literal "false"
\end_inset
.
Here,
we summarize the salient results,
which apply to an interface defined on the porous solid matrix of the hybrid biphasic domain,
which includes the shared faces of adjoining biphasic elements.
Thus,
the velocity of the interface is given by the velocity
\begin_inset Formula $\mathbf{v}^{s}$
\end_inset
of the solid constituent of the hybrid biphasic material.
We employ the notation
\begin_inset Formula $\left[\left[f\right]\right]=f_{+}-f_{-}$
\end_inset
to denote the jump in the function
\begin_inset Formula $f$
\end_inset
across the interface
\begin_inset Formula $\Gamma$
\end_inset
,
with
\begin_inset Formula $f_{+}$
\end_inset
and
\begin_inset Formula $f_{-}$
\end_inset
denoting the values of
\begin_inset Formula $f$
\end_inset
on either side of
\begin_inset Formula $\Gamma$
\end_inset
.
The unit normal on
\begin_inset Formula $\Gamma$
\end_inset
is
\series bold
\begin_inset Formula $\mathbf{n}$
\end_inset
\series default
,
which points away from the
\begin_inset Formula $+$
\end_inset
side.
A variable
\begin_inset Formula $f$
\end_inset
which is continuous across
\begin_inset Formula $\Gamma$
\end_inset
satisfies
\begin_inset Formula $\left[\left[f\right]\right]=0$
\end_inset
.
\end_layout
\begin_layout Standard
Based on the jump condition on the axiom of mass balance,
the normal component of the mass flux of the fluid relative to the solid is continuous across
\begin_inset Formula $\Gamma$
\end_inset
,
\begin_inset Formula $\left[\left[\rho_{T}^{f}\mathbf{w}\right]\right]\cdot\mathbf{n}=0$
\end_inset
.
Furthermore,
a sufficient condition to satisfy the jump on the axiom of energy balance is to enforce continuity of the fluid specific free enthalpy (also known as the Gibbs function),
\begin_inset Formula $\left[\left[\psi^{f}+p/\rho_{T}^{f}\right]\right]=0$
\end_inset
,
where
\begin_inset Formula $\psi^{f}$
\end_inset
is the fluid specific free energy.
This jump condition applies only when there is fluid on both sides of the interface
\begin_inset Formula $\Gamma$
\end_inset
.
In an isothermal framework the specific free enthalpy is a function of state that only depends on
\begin_inset Formula $J^{f}$
\end_inset
,
therefore this energy jump condition implies that
\begin_inset Formula $J^{f}$
\end_inset
must be continuous across
\begin_inset Formula $\Gamma$
\end_inset
,
thus
\begin_inset Formula
\begin{equation}
\left[\left[J^{f}\right]\right]=0\,,\label{eq:bfsi-Jf-jump}
\end{equation}
\end_inset
also implying that
\begin_inset Formula $\left[\left[p\right]\right]=0$
\end_inset
.
Given eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-Jf"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
it follows that
\begin_inset Formula $\left[\left[\rho_{T}^{f}\right]\right]=0$
\end_inset
and the mass balance jump condition reduces to
\begin_inset Formula $\left[\left[\mathbf{w}\right]\right]\cdot\mathbf{n}=0$
\end_inset
,
implying that the relative fluid flux component normal to
\begin_inset Formula $\Gamma$
\end_inset
must be continuous.
For the tangential component of
\begin_inset Formula $\mathbf{w}$
\end_inset
on
\begin_inset Formula $\Gamma$
\end_inset
we appeal to the analysis of Hou et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Hou89"
literal "false"
\end_inset
,
who showed that a valid pseudo-noslip condition requires this tangential component to be continuous.
Combining these two jump conditions produces
\begin_inset Formula
\begin{equation}
\left[\left[\mathbf{w}\right]\right]=0\,.\label{eq:bfsi-fluid-flux-jump}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
The momentum jump condition requires that the mixture traction be continuous across
\begin_inset Formula $\Gamma$
\end_inset
,
thus
\begin_inset Formula $\left[\left[-p\mathbf{I}+\boldsymbol{\sigma}^{e}+\boldsymbol{\tau}^{f}\right]\right]\cdot\mathbf{n}=\mathbf{0}$
\end_inset
.
Since
\begin_inset Formula $\left[\left[p\right]\right]=0$
\end_inset
based on the energy jump,
this mixture momentum jump condition reduces to
\begin_inset Formula
\begin{equation}
\left[\left[\boldsymbol{\sigma}^{e}+\boldsymbol{\tau}^{f}\right]\right]\cdot\mathbf{n}=0\,.\label{eq:bfsi-mix-mtm-jump}
\end{equation}
\end_inset
Finally,
another relation which is sufficient to satisfy the jump condition on the energy balance is the continuity of the true fluid traction (force acting on fluid per fluid area),
\begin_inset Formula
\begin{equation}
\left[\left[\frac{\boldsymbol{\tau}^{f}}{\varphi^{f}}\right]\right]\cdot\mathbf{n}=0\,.\label{eq:bfsi-fluid-mtm-jump}
\end{equation}
\end_inset
This jump condition eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-fluid-mtm-jump"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
which also applies only if fluid is present on both sides of
\begin_inset Formula $\Gamma$
\end_inset
,
is interesting because it implies that the viscous stress (and thus,
the viscosity) of a fluid flowing in a porous solid matrix scales with the porosity of that medium,
such that
\begin_inset Formula $\boldsymbol{\tau}^{f}=\phi^{f}\boldsymbol{\tau}$
\end_inset
where
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
would be the true fluid viscous stress.
Thus,
we can use FEBio's various constitutive relations for the viscous stress
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
of Newtonian or non-Newtonian fluids and adapt those models to a biphasic mixture where
\begin_inset Formula $\boldsymbol{\tau}^{f}$
\end_inset
is evaluated as
\begin_inset Formula $\varphi^{f}\boldsymbol{\tau}$
\end_inset
.
Accordingly,
the contribution of
\begin_inset Formula $\boldsymbol{\tau}^{f}$
\end_inset
would properly reduce to zero in the limit as fluid content reduces to zero (
\begin_inset Formula $\varphi^{f}\to0$
\end_inset
),
in which case the mixture momentum jump in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-mix-mtm-jump"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
would reduce to
\begin_inset Formula $\left[\left[-p\mathbf{I}+\boldsymbol{\sigma}^{e}\right]\right]\cdot\mathbf{n}=\left[\left[\boldsymbol{\sigma}^{e}\right]\right]\cdot\mathbf{n}=0$
\end_inset
,
since
\begin_inset Formula $\left[\left[p\right]\right]=0$
\end_inset
.
\end_layout
\begin_layout Standard
Letting
\begin_inset Formula $\mathbf{w}$
\end_inset
and
\begin_inset Formula $J^{f}$
\end_inset
be nodal DOFs automatically enforces the jump conditions eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-Jf-jump"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
and eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-fluid-flux-jump"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
acting as essential boundary conditions,
along with the solid displacement
\begin_inset Formula $\mathbf{u}$
\end_inset
.
Finally,
subtracting eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-fluid-mtm-jump"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
from eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-mix-mtm-jump"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
we obtain the momentum jump condition for the solid constituent,
\begin_inset Formula
\begin{equation}
\left[\left[-\frac{\varphi^{s}}{\varphi^{f}}\boldsymbol{\tau}^{f}+\boldsymbol{\sigma}^{e}\right]\right]\cdot\mathbf{n}=0\,.\label{eq:bfsi-solid-mtm-jump}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
A BFSI domain may be reduced to a FSI domain by letting
\begin_inset Formula $\varphi_{r}^{s}\to0$
\end_inset
and
\begin_inset Formula $\mathbf{k}^{-1}\to\mathbf{0}$
\end_inset
;
the solid matrix would still be ascribed a material response but its stiffness would need to be negligible.
The number of nodal DOFs would remain the same.
The CFD domain is a special case of the FSI domain where the mesh displacement is uniformly
\begin_inset Formula $\mathbf{u}=\mathbf{0}$
\end_inset
.
\end_layout
\begin_layout Standard
However,
when the biphasic domain interfaces with a non-porous solid domain across
\begin_inset Formula $\Gamma^{bs}$
\end_inset
,
the jump conditions eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-Jf-jump"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
on
\begin_inset Formula $J^{f}$
\end_inset
and eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-solid-mtm-jump"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
on
\begin_inset Formula $\boldsymbol{\tau}^{f}$
\end_inset
don't apply.
In that case,
the jump condition eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-fluid-flux-jump"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
on the relative fluid volumetric flux should reduce to
\begin_inset Formula $\mathbf{w}=\mathbf{0}$
\end_inset
for the BFSI domain on
\begin_inset Formula $\Gamma^{bs}$
\end_inset
,
although the user would have to enforce this no-slip condition explicitly by prescribing it as an essential boundary condition.
The mixture momentum jump
\begin_inset Formula $\left[\left[-p\mathbf{I}+\boldsymbol{\sigma}^{e}+\boldsymbol{\tau}^{f}\right]\right]\cdot\mathbf{n}=\mathbf{0}$
\end_inset
implies that the mixture traction on the BFSI side of an interface with a solid is equal to the solid traction on the solid side.
This jump condition would also need to be enforced explicitly.
\end_layout
\begin_layout Section
Fluid-Solutes Analyses
\begin_inset CommandInset label
LatexCommand label
name "sec:Fluid-Solutes-Analyses"
\end_inset
\end_layout
\begin_layout Standard
Fluid-solutes analyses combine solute transport with fluid mechanics.
The fluid-solutes domain,
denoted by
\begin_inset Formula $\Omega^{f}$
\end_inset
,
is a hybrid multiphasic domain without a deformable porous solid matrix
\begin_inset CommandInset citation
LatexCommand citep
key "Shim22a"
literal "false"
\end_inset
.
Like the CFD domain,
the CFD-solutes domain is fixed in space,
and the fluid flows within it and possibly across its boundaries.
The boundaries
\begin_inset Formula $\partial\Omega^{f}$
\end_inset
of
\begin_inset Formula $\Omega^{f}$
\end_inset
,
and interfaces within this domain (such as faces of adjoining finite elements),
are denoted generically by
\begin_inset Formula $\Gamma^{f}$
\end_inset
.
In the current implementation,
finite element domains that meet at these interfaces share common nodes and element faces,
though it is possible to consider future extensions where tied interfaces are used to connect dissimilar meshes.
The formulation and finite element implementation of this type of domain are presented below,
using only salient governing equations simplified from the more general hybrid multiphasic theory presented in our recent study
\begin_inset CommandInset citation
LatexCommand citep
key "Shim22a"
literal "false"
\end_inset
.
\end_layout
\begin_layout Subsection
Governing Equations
\begin_inset CommandInset label
LatexCommand label
name "subsec:CFD-Solutes-Equations"
\end_inset
\end_layout
\begin_layout Standard
We model the domain
\begin_inset Formula $\Omega^{f}$
\end_inset
as a mixture of an isothermal,
compressible,
and viscous solvent which is electrically neutral,
and isothermal,
intrinsically incompressible,
and dilute solute constituents which may be electrically charged.
All solute accelerations are neglected,
since they contribute insignificantly in comparison with diffusive forces,
except in problems such as centrifugation,
where they can be represented by an external inertial body force.
Unlike the standard (Darcy flow through a porous-deformable) multiphasic domain
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian07b,Ateshian13,Ateshian14"
literal "false"
\end_inset
,
the fluid-solutes domain is fixed in space.
We denote the mixture constituents using a superscripted
\begin_inset Formula $\alpha$
\end_inset
,
where
\begin_inset Formula $\alpha=f,\iota$
\end_inset
for solvent and solutes,
respectively.
The volume fraction
\begin_inset Formula $\varphi^{\iota}$
\end_inset
of each solute species
\begin_inset Formula $\iota$
\end_inset
is assumed to be negligible (
\begin_inset Formula $\varphi^{\iota}\ll1$
\end_inset
),
therefore the volume fraction of the solvent is
\begin_inset Formula $\varphi^{f}=dV^{f}/dV\approx1$
\end_inset
.
The apparent density of each constituent
\begin_inset Formula $\alpha$
\end_inset
is
\begin_inset Formula $\rho^{\alpha}=dm^{\alpha}/dV$
\end_inset
,
which represents the ratio of the elemental mass
\begin_inset Formula $dm^{\alpha}$
\end_inset
of constituent
\begin_inset Formula $\alpha$
\end_inset
in the elemental fluid mixture volume.
Under these assumptions,
the true density of the solvent simplifies to
\begin_inset Formula $\rho_{T}^{f}=\rho^{f}$
\end_inset
while the true density
\begin_inset Formula $\rho_{T}^{\iota}$
\end_inset
of each solute
\begin_inset Formula $\iota$
\end_inset
is constant due to its intrinsic incompressibility.
Since the solvent is compressible,
as was done in the fluid mechanics formulation
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian18"
literal "false"
\end_inset
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Fluid-Mechanics"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
),
the solvent volume ratio
\begin_inset Formula $J^{f}$
\end_inset
was employed as a kinematic state variable to represent the fluid volumetric strain,
\begin_inset Formula
\begin{equation}
J^{f}=\frac{\rho_{r}^{f}}{\rho^{f}}\thinspace,\label{eq:Fluid-Dil-CFDSol}
\end{equation}
\end_inset
where
\begin_inset Formula $\rho_{r}^{f}$
\end_inset
is the referential solvent density (
\begin_inset Formula $\rho^{f}$
\end_inset
in the reference configuration),
which is a user-specified material constant.
An alternative representation of fluid volumetric strain is the fluid dilatation,
\begin_inset Formula $e^{f}=J^{f}-1$
\end_inset
,
which is used in the actual finite element code.
\end_layout
\begin_layout Standard
The axiom of mass balance for the mixture takes the form
\begin_inset Formula
\begin{equation}
\frac{D^{f}J^{f}}{Dt}=J^{f}\left(\divg\mathbf{v}^{f}-\sum_{\iota}\frac{\hat{\rho}^{\iota}}{\rho_{T}^{\iota}}\right)\thinspace,\label{eq:Mix-Mass-Bal-CFDSol}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{v}^{f}$
\end_inset
is the velocity of the fluid constituent and
\begin_inset Formula $\hat{\rho}^{\iota}$
\end_inset
is the mass density supply to
\begin_inset Formula $\iota$
\end_inset
due to reactions with all other solutes.
It is assumed that reactions do not add or remove solvent mass (
\begin_inset Formula $\hat{\rho}^{f}=0$
\end_inset
).
Here,
\begin_inset Formula $D^{f}\left(\cdot\right)/Dt=\partial\left(\cdot\right)/\partial t+\grad\left(\cdot\right)\cdot\mathbf{v}^{f}$
\end_inset
is the material time derivative operator in the spatial frame,
following the fluid motion.
The mixture mass balance reproduces the kinematic constraint between the fluid velocity and dilatation for the fluid mechanics formulation
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian18"
literal "false"
\end_inset
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Fluid-Mechanics"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
),
with the addition of reactive mass supply terms.
The axiom of mass balance for each solute takes the form
\begin_inset Formula
\begin{equation}
\hat{c}^{\iota}=\frac{\partial c^{\iota}}{\partial t}+\divg\left(c^{\iota}\mathbf{v}^{\iota}\right)=\frac{1}{J^{f}}\frac{D^{f}\left(J^{f}c^{\iota}\right)}{Dt}+\divg\mathbf{j}^{\iota}\thinspace,\label{eq:Mass-Bal-Solute-CFDSol}
\end{equation}
\end_inset
where
\begin_inset Formula $\hat{c}^{\iota}=\hat{\rho}^{\iota}/M^{\iota}$
\end_inset
is the molar concentration supply and
\begin_inset Formula $c^{\iota}=\rho^{\iota}/M^{\iota}$
\end_inset
is the molar concentration of solute
\begin_inset Formula $\iota$
\end_inset
,
and
\begin_inset Formula $\mathbf{j}^{\iota}=c^{\iota}\left(\mathbf{v}^{\iota}-\mathbf{v}^{f}\right)$
\end_inset
is the molar flux of solute
\begin_inset Formula $\iota$
\end_inset
relative to the solvent.
As shown previously
\begin_inset CommandInset citation
LatexCommand citep
key "Shim22a"
literal "false"
\end_inset
,
the molar solute flux may be evaluated from the solute momentum balance when inertia terms have been neglected,
\begin_inset Formula
\begin{equation}
\mathbf{j}^{\iota}=\tilde{\kappa}^{\iota}d_{0}^{\iota}\left(-\grad\tilde{c}^{\iota}+\frac{M^{\iota}}{R\theta}\tilde{c}^{\iota}\mathbf{b}^{\iota}\right)\thinspace,\label{eq:Solute-Flux-CFDSol}
\end{equation}
\end_inset
where
\begin_inset Formula $\tilde{\kappa}^{\iota}$
\end_inset
is the partition coefficient of solute
\begin_inset Formula $\iota$
\end_inset
relative to an ideal solution
\begin_inset CommandInset citation
LatexCommand citep
key "Ogston61,Laurent63"
literal "false"
\end_inset
.
It is given by
\begin_inset Formula
\begin{equation}
\tilde{\kappa}^{\iota}=\frac{\kappa^{\iota}}{\gamma^{\iota}}\exp\left(-\frac{z^{\iota}F_{c}\psi}{R\theta}\right)\thinspace,\label{eq:Partition-Coeff-CFDSol}
\end{equation}
\end_inset
where
\begin_inset Formula $\kappa^{\iota}$
\end_inset
is the solubility of solute
\begin_inset Formula $\iota$
\end_inset
in the mixture,
or the fraction of fluid volume accessible to the solute
\begin_inset CommandInset citation
LatexCommand citep
key "Mauck03"
literal "false"
\end_inset
(
\begin_inset Formula $\kappa^{\iota}=1$
\end_inset
in a fluid mixture),
and
\begin_inset Formula $\gamma^{\iota}$
\end_inset
is the activity coefficient of solute
\begin_inset Formula $\iota$
\end_inset
.
The ratio
\begin_inset Formula $\kappa^{\iota}/\gamma^{\iota}$
\end_inset
is a non-dimensional property that describes the deviation of the solute chemical potential from that of an ideal,
dilute solution
\begin_inset CommandInset citation
LatexCommand citep
key "Tinoco-Jr.95"
literal "false"
\end_inset
.
We can represent this ratio as
\begin_inset Formula $\hat{\kappa}^{\iota}\equiv\kappa^{\iota}/\gamma^{\iota}$
\end_inset
,
and call it the effective solubility of
\begin_inset Formula $\iota$
\end_inset
in the solution
\begin_inset CommandInset citation
LatexCommand cite
key "Ateshian2011"
literal "false"
\end_inset
.
In
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Partition-Coeff-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
\begin_inset Formula $z^{\iota}$
\end_inset
is the charge number of solute
\begin_inset Formula $\iota$
\end_inset
,
\begin_inset Formula $F_{c}$
\end_inset
is Faraday's constant,
\begin_inset Formula $\psi$
\end_inset
is the electrical potential,
\begin_inset Formula $R$
\end_inset
is the universal gas constant,
and
\begin_inset Formula $\theta$
\end_inset
is the absolute temperature.
In
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Solute-Flux-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
\begin_inset Formula $d_{0}^{\iota}$
\end_inset
is the diffusivity of solute
\begin_inset Formula $\iota$
\end_inset
in the fluid,
\begin_inset Formula $\mathbf{b}^{\iota}$
\end_inset
is the body force per mass acting on solute
\begin_inset Formula $\iota$
\end_inset
,
and
\begin_inset Formula $\tilde{c}^{\iota}$
\end_inset
is the effective concentration of solute
\begin_inset Formula $\iota$
\end_inset
,
such that
\begin_inset Formula
\begin{equation}
\tilde{c}^{\iota}=c^{\iota}/\tilde{\kappa}^{\iota}\,.\label{eq:effective-actual-concentration}
\end{equation}
\end_inset
The effective solute concentration represents an alternative form of the solute electrochemical potential,
expressed in units of molar concentration
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian07b,Ateshian13"
literal "false"
\end_inset
.
The solute flux in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Solute-Flux-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
has contributions from diffusion (as represented by the term containing
\begin_inset Formula $\grad\tilde{c}^{\iota}$
\end_inset
),
sedimentation (
\begin_inset Formula $\tilde{c}^{\iota}\mathbf{b}^{\iota}$
\end_inset
when
\begin_inset Formula $\mathbf{b}^{\iota}$
\end_inset
is proportional to an inertial force),
electrophoresis (
\begin_inset Formula $\tilde{c}^{\iota}\mathbf{b}^{\iota}$
\end_inset
when
\begin_inset Formula $\mathbf{b}^{\iota}$
\end_inset
is proportional to the Lorentz force acting on charged solute
\begin_inset Formula $\iota$
\end_inset
),
and convection (
\begin_inset Formula $\tilde{c}^{\iota}\mathbf{v}^{f}$
\end_inset
).
\end_layout
\begin_layout Standard
The solute flux in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Solute-Flux-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
may also be expressed in terms of its components,
\begin_inset Formula
\begin{equation}
\mathbf{j}^{\iota}=\underbrace{-\tilde{\kappa}^{\iota}d_{0}^{\iota}\grad\tilde{c}^{\iota}}_{\mathbf{j}_{d}^{\iota}}+\underbrace{s^{\iota}c^{\iota}\mathbf{b}^{\iota}}_{\mathbf{j}_{b}^{\iota}}\label{eq:solute-flux-components}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
s^{\iota}\equiv d_{0}^{\iota}\frac{M^{\iota}}{R\theta}\label{eq:sedimentation-coeff}
\end{equation}
\end_inset
is the
\emph on
sedimentation coefficient
\emph default
.
In the expression of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:solute-flux-components"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
\begin_inset Formula $\mathbf{j}_{d}^{\iota}$
\end_inset
represents the diffusive flux,
and
\begin_inset Formula $\mathbf{j}_{b}^{\iota}$
\end_inset
is the sedimentation flux.
Now the mass balance expression in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Mass-Bal-Solute-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
may be combined with eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Mix-Mass-Bal-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
to produce
\begin_inset Formula
\begin{equation}
\hat{c}^{\iota}-c^{\iota}\sum_{\gamma}\mathcal{V}^{\gamma}\hat{c}^{\gamma}=\frac{1}{J^{f}}\frac{D^{f}\left(J^{f}c^{\iota}\right)}{Dt}+\divg\left(\mathbf{j}_{d}^{\iota}+\mathbf{j}_{b}^{\iota}\right)\label{eq:solute-mass-alt}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathcal{V}^{\iota}\equiv\nicefrac{M^{\iota}}{\rho_{T}^{\iota}}$
\end_inset
is the molar volume of solute
\begin_inset Formula $\iota$
\end_inset
.
Since we have neglected the volume fraction of solutes in the current mixture formulation,
it follows that
\begin_inset Formula $c^{\iota}\mathcal{V}^{\iota}\ll1$
\end_inset
.
Thus,
we may neglect the second term on the left-hand side of the above equation,
as well as the related term on the right-hand side of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Mix-Mass-Bal-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
The fluid momentum balance is given by
\begin_inset Formula
\begin{equation}
\rho^{f}\mathbf{a}^{f}=-\grad\tilde{p}+\divg\boldsymbol{\tau}+\rho^{f}\mathbf{b}^{f}+\sum_{\iota}\left(-R\theta\tilde{\kappa}^{\iota}\grad\tilde{c}^{\iota}+M^{\iota}c^{\iota}\mathbf{b}^{\iota}\right)\thinspace,\label{eq:Fluid-Mtm-Bal-CFDSol}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{a}^{f}=D^{f}\mathbf{v}^{f}/Dt$
\end_inset
is the fluid acceleration,
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
is the fluid viscous stress,
\begin_inset Formula $\mathbf{b}^{f}$
\end_inset
is the body force per mass acting on the fluid
\begin_inset Formula $f$
\end_inset
,
and
\begin_inset Formula $\tilde{p}$
\end_inset
is the effective fluid pressure,
related to the fluid pressure
\begin_inset Formula $p$
\end_inset
via
\begin_inset Formula
\begin{equation}
p=\tilde{p}+R\theta\Phi\sum_{\iota}c^{\iota}\thinspace.\label{eq:Total-fluid-p-CFDSol}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\Phi$
\end_inset
is the osmotic coefficient,
a non-dimensional property that describes the deviation of the osmotic pressure from the ideal behavior known as van't Hoff's law
\begin_inset CommandInset citation
LatexCommand citep
key "McNaught97"
literal "false"
\end_inset
,
and
\begin_inset Formula $R\theta\Phi\sum_{\iota}c^{\iota}$
\end_inset
is the osmotic or chemical contribution to the fluid pressure.
Therefore,
\begin_inset Formula $\tilde{p}$
\end_inset
,
which is an alternative form of the solvent mechano-chemical potential,
may be interpreted as the mechanical or hydraulic contribution to
\begin_inset Formula $p$
\end_inset
.
\end_layout
\begin_layout Standard
Previously,
we showed that the effective pressure must only depend on the fluid volume ratio,
such that
\begin_inset Formula $\tilde{p}=\tilde{p}\left(J^{f}\right)$
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Shim22a"
literal "false"
\end_inset
.
Based on mass,
momentum and energy jump conditions for this type of mixture,
it can also be shown that
\begin_inset Formula $J^{f}$
\end_inset
(or alternatively
\begin_inset Formula $e^{f}$
\end_inset
) is continuous across interfaces
\begin_inset Formula $\Gamma^{f}$
\end_inset
,
and thus may be used as a nodal degree of freedom (DOF).
We may choose a constitutive relation valid for arbitrary (but strictly positive) values of
\begin_inset Formula $J^{f}$
\end_inset
\begin_inset Formula
\begin{equation}
\tilde{p}=K\left(\frac{1}{J^{f}}-1\right)\,,\label{eq:Eff-Pressure-CFDSol}
\end{equation}
\end_inset
where
\begin_inset Formula $K$
\end_inset
is the solvent's bulk modulus (a user-specified material property).
\end_layout
\begin_layout Standard
The solute-dependent terms appearing on the right side of the solvent momentum balance
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Fluid-Mtm-Bal-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
are typically neglected in classical CFD-solutes formulations,
but we included them here since they emerged naturally to describe the phenomena of osmosis (solvent flow due to solute diffusion or sedimentation),
and electro-osmosis (solvent flow due to solute electrophoresis).
To reproduce classical formulations,
by default we turned off these terms (within the summation on the right-hand side of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Fluid-Mtm-Bal-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
),
and we added a user-defined flag (
\begin_inset Quotes eld
\end_inset
include osmosis
\begin_inset Quotes erd
\end_inset
) to optionally turn them back on.
In addition,
users can turn off osmotic pressure by setting the osmotic coefficient
\begin_inset Formula $\Phi$
\end_inset
to zero,
in which case
\begin_inset Formula $p=\tilde{p}$
\end_inset
according to eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Total-fluid-p-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
Both of these approaches were investigated in the test problems described below.
\end_layout
\begin_layout Standard
As done in the standard multiphasic formulation (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Triphasic-Multiphasic-Materials"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
),
we assumed there can be no electric charge accumulation in the mixture,
so we enforce the electroneutrality condition
\begin_inset Formula
\begin{equation}
\sum_{\iota}z^{\iota}c^{\iota}=0\,.\label{eq:Electroneutrality-CFDSol}
\end{equation}
\end_inset
Multiplying the mass balances from
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Mass-Bal-Solute-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
by
\begin_inset Formula $z^{\iota}$
\end_inset
and taking the sum over all the constituents,
making use of
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Electroneutrality-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
and adopting the assumption that reactive processes maintain electroneutrality (
\begin_inset Formula $\sum_{\iota}z^{\iota}\nu^{\iota}=0$
\end_inset
where
\begin_inset Formula $\nu^{\alpha}$
\end_inset
is the net stoichiometric coefficient of
\begin_inset Formula $\alpha$
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian14"
literal "false"
\end_inset
) produces the constraint
\begin_inset Formula
\begin{equation}
0=\divg\sum_{\iota}z^{\iota}\mathbf{j}^{\iota}\,,\label{eq:Current-Density-Constraint}
\end{equation}
\end_inset
or equivalently
\begin_inset Formula $\divg\mathbf{I}_{e}=0$
\end_inset
,
where
\begin_inset Formula $\mathbf{I}_{e}=F_{c}\sum_{\iota}z^{\iota}\mathbf{j}^{\iota}$
\end_inset
is the electric current density.
\end_layout
\begin_layout Standard
In the CFD-solutes implementation the fluid velocity
\begin_inset Formula $\mathbf{v}^{f}$
\end_inset
,
fluid dilatation
\begin_inset Formula $e^{f}$
\end_inset
,
and effective solute concentrations
\begin_inset Formula $\tilde{c}^{\iota}$
\end_inset
are the nodal degrees of freedom
\begin_inset Formula $\left(\mathbf{v}^{f},e^{f},\tilde{c}^{\iota}\right)$
\end_inset
,
as further addressed in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:CFD-Solutes-Jump"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
These choices imply that
\begin_inset Formula $\mathbf{\mathbf{v}}^{f}$
\end_inset
,
\begin_inset Formula $e^{f}$
\end_inset
,
and
\begin_inset Formula $\tilde{c}^{\iota}$
\end_inset
are continuous across finite element boundaries,
as justified below when we review jump conditions across interfaces.
Note that in the absence of solutes,
the governing equations
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Mix-Mass-Bal-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Fluid-Mtm-Bal-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
simplify to the original CFD equations,
with
\begin_inset Formula $p=\tilde{p}$
\end_inset
.
More information on calculating the supply terms
\begin_inset Formula $\hat{c}^{\iota}$
\end_inset
and
\begin_inset Formula $\hat{\rho}^{\iota}$
\end_inset
can be found in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Chemical-Reactions"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
The electric potential
\begin_inset Formula $\psi$
\end_inset
can be determined as described in the previous standard multiphasic solver
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian13,Ateshian14"
literal "false"
\end_inset
.
\end_layout
\begin_layout Subsection
Jump Conditions
\begin_inset CommandInset label
LatexCommand label
name "subsec:CFD-Solutes-Jump"
\end_inset
\end_layout
\begin_layout Standard
Jump conditions on the axioms of mass,
momentum and energy balance are needed to determine which variables may be selected as nodal degrees of freedom in the finite element implementation,
and which tractions are naturally continuous across an interface.
The jump conditions for the CFD-solutes material were determined from the jump conditions of the general hybrid multiphasic material
\begin_inset CommandInset citation
LatexCommand citep
key "Shim22a"
literal "false"
\end_inset
.
Here,
we summarize the relevant results,
which apply to any interface
\begin_inset Formula $\Gamma^{f}$
\end_inset
.
Here,
since the domain is fixed in space,
the interface
\begin_inset Formula $\Gamma^{f}$
\end_inset
is stationary.
We employ the notation
\begin_inset Formula $\left[\left[f\right]\right]=f_{+}-f_{-}$
\end_inset
to denote the jump in an arbitrary function
\begin_inset Formula $f$
\end_inset
across the interface
\begin_inset Formula $\Gamma^{f}$
\end_inset
,
with
\begin_inset Formula $f_{+}$
\end_inset
and
\begin_inset Formula $f_{-}$
\end_inset
denoting the values of
\begin_inset Formula $f$
\end_inset
on either side of
\begin_inset Formula $\Gamma^{f}$
\end_inset
.
The unit normal on
\begin_inset Formula $\Gamma^{f}$
\end_inset
is
\series bold
\begin_inset Formula $\mathbf{n}$
\end_inset
\series default
,
which points away from the
\begin_inset Formula $+$
\end_inset
side.
A variable
\begin_inset Formula $f$
\end_inset
which is continuous across
\begin_inset Formula $\Gamma^{f}$
\end_inset
satisfies
\begin_inset Formula $\left[\left[f\right]\right]=0$
\end_inset
.
\end_layout
\begin_layout Standard
Based on the jump condition on the axiom of mass balance for the fluid,
the normal component of the mass flux of the fluid is continuous across
\begin_inset Formula $\Gamma^{f}$
\end_inset
,
\begin_inset Formula $\left[\left[\rho^{f}\mathbf{v}^{f}\right]\right]\cdot\mathbf{n}=0$
\end_inset
.
Furthermore,
a sufficient condition to satisfy the jump on the axiom of energy balance is to enforce continuity of the solvent specific free enthalpy (or Gibbs function),
such that
\begin_inset Formula $\left[\left[\psi^{f}+p/\rho_{T}^{f}\right]\right]=\left[\left[\mu^{f}\right]\right]=0$
\end_inset
,
where
\begin_inset Formula $\psi^{f}$
\end_inset
is the fluid specific free energy.
In the multiphasic mixture literature,
the solvent specific free enthalpy
\begin_inset Formula $\mu^{f}$
\end_inset
is also called the mechano-chemical potential
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian16"
literal "false"
\end_inset
.
This jump condition applies only when there is solvent on both sides of the interface,
such as across
\begin_inset Formula $\Gamma^{f}$
\end_inset
.
In an isothermal framework,
the solvent mechano-chemical potential is a function of state that only depends on
\begin_inset Formula $J^{f}$
\end_inset
such that
\begin_inset Formula $\mu^{f}=\mu^{f}\left(J^{f}\right)$
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Shim22a"
literal "false"
\end_inset
.
Therefore this energy jump condition implies that
\begin_inset Formula $J^{f}$
\end_inset
must be continuous across
\begin_inset Formula $\Gamma^{f}$
\end_inset
,
thus
\begin_inset Formula
\begin{equation}
\left[\left[J^{f}\right]\right]=0\,,\label{eq:J-Jump-CFDSol}
\end{equation}
\end_inset
also implying that
\begin_inset Formula $\left[\left[\tilde{p}\right]\right]=0$
\end_inset
.
Given
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Fluid-Dil-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
it follows that
\begin_inset Formula $\left[\left[\rho^{f}\right]\right]=0$
\end_inset
and the fluid mass balance jump condition reduces to
\begin_inset Formula $\left[\left[\mathbf{v}^{f}\right]\right]\cdot\mathbf{n}=0$
\end_inset
,
implying that the fluid velocity component normal to
\begin_inset Formula $\Gamma^{f}$
\end_inset
must be continuous.
For the tangential component of
\begin_inset Formula $\mathbf{v}^{f}$
\end_inset
on
\begin_inset Formula $\Gamma^{f}$
\end_inset
we use the no-slip condition for viscous fluids,
which states that the velocity component tangential to
\begin_inset Formula $\Gamma^{f}$
\end_inset
must be continuous across that interface,
as is standard in CFD solvers.
Combining these two jump conditions produces
\begin_inset Formula
\begin{equation}
\left[\left[\mathbf{v}^{f}\right]\right]=0\,.\label{eq:Mass-Jump-Final-CFDSol}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
From the solute mass jump condition,
we can show that the normal component of the molar solute flux is continuous across
\begin_inset Formula $\Gamma^{f}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\left[\left[\mathbf{j}^{\iota}\right]\right]\cdot\mathbf{n}=0\,.\label{eq:Mass-Jump-Sol-CFDSol}
\end{equation}
\end_inset
The momentum jump condition requires that the mixture traction be continuous across
\begin_inset Formula $\Gamma^{f}$
\end_inset
,
thus
\begin_inset Formula $\left[\left[-p\mathbf{I}+\boldsymbol{\tau}\right]\right]\cdot\mathbf{n}=\mathbf{0}$
\end_inset
.
Another relation which is thermodynamically sufficient to satisfy the jump condition on the energy balance is the continuity of the viscous fluid traction,
\begin_inset Formula
\begin{equation}
\left[\left[\boldsymbol{\tau}\right]\right]\cdot\mathbf{n}=0\,.\label{eq:Fluid-Mtm-Jump-CFDSol}
\end{equation}
\end_inset
This jump condition
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Fluid-Mtm-Jump-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
which also applies only if fluid is present on both sides of
\begin_inset Formula $\Gamma$
\end_inset
,
implies that
\begin_inset Formula $\left[\left[p\right]\right]=0$
\end_inset
.
\end_layout
\begin_layout Standard
Finally,
the last relation that is thermodynamically sufficient to satisfy the energy balance jump condition applies to the electrochemical potential for the solutes,
where
\begin_inset Formula $\left[\left[\tilde{\mu}^{\iota}\right]\right]=0$
\end_inset
.
For a solute,
the general constitutive relation for the electrochemical potential is
\begin_inset Formula $\tilde{\mu}^{\iota}=\frac{R\theta}{M^{\iota}}\ln\frac{c^{\iota}}{\tilde{\kappa}^{\alpha}c_{0}^{\iota}}$
\end_inset
,
and the jump can be simplified to
\begin_inset Formula
\begin{equation}
\left[\left[\tilde{c}^{\iota}\right]\right]=0\,.\label{eq:Conc-Jump-CFDSol}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
Thus,
letting
\begin_inset Formula $\mathbf{v}^{f}$
\end_inset
,
\begin_inset Formula $e^{f}$
\end_inset
,
and
\begin_inset Formula $\tilde{c}^{\iota}$
\end_inset
be nodal degrees of freedom automatically enforces the jump conditions
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:J-Jump-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Mass-Jump-Final-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Conc-Jump-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
acting as essential boundary conditions.
As stated earlier,
the jump conditions are the same as the previous CFD formulation in the case of zero solute concentration (all
\begin_inset Formula $\tilde{c}^{\iota}=0$
\end_inset
)
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian18"
literal "false"
\end_inset
.
\end_layout
\begin_layout Chapter
The Nonlinear FE Method
\begin_inset CommandInset label
LatexCommand label
name "chap:Nonlinear-FE-Method"
\end_inset
\end_layout
\begin_layout Standard
This chapter discusses the basic principles of the nonlinear finite element method.
The chapter begins with a short introduction to the weak formulation and the principle of virtual work.
Next,
the important concept of linearization is discussed and applied to the principle of virtual work.
Finally the Newton-Raphson procedure and its application to the nonlinear finite element method are described.
\end_layout
\begin_layout Section
Weak formulation for Solid Materials
\begin_inset CommandInset label
LatexCommand label
name "sec:Solid-weak-formulation"
\end_inset
\end_layout
\begin_layout Standard
Generally,
the finite element formulation is established in terms of a weak form of the differential equations under consideration.
In the context of solid mechanics this implies the use of the virtual work equation:
\begin_inset Formula
\begin{equation}
\delta W=\int\limits_{v}\boldsymbol{\sigma}:\delta\mathbf{d}\,dv-\int\limits_{v}\mathbf{f}\cdot\delta\mathbf{v}\,dv-\int\limits_{\partial v}\mathbf{t}\cdot\delta\mathbf{v}\,da=0\,.\label{eq171}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\delta\mathbf{v}$
\end_inset
is a virtual velocity and
\begin_inset Formula $\delta\mathbf{d}$
\end_inset
is the virtual rate of deformation tensor.
This equation is known as the
\emph on
spatial virtual work equation
\emph default
since it is formulated using spatial quantities only.
We can also define the
\emph on
material virtual work equation
\emph default
by expressing the principle of virtual work using only material quantities.
\begin_inset Formula
\begin{equation}
\delta W=\int\limits_{V}\mathbf{S}:\delta\mathbf{\dot{E}}\,dV-\int\limits_{V}\mathbf{f}_{0}\cdot\delta\mathbf{v}\,dV-\int\limits_{\partial V}\mathbf{t}_{0}\cdot\delta\mathbf{v}\,dA=0\,.\label{eq172}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\mathbf{f}_{0}=J\mathbf{f}$
\end_inset
is the body force per unit undeformed volume and
\begin_inset Formula $\mathbf{t}_{0}=\mathbf{t}\left(da/dA\right)$
\end_inset
is the traction vector per unit initial area.
\end_layout
\begin_layout Subsection
Linearization
\begin_inset CommandInset label
LatexCommand label
name "subsec:Solid-linearization"
\end_inset
\end_layout
\begin_layout Standard
Equation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq171"
nolink "false"
\end_inset
is the starting point for the nonlinear finite element method.
It is highly nonlinear and any method attempting to solve this equation,
such as the Newton-Raphson method,
necessarily has to be iterative.
\end_layout
\begin_layout Standard
To linearize the finite element equations,
the directional derivative of the virtual work in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq171"
nolink "false"
\end_inset
must be calculated.
In an iterative procedure,
the quantity
\begin_inset Formula $\boldsymbol{\phi}$
\end_inset
will be approximated by a trial solution
\begin_inset Formula $\boldsymbol{\phi}_{k}$
\end_inset
.
Linearization of the virtual work equation around this trial solution gives
\begin_inset Formula
\begin{equation}
\delta W\left(\boldsymbol{\phi}_{k},\delta\mathbf{v}\right)+D\delta W\left(\boldsymbol{\phi}_{k},\delta\mathbf{v}\right)\left[\mathbf{u}\right]=0\,.\label{eq173}
\end{equation}
\end_inset
The directional derivative of the virtual work will eventually lead to the definition of the stiffness matrix.
In order to proceed,
it is convenient to split the virtual work into an internal and external virtual work component:
\begin_inset Formula
\begin{equation}
D\delta W\left(\boldsymbol{\phi},\delta\mathbf{v}\right)\left[\mathbf{u}\right]=D\delta W_{int}\left(\boldsymbol{\phi},\delta\mathbf{v}\right)\left[\mathbf{u}\right]-D\delta W_{ext}\left(\boldsymbol{\phi},\delta\mathbf{v}\right)\left[\mathbf{u}\right],\label{eq174}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\delta W_{int}\left(\boldsymbol{\phi},\delta\mathbf{v}\right)=\int\limits_{v}\boldsymbol{\sigma}:\delta\mathbf{d}\,dv\,,\label{eq175}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\delta W_{ext}\left(\boldsymbol{\phi},\delta\mathbf{v}\right)=\int\limits_{v}\mathbf{f}\cdot\delta\mathbf{v}\,dv+\int\limits_{\partial v}\mathbf{t}\cdot\delta\mathbf{v}\,da\,.\label{eq176}
\end{equation}
\end_inset
The result is listed here without details of the derivation – see
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
for details.
The linearization of the internal virtual work is given by
\begin_inset Formula
\begin{equation}
D\delta W_{int}\left(\boldsymbol{\phi},\delta\mathbf{v}\right)\left[\mathbf{u}\right]=\int\limits_{v}\delta\mathbf{d}:\boldsymbol{\mathcal{C}}:\boldsymbol{\varepsilon}\,dv+\int\limits_{v}\boldsymbol{\sigma}:\left[\left(\nabla\mathbf{u}\right)^{T}\cdot\nabla\delta\mathbf{v}\right]\,dv\,.\label{eq177}
\end{equation}
\end_inset
Notice that this equation is symmetric in
\begin_inset Formula $\delta\mathbf{v}$
\end_inset
and
\begin_inset Formula $\mathbf{u}$
\end_inset
.
This symmetry will,
upon discretization,
yield a symmetric tangent matrix.
\end_layout
\begin_layout Standard
The external virtual work has contributions from both body forces and surface tractions.
The precise form of the linearized external virtual work depends on the form of these forces.
For surface tractions,
normal pressure forces may be represented in FEBio.
The linearized external work for this type of traction is given by
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{ext}^{p}\left(\boldsymbol{\phi},\delta\mathbf{v}\right)\left[\mathbf{u}\right] & =\frac{1}{2}\int\limits_{A_{\xi}}p\frac{\partial\mathbf{x}}{\partial\xi}\cdot\left[\left(\frac{\partial\mathbf{u}}{\partial\eta}\times\delta\mathbf{v}\right)+\left(\frac{\partial\delta\mathbf{v}}{\partial\eta}\times\mathbf{u}\right)\right]d\xi\,d\eta\\
& -\frac{1}{2}\int\limits_{A_{\xi}}p\frac{\partial\mathbf{x}}{\partial\eta}\cdot\left[\left(\frac{\partial\mathbf{u}}{\partial\xi}\times\delta\mathbf{v}\right)+\left(\frac{\partial\delta\mathbf{v}}{\partial\xi}\times\mathbf{u}\right)\right]d\xi\,d\eta\,.
\end{aligned}
\label{eq178}
\end{equation}
\end_inset
Discretization of this equation will also lead to a symmetric component of the tangent matrix.
\end_layout
\begin_layout Standard
FEBio currently supports gravity as a body force,
\begin_inset Formula $\mathbf{f}=\rho\mathbf{g}$
\end_inset
.
Since this force is independent of the geometry,
the contribution to the linearized external work is zero.
Another type of body force implemented in FEBio is the centrifugal force.
For a body rotating with a constant angular speed
\begin_inset Formula $\omega$
\end_inset
,
about an axis passing through the point
\begin_inset Formula $\mathbf{c}$
\end_inset
and directed along the unit vector
\begin_inset Formula $\mathbf{n}$
\end_inset
,
the body force is given by
\begin_inset Formula $\mathbf{f}=\rho\omega^{2}\mathbf{r}$
\end_inset
,
where
\begin_inset Formula $\mathbf{r}$
\end_inset
is the vector distance from a point
\begin_inset Formula $\mathbf{x}$
\end_inset
to the axis of rotation,
\begin_inset Formula
\begin{equation}
\mathbf{r}=\left(\mathbf{I}-\mathbf{n}\otimes\mathbf{n}\right)\cdot\left(\mathbf{x}-\mathbf{c}\right)\,.\label{eq179}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigCentrifugalBodyForce.png
\end_inset
\end_layout
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The resulting linearized external work is given by
\begin_inset Formula
\begin{equation}
D\delta W_{ext}^{f}\left(\boldsymbol{\phi},\delta\mathbf{v}\right)\left[\mathbf{u}\right]=\int\limits_{v}\rho\omega^{2}\delta\mathbf{v}\cdot\left(\mathbf{I}-\mathbf{n}\otimes\mathbf{n}\right)\cdot\mathbf{u}\,dv,\label{eq180}
\end{equation}
\end_inset
which produces a symmetric expression that will yield a symmetric matrix.
\end_layout
\begin_layout Subsection
Discretization
\begin_inset CommandInset label
LatexCommand label
name "subsec:Solid-discretization"
\end_inset
\end_layout
\begin_layout Standard
The basis of the finite element method is that the domain of the problem (that is,
the volume of the object under consideration) is divided into smaller subunits,
called
\emph on
finite elements
\emph default
.
In the case of
\emph on
isoparametric elements
\emph default
it is further assumed that each element has a local coordinate system,
named the
\emph on
natural coordinates
\emph default
,
and the coordinates and shape of the element are discretized using the same functions.
The discretization process is established by interpolating the geometry in terms of the coordinates
\begin_inset Formula $\mathbf{X}_{a}$
\end_inset
of the
\emph on
nodes
\emph default
that define the geometry of a finite element,
and the
\emph on
shape functions
\emph default
:
\begin_inset Formula
\begin{equation}
\mathbf{X}=\sum\limits_{a=1}^{n}N_{a}\left(\xi_{1},\xi_{2},\xi_{3}\right)\mathbf{X}_{a}\,,\label{eq181}
\end{equation}
\end_inset
where
\begin_inset Formula $n$
\end_inset
is the number of nodes and
\begin_inset Formula $\xi_{i}$
\end_inset
are the natural coordinates.
Similarly,
the motion is described in terms of the current position
\begin_inset Formula $\mathbf{x}_{a}\left(t\right)$
\end_inset
of the
\emph on
same
\emph default
particles:
\begin_inset Formula
\begin{equation}
\mathbf{x}\left(t\right)=\sum\limits_{a=1}^{n}N_{a}\mathbf{x}_{a}\left(t\right)\,.\label{eq182}
\end{equation}
\end_inset
Quantities such as displacement,
velocity and virtual velocity can be discretized in a similar way.
\end_layout
\begin_layout Standard
In deriving the discretized equilibrium equations,
the integrations performed over the entire volume can be written as a sum of integrations constrained to the volume of an element.
For this reason,
the discretized equations are defined in terms of integrations over a particular element
\begin_inset Formula $e$
\end_inset
.
The discretized equilibrium equations for this particular element per node is given by
\begin_inset Formula
\begin{equation}
\delta W^{\left(e\right)}\left(\boldsymbol{\phi},N_{a}\delta\mathbf{v}\right)=\delta\mathbf{v}_{a}\cdot\left(\mathbf{T}_{a}^{\left(e\right)}-\mathbf{F}_{a}^{\left(e\right)}\right)\,,\label{eq183}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}T_{a}^{\left(e\right)} & =\int\limits_{v^{\left(e\right)}}\boldsymbol{\sigma}\cdot\nabla N_{a}\,dv\,,\\
F_{a}^{\left(e\right)} & =\int\limits_{v^{\left(e\right)}}N_{a}\mathbf{f}\,dv+\int\limits_{\partial v^{\left(e\right)}}N_{a}\mathbf{t}\,da\,.
\end{aligned}
\label{eq184}
\end{equation}
\end_inset
The linearization of the internal virtual work can be split into a
\emph on
material
\emph default
and an
\emph on
initial stress
\emph default
component
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
:
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{int}^{\left(e\right)}\left(\boldsymbol{\phi},\delta\mathbf{v}\right)\left[\mathbf{u}\right] & =\int\limits_{v^{\left(e\right)}}\delta\mathbf{d}:\boldsymbol{\mathcal{C}}:\boldsymbol{\varepsilon}\,dv+\int\limits_{v^{\left(e\right)}}\boldsymbol{\sigma}:\left[\left(\nabla\mathbf{u}\right)^{T}\cdot\nabla\delta\mathbf{v}\right]\,dv\\
& =D\delta W_{c}^{\left(e\right)}\left(\boldsymbol{\phi},\delta\mathbf{v}\right)\left[\mathbf{u}\right]+D\delta W_{\sigma}^{\left(e\right)}\left(\boldsymbol{\phi},\delta\mathbf{v}\right)\left[\mathbf{u}\right]\,.
\end{aligned}
\label{eq185}
\end{equation}
\end_inset
The constitutive component can be discretized as follows:
\begin_inset Formula
\begin{equation}
D\delta W_{c}^{\left(e\right)}\left(\boldsymbol{\phi},\delta\mathbf{v}\right)\left[\mathbf{u}\right]=\delta\mathbf{v}_{a}\cdot\left(\int\limits_{v^{\left(e\right)}}\mathbf{B}_{a}^{T}\mathbf{D}\mathbf{B}_{b}\,dv\right)\mathbf{u}_{b}\,.\label{eq186}
\end{equation}
\end_inset
The term in parentheses defines the constitutive component of the tangent matrix relating node
\begin_inset Formula $a$
\end_inset
to node
\begin_inset Formula $b$
\end_inset
in element
\begin_inset Formula $e$
\end_inset
:
\begin_inset Formula
\begin{equation}
\mathbf{K}_{c,ab}^{\left(e\right)}=\int\limits_{v^{\left(e\right)}}\mathbf{B}_{a}^{T}\mathbf{DB}_{b}\,dv\,.\label{eq187}
\end{equation}
\end_inset
Here,
the linear strain-displacement matrix
\series bold
\begin_inset Formula $\mathbf{B}$
\end_inset
\series default
relates the displacements to the small-strain tensor in Voigt Notation:
\begin_inset Formula
\begin{equation}
\boldsymbol{\varepsilon}=\sum\limits_{a=1}^{n}\mathbf{B}_{a}\mathbf{u}_{a}\,.\label{eq188}
\end{equation}
\end_inset
Or,
written out completely,
\begin_inset Formula
\begin{equation}
\mathbf{B}_{a}=\left[\begin{array}{ccc}
\partial N_{a}/\partial x & 0 & 0\\
0 & \partial N_{a}/\partial y & 0\\
0 & 0 & \partial N_{a}/\partial z\\
\partial N_{a}/\partial y & \partial N_{a}/\partial x & 0\\
0 & \partial N_{a}/\partial z & \partial N_{a}/\partial y\\
\partial N_{a}/\partial z & 0 & \partial N_{a}/\partial z
\end{array}\right]\,.\label{eq189}
\end{equation}
\end_inset
The spatial constitutive matrix
\series bold
\begin_inset Formula $\mathbf{D}$
\end_inset
\series default
is constructed from the components of the fourth-order tensor
\begin_inset Formula $\boldsymbol{\mathcal{C}}$
\end_inset
using the following table;
\begin_inset Formula $D_{IJ}=\mathcal{C}_{ijkl}$
\end_inset
where
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
I/J
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
i/k
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
j/l
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
2
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
2
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
2
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
3
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
3
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
3
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
4
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
2
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
5
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
2
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
3
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
6
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
3
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The initial stress component can be written as follows:
\begin_inset Formula
\begin{equation}
D\delta W_{\sigma}^{\left(e\right)}\left(\boldsymbol{\phi},N_{a}\delta\mathbf{v}\right)\left[N_{b}\mathbf{u}_{b}\right]=\int\limits_{v^{\left(e\right)}}\left(\nabla N_{a}\cdot\boldsymbol{\sigma}\cdot\nabla N_{b}\right)\mathbf{I}\,dv.\label{eq190}
\end{equation}
\end_inset
For the pressure component of the external virtual work,
we find
\begin_inset Formula
\begin{equation}
D\delta W_{p}^{\left(e\right)}\left(\boldsymbol{\phi},N_{a}\delta\mathbf{v}_{a}\right)\left[N_{b}\mathbf{u}_{b}\right]=\delta\mathbf{v}_{a}\cdot\mathbf{K}_{p,ab}^{\left(e\right)}\cdot\mathbf{u}_{b}\,,\label{eq191}
\end{equation}
\end_inset
where,
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{K}_{p,ab}^{\left(e\right)} & =\mathcal{E}\mathbf{k}_{p,ab}^{\left(e\right)},\\
\mathbf{k}_{p,ab}^{\left(e\right)} & =\frac{1}{2}\int_{A_{\xi}}p\frac{\partial\mathbf{x}}{\partial\xi}\left(\frac{\partial N_{a}}{\partial\eta}N_{b}-\frac{\partial N_{b}}{\partial\eta}N_{a}\right)d\xi\,d\eta\\
& +\frac{1}{2}\int_{A_{\xi}}p\frac{\partial\mathbf{x}}{\partial\eta}\left(\frac{\partial N_{a}}{\partial\xi}N_{b}-\frac{\partial N_{b}}{\partial\xi}N_{a}\right)d\xi\,d\eta\,.
\end{aligned}
\label{eq192}
\end{equation}
\end_inset
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Weak formulation for biphasic materials
\begin_inset CommandInset label
LatexCommand label
name "sec:sec:Biphasic-weak-formulation"
\end_inset
\end_layout
\begin_layout Standard
A weak form of the statement conservation of linear momemtum for the quasi-static case is obtained by using Eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq103"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq105"
nolink "false"
\end_inset
:
\begin_inset Formula
\begin{equation}
\delta W=\int_{b}\left[\delta\mathbf{v}^{s}\cdot\left(\divg\boldsymbol{\sigma}+\rho\mathbf{b}\right)+\delta p\,\divg\left(\mathbf{v}^{s}+\mathbf{w}\right)\right]dv=0\,,\label{eq193}
\end{equation}
\end_inset
where
\begin_inset Formula $b$
\end_inset
is the domain of interest defined on the solid matrix,
\begin_inset Formula $\delta\mathbf{v}^{s}$
\end_inset
is a virtual velocity of the solid and
\begin_inset Formula $\delta p$
\end_inset
is a virtual pressure of the fluid
\begin_inset CommandInset citation
LatexCommand citep
key "Un06"
literal "true"
\end_inset
.
\begin_inset Formula $dv$
\end_inset
is an elemental volume of
\begin_inset Formula $b$
\end_inset
.
Using the divergence theorem,
this expression may be rearranged as
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W & =\int_{\partial b}\delta\mathbf{v}^{s}\cdot\mathbf{t}\,da+\int_{\partial b}\delta p\,w_{n}\,da+\int_{b}\delta\mathbf{v}^{s}\cdot\rho\mathbf{b}\,dv\\
& -\int_{b}\boldsymbol{\sigma}:\grad\delta\mathbf{v}^{s}\,dv-\int_{b}\left(\mathbf{w}\cdot\grad\delta p-\delta p\,\divg\mathbf{v}^{s}\right)\,dv
\end{aligned}
\,,\label{eq194}
\end{equation}
\end_inset
where
\begin_inset Formula $\delta\mathbf{d}^{s}=\left(\grad\delta\mathbf{v}^{s}+\grad^{T}\delta\mathbf{v}^{s}\right)/2$
\end_inset
is the virtual rate of deformation tensor,
\begin_inset Formula $\mathbf{t}=\boldsymbol{\sigma}\cdot\mathbf{n}$
\end_inset
is the total traction on the surface
\begin_inset Formula $\partial b$
\end_inset
,
and
\begin_inset Formula $w_{n}=\mathbf{w}\cdot\mathbf{n}$
\end_inset
is the component of the fluid flux normal to
\begin_inset Formula $\partial b$
\end_inset
,
with
\begin_inset Formula $\mathbf{n}$
\end_inset
representing the unit outward normal to
\begin_inset Formula $\partial b$
\end_inset
.
\begin_inset Formula $da$
\end_inset
represents an elemental area of
\begin_inset Formula $\partial b$
\end_inset
.
In this type of problem,
essential boundary conditions are prescribed for
\begin_inset Formula $\mathbf{u}$
\end_inset
and
\begin_inset Formula $p$
\end_inset
,
and natural boundary conditions are prescribed for
\begin_inset Formula $\mathbf{t}$
\end_inset
and
\begin_inset Formula $w_{n}$
\end_inset
.
In the expression of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq194"
nolink "false"
\end_inset
,
\begin_inset Formula $\delta W\left(\boldsymbol{\chi}^{s},p,\delta\mathbf{v}^{s},\delta p\right)$
\end_inset
represents the virtual work.
\end_layout
\begin_layout Subsection
Linearization
\begin_inset CommandInset label
LatexCommand label
name "subsec:Biphasic-linearization"
\end_inset
\end_layout
\begin_layout Standard
Since the system of equations in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq194"
nolink "false"
\end_inset
is highly nonlinear,
its solution requires an iterative scheme such as Newton's method.
This requires the linearization of
\begin_inset Formula $\delta W$
\end_inset
at some trial solution
\begin_inset Formula $\left(\boldsymbol{\chi}_{k}^{s},p_{k}\right)$
\end_inset
,
along an increment
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
in
\begin_inset Formula $\boldsymbol{\chi}^{s}$
\end_inset
and an increment
\begin_inset Formula $\Delta p$
\end_inset
in
\begin_inset Formula $p$
\end_inset
,
\begin_inset Formula
\begin{equation}
\delta W+D\delta W\left[\Delta\mathbf{u}\right]+D\delta W\left[\Delta p\right]=0,\label{eq195}
\end{equation}
\end_inset
where
\begin_inset Formula $Df\left[\Delta q\right]$
\end_inset
represents the directional derivative of
\begin_inset Formula $f$
\end_inset
along
\begin_inset Formula $\Delta q$
\end_inset
.
For convenience,
the virtual work may be separated into its internal and external parts,
\begin_inset Formula
\begin{equation}
\delta W=\delta W_{\text{ext}}-\delta W_{\text{int}},\label{eq196}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\delta W_{\mbox{int}}=\int_{b}\boldsymbol{\sigma}:\delta\mathbf{d}^{s}\,dv+\int_{b}\left(\mathbf{w}\cdot\grad\delta p-\delta p\,\frac{\dot{J}}{J}\right)\,dv,\label{eq197}
\end{equation}
\end_inset
where we have substituted
\begin_inset Formula $\divg\mathbf{v}^{s}=\dot{J}/J$
\end_inset
,
and
\begin_inset Formula
\begin{equation}
\delta W_{\text{ext}}=\int_{\partial b}\delta\mathbf{v}^{s}\cdot\mathbf{t}\,da+\int_{\partial b}\delta p\,w_{n}\,da+\int_{b}\delta\mathbf{v}^{s}\cdot\rho\mathbf{b}\,dv\,.\label{eq198}
\end{equation}
\end_inset
The evaluation of the directional derivatives can be performed following a standard approach
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
.
In particular,
a backward difference scheme is used to evaluate
\begin_inset Formula $\dot{J}\approx\left(J-J^{-\Delta t}\right)/\Delta t$
\end_inset
,
where
\begin_inset Formula $J^{-\Delta t}$
\end_inset
is the value of
\begin_inset Formula $J$
\end_inset
at the previous time step.
For the internal part of the virtual work,
the directional derivative along
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
yields
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{\text{int}}\left[\Delta\mathbf{u}\right] & =\int_{b}\delta\mathbf{d}^{s}:\boldsymbol{\mathcal{C}}:\Delta\boldsymbol{\varepsilon}\,dv+\int_{b}\boldsymbol{\sigma}:\left(\grad^{T}\Delta\mathbf{u}\cdot\grad\delta\mathbf{v}^{s}\right)\,dv\\
& -\int_{b}\frac{\delta p}{\Delta t}\divg\Delta\mathbf{u}\,dv\\
& -\int_{b}\grad\delta p\cdot\left(\boldsymbol{\mathcal{K}}:\Delta\boldsymbol{\varepsilon}\right)\cdot\left(\grad p-\rho_{T}^{w}\mathbf{b}^{w}\right)\,dv\\
& +\int_{b}\grad\delta p\cdot\mathbf{k}\cdot\rho_{T}^{w}\left(\grad^{T}\Delta\mathbf{u}\cdot\mathbf{b}^{w}+\grad\mathbf{b}^{w}\cdot\Delta\mathbf{u}\right)dv\,,
\end{aligned}
\label{eq199}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\mathcal{C}}$
\end_inset
is the fourth-order spatial elasticity tensor for the mixture and
\begin_inset Formula $\Delta\boldsymbol{\varepsilon}=\left(\grad\Delta\mathbf{u}+\grad^{T}\Delta\mathbf{u}\right)/2$
\end_inset
.
Based on the relation of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq104"
nolink "false"
\end_inset
,
the spatial elasticity tensor may also be expanded as
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{C}}=\boldsymbol{\mathcal{C}}^{e}+p\left(-\mathbf{I}\otimes\mathbf{I}+2\mathbf{I}\,\overline{\underline{\otimes}}\,\mathbf{I}\right),\label{eq200}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\mathcal{C}}^{e}$
\end_inset
is the spatial elasticity tensor for the solid matrix
\begin_inset CommandInset citation
LatexCommand citep
key "Curnier94"
literal "true"
\end_inset
.
It is related to the material elasticity tensor
\begin_inset Formula $\boldsymbol{\mathbb{C}}^{e}$
\end_inset
via
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{C}}^{e}=J^{-1}\left(\mathbf{F}\,\underline{\otimes}\,\mathbf{F}\right):\boldsymbol{\mathbb{C}}^{e}:\left(\mathbf{F}^{T}\,\underline{\otimes}\,\mathbf{F}^{T}\right),\label{eq201}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{F}$
\end_inset
is the deformation gradient of the solid matrix,
\begin_inset Formula $\boldsymbol{\mathbb{C}}^{e}=\partial\mathbf{S}^{e}/\partial\mathbf{E}$
\end_inset
where
\begin_inset Formula $\mathbf{E}$
\end_inset
is the Lagrangian strain tensor and
\begin_inset Formula $\mathbf{S}^{e}$
\end_inset
is the second Piola-Kirchhoff stress tensor,
related to the Cauchy stress tensor via
\begin_inset Formula $\boldsymbol{\sigma}^{e}=J^{-1}\mathbf{F}\cdot\mathbf{S}^{e}\cdot\mathbf{F}^{T}$
\end_inset
.
\end_layout
\begin_layout Standard
Similarly,
\begin_inset Formula $\boldsymbol{\mathcal{K}}$
\end_inset
is a fourth-order tensor that represents the spatial measure of the rate of change of permeability with strain.
It is related to its material frame equivalent
\begin_inset Formula $\boldsymbol{\mathbb{K}}$
\end_inset
via
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{K}}=J^{-1}\left(\mathbf{F}\,\underline{\otimes}\,\mathbf{F}\right):\boldsymbol{\mathbb{K}}:\left(\mathbf{F}^{T}\,\underline{\otimes}\,\mathbf{F}^{T}\right),\label{eq202}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\mathbb{K}}=\partial\mathbf{K}/\partial\mathbf{E}$
\end_inset
and
\begin_inset Formula $\mathbf{K}$
\end_inset
is the permeability tensor in the material frame,
such that
\begin_inset Formula $\mathbf{k}=J^{-1}\mathbf{F}\cdot\mathbf{K}\cdot\mathbf{F}^{T}$
\end_inset
.
Since
\begin_inset Formula $\mathbf{K}$
\end_inset
and
\begin_inset Formula $\mathbf{E}$
\end_inset
are symmetric tensors,
it follows that
\begin_inset Formula $\boldsymbol{\mathcal{K}}$
\end_inset
and
\begin_inset Formula $\boldsymbol{\mathbb{K}}$
\end_inset
exhibit two minor symmetries (e.g.,
\begin_inset Formula $\mathcal{K}_{jikl}=\mathcal{K}_{ijkl}$
\end_inset
and
\begin_inset Formula $\mathcal{K}_{ijlk}=\mathcal{K}_{ijkl})$
\end_inset
.
However,
unlike the elasticity tensor,
it is not necessary that these tensors exhibit major symmetry (e.g.,
\begin_inset Formula $\mathcal{K}_{klij}\ne\mathcal{K}_{ijkl}$
\end_inset
in general).
\end_layout
\begin_layout Standard
The directional derivative of
\begin_inset Formula $\delta W_{\mbox{int}}$
\end_inset
along
\begin_inset Formula $\Delta p$
\end_inset
is given by
\begin_inset Formula
\begin{equation}
D\delta W_{\text{int}}\left[\Delta p\right]=-\int_{b}\grad\delta p\cdot\mathbf{k}\cdot\grad\Delta p\,dv-\int_{b}\Delta p\,\divg\delta\mathbf{v}^{s}\,dv\,.\label{eq203}
\end{equation}
\end_inset
Note that letting
\begin_inset Formula $p=0$
\end_inset
and
\begin_inset Formula $\delta p=0$
\end_inset
in the above equations recovers the virtual work relations for nonlinear elasticity of compressible solids.
The resulting simplified equation emerging from eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq199"
nolink "false"
\end_inset
is symmetric to interchanges of
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
and
\begin_inset Formula $\delta\mathbf{v}^{s}$
\end_inset
,
producing a symmetric stiffness matrix in the finite element formulation
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
.
However,
the general relations of Eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq199"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq203"
nolink "false"
\end_inset
do not exhibit symmetry to interchanges of
\begin_inset Formula $\left(\Delta\mathbf{u},\Delta p\right)$
\end_inset
and
\begin_inset Formula $\left(\delta\mathbf{v}^{s},\delta p\right)$
\end_inset
,
implying that the finite element stiffness matrix for a solid-fluid mixture is not symmetric under general conditions.
\end_layout
\begin_layout Standard
The directional derivatives of the external virtual work
\begin_inset Formula $\delta W_{\text{ext}}$
\end_inset
depend on the type of boundary conditions being considered.
For a prescribed total normal traction
\begin_inset Formula $t_{n}$
\end_inset
,
where
\begin_inset Formula $\mathbf{t}=t_{n}\mathbf{n}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\delta W_{\text{ext}}^{t}=\int_{\partial b}\delta\mathbf{v}^{s}\cdot t_{n}\mathbf{n}\,da,\label{eq204}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{\text{ext}}^{t}\left[\Delta\mathbf{u}\right] & =\int_{\partial b}\delta\mathbf{v}^{s}\cdot t_{n}\left(\mathbf{g}_{1}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{2}}-\mathbf{g}_{2}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{1}}\right)\frac{da}{\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|}\,,\\
D\delta W_{\text{ext}}^{t}\left[\Delta p\right] & =0,
\end{aligned}
\label{eq205}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{g}_{\alpha}=\frac{\partial\mathbf{x}}{\partial\eta^{\alpha}},\quad\alpha=1,2\label{eq206}
\end{equation}
\end_inset
are covariant basis (tangent) vectors on
\begin_inset Formula $\partial b$
\end_inset
,
such that
\begin_inset Formula
\begin{equation}
\mathbf{n}=\frac{\mathbf{g}_{1}\times\mathbf{g}_{2}}{\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|}\,.\label{eq207}
\end{equation}
\end_inset
For a prescribed normal effective traction
\begin_inset Formula $t_{n}^{e}$
\end_inset
,
where
\begin_inset Formula $\mathbf{t}=\left(-p+t_{n}^{e}\right)\mathbf{n}$
\end_inset
and
\begin_inset Formula $p$
\end_inset
is not prescribed,
then
\begin_inset Formula
\begin{equation}
\delta W_{\text{ext}}^{e}=\int_{\partial b}\delta\mathbf{v}^{s}\cdot\left(-p+t_{n}^{e}\right)\mathbf{n}\,da\,,\label{eq208}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{\text{ext}}^{e}\left[\Delta\mathbf{u}\right] & =\int_{\partial b}\delta\mathbf{v}^{s}\cdot\left(-p+t_{n}^{e}\right)\left(\mathbf{g}_{1}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{2}}-\mathbf{g}_{2}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{1}}\right)\frac{da}{\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|}\,,\\
D\delta W_{\text{ext}}^{e}\left[\Delta p\right] & =-\int_{\partial b}\delta\mathbf{v}^{s}\cdot\Delta p\,\mathbf{n}\,da\,.
\end{aligned}
\label{eq209}
\end{equation}
\end_inset
For a prescribed normal fluid flux
\begin_inset Formula $w_{n}=\mathbf{w}\cdot\mathbf{n}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\delta W_{\text{ext}}^{w}=\int_{\partial b}\delta p\,w_{n}\,da\,,\label{eq210}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{\text{ext}}^{w}\left[\Delta\mathbf{u}\right] & =\int_{\partial b}\delta p\,w_{n}\,\mathbf{n}\cdot\left(\mathbf{g}_{1}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{2}}-\mathbf{g}_{2}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{1}}\right)\frac{da}{\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|}\,,\\
D\delta W_{\text{ext}}^{w}\left[\Delta p\right] & =0\,.
\end{aligned}
\label{eq211}
\end{equation}
\end_inset
Finally,
for a prescribed external body force,
recognizing that
\begin_inset Formula $\rho\mathbf{b}=\rho^{s}\mathbf{b}^{s}+\rho^{w}\mathbf{b}^{w}$
\end_inset
and assuming that the body forces
\begin_inset Formula $\mathbf{b}^{s}$
\end_inset
and
\begin_inset Formula $\mathbf{b}^{w}$
\end_inset
do not depend on
\begin_inset Formula $p$
\end_inset
,
\begin_inset Formula
\begin{equation}
\begin{aligned}D\left(\delta W_{\text{ext}}^{b}\right)\left[\Delta\mathbf{u}\right] & =\int_{b}\delta\mathbf{v}^{s}\cdot\left[\left(\rho^{s}grad\mathbf{b}^{s}+\rho^{w}grad\mathbf{b}^{w}\right)\cdot\Delta\mathbf{u}+\left(\divg\Delta\mathbf{u}\right)\rho_{T}^{w}\mathbf{b}^{w}\right]\,dv\,,\\
D\left(\delta W_{\text{ext}}^{b}\right)\left[\Delta p\right] & =0\,.
\end{aligned}
\label{eq212}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Stabilization
\begin_inset CommandInset label
LatexCommand label
name "subsec:Biphasic-Stabilization"
\end_inset
\end_layout
\begin_layout Standard
Finite element models of deformable porous media are known to exhibit oscillations in fluid pressure caused by relatively coarse meshes near free-draining boundaries,
where a boundary layer in fluid pressure normally forms during the early time response to loading.
These spurious oscillations typically occur when the mesh is not able to resolve this boundary layer.
Stabilization methods serve as an alternative to mesh refinement,
when the latter is not feasible or practical.
In FEBio we have implemented a stabilization method based on the work of Aguilar et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Aguilar08"
literal "false"
\end_inset
.
Basically,
this method proposes that the fluid flux
\begin_inset Formula $\mathbf{w}$
\end_inset
be evaluated from
\begin_inset Formula
\begin{equation}
\mathbf{w}=-\mathbf{k}\cdot\grad\left(p+\tau\dot{p}\right)\label{eq:stab-fluid-flux}
\end{equation}
\end_inset
instead of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq107"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
where
\begin_inset Formula $\tau$
\end_inset
represents the stabilization parameter.
A representative value for
\begin_inset Formula $\tau$
\end_inset
may be evaluated from
\begin_inset Formula
\begin{equation}
\tau\approx\frac{h^{2}}{E\cdot k}\,,\label{eq:stab-tau}
\end{equation}
\end_inset
where
\begin_inset Formula $h$
\end_inset
is the element thickness on the free-draining boundary,
\begin_inset Formula $E$
\end_inset
is a representative measure of the solid matrix elastic modulus and
\begin_inset Formula $k$
\end_inset
is a representative measure of the hydraulic permeability tensor
\begin_inset Formula $\mathbf{k}$
\end_inset
.
The contribution of this form of
\begin_inset Formula $\mathbf{w}$
\end_inset
to the virtual work expression in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq194"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
is
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta G & =\int_{b}\mathbf{w}\cdot\grad\delta p\,dv\\
& =-\int_{b}\grad\delta p\cdot\mathbf{k}\cdot\grad\left(p+\tau\dot{p}\right)\,dv
\end{aligned}
\,.\label{eq:stab-virtual-work}
\end{equation}
\end_inset
The linearizations of
\begin_inset Formula $\delta G$
\end_inset
are then given by
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta G\left[\Delta\mathbf{u}\right] & =-\int_{b}\grad\delta p\cdot\left(\boldsymbol{\mathcal{K}}:\Delta\boldsymbol{\varepsilon}\right)\cdot\grad\left(p+\tau\dot{p}\right)\,dv\\
D\delta G\left[\Delta p\right] & =-\int_{b}\left(1+\frac{\tau}{\Delta t}\right)\grad\delta p\cdot\mathbf{k}\cdot\grad\Delta p\,dv
\end{aligned}
\,.\label{eq:stab-linearization}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Discretization
\begin_inset CommandInset label
LatexCommand label
name "subsec:Biphasic-discretization"
\end_inset
\end_layout
\begin_layout Standard
Let
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta\mathbf{v}^{s} & =\sum\limits_{a=1}^{m}N_{a}\delta\mathbf{v}_{a}\,, & \delta p & =\sum\limits_{a=1}^{m}N_{a}\delta p_{a}\,,\\
\Delta\mathbf{u} & =\sum\limits_{b=1}^{m}N_{b}\Delta\mathbf{u}_{b}\,, & \Delta p & =\sum\limits_{b=1}^{m}N_{b}\Delta p_{b}\,,
\end{aligned}
\label{eq213}
\end{equation}
\end_inset
where
\begin_inset Formula $N_{a}$
\end_inset
represents the interpolation functions over an element,
\begin_inset Formula $\delta\mathbf{v}_{a},\delta p_{a},\Delta\mathbf{u}_{b}\mbox{\thinspace and\thinspace}\Delta p_{b}$
\end_inset
respectively represent nodal values of
\begin_inset Formula $\delta\mathbf{v}^{s}$
\end_inset
,
\begin_inset Formula $\delta p$
\end_inset
,
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
and
\begin_inset Formula $\Delta p$
\end_inset
,
and
\begin_inset Formula $m$
\end_inset
is the number of nodes in an element.
Then the discretized form of
\begin_inset Formula $\delta W_{int}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq197"
nolink "false"
\end_inset
may be written as
\begin_inset Formula
\begin{equation}
\delta W_{\text{int}}=\sum\limits_{e=1}^{n_{e}}\sum\limits_{k=1}^{n_{\text{int}}^{\left(e\right)}}W_{k}J_{\eta}\sum\limits_{a=1}^{m}\left[\begin{array}{cc}
\delta\mathbf{v}_{a} & \delta p_{a}\end{array}\right]\cdot\left[\begin{array}{c}
\mathbf{r}_{a}^{u}\\
r_{a}^{p}
\end{array}\right]\,,\label{eq214}
\end{equation}
\end_inset
where
\begin_inset Formula $n_{e}$
\end_inset
is the number of elements in
\begin_inset Formula $b$
\end_inset
,
\begin_inset Formula $n_{\mbox{int}}^{\left(e\right)}$
\end_inset
is the number of integration points in the
\begin_inset Formula $e-$
\end_inset
th element,
\begin_inset Formula $W_{k}$
\end_inset
is the quadrature weight associated with the
\begin_inset Formula $k-$
\end_inset
th integration point,
and
\begin_inset Formula $J_{\eta}$
\end_inset
is the Jacobian of the transformation from the spatial frame to the parametric space of the element.
In the above expression,
\begin_inset Formula
\begin{equation}
\mathbf{r}_{a}^{u}=\boldsymbol{\sigma}\cdot\nabla N_{a}\,,\quad r_{a}^{p}=\mathbf{w}\cdot\nabla N_{a}-N_{a}\mbox{div}\mathbf{v}^{s}\,,\label{eq215}
\end{equation}
\end_inset
and it is understood that
\begin_inset Formula $J_{\eta}$
\end_inset
,
\begin_inset Formula $\mathbf{r}_{a}^{u}$
\end_inset
and
\begin_inset Formula $r_{a}^{p}$
\end_inset
are evaluated at the parametric coordinates of the
\begin_inset Formula $k-$
\end_inset
th integration point.
\end_layout
\begin_layout Standard
Similarly,
the discretized form of
\begin_inset Formula $D\delta W_{\mbox{int}}$
\end_inset
in Eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq199"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq203"
nolink "false"
\end_inset
may be written as
\begin_inset Formula
\begin{equation}
-D\delta W_{\text{int}}=\sum\limits_{e=1}^{n_{e}}\sum\limits_{k=1}^{n_{\text{int}}^{\left(e\right)}}W_{k}J_{\eta}\sum\limits_{a=1}^{m}\left[\begin{array}{cc}
\delta\mathbf{v}_{a} & \delta p_{a}\end{array}\right]\cdot\sum\limits_{b=1}^{m}\left[\begin{array}{cc}
\mathbf{K}_{ab}^{uu} & \mathbf{k}_{ab}^{up}\\
\mathbf{k}_{ab}^{pu} & k_{ab}^{pp}
\end{array}\right]\cdot\left[\begin{array}{c}
\Delta\mathbf{u}_{b}\\
\Delta p_{b}
\end{array}\right]\,,\label{eq216}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{K}_{ab}^{uu} & =\nabla N_{a}\cdot\boldsymbol{\mathcal{C}}\cdot\nabla N_{b}+\left(\nabla N_{a}\cdot\boldsymbol{\sigma}\cdot\nabla N_{b}\right)\mathbf{I}\\
& -N_{a}\left[N_{b}\left(\rho^{s}\nabla\mathbf{b}^{s}+\rho^{w}\nabla\mathbf{b}^{w}\right)+\rho_{T}^{w}\mathbf{b}^{w}\otimes\nabla N_{b}\right]\,,\\
\mathbf{k}_{ab}^{up} & =-N_{b}\nabla N_{a}\,,\\
\mathbf{k}_{ab}^{pu} & =-\left(\nabla N_{a}\cdot\boldsymbol{\mathcal{K}}\cdot\nabla N_{b}\right)\cdot\left(\nabla p-\rho_{T}^{w}\mathbf{b}^{w}\right)-\frac{1}{\Delta t}N_{a}\cdot\nabla N_{b}\\
& +\rho_{T}^{w}\left(\mathbf{b}^{w}\otimes\nabla N_{b}+N_{b}\nabla^{T}\mathbf{b}^{w}\right)\cdot\mathbf{k}\cdot\nabla N_{a}\,,\\
k_{ab}^{pp} & =-\nabla N_{a}\cdot\mathbf{k}\cdot\nabla N_{b},
\end{aligned}
\label{eq217}
\end{equation}
\end_inset
and
\begin_inset Formula $\Delta t$
\end_inset
is a discrete increment in time.
In a numerical implementation,
it has been found that evaluating
\begin_inset Formula $\divg\mathbf{v}^{s}$
\end_inset
from
\begin_inset Formula $\dot{J}/J$
\end_inset
,
where
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
,
yields more accurate solutions than evaluating it from the trace of
\begin_inset Formula $\grad\mathbf{v}^{s}$
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian07c"
literal "true"
\end_inset
.
Contributions from the stabilization method presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand eqref
reference "subsec:Biphasic-Stabilization"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
may be similarly evaluated.
\end_layout
\begin_layout Standard
For the various types of contributions to the external virtual work,
a similar discretization produces
\begin_inset Formula
\begin{equation}
\delta W_{\text{ext}}=\sum\limits_{e=1}^{n_{e}}\sum\limits_{k=1}^{n_{\text{int}}^{\left(e\right)}}W_{k}J_{\eta}\sum\limits_{a=1}^{m}\left[\begin{array}{cc}
\delta\mathbf{v}_{a} & \delta p_{a}\end{array}\right]\cdot\left[\begin{array}{c}
\mathbf{r}_{a}^{u}\\
r_{a}^{p}
\end{array}\right]\,,\label{eq218}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
-D\delta W_{\text{ext}}=\sum\limits_{e=1}^{n_{e}}\sum\limits_{k=1}^{n_{\text{int}}^{\left(e\right)}}W_{k}J_{\eta}\sum\limits_{a=1}^{m}\left[\begin{array}{cc}
\delta\mathbf{v}_{a} & \delta p_{a}\end{array}\right]\cdot\sum\limits_{b=1}^{m}\left[\begin{array}{cc}
\mathbf{K}_{ab}^{uu} & \mathbf{k}_{ab}^{up}\\
\mathbf{k}_{ab}^{pu} & k_{ab}^{pp}
\end{array}\right]\cdot\left[\begin{array}{c}
\Delta\mathbf{u}_{b}\\
\Delta p_{b}
\end{array}\right]\,,\label{eq219}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
J_{\eta}=\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|\,.\label{eq220}
\end{equation}
\end_inset
In this case,
\begin_inset Formula $m$
\end_inset
represents the number of nodes on an element face.
For a prescribed normal traction
\begin_inset Formula $t_{n}$
\end_inset
as given in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq204"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq205"
nolink "false"
\end_inset
,
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{r}_{a}^{u} & =t_{n}N_{a}\mathbf{n}\,, & r_{a}^{u} & =0\,,\\
\mathbf{K}_{ab}^{uu} & =t_{n}N_{a}\frac{1}{J_{\eta}}\boldsymbol{\mathbf{\mathcal{A}}}\left\{ \frac{\partial N_{b}}{\partial\eta^{1}}\mathbf{g}_{2}-\frac{\partial N_{b}}{\partial\eta^{2}}\mathbf{g}_{1}\right\} \,, & \mathbf{k}_{ab}^{up} & =\mathbf{0}\,,\\
\mathbf{k}_{ab}^{pu} & =\mathbf{0}\,, & k_{ab}^{pp} & =0\,,
\end{aligned}
\label{eq221}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\mathbf{\mathcal{A}}}\left\{ \mathbf{v}\right\} =-\boldsymbol{\mathbf{\mathcal{E}}}\cdot\mathbf{v}$
\end_inset
is the skew-symmetric tensor whose dual vector is
\begin_inset Formula $\mathbf{v}$
\end_inset
and
\begin_inset Formula $\boldsymbol{\mathbf{\mathcal{E}}}$
\end_inset
is the third-order permutation pseudo-tensor.
For a prescribed traction
\begin_inset Formula $t_{n}^{e}$
\end_inset
as given in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq208"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq209"
nolink "false"
\end_inset
,
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{r}_{a}^{u} & =\left(-p+t_{n}^{e}\right)N_{a}\mathbf{n}\,, & r_{a}^{u} & =0\,,\\
\mathbf{K}_{ab}^{uu} & =\left(-p+t_{n}^{e}\right)N_{a}\frac{1}{J_{\eta}}\boldsymbol{\mathbf{\mathcal{A}}}\left\{ \frac{\partial N_{b}}{\partial\eta^{1}}\mathbf{g}_{2}-\frac{\partial N_{b}}{\partial\eta^{2}}\mathbf{g}_{1}\right\} \,, & \mathbf{k}_{ab}^{up} & =\mathbf{0}\,,\\
\mathbf{k}_{ab}^{pu} & =\mathbf{0}\,, & k_{ab}^{pp} & =0\,.
\end{aligned}
\label{eq222}
\end{equation}
\end_inset
For a prescribed normal fluid flux
\begin_inset Formula $w_{n}$
\end_inset
as given in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq210"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq211"
nolink "false"
\end_inset
,
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{r}_{a}^{u} & =\mathbf{0}\,, & r_{a}^{u} & =w_{n}N_{a}\,,\\
\mathbf{K}_{ab}^{uu} & =\mathbf{0}\,, & \mathbf{k}_{ab}^{up} & =\mathbf{0}\,,\\
\mathbf{k}_{ab}^{pu} & =w_{n}N_{a}\frac{1}{J_{\eta}}\mathbf{n}\times\left(\frac{\partial N_{b}}{\partial\eta^{1}}\mathbf{g}_{2}-\frac{\partial N_{b}}{\partial\eta^{2}}\mathbf{g}_{1}\right)\,, & k_{ab}^{pp} & =0\,.
\end{aligned}
\label{eq223}
\end{equation}
\end_inset
\end_layout
\begin_layout Section
Weak Formulation for Biphasic-Solute Materials
\begin_inset CommandInset label
LatexCommand label
name "sec:BS-weak-formulation"
\end_inset
\end_layout
\begin_layout Standard
The virtual work integral for this problem is given by
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W & =\int_{b}\delta\mathbf{v}\cdot\divg\boldsymbol{\sigma}\,dv+\int_{b}\delta\tilde{p}\,\divg\left(\mathbf{v}^{s}+\mathbf{w}\right)\,dv\\
& +\int_{b}\delta\tilde{c}\left[\frac{\partial\left(\varphi^{w}\tilde{\kappa}\tilde{c}\right)}{\partial t}+\divg\left(\mathbf{j}+\phi^{w}\tilde{\kappa}\tilde{c}\,\mathbf{v}^{s}\right)\right]\,dv\,,
\end{aligned}
\label{eq224}
\end{equation}
\end_inset
where
\begin_inset Formula $\delta\mathbf{v}$
\end_inset
is the virtual velocity of the solid,
\begin_inset Formula $\delta\tilde{p}$
\end_inset
is the virtual effective fluid pressure,
and
\begin_inset Formula $\delta\tilde{c}$
\end_inset
is the virtual molar energy of the solute.
\begin_inset Formula $b$
\end_inset
represents the mixture domain in the spatial frame and
\begin_inset Formula $dv$
\end_inset
is an elemental mixture volume in
\begin_inset Formula $b$
\end_inset
.
In the last integral of
\begin_inset Formula $\delta W$
\end_inset
,
note that
\begin_inset Formula
\begin{equation}
\frac{\partial\left(\varphi^{w}\tilde{\kappa}\tilde{c}\right)}{\partial t}+\divg\left(\varphi^{w}\tilde{\kappa}\tilde{c}\,\mathbf{v}^{s}\right)=\frac{1}{J}\frac{D^{s}}{Dt}\left(J\varphi^{w}\tilde{\kappa}\tilde{c}\right)\,,\label{eq225}
\end{equation}
\end_inset
where
\begin_inset Formula $D^{s}f/Dt\equiv\partial f/\partial t+\mathbf{v}^{s}\cdot\grad f$
\end_inset
is the material time derivative of a scalar function
\begin_inset Formula $f$
\end_inset
in the spatial frame,
following the solid.
Similarly,
note that
\begin_inset Formula $\divg\mathbf{v}^{s}=J^{-1}\left(D^{s}J/Dt\right)$
\end_inset
.
Using the divergence theorem,
the virtual work integral may be separated into internal and external contributions,
\begin_inset Formula $\delta W=\delta W_{\text{ext}}-\delta W_{\text{int}}$
\end_inset
,
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W_{\text{int}} & =\int_{b}\boldsymbol{\sigma}:\delta\mathbf{d}^{s}\,dv+\int_{b}\left(\mathbf{w}\cdot\grad\delta\tilde{p}-\frac{\delta\tilde{p}}{J}\frac{D^{s}J}{Dt}\right)\,dv\\
& +\int_{b}\left[\mathbf{j}\cdot\grad\delta\tilde{c}-\frac{\delta\tilde{c}}{J}\frac{D^{s}}{Dt}\left(J\varphi^{w}\tilde{\kappa}\tilde{c}\right)\right]dv\,,\\
\delta W_{\text{ext}} & =\int_{\partial b}\left(\delta\mathbf{v}\cdot\mathbf{t}+\delta\tilde{p}\,w_{n}+\delta\tilde{c}\,j_{n}\right)\,da\,,
\end{aligned}
\label{eq226}
\end{equation}
\end_inset
with
\begin_inset Formula $\delta W_{\text{ext}}$
\end_inset
being evaluated on the domain's boundary surface
\begin_inset Formula $\partial b$
\end_inset
.
In the first expression
\begin_inset Formula $\delta\mathbf{d}^{s}=\left(\grad\delta\mathbf{v}+\grad^{T}\delta\mathbf{v}\right)/2$
\end_inset
represents the virtual solid rate of deformation.
\end_layout
\begin_layout Standard
To solve this nonlinear system using an iterative Newton scheme,
the virtual work must be linearized at trial solutions,
along increments in
\begin_inset Formula $\mathbf{u}$
\end_inset
,
\begin_inset Formula $\tilde{p}$
\end_inset
and
\begin_inset Formula $\tilde{c}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\delta W+D\delta W\left[\Delta\mathbf{u}\right]+D\delta W\left[\Delta\tilde{p}\right]+D\delta W\left[\Delta\tilde{c}\right]\approx0\,,\label{eq227}
\end{equation}
\end_inset
where,
for any function
\begin_inset Formula $f\left(q\right)$
\end_inset
,
\begin_inset Formula $Df\left[\Delta q\right]$
\end_inset
represents the directional derivative of
\begin_inset Formula $f$
\end_inset
along
\begin_inset Formula $\Delta q$
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
.
To operate the directional derivative on the integrand of
\begin_inset Formula $\delta W_{\text{int}}$
\end_inset
,
it is first necessary to convert the integrals from the spatial to the material domain
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
:
\begin_inset Formula
\begin{equation}
\delta W_{\text{int}}=\int_{B}\mathbf{S}:\delta\mathbf{\dot{E}}\,dV+\int_{B}\left(\mathbf{W}\cdot\grad\delta\tilde{p}-\delta\tilde{p}\frac{\partial J}{\partial t}\right)\,dV+\int_{B}\left[\mathbf{J}\cdot\grad\delta\tilde{c}-\delta\tilde{c}\frac{\partial}{\partial t}\left(J\varphi^{w}\tilde{\kappa}\tilde{c}\right)\right]dV\,,\label{eq228}
\end{equation}
\end_inset
where
\begin_inset Formula $B$
\end_inset
represents the mixture domain in the material frame,
\begin_inset Formula $dV$
\end_inset
is an elemental mixture volume in
\begin_inset Formula $B$
\end_inset
,
and
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{S} & =J\,\mathbf{F}^{-1}\cdot\boldsymbol{\sigma}\cdot\mathbf{F}^{-T}\,,\\
\delta\mathbf{\dot{E}} & =\mathbf{F}^{T}\cdot\delta\mathbf{d}^{s}\cdot\mathbf{F}\,,\\
\mathbf{W} & =J\,\mathbf{F}^{-1}\cdot\mathbf{w}\,,\\
\mathbf{J} & =J\,\mathbf{F}^{-1}\cdot\mathbf{j}\,.
\end{aligned}
\label{eq229}
\end{equation}
\end_inset
The second Piola-Kirchhoff stress tensor
\begin_inset Formula $\mathbf{S}$
\end_inset
,
and material flux vectors
\begin_inset Formula $\mathbf{W}$
\end_inset
and
\begin_inset Formula $\mathbf{J}$
\end_inset
,
are respectively related to
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
,
\begin_inset Formula $\mathbf{w}$
\end_inset
and
\begin_inset Formula $\mathbf{j}$
\end_inset
by the Piola transformations for tensors and vectors
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97,Marsden94"
literal "true"
\end_inset
.
Substituting
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq229"
nolink "false"
\end_inset
into
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq120"
nolink "false"
\end_inset
produces
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{W} & =-\mathbf{\tilde{K}}\cdot\left(\grad\tilde{p}+R\theta\frac{\tilde{\kappa}}{d_{0}}J^{-1}\mathbf{C}\cdot\mathbf{D}\cdot\grad\tilde{c}\right)\,,\\
\mathbf{J} & =\tilde{\kappa}\mathbf{D}\cdot\left(-\varphi^{w}\grad\tilde{c}+\frac{\tilde{c}}{d_{0}}J^{-1}\mathbf{C}\cdot\mathbf{W}\right)\,,
\end{aligned}
\label{eq230}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{\tilde{K}}$
\end_inset
and
\begin_inset Formula $\mathbf{D}$
\end_inset
are the material representations of the permeability and diffusivity tensors,
related to
\begin_inset Formula $\mathbf{\tilde{k}}$
\end_inset
and
\begin_inset Formula $\mathbf{d}$
\end_inset
via the Piola transformation,
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{\tilde{K}} & =J\,\mathbf{F}^{-1}\cdot\mathbf{\tilde{k}}\cdot\mathbf{F}^{-T}\,,\\
\mathbf{D} & =J\,\mathbf{F}^{-1}\cdot\mathbf{d}\cdot\mathbf{F}^{-T}\,.
\end{aligned}
\label{eq231}
\end{equation}
\end_inset
The linearization of
\begin_inset Formula $\delta W_{\text{int}}$
\end_inset
is rather involved and a summary of the resulting lengthy expressions is provided below.
In consideration of the dearth of experimental data relating
\begin_inset Formula $\tilde{\kappa}$
\end_inset
and
\begin_inset Formula $\Phi$
\end_inset
to the complete state of solid matrix strain (such as
\begin_inset Formula $\mathbf{C})$
\end_inset
,
this implementation assumes that the dependence of these functions on the strain is restricted to a dependence on the volume ratio
\begin_inset Formula $J=\left(\det\mathbf{C}\right)^{1/2}$
\end_inset
.
Furthermore,
it is assumed that the free solution diffusivity
\begin_inset Formula $d_{0}$
\end_inset
is independent of the strain.
\end_layout
\begin_layout Standard
The linearization of
\begin_inset Formula $\delta W_{\text{ext}}$
\end_inset
is described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:BS-linearization-external"
nolink "false"
\end_inset
.
Following the linearization procedure,
the resulting expressions may be discretized by nodally interpolating
\begin_inset Formula $\mathbf{u}$
\end_inset
,
\begin_inset Formula $\tilde{p}$
\end_inset
and
\begin_inset Formula $\tilde{c}$
\end_inset
over finite elements,
producing a set of equations in matrix form,
as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:BS-linearization-external"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
The formulation presented in this study is implemented in FEBio by introducing an additional module dedicated to solute transport in deformable porous media.
Classes are implemented to describe material functions for
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
,
\begin_inset Formula $\mathbf{k}$
\end_inset
,
\begin_inset Formula $\mathbf{d}$
\end_inset
(and
\begin_inset Formula $d_{0})$
\end_inset
,
\begin_inset Formula $\tilde{\kappa}$
\end_inset
and
\begin_inset Formula $\Phi$
\end_inset
,
which allow the formulation of any desired constitutive relation for these functions of
\begin_inset Formula $\mathbf{C}$
\end_inset
and
\begin_inset Formula $\tilde{c}$
\end_inset
,
along with corresponding derivatives of these functions with respect to
\begin_inset Formula $\mathbf{C}$
\end_inset
and
\begin_inset Formula $\tilde{c}$
\end_inset
.
The implementation accepts essential boundary conditions on
\begin_inset Formula $\mathbf{u}$
\end_inset
,
\begin_inset Formula $\tilde{p}$
\end_inset
and
\begin_inset Formula $\tilde{c}$
\end_inset
,
or natural boundary conditions on
\begin_inset Formula $\mathbf{t}$
\end_inset
,
\begin_inset Formula $w_{n}$
\end_inset
and
\begin_inset Formula $j_{n}$
\end_inset
;
initial conditions may also be specified for
\begin_inset Formula $\tilde{p}$
\end_inset
and
\begin_inset Formula $\tilde{c}$
\end_inset
.
Analysis results for pressure and concentration may be displayed either as
\begin_inset Formula $\tilde{p}$
\end_inset
and
\begin_inset Formula $\tilde{c}$
\end_inset
,
or as
\begin_inset Formula $p$
\end_inset
and
\begin_inset Formula $c$
\end_inset
by inverting the relations of
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq118"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Subsection
Linearization of Internal Virtual Work
\begin_inset CommandInset label
LatexCommand label
name "subsec:BS-linearization"
\end_inset
\end_layout
\begin_layout Standard
The virtual work integral
\begin_inset Formula $\delta W_{\text{int}}$
\end_inset
in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq228"
nolink "false"
\end_inset
may be linearized term by term along increments in
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
,
\begin_inset Formula $\Delta\tilde{p}$
\end_inset
and
\begin_inset Formula $\Delta\tilde{c}$
\end_inset
using the general form
\begin_inset Formula
\begin{equation}
D\left(\int_{B}F\,dV\right)\left[\Delta q\right]=\int_{B}DF\left[\Delta q\right]\,dV=\int_{b}f\,dv\,.\label{eq232}
\end{equation}
\end_inset
For notational simplicity,
the integral sign is omitted and the linearization of each term is presented in the form
\begin_inset Formula $DF\left[\Delta q\right]\,dV=f\,dv$
\end_inset
.
\end_layout
\begin_layout Subsubsection
Linearization along
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
\end_layout
\begin_layout Standard
The linearization of the first term in
\begin_inset Formula $\delta W_{\text{int}}$
\end_inset
along
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
yields
\begin_inset Formula
\begin{equation}
\left(\mathbf{S}:\delta\dot{\mathbf{E}}\right)\left[\Delta\mathbf{u}\right]\,dV=\left[\delta\mathbf{d}^{s}:\boldsymbol{\mathcal{C}}:\Delta\boldsymbol{\varepsilon}+\boldsymbol{\sigma}:\left(\grad^{T}\Delta\mathbf{u}\cdot\grad\delta\mathbf{v}\right)\right]\,dv\,,\label{eq233}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\mathcal{C}}$
\end_inset
is the spatial elasticity tensor of the mixture,
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{C}}=\boldsymbol{\mathcal{C}}^{e}-\left(\tilde{p}+R\theta\,\Phi\tilde{\kappa}\tilde{c}\right)\left(\mathbf{I}\otimes\mathbf{I}-2\mathbf{I}\,\overline{\underline{\otimes}}\,\mathbf{I}\right)-R\theta\tilde{c}\,J\frac{\partial\left(\Phi\tilde{\kappa}\right)}{\partial J}\mathbf{I}\otimes\mathbf{I}\,,\label{eq234}
\end{equation}
\end_inset
and
\begin_inset Formula $\boldsymbol{\mathcal{C}}^{e}$
\end_inset
is the spatial elasticity tensor of the solid matrix,
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{C}}^{e}=J^{-1}\left(\mathbf{F}\,\underline{\otimes}\,\mathbf{F}\right):2\frac{\partial\mathbf{S}^{e}}{\partial\mathbf{C}}:\left(\mathbf{F}^{T}\,\underline{\otimes}\,\mathbf{F}^{T}\right)\,.\label{eq235}
\end{equation}
\end_inset
The linearization of the second term is
\begin_inset Formula
\begin{equation}
D\left(\mathbf{W}\cdot\Grad\delta\tilde{p}\right)\left[\Delta\mathbf{u}\right]\,dV=\grad\delta\tilde{p}\cdot\mathbf{w}_{u}^{\prime}\,dv\,,\label{eq236}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{w}_{u}^{\prime} & \equiv J^{-1}\mathbf{F}\cdot D\mathbf{W}\left[\Delta\mathbf{u}\right]=-\left(\tilde{\boldsymbol{\mathcal{K}}}:\Delta\boldsymbol{\varepsilon}\right)\cdot\left(\grad\tilde{p}+R\theta\frac{\tilde{\kappa}}{d_{0}}\mathbf{d}\cdot\grad\tilde{c}\right)\\
& -\frac{R\theta}{d_{0}}\tilde{\mathbf{k}}\cdot\left(J^{2}\frac{\partial\left(J^{-1}\tilde{\kappa}\right)}{\partial J}\left(\divg\Delta\mathbf{u}\right)\mathbf{I}+2\tilde{\kappa}\,\Delta\boldsymbol{\varepsilon}\right)\cdot\mathbf{d}\cdot\grad\tilde{c}-\tilde{\kappa}\frac{R\theta}{d_{0}}\tilde{\mathbf{k}}\cdot\left(\boldsymbol{\mathcal{D}}:\Delta\boldsymbol{\varepsilon}\right)\cdot\grad\tilde{c}\,,
\end{aligned}
\label{eq237}
\end{equation}
\end_inset
with
\begin_inset Formula
\begin{equation}
\begin{aligned}\tilde{\boldsymbol{\mathcal{K}}} & =J^{-1}\left(\mathbf{F}\,\underline{\otimes}\,\mathbf{F}\right):2\frac{\partial\tilde{\mathbf{K}}}{\partial\mathbf{C}}:\left(\mathbf{F}^{T}\,\underline{\otimes}\,\mathbf{F}^{T}\right)\,,\\
\boldsymbol{\mathcal{D}} & =J^{-1}\left(\mathbf{F}\,\underline{\otimes}\,\mathbf{F}\right):2\frac{\partial\mathbf{D}}{\partial\mathbf{C}}:\left(\mathbf{F}^{T}\,\underline{\otimes}\,\mathbf{F}^{T}\right)\,,
\end{aligned}
\label{eq238}
\end{equation}
\end_inset
representing the spatial tangents,
with respect to the strain,
of the effective permeability and solute diffusivity,
respectively.
These fourth-order tensors exhibit minor symmetries but not major symmetry,
as described recently
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10"
literal "true"
\end_inset
.
Since
\begin_inset Formula $\tilde{\mathbf{K}}$
\end_inset
is given by substituting
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq120"
nolink "false"
\end_inset
\begin_inset Formula $_{3}$
\end_inset
into
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq231"
nolink "false"
\end_inset
\begin_inset Formula $_{1}$
\end_inset
,
the evaluation of
\begin_inset Formula $\tilde{\boldsymbol{\mathcal{K}}}$
\end_inset
is rather involved and it can be shown that
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\mathcal{K}}}=2\left(\tilde{\mathbf{k}}\otimes\mathbf{I}-2\tilde{\mathbf{k}}\,\underline{\otimes}\,\mathbf{I}\right)-\left(\tilde{\mathbf{k}}\,\overline{\underline{\otimes}}\,\tilde{\mathbf{k}}\right):\boldsymbol{\mathcal{G}}\,,\label{eq239}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\boldsymbol{\mathcal{G}} & =2\left(\mathbf{k}^{-1}\otimes\mathbf{I}-2\mathbf{k}^{-1}\,\overline{\underline{\otimes}}\,\mathbf{I}\right)-\left(\mathbf{k}^{-1}\,\underline{\otimes}\,\mathbf{k}^{-1}\right):\boldsymbol{\mathcal{K}}\\
& +\frac{R\theta\tilde{c}}{d_{0}}J\frac{\partial}{\partial J}\left(\frac{\tilde{\kappa}}{\varphi^{w}}\right)\left(\mathbf{I}-\frac{\mathbf{d}}{d_{0}}\right)\otimes\mathbf{I}\\
& +\frac{R\theta\tilde{c}}{d_{0}}\frac{\tilde{\kappa}}{\varphi^{w}}\left(\mathbf{I}\otimes\mathbf{I}-2\mathbf{I}\,\underline{\otimes}\,\mathbf{I}-\frac{1}{d_{0}}\boldsymbol{\mathcal{D}}\right)
\end{aligned}
\label{eq240}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{K}}=J^{-1}\left(\mathbf{F}\,\underline{\otimes}\,\mathbf{F}\right):2\frac{\partial\mathbf{K}}{\partial\mathbf{C}}:\left(\mathbf{F}^{T}\,\underline{\otimes}\,\mathbf{F}^{T}\right)\,.\label{eq241}
\end{equation}
\end_inset
The next term in
\begin_inset Formula $\delta W_{\text{int}}$
\end_inset
linearizes to
\begin_inset Formula
\begin{equation}
-D\left(\delta\tilde{p}\frac{\partial J}{\partial t}\right)\left[\Delta\mathbf{u}\right]\,dV=-\delta\tilde{p}\frac{1}{\Delta t}\divg\Delta\mathbf{u}\,dv\,,\label{eq242}
\end{equation}
\end_inset
where we used a backward difference scheme to approximate the time derivative,
\begin_inset Formula
\begin{equation}
\frac{\partial J}{\partial t}\approx\frac{1}{\Delta t}\left(J-J^{-\Delta t}\right)\,,\label{eq243}
\end{equation}
\end_inset
and
\begin_inset Formula $\Delta t$
\end_inset
represents the time increment relative to the previous time point.
The next term is given by
\begin_inset Formula
\begin{equation}
D\left(\mathbf{J}\cdot\Grad\delta\tilde{c}\right)\left[\Delta\mathbf{u}\right]\,dV=\grad\delta\tilde{c}\cdot\mathbf{j}_{u}^{\prime}\,dv,\label{eq244}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{j}_{u}^{\prime} & \equiv J^{-1}\mathbf{F}\cdot D\mathbf{J}\left[\Delta\mathbf{u}\right]=\left(J\frac{\partial\tilde{\kappa}}{\partial J}\left(\divg\Delta\mathbf{u}\right)\mathbf{d}+\tilde{\kappa}\boldsymbol{\mathcal{D}}:\Delta\boldsymbol{\varepsilon}\right)\cdot\left(-\varphi^{w}\grad\tilde{c}+\frac{\tilde{c}}{d_{0}}\mathbf{w}\right)\\
& +\tilde{\kappa}\mathbf{d}\cdot\left(-\varphi^{s}\left(\divg\Delta\mathbf{u}\right)\grad\tilde{c}+\frac{\tilde{c}}{d_{0}}\left(2\Delta\boldsymbol{\varepsilon}-\left(\divg\Delta\mathbf{u}\right)\mathbf{I}\right)\cdot\mathbf{w}\right)+\tilde{\kappa}\frac{\tilde{c}}{d_{0}}\mathbf{d}\cdot\mathbf{w}_{u}^{\prime}
\end{aligned}
\,.\label{eq245}
\end{equation}
\end_inset
Using a backward difference scheme for the time derivative,
the last term is
\begin_inset Formula
\begin{equation}
D\left(\delta\tilde{c}\frac{\partial\left(J\varphi^{w}\tilde{\kappa}\tilde{c}\right)}{\partial t}\right)\left[\Delta\mathbf{u}\right]\,dV=\frac{\delta\tilde{c}}{\Delta t}\frac{\partial\left(J\varphi^{w}\tilde{\kappa}\right)}{\partial J}\tilde{c}\divg\Delta\mathbf{u}\,dv\,.\label{eq246}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
Linearization along
\begin_inset Formula $\Delta\tilde{p}$
\end_inset
\end_layout
\begin_layout Standard
The linearization of the various terms in
\begin_inset Formula $\delta W_{\text{int}}$
\end_inset
along
\begin_inset Formula $\Delta\tilde{p}$
\end_inset
yields
\begin_inset Formula
\begin{equation}
D\left(\mathbf{S}:\delta\mathbf{\dot{E}}\right)\left[\Delta\tilde{p}\right]\,dV=-\Delta\tilde{p}\,\divg\delta\mathbf{v}\,dv\,,\label{eq247}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
D\left(\mathbf{W}\cdot\Grad\delta\tilde{p}-\delta\tilde{p}\frac{\partial J}{\partial t}\right)\left[\Delta\tilde{p}\right]\,dV=-\grad\delta\tilde{p}\cdot\tilde{\mathbf{k}}\cdot\grad\Delta\tilde{p}\,dv\,,\label{eq248}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
D\left(\mathbf{J}\cdot\Grad\delta\tilde{c}-\delta\tilde{c}\frac{\partial\left(J\varphi^{w}\tilde{\kappa}\tilde{c}\right)}{\partial t}\right)\left[\Delta\tilde{p}\right]\,dV=-\frac{\tilde{\kappa}\tilde{c}}{d_{0}}\grad\delta\tilde{c}\cdot\mathbf{d}\cdot\tilde{\mathbf{k}}\cdot\grad\Delta\tilde{p}\,dv\,.\label{eq249}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
Linearization along
\begin_inset Formula $\Delta\tilde{c}$
\end_inset
\end_layout
\begin_layout Standard
The linearization of the first term in
\begin_inset Formula $\delta W_{\text{int}}$
\end_inset
along
\begin_inset Formula $\Delta\tilde{c}$
\end_inset
yields
\begin_inset Formula
\begin{equation}
D\left(\mathbf{S}:\delta\mathbf{\dot{E}}\right)\left[\Delta\tilde{c}\right]\,dV=\Delta\tilde{c}\left(\boldsymbol{\sigma}_{c}^{\prime}:\delta\mathbf{d}-R\theta\frac{\partial\left(\Phi\tilde{\kappa}\tilde{c}\right)}{\partial\tilde{c}}\divg\delta\mathbf{v}\right)\,dv\,,\label{eq250}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}_{c}^{\prime}=J^{-1}\mathbf{F}\cdot\frac{\partial\mathbf{S}^{e}}{\partial\tilde{c}}\cdot\mathbf{F}^{T}\label{eq251}
\end{equation}
\end_inset
represents the spatial tangent of the stress with respect to the effective concentration.
The next term is
\begin_inset Formula
\begin{equation}
D\left(\mathbf{W}\cdot\Grad\delta\tilde{p}\right)\left[\Delta\tilde{c}\right]\,dV=\grad\delta\tilde{p}\cdot\mathbf{w}_{c}^{\prime}\,dv\,,\label{eq252}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{w}_{c}^{\prime} & \equiv J^{-1}\mathbf{F}\cdot D\mathbf{W}\left[\Delta\tilde{c}\right]=-\Delta\tilde{c}\,\tilde{\mathbf{k}}_{c}^{\prime}\cdot\left(\grad\tilde{p}+R\theta\frac{\tilde{\kappa}}{d_{0}}\mathbf{d}\cdot\grad\tilde{c}\right)\\
& -R\theta\tilde{\mathbf{k}}\cdot\left[\Delta\tilde{c}\left(\frac{\partial}{\partial\tilde{c}}\left(\frac{\tilde{\kappa}}{d_{0}}\right)\mathbf{d}+\frac{\tilde{\kappa}}{d_{0}}\mathbf{d}_{c}^{\prime}\right)\cdot\grad\tilde{c}+\frac{\tilde{\kappa}}{d_{0}}\mathbf{d}\cdot\grad\Delta\tilde{c}\right]\,,
\end{aligned}
\label{eq253}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\tilde{\mathbf{k}}_{c}^{\prime}=J^{-1}\mathbf{F}\cdot\frac{\partial\tilde{\mathbf{K}}}{\partial\tilde{c}}\cdot\mathbf{F}^{T}\label{eq254}
\end{equation}
\end_inset
is the spatial tangent of the effective hydraulic permeability with respect to the effective concentration.
\end_layout
\begin_layout Standard
The next term reduces to
\begin_inset Formula
\begin{equation}
-D\left(\delta\tilde{p}\frac{\partial J}{\partial t}\right)\left[\Delta\tilde{c}\right]\,dV=0\,.\label{eq255}
\end{equation}
\end_inset
The following term is
\begin_inset Formula
\begin{equation}
D\left(\mathbf{J}\cdot\Grad\delta\tilde{c}\right)\left[\Delta\tilde{c}\right]\,dV=\grad\delta\tilde{c}\cdot\mathbf{j}_{c}^{\prime}\,dv\,,\label{eq256}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{j}_{c}^{\prime} & \equiv J^{-1}\mathbf{F}\cdot D\mathbf{J}\left[\Delta\tilde{c}\right]\\
& =\Delta\tilde{c}\left(\frac{\partial\tilde{\kappa}}{\partial\tilde{c}}\mathbf{d}+\tilde{\kappa}\mathbf{d}_{c}^{\prime}\right)\cdot\left(-\varphi^{w}\grad\tilde{c}+\frac{\tilde{c}}{d_{0}}\mathbf{w}\right)\\
& -\varphi^{w}\tilde{\kappa}\mathbf{d}\cdot\grad\Delta\tilde{c}+\tilde{\kappa}\frac{\tilde{c}}{d_{0}}\mathbf{d}\cdot\mathbf{w}_{c}^{\prime}\,,
\end{aligned}
\label{eq257}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\mathbf{d}_{c}^{\prime}=J^{-1}\mathbf{F}\cdot\frac{\partial\mathbf{D}}{\partial\tilde{c}}\cdot\mathbf{F}^{T}\label{eq258}
\end{equation}
\end_inset
is the spatial tangent of the diffusivity with respect to the effective concentration.
\end_layout
\begin_layout Standard
The last term is
\begin_inset Formula
\begin{equation}
D\left(\frac{\partial\left(J\varphi^{w}\tilde{\kappa}\tilde{c}\right)}{\partial t}\delta\tilde{c}\right)\left[\Delta\tilde{c}\right]\,dV=\delta\tilde{c}\frac{\varphi^{w}}{\Delta t}\frac{\partial\left(\tilde{\kappa}\tilde{c}\right)}{\partial\tilde{c}}\Delta\tilde{c}\,dv\,,\label{eq259}
\end{equation}
\end_inset
where we similarly used a backward difference scheme to discretize the time derivative.
\end_layout
\begin_layout Subsection
Linearization of External Virtual Work
\begin_inset CommandInset label
LatexCommand label
name "subsec:BS-linearization-external"
\end_inset
\end_layout
\begin_layout Standard
The linearization of
\begin_inset Formula $\delta W_{\text{ext}}$
\end_inset
in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq226"
nolink "false"
\end_inset
depends on whether natural boundary conditions are prescribed as area densities or total net values over an area.
Thus,
in the case when
\begin_inset Formula $\mathbf{t}\,da$
\end_inset
(net force),
\begin_inset Formula $w_{n}da$
\end_inset
(net volumetric flow rate),
or
\begin_inset Formula $j_{n}da$
\end_inset
(net molar flow rate) are prescribed over the elemental area
\begin_inset Formula $da$
\end_inset
,
there is no variation in
\begin_inset Formula $\delta W_{\text{ext}}$
\end_inset
and it follows that
\begin_inset Formula $D\delta W_{\text{ext}}=0$
\end_inset
.
Alternatively,
in the case when
\begin_inset Formula $\mathbf{t}$
\end_inset
,
\begin_inset Formula $w_{n}$
\end_inset
or
\begin_inset Formula $j_{n}$
\end_inset
are prescribed,
the linearization may be performed by evaluating the integral in the parametric space of the boundary surface
\begin_inset Formula $\partial b$
\end_inset
,
with parametric coordinates
\begin_inset Formula $\left(\eta^{1},\eta^{2}\right)$
\end_inset
.
Accordingly,
for a point
\begin_inset Formula $\mathbf{x}\left(\eta^{1},\eta^{2}\right)$
\end_inset
on
\begin_inset Formula $\partial b$
\end_inset
,
surface tangents (covariant basis vectors) are given by
\begin_inset Formula
\begin{equation}
\mathbf{g}_{\alpha}=\frac{\partial\mathbf{x}}{\partial\eta^{\alpha}},\quad\left(\alpha=1,2\right)\label{eq260}
\end{equation}
\end_inset
and the outward unit normal is
\begin_inset Formula
\begin{equation}
\mathbf{n}=\frac{\mathbf{g}_{1}\times\mathbf{g}_{2}}{\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|}\,.\label{eq261}
\end{equation}
\end_inset
The elemental area on
\begin_inset Formula $\partial b$
\end_inset
is
\begin_inset Formula $da=\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|d\eta^{1}d\eta^{2}$
\end_inset
.
Consequently,
the external virtual work integral may be rewritten as
\begin_inset Formula
\begin{equation}
\delta W_{\text{ext}}=\int_{\partial b}\left(\delta\mathbf{v}\cdot\mathbf{t}+\delta\tilde{p}\,w_{n}+\delta\tilde{c}\,j_{n}\right)\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|d\eta^{1}d\eta^{2}\,.\label{eq262}
\end{equation}
\end_inset
The directional derivative of
\begin_inset Formula $\delta W_{\text{ext}}$
\end_inset
may then be applied directly to its integrand,
since the parametric space is invariant
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
If we restrict traction boundary conditions to the special case of normal tractions,
then
\begin_inset Formula $\mathbf{t}=t_{n}\mathbf{n}$
\end_inset
where
\begin_inset Formula $t_{n}$
\end_inset
is the prescribed normal traction component.
Then it can be shown that the linearization of
\begin_inset Formula $\delta W_{\text{ext}}$
\end_inset
along
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
produces
\begin_inset Formula
\begin{equation}
D\left(\delta W_{\text{ext}}\right)\left[\Delta\mathbf{u}\right]=\int_{\partial b}\left(t_{n}\delta\mathbf{v}+w_{n}\delta\tilde{p}\,\mathbf{n}+j_{n}\delta\tilde{c}\,\mathbf{n}\right)\cdot\left(\frac{\partial\Delta\mathbf{u}}{\partial\eta^{1}}\times\mathbf{g}_{2}+\mathbf{g}_{1}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{2}}\right)d\eta^{1}d\eta^{2}\,.\label{eq263}
\end{equation}
\end_inset
The linearizations along
\begin_inset Formula $\Delta\tilde{p}$
\end_inset
and
\begin_inset Formula $\Delta\tilde{c}$
\end_inset
reduce to zero,
\begin_inset Formula $D\left(\delta W_{\text{ext}}\right)\left[\Delta\tilde{p}\right]=0$
\end_inset
and
\begin_inset Formula $D\left(\delta W_{\text{ext}}\right)\left[\Delta\tilde{c}\right]=0$
\end_inset
.
\end_layout
\begin_layout Subsection
Discretization
\begin_inset CommandInset label
LatexCommand label
name "subsec:BS-discretization"
\end_inset
\end_layout
\begin_layout Standard
To discretize the virtual work relations,
let
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta\mathbf{v} & =\sum\limits_{a=1}^{m}N_{a}\delta\mathbf{v}_{a}\,, & \Delta\mathbf{u} & =\sum\limits_{b=1}^{m}N_{b}\Delta\mathbf{u}_{b}\,,\\
\delta\tilde{p} & =\sum\limits_{a=1}^{m}N_{a}\delta\tilde{p}_{a}\,, & \Delta\tilde{p} & =\sum\limits_{b=1}^{m}N_{b}\Delta\tilde{p}_{b}\,,\\
\delta\tilde{c} & =\sum\limits_{a=1}^{m}N_{a}\delta\tilde{c}_{a}\,, & \Delta\tilde{c} & =\sum\limits_{b=1}^{m}N_{b}\Delta\tilde{c}_{b}\,,
\end{aligned}
\label{eq264}
\end{equation}
\end_inset
where
\begin_inset Formula $N_{a}$
\end_inset
represents the interpolation functions over an element,
\begin_inset Formula $\delta\mathbf{v}_{a}$
\end_inset
,
\begin_inset Formula $\delta\tilde{p}_{a}$
\end_inset
,
\begin_inset Formula $\delta\tilde{c}_{a}$
\end_inset
,
\begin_inset Formula $\Delta\mathbf{u}_{a}$
\end_inset
,
\begin_inset Formula $\Delta\tilde{p}_{a}$
\end_inset
and
\begin_inset Formula $\Delta\tilde{c}_{a}$
\end_inset
respectively represent the nodal values of
\begin_inset Formula $\delta\mathbf{v}$
\end_inset
,
\begin_inset Formula $\delta\tilde{p}$
\end_inset
,
\begin_inset Formula $\delta\tilde{c}$
\end_inset
,
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
,
\begin_inset Formula $\Delta\tilde{p}$
\end_inset
and
\begin_inset Formula $\Delta\tilde{c}$
\end_inset
;
\begin_inset Formula $m$
\end_inset
is the number of nodes in an element.
\end_layout
\begin_layout Standard
The discretized form of
\begin_inset Formula $\delta W_{\text{int}}$
\end_inset
in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq226"
nolink "false"
\end_inset
may be written as
\begin_inset Formula
\begin{equation}
\delta W_{\text{int}}=\sum\limits_{e=1}^{n_{e}}\sum\limits_{k=1}^{n_{\text{int}}^{\left(e\right)}}W_{k}J_{\eta}\sum\limits_{a=1}^{m}\left[\begin{array}{ccc}
\delta\mathbf{v}_{a} & \delta\tilde{p}_{a} & \delta\tilde{c}_{a}\end{array}\right]\cdot\left[\begin{array}{c}
\mathbf{r}_{a}^{u}\\
r_{a}^{p}\\
r_{a}^{c}
\end{array}\right]\,,\label{eq265}
\end{equation}
\end_inset
where
\begin_inset Formula $n_{e}$
\end_inset
is the number of elements in
\begin_inset Formula $b$
\end_inset
,
\begin_inset Formula $n_{\text{int}}^{\left(e\right)}$
\end_inset
is the number of integration points in the
\begin_inset Formula $e-$
\end_inset
th element,
\begin_inset Formula $W_{k}$
\end_inset
is the quadrature weight associated with the
\begin_inset Formula $k-$
\end_inset
th integration point,
and
\begin_inset Formula $J_{\eta}$
\end_inset
is the Jacobian of the transformation from the current spatial configuration to the parametric space of the element.
In the above expression,
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{r}_{a}^{u} & =\boldsymbol{\sigma}\cdot\grad N_{a}\,,\\
r_{a}^{p} & =\mathbf{w}\cdot\grad N_{a}-N_{a}\frac{1}{J}\frac{\partial J}{\partial t}\,,\\
r_{a}^{c} & =\mathbf{j}\cdot\grad N_{a}-N_{a}\frac{1}{J}\frac{\partial}{\partial t}\left(J\varphi^{w}\tilde{\kappa}\tilde{c}\right)\,,
\end{aligned}
\label{eq266}
\end{equation}
\end_inset
and it is understood that
\begin_inset Formula $J_{\eta}$
\end_inset
,
\begin_inset Formula $\mathbf{r}_{a}^{u}$
\end_inset
,
\begin_inset Formula $r_{a}^{p}$
\end_inset
and
\begin_inset Formula $r_{a}^{c}$
\end_inset
are evaluated at the parametric coordinates of the
\begin_inset Formula $k-$
\end_inset
th integration point.
Since the parametric space is invariant,
time derivatives are evaluated in a material frame.
For example,
the time derivative
\begin_inset Formula $D^{s}J\left(\mathbf{x},t\right)/Dt$
\end_inset
appearing in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq226"
nolink "false"
\end_inset
becomes
\begin_inset Formula $\partial J\left(\eta_{k},t\right)/\partial t$
\end_inset
when evaluated at the parametric coordinates
\begin_inset Formula $\eta_{k}=\left(\eta_{k}^{1},\eta_{k}^{2},\eta_{k}^{3}\right)$
\end_inset
of the
\begin_inset Formula $k-$
\end_inset
th integration point.
\end_layout
\begin_layout Standard
Similarly,
the discretized form of
\begin_inset Formula $D\delta W_{\text{int}}=D\delta W_{\text{int}}\left[\Delta\mathbf{u}\right]+D\delta W_{\text{int}}\left[\Delta\tilde{p}\right]+D\delta W_{\text{int}}\left[\Delta\tilde{c}\right]$
\end_inset
may be written as
\begin_inset Formula
\begin{equation}
D\delta W_{\text{int}}=\sum\limits_{e=1}^{n_{e}}\sum\limits_{k=1}^{n_{\text{int}}^{\left(e\right)}}W_{k}J_{\eta}\sum\limits_{a=1}^{m}\sum\limits_{b=1}^{m}\left[\begin{array}{ccc}
\delta\mathbf{v}_{a} & \delta\tilde{p}_{a} & \delta\tilde{c}_{a}\end{array}\right]\cdot\left[\begin{array}{ccc}
\mathbf{K}_{ab}^{uu} & \mathbf{k}_{ab}^{up} & \mathbf{k}_{ab}^{uc}\\
\mathbf{k}_{ab}^{pu} & k_{ab}^{pp} & k_{ab}^{pc}\\
\mathbf{k}_{ab}^{cu} & k_{ab}^{cp} & k_{ab}^{cc}
\end{array}\right]\cdot\left[\begin{array}{c}
\Delta\mathbf{u}_{b}\\
\Delta\tilde{p}_{b}\\
\Delta\tilde{c}_{b}
\end{array}\right]\,,\label{eq267}
\end{equation}
\end_inset
where the terms in the first column are the discretized form of the linearization along
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
:
\begin_inset Formula
\begin{equation}
\mathbf{K}_{ab}^{uu}=\grad N_{a}\cdot\boldsymbol{\mathcal{C}}\cdot\grad N_{b}+\left(\grad N_{a}\cdot\boldsymbol{\sigma}\cdot\grad N_{b}\right)\mathbf{I}\,,\label{eq268}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{k}_{ab}^{pu}=\left(\mathbf{w}_{b}^{u}\right)^{T}\cdot\grad N_{a}+N_{a}\mathbf{q}_{b}^{pu}\,,\label{eq269}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{k}_{ab}^{cu}=\left(\mathbf{j}_{b}^{u}\right)^{T}\cdot\grad N_{a}+N_{a}\mathbf{q}_{b}^{cu}\,,\label{eq270}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{j}_{b}^{u} & =J\frac{\partial\tilde{\kappa}}{\partial J}\left[\mathbf{d}\cdot\left(-\varphi^{w}\grad\tilde{c}+\frac{\tilde{c}}{d_{0}}\mathbf{w}\right)\right]\otimes\grad N_{b}+\tilde{\kappa}\left({-\varphi^{w}\grad\tilde{c}+\frac{\tilde{c}}{d_{0}}\mathbf{w}}\right)\cdot\mathbf{d}\cdot\grad N_{b}\\
& +\tilde{\kappa}\left({-\varphi^{s}\left({\mathbf{d}\cdot\grad\tilde{c}}\right)\otimes\grad N_{b}+\frac{\tilde{c}}{d_{0}}\left[{2\left({\grad N_{b}\cdot\mathbf{w}}\right)\mathbf{d}-\left({\mathbf{d}\cdot\mathbf{w}}\right)\otimes\grad N_{b}}\right]}\right)+\tilde{\kappa}\frac{\tilde{c}}{d_{0}}\mathbf{d}\cdot\mathbf{w}_{b}^{u}\;,
\end{aligned}
\label{eq272}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{q}_{b}^{pu}=-\frac{1}{\Delta t}\grad N_{b},\label{eq273}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{q}_{b}^{cu}=\tilde{c}\frac{\partial\left({J\phi^{w}\tilde{\kappa}}\right)}{\partial J}\mathbf{q}_{b}^{pu}.\label{eq274}
\end{equation}
\end_inset
The terms in the second column of the stiffness matrix in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq267"
nolink "false"
\end_inset
are the discretized form of the linearization along
\begin_inset Formula $\Delta\tilde{p}$
\end_inset
:
\begin_inset Formula
\begin{equation}
\mathbf{k}_{ab}^{up}=-N_{b}\grad N_{a},\label{eq275}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
k_{ab}^{pp}=-\grad N_{a}\cdot\tilde{\mathbf{k}}\cdot\grad N_{b},\label{eq276}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
k_{ab}^{cp}=-\frac{\tilde{\kappa}\tilde{c}}{d_{0}}\grad N_{a}\cdot\mathbf{d}\cdot\tilde{\mathbf{k}}\cdot\grad N_{b}.\label{eq277}
\end{equation}
\end_inset
The terms in the third column of the stiffness matrix in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq267"
nolink "false"
\end_inset
are the discretized form of the linearization along
\begin_inset Formula $\Delta\tilde{c}$
\end_inset
:
\begin_inset Formula
\begin{equation}
\mathbf{k}_{ab}^{uc}=N_{b}\left(\boldsymbol{\sigma}_{c}^{\prime}\cdot\grad N_{a}-R\theta\frac{\partial\left(\Phi\tilde{\kappa}\tilde{c}\right)}{\partial\tilde{c}}\grad N_{a}\right)\,,\label{eq278}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
k_{ab}^{pc}=\grad N_{a}\cdot\mathbf{w}_{b}^{c}\,,\label{eq279}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
k_{ab}^{cc}=\grad N_{a}\cdot\mathbf{j}_{b}^{c}+N_{a}q_{b}^{c}\,,\label{eq280}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{w}_{b}^{c} & =-N_{b}\tilde{\mathbf{k}}_{c}^{\prime}\cdot\left(\grad\tilde{p}+R\theta\frac{\tilde{\kappa}}{d_{0}}\mathbf{d}\cdot\grad\tilde{c}\right)\\
& -R\theta\tilde{\mathbf{k}}\cdot\left[N_{b}\left(\frac{\partial}{\partial\tilde{c}}\left(\frac{\tilde{\kappa}}{d_{0}}\right)\mathbf{d}+\frac{\tilde{\kappa}}{d_{0}}\mathbf{d}_{c}^{\prime}\right)\cdot\grad\tilde{c}+\frac{\tilde{\kappa}}{d_{0}}\mathbf{d}\cdot\grad N_{b}\right]\,,
\end{aligned}
\label{eq281}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{j}_{b}^{c}=N_{b}\left(\frac{\partial\tilde{\kappa}}{\partial\tilde{c}}\mathbf{d}+\tilde{\kappa}\mathbf{d}_{c}^{\prime}\right)\cdot\left(-\varphi^{w}\grad\tilde{c}+\frac{\tilde{c}}{d_{0}}\mathbf{w}\right)+\tilde{\kappa}\mathbf{d}\cdot\left(-\varphi^{w}\grad N_{b}+\frac{\tilde{c}}{d_{0}}\mathbf{w}_{b}^{c}\right)\,,\label{eq282}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
q_{b}^{c}=-N_{b}\frac{\phi^{w}}{\Delta t}\frac{\partial\left(\tilde{\kappa}\tilde{c}\right)}{\partial\tilde{c}}\,.\label{eq283}
\end{equation}
\end_inset
The discretization of
\begin_inset Formula $\delta W_{\text{ext}}$
\end_inset
in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq226"
nolink "false"
\end_inset
has the form
\begin_inset Formula
\begin{equation}
\delta W_{\text{ext}}=\sum\limits_{e=1}^{n_{e}}\sum\limits_{k=1}^{n_{\mbox{int}}^{\left(e\right)}}W_{k}J_{\eta}\sum\limits_{a=1}^{m}\left[\begin{array}{ccc}
\delta\mathbf{v}_{a} & \delta\tilde{p}_{a} & \delta\tilde{c}_{a}\end{array}\right]\cdot\left[\begin{array}{c}
N_{a}t_{n}\mathbf{n}\\
N_{a}w_{n}\\
N_{a}j_{n}
\end{array}\right]\,,\label{eq284}
\end{equation}
\end_inset
where
\begin_inset Formula $J_{\eta}=\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|$
\end_inset
.
The summation is performed over all surface elements on which these boundary conditions are prescribed.
The discretization of
\begin_inset Formula $-D\delta W_{\text{ext}}$
\end_inset
has the form
\begin_inset Formula
\begin{equation}
-D\delta W_{\text{ext}}=\sum\limits_{e=1}^{n_{e}}\sum\limits_{k=1}^{n_{\text{int}}^{\left(e\right)}}W_{k}J_{\eta}\sum\limits_{a=1}^{m}\sum\limits_{b=1}^{m}\left[\begin{array}{ccc}
\delta\mathbf{v}_{a} & \delta\tilde{p}_{a} & \delta\tilde{c}_{a}\end{array}\right]\cdot\left[\begin{array}{ccc}
\mathbf{K}_{ab}^{uu} & \mathbf{0} & \mathbf{0}\\
\mathbf{k}_{ab}^{pu} & 0 & 0\\
\mathbf{k}_{ab}^{cu} & 0 & 0
\end{array}\right]\cdot\left[\begin{array}{c}
\Delta\mathbf{u}_{b}\\
\Delta\tilde{p}_{b}\\
\Delta\tilde{c}_{b}
\end{array}\right]\,,\label{eq285}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{K}_{ab}^{uu} & =t_{n}N_{a}\boldsymbol{\mathcal{A}}\left\{ \frac{\partial N_{b}}{\partial\eta^{1}}\mathbf{g}_{2}-\frac{\partial N_{b}}{\partial\eta^{2}}\mathbf{g}_{1}\right\} \,,\\
\mathbf{k}_{ab}^{pu} & =-w_{n}N_{a}\left(\frac{\partial N_{b}}{\partial\eta^{1}}\mathbf{g}_{2}-\frac{\partial N_{b}}{\partial\eta^{2}}\mathbf{g}_{1}\right)\times\mathbf{n}\,,\\
\mathbf{k}_{ab}^{cu} & =-j_{n}N_{a}\left(\frac{\partial N_{b}}{\partial\eta^{1}}\mathbf{g}_{2}-\frac{\partial N_{b}}{\partial\eta^{2}}\mathbf{g}_{1}\right)\times\mathbf{n}\,.
\end{aligned}
\label{eq286}
\end{equation}
\end_inset
In this expression,
\begin_inset Formula $\boldsymbol{\mathcal{A}}\left\{ \mathbf{v}\right\} $
\end_inset
is the antisymmetric tensor whose dual vector is
\begin_inset Formula $\mathbf{v}$
\end_inset
(such that
\begin_inset Formula $\boldsymbol{\mathcal{A}}\left\{ \mathbf{v}\right\} \cdot\mathbf{q}=\mathbf{v}\times\mathbf{q}$
\end_inset
for any vector
\begin_inset Formula $\mathbf{q})$
\end_inset
.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Weak Formulation for Multiphasic Materials
\begin_inset CommandInset label
LatexCommand label
name "sec:MP-weak-formulation"
\end_inset
\end_layout
\begin_layout Standard
The virtual work integral for a mixture of intrinsically incompressible constituents combines the balance of momentum for the mixture,
the balance of mass for the mixture,
and the balance of mass for each of the solutes.
In addition,
for charged mixtures,
the condition of
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq127"
nolink "false"
\end_inset
may be enforced as a penalty constraint on each solute mass balance equation:
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W & =\int_{b}\delta\mathbf{v}\cdot\mbox{div}\boldsymbol{\sigma}\,dv\\
& +\int_{b}\delta\tilde{p}\,\mbox{div}\left(\mathbf{v}^{s}+\mathbf{w}\right)\,dv\\
& +\sum\limits_{\alpha\ne s,w}\int_{b}\delta\tilde{c}^{\alpha}\left[\frac{1}{J^{s}}\frac{D^{s}}{Dt}\left(J^{s}\varphi^{w}\tilde{\kappa}^{\alpha}\tilde{c}^{\alpha}\right)+\mbox{div}\mathbf{j}^{\alpha}+\sum\limits_{\beta\ne s,w}z^{\beta}\mbox{div}\mathbf{j}^{\beta}\right]\,dv\,,
\end{aligned}
\label{eq287}
\end{equation}
\end_inset
where
\begin_inset Formula $\delta\mathbf{v}$
\end_inset
is the virtual velocity of the solid,
\begin_inset Formula $\delta\tilde{p}$
\end_inset
is the virtual effective fluid pressure,
and
\begin_inset Formula $\delta\tilde{c}^{\alpha}$
\end_inset
is the virtual molar energy of solute
\begin_inset Formula $\alpha$
\end_inset
.
Here,
\begin_inset Formula $b$
\end_inset
represents the mixture domain in the spatial frame and
\begin_inset Formula $dv$
\end_inset
is an elemental volume in
\begin_inset Formula $b$
\end_inset
.
Applying the divergence theorem,
\begin_inset Formula $\delta W$
\end_inset
may be split into internal and external contributions to the virtual work,
\begin_inset Formula $\delta W=\delta W_{\text{ext}}-\delta W_{\text{int}}$
\end_inset
,
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W_{\text{int}} & =\int_{b}\boldsymbol{\sigma}:\delta\mathbf{D}\,dv+\int_{b}\left(\mathbf{w}\cdot\mbox{grad}\delta\tilde{p}-\frac{\delta\tilde{p}}{J^{s}}\frac{D^{s}J^{s}}{Dt}\right)\,dv\\
& +\sum\limits_{\alpha\ne s,w}\int_{b}\left[\mathbf{j}^{\alpha}\cdot\mbox{grad}\delta\tilde{c}^{\alpha}-\frac{\delta\tilde{c}^{\alpha}}{J^{s}}\frac{D^{s}}{Dt}\left(J^{s}\varphi^{w}\tilde{\kappa}^{\alpha}\tilde{c}^{\alpha}\right)\right]\,dv\\
& +\sum\limits_{\alpha\ne s,w}\int_{b}\mbox{grad}\delta\tilde{c}^{\alpha}\cdot\sum\limits_{\beta\ne s,w}z^{\beta}\mathbf{j}^{\beta}\,dv\,,
\end{aligned}
\label{eq288}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\delta W_{\text{ext}}=\int_{\partial b}\left[\delta\mathbf{v}\cdot\mathbf{t}+\delta\tilde{p}\,w_{n}+\sum\limits_{\alpha\ne s,w}\delta\tilde{c}^{\alpha}\left(j_{n}^{\alpha}+\sum\limits_{\beta\ne s,w}z^{\beta}j_{n}^{\beta}\right)\right]\,da\,.\label{eq289}
\end{equation}
\end_inset
In these expressions,
\begin_inset Formula $\delta\mathbf{D}=\left(\mbox{grad}\delta\mathbf{v}+\mbox{grad}^{T}\delta\mathbf{v}\right)/2$
\end_inset
,
\begin_inset Formula $\partial b$
\end_inset
is the boundary of
\begin_inset Formula $b$
\end_inset
,
and
\begin_inset Formula $da$
\end_inset
is an elemental area on
\begin_inset Formula $\partial b$
\end_inset
.
In this finite element formulation,
\begin_inset Formula $\mathbf{u}$
\end_inset
,
\begin_inset Formula $\tilde{p}$
\end_inset
and
\begin_inset Formula $\tilde{c}^{\alpha}$
\end_inset
are used as nodal variables,
and essential boundary conditions may be prescribed on these variables.
Natural boundary conditions are prescribed to the mixture traction,
\begin_inset Formula $\mathbf{t}=\boldsymbol{\sigma}\cdot\mathbf{n}$
\end_inset
,
normal fluid flux,
\begin_inset Formula $w_{n}=\mathbf{w}\cdot\mathbf{n}$
\end_inset
,
and normal solute flux,
\begin_inset Formula $j_{n}^{\alpha}=\mathbf{j}^{\alpha}\cdot\mathbf{n}$
\end_inset
,
where
\begin_inset Formula $\mathbf{n}$
\end_inset
is the outward unit normal to
\begin_inset Formula $\partial b$
\end_inset
.
To solve the system
\begin_inset Formula $\delta W=0$
\end_inset
for nodal values of
\begin_inset Formula $\mathbf{u}$
\end_inset
,
\begin_inset Formula $\tilde{p}$
\end_inset
and
\begin_inset Formula $\tilde{c}^{\alpha}$
\end_inset
,
it is necessary to linearize these equations,
as shown for example in Sections
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:BS-linearization"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:BS-linearization-external"
nolink "false"
\end_inset
for biphasic-solute materials.
If the mixture is charged,
it is also necessary to solve for the electric potential
\begin_inset Formula $\psi$
\end_inset
by solving the algebraic relation of the electroneutrality condition in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq124"
nolink "false"
\end_inset
,
which may be rewritten as
\begin_inset Formula
\begin{equation}
c^{F}+\sum\limits_{\beta\ne s,w}z^{\beta}\tilde{\kappa}^{\beta}\tilde{c}^{\beta}=0\,.\label{eq290}
\end{equation}
\end_inset
In the special case of a triphasic mixture,
where solutes consist of two counter-ions (
\begin_inset Formula $\alpha=+,-)$
\end_inset
,
this equation may be solved in closed form to produce
\begin_inset Formula
\begin{equation}
\psi=\frac{1}{z^{\alpha}}\frac{R\theta}{F_{c}}\ln\left(\frac{2z^{\alpha}\hat{\kappa}^{\alpha}\tilde{c}^{\alpha}}{-c^{F}\pm\sqrt{\left(c^{F}\right)^{2}+4\left(z^{\alpha}\right)^{2}\left(\hat{\kappa}^{+}\tilde{c}^{+}\right)\left(\hat{\kappa}^{-}\tilde{c}^{-}\right)}}\right),\quad\alpha=+,-,\label{eq291}
\end{equation}
\end_inset
Only the positive root is valid in the argument of the logarithm function.
\end_layout
\begin_layout Subsection
Linearization along
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
\begin_inset CommandInset label
LatexCommand label
name "subsec:MP-linearization-du"
\end_inset
\end_layout
\begin_layout Standard
The linearization of the first term in
\begin_inset Formula $\delta W_{\text{int}}$
\end_inset
along
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
yields
\begin_inset Formula
\begin{equation}
\left(\mathbf{S}:\delta\mathbf{\dot{E}}\right)\left[\Delta\mathbf{u}\right]\,dV=\left[\delta\mathbf{d}^{s}:\boldsymbol{\mathcal{C}}:\Delta\boldsymbol{\varepsilon}+\boldsymbol{\sigma}:\left(\grad^{T}\Delta\mathbf{u}\cdot\grad\delta\mathbf{v}\right)\right]\,dv\,,\label{eq292}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\mathcal{C}}$
\end_inset
is the spatial elasticity tensor of the mixture,
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{C}}=\boldsymbol{\mathcal{C}}^{e}-\left(\tilde{p}+R\theta\,\Phi\sum\limits_{\beta}\tilde{\kappa}^{\beta}\tilde{c}^{\beta}\right)\left(\mathbf{I}\otimes\mathbf{I}-2\mathbf{I}\odot\mathbf{I}\right)-R\theta\sum\limits_{\beta}\tilde{c}^{\beta}\,J\frac{\partial\left(\Phi\tilde{\kappa}^{\beta}\right)}{\partial J}\mathbf{I}\otimes\mathbf{I}\,,\label{eq293}
\end{equation}
\end_inset
and
\begin_inset Formula $\boldsymbol{\mathcal{C}}^{e}$
\end_inset
is the spatial elasticity tensor of the solid matrix,
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{C}}^{e}=J^{-1}\left(\mathbf{F}\oslash\mathbf{F}\right):2\frac{\partial\mathbf{S}^{e}}{\partial\mathbf{C}}:\left(\mathbf{F}^{T}\oslash\mathbf{F}^{T}\right)\,.\label{eq294}
\end{equation}
\end_inset
The linearization of the second term is
\begin_inset Formula
\begin{equation}
D\left(\mathbf{W}\cdot\Grad\delta\tilde{p}\right)\left[\Delta\mathbf{u}\right]\,dV=\grad\delta\tilde{p}\cdot\mathbf{w}_{u}^{\prime}\,dv\,,\label{eq295}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{w}_{u}^{\prime} & \equiv-\left(\tilde{\boldsymbol{\mathcal{K}}}:\Delta\boldsymbol{\varepsilon}\right)\cdot\left(\grad\tilde{p}+R\theta\sum\limits_{\beta}\frac{\tilde{\kappa}^{\beta}}{d_{0}^{\beta}}\mathbf{d}^{\beta}\cdot\grad\tilde{c}^{\beta}\right)\\
& -\tilde{\mathbf{k}}\cdot R\theta\sum\limits_{\beta}\left(\left[J\frac{\partial}{\partial J}\left(\frac{\tilde{\kappa}^{\beta}}{d_{0}^{\beta}}\right)-\frac{\tilde{\kappa}^{\beta}}{d_{0}^{\beta}}\right]\left(\divg\Delta\mathbf{u}\right)\mathbf{d}^{\beta}+\frac{\tilde{\kappa}^{\beta}}{d_{0}^{\beta}}\left(2\Delta\boldsymbol{\varepsilon}\cdot\mathbf{d}^{\beta}+\boldsymbol{\mathcal{D}}^{\beta}:\Delta\boldsymbol{\varepsilon}\right)\right)\cdot\grad\tilde{c}^{\beta}
\end{aligned}
\label{eq296}
\end{equation}
\end_inset
with
\begin_inset Formula
\begin{equation}
\begin{aligned}\tilde{\boldsymbol{\mathcal{K}}} & =J^{-1}\left(\mathbf{F}\oslash\mathbf{F}\right):2\frac{\partial\tilde{\mathbf{K}}}{\partial\mathbf{C}}:\left(\mathbf{F}^{T}\oslash\mathbf{F}^{T}\right)\,,\\
\boldsymbol{\mathcal{D}}^{\alpha} & =J^{-1}\left(\mathbf{F}\oslash\mathbf{F}\right):2\frac{\partial\mathbf{D}^{\alpha}}{\partial\mathbf{C}}:\left(\mathbf{F}^{T}\oslash\mathbf{F}^{T}\right)\,,
\end{aligned}
\label{eq297}
\end{equation}
\end_inset
representing the spatial tangents,
with respect to the strain,
of the effective permeability and solute diffusivity,
respectively.
These fourth-order tensors exhibit minor symmetries but not major symmetry,
as described recently
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10"
literal "true"
\end_inset
.
Since
\begin_inset Formula $\tilde{\mathbf{K}}$
\end_inset
is given by substituting
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq120"
nolink "false"
\end_inset
\begin_inset Formula $_{3}$
\end_inset
into
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq231"
nolink "false"
\end_inset
\begin_inset Formula $_{1}$
\end_inset
,
the evaluation of
\begin_inset Formula $\tilde{\boldsymbol{\mathcal{K}}}$
\end_inset
is rather involved and it can be shown that
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\mathcal{K}}}=\left(\tilde{\mathbf{k}}\oslash\tilde{\mathbf{k}}\right):\left[\left(\mathbf{k}^{-1}\oslash\mathbf{k}^{-1}\right):\boldsymbol{\mathcal{K}}+\boldsymbol{\mathcal{G}}\right]\,,\label{eq298}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{K}}=J^{-1}\left(\mathbf{F}\oslash\mathbf{F}\right):2\frac{\partial\mathbf{K}}{\partial\mathbf{C}}:\left(\mathbf{F}^{T}\oslash\mathbf{F}^{T}\right)\,,\label{eq300}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{G}}=\frac{R\theta}{\varphi^{w}}\sum_{\alpha}\frac{\tilde{\kappa}^{\alpha}\tilde{c}^{\alpha}}{d_{0}^{\alpha}}\left(\begin{aligned}\left(\frac{1}{\varphi^{w}}-\frac{J}{\tilde{\kappa}^{\alpha}}\frac{\partial\tilde{\kappa}^{\alpha}}{\partial J}\right)\left(\mathbf{I}-\frac{\mathbf{d}^{\alpha}}{d_{0}^{\alpha}}\right)\otimes\mathbf{I}\\
+2\left(\mathbf{I}\odot\frac{\mathbf{d}^{\alpha}}{d_{0}^{\alpha}}+\frac{\mathbf{d}^{\alpha}}{d_{0}^{\alpha}}\odot\mathbf{I}-\mathbf{I}\odot\mathbf{I}\right)\\
-\frac{\mathbf{d}^{\alpha}}{d_{0}^{\alpha}}\otimes\mathbf{I}+\frac{\boldsymbol{\mathcal{D}}^{\alpha}}{d_{0}^{\alpha}}
\end{aligned}
\right)\,.\label{eq299}
\end{equation}
\end_inset
The next term in
\begin_inset Formula $\delta W_{\text{int}}$
\end_inset
linearizes to
\begin_inset Formula
\begin{equation}
-D\left(\delta\tilde{p}\frac{\partial J}{\partial t}\right)\left[\Delta\mathbf{u}\right]\,dV=-\delta\tilde{p}\frac{1}{\Delta t}\divg\Delta\mathbf{u}\,dv\,,\label{eq301}
\end{equation}
\end_inset
where we used a backward difference scheme to approximate the time derivative,
\begin_inset Formula
\begin{equation}
\frac{\partial J}{\partial t}\approx\frac{1}{\Delta t}\left(J-J^{-\Delta t}\right)\,,\label{eq302}
\end{equation}
\end_inset
and
\begin_inset Formula $\Delta t$
\end_inset
represents the time increment relative to the previous time point.
The next term is given by
\begin_inset Formula
\begin{equation}
D\left(\mathbf{J}^{\alpha}\cdot\Grad\delta\tilde{c}^{\alpha}\right)\left[\Delta\mathbf{u}\right]\,dV=\grad\delta\tilde{c}^{\alpha}\cdot\mathbf{j}_{u}^{\alpha\prime}\,dv\,,\label{eq303}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{j}_{u}^{\alpha\prime} & \equiv J^{-1}\mathbf{F}\cdot D\mathbf{J}\left[\Delta\mathbf{u}\right]=\left(J\frac{\partial\tilde{\kappa}^{\alpha}}{\partial J}\left(\divg\Delta\mathbf{u}\right)\mathbf{d}^{\alpha}+\tilde{\kappa}^{\alpha}\boldsymbol{\mathcal{D}}^{\alpha}:\Delta\boldsymbol{\varepsilon}\right)\cdot\mathbf{g}^{\alpha}\\
& +\tilde{\kappa}^{\alpha}\mathbf{d}^{\alpha}\cdot\left(-\varphi^{s}\left(\divg\Delta\mathbf{u}\right)\grad\tilde{c}^{\alpha}+\left(2\Delta\boldsymbol{\varepsilon}-\left(\divg\Delta\mathbf{u}\right)\mathbf{I}\right)\cdot\frac{\tilde{c}^{\alpha}}{d_{0}^{\alpha}}\mathbf{w}+\frac{\tilde{c}^{\alpha}}{d_{0}^{\alpha}}\mathbf{w}_{u}^{\prime}\right)
\end{aligned}
\,.\label{eq304}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{g}^{\alpha}=-\varphi^{w}\grad\tilde{c}^{\alpha}+\frac{\tilde{c}^{\alpha}}{d_{0}^{\alpha}}\mathbf{w}\,.\label{eq305}
\end{equation}
\end_inset
Using a backward difference scheme for the time derivative,
the last term is
\begin_inset Formula
\begin{equation}
D\left(\delta\tilde{c}^{\alpha}\frac{\partial\left(J\varphi^{w}\tilde{\kappa}^{\alpha}\tilde{c}^{\alpha}\right)}{\partial t}\right)\left[\Delta\mathbf{u}\right]\,dV=\frac{\delta\tilde{c}^{\alpha}}{\Delta t}\frac{\partial\left(J\varphi^{w}\tilde{\kappa}^{\alpha}\right)}{\partial J}\tilde{c}^{\alpha}\divg\Delta\mathbf{u}\,dv\,.\label{eq306}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Linearization along
\begin_inset Formula $\Delta\tilde{p}$
\end_inset
\begin_inset CommandInset label
LatexCommand label
name "subsec:MP-linearization-dp"
\end_inset
\end_layout
\begin_layout Standard
The linearization of the various terms in
\begin_inset Formula $\delta W_{\text{int}}$
\end_inset
along
\begin_inset Formula $\Delta\tilde{p}$
\end_inset
yields
\begin_inset Formula
\begin{equation}
D\left(\mathbf{S}:\delta\mathbf{\dot{E}}\right)\left[\Delta\tilde{p}\right]\,dV=-\Delta\tilde{p}\,\divg\delta\mathbf{v}\,dv\,,\label{eq307}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
D\left(\mathbf{W}\cdot\Grad\delta\tilde{p}-\delta\tilde{p}\frac{\partial J}{\partial t}\right)\left[\Delta\tilde{p}\right]\,dV=-\grad\delta\tilde{p}\cdot\tilde{\mathbf{k}}\cdot\grad\Delta\tilde{p}\,dv\,,\label{eq308}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
D\left(\mathbf{J}^{\alpha}\cdot\Grad\delta\tilde{c}^{\alpha}-\delta\tilde{c}^{\alpha}\frac{\partial\left(J\varphi^{w}\tilde{\kappa}^{\alpha}\tilde{c}^{\alpha}\right)}{\partial t}\right)\left[\Delta\tilde{p}\right]\,dV=-\frac{\tilde{\kappa}^{\alpha}\tilde{c}^{\alpha}}{d_{0}^{\alpha}}\grad\delta\tilde{c}^{\alpha}\cdot\mathbf{d}^{\alpha}\cdot\tilde{\mathbf{k}}\cdot\grad\Delta\tilde{p}\,dv\,.\label{eq309}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Linearization along
\begin_inset Formula $\Delta\tilde{c}^{\gamma}$
\end_inset
\begin_inset CommandInset label
LatexCommand label
name "subsec:MP-linearization-dc"
\end_inset
\end_layout
\begin_layout Standard
The linearization of the first term in
\begin_inset Formula $\delta W_{\text{int}}$
\end_inset
along
\begin_inset Formula $\Delta\tilde{c}^{\gamma}$
\end_inset
yields
\begin_inset Formula
\begin{equation}
D\left(\mathbf{S}:\delta\mathbf{\dot{E}}\right)\left[\Delta\tilde{c}^{\gamma}\right]dV=\Delta\tilde{c}^{\gamma}\left(\boldsymbol{\sigma}_{\gamma}^{\prime}:\delta\mathbf{d}-R\theta\frac{\partial\left(\Phi\tilde{\kappa}^{\alpha}\tilde{c}^{\alpha}\right)}{\partial\tilde{c}^{\gamma}}\divg\delta\mathbf{v}\right)\,dv\,,\label{eq310}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}_{\gamma}^{\prime}=J^{-1}\mathbf{F}\cdot\frac{\partial\mathbf{S}^{e}}{\partial\tilde{c}^{\gamma}}\cdot\mathbf{F}^{T}\label{eq311}
\end{equation}
\end_inset
represents the spatial tangent of the stress with respect to the effective concentration.
The next term is
\begin_inset Formula
\begin{equation}
D\left(\mathbf{W}\cdot\Grad\delta\tilde{p}\right)\left[\Delta\tilde{c}^{\gamma}\right]\,dV=\grad\delta\tilde{p}\cdot\mathbf{w}_{\gamma}^{\prime}\,dv\,,\label{eq312}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{w}_{\gamma}^{\prime} & \equiv J^{-1}\mathbf{F}\cdot D\mathbf{W}\left[\Delta\tilde{c}^{\gamma}\right]=-\tilde{\mathbf{k}}_{\gamma}^{\prime}\cdot\left(\grad\tilde{p}+R\theta\sum\limits_{\beta}\frac{\tilde{\kappa}^{\beta}}{d_{0}^{\beta}}\mathbf{d}^{\beta}\cdot\grad\tilde{c}^{\beta}\right)\Delta\tilde{c}^{\gamma}\\
& -R\theta\tilde{\mathbf{k}}\cdot\frac{\tilde{\kappa}^{\gamma}}{d_{0}^{\gamma}}\mathbf{d}^{\gamma}\cdot\grad\Delta\tilde{c}^{\gamma}-\Delta\tilde{c}^{\gamma}R\theta\tilde{\mathbf{k}}\cdot\sum\limits_{\beta}\left(\frac{\partial}{\partial\tilde{c}^{\gamma}}\left(\frac{\tilde{\kappa}^{\beta}}{d_{0}^{\beta}}\right)\mathbf{d}^{\beta}+\frac{\tilde{\kappa}^{\beta}}{d_{0}^{\beta}}\mathbf{d}_{\gamma}^{\beta\prime}\right)\cdot\grad\tilde{c}^{\beta}
\end{aligned}
\label{eq313}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\tilde{\mathbf{k}}_{\gamma}^{\prime}=J^{-1}\mathbf{F}\cdot\frac{\partial\tilde{\mathbf{K}}}{\partial\tilde{c}^{\gamma}}\cdot\mathbf{F}^{T},\quad\mathbf{d}_{\gamma}^{\beta\prime}=J^{-1}\mathbf{F}\cdot\frac{\partial\mathbf{d}^{\beta}}{\partial\tilde{c}^{\gamma}}\cdot\mathbf{F}^{T}\label{eq314}
\end{equation}
\end_inset
are the spatial tangents of the effective hydraulic permeability and solute diffusivity with respect to the effective concentration.
\end_layout
\begin_layout Standard
The next term reduces to
\begin_inset Formula
\begin{equation}
-D\left(\delta\tilde{p}\frac{\partial J}{\partial t}\right)\left[\Delta\tilde{c}^{\gamma}\right]\,dV=0\,.\label{eq315}
\end{equation}
\end_inset
The following term is
\begin_inset Formula
\begin{equation}
D\left(\mathbf{J}^{\alpha}\cdot\Grad\delta\tilde{c}^{\alpha}\right)\left[\Delta\tilde{c}^{\gamma}\right]\,dV=\grad\delta\tilde{c}^{\alpha}\cdot\mathbf{j}_{\gamma}^{\alpha\prime}\,dv\,,\label{eq316}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{j}_{\gamma}^{\alpha\prime} & \equiv J^{-1}\mathbf{F}\cdot D\mathbf{J}^{\alpha}\left[\Delta\tilde{c}^{\gamma}\right]=\Delta\tilde{c}^{\gamma}\left(\frac{\partial\tilde{\kappa}^{\alpha}}{\partial\tilde{c}^{\gamma}}\mathbf{d}^{\alpha}+\tilde{\kappa}^{\alpha}\mathbf{d}_{\gamma}^{\alpha\prime}\right)\cdot\mathbf{g}^{\alpha}\\
& +\tilde{\kappa}^{\alpha}\mathbf{d}^{\alpha}\cdot\left(-\varphi^{w}\delta_{\alpha\gamma}\grad\Delta\tilde{c}^{\gamma}+\frac{\Delta\tilde{c}^{\gamma}}{d_{0}^{\alpha}}\left(\delta_{\alpha\gamma}-\frac{\tilde{c}^{\alpha}}{d_{0}^{\alpha}}\frac{\partial d_{0}^{\alpha}}{\partial\tilde{c}^{\gamma}}\right)\mathbf{w}+\frac{\tilde{c}^{\alpha}}{d_{0}^{\alpha}}\mathbf{w}_{\gamma}^{\prime}\right)\,.
\end{aligned}
\label{eq317}
\end{equation}
\end_inset
The last term is
\begin_inset Formula
\begin{equation}
D\left(\frac{\partial\left(J\varphi^{w}\tilde{\kappa}^{\alpha}\tilde{c}^{\alpha}\right)}{\partial t}\delta\tilde{c}^{\alpha}\right)\left[\Delta\tilde{c}^{\gamma}\right]\,dV=\delta\tilde{c}^{\alpha}\frac{\varphi^{w}}{\Delta t}\frac{\partial\left(\tilde{\kappa}^{\alpha}\tilde{c}^{\alpha}\right)}{\partial\tilde{c}^{\gamma}}\Delta\tilde{c}^{\gamma}\,dv\,,\label{eq318}
\end{equation}
\end_inset
where we similarly used a backward difference scheme to discretize the time derivative.
\end_layout
\begin_layout Subsection
Linearization of External Virtual Work
\begin_inset CommandInset label
LatexCommand label
name "subsec:MP-linearization-external"
\end_inset
\end_layout
\begin_layout Standard
The linearization of
\begin_inset Formula $\delta W_{\text{ext}}$
\end_inset
in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq289"
nolink "false"
\end_inset
depends on whether natural boundary conditions are prescribed as area densities or total net values over an area.
Thus,
in the case when
\begin_inset Formula $\mathbf{t}\,da$
\end_inset
(net force),
\begin_inset Formula $w_{n}da$
\end_inset
(net volumetric flow rate),
or
\begin_inset Formula $\tilde{j}_{n}^{\alpha}da$
\end_inset
(net effective molar flow rate) are prescribed over the elemental area
\begin_inset Formula $da$
\end_inset
,
there is no variation in
\begin_inset Formula $\delta W_{\text{ext}}$
\end_inset
and it follows that
\begin_inset Formula $D\delta W_{\text{ext}}=0$
\end_inset
.
Alternatively,
in the case when
\begin_inset Formula $\mathbf{t}$
\end_inset
,
\begin_inset Formula $w_{n}$
\end_inset
or
\begin_inset Formula $\tilde{j}_{n}^{\alpha}$
\end_inset
are prescribed,
the linearization may be performed by evaluating the integral in the parametric space of the boundary surface
\begin_inset Formula $\partial b$
\end_inset
,
with parametric coordinates
\begin_inset Formula $\left(\eta^{1},\eta^{2}\right)$
\end_inset
.
Accordingly,
for a point
\begin_inset Formula $\mathbf{x}\left(\eta^{1},\eta^{2}\right)$
\end_inset
on
\begin_inset Formula $\partial b$
\end_inset
,
surface tangents (covariant basis vectors) are given by
\begin_inset Formula
\begin{equation}
\mathbf{g}_{\alpha}=\frac{\partial\mathbf{x}}{\partial\eta^{\alpha}},\quad\left(\alpha=1,2\right)\label{eq319}
\end{equation}
\end_inset
and the outward unit normal is
\begin_inset Formula
\begin{equation}
\mathbf{n}=\frac{\mathbf{g}_{1}\times\mathbf{g}_{2}}{\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|}\,.\label{eq320}
\end{equation}
\end_inset
The elemental area on
\begin_inset Formula $\partial b$
\end_inset
is
\begin_inset Formula $da=\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|d\eta^{1}d\eta^{2}$
\end_inset
.
Consequently,
the external virtual work integral may be rewritten as
\begin_inset Formula
\begin{equation}
\delta W_{\text{ext}}=\int_{\partial b}\left(\delta\mathbf{v}\cdot\mathbf{t}+\delta\tilde{p}\,w_{n}+\sum\limits_{\alpha\ne s,w}\delta\tilde{c}^{\alpha}\tilde{j}_{n}^{\alpha}\right)\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|\,d\eta^{1}d\eta^{2}\,,\label{eq321}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\tilde{j}_{n}^{\alpha}=j_{n}^{\alpha}+\sum\limits_{\beta\ne s,w}z^{\beta}j_{n}^{\beta}\,.\label{eq322}
\end{equation}
\end_inset
The directional derivative of
\begin_inset Formula $\delta W_{\text{ext}}$
\end_inset
may then be applied directly to its integrand,
since the parametric space is invariant
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
If we restrict traction boundary conditions to the special case of normal tractions,
then
\begin_inset Formula $\mathbf{t}=t_{n}\mathbf{n}$
\end_inset
where
\begin_inset Formula $t_{n}$
\end_inset
is the prescribed normal traction component.
Then it can be shown that the linearization of
\begin_inset Formula $\delta W_{\text{ext}}$
\end_inset
along
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
produces
\begin_inset Formula
\begin{equation}
D\left(\delta W_{\text{ext}}\right)\left[\Delta\mathbf{u}\right]=\int_{\partial b}\left(t_{n}\delta\mathbf{v}+w_{n}\delta\tilde{p}\,\mathbf{n}+\sum\limits_{\alpha\ne s,w}\delta\tilde{c}^{\alpha}\tilde{j}_{n}^{\alpha}\,\mathbf{n}\right)\cdot\left(\frac{\partial\Delta\mathbf{u}}{\partial\eta^{1}}\times\mathbf{g}_{2}+\mathbf{g}_{1}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{2}}\right)\,d\eta^{1}d\eta^{2}\,.\label{eq323}
\end{equation}
\end_inset
The linearizations along
\begin_inset Formula $\Delta\tilde{p}$
\end_inset
and
\begin_inset Formula $\Delta\tilde{c}^{\gamma}$
\end_inset
reduce to zero,
\begin_inset Formula $D\left(\delta W_{\text{ext}}\right)\left[\Delta\tilde{p}\right]=0$
\end_inset
and
\begin_inset Formula $D\left(\delta W_{\text{ext}}\right)\left[\Delta\tilde{c}^{\gamma}\right]=0$
\end_inset
.
\end_layout
\begin_layout Subsection
Discretization
\begin_inset CommandInset label
LatexCommand label
name "subsec:MP-discretization"
\end_inset
\end_layout
\begin_layout Standard
To discretize the virtual work relations,
let
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta\mathbf{v} & =\sum\limits_{a=1}^{m}N_{a}\delta\mathbf{v}_{a}\,, & \Delta\mathbf{u} & =\sum\limits_{b=1}^{m}N_{b}\Delta\mathbf{u}_{b}\,,\\
\delta\tilde{p} & =\sum\limits_{a=1}^{m}N_{a}\delta\tilde{p}_{a}\,, & \Delta\tilde{p} & =\sum\limits_{b=1}^{m}N_{b}\Delta\tilde{p}_{b}\,,\\
\delta\tilde{c}^{\alpha} & =\sum\limits_{a=1}^{m}N_{a}\delta\tilde{c}_{a}^{\alpha}\,, & \Delta\tilde{c}^{\gamma} & =\sum\limits_{b=1}^{m}N_{b}\Delta\tilde{c}_{b}^{\gamma}\,,
\end{aligned}
\label{eq324}
\end{equation}
\end_inset
where
\begin_inset Formula $N_{a}$
\end_inset
represents the interpolation functions over an element,
\begin_inset Formula $\delta\mathbf{v}_{a}$
\end_inset
,
\begin_inset Formula $\delta\tilde{p}_{a}$
\end_inset
,
\begin_inset Formula $\delta\tilde{c}_{a}^{\alpha}$
\end_inset
,
\begin_inset Formula $\Delta\mathbf{u}_{a}$
\end_inset
,
\begin_inset Formula $\Delta\tilde{p}_{a}$
\end_inset
and
\begin_inset Formula $\Delta\tilde{c}_{a}^{\gamma}$
\end_inset
respectively represent the nodal values of
\begin_inset Formula $\delta\mathbf{v}$
\end_inset
,
\begin_inset Formula $\delta\tilde{p}$
\end_inset
,
\begin_inset Formula $\delta\tilde{c}^{\alpha}$
\end_inset
,
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
,
\begin_inset Formula $\Delta\tilde{p}$
\end_inset
and
\begin_inset Formula $\Delta\tilde{c}^{\gamma}$
\end_inset
;
\begin_inset Formula $m$
\end_inset
is the number of nodes in an element.
\end_layout
\begin_layout Standard
The discretized form of
\begin_inset Formula $\delta W_{\text{int}}$
\end_inset
in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq226"
nolink "false"
\end_inset
may be written as
\begin_inset Formula
\begin{equation}
\delta W_{\text{int}}=\sum\limits_{e=1}^{n_{e}}\sum\limits_{k=1}^{n_{\text{int}}^{\left(e\right)}}W_{k}J_{\eta}\sum\limits_{a=1}^{m}\left[\begin{array}{cccc}
\delta\mathbf{v}_{a} & \delta\tilde{p}_{a} & \delta\tilde{c}_{a}^{\alpha} & \delta\tilde{c}_{a}^{\beta}\end{array}\right]\cdot\left[\begin{array}{c}
\mathbf{r}_{a}^{u}\\
r_{a}^{p}\\
r_{a}^{\alpha}\\
r_{a}^{\beta}
\end{array}\right]\,,\label{eq325}
\end{equation}
\end_inset
where
\begin_inset Formula $n_{e}$
\end_inset
is the number of elements in
\begin_inset Formula $b$
\end_inset
,
\begin_inset Formula $n_{\text{int}}^{\left(e\right)}$
\end_inset
is the number of integration points in the
\begin_inset Formula $e-$
\end_inset
th element,
\begin_inset Formula $W_{k}$
\end_inset
is the quadrature weight associated with the
\begin_inset Formula $k-$
\end_inset
th integration point,
and
\begin_inset Formula $J_{\eta}$
\end_inset
is the Jacobian of the transformation from the current spatial configuration to the parametric space of the element.
In the above expression,
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{r}_{a}^{u} & =\boldsymbol{\sigma}\cdot\grad N_{a}\,,\\
r_{a}^{p} & =\mathbf{w}\cdot\grad N_{a}-N_{a}\frac{1}{J}\frac{\partial J}{\partial t}\,,\\
r_{a}^{\alpha} & =\mathbf{j}^{\alpha}\cdot\grad N_{a}-N_{a}\frac{1}{J}\frac{\partial}{\partial t}\left(J\varphi^{w}\tilde{\kappa}^{\alpha}\tilde{c}^{\alpha}\right)\,,
\end{aligned}
\label{eq326}
\end{equation}
\end_inset
and it is understood that
\begin_inset Formula $J_{\eta}$
\end_inset
,
\begin_inset Formula $\mathbf{r}_{a}^{u}$
\end_inset
,
\begin_inset Formula $r_{a}^{p}$
\end_inset
and
\begin_inset Formula $r_{a}^{\alpha}$
\end_inset
are evaluated at the parametric coordinates of the
\begin_inset Formula $k-$
\end_inset
th integration point.
Since the parametric space is invariant,
time derivatives are evaluated in a material frame.
For example,
the time derivative
\begin_inset Formula $D^{s}J\left(\mathbf{x},t\right)/Dt$
\end_inset
appearing in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq226"
nolink "false"
\end_inset
becomes
\begin_inset Formula $\partial J\left(\eta_{k},t\right)/\partial t$
\end_inset
when evaluated at the parametric coordinates
\begin_inset Formula $\eta_{k}=\left(\eta_{k}^{1},\eta_{k}^{2},\eta_{k}^{3}\right)$
\end_inset
of the
\begin_inset Formula $k-$
\end_inset
th integration point.
All time derivatives are discretized using a backward difference scheme.
\end_layout
\begin_layout Standard
Similarly,
the discretized form of
\begin_inset Formula $D\delta W_{\text{int}}=D\delta W_{\text{int}}\left[\Delta\mathbf{u}\right]+D\delta W_{\text{int}}\left[\Delta\tilde{p}\right]+\sum\nolimits_{\gamma}D\delta W_{\text{int}}\left[\Delta\tilde{c}^{\gamma}\right]$
\end_inset
may be written as
\begin_inset Formula
\begin{equation}
D\delta W_{\text{int}}=\sum\limits_{e=1}^{n_{e}}\sum\limits_{k=1}^{n_{\text{int}}^{\left(e\right)}}W_{k}J_{\eta}\sum\limits_{a=1}^{m}\sum\limits_{b=1}^{m}\left[\begin{array}{cccc}
\delta\mathbf{v}_{a} & \delta\tilde{p}_{a} & \delta\tilde{c}_{a}^{\alpha} & \delta\tilde{c}_{a}^{\beta}\end{array}\right]\cdot\left[\begin{array}{cccc}
\mathbf{K}_{ab}^{uu} & \mathbf{k}_{ab}^{up} & \mathbf{k}_{ab}^{u\alpha} & \mathbf{k}_{ab}^{u\beta}\\
\mathbf{k}_{ab}^{pu} & k_{ab}^{pp} & k_{ab}^{p\alpha} & k_{ab}^{p\beta}\\
\mathbf{k}_{ab}^{\alpha u} & k_{ab}^{\alpha p} & k_{ab}^{\alpha\alpha} & k_{ab}^{\alpha\beta}\\
\mathbf{k}_{ab}^{\beta u} & k_{ab}^{\beta p} & k_{ab}^{\beta\alpha} & k_{ab}^{\beta\beta}
\end{array}\right]\cdot\left[\begin{array}{c}
\Delta\mathbf{u}_{b}\\
\Delta\tilde{p}_{b}\\
\Delta\tilde{c}_{b}^{\alpha}\\
\Delta\tilde{c}_{b}^{\beta}
\end{array}\right]\,,\label{eq327}
\end{equation}
\end_inset
where the terms in the first column are the discretized form of the linearization along
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
:
\begin_inset Formula
\begin{equation}
\mathbf{K}_{ab}^{uu}=\grad N_{a}\cdot\boldsymbol{\mathcal{C}}\cdot\grad N_{b}+\left(\grad N_{a}\cdot\boldsymbol{\sigma}\cdot\grad N_{b}\right)\mathbf{I}\,,\label{eq328}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{k}_{ab}^{pu}=\left(\mathbf{w}_{b}^{u}\right)^{T}\cdot\grad N_{a}+N_{a}\mathbf{q}_{b}^{pu}\,,\label{eq329}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{k}_{ab}^{\alpha u}=\left(\mathbf{j}_{b}^{\alpha u}+\sum\nolimits_{\beta}z^{\beta}\mathbf{j}_{b}^{\beta u}\right)^{T}\cdot\grad N_{a}+N_{a}\mathbf{q}_{b}^{\alpha u}\,,\label{eq330}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{w}_{b}^{u} & =\mathbf{g}^{p}\cdot\tilde{\boldsymbol{\mathcal{K}}}\cdot\grad N_{b}\\
& -R\theta\sum_{\beta}\frac{1}{d_{0}^{\beta}}\left(J\frac{\partial\tilde{\kappa}^{\beta}}{\partial J}-\tilde{\kappa}^{\beta}\right)\tilde{\mathbf{k}}\cdot\mathbf{d}^{\beta}\cdot\left(\grad\tilde{c}^{\beta}\otimes\grad N_{b}\right)\\
& -R\theta\sum_{\beta}\frac{\tilde{\kappa}^{\beta}}{d_{0}^{\beta}}\left[\tilde{\mathbf{k}}\cdot\left(\grad N_{b}\otimes\grad\tilde{c}^{\beta}\right)\cdot\mathbf{d}^{\beta}+\left(\grad N_{b}\cdot\mathbf{d}^{\beta}\cdot\grad\tilde{c}^{\beta}\right)\tilde{\mathbf{k}}\right]\\
& -R\theta\sum_{\beta}\frac{\tilde{\kappa}^{\beta}}{d_{0}^{\beta}}\tilde{\mathbf{k}}\cdot\left(\grad\tilde{c}^{\beta}\cdot\boldsymbol{\mathcal{D}}^{\beta}\cdot\grad N_{b}\right)\,,
\end{aligned}
\label{eq330b}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{g}^{p}=-\grad\tilde{p}-R\theta\sum\limits_{\beta}\frac{\tilde{\kappa}^{\beta}}{d_{0}^{\beta}}\mathbf{d}^{\beta}\cdot\grad\tilde{c}^{\beta}\,.\label{eq344}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{j}_{b}^{\alpha u} & =J\frac{\partial\tilde{\kappa}^{\alpha}}{\partial J}\mathbf{d}^{\alpha}\cdot\left(\mathbf{g}^{\alpha}\otimes\grad N_{b}\right)+\tilde{\kappa}^{\alpha}\mathbf{g}^{\alpha}\cdot\boldsymbol{\mathcal{D}}^{\alpha}\cdot\grad N_{b}\\
& +\tilde{\kappa}^{\alpha}\mathbf{d}^{\alpha}\cdot\left(\grad N_{b}\otimes\mathbf{w}-\mathbf{w}\otimes\grad N_{b}+\left(\grad N_{b}\cdot\mathbf{w}\right)\mathbf{I}+\mathbf{w}_{b}^{u}\right)\frac{\tilde{c}^{\alpha}}{d_{0}^{\alpha}}\\
& -\varphi^{s}\tilde{\kappa}^{\alpha}\mathbf{d}^{\alpha}\cdot\grad\tilde{c}^{\alpha}\otimes\grad N_{b}\,,
\end{aligned}
\label{eq331}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{g}^{\alpha}=-\varphi^{w}\grad\tilde{c}^{\alpha}+\frac{\tilde{c}^{\alpha}}{d_{0}^{\alpha}}\mathbf{w}\,,\label{eq331b}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{q}_{b}^{pu}=-\frac{1}{\Delta t}\grad N_{b}\,,\label{eq332}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{q}_{b}^{\alpha u}=\tilde{c}^{\alpha}\frac{\partial\left(J\varphi^{w}\tilde{\kappa}^{\alpha}\right)}{\partial J}\mathbf{q}_{b}^{pu}\,.\label{eq333}
\end{equation}
\end_inset
The terms in the second column of the stiffness matrix in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq267"
nolink "false"
\end_inset
are the discretized form of the linearization along
\begin_inset Formula $\Delta\tilde{p}$
\end_inset
:
\begin_inset Formula
\begin{equation}
\mathbf{k}_{ab}^{up}=-N_{b}\grad N_{a}\,,\label{eq334}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
k_{ab}^{pp}=-\grad N_{a}\cdot\tilde{\mathbf{k}}\cdot\grad N_{b}\,,\label{eq335}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
k_{ab}^{\alpha p}=\grad N_{a}\cdot\left(\mathbf{j}_{b}^{\alpha p}+\sum\limits_{\beta}z^{\beta}\mathbf{j}_{b}^{\beta p}\right)\,,\label{eq336}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{j}_{b}^{\alpha p}=-\frac{\tilde{\kappa}^{\alpha}\tilde{c}^{\alpha}}{d_{0}^{\alpha}}\mathbf{d}^{\alpha}\cdot\tilde{\mathbf{k}}\cdot\grad N_{b}\,.\label{eq337}
\end{equation}
\end_inset
The terms in the third column of the stiffness matrix in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq267"
nolink "false"
\end_inset
are the discretized form of the linearization along
\begin_inset Formula $\Delta\tilde{c}^{\gamma}$
\end_inset
:
\begin_inset Formula
\begin{equation}
\mathbf{k}_{ab}^{u\alpha}=N_{b}\left(\boldsymbol{\sigma}_{\alpha}^{\prime}-R\theta\left[\Phi\tilde{\kappa}^{\alpha}+\sum\limits_{\beta}\left(\frac{\partial\Phi}{\partial\tilde{c}^{\alpha}}\tilde{\kappa}^{\beta}+\Phi\frac{\partial\tilde{\kappa}^{\beta}}{\partial\tilde{c}^{\alpha}}\right)\tilde{c}^{\beta}\right]\mathbf{I}\right)\cdot\grad N_{a}\,,\label{eq338}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
k_{ab}^{p\alpha}=\grad N_{a}\cdot\mathbf{w}_{b}^{\alpha}\,,\label{eq339}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
k_{ab}^{\alpha\gamma}=\grad N_{a}\cdot\left(\mathbf{j}_{b}^{\alpha\gamma}+\sum\limits_{\beta}z^{\beta}\mathbf{j}_{b}^{\beta\gamma}\right)+N_{a}q_{b}^{\alpha\gamma}\,,\label{eq340}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{w}_{b}^{\gamma} & =N_{b}\left(\tilde{\mathbf{k}}_{\gamma}^{\prime}\cdot\mathbf{g}^{p}-R\theta\tilde{\mathbf{k}}\cdot\sum\limits_{\beta}\left(\frac{\partial}{\partial\tilde{c}^{\gamma}}\left(\frac{\tilde{\kappa}^{\beta}}{d_{0}^{\beta}}\right)\mathbf{d}^{\beta}+\frac{\tilde{\kappa}^{\beta}}{d_{0}^{\beta}}\mathbf{d}_{c}^{\beta\gamma}\right)\cdot\grad\tilde{c}^{\beta}\right)\\
& -R\theta\tilde{\mathbf{k}}\cdot\frac{\tilde{\kappa}^{\gamma}}{d_{0}^{\gamma}}\mathbf{d}^{\gamma}\cdot\grad N_{b}\,,
\end{aligned}
\label{eq341}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{j}_{b}^{\alpha\gamma} & =N_{b}\left(\frac{\partial\tilde{\kappa}^{\alpha}}{\partial\tilde{c}^{\gamma}}\mathbf{d}^{\alpha}+\tilde{\kappa}^{\alpha}\mathbf{d}_{c}^{\alpha\gamma}\right)\cdot\mathbf{g}^{\alpha}\\
& +\frac{\tilde{\kappa}^{\alpha}}{d_{0}^{\alpha}}\mathbf{d}^{\alpha}\cdot\left[\delta_{\alpha\gamma}\left(N_{b}\mathbf{w}-\varphi^{w}d_{0}^{\alpha}\grad N_{b}\right)+\tilde{c}^{\alpha}\left(\mathbf{w}_{b}^{\gamma}-\frac{N_{b}}{d_{0}^{\alpha}}\frac{\partial d_{0}^{\alpha}}{\partial\tilde{c}^{\gamma}}\mathbf{w}\right)\right]\,,
\end{aligned}
\label{eq342}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
q_{b}^{\alpha\gamma}=-N_{b}\frac{\varphi^{w}}{\Delta t}\left(\frac{\partial\tilde{\kappa}^{\alpha}}{\partial\tilde{c}^{\gamma}}\tilde{c}^{\alpha}+\delta_{\alpha\gamma}\tilde{\kappa}^{\alpha}\right)\,.\label{eq343}
\end{equation}
\end_inset
The discretization of
\begin_inset Formula $\delta W_{\text{ext}}$
\end_inset
in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq321"
nolink "false"
\end_inset
\series bold
\series default
has the form
\begin_inset Formula
\begin{equation}
\delta W_{\text{ext}}=\sum\limits_{e=1}^{n_{e}}\sum\limits_{k=1}^{n_{\text{int}}^{\left(e\right)}}W_{k}J_{\eta}\sum\limits_{a=1}^{m}\left[\begin{array}{cccc}
\delta\mathbf{v}_{a} & \delta\tilde{p}_{a} & \delta\tilde{c}_{a}^{\alpha} & \delta\tilde{c}_{a}^{\beta}\end{array}\right]\cdot\left[\begin{array}{c}
N_{a}t_{n}\mathbf{n}\\
N_{a}w_{n}\\
N_{a}\tilde{j}_{n}^{\alpha}\\
N_{a}\tilde{j}_{n}^{\beta}
\end{array}\right]\,,\label{eq345}
\end{equation}
\end_inset
where
\begin_inset Formula $J_{\eta}=\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|$
\end_inset
.
The summation is performed over all surface elements on which these boundary conditions are prescribed.
The discretization of
\begin_inset Formula $-D\delta W_{\text{ext}}$
\end_inset
has the form
\begin_inset Formula
\begin{equation}
-D\delta W_{\text{ext}}=\sum\limits_{e=1}^{n_{e}}\sum\limits_{k=1}^{n_{\mbox{int}}^{\left(e\right)}}W_{k}J_{\eta}\sum\limits_{a=1}^{m}\sum\limits_{b=1}^{m}\left[\begin{array}{cccc}
\delta\mathbf{v}_{a} & \delta\tilde{p}_{a} & \delta\tilde{c}_{a}^{\alpha} & \delta\tilde{c}_{a}^{\beta}\end{array}\right]\cdot\left[\begin{array}{cccc}
\mathbf{K}_{ab}^{uu} & \mathbf{0} & \mathbf{0} & \mathbf{0}\\
\mathbf{k}_{ab}^{pu} & 0 & 0 & 0\\
\mathbf{k}_{ab}^{\alpha u} & 0 & 0 & 0\\
\mathbf{k}_{ab}^{\beta u} & 0 & 0 & 0
\end{array}\right]\cdot\left[\begin{array}{c}
\Delta\mathbf{u}_{b}\\
\Delta\tilde{p}_{b}\\
\Delta\tilde{c}_{b}^{\alpha}\\
\Delta\tilde{c}_{b}^{\beta}
\end{array}\right]\,,\label{eq346}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{K}_{ab}^{uu} & =t_{n}N_{a}\boldsymbol{\mathcal{A}}\left\{ \frac{\partial N_{b}}{\partial\eta^{1}}\mathbf{g}_{2}-\frac{\partial N_{b}}{\partial\eta^{2}}\mathbf{g}_{1}\right\} \,,\\
\mathbf{k}_{ab}^{pu} & =-w_{n}N_{a}\left(\frac{\partial N_{b}}{\partial\eta^{1}}\mathbf{g}_{2}-\frac{\partial N_{b}}{\partial\eta^{2}}\mathbf{g}_{1}\right)\times\mathbf{n},\\
\mathbf{k}_{ab}^{\alpha u} & =-\tilde{j}_{n}^{\alpha}N_{a}\left(\frac{\partial N_{b}}{\partial\eta^{1}}\mathbf{g}_{2}-\frac{\partial N_{b}}{\partial\eta^{2}}\mathbf{g}_{1}\right)\times\mathbf{n}.
\end{aligned}
\label{eq347}
\end{equation}
\end_inset
In this expression,
\begin_inset Formula $\boldsymbol{\mathcal{A}}\left\{ \mathbf{v}\right\} $
\end_inset
is the antisymmetric tensor whose dual vector is
\begin_inset Formula $\mathbf{v}$
\end_inset
(such that
\begin_inset Formula $\boldsymbol{\mathcal{A}}\left\{ \mathbf{v}\right\} \cdot\mathbf{q}=\mathbf{v}\times\mathbf{q}$
\end_inset
for any vector
\begin_inset Formula $\mathbf{q})$
\end_inset
.
\end_layout
\begin_layout Subsection
Electric Potential and Partition Coefficient Derivatives
\begin_inset CommandInset label
LatexCommand label
name "subsec:Potential-partition-derivatives"
\end_inset
\end_layout
\begin_layout Standard
When the mixture is charged it is necessary to solve for the electric potential
\begin_inset Formula $\psi$
\end_inset
using the electroneutrality condition in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq124"
nolink "false"
\end_inset
.
This equation may be rewritted as a polynomial in
\begin_inset Formula $\zeta$
\end_inset
,
\begin_inset Formula
\begin{equation}
\sum\limits_{i=0}^{n}a_{i}\zeta^{i}\,,\label{eq348}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\zeta=\exp\left(-\frac{F_{c}\psi}{R\theta}\right)\,,\label{eq349}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
a_{i}=\begin{cases}
z^{\alpha}\hat{\kappa}^{\alpha}\tilde{c}^{\alpha} & i=z^{\alpha}-z^{\min}\\
c^{F} & i=-z^{\min}
\end{cases}\,.\label{eq350}
\end{equation}
\end_inset
Here,
\begin_inset Formula $z^{\min}=\min_{\alpha}z^{\alpha}$
\end_inset
and the polynomial degress is
\begin_inset Formula $n=z^{\max}-z^{\min}$
\end_inset
where
\begin_inset Formula $z^{\max}=\max_{\alpha}z^{\alpha}$
\end_inset
.
Since more than one solute may carry the same charge
\begin_inset Formula $z^{\alpha}$
\end_inset
,
the coefficients
\begin_inset Formula $a_{i}$
\end_inset
should be evaluated from the summation of
\begin_inset Formula $z^{\alpha}\hat{\kappa}^{\alpha}\tilde{c}^{\alpha}$
\end_inset
over all such solutes.
Only real positive roots are valid,
since
\begin_inset Formula $\psi=-R\theta\left(\ln\zeta\right)/F_{c}$
\end_inset
according to
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq349"
nolink "false"
\end_inset
.
Using Descartes' rule of signs,
an inspection of the coefficients
\begin_inset Formula $a_{i}$
\end_inset
shows tht there is only one sign change in the polynomial,
regardless of the sign of
\begin_inset Formula $c^{F}$
\end_inset
,
implying that there will always be only one positive root
\begin_inset Formula $\zeta$
\end_inset
,
which must thus be real.
Therefore,
there cannot be any ambiguity in the calculation of
\begin_inset Formula $\psi$
\end_inset
,
irrespective of the polynomial degree.
Newton's method is used to solve for the positive real root when
\begin_inset Formula $n>2$
\end_inset
.
\end_layout
\begin_layout Standard
Using the above relations,
it follows that
\begin_inset Formula $\tilde{\kappa}^{\alpha}=\hat{\kappa}^{\alpha}\zeta^{z^{\alpha}}$
\end_inset
.
An examination of the equations resulting from the linearization of the internal virtual work shows that it is necessary to evaluate derivatives of
\begin_inset Formula $\tilde{\kappa}^{\alpha}$
\end_inset
with respect to
\begin_inset Formula $J$
\end_inset
and
\begin_inset Formula $\tilde{c}^{\gamma}$
\end_inset
,
which are given by
\begin_inset Formula
\begin{equation}
\begin{aligned}\frac{\partial\tilde{\kappa}^{\alpha}}{\partial J} & =\frac{\partial\hat{\kappa}^{\alpha}}{\partial J}\zeta^{z^{\alpha}}+z^{\alpha}\tilde{\kappa}^{\alpha}\frac{1}{\zeta}\frac{\partial\zeta}{\partial J}\\
\frac{\partial\tilde{\kappa}^{\alpha}}{\partial\tilde{c}^{\gamma}} & =\frac{\partial\hat{\kappa}^{\alpha}}{\partial\tilde{c}^{\gamma}}\zeta^{z^{\alpha}}+z^{\alpha}\tilde{\kappa}^{\alpha}\frac{1}{\zeta}\frac{\partial\zeta}{\partial\tilde{c}^{\gamma}}
\end{aligned}
\,.\label{eq351}
\end{equation}
\end_inset
In these expressions,
the derivatives of
\begin_inset Formula $\hat{\kappa}^{\alpha}$
\end_inset
are obtained from the user-defined constitutive relations for the solubility.
Derivatives of
\begin_inset Formula $\zeta$
\end_inset
may be evaluated by differentiating the electroneutrality condition to produce
\begin_inset Formula
\begin{equation}
\begin{aligned}\frac{1}{\zeta}\frac{\partial\zeta}{\partial J} & =-\frac{\frac{\partial c^{F}}{\partial J}+\sum\nolimits_{\beta}z^{\beta}\zeta^{z^{\beta}}\tilde{c}^{\beta}\frac{\partial\hat{\kappa}^{\beta}}{\partial J}}{\sum\nolimits_{\beta}\left(z^{\beta}\right)^{2}\tilde{\kappa}^{\beta}\tilde{c}^{\beta}}\\
\frac{1}{\zeta}\frac{\partial\zeta}{\partial\tilde{c}^{\gamma}} & =-\frac{z^{\gamma}\tilde{\kappa}^{\gamma}+\sum\nolimits_{\beta}z^{\beta}\zeta^{z^{\beta}}\tilde{c}^{\beta}\frac{\partial\hat{\kappa}^{\beta}}{\partial\tilde{c}^{\gamma}}}{\sum\nolimits_{\beta}\left(z^{\beta}\right)^{2}\tilde{\kappa}^{\beta}\tilde{c}^{\beta}}
\end{aligned}
\,.\label{eq352}
\end{equation}
\end_inset
The derivative
\begin_inset Formula $\partial c^{F}/\partial J$
\end_inset
may be evaluated from
\begin_inset Formula
\begin{equation}
c^{F}=\frac{1-\varphi_{r}^{s}}{J-\varphi_{r}^{s}}c_{r}^{F}\,,\label{eq353}
\end{equation}
\end_inset
where
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
is the referential solid volume fraction (volume of solid in current configuration per volume of the mixture in the reference configuration) and
\begin_inset Formula $c_{r}^{F}$
\end_inset
is the referential fixed charge density (equivalent charge in current configuration per volume of the mixture in the reference configuration).
\end_layout
\begin_layout Subsection
Chemical Reactions
\begin_inset CommandInset label
LatexCommand label
name "subsec:MP-chemical-reactions"
\end_inset
\end_layout
\begin_layout Subsubsection
Virtual Work and Linearization
\end_layout
\begin_layout Standard
The contribution to
\begin_inset Formula $\delta W$
\end_inset
due to chemical reactions is given by
\begin_inset Formula $\delta G$
\end_inset
,
where
\begin_inset Formula
\[
\divg\left(\mathbf{v}^{s}+\mathbf{w}\right)=\hat{\varphi}^{w}+\left(1-\varphi^{s}\right)\hat{\zeta}\sum_{\alpha}\nu^{\alpha}\mathcal{V}^{\alpha}
\]
\end_inset
\begin_inset Formula
\begin{equation}
\delta G=\int_{b}\delta\tilde{p}\left[\hat{\varphi}^{w}+\left(1-\varphi^{s}\right)\hat{\zeta}\overline{\mathcal{V}}\right]\,dv+\sum\limits_{\iota}\nu^{\iota}\int_{b}\delta\tilde{c}^{\iota}\left(1-\varphi^{s}\right)\hat{\zeta}\,dv\,.\label{eq354}
\end{equation}
\end_inset
The linearization of
\begin_inset Formula $\delta G$
\end_inset
along a solid displacement increment
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
is
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta G\left[\Delta\mathbf{u}\right] & =\int_{b}\delta\tilde{p}\,\left(\hat{\varphi}^{w}\,\divg\Delta\mathbf{u}+\hat{\boldsymbol{\varphi}}_{\varepsilon}^{w}:\Delta\boldsymbol{\varepsilon}\right)\,dv\\
& +\overline{\mathcal{V}}\int_{b}\delta\tilde{p}\left[\hat{\zeta}\,\divg\Delta\mathbf{u}+\left(J-\varphi_{r}^{s}\right)\hat{\boldsymbol{\zeta}}_{\varepsilon}:\Delta\boldsymbol{\varepsilon}\right]\,dv\\
& +\sum_{\iota}\nu^{\iota}\int_{b}\delta\tilde{c}^{\iota}\left[\hat{\zeta}\left(1-\frac{\partial\varphi_{r}^{s}}{\partial J}\right)\,\divg\Delta\mathbf{u}+\left(J-\varphi_{r}^{s}\right)\hat{\boldsymbol{\zeta}}_{\varepsilon}:\Delta\boldsymbol{\varepsilon}\right]\,dv
\end{aligned}
\,,\label{eq354b}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\hat{\boldsymbol{\varphi}}_{\varepsilon}^{w}=\mathbf{F}\cdot\frac{\partial\hat{\varphi}^{w}}{\partial\mathbf{E}}\cdot\mathbf{F}^{T}\,,\quad\hat{\boldsymbol{\zeta}}_{\varepsilon}=J^{-1}\mathbf{F}\cdot\frac{\partial\hat{\zeta}}{\partial\mathbf{E}}\cdot\mathbf{F}^{T}\,,\label{eq354c}
\end{equation}
\end_inset
and
\begin_inset Formula
\[
\frac{\partial\varphi_{r}^{s}}{\partial J}=\frac{\sum_{\sigma}\frac{M^{\sigma}}{\rho_{T}^{\sigma}}c^{\sigma}\left(1+\sum_{\sigma}\frac{M^{\sigma}}{\rho_{T}^{\sigma}}c^{\sigma}\right)+\left(J-\varphi_{0}^{s}\right)\sum_{\sigma}\frac{M^{\sigma}}{\rho_{T}^{\sigma}}\frac{1}{\tilde{\kappa}^{\sigma}}\frac{\partial\tilde{\kappa}^{\sigma}}{\partial J}c^{\sigma}}{\left(1+\sum\limits_{\sigma}\frac{M^{\sigma}c^{\sigma}}{\rho_{T}^{\sigma}}\right)^{2}}
\]
\end_inset
for solutes-as-SBMs,
and
\begin_inset Formula
\[
\frac{\partial\varphi_{r}^{s}}{\partial J}=\frac{\sum_{\sigma}\frac{\rho_{r}^{\sigma}}{\rho_{T}^{\sigma}}\left(J\varphi^{w}+\sum_{\sigma}\frac{\rho_{r}^{\sigma}}{\rho_{T}^{\sigma}}\right)+J\varphi^{w}\left(J-\varphi_{0}^{s}\right)\sum_{\sigma}\frac{\rho_{r}^{\sigma}}{\rho_{T}^{\sigma}}\frac{1}{\tilde{\kappa}^{\sigma}}\frac{\partial\tilde{\kappa}^{\sigma}}{\partial J}}{\left(J\varphi^{w}+\sum\limits_{\sigma}\frac{\rho_{r}^{\sigma}}{\rho_{T}^{\sigma}}\right)^{2}}
\]
\end_inset
for SBMs,
as obtained from eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:phirs-solutes-as-SBMs"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
Currently,
\begin_inset Formula $\hat{\zeta}$
\end_inset
is assumed to be independent of
\begin_inset Formula $\tilde{p}$
\end_inset
in FEBio;
it follows that the linearization along the effective fluid pressure increment
\begin_inset Formula $\Delta\tilde{p}$
\end_inset
is
\begin_inset Formula
\begin{equation}
D\delta G\left[\Delta\tilde{p}\right]=\int_{b}\delta\tilde{p}\,\frac{\partial\hat{\varphi}^{w}}{\partial\tilde{p}}\Delta p\,dv\,.\label{eq354d}
\end{equation}
\end_inset
Finally,
the linearization along a concentration increment
\begin_inset Formula $\Delta\tilde{c}^{\iota}$
\end_inset
is
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta G\left[\Delta\tilde{c}^{\iota}\right] & =\int_{b}\delta\tilde{p}\,\frac{\partial\hat{\varphi}^{w}}{\partial\tilde{c}^{\iota}}\Delta\tilde{c}^{\iota}\,dv\\
& +\overline{\mathcal{V}}\int_{b}\delta\tilde{p}\left(1-\varphi^{s}\right)\frac{\partial\hat{\zeta}}{\partial\tilde{c}^{\iota}}\Delta\tilde{c}^{\iota}\,dv\\
& +\sum_{\gamma}\nu^{\gamma}\int_{b}\delta\tilde{c}^{\gamma}\left(\left(1-\varphi^{s}\right)\frac{\partial\hat{\zeta}}{\partial\tilde{c}^{\iota}}-\frac{1}{J}\frac{\partial\varphi_{r}^{s}}{\partial\tilde{c}^{\iota}}\hat{\zeta}\right)\Delta\tilde{c}^{\iota}\,dv
\end{aligned}
\,.\label{eq354e}
\end{equation}
\end_inset
where
\begin_inset Formula
\[
\frac{\partial\varphi_{r}^{s}}{\partial\tilde{c}^{\iota}}=\begin{cases}
\frac{\left(J-\varphi_{r}^{s}\right)^{2}}{J-\varphi_{0}^{s}}\sum_{\sigma}\frac{M^{\sigma}}{\rho_{T}^{\sigma}}\left(\tilde{\kappa}^{\sigma}+\tilde{c}^{\sigma}\frac{\partial\tilde{\kappa}^{\sigma}}{\partial\tilde{c}^{\sigma}}\right) & \iota=\sigma\\
\frac{\left(J-\varphi_{r}^{s}\right)^{2}}{J-\varphi_{0}^{s}}\sum_{\sigma}\frac{M^{\alpha}}{\rho_{T}^{\sigma}}\tilde{c}^{\sigma}\frac{\partial\tilde{\kappa}^{\sigma}}{\partial\tilde{c}^{\iota}} & \iota\ne\sigma
\end{cases}
\]
\end_inset
for solutes-as-SBMs,
as obtained from eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:phirs-solutes-as-SBMs"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
The discretized form of these expressions is given by
\begin_inset Formula
\begin{equation}
\delta G=\sum_{a}\delta\tilde{p}_{a}r_{a}^{p}+\sum_{\gamma}\sum_{a}\delta\tilde{c}_{a}^{\gamma}r_{a}^{\gamma}\,,\label{eq354f}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}r_{a}^{p} & =\int_{b}N_{a}\,\left[\hat{\varphi}^{w}+\left(1-\varphi^{s}\right)\hat{\zeta}\bar{\mathcal{V}}\right]\,dv\\
r_{a}^{\gamma} & =\nu^{\gamma}\int_{b}N_{a}\left(1-\varphi^{s}\right)\hat{\zeta}\,dv
\end{aligned}
\,.\label{eq354g}
\end{equation}
\end_inset
Similarly,
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta G\left[\Delta\mathbf{u}\right] & =\sum_{a}\delta\tilde{p}_{a}\sum_{b}\mathbf{k}_{ab}^{pu}\cdot\Delta\mathbf{u}_{b}\\
& +\sum_{\gamma}\sum_{a}\delta\tilde{c}_{a}^{\gamma}\sum_{b}\mathbf{k}_{ab}^{\gamma u}\cdot\Delta\mathbf{u}_{b}
\end{aligned}
\,,\label{eq354h}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{k}_{ab}^{pu} & =\int_{b}N_{a}\left(\hat{\varphi}^{w}\mathbf{I}+\hat{\boldsymbol{\varphi}}_{\varepsilon}^{w}\right)\cdot\grad N_{b}\,dv\\
& +\bar{\mathcal{V}}\int_{a}N_{a}\left[\hat{\zeta}\mathbf{I}+J\varphi^{w}\hat{\boldsymbol{\zeta}}_{\varepsilon}\right]\cdot\grad N_{b}\,dv\\
\mathbf{k}_{ab}^{\gamma u} & =\nu^{\gamma}\int_{a}N_{a}\left[\left(1-\frac{\partial\varphi_{r}^{s}}{\partial J}\right)\hat{\zeta}\mathbf{I}+J\varphi^{w}\hat{\boldsymbol{\zeta}}_{\varepsilon}\right]\cdot\grad N_{b}\,dv
\end{aligned}
\,.\label{eq354i}
\end{equation}
\end_inset
Then,
\begin_inset Formula
\begin{equation}
D\delta G\left[\Delta\tilde{p}\right]=\sum_{a}\delta\tilde{p}_{a}\sum_{b}k_{ab}^{pp}\Delta\tilde{p}_{b}\,,\label{eq354j}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
k_{ab}^{pp}=\int_{b}N_{a}\,\frac{\partial\hat{\varphi}^{w}}{\partial\tilde{p}}N_{b}\,dv\,.\label{eq354k}
\end{equation}
\end_inset
Finally,
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta G\left[\Delta\tilde{c}^{\iota}\right] & =\sum_{a}\delta\tilde{p}_{a}\sum_{b}k_{ab}^{p\iota}\Delta\tilde{c}_{b}^{\iota}\\
& +\sum_{\gamma}\sum_{a}\delta\tilde{c}_{a}^{\gamma}\sum_{b}k_{ab}^{\gamma\iota}\Delta\tilde{c}_{b}^{\iota}
\end{aligned}
\,,\label{eq354l}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}k_{ab}^{p\iota} & =\int_{b}N_{a}N_{b}\frac{\partial\hat{\varphi}^{w}}{\partial\tilde{c}^{\iota}}\,dv+\bar{\mathcal{V}}\int_{b}N_{a}N_{b}\left(1-\varphi^{s}\right)\frac{\partial\hat{\zeta}}{\partial\tilde{c}^{\iota}}\,dv\\
k_{ab}^{\gamma\iota} & =\nu^{\gamma}\int_{b}N_{a}N_{b}\left(\left(1-\varphi^{s}\right)\frac{\partial\hat{\zeta}}{\partial\tilde{c}^{\iota}}-\frac{1}{J}\frac{\partial\varphi_{r}^{s}}{\partial\tilde{c}^{\iota}}\hat{\zeta}\right)\,dv
\end{aligned}
\,.\label{eq354m}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
Updating Solid-Bound Molecule Concentrations
\end_layout
\begin_layout Standard
The solid-bound molecule concentrations
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
are evaluated at integration points of each element;
they do not represent nodal degrees of freedom.
The values of
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
are updated at the end of each iteration in the solution of the nonlinear equations for the nodal degrees of freedom,
using trapezoidal integration on
\begin_inset Formula $\hat{\rho}_{r}^{\sigma}$
\end_inset
in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq155"
nolink "false"
\end_inset
.
According to
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq164"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq166"
nolink "false"
\end_inset
,
we have
\begin_inset Formula $\hat{\rho}_{r}^{\sigma}=\left(J-\varphi_{r}^{s}\right)M^{\sigma}\nu^{\sigma}\hat{\zeta}$
\end_inset
,
which is evaluated as the average of values at
\begin_inset Formula $t_{n}$
\end_inset
and
\begin_inset Formula $t_{n+1}$
\end_inset
,
then
\begin_inset Formula
\begin{equation}
\left(\rho_{r}^{\sigma}\right)_{n+1}=\left(\rho_{r}^{\sigma}\right)_{n}+\left(\hat{\rho}_{r}^{\sigma}\right)_{n+\frac{1}{2}}\Delta t\label{eq:sbm-incremental-eq}
\end{equation}
\end_inset
where
\begin_inset Formula $\Delta t=t_{n+1}-t_{n}$
\end_inset
.
\end_layout
\begin_layout Section
Computational Fluid Dynamics
\begin_inset CommandInset label
LatexCommand label
name "sec:Computational-Fluid-Dynamics"
\end_inset
\end_layout
\begin_layout Standard
A more detailed description of the FEBio fluid solver can be found in
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian18"
literal "true"
\end_inset
.
\end_layout
\begin_layout Subsection
Weak Formulation
\begin_inset CommandInset label
LatexCommand label
name "subsec:CFD-Weak-Formulation"
\end_inset
\end_layout
\begin_layout Standard
The nodal unknowns in this formulation are
\begin_inset Formula $\mathbf{v}$
\end_inset
and
\begin_inset Formula $J$
\end_inset
(or
\begin_inset Formula $e$
\end_inset
),
which may be solved using the momentum balance in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:momentum-balance"
nolink "false"
\end_inset
and the kinematic constraint between
\begin_inset Formula $J$
\end_inset
and
\begin_inset Formula $\mathbf{v}$
\end_inset
given in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:divv-kinematic-relation"
nolink "false"
\end_inset
.
The virtual work integral for a Galerkin finite element formulation
\begin_inset CommandInset citation
LatexCommand cite
key "Bonet97"
literal "true"
\end_inset
is given by
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W & =\int_{\Omega}\delta\mathbf{v}\cdot\left(\divg\boldsymbol{\sigma}+\rho\left(\mathbf{b}-\mathbf{a}\right)\right)dv\\
& +\int_{\Omega}\delta J\left(\frac{\dot{J}}{J}-\divg\mathbf{v}\right)dv\,,
\end{aligned}
\label{eq:virtual work}
\end{equation}
\end_inset
where
\begin_inset Formula $\delta\mathbf{v}$
\end_inset
is a virtual velocity and
\begin_inset Formula $\delta J$
\end_inset
is a virtual energy density;
\begin_inset Formula $\Omega$
\end_inset
is the fluid finite element domain and
\begin_inset Formula $dv$
\end_inset
is a differential volume in
\begin_inset Formula $\Omega$
\end_inset
.
This virtual work statement may be directly related to the axiom of energy balance,
specialized to conditions of isothermal flow of viscous compressible fluids (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:CFD-Energy-Balance"
nolink "false"
\end_inset
).
Using the divergence theorem,
we may rewrite the weak form of this integral as the difference between external and internal virtual work,
\begin_inset Formula $\delta W=\delta W_{ext}-\delta W_{int}$
\end_inset
,
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W_{int} & =\int_{\Omega}\boldsymbol{\tau}:\grad\delta\mathbf{v}\,dv+\int_{\Omega}\delta\mathbf{v}\cdot\left(\grad p+\rho\mathbf{a}\right)\,dv\\
& -\int_{\Omega}\left(\delta J\frac{\dot{J}}{J}+\grad\delta J\cdot\mathbf{v}\right)\,dv\,,
\end{aligned}
\label{eq:virtual-work-internal-1}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\delta W_{ext}=\int_{\partial\Omega}\delta\mathbf{v}\cdot\mathbf{t}^{\tau}\,da+\int_{\Omega}\delta\mathbf{v}\cdot\rho\mathbf{b}\,dv-\int_{\partial\Omega}\delta J\,v_{n}\,da\,.\label{eq:virtual-work-external-1}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\partial\Omega$
\end_inset
is the boundary of
\begin_inset Formula $\Omega$
\end_inset
and
\begin_inset Formula $da$
\end_inset
is a differential area on
\begin_inset Formula $\partial\Omega$
\end_inset
,
\begin_inset Formula $\mathbf{t}^{\tau}=\boldsymbol{\tau}\cdot\mathbf{n}$
\end_inset
is the viscous component of the traction
\begin_inset Formula $\mathbf{t}$
\end_inset
,
and
\begin_inset Formula $v_{n}=\mathbf{v}\cdot\mathbf{n}$
\end_inset
is the velocity normal to the boundary
\begin_inset Formula $\partial\Omega$
\end_inset
,
with
\begin_inset Formula $\mathbf{n}$
\end_inset
representing the outward normal on
\begin_inset Formula $\partial\Omega$
\end_inset
.
From these expressions,
it becomes evident that essential (Dirichlet) boundary conditions may be prescribed on
\begin_inset Formula $\mathbf{v}$
\end_inset
and
\begin_inset Formula $J$
\end_inset
,
while natural (Neumann) boundary conditions may be prescribed on
\begin_inset Formula $\mathbf{t}^{\tau}$
\end_inset
and
\begin_inset Formula $v_{n}$
\end_inset
.
The appearance of velocity in both essential and natural boundary conditions may seem surprising at first.
To better understand the nature of these boundary conditions,
it is convenient to separate the velocity into its normal and tangential components,
\begin_inset Formula $\mathbf{v}=v_{n}\mathbf{n}+\mathbf{v}_{t}$
\end_inset
,
where
\begin_inset Formula $\mathbf{v}_{t}=\left(\mathbf{I}-\mathbf{n}\otimes\mathbf{n}\right)\cdot\mathbf{v}$
\end_inset
.
In particular,
for inviscid flow,
the viscous stress
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
and its corresponding traction
\begin_inset Formula $\mathbf{t}^{\tau}$
\end_inset
are both zero,
leaving
\begin_inset Formula $v_{n}$
\end_inset
as the sole natural boundary condition;
similarly,
\begin_inset Formula $J$
\end_inset
becomes the only essential boundary condition in such flows,
since
\begin_inset Formula $\mathbf{v}_{t}$
\end_inset
is unknown
\emph on
a priori
\emph default
on a frictionless boundary and must be obtained from the solution of the analysis.
\end_layout
\begin_layout Standard
In general,
prescribing
\begin_inset Formula $J$
\end_inset
is equivalent to prescribing the elastic fluid pressure,
since
\begin_inset Formula $p$
\end_inset
is only a function of
\begin_inset Formula $J$
\end_inset
.
On a boundary where no conditions are prescribed explicitly,
we conclude that
\begin_inset Formula $v_{n}=0$
\end_inset
and
\begin_inset Formula $\mathbf{t}^{\tau}=\mathbf{0}$
\end_inset
,
which represents a frictionless wall.
Conversely,
it is possible to prescribe
\begin_inset Formula $v_{n}$
\end_inset
and
\begin_inset Formula $\mathbf{t}^{\tau}$
\end_inset
on a boundary to produce a desired inflow or outflow while simultaneously stabilizing the flow conditions by prescribing a suitable viscous traction.
Prescribing essential boundary conditions
\begin_inset Formula $\mathbf{v}_{t}$
\end_inset
and
\begin_inset Formula $J$
\end_inset
determines the tangential velocity on a boundary as well as the elastic fluid pressure
\begin_inset Formula $p$
\end_inset
,
leaving the option to also prescribe the normal component of the viscous traction,
\begin_inset Formula $t_{n}^{\tau}=\mathbf{t}^{\tau}\cdot\mathbf{n}$
\end_inset
,
to completely determine the normal traction
\begin_inset Formula $t_{n}=\mathbf{t}\cdot\mathbf{n}$
\end_inset
(or else
\begin_inset Formula $t_{n}^{\tau}$
\end_inset
naturally equals zero).
Mixed boundary conditions represent common physical features:
Prescribing
\begin_inset Formula $v_{n}$
\end_inset
and
\begin_inset Formula $\mathbf{v}_{t}$
\end_inset
completely determines the velocity
\begin_inset Formula $\mathbf{v}$
\end_inset
on a boundary;
prescribing
\begin_inset Formula $\mathbf{t}^{\tau}$
\end_inset
and
\begin_inset Formula $J$
\end_inset
completely determines the traction
\begin_inset Formula $\mathbf{t}=\boldsymbol{\sigma}\cdot\mathbf{n}$
\end_inset
on a boundary.
Note that
\begin_inset Formula $v_{n}$
\end_inset
and
\begin_inset Formula $J$
\end_inset
are mutually exclusive boundary conditions,
and the same holds for
\begin_inset Formula $\mathbf{v}_{t}$
\end_inset
and the tangential component of the viscous traction,
\begin_inset Formula $\mathbf{t}_{t}^{\tau}=\left(\mathbf{I}-\mathbf{n}\otimes\mathbf{n}\right)\cdot\mathbf{t}^{\tau}$
\end_inset
.
\end_layout
\begin_layout Subsection
Temporal Discretization and Linearization
\begin_inset CommandInset label
LatexCommand label
name "subsec:CFD-Discretization-Linearization"
\end_inset
\end_layout
\begin_layout Standard
The time derivatives,
\begin_inset Formula $\partial\mathbf{v}/\partial t$
\end_inset
which appears in the expression for
\begin_inset Formula $\mathbf{a}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:acceleration"
nolink "false"
\end_inset
,
and
\begin_inset Formula $\partial J/\partial t$
\end_inset
which similarly appears in
\begin_inset Formula $\dot{J}$
\end_inset
,
may be discretized upon the choice of a time integration scheme,
such as the generalized-
\begin_inset Formula $\alpha$
\end_inset
method
\begin_inset CommandInset citation
LatexCommand cite
key "Jansen00"
literal "true"
\end_inset
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Generalized-Alpha-Method"
nolink "false"
\end_inset
).
In this scheme,
\begin_inset Formula $\delta W$
\end_inset
is evaluated at an intermediate time step
\begin_inset Formula $t_{n+\alpha}=\alpha t_{n+1}+\left(1-\alpha\right)t_{n}$
\end_inset
between the current time step
\begin_inset Formula $t_{n+1}$
\end_inset
and previous time step
\begin_inset Formula $t_{n}$
\end_inset
,
though different values of
\begin_inset Formula $\alpha$
\end_inset
are used for the primary variables and their time derivatives.
The velocity and volume ratio are evaluated as
\begin_inset Formula $\mathbf{v}_{n+\alpha_{f}}$
\end_inset
and
\begin_inset Formula $J_{n+\alpha_{f}}$
\end_inset
at the intermediate time step
\begin_inset Formula $t_{n+\alpha_{f}}$
\end_inset
,
whereas their time derivatives are evaluated as
\begin_inset Formula $\left(\partial\mathbf{v}/\partial t\right)_{n+\alpha_{m}}$
\end_inset
and
\begin_inset Formula $\left(\partial J/\partial t\right)_{n+\alpha_{m}}$
\end_inset
at the intermediate time step
\begin_inset Formula $t_{n+\alpha_{m}}$
\end_inset
.
The parameters
\begin_inset Formula $\alpha_{f}$
\end_inset
and
\begin_inset Formula $\alpha_{m}$
\end_inset
are evaluated from the spectral radius for an infinite time step,
\begin_inset Formula $\rho_{\infty}$
\end_inset
,
as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Generalized-Alpha-Method"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
The solution of the nonlinear equation
\begin_inset Formula $\delta W=0$
\end_inset
is obtained by linearizing this relation as
\begin_inset Formula
\begin{equation}
\delta W+D\delta W\left[\Delta\mathbf{v}\right]+D\delta W\left[\Delta J\right]\approx0\,,\label{eq:linearized-virtual-work}
\end{equation}
\end_inset
where the operator
\begin_inset Formula $D\delta W\left[\cdot\right]$
\end_inset
represents the directional derivative of
\begin_inset Formula $\delta W$
\end_inset
at
\begin_inset Formula $\left(\mathbf{v},J\right)$
\end_inset
along an increment
\begin_inset Formula $\Delta\mathbf{v}$
\end_inset
of
\begin_inset Formula $\mathbf{v}$
\end_inset
,
or
\begin_inset Formula $\Delta J$
\end_inset
of
\begin_inset Formula $J$
\end_inset
\begin_inset CommandInset citation
LatexCommand cite
key "Bonet97"
literal "true"
\end_inset
.
The aim of this analysis is to solve for the velocity
\begin_inset Formula $\mathbf{v}_{n+1}$
\end_inset
and volume ratio
\begin_inset Formula $J_{n+1}$
\end_inset
at the current time step
\begin_inset Formula $t_{n+1}$
\end_inset
.
Using the split form of
\begin_inset Formula $\delta W$
\end_inset
between external and internal work contributions,
this relation may be expanded as
\begin_inset Formula
\begin{equation}
\begin{aligned} & D\delta W_{int}\left[\Delta\mathbf{v}\right]+D\delta W_{int}\left[\Delta J\right]-D\delta W_{ext}\left[\Delta\mathbf{v}\right]\\
& -D\delta W_{ext}\left[\Delta J\right]\approx\delta W_{ext}-\delta W_{int}\,.
\end{aligned}
\label{eq:linearized-work-split}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
In this framework the finite element mesh is defined on the spatial domain
\begin_inset Formula $\Omega$
\end_inset
,
which is fixed (time-invariant) in conventional CFD treatments.
Thus,
we can linearize
\begin_inset Formula $\delta W_{int}$
\end_inset
along increments
\begin_inset Formula $\Delta\mathbf{v}$
\end_inset
in the velocity
\begin_inset Formula $\mathbf{v}_{n+1}$
\end_inset
and
\begin_inset Formula $\Delta J$
\end_inset
in the volume ratio
\begin_inset Formula $J_{n+1}$
\end_inset
,
by simply bringing the directional derivative operator into the integrals of eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:virtual-work-internal-1"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:virtual-work-external-1"
nolink "false"
\end_inset
.
The linearization of
\begin_inset Formula $\mathbf{v}_{n+\alpha_{f}}$
\end_inset
and
\begin_inset Formula $J_{n+\alpha_{f}}$
\end_inset
is given by
\begin_inset Formula
\[
\begin{aligned}D\mathbf{v}_{n+\alpha_{f}}\left[\Delta\mathbf{v}\right] & =\alpha_{f}\Delta\mathbf{v}\\
DJ_{n+\alpha_{f}}\left[\Delta J\right] & =\alpha_{f}\Delta J
\end{aligned}
\]
\end_inset
whereas that of
\begin_inset Formula $\left(\partial\mathbf{v}/\partial t\right)_{n+\alpha_{m}}$
\end_inset
and
\begin_inset Formula $\left(\partial J/\partial t\right)_{n+\alpha_{m}}$
\end_inset
is given by
\begin_inset Formula
\begin{equation}
D\left(\frac{\partial\mathbf{v}}{dt}\right)_{n+\alpha_{m}}\left[\Delta\mathbf{v}\right]=\frac{\alpha_{m}}{\gamma}\frac{\Delta\mathbf{v}}{\Delta t}\,,\label{eq:discretized-a}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
D\left(\frac{\partial J}{\partial t}\right)_{n+\alpha_{m}}\left[\Delta\mathbf{v}\right]=\frac{\alpha_{m}}{\gamma}\frac{\Delta J}{\Delta t}\,.\label{eq:discretized-J}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\Delta t$
\end_inset
is the current time increment and
\begin_inset Formula $\gamma$
\end_inset
is the Newmark integration parameter
\begin_inset CommandInset citation
LatexCommand cite
key "Jansen00"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
The linearization of
\begin_inset Formula $\delta W_{int}$
\end_inset
along an increment
\begin_inset Formula $\Delta\mathbf{v}$
\end_inset
is then
\begin_inset Formula
\begin{equation}
\begin{aligned}D\left(\delta W_{int}\right)\left[\Delta\mathbf{v}\right] & =\alpha_{f}\int_{\Omega}\grad\delta\mathbf{v}:\boldsymbol{\mathcal{C}}^{\tau}:\grad\Delta\mathbf{v}\,dv\\
& +\alpha_{f}\int_{\Omega}\delta\mathbf{v}\cdot\rho\left(\left(\frac{\alpha_{m}}{\alpha_{f}\gamma}\frac{\mathbf{I}}{\Delta t}+\mathbf{L}\right)\cdot\Delta\mathbf{v}+\grad\Delta\mathbf{v}\cdot\mathbf{v}\right)\,dv\\
& -\alpha_{f}\int_{\Omega}\left(\frac{\delta J}{J}\grad J+\grad\delta J\right)\cdot\Delta\mathbf{v}\,dv
\end{aligned}
\label{eq:Wint-linearization-v}
\end{equation}
\end_inset
where we have introduced the fourth-order tensor
\begin_inset Formula $\boldsymbol{\mathcal{C}}^{\tau}$
\end_inset
representing the tangent of the viscous stress with respect to the rate of deformation,
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{C}}^{\tau}=\frac{\partial\boldsymbol{\tau}}{\partial\mathbf{D}}\,.\label{eq:stress-tangent-D}
\end{equation}
\end_inset
Note that
\begin_inset Formula $\boldsymbol{\mathcal{C}}^{\tau}$
\end_inset
exhibits minor symmetries because of the symmetries of
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
and
\begin_inset Formula $\mathbf{D}$
\end_inset
;
in Cartesian components,
we have
\begin_inset Formula $\mathcal{C}_{ijkl}^{\tau}=\mathcal{C}_{jikl}^{\tau}$
\end_inset
and
\begin_inset Formula $\mathcal{C}_{ijkl}^{\tau}=\mathcal{C}_{ijlk}^{\tau}$
\end_inset
.
In general,
\begin_inset Formula $\boldsymbol{\mathcal{C}}^{\tau}$
\end_inset
does not exhibit major symmetry (
\begin_inset Formula $\mathcal{C}_{ijkl}^{\tau}\ne\mathcal{C}_{klij}^{\tau}$
\end_inset
),
though the common constitutive relations adopted in fluid mechanics produce such symmetry as shown below.
\end_layout
\begin_layout Standard
The linearization of
\begin_inset Formula $\delta W_{int}$
\end_inset
along an increment
\begin_inset Formula $\Delta J$
\end_inset
is
\begin_inset Formula
\begin{equation}
\begin{aligned}D\left(\delta W_{int}\right)\left[\Delta J\right] & =\alpha_{f}\int_{b}\Delta J\,\boldsymbol{\tau}_{J}^{\prime}:\grad\delta\mathbf{v}\,dv-\alpha_{f}\int_{\Omega}\delta\mathbf{v}\cdot\Delta J\frac{\rho}{J}\mathbf{a}\,dv\\
& +\alpha_{f}\int_{\Omega}\delta\mathbf{v}\cdot\left(p^{\prime}\grad\Delta J+\Delta J\,p^{\prime\prime}\grad J\right)\,dv\\
& -\alpha_{f}\int_{\Omega}\frac{\delta J}{J}\left(\left(\frac{\alpha_{m}}{\alpha_{f}\gamma}\frac{1}{\Delta t}-\frac{\dot{J}}{J}\right)\Delta J+\grad\Delta J\cdot\mathbf{v}\right)\,dv
\end{aligned}
\label{eq:Wint-linearization-J}
\end{equation}
\end_inset
where we have used
\begin_inset Formula $DJ\left[\Delta J\right]=\Delta J$
\end_inset
;
\begin_inset Formula $p^{\prime}$
\end_inset
and
\begin_inset Formula $p^{\prime\prime}$
\end_inset
respectively represent the first and second derivatives of
\begin_inset Formula $p\left(J\right)$
\end_inset
.
We have also defined
\begin_inset Formula $\boldsymbol{\tau}_{J}^{\prime}$
\end_inset
as the tangent of the viscous stress
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
with respect to
\begin_inset Formula $J$
\end_inset
,
\begin_inset Formula
\begin{equation}
\boldsymbol{\tau}_{J}^{\prime}=\frac{\partial\boldsymbol{\tau}}{\partial J}\,.\label{eq:stress-tangent-J}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
For the external work,
when
\begin_inset Formula $\mathbf{t}^{\tau}$
\end_inset
,
\begin_inset Formula $\mathbf{b}$
\end_inset
and
\begin_inset Formula $v_{n}$
\end_inset
are prescribed,
these linearizations simplify to
\begin_inset Formula
\begin{equation}
D\left(\delta W_{ext}\right)\left[\Delta\mathbf{v}\right]=0\,,\label{eq:Wext-linearization-v}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
D\left(\delta W_{ext}\right)\left[\Delta J\right]=-\alpha_{f}\int_{b}\delta\mathbf{v}\cdot\Delta J\,\frac{\rho}{J}\mathbf{b}\,dv\,.\label{eq:Wext-linearization-J}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
We may define the fluid dilatation
\begin_inset Formula $e=J-1$
\end_inset
as an alternative essential variable,
since initial and boundary conditions
\begin_inset Formula $e=0$
\end_inset
are more convenient to handle in a numerical scheme than
\begin_inset Formula $J=1$
\end_inset
.
It follows that
\begin_inset Formula $\grad J=\grad e$
\end_inset
and
\begin_inset Formula $\partial J/\partial t=\partial e/\partial t$
\end_inset
.
Therefore the changes to the above equations are minimal,
simply requiring the substitution
\begin_inset Formula $J=1+e$
\end_inset
and
\begin_inset Formula $\Delta J=\Delta e$
\end_inset
.
Steady-state analyses may be obtained by setting the terms involving
\begin_inset Formula $\Delta t^{-1}$
\end_inset
to zero in eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:discretized-a"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:discretized-J"
nolink "false"
\end_inset
,
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Wint-linearization-v"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Wint-linearization-J"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Subsection
Spatial Discretization
\begin_inset CommandInset label
LatexCommand label
name "subsec:CFD-Spatial-Discretization"
\end_inset
\end_layout
\begin_layout Standard
The velocity
\begin_inset Formula $\mathbf{v}\left(\mathbf{x},t\right)$
\end_inset
and Jacobian
\begin_inset Formula $J\left(\mathbf{x},t\right)$
\end_inset
are spatially interpolated over the domain
\begin_inset Formula $\Omega$
\end_inset
using the same interpolation functions
\begin_inset Formula $N_{a}\left(\mathbf{x}\right)$
\end_inset
,
with
\begin_inset Formula $a=1$
\end_inset
to
\begin_inset Formula $n$
\end_inset
where
\begin_inset Formula $n$
\end_inset
is the number of nodes in an element),
\begin_inset Formula
\begin{equation}
\mathbf{v}\left(\mathbf{x},t\right)=\sum_{a=1}^{n}N_{a}\left(\mathbf{x}\right)\mathbf{v}_{a}\,,\quad J\left(\mathbf{x},t\right)=\sum_{a=1}^{n}N_{a}\left(\mathbf{x}\right)J_{a}\,.\label{eq:v-J-interpolation}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\mathbf{v}_{a}$
\end_inset
and
\begin_inset Formula $J_{a}$
\end_inset
are nodal values of
\begin_inset Formula $\mathbf{v}$
\end_inset
and
\begin_inset Formula $J$
\end_inset
that evolve with time.
In contrast to classical mixed formulations for incompressible flow
\begin_inset CommandInset citation
LatexCommand cite
key "Reddy01"
literal "true"
\end_inset
,
which solve for the pressure
\begin_inset Formula $p$
\end_inset
using
\begin_inset Formula $\divg\mathbf{v}=0$
\end_inset
instead of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:divv-kinematic-relation"
nolink "false"
\end_inset
,
equal order interpolation is acceptable in this formulation since the governing equations for
\begin_inset Formula $\mathbf{v}$
\end_inset
and
\begin_inset Formula $J$
\end_inset
involve spatial derivatives of both variables (
\begin_inset Formula $\grad\mathbf{v}$
\end_inset
and
\begin_inset Formula $\grad J$
\end_inset
).
The expressions of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:v-J-interpolation"
nolink "false"
\end_inset
may be used to evaluate
\begin_inset Formula $\mathbf{L}$
\end_inset
,
\begin_inset Formula $\divg\mathbf{v}$
\end_inset
,
\begin_inset Formula $\mathbf{a}$
\end_inset
,
\begin_inset Formula $\grad J$
\end_inset
,
\begin_inset Formula $\dot{J}$
\end_inset
,
etc.
Similar interpolations are used for virtual increments
\begin_inset Formula $\delta\mathbf{v}$
\end_inset
and
\begin_inset Formula $\delta J$
\end_inset
,
as well as real increments
\begin_inset Formula $\Delta\mathbf{v}$
\end_inset
and
\begin_inset Formula $\Delta J$
\end_inset
.
\end_layout
\begin_layout Standard
When substituted into eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:virtual-work-internal"
nolink "false"
\end_inset
,
we find that the discretized form of
\begin_inset Formula $\delta W_{int}$
\end_inset
may be written as
\begin_inset Formula
\begin{equation}
\delta W_{int}=\sum_{a}\delta\mathbf{v}_{a}\cdot\left(\mathbf{f}_{a}^{\sigma}+\mathbf{f}_{a}^{\rho}\right)+f_{a}^{J}\delta J_{a}\,,\label{eq:discretized-Wint}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{f}_{a}^{\sigma} & =\int_{\Omega}\left(\boldsymbol{\tau}\cdot\grad N_{a}+N_{a}\grad p\right)\,dv\,,\\
\mathbf{f}_{a}^{\rho} & =\int_{\Omega}N_{a}\rho\mathbf{a}\,dv\,,\\
f_{a}^{J} & =\int_{\Omega}-\left(N_{a}\frac{\dot{J}}{J}+\grad N_{a}\cdot\mathbf{v}\right)\,dv\,.
\end{aligned}
\label{eq:discretized-internal-forces}
\end{equation}
\end_inset
Similarly,
the discretized form of
\begin_inset Formula $D\delta W_{int}\left[\Delta\mathbf{v}\right]$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Wint-linearization-v"
nolink "false"
\end_inset
becomes
\begin_inset Formula
\begin{equation}
\begin{aligned}D\left(\delta W_{int}\right)\left[\Delta\mathbf{v}\right] & =\sum_{a}\delta\mathbf{v}_{a}\cdot\sum_{b}\left(\mathbf{K}_{ab}^{vv}+\mathbf{M}_{ab}^{vv}\right)\cdot\Delta\mathbf{v}_{b}\\
& +\sum_{a}\delta J_{a}\sum_{b}\mathbf{k}_{ab}^{Jv}\cdot\Delta\mathbf{v}_{b}\,,
\end{aligned}
\label{eq:discretized-DWint-v}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{K}_{ab}^{vv} & =\alpha_{f}\int_{\Omega}\grad N_{a}\cdot\boldsymbol{\mathcal{C}}^{v}\cdot\grad N_{b}\,dv\,,\\
\mathbf{M}_{ab}^{vv} & =\alpha_{f}\int_{\Omega}N_{a}\rho\left(N_{b}\left(\frac{\alpha_{m}}{\alpha_{f}\gamma}\frac{\mathbf{I}}{\Delta t}+\grad\mathbf{v}\right)+\left(\grad N_{b}\cdot\mathbf{v}\right)\mathbf{I}\right)\,dv\,,\\
\mathbf{k}_{ab}^{Jv} & =-\alpha_{f}\int_{\Omega}\left(\frac{N_{a}}{J}\grad J+\grad N_{a}\right)N_{b}\,dv\,,
\end{aligned}
\label{eq:discretized-stiffness-v}
\end{equation}
\end_inset
whereas that of
\begin_inset Formula $D\delta W_{int}\left[\Delta J\right]$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Wint-linearization-J"
nolink "false"
\end_inset
becomes
\begin_inset Formula
\begin{equation}
\begin{aligned}D\left(\delta W_{int}\right)\left[\Delta J\right] & =\sum_{a}\delta\mathbf{v}_{a}\cdot\sum_{b}\left(\mathbf{k}_{ab}^{vJ}+\mathbf{m}_{ab}^{vJ}\right)\,\Delta J_{b}\\
& +\sum_{a}\delta J_{a}\sum_{b}k_{ab}^{JJ}\,\Delta J_{b}
\end{aligned}
\label{eq:discretized-DWint-J}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{k}_{ab}^{vJ} & =\alpha_{f}\int_{\Omega}\left[N_{b}\boldsymbol{\tau}_{J}^{\prime}\cdot\grad N_{a}+N_{a}\left(p^{\prime}\grad N_{b}+N_{b}p^{\prime\prime}\grad J\right)\right]\,dv\,,\\
\mathbf{m}_{ab}^{vJ} & =-\alpha_{f}\int_{\Omega}N_{a}N_{b}\frac{\rho}{J}\mathbf{a}\,dv\,,\\
k_{ab}^{JJ} & =-\alpha_{f}\int_{\Omega}\frac{N_{a}}{J}\left(\left(\frac{\alpha_{m}}{\alpha_{f}\gamma}\frac{1}{\Delta t}-\frac{\dot{J}}{J}\right)N_{b}+\grad N_{b}\cdot\mathbf{v}\right)\,dv\,.
\end{aligned}
\label{eq:discretized-stiffness-J}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
For the external work in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:virtual-work-external"
nolink "false"
\end_inset
,
its discretized form is
\begin_inset Formula
\begin{equation}
\delta W_{ext}=\sum_{a}\delta\mathbf{v}_{a}\cdot\left(\mathbf{f}_{a}^{\text{t}}+\mathbf{f}_{a}^{\text{b}}\right)+\delta J_{a}f_{a}^{v}\,,\label{eq:discretized-Wext}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{f}_{a}^{\text{t}} & =\int_{\partial\Omega}N_{a}\mathbf{t}^{\tau}\,da\,,\\
\mathbf{f}_{a}^{\text{b}} & =\int_{\Omega}N_{a}\rho\mathbf{b}\,dv\,,\\
f_{a}^{v} & =-\int_{\Omega}N_{a}v_{n}\,da\,.
\end{aligned}
\label{eq:discretized-external-forces}
\end{equation}
\end_inset
The discretized form of
\begin_inset Formula $D\left(\delta W_{ext}\right)\left[\Delta J\right]$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Wext-linearization-J"
nolink "false"
\end_inset
is
\begin_inset Formula
\begin{equation}
D\left(\delta W_{ext}\right)\left[\Delta J\right]=\sum_{a}\delta\mathbf{v}_{a}\cdot\sum_{b}\mathbf{k}_{ab}^{\text{b}}\,\Delta J_{b}\,,\label{eq:discretized-DWext-J}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{k}_{ab}^{\text{b}}=-\alpha_{f}\int_{\Omega}N_{a}N_{b}\frac{\rho}{J}\mathbf{b}\,dv\,.\label{eq:discretized-stiffness-ext}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Special Boundary Conditions
\begin_inset CommandInset label
LatexCommand label
name "subsec:CFD-Special-Boundary-Conditions"
\end_inset
\end_layout
\begin_layout Subsubsection
Backflow Stabilization
\begin_inset CommandInset label
LatexCommand label
name "subsec:CFD-Backflow-Stabilization"
\end_inset
\end_layout
\begin_layout Standard
For arterial blood flow,
backflow stabilization has been proposed previously to deal with truncated domains where the entire artery is not modeled explicitly
\begin_inset CommandInset citation
LatexCommand cite
key "Bazilevs09,Esmaily-Moghadam11"
literal "true"
\end_inset
;
for these types of problems,
letting
\begin_inset Formula $\mathbf{t}=\mathbf{0}$
\end_inset
or prescribing a constant pressure at the outflow boundary may not prevent flow reversals that compromise convergence of an analysis.
Instead,
these authors proposed a velocity-dependent traction boundary condition,
\begin_inset Formula $\mathbf{t}=\beta\rho\left(\mathbf{v}\otimes\mathbf{v}\right)\cdot\mathbf{n}$
\end_inset
with a tensile normal component,
that counters the backflow (only when
\begin_inset Formula $v_{n}<0$
\end_inset
).
Here,
\begin_inset Formula $\beta$
\end_inset
is a non-dimensional user-defined parameter;
a value of
\begin_inset Formula $\beta=0$
\end_inset
turns off this feature,
while a value of
\begin_inset Formula $\beta=1$
\end_inset
generally shows good numerical performance.
We adapt this previously proposed formulation by letting the normal component of the viscous traction be given by
\begin_inset Formula
\begin{equation}
t_{n}^{\tau}=\begin{cases}
\beta\rho_{r}v_{n}^{2} & v_{n}<0\\
0 & v_{n}\ge0
\end{cases}\,.\label{eq:BFS-normal-traction}
\end{equation}
\end_inset
The choice of
\begin_inset Formula $\rho_{r}$
\end_inset
in lieu of
\begin_inset Formula $\rho$
\end_inset
is for convenience,
to avoid the dependence of
\begin_inset Formula $\rho$
\end_inset
on
\begin_inset Formula $J$
\end_inset
(which is negligible for nearly incompressible flow).
Then,
the contribution of this traction to the virtual external work
\begin_inset Formula $\delta W_{ext}$
\end_inset
is
\begin_inset Formula
\begin{equation}
\delta G=\int_{\partial\Omega}\delta\mathbf{v}\cdot t_{n}^{\tau}\mathbf{n}\,da\,.\label{eq:BFSckflow-virtual-work}
\end{equation}
\end_inset
The linearization of
\begin_inset Formula $\delta G$
\end_inset
along an increment
\begin_inset Formula $\Delta\mathbf{v}$
\end_inset
in the velocity is given by
\begin_inset Formula
\begin{equation}
D\delta G\left[\Delta\mathbf{v}\right]=\int_{\partial\Omega}\delta\mathbf{v}\cdot\mathbf{K}_{n}\cdot\Delta\mathbf{v}\,da\,,\label{eq:BFS-linearization}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{K}_{n}=\begin{cases}
2\beta\rho_{r}v_{n}\left(\mathbf{n}\otimes\mathbf{n}\right) & v_{n}<0\\
\mathbf{0} & v_{n}\ge0
\end{cases}\,.\label{eq:BFS-stiffness}
\end{equation}
\end_inset
The discretized form of
\begin_inset Formula $\delta G$
\end_inset
is
\begin_inset Formula
\begin{equation}
\delta G=\sum_{a}\delta\mathbf{v}_{a}\cdot\mathbf{f}_{a}^{n}\,,\quad\mathbf{f}_{a}^{n}=\int_{\partial\Omega}N_{a}t_{n}^{\tau}\mathbf{n}\,da\,,\label{eq:BFS-discretized-work}
\end{equation}
\end_inset
whereas the discretized form of
\begin_inset Formula $D\delta G\left[\Delta\mathbf{v}\right]$
\end_inset
is
\begin_inset Formula
\begin{equation}
D\delta G\left[\Delta\mathbf{v}\right]=\sum_{a}\delta\mathbf{v}_{a}\cdot\sum_{b}\mathbf{K}_{ab}^{n}\cdot\Delta\mathbf{v}_{b}\,,\quad\mathbf{K}_{ab}^{n}=\int_{\partial\Omega}N_{a}N_{b}\mathbf{K}_{n}\,da\,.\label{eq:BFS-discretized-tangent}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
A (viscous) tangential traction is implemented as a separate flow stabilization method in the next section,
applicable to inlet or outlet surfaces,
without a conditional requirement based on the sign of
\begin_inset Formula $v_{n}$
\end_inset
.
\end_layout
\begin_layout Subsubsection
Tangential Flow Stabilization
\begin_inset CommandInset label
LatexCommand label
name "subsec:CFD-Tangential-Flow-Stabilization"
\end_inset
\end_layout
\begin_layout Standard
For certain outlet conditions,
using the natural boundary condition
\begin_inset Formula $\mathbf{t}_{t}^{\tau}=\mathbf{0}$
\end_inset
may lead to flow instabilities.
It is possible to minimize these effects by prescribing a tangential viscous traction onto the boundary surface,
which opposes this tangential flow.
Optionally,
this condition may be combined with the backflow stabilization described above.
\end_layout
\begin_layout Standard
Similar to the previous section,
we introduce a non-dimensional parameter
\begin_inset Formula $\beta$
\end_inset
,
with the tangential traction given by
\begin_inset Formula
\begin{equation}
\mathbf{t}_{t}^{\tau}=-\beta\rho_{r}\left|\mathbf{v}_{t}\right|\mathbf{v}_{t}\,.\label{eq:tangential-stabilization}
\end{equation}
\end_inset
This form shows that
\begin_inset Formula $\mathbf{t}_{t}^{\tau}$
\end_inset
opposes tangential flow.
The external virtual work for this traction is
\begin_inset Formula
\begin{equation}
\delta G=\int_{\partial\Omega}\delta\mathbf{v}\cdot\mathbf{t}_{t}^{\tau}\,da\,.\label{eq:TS-external-work}
\end{equation}
\end_inset
Its linearization along an increment
\begin_inset Formula $\Delta\mathbf{v}$
\end_inset
is
\begin_inset Formula
\begin{equation}
D\delta G\left[\Delta\mathbf{v}\right]=\int_{\partial\Omega}\delta\mathbf{v}\cdot\mathbf{K}_{t}\cdot\Delta\mathbf{v}\,da\,,\label{eq:TS-linearization}
\end{equation}
\end_inset
where it can be shown that
\begin_inset Formula
\begin{equation}
\mathbf{K}_{t}=-\beta\rho_{r}\left|\mathbf{v}_{t}\right|\left(\mathbf{I}-\mathbf{n}\otimes\mathbf{n}+\frac{\mathbf{v}_{t}}{\left|\mathbf{v}_{t}\right|}\otimes\frac{\mathbf{v}_{t}}{\left|\mathbf{v}_{t}\right|}\right)\,.\label{eq:TS-stiffness}
\end{equation}
\end_inset
The discretized form of
\begin_inset Formula $\delta G$
\end_inset
is
\begin_inset Formula
\begin{equation}
\delta G=\sum_{a}\delta\mathbf{v}_{a}\cdot\mathbf{f}_{a}^{\tau}\,,\quad\mathbf{f}_{a}^{\tau}=\int_{\partial\Omega}N_{a}\mathbf{t}_{t}^{\tau}\,da\,.\label{eq:TS-discretized-work}
\end{equation}
\end_inset
The discretized form of
\begin_inset Formula $D\delta G\left[\Delta\mathbf{v}\right]$
\end_inset
is
\begin_inset Formula
\begin{equation}
D\delta G\left[\Delta\mathbf{v}\right]=\sum_{a}\delta\mathbf{v}_{a}\cdot\sum_{b}\mathbf{K}_{ab}^{t}\cdot\Delta\mathbf{v}_{b}\,,\quad\mathbf{K}_{ab}^{t}=\int_{\partial\Omega}N_{a}N_{b}\mathbf{K}_{t}\,da\,.\label{eq:TS-discretized-tangent}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
Flow Resistance
\begin_inset CommandInset label
LatexCommand label
name "subsec:CFD-Flow-Resistance"
\end_inset
\end_layout
\begin_layout Standard
Flow resistance is typically implemented when modeling arterial flow,
where the finite element domain only describes a portion of an arterial network
\begin_inset CommandInset citation
LatexCommand cite
key "Vignon-Clementel06"
literal "true"
\end_inset
.
A flow resistance may be imposed on downstream boundaries to simulate the resistance produced by the vascular network with its branches and bifurcations.
The resistance is equivalent to a mean pressure which is proportional to the volumetric flow rate
\begin_inset Formula $Q$
\end_inset
,
\begin_inset Formula
\[
p=RQ\,,\quad Q=\int_{\partial\Omega}v_{n}\,da\,,
\]
\end_inset
where
\begin_inset Formula $R$
\end_inset
is the resistance.
Using the pressure-dilatation relation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:ideal-fluid"
nolink "false"
\end_inset
,
equivalent to
\begin_inset Formula $p=-K\cdot e$
\end_inset
,
this pressure may be prescribed as an essential boundary condition on the dilatation
\begin_inset Formula $e$
\end_inset
.
\end_layout
\begin_layout Section
Weak Formulation for FSI
\begin_inset CommandInset label
LatexCommand label
name "sec:Weak-Formulation-FSI"
\end_inset
\end_layout
\begin_layout Subsection
General Formulation
\begin_inset CommandInset label
LatexCommand label
name "subsec:FSI-General-Formulation"
\end_inset
\end_layout
\begin_layout Standard
The strong form of the virtual work statement is
\begin_inset Formula $\delta W=0$
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W & =\int_{b}\delta\mathbf{v}^{s}\cdot\divg\boldsymbol{\sigma}^{s}\,dv\\
& +\int_{b}\delta\mathbf{w}\cdot\left[\divg\boldsymbol{\sigma}^{f}+\rho^{f}\left(\mathbf{b}-\mathbf{a}^{f}\right)\right]\,dv\\
& -\int_{b}\delta J^{f}\left[\frac{1}{J^{f}}\left(\dot{J}^{f}+\grad J^{f}\cdot\mathbf{w}\right)-\divg\mathbf{w}-\frac{\dot{J}^{s}}{J^{s}}\right]\,dv
\end{aligned}
\,.\label{eq:fsi-virtual-work-strong}
\end{equation}
\end_inset
Here,
\begin_inset Formula $b$
\end_inset
is the mixture domain (whose boundaries are defined on the solid),
\begin_inset Formula $\delta\mathbf{v}^{s}$
\end_inset
is the virtual solid velocity,
\begin_inset Formula $\delta\mathbf{w}$
\end_inset
is the virtual relative fluid velocity,
and
\begin_inset Formula $\delta J^{f}$
\end_inset
is the virtual energy density.
The weak form of this statement may be written as the difference
\begin_inset Formula $\delta W=\delta W_{ext}-\delta W_{int}$
\end_inset
between external virtual work
\begin_inset Formula $\delta W_{ext}$
\end_inset
and internal virtual work
\begin_inset Formula $\delta W_{int}$
\end_inset
,
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W_{int} & =\int_{b}\boldsymbol{\sigma}^{s}:\grad\delta\mathbf{v}^{s}\,dv\\
& +\int_{b}\boldsymbol{\tau}:\grad\delta\mathbf{w}\,dv+\int_{b}\delta\mathbf{w}\cdot\left(\grad p+\rho^{f}\mathbf{a}^{f}\right)\,dv\\
& +\int_{b}\delta J^{f}\left[\frac{1}{J^{f}}\left(\dot{J}^{f}+\grad J^{f}\cdot\mathbf{w}\right)-\frac{\dot{J}^{s}}{J^{s}}\right]\,dv\\
& +\int_{b}\mathbf{w}\cdot\grad\delta J^{f}\,dv
\end{aligned}
\,,\label{eq:fsi-internal-virtual-work}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W_{ext} & =\int_{\partial b}\delta\mathbf{v}^{s}\cdot\mathbf{t}^{s}\,da\\
& +\int_{\partial b}\delta\mathbf{w}\cdot\mathbf{t}^{\tau}\,da+\int_{b}\delta\mathbf{w}\cdot\rho^{f}\mathbf{b}\,dv\\
& +\int_{\partial b}\delta J^{f}w_{n}\,da
\end{aligned}
\,.\label{eq:fsi-external-virtual-work}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\mathbf{t}^{s}=\boldsymbol{\sigma}^{s}\cdot\mathbf{n}$
\end_inset
is the solid traction,
\begin_inset Formula $\mathbf{t}^{\tau}=\boldsymbol{\tau}\cdot\mathbf{n}$
\end_inset
is the fluid viscous traction,
and
\begin_inset Formula $w_{n}=\mathbf{w}_{n}\cdot\mathbf{n}$
\end_inset
is the normal component of the relative fluid velocity on the boundary
\begin_inset Formula $\partial b$
\end_inset
,
whose outward unit normal is
\begin_inset Formula $\mathbf{n}$
\end_inset
.
In practice,
both
\begin_inset Formula $\boldsymbol{\sigma}^{s}$
\end_inset
and
\begin_inset Formula $\mathbf{t}^{s}$
\end_inset
should contribute negligibly to
\begin_inset Formula $\delta W$
\end_inset
,
but they cannot be set exactly to zero since we need some small elasticity to regularize the deforming mixture mesh.
\end_layout
\begin_layout Subsection
Time Integration
\begin_inset CommandInset label
LatexCommand label
name "subsec:FSI-Time-Integration"
\end_inset
\end_layout
\begin_layout Standard
In the generalized
\begin_inset Formula $\alpha-$
\end_inset
method we evaluate displacements and velocities at the intermediate time
\begin_inset Formula $t_{n+\alpha_{f}}=t_{n}+\alpha_{f}\left(t_{n+1}-t_{n}\right)$
\end_inset
,
such that
\begin_inset Formula
\[
\begin{aligned}\boldsymbol{\chi}_{n+\alpha_{f}}^{s} & =\left(1-\alpha_{f}\right)\boldsymbol{\chi}_{n}^{s}+\alpha_{f}\boldsymbol{\chi}_{n+1}^{s}\\
\mathbf{u}_{n+\alpha_{f}}^{s} & =\left(1-\alpha_{f}\right)\mathbf{u}_{n}^{s}+\alpha_{f}\mathbf{u}_{n+1}^{s}\\
\mathbf{v}_{n+\alpha_{f}}^{s} & =\left(1-\alpha_{f}\right)\mathbf{v}_{n}^{s}+\alpha_{f}\mathbf{v}_{n+1}^{s}\\
\mathbf{w}_{n+\alpha_{f}} & =\left(1-\alpha_{f}\right)\mathbf{w}_{n}+\alpha_{f}\mathbf{w}_{n+1}\\
J_{n+\alpha_{f}}^{f} & =\left(1-\alpha_{f}\right)J_{n}^{f}+\alpha_{f}J_{n+1}^{f}
\end{aligned}
\]
\end_inset
In particular,
it follows that
\begin_inset Formula
\[
\mathbf{F}_{n+\alpha_{f}}^{s}=\frac{\partial\boldsymbol{\chi}_{n+\alpha_{f}}^{s}}{\partial\mathbf{X}}=\left(1-\alpha_{f}\right)\mathbf{F}_{n}^{s}+\alpha_{f}\mathbf{F}_{n+1}^{s}
\]
\end_inset
\begin_inset Formula
\[
J_{n+\alpha_{f}}^{s}=\det\mathbf{F}_{n+\alpha_{f}}^{s}
\]
\end_inset
\begin_inset Formula
\[
\dot{J}_{n+\alpha_{f}}^{s}=J_{n+\alpha_{f}}^{s}\mathbf{F}_{n+\alpha_{f}}^{-T}:\Grad\mathbf{v}_{n+\alpha_{f}}^{s}
\]
\end_inset
\begin_inset Formula
\[
\mathbf{L}_{n+\alpha_{f}}^{s}=\Grad\mathbf{v}_{n+\alpha_{f}}^{s}\cdot\mathbf{F}_{n+\alpha_{f}}^{-1}
\]
\end_inset
In practice however,
we get better numerical results when using
\begin_inset Formula
\[
\dot{J}_{n+\alpha_{f}}^{s}=\frac{J_{n+1}^{s}-J_{n}^{s}}{\Delta t}
\]
\end_inset
\begin_inset Formula
\[
\mathbf{L}_{n+\alpha_{f}}^{s}=\frac{\mathbf{F}_{n+1}-\mathbf{F}_{n}}{\Delta t}\cdot\mathbf{F}_{n+\alpha_{f}}^{-1}
\]
\end_inset
Similarly,
we evaluate velocity derivatives at the intermediate time
\begin_inset Formula $t_{n+\alpha_{m}}=t_{n}+\alpha_{m}\left(t_{n+1}-t_{n}\right)$
\end_inset
,
such that
\begin_inset Formula
\[
\begin{aligned}\dot{\mathbf{v}}_{n+\alpha_{m}}^{s} & =\left(1-\alpha_{m}\right)\dot{\mathbf{v}}_{n}^{s}+\alpha_{m}\dot{\mathbf{v}}_{n+1}^{s}\\
\dot{\mathbf{w}}_{n+\alpha_{m}} & =\left(1-\alpha_{m}\right)\dot{\mathbf{w}}_{n}+\alpha_{m}\dot{\mathbf{w}}_{n+1}\\
\dot{J}_{n+\alpha_{m}}^{f} & =\left(1-\alpha_{m}\right)\dot{J}_{n}^{f}+\alpha_{m}\dot{J}_{n+1}^{f}
\end{aligned}
\]
\end_inset
The parameters
\begin_inset Formula $\alpha_{f}$
\end_inset
and
\begin_inset Formula $\alpha_{m}$
\end_inset
are evaluated from a single parameter
\begin_inset Formula $\rho_{\infty}$
\end_inset
using
\begin_inset Formula
\begin{equation}
\alpha_{f}=\frac{1}{1+\rho_{\infty}}\,,\quad\alpha_{m}=\frac{1}{2}\frac{3-\rho_{\infty}}{1+\rho_{\infty}}\,,\label{eq:fsi-ga-alphas-1st}
\end{equation}
\end_inset
for first-order systems,
or
\begin_inset Formula
\begin{equation}
\alpha_{f}=\frac{1}{1+\rho_{\infty}}\,,\quad\alpha_{m}=\frac{2-\rho_{\infty}}{1+\rho_{\infty}}\,,\label{eq:fsi-ga-alphas-2nd}
\end{equation}
\end_inset
for second-order systems,
where
\begin_inset Formula $0\le\rho_{\infty}\le1$
\end_inset
.
This parameter is the spectral radius for an infinite time step,
which controls the amount of damping of high frequencies;
a value of zero produces the greatest amount of damping,
anihilating the highest frequency in one step,
whereas a value of one preserves the highest frequency.
Since the solid motion is governed by a second-order differential equation in time,
we adopt the formulas for second-order systems.
\end_layout
\begin_layout Standard
To complete the integration scheme,
we evaluate
\begin_inset Formula
\[
\begin{aligned}\beta & =\frac{1}{4}\left(1+\alpha_{m}-\alpha_{f}\right)^{2}\\
\gamma & =\frac{1}{2}+\alpha_{m}-\alpha_{f}
\end{aligned}
\]
\end_inset
then
\begin_inset Formula
\[
\begin{aligned}\mathbf{v}_{n+1}^{s} & =\mathbf{v}_{n}^{s}+\Delta t\left[\left(1-\gamma\right)\dot{\mathbf{v}}_{n}^{s}+\gamma\dot{\mathbf{v}}_{n+1}^{s}\right]\\
\mathbf{u}_{n+1}^{s} & =\mathbf{u}_{n}^{s}+\Delta t\mathbf{v}_{n}^{s}+\frac{\Delta t^{2}}{2}\left[\left(1-2\beta\right)\dot{\mathbf{v}}_{n}^{s}+2\beta\dot{\mathbf{v}}_{n+1}^{s}\right]\\
\mathbf{w}_{n+1} & =\mathbf{w}_{n}+\Delta t\left[\left(1-\gamma\right)\dot{\mathbf{w}}_{n}+\gamma\dot{\mathbf{w}}_{n+1}\right]\\
J_{n+1}^{f} & =J_{n}^{f}+\Delta t\left[\left(1-\gamma\right)\dot{J}_{n}^{f}+\gamma\dot{J}_{n+1}^{f}\right]
\end{aligned}
\]
\end_inset
Thus,
\begin_inset Formula
\[
\begin{aligned}\dot{\mathbf{v}}_{n+1}^{s} & =\frac{1}{\beta\Delta t}\left(\frac{\mathbf{u}_{n+1}^{s}-\mathbf{u}_{n}^{s}}{\Delta t}-\mathbf{v}_{n}^{s}\right)+\left(1-\frac{1}{2\beta}\right)\dot{\mathbf{v}}_{n}^{s}\\
\dot{\mathbf{w}}_{n+1} & =\frac{\mathbf{w}_{n+1}-\mathbf{w}_{n}}{\gamma\Delta t}+\left(1-\frac{1}{\gamma}\right)\dot{\mathbf{w}}_{n}=\frac{\mathbf{w}_{n+\alpha_{f}}-\mathbf{w}_{n}}{\alpha_{f}\gamma\Delta t}-\left(\frac{1}{\gamma}-1\right)\dot{\mathbf{w}}_{n}\\
\dot{J}_{n+1}^{f} & =\frac{J_{n+1}^{f}-J_{n}^{f}}{\gamma\Delta t}+\left(1-\frac{1}{\gamma}\right)\dot{J}_{n}^{f}=\frac{J_{n+\alpha_{f}}^{f}-J_{n}^{f}}{\alpha_{f}\gamma\Delta t}-\left(\frac{1}{\gamma}-1\right)\dot{J}_{n}^{f}
\end{aligned}
\]
\end_inset
According to this method
\begin_inset CommandInset citation
LatexCommand cite
key "Jansen00"
literal "true"
\end_inset
,
the virtual work is evaluated using intermediate time step values,
at
\begin_inset Formula $t_{n+\alpha_{f}}$
\end_inset
for all parameters except
\begin_inset Formula $\dot{\mathbf{v}}^{s}$
\end_inset
,
\begin_inset Formula $\dot{\mathbf{w}}$
\end_inset
,
and
\begin_inset Formula $\dot{J}^{f}$
\end_inset
,
which are evaluated at
\begin_inset Formula $t_{n+\alpha_{m}}$
\end_inset
.
\end_layout
\begin_layout Subsection
Discretization
\end_layout
\begin_layout Standard
The discretization of the internal work produces
\begin_inset Formula
\begin{equation}
\delta W_{int}=\sum_{a}\delta\mathbf{v}_{a}^{s}\cdot\int_{b}\mathbf{f}_{a}^{u}\,dv+\delta\mathbf{w}_{a}\cdot\int_{b}\mathbf{f}_{a}^{w}\,dv+\delta J_{a}^{f}\int_{b}f_{a}^{J}\,dv\label{eq:fsi-discretized-internal-work}
\end{equation}
\end_inset
\begin_inset Formula
\[
\begin{aligned}\delta W_{int} & =\sum_{a}\delta\mathbf{v}_{a}^{s}\cdot\int_{b}\boldsymbol{\sigma}^{s}\cdot\grad N_{a}\,dv\\
& +\sum_{a}\delta\mathbf{w}_{a}\cdot\int_{b}\boldsymbol{\tau}\cdot\grad N_{a}\,dv+\sum_{a}\delta\mathbf{w}_{a}\cdot\int_{b}N_{a}\left(\grad p+\rho^{f}\mathbf{a}^{f}\right)\,dv\\
& +\sum_{a}\delta J_{a}^{f}\int_{b}N_{a}\left[\frac{1}{J^{f}}\left(\dot{J}^{f}+\grad J^{f}\cdot\mathbf{w}\right)-\frac{\dot{J}^{s}}{J^{s}}\right]\,dv\\
& +\sum_{a}\delta J_{a}^{f}\int_{b}\mathbf{w}\cdot\grad N_{a}\,dv
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{f}_{a}^{u} & =\boldsymbol{\sigma}^{s}\cdot\grad N_{a}\\
\mathbf{f}_{a}^{w} & =\boldsymbol{\tau}\cdot\grad N_{a}+N_{a}\left(\grad p+\rho^{f}\mathbf{a}^{f}\right)\\
f_{a}^{J} & =N_{a}\left[\frac{1}{J^{f}}\left(\dot{J}^{f}+\grad J^{f}\cdot\mathbf{w}\right)-\frac{\dot{J}^{s}}{J^{s}}\right]+\mathbf{w}\cdot\grad N_{a}
\end{aligned}
\label{eq:fsi-discretized-residuals}
\end{equation}
\end_inset
We used the following interpolations:
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta\mathbf{v}^{s} & =\sum_{a}N_{a}\delta\mathbf{v}_{a}^{s} & \Delta\mathbf{u} & =\sum_{b}N_{b}\Delta\mathbf{u}_{b}\\
\grad\delta\mathbf{v}^{s} & =\sum_{a}\delta\mathbf{v}_{a}^{s}\otimes\grad N_{a} & \grad\Delta\mathbf{u} & =\sum_{b}\Delta\mathbf{u}_{b}\otimes\grad N_{b}\\
\divg\delta\mathbf{v}^{s} & =\sum_{a}\delta\mathbf{v}_{a}^{s}\cdot\grad N_{a} & \divg\Delta\mathbf{u} & =\sum_{b}\Delta\mathbf{u}_{b}\cdot\grad N_{b}\\
\delta\mathbf{w} & =\sum_{a}N_{a}\delta\mathbf{w}_{a} & \Delta\mathbf{w} & =\sum_{b}N_{b}\Delta\mathbf{w}_{b}\\
\grad\delta\mathbf{w} & =\sum_{a}\delta\mathbf{w}_{a}\otimes\grad N_{a} & \grad\Delta\mathbf{w} & =\sum_{b}\Delta\mathbf{w}_{b}\otimes\grad N_{b}\\
\delta J^{f} & =\sum_{a}N_{a}\delta J_{a}^{f} & \Delta J^{f} & =\sum_{b}N_{b}\Delta J_{b}^{f}\\
\grad\delta J^{f} & =\sum_{a}\delta J_{a}^{f}\grad N_{a} & \grad\Delta J^{f} & =\sum_{b}\Delta J_{b}^{f}\grad N_{b}
\end{aligned}
\label{eq:fsi-interpolations}
\end{equation}
\end_inset
Note that the
\begin_inset Formula $\grad\equiv\frac{\partial}{\partial\mathbf{x}}$
\end_inset
operator should be evaluated using
\begin_inset Formula $\mathbf{x}_{n+\alpha_{f}}$
\end_inset
.
\end_layout
\begin_layout Standard
The solution of the nonlinear equation
\begin_inset Formula $\delta W=0$
\end_inset
is obtained by linearizing this relation as
\begin_inset Formula
\begin{equation}
\delta W+D\delta W\left[\Delta\mathbf{u}\right]+D\delta W\left[\Delta\mathbf{w}\right]+D\delta W\left[\Delta J^{f}\right]\approx0\,,\label{eq:fsi-linearized-virtual-work}
\end{equation}
\end_inset
where the operator
\begin_inset Formula $D\delta W\left[\cdot\right]$
\end_inset
represents the directional derivative of
\begin_inset Formula $\delta W$
\end_inset
at
\begin_inset Formula $\left(\mathbf{u}^{s},\mathbf{w},J^{f}\right)$
\end_inset
along an increment
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
of
\begin_inset Formula $\mathbf{u}^{s}$
\end_inset
,
\begin_inset Formula $\Delta\mathbf{w}$
\end_inset
of
\begin_inset Formula $\mathbf{w}$
\end_inset
,
or
\begin_inset Formula $\Delta J^{f}$
\end_inset
of
\begin_inset Formula $J^{f}$
\end_inset
.
\end_layout
\begin_layout Standard
To linearize the virtual work,
we need to express the integrals appearing in
\begin_inset Formula $\delta W_{int}$
\end_inset
and
\begin_inset Formula $\delta W_{ext}$
\end_inset
over the material frame of the finite element solid domain.
For notational convenience,
we let
\begin_inset Formula $J\equiv J^{s}$
\end_inset
and
\begin_inset Formula $\mathbf{F}\equiv\mathbf{F}^{s}$
\end_inset
.
Thus,
\begin_inset Formula
\begin{equation}
\begin{aligned}\int_{b}\boldsymbol{\sigma}^{s}:\grad\delta\mathbf{v}^{s}\,dv & =\int_{B}\mathbf{F}\cdot\mathbf{S}^{s}:\Grad\delta\mathbf{v}^{s}\,dV\end{aligned}
\,,\label{eq:fsi-work-material-1}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{S}^{s}=J\cdot\mathbf{F}^{-1}\cdot\boldsymbol{\sigma}^{s}\cdot\mathbf{F}^{-T}$
\end_inset
is the second Piola-Kirchhoff stress for the solid material.
Similarly,
\begin_inset Formula
\begin{equation}
\int_{b}\boldsymbol{\tau}:\grad\delta\mathbf{w}\,dv=\int_{B}\boldsymbol{\tau}\cdot J\mathbf{F}^{-T}:\Grad\delta\mathbf{w}\,dV\,.\label{eq:fsi-work-material-2}
\end{equation}
\end_inset
Next,
\begin_inset Formula
\begin{equation}
\begin{aligned} & \int_{b}\delta\mathbf{w}\cdot\left(\grad p+\rho^{f}\mathbf{a}^{f}\right)\,dv\\
& =\int_{B}\delta\mathbf{w}\cdot\left(J\mathbf{F}^{-T}\cdot\Grad p+J\rho^{f}\left(\dot{\mathbf{w}}+\dot{\mathbf{v}}^{s}\right)+\rho^{f}\left(\Grad\mathbf{w}+\Grad\mathbf{v}^{s}\right)\cdot\mathbf{W}\right)\,dV
\end{aligned}
\label{eq:fsi-work-material-3-4}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\int_{b}\delta J^{f}\left[\frac{1}{J^{f}}\left(\dot{J}^{f}+\grad J^{f}\cdot\mathbf{w}\right)-\frac{\dot{J}}{J}\right]\,dv=\int_{B}\delta J^{f}\left[\frac{1}{J^{f}}\left(J\dot{J}^{f}+\Grad J^{f}\cdot\mathbf{W}\right)-\dot{J}\right]\,dV\label{eq:fsi-work-material-5}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\int_{b}\mathbf{w}\cdot\grad\delta J^{f}\,dv=\int_{B}\Grad\delta J^{f}\cdot\mathbf{W}\,dV\label{eq:fsi-work-material-6}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{W}=J\mathbf{F}^{-1}\cdot\mathbf{w}$
\end_inset
.
\end_layout
\begin_layout Standard
Keep in mind that we are solving for the motions
\begin_inset Formula $\boldsymbol{\chi}_{n+1}^{\iota}$
\end_inset
at
\begin_inset Formula $t_{n+1}$
\end_inset
.
Therefore,
\begin_inset Formula
\[
\begin{aligned}D\mathbf{u}^{s}\left[\Delta\mathbf{u}\right] & =\alpha_{f}\Delta\mathbf{u}\\
D\mathbf{F}\left[\Delta\mathbf{u}\right] & =\alpha_{f}\Grad\Delta\mathbf{u}\\
DJ\left[\Delta\mathbf{u}\right] & =\alpha_{f}J\left(\divg\Delta\mathbf{u}\right)\\
D\dot{J}\left[\Delta\mathbf{u}\right] & =D\left(J\mathbf{F}^{-T}:\Grad\mathbf{v}^{s}\right)\left[\Delta\mathbf{u}\right]\\
& =\alpha_{f}J\left[\left(\divg\mathbf{v}^{s}+\frac{\gamma}{\beta\Delta t}\right)\left(\divg\Delta\mathbf{u}\right)-\left(\grad\Delta\mathbf{u}\right)^{T}:\mathbf{L}^{s}\right]\\
D\mathbf{v}^{s}\left[\Delta\mathbf{u}\right] & =\frac{\alpha_{f}\gamma}{\beta\Delta t}\Delta\mathbf{u}\\
D\mathbf{w}\left[\Delta\mathbf{w}\right] & =\alpha_{f}\Delta\mathbf{w}\\
DJ^{f}\left[\Delta J^{f}\right] & =\alpha_{f}\Delta J^{f}\\
D\rho^{f}\left[\Delta J^{f}\right] & =-\alpha_{f}\frac{\rho^{f}}{J^{f}}\Delta J^{f}
\end{aligned}
\]
\end_inset
In general,
\begin_inset Formula $\boldsymbol{\sigma}^{s}$
\end_inset
(and thus,
\begin_inset Formula $\mathbf{S}^{s}$
\end_inset
) is only a function of the solid strain,
such as the right Cauchy-Green tensor
\begin_inset Formula $\mathbf{C}=\mathbf{F}^{T}\cdot\mathbf{F}$
\end_inset
or the Green-Lagrange strain
\begin_inset Formula $\mathbf{E}=\left(\mathbf{C}-\mathbf{I}\right)/2$
\end_inset
.
\begin_inset Formula
\[
D\mathbf{E}\left[\Delta\mathbf{u}\right]=\frac{\alpha_{f}}{2}\left(\Grad^{T}\Delta\mathbf{u}\cdot\mathbf{F}+\mathbf{F}^{T}\cdot\Grad\Delta\mathbf{u}\right)
\]
\end_inset
Therefore,
following the standard approach in solid mechanics,
the linearization of
\begin_inset Formula $\mathbf{S}^{s}$
\end_inset
is
\begin_inset Formula
\begin{equation}
\begin{aligned}D\mathbf{S}^{s} & =D\mathbf{S}^{s}\left[\Delta\mathbf{u}\right]=\frac{\partial\mathbf{S}^{s}}{\partial\mathbf{E}}:D\mathbf{E}\left[\Delta\mathbf{u}\right]\\
& =\alpha_{f}\boldsymbol{\mathbb{C}}^{s}:\frac{1}{2}\left(\Grad^{T}\Delta\mathbf{u}\cdot\mathbf{F}+\mathbf{F}^{T}\cdot\Grad\Delta\mathbf{u}\right)\\
& =\alpha_{f}\boldsymbol{\mathbb{C}}^{s}:\left(\mathbf{F}^{T}\,\underline{\otimes}\,\mathbf{F}^{T}\right):\Delta\boldsymbol{\varepsilon}
\end{aligned}
\label{eq:fsi-solid-stress-linearization}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
In general,
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
is a function of the fluid volume ratio
\begin_inset Formula $J^{f}$
\end_inset
and the rate of deformation of the fluid,
\begin_inset Formula $\mathbf{D}^{f}=\frac{1}{2}\left(\mathbf{L}^{f}+\left(\mathbf{L}^{f}\right)^{T}\right)$
\end_inset
.
However,
since
\begin_inset Formula $\mathbf{v}^{f}$
\end_inset
is not a degree of freedom,
we need to let
\begin_inset Formula $\mathbf{D}^{f}=\mathbf{D}^{w}+\mathbf{D}^{s}$
\end_inset
,
where
\begin_inset Formula $\mathbf{D}^{w}=\frac{1}{2}\left(\mathbf{L}^{w}+\left(\mathbf{L}^{w}\right)^{T}\right)$
\end_inset
and
\begin_inset Formula $\mathbf{D}^{s}=\frac{1}{2}\left(\mathbf{L}^{s}+\left(\mathbf{L}^{s}\right)^{T}\right)$
\end_inset
.
Thus,
\begin_inset Formula
\begin{equation}
D\boldsymbol{\tau}=\boldsymbol{\mathcal{C}}^{\tau}:\left(D\mathbf{D}^{f}\left[\Delta\mathbf{w}\right]+D\mathbf{D}^{f}\left[\Delta\mathbf{u}\right]\right)+\frac{\partial\boldsymbol{\tau}}{\partial J^{f}}DJ^{f}\left[\Delta J^{f}\right]\label{eq:fsi-fluid-stress-linearization}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{C}}^{\tau}=\frac{\partial\boldsymbol{\tau}}{\partial\mathbf{D}^{f}}\label{eq:fsi-viscous-tangent-tensor}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Linearization of
\begin_inset Formula $\int_{B}\mathbf{F}\cdot\mathbf{S}^{s}:\Grad\delta\mathbf{v}^{s}\,dV$
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\begin{aligned} & D\left(\int_{B}\mathbf{F}\cdot\mathbf{S}^{s}:\Grad\delta\mathbf{v}^{s}\,dV\right)\left[\Delta\mathbf{u}\right]\\
& =\int_{b}\alpha_{f}\left(\boldsymbol{\sigma}^{s}:\grad^{T}\Delta\mathbf{u}\cdot\grad\delta\mathbf{v}^{s}+\grad\delta\mathbf{v}^{s}:\boldsymbol{\mathcal{C}}^{s}:\Delta\boldsymbol{\varepsilon}\right)\,dv
\end{aligned}
\label{eq:fsi-term-1-Du}
\end{equation}
\end_inset
where
\begin_inset Formula
\[
\boldsymbol{\mathcal{C}}^{s}=J^{-1}\left(\mathbf{F}\,\underline{\otimes}\,\mathbf{F}\right):\boldsymbol{\mathbb{C}}^{s}:\left(\mathbf{F}^{T}\,\underline{\otimes}\,\mathbf{F}^{T}\right)
\]
\end_inset
Similarly,
\begin_inset Formula
\begin{equation}
D\left(\int_{B}\mathbf{F}\cdot\mathbf{S}^{s}:\Grad\delta\mathbf{v}^{s}\,dV\right)\left[\Delta\mathbf{w}\right]=0\label{eq:fsi-term-1-Dw}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
D\left(\int_{B}\mathbf{F}\cdot\mathbf{S}^{s}:\Grad\delta\mathbf{v}^{s}\,dV\right)\left[\Delta J^{f}\right]=0\label{eq:fsi-term-1-DJ}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
The discretized version produces
\begin_inset Formula
\[
\begin{aligned} & \int_{b}\alpha_{f}\left(\boldsymbol{\sigma}^{s}:\grad^{T}\Delta\mathbf{u}\cdot\grad\delta\mathbf{v}^{s}+\grad\delta\mathbf{v}^{s}:\boldsymbol{\mathcal{C}}^{s}:\Delta\boldsymbol{\varepsilon}\right)\,dv\\
& =\sum_{a}\delta\mathbf{v}_{a}^{s}\cdot\sum_{b}\int_{b}\mathbf{K}_{ab}^{uu}\,dv\cdot\Delta\mathbf{u}_{b}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{K}_{ab}^{uu}=\alpha_{f}\left(\left(\grad N_{a}\cdot\boldsymbol{\sigma}^{s}\cdot\grad N_{b}\right)\mathbf{I}+\left(\grad N_{a}\cdot\boldsymbol{\mathcal{C}}^{s}\cdot\grad N_{b}\right)\right)\label{eq:fsi-term-1-Kuu}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{K}_{ab}^{uw}=\mathbf{0}\label{eq:term-1-Kuw}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{k}_{ab}^{uJ}=\mathbf{0}\label{eq:term-1-kuJ}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Linearization of
\begin_inset Formula $\int_{B}\boldsymbol{\tau}\cdot J\mathbf{F}^{-T}:\Grad\delta\mathbf{w}\,dV$
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\begin{aligned} & D\left(\int_{B}\boldsymbol{\tau}\cdot J\mathbf{F}^{-T}:\Grad\delta\mathbf{w}\,dV\right)\left[\Delta\mathbf{u}\right]\\
& =\int_{b}\alpha_{f}\left(\boldsymbol{\tau}:\grad\delta\mathbf{w}\cdot\Delta\mathbf{G}+\grad\delta\mathbf{w}:\boldsymbol{\mathcal{C}}^{\tau}:\mathbf{M}\cdot\grad\Delta\mathbf{u}\right)\,dv
\end{aligned}
\label{eq:fsi-term-2-Du}
\end{equation}
\end_inset
\begin_inset Formula
\[
\begin{aligned}D\left(\int_{B}\boldsymbol{\tau}\cdot J\mathbf{F}^{-T}:\Grad\delta\mathbf{w}\,dV\right)\left[\Delta\mathbf{u}\right] & =\int_{B}D\left(\boldsymbol{\tau}\cdot J\mathbf{F}^{-T}\right)\left[\Delta\mathbf{u}\right]:\Grad\delta\mathbf{w}\,dV\\
& =\int_{B}\left(D\boldsymbol{\tau}\left[\Delta\mathbf{u}\right]\cdot J\mathbf{F}^{-T}+\boldsymbol{\tau}\cdot D\left(J\mathbf{F}^{-T}\right)\left[\Delta\mathbf{u}\right]\right):\Grad\delta\mathbf{w}\,dV
\end{aligned}
\]
\end_inset
where we used
\begin_inset Formula
\[
\boldsymbol{\mathcal{C}}^{\tau}=\frac{\partial\boldsymbol{\tau}}{\partial\mathbf{D}^{f}}\,.
\]
\end_inset
Similarly,
\begin_inset Formula
\begin{equation}
\begin{aligned}D\left(\int_{B}\boldsymbol{\tau}\cdot J\mathbf{F}^{-T}:\Grad\delta\mathbf{w}\,dV\right)\left[\Delta\mathbf{w}\right] & =\int_{b}\alpha_{f}\grad\delta\mathbf{w}:\boldsymbol{\mathcal{C}}^{\tau}:\grad\Delta\mathbf{w}\,dv\end{aligned}
\label{eq:fsi-term-2-Dw}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
D\left(\int_{B}\boldsymbol{\tau}\cdot J\mathbf{F}^{-T}:\Grad\delta\mathbf{w}\,dV\right)\left[\Delta J^{f}\right]=\int_{b}\alpha_{f}\Delta J^{f}\boldsymbol{\tau}_{J}^{\prime}:\grad\delta\mathbf{w}\,dv\label{eq:fsi-term-2-DJ}
\end{equation}
\end_inset
where
\begin_inset Formula
\[
\boldsymbol{\tau}_{J}^{\prime}=\frac{\partial\boldsymbol{\tau}}{\partial J^{f}}
\]
\end_inset
\end_layout
\begin_layout Standard
The discretized version produces
\begin_inset Formula
\[
\begin{aligned} & \int_{b}\alpha_{f}\left(\boldsymbol{\tau}:\grad\delta\mathbf{w}\cdot\Delta\mathbf{G}+\grad\delta\mathbf{w}:\boldsymbol{\mathcal{C}}^{\tau}:\mathbf{M}\cdot\grad\Delta\mathbf{u}\right)\,dv\\
& =\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\int_{b}\mathbf{K}_{ab}^{wu}\,dv\cdot\Delta\mathbf{u}_{b}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{K}_{ab}^{wu}=\alpha_{f}\boldsymbol{\tau}\cdot\left(\grad N_{a}\otimes\grad N_{b}-\grad N_{b}\otimes\grad N_{a}\right)+\left(\grad N_{a}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\grad N_{b}\right)\cdot\mathbf{M}\label{eq:fsi-term-2-Kwu}
\end{equation}
\end_inset
\begin_inset Formula
\[
\int_{b}\alpha_{f}\grad\delta\mathbf{w}:\boldsymbol{\mathcal{C}}^{\tau}:\grad\Delta\mathbf{w}\,dv=\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\int_{b}\mathbf{K}_{ab}^{ww}\,dv\cdot\Delta\mathbf{w}_{b}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{K}_{ab}^{ww}=\alpha_{f}\grad N_{a}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\grad N_{b}\label{eq:fsi-term-2-Kww}
\end{equation}
\end_inset
\begin_inset Formula
\[
\int_{b}\alpha_{f}\Delta J^{f}\boldsymbol{\tau}_{J}^{\prime}:\grad\delta\mathbf{w}\,dv=\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\int_{b}\mathbf{k}_{ab}^{wJ}\,dv\,\Delta J_{b}^{f}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{k}_{ab}^{wJ}=\alpha_{f}N_{b}\boldsymbol{\tau}_{J}^{\prime}\cdot\grad N_{a}\label{eq:fsi-term-2-kwJ}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Linearization of
\begin_inset Formula $\int_{B}\delta\mathbf{w}\cdot J\mathbf{F}^{-T}\cdot\Grad p\,dV$
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned} & D\left(\int_{B}\delta\mathbf{w}\cdot J\mathbf{F}^{-T}\cdot\Grad p\,dV\right)\left[\Delta\mathbf{u}\right]\\
& =\int_{b}\alpha_{f}\delta\mathbf{w}\cdot\Delta\mathbf{G}^{T}\cdot\grad p\,dv
\end{aligned}
}\label{eq:fsi-term-3-Du}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\boxed{D\left(\int_{B}\delta\mathbf{w}\cdot J\mathbf{F}^{-T}\cdot\Grad p\,dV\right)\left[\Delta\mathbf{w}\right]=0}\label{eq:fsi-term-3-Dw}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned} & D\left(\int_{B}\delta\mathbf{w}\cdot J\mathbf{F}^{-T}\cdot\Grad p\,dV\right)\left[\Delta J^{f}\right]\\
& =\int_{b}\alpha_{f}\delta\mathbf{w}\cdot\left(\Delta J^{f}p^{\prime\prime}\left(J^{f}\right)\grad J^{f}+p^{\prime}\left(J^{f}\right)\grad\Delta J^{f}\right)\,dv
\end{aligned}
}\label{eq:fsi-term-3-DJ}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
The discretization of these terms produces
\begin_inset Formula
\[
\int_{b}\alpha_{f}\delta\mathbf{w}\cdot\Delta\mathbf{G}^{T}\cdot\grad p\,dv=\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\int_{b}\mathbf{K}_{ab}^{wu}\,dv\cdot\Delta\mathbf{u}_{b}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{ab}^{wu}=\alpha_{f}N_{a}\left(\grad p\otimes\grad N_{b}-\grad N_{b}\otimes\grad p\right)}\label{eq:fsi-term-3-Kwu}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{ab}^{ww}=\mathbf{0}}\label{eq:term-3-Kww}
\end{equation}
\end_inset
\begin_inset Formula
\[
\int_{b}\alpha_{f}\delta\mathbf{w}\cdot\left(\Delta J^{f}p^{\prime\prime}\left(J^{f}\right)\grad J^{f}+p^{\prime}\left(J^{f}\right)\grad\Delta J^{f}\right)\,dv=\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\int_{b}\mathbf{k}_{ab}^{wJ}\,dv\Delta J_{b}^{f}
\]
\end_inset
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{k}_{ab}^{wJ}=\alpha_{f}N_{a}\left(N_{b}p^{\prime\prime}\left(J^{f}\right)\grad J^{f}+p^{\prime}\left(J^{f}\right)\grad N_{b}\right)}\label{eq:fsi-term-3-kwJ}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Linearization of
\begin_inset Formula $\int_{B}\delta\mathbf{w}\cdot\rho^{f}\left[J\left(\dot{\mathbf{w}}+\dot{\mathbf{v}}^{s}\right)+\left(\Grad\mathbf{w}+\Grad\mathbf{v}^{s}\right)\cdot\mathbf{W}\right]\,dV$
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\int_{B}\delta\mathbf{w}\cdot\rho^{f}\left[J\left(\dot{\mathbf{w}}+\dot{\mathbf{v}}^{s}\right)+\left(\Grad\mathbf{w}+\Grad\mathbf{v}^{s}\right)\cdot\mathbf{W}\right]\,dV
\]
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned} & D\left(\int_{B}\delta\mathbf{w}\cdot\rho^{f}\left[J\left(\dot{\mathbf{w}}+\dot{\mathbf{v}}^{s}\right)+\left(\Grad\mathbf{w}+\Grad\mathbf{v}^{s}\right)\cdot\mathbf{W}\right]\,dV\right)\left[\Delta\mathbf{u}\right]\\
& =\int_{b}\delta\mathbf{w}\cdot\alpha_{f}\rho^{f}\left[\left(\divg\Delta\mathbf{u}\right)\left(\dot{\mathbf{w}}+\dot{\mathbf{v}}^{s}\right)+\frac{\gamma}{\beta\Delta t}\grad\Delta\mathbf{u}\cdot\mathbf{w}+\frac{\alpha_{m}}{\alpha_{f}\beta\Delta t^{2}}\Delta\mathbf{u}\right]\,dv\\
& +\int_{b}\delta\mathbf{w}\cdot\alpha_{f}\rho^{f}\mathbf{L}^{f}\cdot\Delta\mathbf{G}\cdot\mathbf{w}\,dv
\end{aligned}
}\label{eq:fsi-term-4-Du}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned} & D\left(\int_{B}\delta\mathbf{w}\cdot\rho^{f}\left[J\left(\dot{\mathbf{w}}+\dot{\mathbf{v}}^{s}\right)+\left(\Grad\mathbf{w}+\Grad\mathbf{v}^{s}\right)\cdot\mathbf{W}\right]\,dV\right)\left[\Delta\mathbf{w}\right]\\
& =\int_{b}\delta\mathbf{w}\cdot\alpha_{f}\rho^{f}\left[\left(\frac{\alpha_{m}}{\alpha_{f}\gamma\Delta t}\mathbf{I}+\mathbf{L}^{f}\right)\cdot\Delta\mathbf{w}+\grad\Delta\mathbf{w}\cdot\mathbf{w}\right]\,dv
\end{aligned}
}\label{eq:fsi-term-4-Dw}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned} & D\left(\int_{B}\delta\mathbf{w}\cdot\rho^{f}\left[J\left(\dot{\mathbf{w}}+\dot{\mathbf{v}}^{s}\right)+\left(\Grad\mathbf{w}+\Grad\mathbf{v}^{s}\right)\cdot\mathbf{W}\right]\,dV\right)\left[\Delta J^{f}\right]\\
& =-\int_{b}\delta\mathbf{w}\cdot\alpha_{f}\frac{\rho^{f}}{J^{f}}\Delta J^{f}\mathbf{a}^{f}\,dv
\end{aligned}
}\label{eq:fsi-term-4-DJ}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
The discretized version is given by
\begin_inset Formula
\[
\begin{aligned} & \int_{b}\delta\mathbf{w}\cdot\alpha_{f}\rho^{f}\left[\left(\divg\Delta\mathbf{u}\right)\left(\dot{\mathbf{w}}+\dot{\mathbf{v}}^{s}\right)+\frac{\gamma}{\beta\Delta t}\grad\Delta\mathbf{u}\cdot\mathbf{w}+\frac{\alpha_{m}}{\alpha_{f}\beta\Delta t^{2}}\Delta\mathbf{u}\right]\,dv\\
& +\int_{b}\delta\mathbf{w}\cdot\alpha_{f}\rho^{f}\mathbf{L}^{f}\cdot\Delta\mathbf{G}\cdot\mathbf{w}\,dv\\
& =\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\int_{b}\mathbf{K}_{ab}^{wu}\,dv\cdot\Delta\mathbf{u}_{b}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned}\mathbf{K}_{ab}^{wu} & =\alpha_{f}N_{a}\rho^{f}\left[\mathbf{a}^{f}\otimes\grad N_{b}-\left(\grad N_{b}\cdot\mathbf{w}\right)\mathbf{L}^{f}+\left(\frac{\gamma}{\beta\Delta t}\left(\grad N_{b}\cdot\mathbf{w}\right)+\frac{\alpha_{m}}{\alpha_{f}\beta\Delta t^{2}}N_{b}\right)\mathbf{I}\right]\end{aligned}
}\label{eq:fsi-term-4-Kwu}
\end{equation}
\end_inset
\begin_inset Formula
\[
\begin{aligned} & \int_{b}\delta\mathbf{w}\cdot\alpha_{f}\rho^{f}\left[\left(\frac{\alpha_{m}}{\alpha_{f}\gamma\Delta t}\mathbf{I}+\mathbf{L}^{f}\right)\cdot\Delta\mathbf{w}+\grad\Delta\mathbf{w}\cdot\mathbf{w}\right]\,dv\\
& =\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\int_{b}\mathbf{K}_{ab}^{ww}\,dv\cdot\Delta\mathbf{w}_{b}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{ab}^{ww}=\alpha_{f}N_{a}\rho^{f}\left[N_{b}\left(\frac{\alpha_{m}}{\alpha_{f}\gamma\Delta t}\mathbf{I}+\mathbf{L}^{f}\right)+\left(\grad N_{b}\cdot\mathbf{w}\right)\mathbf{I}\right]}\label{eq:fsi-term-4-Kww}
\end{equation}
\end_inset
\begin_inset Formula
\[
-\int_{B}\delta\mathbf{w}\cdot\alpha_{f}\frac{\rho^{f}}{J^{f}}\Delta J^{f}\mathbf{a}^{f}\,dv=\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\int_{b}\mathbf{k}_{ab}^{wJ}\,dv\Delta J_{b}^{f}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{k}_{ab}^{wJ}=-\alpha_{f}N_{a}N_{b}\frac{\rho^{f}}{J^{f}}\mathbf{a}^{f}}\label{eq:fsi-term-4-kwJ}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Linearization of
\begin_inset Formula $\int_{B}\delta J^{f}\left[\frac{1}{J^{f}}\left(J\dot{J}^{f}+\Grad J^{f}\cdot\mathbf{W}\right)-\dot{J}\right]\,dV$
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\int_{B}\delta J^{f}\left[\frac{1}{J^{f}}\left(J\dot{J}^{f}+\Grad J^{f}\cdot\mathbf{W}\right)-\dot{J}\right]\,dV
\]
\end_inset
\begin_inset Formula
\[
\begin{aligned} & D\left(\int_{B}\delta J^{f}\left[\frac{1}{J^{f}}\left(J\dot{J}^{f}+\Grad J^{f}\cdot\mathbf{W}\right)-\dot{J}\right]\,dV\right)\left[\Delta\mathbf{u}\right]\\
& =\int_{B}\delta J^{f}\left[\frac{1}{J^{f}}\left(DJ\left[\Delta\mathbf{u}\right]\dot{J}^{f}+\Grad J^{f}\cdot D\mathbf{W}\left[\Delta\mathbf{u}\right]\right)-D\dot{J}\left[\Delta\mathbf{u}\right]\right]\,dV\\
& =\int_{b}\delta J^{f}\alpha_{f}\left[\left(\frac{\dot{J}^{f}}{J^{f}}-\divg\mathbf{v}^{s}-\frac{\gamma}{\beta\Delta t}\right)\left(\divg\Delta\mathbf{u}\right)+\mathbf{w}\cdot\left[\left(\divg\Delta\mathbf{u}\right)\mathbf{I}-\grad^{T}\Delta\mathbf{u}\right]\cdot\frac{\grad J^{f}}{J^{f}}+\left(\grad\Delta\mathbf{u}\right)^{T}:\mathbf{L}^{s}\right]\,dv
\end{aligned}
\]
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned} & D\left(\int_{B}\delta J^{f}\left[\frac{1}{J^{f}}\left(J\dot{J}^{f}+\Grad J^{f}\cdot\mathbf{W}\right)-\dot{J}\right]\,dV\right)\left[\Delta\mathbf{u}\right]\\
& =\int_{b}\delta J^{f}\alpha_{f}\left[\left(\frac{\dot{J}^{f}}{J^{f}}-\divg\mathbf{v}^{s}-\frac{\gamma}{\beta\Delta t}\right)\left(\divg\Delta\mathbf{u}\right)+\mathbf{w}\cdot\Delta\mathbf{G}^{T}\cdot\frac{\grad J^{f}}{J^{f}}+\left(\grad\Delta\mathbf{u}\right)^{T}:\mathbf{L}^{s}\right]\,dv
\end{aligned}
}\label{eq:fsi-term-5-Du}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned} & D\left(\int_{B}\delta J^{f}\left[\frac{1}{J^{f}}\left(J\dot{J}^{f}+\Grad J^{f}\cdot\mathbf{W}\right)-\dot{J}\right]\,dV\right)\left[\Delta\mathbf{w}\right]\\
& =\int_{b}\delta J^{f}\alpha_{f}\frac{1}{J^{f}}\Delta\mathbf{w}\cdot\grad J^{f}\,dv
\end{aligned}
}\label{eq:fsi-term-5-Dw}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned} & D\left(\int_{B}\delta J^{f}\left[\frac{1}{J^{f}}\left(J\dot{J}^{f}+\Grad J^{f}\cdot\mathbf{W}\right)-\dot{J}\right]\,dV\right)\left[\Delta J^{f}\right]\\
& =\int_{b}\delta J^{f}\alpha_{f}\frac{1}{J^{f}}\left(\left[\frac{\alpha_{m}}{\alpha_{f}\gamma\Delta t}-\frac{1}{J^{f}}\left(\dot{J}^{f}+\mathbf{w}\cdot\grad J^{f}\right)\right]\Delta J^{f}+\mathbf{w}\cdot\grad\Delta J^{f}\right)\,dv
\end{aligned}
}\label{eq:fsi-term-5-DJ}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
The discretization of these terms produces
\begin_inset Formula
\[
\begin{aligned} & \int_{b}\delta J^{f}\alpha_{f}\left[\left(\frac{\dot{J}^{f}}{J^{f}}-\divg\mathbf{v}^{s}-\frac{\gamma}{\beta\Delta t}\right)\left(\divg\Delta\mathbf{u}\right)+\mathbf{w}\cdot\Delta\mathbf{G}^{T}\cdot\frac{\grad J^{f}}{J^{f}}+\left(\grad\Delta\mathbf{u}\right)^{T}:\mathbf{L}^{s}\right]\,dv\\
& =\sum_{a}\delta J_{a}^{f}\sum_{b}\int_{b}\mathbf{k}_{ab}^{Ju}\,dv\cdot\Delta\mathbf{u}_{b}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned}\mathbf{k}_{ab}^{Ju} & =\alpha_{f}N_{a}\left[\left(\frac{\dot{J}^{f}}{J^{f}}-\divg\mathbf{v}^{s}-\frac{\gamma}{\beta\Delta t}\right)\grad N_{b}+\left(\grad N_{b}\otimes\frac{\grad J^{f}}{J^{f}}-\frac{\grad J^{f}}{J^{f}}\otimes\grad N_{b}\right)\cdot\mathbf{w}+\left(\mathbf{L}^{s}\right)^{T}\cdot\grad N_{b}\right]\end{aligned}
}\label{eq:fsi-term-5-kJu}
\end{equation}
\end_inset
\begin_inset Formula
\[
\int_{b}\delta J^{f}\alpha_{f}\frac{1}{J^{f}}\Delta\mathbf{w}\cdot\grad J^{f}\,dv=\sum_{a}\delta J_{a}^{f}\sum_{b}\int_{b}\mathbf{k}_{ab}^{Jw}\,dv\cdot\Delta\mathbf{w}_{b}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{k}_{ab}^{Jw}=\alpha_{f}\frac{N_{a}N_{b}}{J^{f}}\grad J^{f}}\label{eq:fsi-term-5-kJw}
\end{equation}
\end_inset
\begin_inset Formula
\[
\begin{aligned} & \int_{b}\delta J^{f}\alpha_{f}\frac{1}{J^{f}}\left(\left[\frac{\alpha_{m}}{\alpha_{f}\gamma\Delta t}-\frac{1}{J^{f}}\left(\dot{J}^{f}+\mathbf{w}\cdot\grad J^{f}\right)\right]\Delta J^{f}+\mathbf{w}\cdot\grad\Delta J^{f}\right)\,dv\\
& =\sum_{a}\delta J_{a}^{f}\sum_{b}\int_{b}k_{ab}^{JJ}\,dv\Delta J_{b}^{f}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{k_{ab}^{JJ}=\alpha_{f}N_{a}\frac{1}{J^{f}}\left(N_{b}\left[\frac{\alpha_{m}}{\alpha_{f}\gamma\Delta t}-\frac{1}{J^{f}}\left(\dot{J}^{f}+\mathbf{w}\cdot\grad J^{f}\right)\right]+\mathbf{w}\cdot\grad N_{b}\right)}\label{eq:fsi-term-5-kJJ}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Linearization of
\begin_inset Formula $-\int_{B}\Grad\delta J^{f}\cdot\mathbf{W}\,dV$
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
-\int_{B}\Grad\delta J^{f}\cdot\mathbf{W}\,dV
\]
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\boxed{D\left(\int_{B}\Grad\delta J^{f}\cdot\mathbf{W}\,dV\right)\left[\Delta\mathbf{u}\right]=\int_{b}\alpha_{f}\mathbf{w}\cdot\Delta\mathbf{G}^{T}\cdot\grad\delta J^{f}\,dv}\label{eq:fsi-term-6-Du}
\end{equation}
\end_inset
\begin_inset Formula
\[
\begin{aligned} & D\left(\int_{B}\Grad\delta J^{f}\cdot\mathbf{W}\,dV\right)\left[\Delta\mathbf{u}\right]\\
& =\int_{B}\Grad\delta J^{f}\cdot D\mathbf{W}\left[\Delta\mathbf{w}\right]\,dV\\
& =\int_{B}\alpha_{f}\Delta\mathbf{w}\cdot\grad\delta J^{f}\,dv
\end{aligned}
\]
\end_inset
\begin_inset Formula
\begin{equation}
\boxed{D\left(\int_{B}\Grad\delta J^{f}\cdot\mathbf{W}\,dV\right)\left[\Delta\mathbf{w}\right]=\int_{B}\alpha_{f}\Delta\mathbf{w}\cdot\grad\delta J^{f}\,dv}\label{eq:fsi-term-6-Dw}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\boxed{D\left(\int_{B}\Grad\delta J^{f}\cdot\mathbf{W}\,dV\right)\left[\Delta J^{f}\right]=0}\label{eq:fsi-term-6-DJ}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
The discretization of these terms produces
\begin_inset Formula
\[
\int_{b}\alpha_{f}\mathbf{w}\cdot\Delta\mathbf{G}^{T}\cdot\grad\delta J^{f}\,dv=\sum_{a}\delta J_{a}^{f}\sum_{b}\int_{v}\mathbf{k}_{ab}^{Ju}\,dv\cdot\Delta\mathbf{u}_{b}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{k}_{ab}^{Ju}=\alpha_{f}\left(\grad N_{b}\otimes\grad N_{a}-\grad N_{a}\otimes\grad N_{b}\right)\cdot\mathbf{w}}\label{eq:fsi-term-6-kJu}
\end{equation}
\end_inset
\begin_inset Formula
\[
\int_{B}\alpha_{f}\Delta\mathbf{w}\cdot\grad\delta J^{f}\,dv=\sum_{a}\delta J_{a}^{f}\sum_{b}\int_{b}\mathbf{k}_{ab}^{Jw}\,dv\cdot\Delta\mathbf{w}_{b}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{k}_{ab}^{Jw}=\alpha_{f}N_{b}\grad N_{a}}\label{eq:fsi-term-6-kJw}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\boxed{k_{ab}^{JJ}=0}\label{eq:fsi-term-6-kJJ}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Body force term
\begin_inset Formula $\int_{b}\delta\mathbf{w}\cdot\rho^{f}\mathbf{b}\,dv$
\end_inset
\end_layout
\begin_layout Standard
The body force term may be discretized as
\begin_inset Formula
\[
\int_{b}\delta\mathbf{w}\cdot\rho^{f}\mathbf{b}\,dv=\sum_{a}\delta\mathbf{w}_{a}\cdot\int_{b}N_{a}\rho^{f}\mathbf{b}\,dv
\]
\end_inset
To linearizes this expression,
we first evaluate it in the material domain,
\begin_inset Formula
\[
\int_{b}\delta\mathbf{w}\cdot\rho^{f}\mathbf{b}\,dv=\int_{B}\delta\mathbf{w}\cdot\rho^{f}J\mathbf{b}\,dV
\]
\end_inset
Now,
\begin_inset Formula
\begin{equation}
\boxed{D\left(\int_{B}\delta\mathbf{w}\cdot\rho^{f}J\mathbf{b}\,dV\right)\left[\Delta\mathbf{u}\right]=\int_{b}\alpha_{f}\rho^{f}\left(\divg\Delta\mathbf{u}\right)\delta\mathbf{w}\cdot\mathbf{b}\,dv}\label{eq:fsi-bf-1}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\boxed{D\left(\int_{B}\delta\mathbf{w}\cdot\rho^{f}J\mathbf{b}\,dV\right)\left[\Delta\mathbf{w}\right]=\int_{b}\delta\mathbf{w}\cdot\rho^{f}D\mathbf{b}\left[\Delta\mathbf{w}\right]\,dv}\label{eq:fsi-bf-2}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\boxed{D\left(\int_{B}\delta\mathbf{w}\cdot\rho^{f}J\mathbf{b}\,dV\right)\left[\Delta J^{f}\right]=-\int_{b}\Delta J^{f}\frac{\alpha_{f}\rho^{f}}{J^{f}}\delta\mathbf{w}\cdot\mathbf{b}\,dv}\label{eq:fsi-bf-3}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
The discrete forms of these expressions are given by
\begin_inset Formula
\[
\int_{b}\alpha_{f}\rho^{f}\left(\divg\Delta\mathbf{u}\right)\delta\mathbf{w}\cdot\mathbf{b}\,dv=\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\int_{b}\mathbf{K}_{ab}^{wu}\,dv\cdot\Delta\mathbf{u}_{b}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{ab}^{wu}=\alpha_{f}\rho^{f}N_{a}\mathbf{b}\otimes\grad N_{b}}\label{eq:fsi-bf-4}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{ab}^{ww}=\alpha_{f}\rho^{f}N_{a}N_{b}\frac{\partial\mathbf{b}}{\partial\mathbf{w}}}\label{eq:fsi-bf-5}
\end{equation}
\end_inset
\begin_inset Formula
\[
-\int_{b}\Delta J^{f}\frac{\alpha_{f}\rho^{f}}{J^{f}}\delta\mathbf{w}\cdot\mathbf{b}\,dv=\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\int_{b}\mathbf{k}_{ab}^{wJ}\,dv\,\Delta J_{b}^{f}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{k}_{ab}^{wJ}=-\alpha_{f}N_{a}N_{b}\frac{\rho^{f}}{J^{f}}\mathbf{b}}\label{eq:fsi-bf-6}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Fluid traction acting on solid interface
\end_layout
\begin_layout Standard
At a fluid-solid interface
\begin_inset Formula $\Gamma$
\end_inset
,
the fluid traction
\begin_inset Formula $\mathbf{t}^{f}=\boldsymbol{\sigma}^{f}\cdot\mathbf{n}$
\end_inset
acts on the solid surface,
\begin_inset Formula $\mathbf{t}^{s}=-\mathbf{t}^{f}$
\end_inset
,
where
\begin_inset Formula $\mathbf{n}$
\end_inset
is the outward normal to the fluid surface.
The resulting virtual work on the solid domain is
\begin_inset Formula
\[
\delta G=\int_{\Gamma}\delta\mathbf{v}^{s}\cdot\mathbf{t}_{n+\alpha_{f}}^{s}\,da=\int_{\Gamma}-\delta\mathbf{v}^{s}\cdot\boldsymbol{\sigma}^{f}\cdot\mathbf{n}\,da=\int_{\Gamma_{\eta}}-\delta\mathbf{v}^{s}\cdot\boldsymbol{\sigma}^{f}\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\,d\eta^{1}d\eta^{2}
\]
\end_inset
The linearization of this work is given by
\begin_inset Formula
\[
D\delta G\left[\Delta\mathbf{u}\right]=\int_{\Gamma_{\eta}}-\delta\mathbf{v}^{s}\cdot\alpha_{f}\left[\left(\boldsymbol{\mathcal{C}}^{v}:\mathbf{M}\cdot\grad\Delta\mathbf{u}\right)\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)+\boldsymbol{\sigma}^{f}\cdot\left(\frac{\partial\Delta\mathbf{u}}{\partial\eta^{1}}\times\mathbf{g}_{2}+\mathbf{g}_{1}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{2}}\right)\right]\,d\eta^{1}d\eta^{2}
\]
\end_inset
where
\begin_inset Formula
\[
\mathbf{g}_{\alpha}=\frac{\partial\mathbf{x}}{\partial\eta^{\alpha}}
\]
\end_inset
are covariant basis vectors on
\begin_inset Formula $\Gamma$
\end_inset
.
Similarly,
\begin_inset Formula
\[
D\delta G\left[\Delta\mathbf{w}\right]=\int_{\Gamma_{\eta}}-\delta\mathbf{v}^{s}\cdot\alpha_{f}\left[\left(\boldsymbol{\mathcal{C}}^{v}:\grad\Delta\mathbf{w}\right)\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\right]\,d\eta^{1}d\eta^{2}
\]
\end_inset
and
\begin_inset Formula
\[
D\delta G\left[\Delta J^{f}\right]=\int_{\Gamma_{\eta}}-\Delta J^{f}\delta\mathbf{v}^{s}\cdot\alpha_{f}\left[\left(-p^{\prime}\left(J^{f}\right)+\boldsymbol{\tau}_{J}^{\prime}\right)\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\right]\,d\eta^{1}d\eta^{2}
\]
\end_inset
\end_layout
\begin_layout Standard
The discretized form of these equations is
\begin_inset Formula
\[
\delta G=\sum_{a}\delta\mathbf{v}_{a}^{s}\cdot\int_{\Gamma}\mathbf{f}_{a}\,d\eta^{1}d\eta^{2}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{f}_{a}=-N_{a}\boldsymbol{\sigma}^{f}\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)}\label{eq:fsi-ft-1}
\end{equation}
\end_inset
\begin_inset Formula
\[
D\delta G\left[\Delta\mathbf{u}\right]=\sum_{a}\delta\mathbf{v}_{a}^{s}\cdot\sum_{b}\int_{\Gamma_{\eta}}\mathbf{K}_{ab}^{uu}\,d\eta^{1}d\eta^{2}\cdot\Delta\mathbf{u}_{b}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{ab}^{uu}=-\alpha_{f}N_{a}\left(\left[\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\cdot\boldsymbol{\mathcal{C}}^{v}\cdot\grad N_{b}\right]\cdot\mathbf{M}+\boldsymbol{\sigma}^{f}\cdot\boldsymbol{\mathcal{A}}\left\{ \frac{\partial N_{b}}{\partial\eta^{2}}\mathbf{g}_{1}-\frac{\partial N_{b}}{\partial\eta^{1}}\mathbf{g}_{2}\right\} \right)}\label{eq:fsi-ft-2}
\end{equation}
\end_inset
and
\begin_inset Formula
\[
D\delta G\left[\Delta\mathbf{w}\right]=\sum_{a}\delta\mathbf{v}_{a}^{s}\cdot\sum_{b}\int_{\Gamma_{\eta}}\mathbf{K}_{ab}^{uw}\,d\eta^{1}d\eta^{2}\cdot\Delta\mathbf{w}_{b}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{ab}^{uw}=-\alpha_{f}N_{a}\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\cdot\boldsymbol{\mathcal{C}}^{v}\cdot\grad N_{b}}\label{eq:fsi-ft-3}
\end{equation}
\end_inset
\begin_inset Formula
\[
D\delta G\left[\Delta J^{f}\right]=\sum_{a}\delta\mathbf{v}_{a}^{s}\cdot\sum_{b}\int_{\Gamma_{\eta}}\mathbf{k}_{ab}^{uJ}\,d\eta^{1}d\eta^{2}\,\Delta J_{b}^{f}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{k}_{ab}^{uJ}=-\alpha_{f}N_{a}N_{b}\left(-p^{\prime}\left(J^{f}\right)+\boldsymbol{\tau}_{J}^{\prime}\right)\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)}\label{eq:fsi-ft-4}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Special Boundary Conditions
\end_layout
\begin_layout Subsubsection
Backflow Stabilization
\end_layout
\begin_layout Standard
Let the normal component of the viscous traction be given by
\begin_inset Formula
\begin{equation}
t_{n}^{\tau}=\begin{cases}
\beta\rho_{r}w_{n}^{2} & w_{n}<0\\
0 & w_{n}\ge0
\end{cases}\,.\label{eq:fsi-BFS-normal-traction}
\end{equation}
\end_inset
Then,
the contribution of this traction to the virtual external work
\begin_inset Formula $\delta W_{ext}$
\end_inset
is
\begin_inset Formula
\begin{equation}
\delta G=\int_{\partial\Omega}\delta\mathbf{w}\cdot t_{n}^{\tau}\mathbf{n}\,da\,.\label{eq:fsi-BFSckflow-virtual-work}
\end{equation}
\end_inset
The linearization of
\begin_inset Formula $\delta G$
\end_inset
along an increment
\begin_inset Formula $\Delta\mathbf{w}$
\end_inset
in the relative velocity is given by
\begin_inset Formula
\begin{equation}
D\delta G\left[\Delta\mathbf{w}\right]=\int_{\partial\Omega}\delta\mathbf{w}\cdot\alpha_{f}\mathbf{K}_{n}\cdot\Delta\mathbf{w}\,da\,,\label{eq:fsi-BFS-linearization}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{K}_{n}=\begin{cases}
2\beta\rho_{r}w_{n}\left(\mathbf{n}\otimes\mathbf{n}\right) & v_{n}<0\\
\mathbf{0} & v_{n}\ge0
\end{cases}\,.\label{eq:fsi-BFS-stiffness}
\end{equation}
\end_inset
Similarly,
\begin_inset Formula
\[
D\delta G\left[\Delta\mathbf{u}\right]=\int_{\partial\Omega_{\eta}}\delta\mathbf{w}\cdot\alpha_{f}t_{n}^{\tau}\left(\mathbf{g}_{1}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{2}}-\mathbf{g}_{2}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{1}}\right)\,d\eta^{1}d\eta^{2}
\]
\end_inset
The discretized form of
\begin_inset Formula $\delta G$
\end_inset
is
\begin_inset Formula
\begin{equation}
\delta G=\sum_{a}\delta\mathbf{w}_{a}\cdot\int_{\partial\Omega_{\eta}}\mathbf{f}_{a}^{n}\,d\eta^{1}d\eta^{2},\quad\boxed{\mathbf{f}_{a}^{n}=N_{a}t_{n}^{\tau}\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)}\,,\label{eq:fsi-BFS-discretized-work}
\end{equation}
\end_inset
whereas the discretized form of
\begin_inset Formula $D\delta G\left[\Delta\mathbf{v}\right]$
\end_inset
is
\begin_inset Formula
\begin{equation}
D\delta G\left[\Delta\mathbf{v}\right]=\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\left(\int_{\partial\Omega_{\eta}}\mathbf{K}_{ab}^{wu}\,d\eta^{1}d\eta^{2}\cdot\Delta\mathbf{u}+\int_{\partial\Omega_{\eta}}\mathbf{K}_{ab}^{ww}\,d\eta^{1}d\eta^{2}\cdot\Delta\mathbf{w}_{b}\right)\,,\label{eq:BFS-discretized-tangent-1}
\end{equation}
\end_inset
with
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{ab}^{ww}=\alpha_{f}N_{a}N_{b}\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|\mathbf{K}_{n}}\,,\label{eq:fsi-BFS-Kww}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{ab}^{wu}=\alpha_{f}N_{a}t_{n}^{\tau}\boldsymbol{\mathcal{A}}\left\{ \frac{\partial N_{b}}{\partial\eta^{2}}\mathbf{g}_{1}-\frac{\partial N_{b}}{\partial\eta^{1}}\mathbf{g}_{2}\right\} }\label{eq:fsi-BFS-Kwu}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
Tangential Stabilization
\end_layout
\begin_layout Standard
The tangential traction given by
\begin_inset Formula
\begin{equation}
\mathbf{t}_{t}^{\tau}=-\beta\rho_{r}\left|\mathbf{w}_{t}\right|\mathbf{w}_{t}\,.\label{eq:fsi-tangential-stabilization}
\end{equation}
\end_inset
This form shows that
\begin_inset Formula $\mathbf{t}_{t}^{\tau}$
\end_inset
opposes tangential flow.
The external virtual work for this traction is
\begin_inset Formula
\begin{equation}
\delta G=\int_{\partial\Omega}\delta\mathbf{w}\cdot\mathbf{t}_{t}^{\tau}\,da\,.\label{eq:fsi-TS-external-work}
\end{equation}
\end_inset
Its linearization along an increment
\begin_inset Formula $\Delta\mathbf{w}$
\end_inset
is
\begin_inset Formula
\begin{equation}
D\delta G\left[\Delta\mathbf{w}\right]=\int_{\partial\Omega}\delta\mathbf{w}\cdot\alpha_{f}\mathbf{K}_{t}\cdot\Delta\mathbf{w}\,da\,,\label{eq:fsi-TS-linearization}
\end{equation}
\end_inset
where it can be shown that
\begin_inset Formula
\begin{equation}
\mathbf{K}_{t}=-\beta\rho_{r}\left|\mathbf{w}_{t}\right|\left(\mathbf{I}-\mathbf{n}\otimes\mathbf{n}+\frac{\mathbf{w}_{t}}{\left|\mathbf{w}_{t}\right|}\otimes\frac{\mathbf{w}_{t}}{\left|\mathbf{w}_{t}\right|}\right)\,.\label{eq:fsi-TS-stiffness}
\end{equation}
\end_inset
Similarly,
\begin_inset Formula
\[
D\delta G\left[\Delta\mathbf{u}\right]=\int_{\partial\Omega_{\eta}}\delta\mathbf{w}\cdot\alpha_{f}\left(\mathbf{t}_{t}^{\tau}\otimes\mathbf{n}\right)\cdot\left(\frac{\partial\Delta\mathbf{u}}{\partial\eta^{1}}\times\mathbf{g}_{2}+\mathbf{g}_{1}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{2}}\right)\,d\eta^{1}d\eta^{2}\,.
\]
\end_inset
The discretized form of
\begin_inset Formula $\delta G$
\end_inset
is
\begin_inset Formula
\begin{equation}
\delta G=\sum_{a}\delta\mathbf{v}_{a}\cdot\int_{\partial\Omega}\mathbf{f}_{a}^{\tau}\,d\eta^{1}d\eta^{2}\,,\quad\boxed{\mathbf{f}_{a}^{\tau}=N_{a}\mathbf{t}_{t}^{\tau}\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|}\,.\label{eq:fsi-TS-discretized-work}
\end{equation}
\end_inset
The discretized form of
\begin_inset Formula $D\delta G\left[\Delta\mathbf{v}\right]$
\end_inset
is
\begin_inset Formula
\begin{equation}
D\delta G\left[\Delta\mathbf{v}\right]=\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\int_{\partial\Omega_{\eta}}\left(\mathbf{K}_{ab}^{wu}\cdot\Delta\mathbf{u}_{b}+\mathbf{K}_{ab}^{ww}\cdot\Delta\mathbf{w}_{b}\right)\,d\eta^{1}d\eta^{2}\,,\label{eq:TS-discretized-tangent-1}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{ab}^{ww}=\alpha_{f}N_{a}N_{b}\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|\mathbf{K}_{t}}\,,\label{eq:fsi-TS-Kww}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{ab}^{wu}=\alpha_{f}N_{a}\left(\mathbf{t}_{t}^{\tau}\otimes\mathbf{n}\right)\cdot\boldsymbol{\mathcal{A}}\left\{ \frac{\partial N_{b}}{\partial\eta^{2}}\mathbf{g}_{1}-\frac{\partial N_{b}}{\partial\eta^{1}}\mathbf{g}_{2}\right\} }\,.\label{eq:fsi-TS-Kwu}
\end{equation}
\end_inset
\end_layout
\begin_layout Section
Weak Formulation for BFSI
\begin_inset CommandInset label
LatexCommand label
name "sec:BFSI-Weak-Formulation"
\end_inset
\end_layout
\begin_layout Subsection
Virtual Work and Weak Form
\begin_inset CommandInset label
LatexCommand label
name "subsec:BFSI-Virtual-Work"
\end_inset
\end_layout
\begin_layout Standard
The virtual work statement is used to enforce the three governing equations needed to solve for the nodal DOFs
\begin_inset Formula $\mathbf{u}$
\end_inset
,
\begin_inset Formula $\mathbf{w}$
\end_inset
and
\begin_inset Formula $e^{f}$
\end_inset
,
namely the mixture mass balance
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-fluid-kin-constr"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
the fluid momentum balance
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-fluid-momentum"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
and the solid momentum balance
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-solid-momentum"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
We may rewrite the momentum balance equations to facilitate the enforcement of natural traction boundary conditions given in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-fluid-mtm-jump"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-solid-mtm-jump"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
Using
\begin_inset Formula $\boldsymbol{\tau}^{f}=\varphi^{f}\boldsymbol{\tau}$
\end_inset
,
these become
\begin_inset Formula
\begin{equation}
\begin{aligned}\varphi^{s}\left(-\rho_{T}^{f}\mathbf{a}^{f}+\rho_{T}^{s}\mathbf{a}^{s}\right)= & -\frac{\varphi^{s^{2}}}{\varphi^{f}}\mathbf{\boldsymbol{\tau}}\cdot\grad\frac{\varphi^{f}}{\varphi^{s}}+\divg\left(-\varphi^{s}\boldsymbol{\tau}+\boldsymbol{\sigma}^{e}\right)\\
& +\varphi^{s}\left(-\rho_{T}^{f}\mathbf{b}^{f}+\rho_{T}^{s}\mathbf{b}^{s}\right)+\mathbf{k}^{-1}\cdot\mathbf{w}\,,\\
\rho_{T}^{f}\mathbf{a}^{f}= & -\grad p+\frac{1}{\phi^{f}}\mathbf{\boldsymbol{\tau}}\cdot\grad\varphi^{f}+\divg\boldsymbol{\tau}\\
& +\rho_{T}^{f}\mathbf{b}^{f}-\mathbf{k}^{-1}\cdot\mathbf{w}\,.
\end{aligned}
\label{eq:bfsi-gov-eqn-jump}
\end{equation}
\end_inset
The virtual work statement for a Galerkin finite element formulation
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
is
\begin_inset Formula $\delta W=0$
\end_inset
,
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W & =\int_{\Omega^{b}}\delta\mathbf{v}^{s}\cdot\left[\divg\left(-\varphi^{s}\boldsymbol{\tau}+\boldsymbol{\sigma}^{e}\right)-\frac{\varphi^{s^{2}}}{\varphi^{f}}\boldsymbol{\tau}\cdot\grad\frac{\varphi^{f}}{\varphi^{s}}+\mathbf{k}^{-1}\cdot\mathbf{w}\right]\,dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}^{s}\cdot\varphi^{s}\left(-\rho_{T}^{f}\left(\mathbf{b}^{f}-\mathbf{a}^{f}\right)+\rho_{T}^{s}\left(\mathbf{b}^{s}-\mathbf{a}^{s}\right)\right)\,dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\left[\divg\boldsymbol{\tau}-\grad p+\frac{1}{\varphi^{f}}\boldsymbol{\tau}\cdot\grad\phi^{f}-\mathbf{k}^{-1}\cdot\mathbf{w}\right]\,dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\rho_{T}^{f}\left(\mathbf{b}^{f}-\mathbf{a}^{f}\right)\,dv\\
& +\int_{\Omega^{b}}\delta J^{f}\left[\divg\mathbf{w}+\frac{\dot{J}^{s}}{J^{s}}-\frac{1}{J^{f}}\left(\varphi^{f}\dot{J}^{f}+\grad J^{f}\cdot\mathbf{w}\right)\right]\,dv\,.
\end{aligned}
\label{eq:bfsi-virtual-work-strong}
\end{equation}
\end_inset
These integrals are evaluated in the current configuration of
\begin_inset Formula $\Omega^{b}$
\end_inset
.
Here,
\begin_inset Formula $\delta\mathbf{v}^{s}$
\end_inset
is the virtual solid velocity,
\begin_inset Formula $\delta\mathbf{w}$
\end_inset
is the virtual relative fluid volumetric flux,
and
\begin_inset Formula $\delta J^{f}$
\end_inset
is the virtual fluid energy density.
Integrating by parts and using the divergence theorem,
the weak form of this statement may be written as
\begin_inset Formula $\delta W=\delta W_{ext}-\delta W_{int}$
\end_inset
where the internal virtual work is
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W_{int} & =\int_{\Omega^{b}}\left[\left(-\varphi^{s}\boldsymbol{\tau}+\boldsymbol{\sigma}^{e}\right):\grad\delta\mathbf{v}^{s}-\delta\mathbf{v}^{s}\cdot\mathbf{k}^{-1}\cdot\mathbf{w}\right]\,dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}^{s}\cdot\varphi^{s}\left(\frac{\varphi^{s}}{\varphi^{f}}\boldsymbol{\tau}\cdot\grad\frac{\varphi^{f}}{\varphi^{s}}-\rho_{T}^{f}\mathbf{a}^{f}+\rho_{T}^{s}\mathbf{a}^{s}\right)\,dv\\
& +\int_{\Omega^{b}}\boldsymbol{\tau}:\grad\delta\mathbf{w}\,dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\left(\grad p+\mathbf{k}^{-1}\cdot\mathbf{w}\right)\,dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\left(\rho_{T}^{f}\mathbf{a}^{f}-\frac{1}{\varphi^{f}}\boldsymbol{\tau}\cdot\grad\varphi^{f}\right)\,dv\\
& +\int_{\Omega^{b}}\mathbf{w}\cdot\grad\delta J^{f}\,dv\,,\\
& +\int_{\Omega^{b}}\delta J^{f}\left[\frac{1}{J^{f}}\left(\varphi^{f}\dot{J}^{f}+\grad J^{f}\cdot\mathbf{w}\right)-\frac{\dot{J}^{s}}{J^{s}}\right]\,dv
\end{aligned}
\label{eq:bfsi-int-virtual-work}
\end{equation}
\end_inset
and the external part is
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W_{ext} & =\int_{\partial\Omega^{b}}\delta\mathbf{v}^{s}\cdot\mathbf{t}^{\sigma}\,da\\
& +\int_{\Omega^{b}}\delta\mathbf{v}^{s}\cdot\varphi^{s}\left(-\rho_{T}^{f}\mathbf{b}^{f}+\rho_{T}^{s}\mathbf{b}^{s}\right)\,dv\\
& +\int_{\partial\Omega^{b}}\delta\mathbf{w}\cdot\mathbf{t}^{\tau}\,da+\int_{\Omega^{f}}\delta\mathbf{w}\cdot\rho_{T}^{f}\mathbf{b}^{f}\,dv\\
& +\int_{\partial\Omega^{b}}\delta J^{f}w_{n}\,da\,.
\end{aligned}
\label{eq:bfsi-ext-virtual-work}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{t}^{\sigma}=-\varphi^{s}\mathbf{t}^{\tau}+\mathbf{t}^{e}\,.\label{eq:bfsi-sigma-traction}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\mathbf{t}^{e}=\boldsymbol{\sigma}^{e}\cdot\mathbf{n}$
\end_inset
is the elastic traction,
\begin_inset Formula $\mathbf{t}^{\tau}=\boldsymbol{\tau}\cdot\mathbf{n}$
\end_inset
is the true fluid viscous traction,
and
\begin_inset Formula $w_{n}=\mathbf{w}_{n}\cdot\mathbf{n}$
\end_inset
is the normal component of the relative fluid flux on the boundary
\begin_inset Formula $\partial\Omega^{b}$
\end_inset
,
whose outward unit normal is
\begin_inset Formula $\mathbf{n}$
\end_inset
.
The traction
\begin_inset Formula $\mathbf{t}^{\sigma}$
\end_inset
emerges from the jump condition in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-solid-mtm-jump"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
The integrands of the surface integrals represent the natural boundary conditions for this formulation.
If boundary conditions are not set explicitly on
\begin_inset Formula $\partial\Omega^{b}$
\end_inset
,
the natural boundary conditions are
\begin_inset Formula $\mathbf{t}^{\sigma}=\mathbf{0}$
\end_inset
,
\begin_inset Formula $\mathbf{t}^{\tau}=\mathbf{0}$
\end_inset
,
and
\begin_inset Formula $w_{n}=0$
\end_inset
.
These natural boundary conditions are consistent with the jump conditions presented above.
Essential boundary conditions are prescribed on the solid displacement
\begin_inset Formula $\mathbf{u}$
\end_inset
,
relative volumetric fluid flux
\begin_inset Formula $\mathbf{w}$
\end_inset
,
and fluid dilatation
\begin_inset Formula $e^{f}$
\end_inset
,
which are also consistent with the above jump conditions.
In particular,
an essential no-slip boundary condition may be prescribed on
\begin_inset Formula $\Gamma^{bs}$
\end_inset
by setting
\begin_inset Formula $\mathbf{w}=\mathbf{0}$
\end_inset
.
A symmetry plane may be prescribed with the essential boundary condition
\begin_inset Formula $u_{n}\equiv\mathbf{u}\cdot\mathbf{n}=0$
\end_inset
and the natural boundary conditions
\begin_inset Formula $\mathbf{t}^{\tau}=\mathbf{0}$
\end_inset
and
\begin_inset Formula $w_{n}=0$
\end_inset
.
\end_layout
\begin_layout Standard
In this formulation,
the mixture traction is defined as
\begin_inset Formula $\mathbf{t}=-p\mathbf{n}+\mathbf{t}^{e}+\varphi^{f}\mathbf{t}^{\tau}$
\end_inset
,
which may also be written as
\begin_inset Formula $\mathbf{t}=-p\mathbf{n}+\mathbf{t}^{\sigma}+\mathbf{t}^{\tau}$
\end_inset
.
Because of the way we chose to split the internal and external virtual work in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-int-virtual-work"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-ext-virtual-work"
nolink "false"
\end_inset
,
\begin_inset Formula $\mathbf{t}$
\end_inset
is not a natural boundary condition in this formulation.
In this expression for
\begin_inset Formula $\mathbf{t}$
\end_inset
,
\begin_inset Formula $\mathbf{t}^{\sigma}$
\end_inset
,
and
\begin_inset Formula $\mathbf{t}^{\tau}$
\end_inset
may be prescribed as natural boundary conditions,
whereas
\begin_inset Formula $p$
\end_inset
may be prescribed as an essential boundary condition on
\begin_inset Formula $e^{f}$
\end_inset
,
using
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-pressure-state"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
However,
there are two general scenarios where
\begin_inset Formula $\mathbf{t}$
\end_inset
needs to be prescribed on a region of the boundary
\begin_inset Formula $\partial\Omega^{b}$
\end_inset
with incomplete prior knowledge of
\begin_inset Formula $p$
\end_inset
,
\begin_inset Formula $\mathbf{t}^{\sigma}$
\end_inset
,
or
\begin_inset Formula $\mathbf{t}^{\tau}$
\end_inset
:
(1) When a BFSI boundary
\begin_inset Formula $\Gamma^{b}$
\end_inset
represents a free surface (such as the fluid surface in channel flow),
the mixture traction boundary condition requires that
\begin_inset Formula $\mathbf{t}=\mathbf{0}$
\end_inset
,
in which case it is necessary to explicitly enforce
\begin_inset Formula $-p\mathbf{n}+\mathbf{t}^{\sigma}+\mathbf{t}^{\tau}=\mathbf{0}$
\end_inset
as a constraint equation on that boundary,
to impart the free surface
\begin_inset Formula $\Gamma^{b}$
\end_inset
its natural shape.
(2) At a biphasic-solid interface
\begin_inset Formula $\Gamma^{bs}$
\end_inset
,
\begin_inset Formula $\mathbf{t}$
\end_inset
must balance the traction acting on the adjoining solid domain.
Since
\begin_inset Formula $\mathbf{u}$
\end_inset
is continuous across
\begin_inset Formula $\Gamma^{bs}$
\end_inset
due to shared nodes,
the solid natural boundary condition
\begin_inset Formula $\mathbf{t}^{\sigma}$
\end_inset
of
\begin_inset Formula $\mathbf{t}$
\end_inset
is already accounted for by the deformation,
so that it is only necessary to prescribe the portion
\begin_inset Formula $-p\mathbf{n}+\mathbf{t}^{\tau}$
\end_inset
of
\begin_inset Formula $\mathbf{t}$
\end_inset
on the solid domain,
thus
\begin_inset Formula $-p\mathbf{n}+\mathbf{t}^{\tau}+\mathbf{t}^{s}=\mathbf{0}$
\end_inset
where
\begin_inset Formula $\mathbf{t}^{s}$
\end_inset
is the (equal and opposite) traction acting on the solid domain.
In both cases,
the form of this traction boundary condition is the same,
with
\begin_inset Formula $\mathbf{t}^{e}$
\end_inset
and
\begin_inset Formula $\mathbf{t}^{s}$
\end_inset
representing the tractions acting on
\begin_inset Formula $\Gamma^{b}$
\end_inset
and
\begin_inset Formula $\Gamma^{bs}$
\end_inset
,
respectively.
\end_layout
\begin_layout Standard
For both of these cases,
the resulting virtual work on the free surface
\begin_inset Formula $\Gamma^{b}$
\end_inset
or the interface
\begin_inset Formula $\Gamma^{bs}$
\end_inset
takes the form
\begin_inset Formula
\begin{equation}
\delta F=-\int_{\Gamma}\delta\mathbf{v}^{s}\cdot\left(-p\mathbf{n}+\mathbf{t}^{\tau}\right)\,da\,,\label{eq:bfsi-traction-virtual-work}
\end{equation}
\end_inset
where the elemental area
\begin_inset Formula $da$
\end_inset
on
\begin_inset Formula $\Gamma$
\end_inset
may be evaluated from the covariant basis vectors
\begin_inset Formula $\mathbf{g}_{\alpha}$
\end_inset
(
\begin_inset Formula $\alpha=1,2$
\end_inset
),
\begin_inset Formula
\begin{equation}
da=\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|\,d\eta^{1}d\eta^{2}\,,\label{eq:bfsi-diff-area}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{g}_{\alpha}=\frac{\partial\mathbf{x}\left(\eta^{1},\eta^{2}\right)}{\partial\eta^{\alpha}}\,,\label{eq:bfsi-covar-vectors}
\end{equation}
\end_inset
and
\begin_inset Formula $\mathbf{x}\left(\eta^{1},\eta^{2}\right)$
\end_inset
is the parametric representation of
\begin_inset Formula $\Gamma$
\end_inset
,
defined on the solid constituent.
The outward normal
\begin_inset Formula $\mathbf{n}$
\end_inset
to
\begin_inset Formula $\Omega^{b}$
\end_inset
on
\begin_inset Formula $\Gamma$
\end_inset
is evaluated from
\begin_inset Formula
\begin{equation}
\mathbf{n}=\frac{\mathbf{g}_{1}\times\mathbf{g}_{2}}{\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|}\,.\label{eq:bfsi-norm-vector}
\end{equation}
\end_inset
As a result,
the virtual work can be rewritten as
\begin_inset Formula
\begin{equation}
\delta F=-\int_{\Gamma}\delta\mathbf{v}^{s}\cdot\left(-p\mathbf{I}+\boldsymbol{\tau}\right)\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\,d\eta^{1}d\eta^{2}\,.\label{eq:bfsi-traction-final}
\end{equation}
\end_inset
In FEBio this boundary condition is called
\emph on
BFSI traction
\emph default
,
which the user must explicitly prescribe on free surfaces
\begin_inset Formula $\Gamma^{b}$
\end_inset
and deformable interfaces
\begin_inset Formula $\Gamma^{bs}$
\end_inset
.
The code automatically determines which of these two types of interfaces is being considered.
\end_layout
\begin_layout Subsection
BFSI Linearization
\begin_inset CommandInset label
LatexCommand label
name "sec:BFSI-Linearization"
\end_inset
\end_layout
\begin_layout Standard
Using the virtual work integral
\begin_inset Formula $\delta W$
\end_inset
such that
\begin_inset Formula
\begin{equation}
\delta W+D\delta W\left[\Delta\mathbf{u}\right]+D\delta W\left[\Delta\mathbf{w}\right]+D\delta W\left[\Delta J^{f}\right]\approx0\,,\label{eq:Virtual-Work-Expanded-BFSI}
\end{equation}
\end_inset
it may be expanded as
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\begin{aligned} & D\delta W_{int}\left[\Delta\mathbf{u}\right]+D\delta W_{int}\left[\Delta\mathbf{w}\right]+D\delta W_{int}\left[\Delta J^{f}\right]\\
& -D\delta W_{ext}\left[\Delta\mathbf{u}\right]-D\delta W_{ext}\left[\Delta\mathbf{w}\right]-D\delta W_{ext}\left[\Delta J^{f}\right]\\
& \approx\delta W_{ext}-\delta W_{int}\,.
\end{aligned}
\label{eq:linearized-work-split-bfsi}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
The linearizations of integrals are performed in the material frame of the solid domain of
\begin_inset Formula $\Omega^{b}$
\end_inset
,
allowing us to linearize
\begin_inset Formula $\delta W_{int}$
\end_inset
along increments
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
,
\begin_inset Formula $\Delta\mathbf{w}$
\end_inset
,
or
\begin_inset Formula $\Delta J^{f}$
\end_inset
by simply bringing the directional derivative operator inside the integrals of Eqs.
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-int-virtual-work"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-ext-virtual-work"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
For notational convenience,
we let
\begin_inset Formula $J\equiv J^{s}$
\end_inset
and
\begin_inset Formula $\mathbf{F}\equiv\mathbf{F}^{s}$
\end_inset
.
Thus,
the conversion of the internal virtual work to the material frame of the solid produces
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W_{int}= & \int_{\Omega^{b}}\left(-\varphi_{r}^{s}\mathbf{T}_{d}+\mathbf{F}\cdot\boldsymbol{\sigma}^{e}\cdot\mathbf{F}^{T}\right):\Grad\delta\mathbf{v}\cdot\mathbf{F}^{-1}dV\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot\varphi_{r}^{s}\left(\frac{\varphi^{s}}{\varphi^{f}}\boldsymbol{\tau}\cdot\mathbf{F}^{-T}\cdot\Grad\left(\frac{\varphi^{f}}{\varphi^{s}}\right)-\rho_{T}^{f}\mathbf{a}^{f}+\rho_{T}^{s}\dot{\mathbf{v}}^{s}\right)dV\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot-J^{2}\mathbf{F}^{-T}\cdot\mathbf{K}^{-1}\cdot\mathbf{F}^{-1}\cdot\mathbf{w}dV\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot J\left(\rho_{T}^{f}\mathbf{a}^{f}+\mathbf{F}^{-T}\cdot\Grad p\right)dV\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot J\left(-\frac{1}{\varphi^{f}}\boldsymbol{\tau}\cdot\mathbf{F}^{-T}\cdot\Grad\varphi^{f}+J\mathbf{F}^{-T}\cdot\mathbf{K}^{-1}\cdot\mathbf{F}^{-1}\cdot\mathbf{w}\right)dV\\
& +\int_{\Omega^{b}}J\boldsymbol{\tau}:\Grad\delta\mathbf{w}\cdot\mathbf{F}^{-1}dV\\
& +\int_{\Omega^{b}}J\Grad\delta J^{f}\cdot\mathbf{F}^{-1}\cdot\mathbf{w}+\delta J^{f}\left(J\frac{\varphi^{f}}{J^{f}}\frac{D^{f}J^{f}}{Dt}-\dot{J}^{s}\right)dV\thinspace,
\end{aligned}
\label{eq:int-virtual-work-material-BFSI}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{S}=J\,\mathbf{F}^{-1}\cdot\boldsymbol{\sigma}^{e}\cdot\mathbf{F}^{-T}$
\end_inset
is the second Piola-Kirchhoff stress for the solid constituent of the mixture,
\begin_inset Formula $\mathbf{W}=J\mathbf{F}^{-1}\cdot\mathbf{w}$
\end_inset
is the Piola transformation of
\begin_inset Formula $\mathbf{w}$
\end_inset
,
and
\begin_inset Formula $dV=J^{-1}dv$
\end_inset
is an elemental volume of
\begin_inset Formula $\Omega^{f}$
\end_inset
in its material frame
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
.
In addition,
\begin_inset Formula $\mathbf{K}^{-1}=J^{-1}\mathbf{F}^{T}\cdot\mathbf{k}^{-1}\cdot\mathbf{F}$
\end_inset
is the inverse of the permeability tensor in the material frame.
Note that in the material frame,
the fluid acceleration
\begin_inset Formula $\mathbf{a}^{f}$
\end_inset
is
\begin_inset Formula
\begin{equation}
\mathbf{a}^{f}=\frac{1}{\varphi^{f}}\left(\dot{\mathbf{w}}+\varphi^{f}\dot{\mathbf{v}}^{s}-\frac{\varphi^{s}}{\varphi^{f}}\frac{\dot{J}}{J}\mathbf{w}+\frac{1}{J}\left(\frac{1}{\varphi^{f}}\Grad\mathbf{w}+\Grad\mathbf{v}^{s}-\frac{1}{\varphi^{f^{2}}}\mathbf{w}\otimes\Grad\varphi^{f}\right)\cdot\mathbf{W}\right)\,.\label{eq:material-fluid-accel-BFSI}
\end{equation}
\end_inset
The linearization of
\begin_inset Formula $\delta W_{int}$
\end_inset
is then performed along an increment
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
,
and the integral is reverted back to the spatial frame,
yielding for the displacement equations
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{int}\left[\Delta\mathbf{u}\right]= & \int_{\Omega^{b}}\alpha_{f}\left(\grad\Delta\mathbf{u}\cdot\boldsymbol{\sigma}^{e}:\grad\delta\mathbf{v}+\grad\delta\mathbf{v}:\boldsymbol{\mathcal{C}}:\grad\Delta\mathbf{u}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}\varphi^{s}\boldsymbol{\tau}:\grad\delta\mathbf{v}\cdot\left(\grad\Delta\mathbf{u}+\frac{\varphi^{s}}{\varphi^{f}}\divg\Delta\mathbf{u}\mathbf{I}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}\varphi^{s}\grad\delta\mathbf{v}:\boldsymbol{\mathcal{C}}^{\tau}:\left(-\frac{\varphi^{s}}{\varphi^{f^{2}}}\left(\divg\Delta\mathbf{u}\right)\mathbf{D}^{w}+\mathbf{M}\cdot\grad\Delta\mathbf{u}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}\varphi^{s}\grad\delta\mathbf{v}:\frac{1}{\varphi^{f^{2}}}\boldsymbol{\mathcal{C}}^{\tau}:2\frac{\varphi^{s}}{\varphi^{f}}\left(\divg\Delta\mathbf{u}\right)\mathbf{w}\otimes\grad\varphi^{f}dv\\
& +\int_{\Omega^{b}}\alpha_{f}\varphi^{s}\grad\delta\mathbf{v}:\frac{1}{\varphi^{f^{2}}}\boldsymbol{\mathcal{C}}^{\tau}:\mathbf{w}\otimes\left(-\grad^{T}\Delta\mathbf{u}\cdot\grad\varphi^{f}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}\varphi^{s}\grad\delta\mathbf{v}:\frac{1}{\varphi^{f^{2}}}\boldsymbol{\mathcal{C}}^{\tau}:\mathbf{w}\otimes\left(-\left(\divg\Delta\mathbf{u}\right)\grad\varphi^{f}+\varphi^{s}\grad\left(\divg\Delta\mathbf{u}\right)\right)dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot-\alpha_{f}\frac{\varphi^{s^{2}}}{\varphi^{f}}\boldsymbol{\tau}\cdot\left(2\frac{\varphi^{s}}{\varphi^{f}}\divg\Delta\mathbf{u}+\grad^{T}\Delta\mathbf{u}\right)\cdot\grad\frac{\varphi^{f}}{\varphi^{s}}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot\alpha_{f}\frac{\varphi^{s^{2}}}{\varphi^{f}}\boldsymbol{\tau}\cdot\frac{1}{\varphi^{s}}\grad\left(\divg\Delta\mathbf{u}\right)dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot\alpha_{f}\frac{\varphi^{s^{2}}}{\varphi^{f}}\boldsymbol{\mathcal{C}}^{\tau}:\left(-\frac{\varphi^{s}}{\varphi^{f^{2}}}\left(\divg\Delta\mathbf{u}\right)\mathbf{D}^{w}+\mathbf{M}\cdot\grad\Delta\mathbf{u}\right)\cdot\grad\frac{\varphi^{f}}{\varphi^{s}}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot\alpha_{f}\frac{\varphi^{s^{2}}}{\varphi^{f^{3}}}\boldsymbol{\mathcal{C}}^{\tau}:2\frac{\varphi^{s}}{\varphi^{f}}\left(\divg\Delta\mathbf{u}\right)\mathbf{w}\otimes\grad\varphi^{f}\cdot\grad\frac{\varphi^{f}}{\varphi^{s}}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot-\alpha_{f}\frac{\varphi^{s^{2}}}{\varphi^{f^{3}}}\boldsymbol{\mathcal{C}}^{\tau}:\mathbf{w}\otimes\left(-\grad^{T}\Delta\mathbf{u}\cdot\grad\varphi^{f}\right)\cdot\grad\frac{\varphi^{f}}{\varphi^{s}}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot-\alpha_{f}\frac{\varphi^{s^{2}}}{\varphi^{f^{3}}}\boldsymbol{\mathcal{C}}^{\tau}:\mathbf{w}\otimes\left(-\divg\Delta\mathbf{u}\grad\varphi^{f}+\varphi^{s}\grad\left(\divg\Delta\mathbf{u}\right)\right)\cdot\grad\frac{\varphi^{f}}{\varphi^{s}}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot-\alpha_{f}\varphi^{s}\frac{\rho_{T}^{f}}{\varphi^{f}}\left(\varphi^{s}\left(\divg\Delta\mathbf{u}\right)\dot{\mathbf{v}}^{s}+\varphi^{f}\frac{\alpha_{m}}{\alpha_{f}\beta\Delta t^{2}}\Delta\mathbf{u}\right)dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot\alpha_{f}\varphi^{s}\frac{\rho_{T}^{f}}{\varphi^{f}}\left(\frac{\varphi^{s}}{\varphi^{f}}\left[\left(\left(-\frac{1}{\varphi^{f}}\right)\frac{\dot{J}}{J}+\frac{\gamma}{\beta\Delta t}\right)\divg\Delta\mathbf{u}-\grad^{T}\Delta\mathbf{u}:\mathbf{L}^{s}\right]\mathbf{w}\right)dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot-\alpha_{f}\varphi^{s}\frac{\rho_{T}^{f}}{\varphi^{f}}\left(-\frac{\varphi^{s}}{\varphi^{f^{2}}}\divg\Delta\mathbf{u}\grad\mathbf{w}+\frac{\gamma}{\beta\Delta t}\grad\Delta\mathbf{u}\right)\cdot\mathbf{w}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot-\alpha_{f}\varphi^{s}\frac{\rho_{T}^{f}}{\varphi^{f^{3}}}\left[\left(\left(\varphi^{s}+1\right)\frac{1}{\varphi^{f}}\grad\varphi^{f}\divg\Delta\mathbf{u}-\varphi^{s}\grad\left(\divg\Delta\mathbf{u}\right)\right)\cdot\mathbf{w}\right]\mathbf{w}dv
\end{aligned}
\label{eq:Wint-lin-u-u-BFSI}
\end{equation}
\end_inset
\begin_inset Formula
\[
\begin{aligned} & +\int_{\Omega^{b}}\delta\mathbf{v}\cdot\alpha_{f}\varphi^{s}\frac{\rho_{T}^{f}}{\varphi^{f}}\left(\mathbf{L}^{f}\cdot\grad\Delta\mathbf{u}\cdot\mathbf{w}+\varphi^{s}\left(\divg\Delta\mathbf{u}\right)\mathbf{a}^{f}\right)dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot\alpha_{f}\rho^{s}\frac{\alpha_{m}}{\alpha_{f}\beta\Delta t^{2}}\Delta\mathbf{u}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot\alpha_{f}\left(-2\left(\divg\Delta\mathbf{u}\right)\mathbf{k}^{-1}+\grad^{T}\Delta\mathbf{u}\cdot\mathbf{k}^{-1}\right)\cdot\mathbf{w}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot\alpha_{f}\left(\mathbf{k}^{-1}\cdot\grad\Delta\mathbf{u}+\left(\mathbf{k}^{-1}\underbar{\otimes}\mathbf{k}^{-1}\right):\mathsf{k}:\grad\Delta\mathbf{u}\right)\cdot\mathbf{w}dv\thinspace,
\end{aligned}
\]
\end_inset
for the fluid flux equations
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{int}\left[\Delta\mathbf{u}\right]= & \int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\frac{\rho_{T}^{f}}{\varphi^{f}}\left(-\frac{\varphi^{s}}{\varphi^{f}}\left[\left(-\frac{1}{\varphi^{f}}\frac{\dot{J}}{J}+\frac{\gamma}{\beta\Delta t}\right)\divg\Delta\mathbf{u}-\grad^{T}\Delta\mathbf{u}:\mathbf{L}^{s}\right]\mathbf{w}\right)dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\frac{\rho_{T}^{f}}{\varphi^{f}}\left(\varphi^{s}\left(\divg\Delta\mathbf{u}\right)\dot{\mathbf{v}}^{s}+\varphi^{f}\frac{\alpha_{m}}{\alpha_{f}\beta\Delta t^{2}}\Delta\mathbf{u}\right)dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\frac{\rho_{T}^{f}}{\varphi^{f}}\left(-\frac{\varphi^{s}}{\varphi^{f^{2}}}\divg\Delta\mathbf{u}\grad\mathbf{w}+\frac{\gamma}{\beta\Delta t}\grad\Delta\mathbf{u}\right)\cdot\mathbf{w}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\frac{\rho_{T}^{f}}{\varphi^{f}}\frac{1}{\varphi^{f^{2}}}\left[\left(\left(\varphi^{s}+1\right)\frac{1}{\varphi^{f}}\grad\varphi^{f}\left(\divg\Delta\mathbf{u}\right)-\varphi^{s}\grad\left(\divg\Delta\mathbf{u}\right)\right)\cdot\mathbf{w}\right]\mathbf{w}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot-\alpha_{f}\frac{\rho_{T}^{f}}{\varphi^{f}}\mathbf{L}^{f}\cdot\grad\Delta\mathbf{u}\cdot\mathbf{w}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\left(1-\frac{\varphi^{s}}{\varphi^{f}}\right)\left(\divg\Delta\mathbf{u}\right)\rho_{T}^{f}\mathbf{a}^{f}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\left(\left(\divg\Delta\mathbf{u}\right)\mathbf{I}-\grad^{T}\Delta\mathbf{u}\right)\cdot\grad pdv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\left(2\left(\divg\Delta\mathbf{u}\right)\mathbf{k}^{-1}-\grad^{T}\Delta\mathbf{u}\cdot\mathbf{k}^{-1}\right)\cdot\mathbf{w}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot-\alpha_{f}\left(\mathbf{k}^{-1}\cdot\grad\Delta\mathbf{u}+\left(\mathbf{k}^{-1}\underbar{\otimes}\mathbf{k}^{-1}\right):\mathsf{k}:\grad\Delta\mathbf{u}\right)\cdot\mathbf{w}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\frac{1}{\varphi^{f}}\boldsymbol{\tau}\cdot\left(2\frac{\varphi^{s}}{\varphi^{f}}\left(\divg\Delta\mathbf{u}\right)\mathbf{I}+\grad^{T}\Delta\mathbf{u}\right)\cdot\grad\varphi^{f}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot-\alpha_{f}\frac{\varphi^{s}}{\varphi^{f}}\boldsymbol{\tau}\cdot\grad\left(\divg\Delta\mathbf{u}\right)dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot-\alpha_{f}\frac{1}{\varphi^{f}}\boldsymbol{\mathcal{C}}^{\tau}:\left(-\frac{\varphi^{s}}{\varphi^{f^{2}}}\left(\divg\Delta\mathbf{u}\right)\mathbf{D}^{w}+\mathbf{M}\cdot\grad\Delta\mathbf{u}\right)\cdot\grad\varphi^{f}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot-\alpha_{f}\frac{1}{\varphi^{f^{3}}}\boldsymbol{\mathcal{C}}^{\tau}:2\frac{\varphi^{s}}{\varphi^{f}}\left(\divg\Delta\mathbf{u}\right)\mathbf{w}\otimes\grad\varphi^{f}\cdot\grad\varphi^{f}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\frac{1}{\varphi^{f^{3}}}\boldsymbol{\mathcal{C}}^{\tau}:\mathbf{w}\otimes\left(-\grad^{T}\Delta\mathbf{u}\cdot\grad\varphi^{f}\right)\cdot\grad\varphi^{f}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\frac{1}{\varphi^{f^{3}}}\boldsymbol{\mathcal{C}}^{\tau}:\mathbf{w}\otimes\left(-\left(\divg\Delta\mathbf{u}\right)\grad\varphi^{f}+\varphi^{s}\grad\left(\divg\Delta\mathbf{u}\right)\right)\cdot\grad\varphi^{f}dv\\
& +\int_{\Omega^{b}}\alpha_{f}\boldsymbol{\tau}:\grad\delta\mathbf{w}\cdot\left(\left(1-\frac{\varphi^{s}}{\varphi^{f}}\right)\left(\divg\Delta\mathbf{u}\right)\mathbf{I}-\grad\Delta\mathbf{u}\right)dv
\end{aligned}
\label{eq:Wint-lin-w-u-BFSI}
\end{equation}
\end_inset
\begin_inset Formula
\[
\begin{aligned} & +\int_{\Omega^{b}}\alpha_{f}\grad\delta\mathbf{w}:\boldsymbol{\mathcal{C}}^{\tau}:\left(-\frac{\varphi^{s}}{\varphi^{f^{2}}}\left(\divg\Delta\mathbf{u}\right)\mathbf{D}^{w}+\mathbf{M}\cdot\grad\Delta\mathbf{u}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}\grad\delta\mathbf{w}:\boldsymbol{\mathcal{C}}^{\tau}:2\frac{\varphi^{s}}{\varphi^{f^{3}}}\left(\divg\Delta\mathbf{u}\right)\mathbf{w}\otimes\grad\varphi^{f}dv\\
& +\int_{\Omega^{b}}-\alpha_{f}\grad\delta\mathbf{w}:\boldsymbol{\mathcal{C}}^{\tau}:\frac{1}{\varphi^{f^{2}}}\mathbf{w}\otimes\left(-\grad^{T}\Delta\mathbf{u}\cdot\grad\varphi^{f}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}\grad\delta\mathbf{w}:\boldsymbol{\mathcal{C}}^{\tau}:\frac{1}{\varphi^{f^{2}}}\mathbf{w}\otimes\left(-\left(\divg\Delta\mathbf{u}\right)\grad\varphi^{f}+\varphi^{s}\grad\left(\divg\Delta\mathbf{u}\right)\right)dv\thinspace,
\end{aligned}
\]
\end_inset
and for the fluid dilatation equations
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{int}\left[\Delta\mathbf{u}\right]= & \int_{\Omega^{b}}\alpha_{f}\grad\delta J^{f}\cdot\left(\divg\Delta\mathbf{u}\mathbf{I}-\grad\Delta\mathbf{u}\right)\cdot\mathbf{w}dv\\
& +\int_{\Omega^{b}}\delta J^{f}\alpha_{f}\frac{1}{J^{f}}\left(\dot{J}^{f}\divg\Delta\mathbf{u}+\grad J^{f}\cdot\left(\left(\divg\Delta\mathbf{u}\right)\mathbf{I}-\grad\Delta\mathbf{u}\right)\cdot\mathbf{w}\right)dv\\
& +\int_{\Omega^{b}}-\delta J^{f}\alpha_{f}\left(\divg\mathbf{v}^{s}+\frac{\gamma}{\beta\Delta t}\right)\divg\Delta\mathbf{u}+\grad^{T}\Delta\mathbf{u}:\mathbf{L}^{s}dv\thinspace,
\end{aligned}
\label{eq:Wint-lin-J-u-BFSI}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{M}=\frac{\gamma}{\beta\Delta t}\mathbf{I}-\mathbf{L}^{s}$
\end_inset
,
and
\begin_inset Formula $\boldsymbol{\mathcal{C}}$
\end_inset
is the fourth-order spatial elasticity tensor associated with
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
.
As done in the CFD formulation (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:CFD-Discretization-Linearization"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
)
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian18"
literal "true"
\end_inset
,
we have introduced the fourth-order tensor
\begin_inset Formula $\boldsymbol{\mathcal{C}}^{\tau}$
\end_inset
representing the tangent of the viscous stress with respect to the rate of deformation,
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{C}}^{\tau}=\frac{\partial\boldsymbol{\tau}}{\partial\mathbf{D}^{f}}\,,\label{eq:visc-stress-tan-D-1}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{D}^{f}$
\end_inset
is the fluid rate of deformation tensor (the symmetric part of
\begin_inset Formula $\mathbf{L}^{f}$
\end_inset
).
The tensors
\begin_inset Formula $\boldsymbol{\mathcal{C}}_{d}$
\end_inset
and
\begin_inset Formula $\boldsymbol{\mathcal{C}}$
\end_inset
depend on the choice of constitutive relations for the fluid and solid constituents of
\begin_inset Formula $\Omega^{f}$
\end_inset
,
respectively.
In addition,
\begin_inset Formula $\mathsf{k}$
\end_inset
is the spatial fourth order permeability tensor with respect to right Cauchy-Green tensor
\begin_inset Formula $\mathbf{C}$
\end_inset
.
The linearized equations include the generalized-
\begin_inset Formula $\alpha$
\end_inset
parameters because the virtual work is evaluated at the intermediate time step,
while the increment itself (
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
in this case) is at the current time step
\begin_inset CommandInset citation
LatexCommand citep
key "Jansen00"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
Following the same procedure,
the linearizations of
\begin_inset Formula $\delta W_{int}$
\end_inset
along an increment
\begin_inset Formula $\Delta\mathbf{w}$
\end_inset
is given by
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{int}\left[\Delta\mathbf{w}\right]= & \int_{\Omega^{b}}-\alpha_{f}\frac{\varphi^{s}}{\varphi^{f}}\grad\delta\mathbf{v}:\boldsymbol{\mathcal{C}}^{\tau}:\left(\grad\Delta\mathbf{w}-\frac{1}{\varphi^{f}}\Delta\mathbf{w}\otimes\grad\varphi^{f}\right)dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot-\alpha_{f}\varphi^{s}\frac{\rho_{T}^{f}}{\varphi^{f}}\left(\left(\frac{\alpha_{m}}{\gamma\alpha_{f}\Delta t}-\frac{\varphi^{s}}{\varphi^{f}}\frac{\dot{J}}{J}-\frac{1}{\varphi^{f^{2}}}\left(\grad\varphi^{f}\cdot\mathbf{w}\right)\right)\mathbf{I}+\mathbf{L}^{f}\right)\cdot\Delta\mathbf{w}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot-\alpha_{f}\varphi^{s}\frac{\rho_{T}^{f}}{\varphi^{f^{2}}}\grad\Delta\mathbf{w}\cdot\mathbf{w}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot\alpha_{f}\frac{\left(\varphi^{s}\right)^{2}}{\left(\varphi^{f}\right)^{2}}\boldsymbol{\mathcal{C}}^{\tau}:\left(\grad\Delta\mathbf{w}-\frac{1}{\varphi^{f}}\Delta\mathbf{w}\otimes\grad\varphi^{f}\right)\cdot\grad\left(\frac{\varphi^{f}}{\varphi^{s}}\right)dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot-\alpha_{f}\mathbf{k}^{-1}\cdot\Delta\mathbf{w}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\frac{\rho_{T}^{f}}{\varphi^{f}}\left(\left(\frac{\alpha_{m}}{\gamma\alpha_{f}\Delta t}-\frac{\varphi^{s}}{\varphi^{f}}\frac{\dot{J}}{J}-\frac{1}{\varphi^{f^{2}}}\left(\grad\varphi^{f}\cdot\mathbf{w}\right)\right)\mathbf{I}+\mathbf{L}^{f}\right)\cdot\Delta\mathbf{w}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\frac{\rho_{T}^{f}}{\varphi^{f^{2}}}\grad\Delta\mathbf{w}\cdot\mathbf{w}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\mathbf{k}^{-1}\cdot\Delta\mathbf{w}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\frac{1}{\varphi^{f^{2}}}\boldsymbol{\mathcal{C}}^{\tau}:\left(\frac{1}{\varphi^{f}}\Delta\mathbf{w}\otimes\grad\varphi^{f}-\grad\Delta\mathbf{w}\right)\cdot\grad\varphi^{f}dv\\
& +\int_{\Omega^{b}}\alpha_{f}\frac{1}{\varphi^{f}}\grad\delta\mathbf{w}:\boldsymbol{\mathcal{C}}^{\tau}:\left(\grad\Delta\mathbf{w}-\frac{1}{\varphi^{f}}\Delta\mathbf{w}\otimes\grad\varphi^{f}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}\grad\delta J^{f}\cdot\Delta\mathbf{w}+\delta J^{f}\alpha_{f}\frac{1}{J^{f}}\grad J^{f}\cdot\Delta\mathbf{w}dv\thinspace,
\end{aligned}
\label{eq:Wint-lin-w-BFSI}
\end{equation}
\end_inset
whereas the linearizations of
\begin_inset Formula $\delta W_{int}$
\end_inset
along an increment
\begin_inset Formula $\Delta J^{f}$
\end_inset
is
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{int}\left[\Delta J^{f}\right]= & \int_{\Omega^{b}}-\alpha_{f}\varphi^{s}\boldsymbol{\tau}_{J}^{\prime}:\grad\delta\mathbf{v}\Delta J^{f}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot\alpha_{f}\varphi^{s}\left(\frac{\varphi^{s}}{\varphi^{f}}\boldsymbol{\tau}_{J}^{\prime}\cdot\grad\frac{\varphi^{f}}{\varphi^{s}}+\frac{\rho_{T}^{f}}{J^{f}}\mathbf{a}^{f}\right)\Delta J^{f}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\left(p^{\prime\prime}\grad J^{f}\Delta J^{f}+p^{\prime}\grad\Delta J^{f}\right)dv\\
& +\int_{\Omega^{b}}\delta\mathbf{w}\cdot-\alpha_{f}\left(\frac{\rho_{T}^{f}}{J^{f}}\mathbf{a}^{f}\Delta J^{f}+\frac{1}{\varphi^{f}}\boldsymbol{\tau}_{J}^{\prime}\Delta J^{f}\cdot\grad\varphi^{f}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}\boldsymbol{\tau}_{J}^{\prime}:\grad\delta\mathbf{w}\Delta J^{f}dv\\
& +\int_{\Omega^{b}}\delta J^{f}\alpha_{f}\frac{1}{J^{f}}\left(\varphi^{f}\frac{\alpha_{m}}{\gamma\alpha_{f}\Delta t}-\frac{1}{J^{f}}\left(\varphi^{f}\dot{J}^{f}+\grad J^{f}\cdot\mathbf{w}\right)\right)\Delta J^{f}dv\\
& +\int_{\Omega^{b}}\delta J^{f}\alpha_{f}\frac{1}{J^{f}}\grad\Delta J^{f}\cdot\mathbf{w}dv\thinspace.
\end{aligned}
\label{eq:Wint-lin-J-BFSI}
\end{equation}
\end_inset
Here,
\begin_inset Formula $p^{\prime}$
\end_inset
and
\begin_inset Formula $p^{\prime\prime}$
\end_inset
respectively represent the first and second derivatives of
\begin_inset Formula $p\left(J^{f}\right)$
\end_inset
.
We have also defined
\begin_inset Formula $\boldsymbol{\tau}_{J}^{\prime}$
\end_inset
as the tangent of the viscous stress
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
with respect to
\begin_inset Formula $J^{f}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\boldsymbol{\tau}_{J}^{\prime}=\frac{\partial\boldsymbol{\tau}}{\partial J^{f}}\,.\label{eq:visc-stress-tan-J-1}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
For the external work,
when
\begin_inset Formula $\mathbf{t}^{\sigma}$
\end_inset
,
\begin_inset Formula $\mathbf{t}^{\tau}$
\end_inset
,
all
\begin_inset Formula $\mathbf{b}$
\end_inset
and
\begin_inset Formula $w_{n}$
\end_inset
are prescribed,
the linearizations simplify to
\begin_inset Formula
\begin{equation}
D\delta W_{ext}\left[\Delta\mathbf{u}\right]=\int_{\Omega^{b}}\delta\mathbf{w}\cdot\alpha_{f}\divg\Delta\mathbf{u}\rho_{T}^{f}\mathbf{b}^{f}dv\,,\label{eq:Wext-lin-u-BFSI}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
D\delta W_{ext}\left[\Delta\mathbf{w}\right]=0\,,\label{eq:Wext-lin-w-BFSI}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{ext}\left[\Delta J^{f}\right]= & \int_{\Omega^{b}}\delta\mathbf{w}\cdot-\alpha_{f}\frac{\rho_{T}^{f}}{J^{f}}\mathbf{b}^{f}\Delta J^{f}dv\\
& +\int_{\Omega^{b}}\delta\mathbf{v}\cdot\alpha_{f}\varphi^{s}\frac{\rho_{T}^{f}}{J^{f}}\mathbf{b}^{f}\Delta J^{f}dv\,.
\end{aligned}
\label{eq:Wext-lin-J-BFSI}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
As discussed in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:CFD-Mass-Momentum"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
we define the fluid dilatation
\begin_inset Formula $e^{f}=J^{f}-1$
\end_inset
as an alternative essential variable,
since initial and boundary conditions
\begin_inset Formula $e^{f}=0$
\end_inset
are more convenient to handle in a numerical scheme than
\begin_inset Formula $J^{f}=1$
\end_inset
.
It follows that
\begin_inset Formula $\grad J^{f}=\grad e^{f}$
\end_inset
and
\begin_inset Formula $\dot{J}^{f}=\dot{e}^{f}$
\end_inset
.
Therefore the changes to the above equations are minimal,
simply requiring the substitution
\begin_inset Formula $J^{f}=1+e^{f}$
\end_inset
and
\begin_inset Formula $\Delta J^{f}=\Delta e^{f}$
\end_inset
.
\end_layout
\begin_layout Subsection
BFSI Spatial Discretization
\begin_inset CommandInset label
LatexCommand label
name "sec:BFSI-Spatial-Discretization"
\end_inset
\end_layout
\begin_layout Standard
The degrees of freedom
\begin_inset Formula $\mathbf{u}\left(\mathbf{x},t\right)$
\end_inset
,
\begin_inset Formula $\mathbf{w}\left(\mathbf{x},t\right)$
\end_inset
,
\begin_inset Formula $J^{f}\left(\mathbf{x},t\right)$
\end_inset
are spatially interpolated over the domain
\begin_inset Formula $\Omega^{f}$
\end_inset
using the same interpolation functions
\begin_inset Formula $N_{a}\left(\mathbf{x}\right)$
\end_inset
,
with
\begin_inset Formula $a=1$
\end_inset
to
\begin_inset Formula $n$
\end_inset
,
where
\begin_inset Formula $n$
\end_inset
is the number of nodes in an element,
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{u}\left(\mathbf{x},t\right) & =\sum_{a=1}^{n}N_{a}\left(\mathbf{x}\right)\mathbf{u}_{a}\,,\\
\mathbf{w}\left(\mathbf{x},t\right) & =\sum_{a=1}^{n}N_{a}\left(\mathbf{x}\right)\mathbf{w}_{a}\,,\\
J^{f}\left(\mathbf{x},t\right) & =\sum_{a=1}^{n}N_{a}\left(\mathbf{x}\right)J_{a}^{f}\,.
\end{aligned}
\label{eq:spatial-interpol-BFSI}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\mathbf{u}_{a}$
\end_inset
,
\begin_inset Formula $\mathbf{w}_{a}$
\end_inset
,
and
\begin_inset Formula $J_{a}^{f}$
\end_inset
are the nodal values of the degrees of freedom that evolve over time.
These relations may be used to evaluate
\begin_inset Formula $\mathbf{L}^{s}$
\end_inset
,
\begin_inset Formula $\mathbf{L}^{w}$
\end_inset
,
\begin_inset Formula $\divg\mathbf{w}$
\end_inset
,
\begin_inset Formula $\dot{\mathbf{w}}$
\end_inset
,
\begin_inset Formula $\grad J^{f}$
\end_inset
,
\begin_inset Formula $\dot{J^{f}}$
\end_inset
,
etc.
Similar interpolations are used for virtual increments
\begin_inset Formula $\delta\mathbf{v}$
\end_inset
,
\begin_inset Formula $\delta\mathbf{w}$
\end_inset
and
\begin_inset Formula $\delta J^{f}$
\end_inset
,
as well as real increments
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
,
\begin_inset Formula $\Delta\mathbf{w}$
\end_inset
and
\begin_inset Formula $\Delta J^{f}$
\end_inset
.
In practice,
interpolations
\begin_inset Formula $N_{a}$
\end_inset
are performed in the parametric space of each finite element,
which is a material frame.
\end_layout
\begin_layout Standard
Now,
the discretized form of
\begin_inset Formula $\delta W_{int}$
\end_inset
,
using eq.
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-int-virtual-work"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
may be written as
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W_{int} & =\sum_{a}\delta\mathbf{v}_{a}\cdot\mathbf{f}_{a}^{u}\\
& +\sum_{a}\delta\mathbf{w}_{a}\cdot\mathbf{f}_{a}^{w}\\
& +\sum_{a}\delta J_{a}^{f}f_{a}^{J}\,,
\end{aligned}
\label{eq:Wint-discret-BFSI}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{f}_{a}^{u}= & \int_{\Omega^{b}}\left(-\varphi^{s}\boldsymbol{\tau}+\boldsymbol{\sigma}^{e}\right)\cdot\grad N_{a}dv\\
& +\int_{\Omega^{b}}N_{a}\left(\varphi^{s}\left(\frac{\varphi^{s}}{\varphi^{f}}\boldsymbol{\tau}\cdot\grad\frac{\varphi^{f}}{\varphi^{s}}-\rho_{T}^{f}\mathbf{a}^{f}+\rho_{T}^{s}\dot{\mathbf{v}}^{s}\right)-\mathbf{k}^{-1}\cdot\mathbf{w}\right)dv\,,\\
\mathbf{f}_{a}^{w}= & \int_{\Omega^{b}}\boldsymbol{\tau}\cdot\grad N_{a}+N_{a}\left(\rho_{T}^{f}\mathbf{a}^{f}+\grad p-\frac{1}{\varphi^{f}}\boldsymbol{\tau}\cdot\grad\varphi^{f}+\mathbf{k}^{-1}\cdot\mathbf{w}\right)dv\,,\\
f_{a}^{J}= & \int_{\Omega^{b}}\grad N_{a}\cdot\mathbf{w}+N_{a}\left(\frac{\varphi^{f}}{J^{f}}\frac{D^{f}J^{f}}{Dt}-\frac{\dot{J}^{s}}{J^{s}}\right)dv\,.
\end{aligned}
\label{eq:Wint-discret-parts-BFSI}
\end{equation}
\end_inset
The discretized form of
\begin_inset Formula $D\delta W_{int}\left[\Delta\mathbf{u}\right]$
\end_inset
becomes
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{int}\left[\Delta\mathbf{u}\right] & =\sum_{a}\delta\mathbf{v}_{a}\cdot\sum_{b}\mathbf{K}_{ab}^{uu}\cdot\Delta\mathbf{u}_{b}\\
& +\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\mathbf{K}_{ab}^{wu}\cdot\Delta\mathbf{u}_{b}\\
& +\sum_{a}\delta J_{a}^{f}\sum_{b}\mathbf{k}_{ab}^{Ju}\cdot\Delta\mathbf{u}_{b}\,,
\end{aligned}
\label{eq:Wint-lin-u-discret-FSI}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{K}_{ab}^{uu}= & \int_{\Omega^{b}}\alpha_{f}\left(\left(\boldsymbol{\sigma}^{e}:\grad N_{b}\otimes\grad N_{a}\right)\mathbf{I}+\grad N_{a}\cdot\boldsymbol{\mathcal{C}}\cdot\grad N_{b}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}\varphi^{s}\boldsymbol{\tau}\cdot\left(\frac{\varphi^{s}}{\varphi^{f}}\grad N_{a}\otimes\grad N_{b}+\grad N_{b}\otimes\grad N_{a}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}\varphi^{s}\grad N_{a}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\grad N_{b}\cdot\left(-\frac{\varphi^{s}}{\varphi^{f^{2}}}\mathbf{D}^{w}+\mathbf{M}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}\frac{\varphi^{s}}{\varphi^{f^{2}}}\grad N_{a}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\mathbf{w}\cdot\left(2\frac{\varphi^{s}}{\varphi^{f}}\grad\varphi^{f}\otimes\grad N_{b}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}\frac{\varphi^{s}}{\varphi^{f^{2}}}\grad N_{a}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\mathbf{w}\cdot\left(\grad N_{b}\otimes\grad\varphi^{f}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}\frac{\varphi^{s}}{\varphi^{f^{2}}}\grad N_{a}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\mathbf{w}\cdot\left(-\grad\varphi^{f}\otimes\grad N_{b}+\varphi^{s}\grad\grad N_{b}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}N_{a}\frac{\varphi^{s^{2}}}{\varphi^{f}}\boldsymbol{\tau}\cdot\left(2\frac{\varphi^{s}}{\varphi^{f}}\grad\frac{\varphi^{f}}{\varphi^{s}}\otimes\grad N_{b}+\grad N_{b}\otimes\grad\frac{\varphi^{f}}{\varphi^{s}}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\frac{\varphi^{s^{2}}}{\varphi^{f}}\boldsymbol{\tau}\cdot\frac{1}{\varphi^{s}}\grad\grad N_{b}dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\frac{\varphi^{s^{2}}}{\varphi^{f}}\grad\frac{\varphi^{f}}{\varphi^{s}}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\grad N_{b}\cdot\left(-\frac{\varphi^{s}}{\varphi^{f^{2}}}\mathbf{D}^{w}+\mathbf{M}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\frac{\varphi^{s^{2}}}{\varphi^{f^{3}}}\grad\frac{\varphi^{f}}{\varphi^{s}}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\mathbf{w}\cdot\left(2\frac{\varphi^{s}}{\varphi^{f}}\grad\varphi^{f}\otimes\grad N_{b}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\frac{\varphi^{s^{2}}}{\varphi^{f^{3}}}\grad\frac{\varphi^{f}}{\varphi^{s}}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\mathbf{w}\cdot\left(\grad N_{b}\otimes\grad\varphi^{f}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}N_{a}\frac{\varphi^{s^{2}}}{\varphi^{f^{3}}}\grad\frac{\varphi^{f}}{\varphi^{s}}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\mathbf{w}\cdot\left(-\grad\varphi^{f}\otimes\grad N_{b}+\varphi^{s}\grad\grad N_{b}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}\frac{\varphi^{s}}{\varphi^{f}}\rho_{T}^{f}N_{a}\left(\varphi^{s}\dot{\mathbf{v}}^{s}\otimes\grad N_{b}+\varphi^{f}\frac{\alpha_{m}}{\alpha_{f}\beta\Delta t^{2}}N_{b}\mathbf{I}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}\rho_{T}^{f}N_{a}\frac{\varphi^{s^{2}}}{\varphi^{f^{2}}}\left[\left(\left(-\frac{1}{\varphi^{f}}\right)\frac{\dot{J}}{J}+\frac{\gamma}{\beta\Delta t}\right)\mathbf{w}\otimes\grad N_{b}-\mathbf{w}\otimes\left(\mathbf{L}^{s^{T}}\cdot\grad N_{b}\right)\right]dv\\
& +\int_{\Omega^{b}}-\alpha_{f}N_{a}\varphi^{s}\frac{\rho_{T}^{f}}{\varphi^{f}}\left(-\frac{\varphi^{s}}{\varphi^{f^{2}}}\mathbf{L}^{w}\cdot\mathbf{w}\otimes\grad N_{b}+\frac{\gamma}{\beta\Delta t}\left(\grad N_{b}\cdot\mathbf{w}\right)\mathbf{I}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}N_{a}\rho_{T}^{f}\frac{\varphi^{s}}{\varphi^{f^{4}}}\left(\varphi^{s}+1\right)\left(\grad\varphi^{f}\cdot\mathbf{w}\right)\mathbf{w}\otimes\grad N_{b}dv
\end{aligned}
\label{eq:Wint-lin-uu-discret-BFSI}
\end{equation}
\end_inset
\begin_inset Formula
\[
\begin{aligned} & +\int_{\Omega^{b}}\alpha_{f}N_{a}\rho_{T}^{f}\frac{\varphi^{s^{2}}}{\varphi^{f^{3}}}\mathbf{w}\otimes\grad\grad^{T}N_{b}\cdot\mathbf{w}dv\\
& +\int_{\Omega^{b}}\alpha_{f}\frac{\varphi^{s}}{\varphi^{f}}\rho_{T}^{f}N_{a}\left(\mathbf{L}^{f}\left(\grad N_{b}\cdot\mathbf{w}\right)+\varphi^{s}\mathbf{a}^{f}\otimes\grad N_{b}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\frac{\alpha_{m}}{\alpha_{f}\beta\Delta t^{2}}\rho^{s}N_{b}\mathbf{I}dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\left(-2\left(\mathbf{k}^{-1}\cdot\mathbf{w}\right)\otimes\grad N_{b}+\grad N_{b}\otimes\left(\mathbf{k}^{-1}\cdot\mathbf{w}\right)\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\left(\left(\grad N_{b}\cdot\mathbf{w}\right)\mathbf{k}^{-1}+\left(\mathbf{k}^{-1}\underbar{\otimes}\mathbf{k}^{-1}\right):\mathsf{k}:\left(\grad N_{b}\cdot\mathbf{w}\right)\mathbf{I}\right)dv\,,
\end{aligned}
\]
\end_inset
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{K}_{ab}^{wu}= & \int_{\Omega^{b}}\alpha_{f}\frac{\rho_{T}^{f}}{\varphi^{f}}N_{a}\left(\varphi^{s}\dot{\mathbf{v}}^{s}\otimes\grad N_{b}+\varphi^{f}\frac{\alpha_{m}}{\alpha_{f}\beta\Delta t^{2}}N_{b}\mathbf{I}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}\frac{\rho_{T}^{f}}{\varphi^{f}}N_{a}\frac{\varphi^{s}}{\varphi^{f}}\left(-\frac{1}{\varphi^{f}}\frac{\dot{J}}{J}+\frac{\gamma}{\beta\Delta t}\right)\mathbf{w}\otimes\grad N_{b}dv\\
& +\int_{\Omega^{b}}\alpha_{f}\frac{\rho_{T}^{f}}{\varphi^{f}}N_{a}\frac{\varphi^{s}}{\varphi^{f}}\mathbf{w}\otimes\left(\mathbf{L}^{s^{T}}\cdot\grad N_{b}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\frac{\rho_{T}^{f}}{\varphi^{f}}\left(-\frac{\varphi^{s}}{\varphi^{f^{2}}}\left(\mathbf{L}^{w}\cdot\mathbf{w}\right)\otimes\grad N_{b}+\frac{\gamma}{\beta\Delta t}\left(\grad N_{b}\cdot\mathbf{w}\right)\mathbf{I}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\frac{\rho_{T}^{f}}{\varphi^{f^{4}}}\left(\varphi^{s}+1\right)\left(\grad\varphi^{f}\cdot\mathbf{w}\right)\mathbf{w}\otimes\grad N_{b}dv\\
& +\int_{\Omega^{b}}-\alpha_{f}N_{a}\frac{\rho_{T}^{f}}{\varphi^{f^{3}}}\varphi^{s}\mathbf{w}\otimes\left(\grad\grad^{T}N_{b}\cdot\mathbf{w}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}\frac{\rho_{T}^{f}}{\varphi^{f}}N_{a}\mathbf{L}^{f}\left(\grad N_{b}\cdot\mathbf{w}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\left(1-\frac{\varphi^{s}}{\varphi^{f}}\right)\rho_{T}^{f}\mathbf{a}^{f}\otimes\grad N_{b}dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\left(\grad p\otimes\grad N_{b}-\grad N_{b}\otimes\grad p\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\left(2\left(\mathbf{k}^{-1}\cdot\mathbf{w}\right)\otimes\grad N_{b}-\grad N_{b}\otimes\left(\mathbf{k}^{-1}\cdot\mathbf{w}\right)\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}N_{a}\left(\left(\grad N_{b}\cdot\mathbf{w}\right)\mathbf{k}^{-1}+\left(\mathbf{k}^{-1}\underbar{\otimes}\mathbf{k}^{-1}\right):\mathsf{k}:\left(\grad N_{b}\cdot\mathbf{w}\right)\mathbf{I}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\frac{1}{\varphi^{f}}\boldsymbol{\tau}\cdot\left(2\frac{\varphi^{s}}{\varphi^{f}}\grad\varphi^{f}\otimes\grad N_{b}+\grad N_{b}\otimes\grad\varphi^{f}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}N_{a}\frac{1}{\varphi^{f}}\boldsymbol{\tau}\cdot\varphi^{s}\grad\grad N_{b}dv\\
& +\int_{\Omega^{b}}-\alpha_{f}N_{a}\frac{1}{\varphi^{f}}\grad\varphi^{f}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\grad N_{b}\cdot\left(-\frac{\varphi^{s}}{\varphi^{f^{2}}}\mathbf{D}^{w}+\mathbf{M}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}N_{a}\frac{1}{\varphi^{f^{3}}}\grad\varphi^{f}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\mathbf{w}\cdot\left(2\frac{\varphi^{s}}{\varphi^{f}}\grad\varphi^{f}\otimes\grad N_{b}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}N_{a}\frac{1}{\varphi^{f^{3}}}\grad\varphi^{f}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\mathbf{w}\cdot\left(\grad N_{b}\otimes\grad\varphi^{f}\right)dv
\end{aligned}
\label{eq:Wint-lin-wu-discret-BFSI}
\end{equation}
\end_inset
\begin_inset Formula
\[
\begin{aligned} & +\int_{\Omega^{b}}\alpha_{f}N_{a}\frac{1}{\varphi^{f^{3}}}\grad\varphi^{f}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\mathbf{w}\cdot\left(-\grad\varphi^{f}\otimes\grad N_{b}+\varphi^{s}\grad\grad N_{b}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}\boldsymbol{\tau}\cdot\left(\left(1-\frac{\varphi^{s}}{\varphi^{f}}\right)\grad N_{a}\otimes\grad N_{b}-\grad N_{b}\otimes\grad N_{a}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}\grad N_{a}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\grad N_{b}\cdot\left(-\frac{\varphi^{s}}{\varphi^{f^{2}}}\mathbf{D}^{w}+\mathbf{M}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}\frac{1}{\varphi^{f^{2}}}\grad N_{a}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\mathbf{w}\cdot\left(2\frac{\varphi^{s}}{\varphi^{f}}\grad\varphi^{f}\otimes\grad N_{b}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}\frac{1}{\varphi^{f^{2}}}\grad N_{a}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\mathbf{w}\cdot\left(\grad N_{b}\otimes\grad\varphi^{f}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}\frac{1}{\varphi^{f^{2}}}\grad N_{a}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\mathbf{w}\cdot\left(-\grad\varphi^{f}\otimes\grad N_{b}+\varphi^{s}\grad\grad N_{b}\right)dv\,,
\end{aligned}
\]
\end_inset
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{k}_{ab}^{Ju}= & \int_{\Omega^{b}}\alpha_{f}\left(\grad N_{b}\otimes\mathbf{w}-\left(\grad N_{b}\cdot\mathbf{w}\right)\mathbf{I}\right)\cdot\grad N_{a}dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\frac{1}{J^{f}}\left(\dot{J}^{f}\grad N_{b}+\left(\grad N_{b}\otimes\mathbf{w}-\grad N_{b}\cdot\mathbf{w}\mathbf{I}\right)\cdot\grad J^{f}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}N_{a}\left(\frac{\dot{J}}{J}+\frac{\gamma}{\beta\Delta t}\right)\grad N_{b}+\mathbf{L}^{s^{T}}\cdot\grad N_{b}dv\,,
\end{aligned}
\label{eq:Wint-lin-Ju-discret-BFSI}
\end{equation}
\end_inset
whereas that of
\begin_inset Formula $D\delta W_{int}\left[\Delta\mathbf{w}\right]$
\end_inset
becomes
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{int}\left[\Delta\mathbf{w}\right] & =\sum_{a}\delta\mathbf{v}_{a}\cdot\sum_{b}\mathbf{K}_{ab}^{uw}\cdot\Delta\mathbf{w}_{b}\\
& +\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\mathbf{K}_{ab}^{ww}\cdot\Delta\mathbf{w}_{b}\\
& +\sum_{a}\delta J_{a}^{f}\sum_{b}\mathbf{k}_{ab}^{Jw}\cdot\Delta\mathbf{w}_{b}\,,
\end{aligned}
\label{eq:Wint-lin-w-discret-BFSI}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{K}_{ab}^{uw}= & \int_{\Omega^{b}}\alpha_{f}\frac{\varphi^{s}}{\varphi^{f}}\grad N_{a}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\left(\frac{1}{\varphi^{f}}N_{b}\grad\varphi^{f}-\grad N_{b}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}\varphi^{s}\frac{\rho_{T}^{f}}{\varphi^{f}}N_{a}\left(\left(\frac{\alpha_{m}}{\gamma\alpha_{f}\Delta t}-\frac{\varphi^{s}}{\varphi^{f}}\frac{\dot{J}}{J}-\frac{1}{\varphi^{f^{2}}}\left(\grad\varphi^{f}\cdot\mathbf{w}\right)\right)\mathbf{I}+\mathbf{L}^{f}\right)N_{b}dv\\
& +\int_{\Omega^{b}}-\alpha_{f}\varphi^{s}\frac{\rho_{T}^{f}}{\varphi^{f^{2}}}N_{a}\left(\grad N_{b}\cdot\mathbf{w}\right)\mathbf{I}dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\frac{\left(\varphi^{s}\right)^{2}}{\left(\varphi^{f}\right)^{2}}\grad\frac{\varphi^{f}}{\varphi^{s}}\cdot\boldsymbol{\mathcal{C}}_{d}\cdot\left(-\frac{1}{\varphi^{f}}N_{b}\grad\varphi^{f}+\grad N_{b}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}N_{a}N_{b}\mathbf{k}^{-1}dv\,,\\
\mathbf{K}_{ab}^{ww}= & \int_{\Omega^{b}}\alpha_{f}N_{a}\frac{\rho_{T}^{f}}{\varphi^{f}}\left(\left(\frac{\alpha_{m}}{\gamma\alpha_{f}\Delta t}-\frac{\varphi^{s}}{\varphi^{f}}\frac{\dot{J}}{J}-\frac{1}{\varphi^{f^{2}}}\left(\grad\varphi^{f}\cdot\mathbf{w}\right)\right)\mathbf{I}+\mathbf{L}^{f}\right)N_{b}dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\frac{\rho_{T}^{f}}{\varphi^{f^{2}}}\left(\grad N_{b}\cdot\mathbf{w}\right)\mathbf{I}dv\\
& +\int_{\Omega^{b}}\alpha_{f}N_{a}\left(\frac{1}{\varphi^{f^{2}}}\grad\varphi^{f}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\left(\frac{1}{\varphi^{f}}N_{b}\grad\varphi^{f}-\grad N_{b}\right)+N_{b}\mathbf{k}^{-1}\right)dv\\
& +\int_{\Omega^{b}}\alpha_{f}\frac{1}{\varphi^{f}}\grad N_{a}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\left(-\frac{1}{\varphi^{f}}N_{b}\grad\varphi^{f}+\grad N_{b}\right)dv\,,\\
\mathbf{k}_{ab}^{Jw}= & \int_{\Omega^{b}}\alpha_{f}N_{b}\left(\grad N_{a}+N_{a}\frac{1}{J^{f}}\grad J^{f}\right)dv\,,
\end{aligned}
\label{eq:Wint-lin-w-discret-parts-BFSI}
\end{equation}
\end_inset
and finally,
for
\begin_inset Formula $D\delta W_{int}\left[\Delta J^{f}\right]$
\end_inset
the equations become
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{int}\left[\Delta J^{f}\right]= & \sum_{a}\delta\mathbf{v}_{a}\cdot\sum_{b}\mathbf{k}_{ab}^{uJ}\Delta J_{b}^{f}\\
& +\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\mathbf{k}_{ab}^{wJ}\Delta J_{b}^{f}\\
& +\sum_{a}\delta J_{a}^{f}\sum_{b}k_{ab}^{JJ}\Delta J_{b}^{f}\,,
\end{aligned}
\label{eq:Wint-lin-J-discret-BFSI}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{k}_{ab}^{uJ}= & \int_{\Omega^{b}}\alpha_{f}\varphi^{s}N_{a}N_{b}\left(\frac{\varphi^{s}}{\varphi^{f}}\boldsymbol{\tau}_{J}^{\prime}\cdot\grad\frac{\varphi^{f}}{\varphi^{s}}+\frac{\rho_{T}^{f}}{J^{f}}\mathbf{a}^{f}\right)dv\\
& +\int_{\Omega^{b}}-\alpha_{f}N_{b}\varphi^{s}\boldsymbol{\tau}_{J}^{\prime}\cdot\grad N_{a}dv\,,\\
\mathbf{k}_{ab}^{wJ}= & \int_{\Omega^{b}}\alpha_{f}N_{a}\left(p^{\prime}\grad N_{b}+N_{b}\left(p^{\prime\prime}\grad J^{f}-\frac{\rho_{T}^{f}}{J^{f}}\mathbf{a}^{f}-\frac{1}{\varphi^{f}}\boldsymbol{\tau}_{J}^{\prime}\cdot\grad\varphi^{f}\right)\right)dv\Delta J_{b}^{f}\\
& +\int_{\Omega^{b}}\alpha_{f}N_{b}\boldsymbol{\tau}_{J}^{\prime}\cdot\grad N_{a}dv\,,\\
k_{ab}^{JJ}= & \int_{\Omega^{b}}\alpha_{f}N_{a}\frac{1}{J^{f}}\left(\left(\varphi^{f}\frac{\alpha_{m}}{\gamma\alpha_{f}\Delta t}-\frac{1}{J^{f}}\left(\varphi^{f}\dot{J}^{f}+\grad J^{f}\cdot\mathbf{w}\right)\right)N_{b}+\grad N_{b}\cdot\mathbf{w}\right)dv\,,
\end{aligned}
\label{eq:Wint-lin-J-discret-parts-BFSI}
\end{equation}
\end_inset
for external virtual work in eq.
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-ext-virtual-work"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
the discretized equations are
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W_{ext} & =\sum_{a}\delta\mathbf{v}_{a}\cdot\mathbf{f}_{a}^{u}\\
& +\sum_{a}\delta\mathbf{w}_{a}\cdot\mathbf{f}_{a}^{w}\\
& +\sum_{a}\delta J_{a}^{f}f_{a}^{J}\,,
\end{aligned}
\label{eq:Wext-discret-BFSI}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{f}_{a,ext}^{u} & =\int_{\partial\Omega^{b}}N_{a}\mathbf{t}^{\sigma}da+\int_{\Omega^{b}}N_{a}\varphi^{s}\left(-\rho_{T}^{f}\mathbf{b}^{f}+\rho_{T}^{s}\mathbf{b}^{s}\right)dv\,,\\
\mathbf{f}_{a,ext}^{w} & =\int_{\partial\Omega^{b}}N_{a}\mathbf{t}^{\tau}da+\int_{\Omega^{b}}\rho_{T}^{f}N_{a}\mathbf{b}^{f}dv\,,\\
f_{a,ext}^{J} & =\int_{\partial\Omega^{b}}N_{a}w_{n}da\,,
\end{aligned}
\label{eq:Wext-discret-parts-BFSI}
\end{equation}
\end_inset
and the discretized forms of the linearized external virtual work are
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W_{ext}\left[\Delta\mathbf{u}\right] & =\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\mathbf{K}_{ab}^{wu}\cdot\Delta\mathbf{u}_{b}\,,\\
D\delta W_{ext}\left[\Delta J^{f}\right] & =\sum_{a}\delta\mathbf{v}_{a}\cdot\sum_{b}\mathbf{k}_{ab}^{uJ}\Delta J_{b}^{f}+\sum_{a}\delta\mathbf{w}_{a}\cdot\sum_{b}\mathbf{k}_{ab}^{wJ}\Delta J_{b}^{f}\,,
\end{aligned}
\label{eq:Wext-lin-discret-BFSI}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{K}_{ab,ext}^{wu}= & \int_{\Omega^{b}}\alpha_{f}N_{a}\rho_{T}^{f}\mathbf{b}^{f}\otimes\grad N_{b}dv\,,\\
\mathbf{k}_{ab,ext}^{uJ}= & -\int_{\Omega^{b}}\alpha_{f}\varphi^{s}\frac{\rho_{T}^{f}}{J^{f}}N_{a}N_{b}\mathbf{b}^{f}dv\,,\\
\mathbf{k}_{ab,ext}^{wJ}= & -\int_{\Omega^{b}}\alpha_{f}\frac{\rho_{T}^{f}}{J^{f}}N_{a}N_{b}\mathbf{b}^{f}dv\,.
\end{aligned}
\label{eq:Wext-lin-discret-parts-BFSI}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
Combining these results,
from the linearized virtual work equation of
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:linearized-work-split"
nolink "false"
\end_inset
we can represent the system of equations in a compact matrix form as
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\left[\begin{array}{ccc}
\mathbf{K}_{ab}^{uu} & \mathbf{K}_{ab}^{uw} & \mathbf{k}_{ab}^{uJ}-\mathbf{k}_{ab,ext}^{uJ}\\
\mathbf{K}_{ab}^{wu}-\mathbf{K}_{ab,ext}^{wu} & \mathbf{K}_{ab}^{ww} & \mathbf{k}_{ab}^{wJ}-\mathbf{k}_{ab,ext}^{wJ}\\
\mathbf{k}_{ab}^{Ju} & \mathbf{k}_{ab}^{Jw} & k_{ab}^{JJ}
\end{array}\right]\left[\begin{array}{c}
\Delta\mathbf{u}\\
\Delta\mathbf{w}\\
\Delta J^{f}
\end{array}\right]=\left[\begin{array}{c}
\mathbf{f}_{a,ext}^{u}-\mathbf{f}_{a}^{u}\\
\mathbf{f}_{a,ext}^{w}-\mathbf{f}_{a}^{w}\\
f_{a,ext}^{J}-f_{a}^{J}
\end{array}\right]\,.\label{eq:Virtual-work-matrix-BFSI}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
BFSI Traction Interface
\begin_inset CommandInset label
LatexCommand label
name "sec:BFSI-Traction-Interface"
\end_inset
\end_layout
\begin_layout Standard
The virtual work
\begin_inset Formula $\delta F$
\end_inset
on a biphasic-FSI interface was given in eq.
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bfsi-traction-final"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
The linearizations of
\begin_inset Formula $\delta F$
\end_inset
are given by
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta F\left[\Delta\mathbf{u}\right]= & \int_{\partial\Omega^{b}}\delta\mathbf{v}\cdot\alpha_{f}\frac{\varphi^{s}}{\varphi^{f}}\left(\divg\Delta\mathbf{u}\right)\mathbf{T}_{d}\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\thinspace d\eta^{1}d\eta^{2}\\
& +\int_{\partial\Omega^{b}}-\delta\mathbf{v}\cdot\boldsymbol{\mathcal{C}}^{\tau}:\alpha_{f}\left(-\frac{\varphi^{s}}{\varphi^{f^{2}}}\left(\divg\Delta\mathbf{u}\right)\mathbf{D}^{w}+\mathbf{M}\cdot\grad\Delta\mathbf{u}\right)\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\thinspace d\eta^{1}d\eta^{2}\\
& +\int_{\partial\Omega^{b}}-\delta\mathbf{v}\cdot\boldsymbol{\mathcal{C}}^{\tau}:\alpha_{f}\left(2\frac{\varphi^{s}}{\varphi^{f^{3}}}\left(\divg\Delta\mathbf{u}\right)\mathbf{w}\otimes\grad\varphi^{f}\right)\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\thinspace d\eta^{1}d\eta^{2}\\
& +\int_{\partial\Omega^{b}}-\delta\mathbf{v}\cdot\boldsymbol{\mathcal{C}}^{\tau}:\alpha_{f}\left(-\frac{1}{\varphi^{f^{2}}}\mathbf{w}\otimes\left(-\grad^{T}\Delta\mathbf{u}\cdot\grad\varphi^{f}\right)\right)\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\thinspace d\eta^{1}d\eta^{2}\\
& +\int_{\partial\Omega^{b}}\delta\mathbf{v}\cdot\boldsymbol{\mathcal{C}}^{\tau}:\alpha_{f}\left(\frac{\varphi^{s}}{\varphi^{f^{2}}}\mathbf{w}\otimes\left(-\frac{1}{J}\left(\divg\Delta\mathbf{u}\right)\grad J+\grad\left(\divg\Delta\mathbf{u}\right)\right)\right)\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\thinspace d\eta^{1}d\eta^{2}\\
& +\int_{\partial\Omega^{b}}-\delta\mathbf{v}\cdot\alpha_{f}\boldsymbol{\tau}\cdot\left(\frac{\partial\Delta\mathbf{u}}{\partial\eta^{1}}\times\mathbf{g}_{2}+\mathbf{g}_{1}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{2}}\right)\thinspace d\eta^{1}d\eta^{2}\,,\\
D\delta F\left[\Delta\mathbf{w}\right] & =\int_{\partial\Omega^{b}}-\delta\mathbf{v}\cdot\alpha_{f}\boldsymbol{\mathcal{C}}^{\tau}:\left(\frac{1}{\varphi^{f}}\grad\Delta\mathbf{w}-\frac{1}{\varphi^{f^{2}}}\Delta\mathbf{w}\otimes\grad\varphi^{f}\right)\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\thinspace d\eta^{1}d\eta^{2}\,,\\
D\delta F\left[\Delta J^{f}\right] & =\int_{\partial\Omega^{b}}-\delta\mathbf{v}\cdot\alpha_{f}\left(-p^{\prime}\mathbf{I}+\boldsymbol{\tau}_{J}^{\prime}\right)\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\Delta J^{f}\thinspace d\eta^{1}d\eta^{2}\,.
\end{aligned}
\label{eq:BFSI-int-lin}
\end{equation}
\end_inset
The discretized forms of this virtual work is
\begin_inset Formula
\begin{equation}
\delta F=\sum_{a}\delta\mathbf{v}_{a}\cdot\mathbf{f}_{a}\,,\label{eq:BSI-int-discret}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{f}_{a}=\int_{\partial\Omega^{b}}-N_{a}\left(-p\mathbf{I}+\boldsymbol{\tau}\right)\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\thinspace d\eta^{1}d\eta^{2}\,.\label{eq:BFSI-int-discret-parts}
\end{equation}
\end_inset
The discretized forms of the linearizations are
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta F\left[\Delta\mathbf{u}\right] & =\sum_{a}\delta\mathbf{v}_{a}\cdot\sum_{b}\mathbf{K}_{ab}^{uu}\cdot\Delta\mathbf{u}_{b}\,,\\
D\delta F\left[\Delta\mathbf{w}\right] & =\sum_{a}\delta\mathbf{v}_{a}\cdot\sum_{b}\mathbf{K}_{ab}^{uw}\cdot\Delta\mathbf{w}_{b}\,,\\
D\delta F\left[\Delta J^{f}\right] & =\sum_{a}\delta\mathbf{v}_{a}\cdot\sum_{b}\mathbf{k}_{ab}^{uJ}\Delta J_{b}^{f}\,,
\end{aligned}
\label{eq:BFSI-int-lin-discret}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{K}_{ab}^{uu}= & \int_{\partial\Omega^{b}}\alpha_{f}N_{a}\frac{\varphi^{s}}{\varphi^{f}}\left(\boldsymbol{\tau}\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\right)\otimes\grad N_{b}\thinspace d\eta^{1}d\eta^{2}\\
& +\int_{\partial\Omega^{b}}-\alpha_{f}N_{a}\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\cdot\boldsymbol{\mathcal{C}}_{d}\cdot\grad N_{b}\cdot\left(-\frac{\varphi^{s}}{\varphi^{f^{2}}}\mathbf{D}^{w}+\mathbf{M}\right)\thinspace d\eta^{1}d\eta^{2}\\
& +\int_{\partial\Omega^{b}}-\alpha_{f}N_{a}\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\mathbf{w}\cdot\left(2\frac{\varphi^{s}}{\varphi^{f^{3}}}\grad\varphi^{f}\otimes\grad N_{b}\right)\thinspace d\eta^{1}d\eta^{2}\\
& +\int_{\partial\Omega^{b}}-\alpha_{f}N_{a}\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\mathbf{w}\cdot\left(\frac{1}{\varphi^{f^{2}}}\grad N_{b}\otimes\grad\varphi^{f}\right)\thinspace d\eta^{1}d\eta^{2}\\
& +\int_{\partial\Omega^{b}}\alpha_{f}N_{a}\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\mathbf{w}\cdot\frac{\varphi^{s}}{\varphi^{f^{2}}}\left(-\frac{1}{J}\grad J\otimes\grad N_{b}+\grad\grad N_{b}\right)\thinspace d\eta^{1}d\eta^{2}\\
& +\int_{\partial\Omega^{b}}-\alpha_{f}N_{a}\left(-p\mathbf{I}+\boldsymbol{\tau}\right)\cdot\boldsymbol{\mathcal{A}}\left\{ -\mathbf{g}_{2}\frac{\partial N_{b}}{\partial\eta^{1}}+\mathbf{g}_{1}\frac{\partial N_{b}}{\partial\eta^{2}}\right\} \thinspace d\eta^{1}d\eta^{2}\,,\\
\mathbf{K}_{ab}^{uw}= & \int_{\partial\Omega^{b}}-\alpha_{f}N_{a}\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\cdot\boldsymbol{\mathcal{C}}_{d}\cdot\frac{1}{\varphi^{f}}\left(\grad N_{b}-\frac{1}{\varphi^{f}}N_{b}\grad\varphi^{f}\right)\thinspace d\eta^{1}d\eta^{2}\,,\\
\mathbf{k}_{ab}^{uJ}= & \int_{\partial\Omega^{b}}-\alpha_{f}N_{a}N_{b}\left(-p^{\prime}\mathbf{I}+\boldsymbol{\tau}_{J}^{\prime}\right)\cdot\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\thinspace d\eta^{1}d\eta^{2}\,.
\end{aligned}
\label{eq:BFSI-int-lin-discret-parts}
\end{equation}
\end_inset
Note that
\begin_inset Formula $\boldsymbol{\mathcal{A}}\left\{ \cdot\right\} $
\end_inset
represents the skew-symmetric tensor form of the bracketed vector.
\end_layout
\begin_layout Section
Weak Formulation for Fluid-Solutes Analyses
\begin_inset CommandInset label
LatexCommand label
name "sec:Weak-Fluid-Solutes"
\end_inset
\end_layout
\begin_layout Subsection
Virtual Work and Weak form for Fluid-Solutes
\end_layout
\begin_layout Standard
The virtual work statement is used to enforce the governing equations needed to solve for the nodal
\begin_inset Formula $\mathbf{v}^{f}$
\end_inset
,
\begin_inset Formula $e^{f}$
\end_inset
,
and all
\begin_inset Formula $\tilde{c}^{\iota}$
\end_inset
,
namely the mixture mass balance
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Mix-Mass-Bal-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
the fluid momentum balance
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Fluid-Mtm-Bal-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
and the solute mass balances
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Mass-Bal-Solute-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
in addition to the current density constraint
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Current-Density-Constraint"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
The virtual work statement for a Galerkin finite element formulation
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
is
\begin_inset Formula $\delta W=0$
\end_inset
,
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W= & \int_{\Omega^{f}}\delta\mathbf{v}^{f}\cdot\left(-\grad\tilde{p}+\divg\boldsymbol{\tau}-\sum_{\iota}R\theta\tilde{\kappa}^{\iota}\grad\tilde{c}^{\iota}+\rho^{f}\left(\mathbf{b}^{f}-\mathbf{a}^{f}\right)+M^{\iota}c^{\iota}\mathbf{b}^{\iota}\right)dv\\
& +\int_{\Omega^{f}}\delta J^{f}\left(-\frac{1}{J^{f}}\frac{D^{f}J^{f}}{Dt}+\divg\mathbf{v}^{f}\right)dv\\
& +\sum_{\iota}\int_{\Omega^{f}}\delta\tilde{c}^{\iota}\left(\frac{1}{J^{f}}\frac{D^{f}\left(J^{f}c^{\iota}\right)}{Dt}+\divg\mathbf{j}^{\iota}-\hat{c}^{\iota}+\sum_{\beta}z^{\beta}\divg\mathbf{j}^{\iota}\right)dv\,.
\end{aligned}
\label{eq:CFDSol-Virtual-Work}
\end{equation}
\end_inset
These integrals are evaluated in the current (time-invariant) configuration of
\begin_inset Formula $\Omega^{f}$
\end_inset
.
Here,
\begin_inset Formula $\delta\mathbf{v}^{f}$
\end_inset
is the virtual fluid velocity,
\begin_inset Formula $\delta J^{f}$
\end_inset
is the virtual fluid energy density,
and
\begin_inset Formula $\delta\tilde{c}^{\iota}$
\end_inset
is the virtual molar energy of solute
\begin_inset Formula $\iota$
\end_inset
.
Integrating by parts and using the divergence theorem,
the weak form of this statement may be written as
\begin_inset Formula $0=\delta W=\delta W_{ext}-\delta W_{int}$
\end_inset
where the internal virtual work is
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W_{int}= & \int_{\Omega^{f}}\delta\mathbf{v}^{f}\cdot\left(\grad\tilde{p}+\rho^{f}\mathbf{a}^{f}+\sum_{\iota}R\theta\tilde{\kappa}^{\iota}\grad\tilde{c}^{\iota}\right)+\boldsymbol{\tau}:\grad\delta\mathbf{v}^{f}dv\\
& +\int_{\Omega^{f}}\delta J^{f}\frac{1}{J^{f}}\frac{D^{f}J^{f}}{Dt}+\grad\delta J^{f}\cdot\mathbf{v}^{f}dv\\
& +\sum_{\iota}\int_{\Omega^{f}}\left(\grad\delta\tilde{c}^{\iota}\cdot\left(\mathbf{j}_{d}^{\iota}+\sum_{\gamma}z^{\gamma}\mathbf{j}_{d}^{\gamma}\right)-\delta\tilde{c}^{\iota}\left(\frac{1}{J^{f}}\frac{D^{f}\left(J^{f}c^{\iota}\right)}{Dt}-\hat{c}^{\iota}\right)\right)dv\,.
\end{aligned}
\label{eq:Int-Virtual-Work-CFDSol}
\end{equation}
\end_inset
The external virtual work is
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W_{ext}= & \int_{\Gamma^{f}}\delta\mathbf{v}^{f}\cdot\mathbf{t}^{\tau}da+\int_{\Gamma^{f}}\delta J^{f}v_{n}^{f}da+\int_{\Gamma^{f}}\delta\tilde{c}^{\iota}\tilde{j}_{n}^{\iota}da\\
& +\int_{\Omega^{f}}\delta\mathbf{v}^{f}\cdot\left(\rho^{f}\mathbf{b}^{f}+\sum_{\iota}M^{\iota}c^{\iota}\mathbf{b}^{\iota}\right)dv\\
& -\sum_{\iota}\int_{\Omega^{f}}\grad\delta\tilde{c}^{\iota}\cdot\tilde{\mathbf{j}}_{b}^{\iota}dv\,,
\end{aligned}
\label{eq:Ext-Virt-Work-CFDSol}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\tilde{j}_{n}^{\iota}=\left(\mathbf{j}^{\iota}+\sum_{\gamma}z^{\gamma}\mathbf{j}^{\gamma}\right)\cdot\mathbf{n}\,.\label{eq:Normal-Sol-Flux-CFDSol}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\mathbf{t}^{\tau}=\boldsymbol{\tau}\cdot\mathbf{n}$
\end_inset
is the fluid viscous traction,
\begin_inset Formula $v_{n}^{f}=\mathbf{v}^{f}\cdot\mathbf{n}$
\end_inset
is the normal component of the fluid velocity on the boundary
\begin_inset Formula $\Gamma^{f}$
\end_inset
,
and
\begin_inset Formula $\tilde{j}_{n}^{\iota}$
\end_inset
is the normal effective diffusive flux of solute
\begin_inset Formula $\iota$
\end_inset
on the boundary
\begin_inset Formula $\Gamma^{f}$
\end_inset
,
where
\begin_inset Formula $\mathbf{n}$
\end_inset
is the outward normal to
\begin_inset Formula $\Gamma^{f}$
\end_inset
.
The integrands of the surface integrals represent the natural boundary conditions for this formulation.
If boundary conditions are not set explicitly on
\begin_inset Formula $\Gamma^{f}$
\end_inset
,
the natural boundary conditions are
\begin_inset Formula $\mathbf{t}^{\tau}=\mathbf{0}$
\end_inset
,
\begin_inset Formula $v_{n}^{f}=0$
\end_inset
,
and
\begin_inset Formula $\tilde{j}_{n}^{\iota}=0$
\end_inset
.
These natural boundary conditions are consistent with the jump conditions presented above in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Fluid-Mtm-Jump-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Mass-Jump-Final-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Mass-Jump-Sol-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
Essential boundary conditions are prescribed on the fluid velocity
\begin_inset Formula $\mathbf{v}^{f}$
\end_inset
,
fluid dilatation
\begin_inset Formula $e^{f}$
\end_inset
,
and effective solute concentration
\begin_inset Formula $\tilde{c}^{\iota}$
\end_inset
,
which are also consistent with the above jump conditions in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:J-Jump-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Mass-Jump-Final-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Conc-Jump-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
For example,
an essential no-slip boundary condition may be prescribed on
\begin_inset Formula $\Gamma^{f}$
\end_inset
by setting
\begin_inset Formula $\mathbf{v}^{f}=\mathbf{0}$
\end_inset
.
A symmetry plane may be prescribed from the natural boundary conditions
\begin_inset Formula $\mathbf{t}^{\tau}=\mathbf{0}$
\end_inset
,
\begin_inset Formula $v_{n}^{f}=0$
\end_inset
,
and
\begin_inset Formula $\tilde{j}_{n}^{\iota}=0$
\end_inset
.
In this formulation,
the mixture traction is defined as
\begin_inset Formula $\mathbf{t}=-p\mathbf{n}+\mathbf{t}^{\tau}$
\end_inset
.
Because of the way we chose to split the internal and external virtual work in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Int-Virtual-Work-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Ext-Virt-Work-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
\begin_inset Formula $\mathbf{t}$
\end_inset
is not a natural boundary condition in this formulation.
Thus,
when
\begin_inset Formula $\mathbf{t}=\mathbf{0}$
\end_inset
is desired,
it has to be enforced by satisfying the natural boundary condition
\begin_inset Formula $\mathbf{t}^{\tau}=\mathbf{0}$
\end_inset
,
and selecting suitable values for the essential boundary conditions
\begin_inset Formula $J^{f}$
\end_inset
and
\begin_inset Formula $\tilde{c}^{\iota}$
\end_inset
using
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Total-fluid-p-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Eff-Pressure-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
to produce
\begin_inset Formula $p=0$
\end_inset
,
as explained next.
\end_layout
\begin_layout Standard
The actual fluid gauge pressure in this fluid-solutes mixture is
\begin_inset Formula $p$
\end_inset
,
as given in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Total-fluid-p-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
To prescribe a desired value
\begin_inset Formula $p=p^{*}$
\end_inset
on a boundary,
we implemented a
\begin_inset Quotes eld
\end_inset
fluid pressure
\begin_inset Quotes erd
\end_inset
boundary condition that prescribed the correct value of
\begin_inset Formula $J^{f}$
\end_inset
according to the current values of all
\begin_inset Formula $\tilde{c}^{\iota}$
\end_inset
,
using the user-selected constitutive model for
\begin_inset Formula $\tilde{p}\left(J^{f}\right)$
\end_inset
.
For example,
using eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Eff-Pressure-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
this
\begin_inset Quotes eld
\end_inset
fluid pressure
\begin_inset Quotes erd
\end_inset
boundary condition actually prescribes
\begin_inset Formula $J^{f}=1/\left(1+\left(p^{*}-R\theta\Phi\sum_{\iota}\tilde{\kappa}^{\iota}\tilde{c}^{\iota}\right)/K\right)$
\end_inset
as an essential boundary condition at nodes of
\begin_inset Formula $\Gamma^{f}$
\end_inset
.
The values of
\begin_inset Formula $\Phi$
\end_inset
and
\begin_inset Formula $\tilde{\kappa}^{\iota}$
\end_inset
are obtained from the finite element of the domain
\begin_inset Formula $\Omega^{f}$
\end_inset
right underneath the face
\begin_inset Formula $\Gamma^{f}$
\end_inset
.
\end_layout
\begin_layout Subsection
Linearization for Fluid-Solutes
\end_layout
\begin_layout Standard
We can rewrite the internal work of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:CFDSol-Virtual-Work"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
as
\begin_inset Formula
\[
\begin{aligned}\delta W_{int} & =\delta W_{int}^{v}+\delta W_{int}^{J}+\delta W_{int}^{c}\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\[
\begin{aligned}\delta W_{int}^{v} & =\int_{\Omega^{f}}\delta\mathbf{v}^{f}\cdot\left(\grad\tilde{p}+\rho^{f}\mathbf{a}^{f}+\sum_{\iota}R\theta\tilde{\kappa}^{\iota}\grad\tilde{c}^{\iota}\right)+\boldsymbol{\tau}:\grad\delta\mathbf{v}^{f}dv\\
\delta W_{int}^{J} & =\int_{\Omega^{f}}\delta J^{f}\frac{1}{J^{f}}\frac{D^{f}J^{f}}{Dt}+\grad\delta J^{f}\cdot\mathbf{v}^{f}dv\\
\delta W_{int}^{c} & =\sum_{\iota}\int_{\Omega^{f}}\left(\grad\delta\tilde{c}^{\iota}\cdot\left(\mathbf{j}_{d}^{\iota}+\sum_{\gamma}z^{\gamma}\mathbf{j}_{d}^{\gamma}\right)-\delta\tilde{c}^{\iota}\left(\frac{1}{J^{f}}\frac{D^{f}\left(J^{f}c^{\iota}\right)}{Dt}-\hat{c}^{\iota}\right)\right)dv\,.
\end{aligned}
\]
\end_inset
Recall that
\begin_inset Formula $\hat{c}^{\iota}=\nu^{\iota}\hat{\zeta}$
\end_inset
.
Also note that
\begin_inset Formula
\[
\begin{aligned}\mathbf{a}^{f} & =\frac{\partial\mathbf{v}^{f}}{\partial t}+\grad\mathbf{v}^{f}\cdot\mathbf{v}^{f}\\
\frac{D^{f}J^{f}}{Dt} & =\frac{\partial J^{f}}{\partial t}+\grad J^{f}\cdot\mathbf{v}^{f}\\
\frac{D^{f}\left(J^{f}c^{\iota}\right)}{Dt} & =\tilde{c}^{\iota}\left(\tilde{\kappa}^{\iota}+J^{f}\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\right)\frac{D^{f}J^{f}}{Dt}+J^{f}\left(\tilde{\kappa}^{\iota}\frac{D^{f}\tilde{c}^{\iota}}{Dt}+\tilde{c}^{\iota}\sum_{\gamma}\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\gamma}}\frac{D^{f}\tilde{c}^{\gamma}}{Dt}\right)\\
\frac{D^{f}c^{\iota}}{Dt} & =\frac{\partial c^{\iota}}{\partial t}+\grad c^{\iota}\cdot\mathbf{v}^{f}\\
& =\tilde{\kappa}^{\iota}\frac{\partial\tilde{c}^{\iota}}{\partial t}+\tilde{c}^{\iota}\frac{\partial\tilde{\kappa}^{\iota}}{\partial t}+\left(\tilde{\kappa}^{\iota}\grad\tilde{c}^{\iota}+\tilde{c}^{\iota}\grad\tilde{\kappa}^{\iota}\right)\cdot\mathbf{v}^{f}\\
\frac{\partial\tilde{\kappa}^{\iota}}{\partial t} & =\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\frac{\partial J^{f}}{\partial t}+\sum_{\gamma}\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\gamma}}\frac{\partial\tilde{c}^{\gamma}}{\partial t}\\
\grad\tilde{\kappa}^{\iota} & =\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\grad J+\sum_{\gamma}\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\gamma}}\grad\tilde{c}^{\gamma}
\end{aligned}
\]
\end_inset
Using the temporal discretization approach outlined in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:CFD-Discretization-Linearization"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
the linearizations of each of these terms along increments in the degrees of freedom are obtained using
\begin_inset Formula
\[
\begin{aligned}D\mathbf{a}^{f}\left[\Delta\mathbf{v}^{f}\right] & =\frac{\alpha_{m}}{\gamma}\frac{\Delta\mathbf{v}^{f}}{\Delta t}+\alpha_{f}\left(\grad\Delta\mathbf{v}^{f}\cdot\mathbf{v}^{f}+\mathbf{L}^{f}\cdot\Delta\mathbf{v}^{f}\right)\\
D\left(\frac{D^{f}J^{f}}{Dt}\right)\left[\Delta\mathbf{v}_{f}\right] & =\alpha_{f}\grad J^{f}\cdot\Delta\mathbf{v}_{f}\\
D\boldsymbol{\tau}\left[\Delta\mathbf{v}^{f}\right] & =\alpha_{f}\boldsymbol{\mathcal{C}}^{\tau}:\frac{1}{2}\left(\grad\Delta\mathbf{v}^{f}+\grad^{T}\Delta\mathbf{v}^{f}\right)\\
D\left(\frac{D^{f}\left(J^{f}c^{\iota}\right)}{Dt}\right)\left[\Delta\mathbf{v}^{f}\right] & =\alpha_{f}\grad\left(J^{f}c^{\iota}\right)\cdot\Delta\mathbf{v}^{f}
\end{aligned}
\]
\end_inset
\begin_inset Formula
\[
\begin{aligned}D\left(\grad\tilde{p}\right)\left[\Delta J^{f}\right] & =\alpha_{f}\left(\tilde{p}_{J}^{\prime}\grad\Delta J^{f}+\Delta J^{f}\tilde{p}_{J}^{\prime\prime}\grad J^{f}\right)\\
D\rho^{f}\left[\Delta J^{f}\right] & =-\alpha_{f}\frac{\rho^{f}}{J^{f}}\Delta J^{f}\\
D\boldsymbol{\tau}\left[\Delta J^{f}\right] & =\alpha_{f}\boldsymbol{\tau}_{J}^{\prime}\Delta J^{f}\\
D\left(\frac{D^{f}J^{f}}{Dt}\right)\left[\Delta J^{f}\right] & =\alpha_{f}\left(\frac{\alpha_{m}}{\alpha_{f}\gamma}\frac{\Delta J^{f}}{\Delta t}+\grad\Delta J^{f}\cdot\mathbf{v}^{f}\right)\\
D\tilde{\kappa}^{\iota}\left[\Delta J^{f}\right] & =\alpha_{f}\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\Delta J^{f}\\
D\left(\frac{D^{f}\left(J^{f}c^{\iota}\right)}{Dt}\right)\left[\Delta J^{f}\right] & =\alpha_{f}\tilde{c}^{\iota}\left(\tilde{\kappa}^{\iota}+J^{f}\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\right)\left(\frac{\alpha_{m}}{\alpha_{f}\gamma}\frac{\Delta J^{f}}{\Delta t}+\grad\Delta J^{f}\cdot\mathbf{v}^{f}\right)\\
& +\alpha_{f}\tilde{c}^{\iota}\frac{D^{f}J^{f}}{Dt}\left(2\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}+J^{f}\frac{\partial^{2}\tilde{\kappa}^{\iota}}{\partial\left(J^{f}\right)^{2}}\right)\Delta J^{f}\\
& +\alpha_{f}\left(\tilde{\kappa}^{\iota}\frac{D^{f}\tilde{c}^{\iota}}{Dt}+\tilde{c}^{\iota}\sum_{\gamma}\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\gamma}}\frac{D^{f}\tilde{c}^{\gamma}}{Dt}\right)\Delta J^{f}\\
& +\alpha_{f}J^{f}\left(\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\frac{D^{f}\tilde{c}^{\iota}}{Dt}+\tilde{c}^{\iota}\sum_{\gamma}\left(\frac{\partial^{2}\tilde{\kappa}^{\iota}}{\partial J^{f}\partial\tilde{c}^{\gamma}}\right)\frac{D^{f}\tilde{c}^{\gamma}}{Dt}\right)\Delta J^{f}\\
D\hat{c}^{\iota}\left[\Delta J^{f}\right] & =\alpha_{f}\nu^{\iota}\frac{\partial\hat{\zeta}}{\partial J^{f}}\Delta J^{f}\\
D\mathbf{j}_{d}^{\iota}\left[\Delta J^{f}\right] & =-\alpha_{f}\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\Delta J^{f}d_{0}^{\iota}\grad\tilde{c}^{\iota}
\end{aligned}
\]
\end_inset
\begin_inset Formula
\[
\begin{aligned}D\left(\tilde{\kappa}^{\iota}\tilde{c}^{\iota}\right)\left[\Delta\tilde{c}^{\beta}\right] & =\alpha_{f}\left(\delta_{\iota\beta}\tilde{\kappa}^{\beta}+\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\beta}}\tilde{c}^{\iota}\right)\Delta\tilde{c}^{\beta}\\
D\left(\tilde{\kappa}^{\iota}\grad\tilde{c}^{\iota}\right)\left[\Delta\tilde{c}^{\beta}\right] & =\alpha_{f}\left(\delta_{\iota\beta}\tilde{\kappa}^{\beta}\grad\Delta\tilde{c}^{\beta}+\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\beta}}\Delta\tilde{c}^{\beta}\grad\tilde{c}^{\iota}\right)\\
D\left(\frac{D^{f}\left(J^{f}c^{\iota}\right)}{Dt}\right)\left[\Delta\tilde{c}^{\beta}\right] & =\alpha_{f}J^{f}\left(\delta_{\iota\beta}\tilde{\kappa}^{\beta}+\tilde{c}^{\iota}\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\beta}}\right)\left(\left(\frac{\alpha_{m}}{\alpha_{f}\gamma}\frac{1}{\Delta t}+\frac{1}{J^{f}}\frac{D^{f}J^{f}}{Dt}\right)\Delta\tilde{c}^{\beta}+\grad\Delta\tilde{c}^{\beta}\cdot\mathbf{v}^{f}\right)\\
D\hat{c}^{\iota}\left[\Delta\tilde{c}^{\beta}\right] & =\alpha_{f}\nu^{\iota}\frac{\partial\hat{\zeta}}{\partial\tilde{c}^{\beta}}\Delta\tilde{c}^{\beta}\\
D\mathbf{j}_{d}^{\iota}\left[\Delta\tilde{c}^{\beta}\right] & =-\alpha_{f}\left(\delta_{\iota\beta}\tilde{\kappa}^{\beta}d_{0}^{\beta}\grad\Delta\tilde{c}^{\beta}+\Delta\tilde{c}^{\beta}\left(\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\beta}}d_{0}^{\iota}+\tilde{\kappa}^{\iota}\frac{\partial d_{0}^{\iota}}{\partial\tilde{c}^{\beta}}\right)\grad\tilde{c}^{\iota}\right)
\end{aligned}
\]
\end_inset
Then we can evaluate the linearizations as follows,
\begin_inset Formula
\[
\begin{aligned}D\left(\delta W_{int}^{v}\right)\left[\Delta\mathbf{v}^{f}\right] & =\alpha_{f}\int_{\Omega^{f}}\delta\mathbf{v}^{f}\cdot\rho^{f}\left(\frac{\alpha_{m}}{\alpha_{f}\gamma}\frac{\Delta\mathbf{v}^{f}}{\Delta t}+\left(\grad\Delta\mathbf{v}^{f}\cdot\mathbf{v}^{f}+\mathbf{L}^{f}\cdot\Delta\mathbf{v}^{f}\right)\right)dv\\
& +\alpha_{f}\int_{\Omega^{f}}\grad\delta\mathbf{v}^{f}:\boldsymbol{\mathcal{C}}^{\tau}:\frac{1}{2}\left(\grad\Delta\mathbf{v}^{f}+\grad^{T}\Delta\mathbf{v}^{f}\right)dv\\
D\left(\delta W_{int}^{v}\right)\left[\Delta J^{f}\right] & =\alpha_{f}\int_{\Omega^{f}}\delta\mathbf{v}^{f}\cdot\left(\tilde{p}_{J}^{\prime}\grad\Delta J^{f}+\Delta J^{f}\tilde{p}_{J}^{\prime\prime}\grad J^{f}+\Delta J^{f}\sum_{\iota}R\theta\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\grad\tilde{c}^{\iota}\right)dv\\
& -\alpha_{f}\int_{\Omega^{f}}\delta\mathbf{v}^{f}\cdot\frac{\rho^{f}}{J^{f}}\Delta J^{f}\mathbf{a}^{f}dv+\alpha_{f}\int_{\Omega^{f}}\boldsymbol{\tau}_{J}^{\prime}\Delta J^{f}:\grad\delta\mathbf{v}^{f}dv\\
D\left(\delta W_{int}^{v}\right)\left[\Delta\tilde{c}^{\beta}\right] & =\alpha_{f}\int_{\Omega^{f}}\delta\mathbf{v}^{f}\cdot R\theta\sum_{\iota}\left(\delta_{\iota\beta}\tilde{\kappa}^{\beta}\grad\Delta\tilde{c}^{\beta}+\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\beta}}\Delta\tilde{c}^{\beta}\grad\tilde{c}^{\iota}\right)dv
\end{aligned}
\]
\end_inset
\begin_inset Formula
\[
\begin{aligned}D\left(\delta W_{int}^{J}\right)\left[\Delta\mathbf{v}^{f}\right] & =\alpha_{f}\int_{\Omega^{f}}\left(\delta J^{f}\frac{1}{J^{f}}\grad J^{f}+\grad\delta J^{f}\right)\cdot\Delta\mathbf{v}^{f}dv\\
D\left(\delta W_{int}^{J}\right)\left[\Delta J^{f}\right] & =\alpha_{f}\int_{\Omega^{f}}\delta J^{f}\frac{1}{J^{f}}\left(\left(\frac{\alpha_{m}}{\alpha_{f}\gamma}\frac{1}{\Delta t}-\frac{1}{J^{f}}\frac{D^{f}J^{f}}{Dt}\right)\Delta J^{f}+\grad\Delta J^{f}\cdot\mathbf{v}^{f}\right)dv\\
D\left(\delta W_{int}^{J}\right)\left[\Delta\tilde{c}^{\beta}\right] & =0
\end{aligned}
\]
\end_inset
\begin_inset Formula
\[
\begin{aligned}D\left(\delta W_{int}^{c}\right)\left[\Delta\mathbf{v}^{f}\right] & =\sum_{\iota}\int_{\Omega^{f}}-\delta\tilde{c}^{\iota}\frac{1}{J^{f}}\grad\left(J^{f}c^{\iota}\right)\cdot\alpha_{f}\Delta\mathbf{v}_{f}\\
D\left(\delta W_{int}^{c}\right)\left[\Delta J^{f}\right] & =\sum_{\iota}\int_{\Omega^{f}}\delta\tilde{c}^{\iota}\frac{\alpha_{f}\Delta J^{f}}{\left(J^{f}\right)^{2}}\frac{D^{f}\left(J^{f}c^{\iota}\right)}{Dt}\\
& -\delta\tilde{c}^{\iota}\alpha_{f}\frac{\tilde{c}^{\iota}}{J^{f}}\left(\tilde{\kappa}^{\iota}+J^{f}\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\right)\left(\frac{\alpha_{m}}{\alpha_{f}\gamma}\frac{\Delta J^{f}}{\Delta t}+\grad\Delta J^{f}\cdot\mathbf{v}^{f}\right)\\
& -\delta\tilde{c}^{\iota}\alpha_{f}\frac{\tilde{c}^{\iota}}{J^{f}}\frac{D^{f}J^{f}}{Dt}\left(2\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}+J^{f}\frac{\partial^{2}\tilde{\kappa}^{\iota}}{\partial\left(J^{f}\right)^{2}}\right)\Delta J^{f}\\
& -\delta\tilde{c}^{\iota}\alpha_{f}\frac{1}{J^{f}}\left(\tilde{\kappa}^{\iota}\frac{D^{f}\tilde{c}^{\iota}}{Dt}+\tilde{c}^{\iota}\sum_{\gamma}\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\gamma}}\frac{D^{f}\tilde{c}^{\gamma}}{Dt}\right)\Delta J^{f}\\
& -\delta\tilde{c}^{\iota}\alpha_{f}\left(\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\frac{D^{f}\tilde{c}^{\iota}}{Dt}+\tilde{c}^{\iota}\sum_{\gamma}\left(\frac{\partial^{2}\tilde{\kappa}^{\iota}}{\partial J^{f}\partial\tilde{c}^{\gamma}}\right)\frac{D^{f}\tilde{c}^{\gamma}}{Dt}\right)\Delta J^{f}\\
& +\alpha_{f}\delta\tilde{c}^{\iota}\nu^{\iota}\frac{\partial\hat{\zeta}}{\partial J^{f}}\Delta J^{f}-\alpha_{f}\grad\delta\tilde{c}^{\iota}\cdot\left(\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}d_{0}^{\iota}\grad\tilde{c}^{\iota}+\sum_{\gamma}z^{\gamma}\frac{\partial\tilde{\kappa}^{\gamma}}{\partial J^{f}}d_{0}^{\gamma}\grad\tilde{c}^{\gamma}\right)\Delta J^{f}dv\\
D\left(\delta W_{int}^{c}\right)\left[\Delta\tilde{c}^{\beta}\right] & =\sum_{\iota}\int_{\Omega^{f}}-\delta\tilde{c}^{\iota}\alpha_{f}\left(\delta_{\iota\beta}\tilde{\kappa}^{\beta}+\tilde{c}^{\iota}\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\beta}}\right)\left(\left(\frac{\alpha_{m}}{\alpha_{f}\gamma}\frac{1}{\Delta t}+\frac{1}{J^{f}}\frac{D^{f}J^{f}}{Dt}\right)\Delta\tilde{c}^{\beta}+\grad\Delta\tilde{c}^{\beta}\cdot\mathbf{v}^{f}\right)\\
& +\delta\tilde{c}^{\iota}\alpha_{f}\nu^{\iota}\frac{\partial\hat{\zeta}}{\partial\tilde{c}^{\beta}}\Delta\tilde{c}^{\beta}\\
& -\alpha_{f}\grad\delta\tilde{c}^{\iota}\cdot\left(\delta_{\iota\beta}\tilde{\kappa}^{\beta}d_{0}^{\beta}\grad\Delta\tilde{c}^{\beta}+\Delta\tilde{c}^{\beta}\left(\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\beta}}d_{0}^{\iota}+\tilde{\kappa}^{\iota}\frac{\partial d_{0}^{\iota}}{\partial\tilde{c}^{\beta}}\right)\grad\tilde{c}^{\iota}\right)\\
& -\alpha_{f}\grad\delta\tilde{c}^{\iota}\cdot\left(z^{\beta}\tilde{\kappa}^{\beta}d_{0}^{\beta}\grad\Delta\tilde{c}^{\beta}+\Delta\tilde{c}^{\beta}\sum_{\gamma}z^{\gamma}\left(\frac{\partial\tilde{\kappa}^{\gamma}}{\partial\tilde{c}^{\beta}}d_{0}^{\gamma}+\tilde{\kappa}^{\gamma}\frac{\partial d_{0}^{\gamma}}{\partial\tilde{c}^{\beta}}\right)\grad\tilde{c}^{\gamma}\right)dv
\end{aligned}
\]
\end_inset
\end_layout
\begin_layout Standard
Similarly,
we can rewrite eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Ext-Virt-Work-CFDSol"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
as
\begin_inset Formula
\[
\begin{aligned}\delta W_{ext}= & \int_{\Gamma^{f}}\delta\mathbf{v}^{f}\cdot\mathbf{t}^{\tau}da+\int_{\Gamma^{f}}\delta J^{f}v_{n}^{f}da+\int_{\Gamma^{f}}\delta\tilde{c}^{\iota}\tilde{j}_{n}^{\iota}da\\
& +\delta G_{ext}^{v}+\delta G_{ext}^{c}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\[
\begin{aligned}\delta G_{ext}^{v} & =\int_{\Omega^{f}}\delta\mathbf{v}^{f}\cdot\left(\rho^{f}\mathbf{b}^{f}+\sum_{\iota}M^{\iota}c^{\iota}\mathbf{b}^{\iota}\right)dv\\
\delta G_{ext}^{c} & =-\sum_{\iota}\int_{\Omega^{f}}\grad\delta\tilde{c}^{\iota}\cdot\left(\mathbf{j}_{b}^{\iota}+\sum_{\gamma}z^{\gamma}\mathbf{j}_{b}^{\gamma}\right)dv
\end{aligned}
\]
\end_inset
and we can linearize
\begin_inset Formula $\delta G_{ext}^{v}$
\end_inset
and
\begin_inset Formula $\delta G_{ext}^{c}$
\end_inset
as
\begin_inset Formula
\[
\begin{aligned}D\left(\delta G_{ext}^{v}\right)\left[\Delta\mathbf{v}^{f}\right] & =\mathbf{0}\\
D\left(\delta G_{ext}^{v}\right)\left[\Delta J^{f}\right] & =\alpha_{f}\int_{\Omega^{f}}\delta\mathbf{v}^{f}\cdot\left(-\frac{\rho^{f}}{J^{f}}\mathbf{b}^{f}+\sum_{\iota}M^{\iota}\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\tilde{c}^{\iota}\mathbf{b}^{\iota}\right)\Delta J^{f}dv\\
D\left(\delta G_{ext}^{v}\right)\left[\Delta\tilde{c}^{\beta}\right] & =\alpha_{f}\int_{\Omega^{f}}\delta\mathbf{v}^{f}\cdot\left(M^{\beta}\tilde{\kappa}^{\beta}\mathbf{b}^{\beta}+\sum_{\gamma}M^{\gamma}\frac{\partial\tilde{\kappa}^{\gamma}}{\partial\tilde{c}^{\beta}}\tilde{c}^{\gamma}\mathbf{b}^{\gamma}\right)\Delta\tilde{c}^{\beta}dv
\end{aligned}
\]
\end_inset
and
\begin_inset Formula
\[
\begin{aligned}D\left(\delta G_{ext}^{c}\right)\left[\Delta\mathbf{v}^{f}\right] & =\mathbf{0}\\
D\left(\delta G_{ext}^{c}\right)\left[\Delta J^{f}\right] & =-\sum_{\iota}\alpha_{f}\int_{\Omega^{f}}\grad\delta\tilde{c}^{\iota}\cdot\left(s^{\iota}\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\tilde{c}^{\iota}\mathbf{b}^{\iota}+\sum_{\gamma}z^{\gamma}s^{\gamma}\frac{\partial\tilde{\kappa}^{\gamma}}{\partial J^{f}}\tilde{c}^{\gamma}\mathbf{b}^{\gamma}\right)\Delta J^{f}dv\\
D\left(\delta G_{ext}^{c}\right)\left[\Delta\tilde{c}^{\beta}\right] & =-\sum_{\iota}\alpha_{f}\int_{\Omega^{f}}\grad\delta\tilde{c}^{\iota}\cdot\left(\left(\delta_{\iota\beta}+z^{\beta}\right)s^{\beta}\tilde{\kappa}^{\beta}\mathbf{b}^{\beta}+s^{\iota}\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\beta}}\tilde{c}^{\iota}\mathbf{b}^{\iota}+\sum_{\gamma}z^{\gamma}s^{\gamma}\frac{\partial\tilde{\kappa}^{\gamma}}{\partial\tilde{c}^{\beta}}\tilde{c}^{\gamma}\mathbf{b}^{\gamma}\right)\Delta\tilde{c}^{\beta}\,dv
\end{aligned}
\]
\end_inset
under the assumption that
\begin_inset Formula $D\mathbf{b}^{\alpha}\left[\Delta\mathbf{v}^{f}\right]=\mathbf{0}$
\end_inset
\end_layout
\begin_layout Subsection
Discretization for Fluid-Solutes
\end_layout
\begin_layout Standard
To evaluate the discretized form of the virtual work and its linearizations we use
\begin_inset Formula
\[
\begin{aligned}\delta\mathbf{v}^{f} & =\sum_{a}N_{a}\delta\mathbf{v}_{a}^{f} & \Delta\mathbf{v}^{f} & =\sum_{b}N_{b}\Delta\mathbf{v}_{b}^{f}\\
\delta J^{f} & =\sum_{a}N_{a}\delta J_{a}^{f} & \Delta J^{f} & =\sum_{b}N_{b}\Delta J_{b}^{f}\\
\delta\tilde{c}^{\iota} & =\sum_{a}N_{a}\delta\tilde{c}_{a}^{\iota} & \Delta\tilde{c}^{\beta} & =\sum_{b}N_{b}\Delta\tilde{c}_{b}^{\beta}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula $N_{a}$
\end_inset
are shape functions.
Then,
the discretized form of the virtual work takes the form
\begin_inset Formula
\[
\begin{aligned}\delta W_{int}^{v} & =\sum_{a}\delta\mathbf{v}_{a}^{f}\cdot\mathbf{f}_{a}^{v}\\
\delta W_{int}^{J} & =\sum_{a}\delta J_{a}^{f}f_{a}^{J}\\
\delta W_{int}^{c} & =\sum_{\iota}\sum_{a}\delta\tilde{c}_{a}^{\iota}f_{a}^{\iota}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\[
\begin{aligned}\mathbf{f}_{a}^{v} & =\int_{\Omega^{f}}N_{a}\left(\grad\tilde{p}+\rho^{f}\mathbf{a}^{f}+\sum_{\iota}R\theta\tilde{\kappa}^{\iota}\grad\tilde{c}^{\iota}\right)+\boldsymbol{\tau}\cdot\grad N_{a}dv\\
f_{a}^{J} & =\int_{\Omega^{f}}N_{a}\frac{1}{J^{f}}\frac{D^{f}J^{f}}{Dt}+\grad N_{a}\cdot\mathbf{v}^{f}dv\\
f_{a}^{\iota} & =\int_{\Omega^{f}}-N_{a}\left(\frac{1}{J^{f}}\frac{D^{f}\left(J^{f}c^{\iota}\right)}{Dt}-\hat{c}^{\iota}\right)+\grad N_{a}\cdot\left(\mathbf{j}_{d}^{\iota}+\sum_{\gamma}z^{\gamma}\mathbf{j}_{d}^{\gamma}\right)dv
\end{aligned}
\]
\end_inset
\begin_inset Formula
\[
\begin{aligned}\frac{1}{J^{f}}\frac{D^{f}\left(J^{f}c^{\iota}\right)}{Dt} & =\frac{c^{\iota}}{J^{f}}\frac{D^{f}J^{f}}{Dt}+\tilde{\kappa}^{\iota}\frac{D^{f}\tilde{c}^{\iota}}{Dt}+\tilde{c}^{\iota}\frac{D^{f}\tilde{\kappa}^{\iota}}{Dt}\end{aligned}
\]
\end_inset
and
\begin_inset Formula
\[
\begin{aligned}\delta G_{ext}^{v} & =\sum_{a}\delta\mathbf{v}_{a}^{f}\cdot\mathbf{b}_{a}^{v}\\
\delta G_{ext}^{c} & =\sum_{\iota}\sum_{a}\delta\tilde{c}_{a}^{\iota}b_{a}^{\iota}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\[
\begin{aligned}\mathbf{b}_{a}^{v} & =\int_{\Omega^{f}}N_{a}\left(\rho^{f}\mathbf{b}^{f}+\sum_{\iota}M^{\iota}c^{\iota}\mathbf{b}^{\iota}\right)dv\\
b_{a}^{\iota} & =\int_{\Omega^{f}}N_{a}\divg\left(\mathbf{j}_{b}^{\iota}+\sum_{\gamma}z^{\gamma}\mathbf{j}_{b}^{\gamma}\right)\,dv
\end{aligned}
\]
\end_inset
Note that
\begin_inset Formula
\[
\begin{aligned}\frac{D^{f}J^{f}}{Dt} & =\frac{\partial J^{f}}{\partial t}+\grad J^{f}\cdot\mathbf{v}^{f}\\
\frac{D^{f}c^{\iota}}{Dt} & =\frac{\partial c^{\iota}}{\partial t}+\grad c^{\iota}\cdot\mathbf{v}^{f}\\
& =\tilde{\kappa}^{\iota}\frac{\partial\tilde{c}^{\iota}}{\partial t}+\tilde{c}^{\iota}\frac{\partial\tilde{\kappa}^{\iota}}{\partial t}+\left(\tilde{\kappa}^{\iota}\grad\tilde{c}^{\iota}+\tilde{c}^{\iota}\grad\tilde{\kappa}^{\iota}\right)\cdot\mathbf{v}^{f}\\
\frac{D^{f}\tilde{\kappa}^{\iota}}{Dt} & =\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\frac{D^{f}J^{f}}{Dt}+\sum_{\gamma}\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\gamma}}\frac{D\tilde{c}^{\gamma}}{Dt}\\
\grad\tilde{\kappa}^{\iota} & =\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\grad J+\sum_{\gamma}\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\gamma}}\grad\tilde{c}^{\gamma}\\
\frac{D^{f}\left(J^{f}c^{\iota}\right)}{Dt} & =c^{\iota}\frac{D^{f}J^{f}}{Dt}+J^{f}\frac{D^{f}c^{\iota}}{Dt}
\end{aligned}
\]
\end_inset
The linearization of
\begin_inset Formula $\delta W_{int}^{v}$
\end_inset
gets discretized into
\begin_inset Formula
\[
\begin{aligned}D\left(\delta W_{int}^{v}\right)\left[\Delta\mathbf{v}^{f}\right] & =\sum_{a}\delta\mathbf{v}_{a}^{f}\cdot\sum_{b}\alpha_{f}\mathbf{K}_{ab}^{vv}\cdot\Delta\mathbf{v}_{b}^{f}\\
D\left(\delta W_{int}^{v}\right)\left[\Delta J^{f}\right] & =\sum_{a}\delta\mathbf{v}_{a}^{f}\cdot\sum_{b}\alpha_{f}\mathbf{k}_{ab}^{vJ}\Delta J_{b}^{f}\\
D\left(\delta W_{int}^{v}\right)\left[\Delta\tilde{c}^{\beta}\right] & =\sum_{a}\delta\mathbf{v}_{a}^{f}\cdot\sum_{b}\alpha_{f}\mathbf{k}_{ab}^{v\beta}\Delta\tilde{c}_{b}^{\beta}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\[
\begin{aligned}\mathbf{K}_{ab}^{vv} & =\int_{\Omega^{f}}\grad N_{a}\cdot\boldsymbol{\mathcal{C}}^{\tau}\cdot\grad N_{b}dv\\
& +\int_{\Omega^{f}}N_{a}\rho^{f}\left(\left(\frac{\alpha_{m}}{\alpha_{f}\gamma}\frac{N_{b}}{\Delta t}+\grad N_{b}\cdot\mathbf{v}^{f}\right)\mathbf{I}+N_{b}\mathbf{L}^{f}\right)dv\\
\mathbf{k}_{ab}^{vJ} & =\int_{\Omega^{f}}N_{a}\left(\tilde{p}_{J}^{\prime}\grad N_{b}+N_{b}\left(\tilde{p}_{J}^{\prime\prime}\grad J^{f}+R\theta\sum_{\gamma}\frac{\partial\tilde{\kappa}^{\gamma}}{\partial J^{f}}\grad\tilde{c}^{\gamma}\right)\right)dv\\
& +\int_{\Omega^{f}}N_{b}\boldsymbol{\tau}_{J}^{\prime}\cdot\grad N_{a}dv-\alpha_{f}\int_{\Omega^{f}}N_{a}N_{b}\frac{\rho^{f}}{J^{f}}\mathbf{a}^{f}dv\\
\mathbf{k}_{ab}^{v\beta} & =\int_{\Omega^{f}}N_{a}R\theta\left(\tilde{\kappa}^{\beta}\grad N_{b}+N_{b}\sum_{\gamma}\frac{\partial\tilde{\kappa}^{\gamma}}{\partial\tilde{c}^{\beta}}\grad\tilde{c}^{\gamma}\right)dv
\end{aligned}
\]
\end_inset
The linearization of
\begin_inset Formula $\delta W_{int}^{J}$
\end_inset
gets discretized into
\begin_inset Formula
\[
\begin{aligned}D\left(\delta W_{int}^{J}\right)\left[\Delta\mathbf{v}^{f}\right] & =\sum_{a}\delta J_{a}^{f}\sum_{b}\alpha_{f}\mathbf{k}_{ab}^{Jv}\cdot\Delta\mathbf{v}_{b}^{f}\\
D\left(\delta W_{int}^{J}\right)\left[\Delta J^{f}\right] & =\sum_{a}\delta J_{a}^{f}\sum_{b}\alpha_{f}k_{ab}^{JJ}\Delta J_{b}^{f}\\
D\left(\delta W_{int}^{J}\right)\left[\Delta\tilde{c}^{\beta}\right] & =0
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\[
\begin{aligned}\mathbf{k}_{ab}^{Jv} & =\int_{\Omega^{f}}N_{b}\left(N_{a}\frac{1}{J^{f}}\grad J^{f}+\grad N_{a}\right)dv\\
k_{ab}^{JJ} & =\int_{\Omega^{f}}\frac{N_{a}}{J^{f}}\left(\left(\frac{\alpha_{m}}{\alpha_{f}\gamma}\frac{1}{\Delta t}-\frac{1}{J^{f}}\frac{D^{f}J^{f}}{Dt}\right)N_{b}+\grad N_{b}\cdot\mathbf{v}^{f}\right)dv
\end{aligned}
\]
\end_inset
Finally,
the linearization of
\begin_inset Formula $\delta W_{int}^{c}$
\end_inset
gets discretized into
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\begin{aligned}D\left(\delta W_{int}^{c}\right)\left[\Delta\mathbf{v}^{f}\right] & =\sum_{\iota}\sum_{a}\delta\tilde{c}_{a}^{\iota}\sum_{b}\alpha_{f}\mathbf{k}_{ab}^{\iota v}\cdot\Delta\mathbf{v}_{b}^{f}\\
D\left(\delta W_{int}^{c}\right)\left[\Delta J^{f}\right] & =\sum_{\iota}\sum_{a}\delta\tilde{c}_{a}^{\iota}\sum_{b}\alpha_{f}k_{ab}^{\iota J}\Delta J_{b}^{f}\\
D\left(\delta W_{int}^{c}\right)\left[\Delta\tilde{c}^{\beta}\right] & =\sum_{\iota}\sum_{a}\delta\tilde{c}_{a}^{\iota}\sum_{b}\alpha_{f}k^{\iota\beta}\,\Delta\tilde{c}_{b}^{\beta}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\[
\begin{aligned}\mathbf{k}_{ab}^{\iota v} & =-\int_{\Omega^{f}}N_{a}N_{b}\frac{1}{J^{f}}\grad\left(J^{f}c^{\iota}\right)\,dv\\
k_{ab}^{\iota J} & =\int_{\Omega^{f}}N_{a}N_{b}\frac{1}{\left(J^{f}\right)^{2}}\frac{D^{f}\left(J^{f}c^{\iota}\right)}{Dt}\\
& -N_{a}\tilde{c}^{\iota}\left(\frac{\tilde{\kappa}^{\iota}}{J^{f}}+\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\right)\left(\frac{\alpha_{m}}{\alpha_{f}\gamma}\frac{N_{b}}{\Delta t}+\grad N_{b}\cdot\mathbf{v}^{f}\right)\\
& -N_{a}N_{b}\frac{\tilde{c}^{\iota}}{J^{f}}\frac{D^{f}J^{f}}{Dt}\left(2\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}+J^{f}\frac{\partial^{2}\tilde{\kappa}^{\iota}}{\partial\left(J^{f}\right)^{2}}\right)\\
& -N_{a}N_{b}\left(\left(\frac{\tilde{\kappa}^{\iota}}{J^{f}}+\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\right)\frac{D^{f}\tilde{c}^{\iota}}{Dt}+\tilde{c}^{\iota}\sum_{\gamma}\left(\frac{1}{J^{f}}\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\gamma}}+\frac{\partial^{2}\tilde{\kappa}^{\iota}}{\partial J^{f}\partial\tilde{c}^{\gamma}}\right)\frac{D^{f}\tilde{c}^{\gamma}}{Dt}\right)\\
& +N_{a}N_{b}\nu^{\iota}\underbrace{\frac{\partial\hat{\zeta}}{\partial J^{f}}}_{=0\text{ currently}}-N_{b}\grad N_{a}\cdot\left(\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}d_{0}^{\iota}\grad\tilde{c}^{\iota}+\sum_{\gamma}z^{\gamma}\frac{\partial\tilde{\kappa}^{\gamma}}{\partial J^{f}}d_{0}^{\gamma}\grad\tilde{c}^{\gamma}\right)dv\\
k^{\iota\beta} & =\int_{\Omega^{f}}-N_{a}\left(\delta_{\iota\beta}\tilde{\kappa}^{\beta}+\tilde{c}^{\iota}\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\beta}}\right)\left(\left(\frac{\alpha_{m}}{\alpha_{f}\gamma}\frac{1}{\Delta t}+\frac{1}{J^{f}}\frac{D^{f}J^{f}}{Dt}\right)N_{b}+\grad N_{b}\cdot\mathbf{v}^{f}\right)\\
& +N_{a}N_{b}\nu^{\iota}\frac{\partial\hat{\zeta}}{\partial\tilde{c}^{\beta}}\\
& -\grad N_{a}\cdot\left(\delta_{\iota\beta}\tilde{\kappa}^{\beta}d_{0}^{\beta}\grad N_{b}+N_{b}\left(\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\beta}}d_{0}^{\iota}+\tilde{\kappa}^{\iota}\frac{\partial d_{0}^{\iota}}{\partial\tilde{c}^{\beta}}\right)\grad\tilde{c}^{\iota}\right)\\
& -\grad N_{a}\cdot\left(z^{\beta}\tilde{\kappa}^{\beta}d_{0}^{\beta}\grad N_{b}+N_{b}\sum_{\gamma}z^{\gamma}\left(\frac{\partial\tilde{\kappa}^{\gamma}}{\partial\tilde{c}^{\beta}}d_{0}^{\gamma}+\tilde{\kappa}^{\gamma}\frac{\partial d_{0}^{\gamma}}{\partial\tilde{c}^{\beta}}\right)\grad\tilde{c}^{\gamma}\right)dv
\end{aligned}
\]
\end_inset
\begin_inset Formula
\[
\begin{aligned}\frac{1}{J^{f}}\grad\left(J^{f}c^{\iota}\right) & =\frac{1}{J^{f}}c^{\iota}\grad J^{f}+\tilde{\kappa}^{\iota}\grad\tilde{c}^{\iota}+\tilde{c}^{\iota}\grad\tilde{\kappa}^{\iota}\\
\frac{1}{J^{f}}\frac{D^{f}\left(J^{f}c^{\iota}\right)}{Dt} & =\frac{c^{\iota}}{J^{f}}\frac{D^{f}J^{f}}{Dt}+\tilde{\kappa}^{\iota}\frac{D^{f}\tilde{c}^{\iota}}{Dt}+\tilde{c}^{\iota}\frac{D^{f}\tilde{\kappa}^{\iota}}{Dt}
\end{aligned}
\]
\end_inset
\end_layout
\begin_layout Standard
For the external work contributions from body forces,
the discretized forms are
\begin_inset Formula
\[
\begin{aligned}\delta G_{ext}^{v} & =\sum_{a}\delta\mathbf{v}_{a}^{f}\cdot\mathbf{b}_{a}^{v}\\
\delta G_{ext}^{c} & =\sum_{\iota}\sum_{a}\delta\tilde{c}_{a}^{\iota}b_{a}^{\iota}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\[
\begin{aligned}\mathbf{b}_{a}^{v} & =\int_{\Omega^{f}}N_{a}\left(\rho^{f}\mathbf{b}^{f}+\sum_{\iota}M^{\iota}c^{\iota}\mathbf{b}^{\iota}\right)dv\\
b_{a}^{\iota} & =-\int_{\Omega^{f}}\grad N_{a}\cdot\left(\mathbf{j}_{b}^{\iota}+\sum_{\gamma}z^{\gamma}\mathbf{j}_{b}^{\gamma}\right)dv
\end{aligned}
\]
\end_inset
and
\begin_inset Formula
\[
\begin{aligned}D\left(\delta G_{ext}^{v}\right)\left[\Delta\mathbf{v}^{f}\right] & =\mathbf{0}\\
D\left(\delta G_{ext}^{v}\right)\left[\Delta J^{f}\right] & =\sum_{a}\delta\mathbf{v}_{a}^{f}\cdot\sum_{b}\alpha_{f}\mathbf{b}_{ab}^{vJ}\Delta J_{b}^{f}\\
D\left(\delta G_{ext}^{v}\right)\left[\Delta\tilde{c}^{\beta}\right] & =\sum_{a}\delta\mathbf{v}_{a}^{f}\cdot\sum_{b}\alpha_{f}\mathbf{b}_{ab}^{v\beta}\Delta\tilde{c}_{b}^{\beta}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\[
\begin{aligned}\mathbf{b}_{ab}^{vJ} & =\int_{\Omega^{f}}N_{a}N_{b}\left(-\frac{\rho^{f}}{J^{f}}\mathbf{b}^{f}+\sum_{\gamma}M^{\gamma}\frac{\partial\tilde{\kappa}^{\gamma}}{\partial J^{f}}\tilde{c}^{\iota}\mathbf{b}^{\gamma}\right)dv\\
\mathbf{b}_{ab}^{v\beta} & =\int_{\Omega^{f}}N_{a}N_{b}\left(M^{\beta}\tilde{\kappa}^{\beta}\mathbf{b}^{\beta}+\sum_{\gamma}M^{\gamma}\frac{\partial\tilde{\kappa}^{\gamma}}{\partial\tilde{c}^{\beta}}\tilde{c}^{\gamma}\mathbf{b}^{\gamma}\right)dv
\end{aligned}
\]
\end_inset
Similarly,
\begin_inset Formula
\[
\begin{aligned}D\left(\delta G_{ext}^{c}\right)\left[\Delta\mathbf{v}^{f}\right] & =\mathbf{0}\\
D\left(\delta G_{ext}^{c}\right)\left[\Delta J^{f}\right] & =\sum_{\iota}\sum_{a}\delta\tilde{c}_{a}^{\iota}\sum_{b}\alpha_{f}b_{ab}^{\iota J}\Delta J_{b}^{f}\\
D\left(\delta G_{ext}^{c}\right)\left[\Delta\tilde{c}^{\beta}\right] & =\sum_{\iota}\sum_{a}\delta\tilde{c}_{a}^{\iota}\sum_{b}\alpha_{f}b_{ab}^{\iota\beta}\Delta\tilde{c}_{b}^{\beta}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\[
\begin{aligned}b_{ab}^{\iota J} & =-\int_{\Omega^{f}}N_{b}\grad N_{a}\cdot\left(s^{\iota}\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\tilde{c}^{\iota}\mathbf{b}^{\iota}+\sum_{\gamma}z^{\gamma}s^{\gamma}\frac{\partial\tilde{\kappa}^{\gamma}}{\partial J^{f}}\tilde{c}^{\gamma}\mathbf{b}^{\gamma}\right)dv\\
b_{ab}^{\iota\beta} & =-\int_{\Omega^{f}}N_{b}\grad N_{a}\cdot\left(\left(\delta_{\iota\beta}+z^{\beta}\right)s^{\beta}\tilde{\kappa}^{\beta}\mathbf{b}^{\beta}+s^{\iota}\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\beta}}\tilde{c}^{\iota}\mathbf{b}^{\iota}+\sum_{\gamma}z^{\gamma}s^{\gamma}\frac{\partial\tilde{\kappa}^{\gamma}}{\partial\tilde{c}^{\beta}}\tilde{c}^{\gamma}\mathbf{b}^{\gamma}\right)\,dv
\end{aligned}
\]
\end_inset
In the special case when the body force acting on each constituent is the same,
\begin_inset Formula $\mathbf{b}^{f}=\mathbf{b}^{\iota}\equiv\mathbf{b}$
\end_inset
,
these expressions simplify further,
\begin_inset Formula
\[
\begin{aligned}b_{ab}^{\iota J} & =-\int_{\Omega^{f}}N_{b}\left(w^{\iota J}+w_{e}^{cJ}\right)\grad N_{a}\cdot\mathbf{b}dv\\
b_{ab}^{\iota\beta} & =-\int_{\Omega^{f}}N_{b}\left(\left(\delta_{\iota\beta}+z^{\beta}\right)s^{\beta}\tilde{\kappa}^{\beta}+w^{\iota\beta}+w_{e}^{c\beta}\right)\grad N_{a}\cdot\mathbf{b}\,dv
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\[
\begin{aligned}w^{\iota J} & \equiv s^{\iota}\frac{\partial\tilde{\kappa}^{\iota}}{\partial J^{f}}\tilde{c}^{\iota} & w_{e}^{cJ} & \equiv\sum_{\gamma}z^{\gamma}s^{\gamma}\frac{\partial\tilde{\kappa}^{\gamma}}{\partial J^{f}}\tilde{c}^{\gamma}\\
w^{\iota\beta} & \equiv s^{\iota}\frac{\partial\tilde{\kappa}^{\iota}}{\partial\tilde{c}^{\beta}}\tilde{c}^{\iota} & w_{e}^{c\beta} & \equiv\sum_{\gamma}z^{\gamma}s^{\gamma}\frac{\partial\tilde{\kappa}^{\gamma}}{\partial\tilde{c}^{\beta}}\tilde{c}^{\gamma}
\end{aligned}
\]
\end_inset
\end_layout
\begin_layout Section
Newton-Raphson Method
\begin_inset CommandInset label
LatexCommand label
name "sec:Newton-Raphson-Method"
\end_inset
\end_layout
\begin_layout Standard
The Newton-Raphson method (also known as
\begin_inset Quotes eld
\end_inset
Newton's method
\begin_inset Quotes erd
\end_inset
,
\begin_inset Quotes eld
\end_inset
Full Newton method
\begin_inset Quotes erd
\end_inset
or
\begin_inset Quotes eld
\end_inset
the Newton method
\begin_inset Quotes erd
\end_inset
) is the basis for solving the nonlinear finite element equations.
This section will describe the
\emph on
Full Newton method
\emph default
and the Broyden-Fletcher-Goldfarb-Shanno (BFGS) method
\begin_inset CommandInset citation
LatexCommand citep
key "Matthies79"
literal "true"
\end_inset
.
The latter variation is actually a
\emph on
quasi-Newton method
\emph default
.
It is important since it provides several advantages over the full Newton method and it is this method that is implemented in FEBio
\begin_inset CommandInset citation
LatexCommand citep
key "Matthies79"
literal "true"
\end_inset
.
\end_layout
\begin_layout Subsection
Full Newton Method
\begin_inset CommandInset label
LatexCommand label
name "subsec:Full-Newton-Method"
\end_inset
\end_layout
\begin_layout Standard
The Newton-Raphson equation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq173"
nolink "false"
\end_inset
can be written in terms of the discretized equilibrium equations that were derived in the previous section as follows:
\begin_inset Formula
\begin{equation}
\delta\mathbf{v}^{T}\cdot\mathbf{K}\cdot\mathbf{u}=-\delta\mathbf{v}^{T}\cdot\mathbf{R}.\label{eq355}
\end{equation}
\end_inset
Since the virtual velocities
\begin_inset Formula $\delta\mathbf{v}$
\end_inset
are arbitrary,
a discretized Newton-Raphson scheme can be formulated as follows:
\begin_inset Formula
\begin{equation}
\begin{array}{cc}
\mathbf{K}\left(\mathbf{x}_{k}\right)\cdot\mathbf{u}=-\mathbf{R}\left(\mathbf{x}_{k}\right); & \mathbf{x}_{k+1}=\mathbf{x}_{k}+\mathbf{u}\end{array}.\label{eq356}
\end{equation}
\end_inset
This is the basis of the Newton-Raphson method.
For each iteration
\begin_inset Formula $k$
\end_inset
,
both the stiffness matrix and the residual vector are re-evaluated and a displacement increment
\series bold
u
\series default
is calculated by pre-multiplying both sides of the above equation by
\begin_inset Formula $\mathbf{K}^{-1}$
\end_inset
.
This procedure is repeated until some convergence criteria are satisfied.
\end_layout
\begin_layout Standard
The formation of the stiffness matrix and,
especially,
calculation of its inverse,
are computationally expensive.
Quasi-Newton methods do not require the reevaluation of the stiffness matrix for every iteration.
Instead,
a quick update is calculated.
One particular method that has been quite successful in the field of computational solid mechanics is the BFGS method,
which is described in the next section.
\end_layout
\begin_layout Subsection
BFGS Method
\begin_inset CommandInset label
LatexCommand label
name "subsec:BFGS-Method"
\end_inset
\end_layout
\begin_layout Standard
The BFGS method updates the stiffness matrix (or rather its inverse) to provide an approximation to the exact matrix.
A displacement increment is defined as
\begin_inset Formula
\begin{equation}
\mathbf{d}_{k}=\mathbf{x}_{k}-\mathbf{x}_{k-1}\,,\label{eq357}
\end{equation}
\end_inset
and an increment in the residual is defined as
\begin_inset Formula
\begin{equation}
\mathbf{G}_{k}=\mathbf{R}_{k-1}-\mathbf{R}_{k}\,.\label{eq358}
\end{equation}
\end_inset
The updated matrix
\begin_inset Formula $\mathbf{K}_{k}$
\end_inset
should satisfy the quasi-Newton equation:
\begin_inset Formula
\begin{equation}
\mathbf{K}_{k}\mathbf{d}_{k}=\mathbf{G}_{k}\,.\label{eq359}
\end{equation}
\end_inset
In order to calculate this update,
as displacement increment is first calculated:
\begin_inset Formula
\begin{equation}
\mathbf{u}=\mathbf{K}_{k-1}^{-1}\mathbf{R}_{k-1}\,.\label{eq360}
\end{equation}
\end_inset
This displacement vector defines a
\begin_inset Quotes eld
\end_inset
direction
\begin_inset Quotes erd
\end_inset
for the actual displacement increment.
A line search (see next section) can now be applied to determine the optimal displacement increment:
\begin_inset Formula
\begin{equation}
\mathbf{x}_{k}=\mathbf{x}_{k-1}+s\mathbf{u}\,,\label{eq361}
\end{equation}
\end_inset
where
\begin_inset Formula $s$
\end_inset
is determined from the line search.
With the updated position calculated,
\begin_inset Formula $\mathbf{R}_{k}$
\end_inset
can be evaluated.
Also,
using equations
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq357"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq358"
nolink "false"
\end_inset
,
\begin_inset Formula $\mathbf{d}_{k}$
\end_inset
and
\begin_inset Formula $\mathbf{G}_{k}$
\end_inset
can be evaluted.
The stiffness update can now be expressed as
\begin_inset Formula
\begin{equation}
\mathbf{K}_{k}^{-1}=\mathbf{A}_{k}^{T}\mathbf{K}_{k-1}^{-1}\mathbf{A}_{k}\,,\label{eq362}
\end{equation}
\end_inset
where the matrix
\series bold
\begin_inset Formula $\mathbf{A}$
\end_inset
\series default
is an
\begin_inset Formula $n\times n$
\end_inset
matrix of the simple form:
\begin_inset Formula
\begin{equation}
\mathbf{A}_{k}=\mathbf{1}+\mathbf{v}_{k}\mathbf{w}_{k}^{T}\,.\label{eq363}
\end{equation}
\end_inset
The vectors
\series bold
\begin_inset Formula $\mathbf{v}$
\end_inset
\series default
and
\series bold
\begin_inset Formula $\mathbf{w}$
\end_inset
\series default
are given by
\begin_inset Formula
\begin{equation}
\mathbf{v}_{k}=-\left(\frac{\mathbf{d}_{k}^{T}\mathbf{G}_{k}}{\mathbf{d}_{k}^{T}\mathbf{K}_{k-1}\mathbf{d}_{k}}\right)^{1/2}\mathbf{K}_{k-1}\mathbf{d}_{k}-\mathbf{G}_{k}\,,\label{eq364}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{w}_{k}=\frac{\mathbf{d}_{k}}{\mathbf{d}_{k}^{T}\mathbf{G}_{k}}\,.\label{eq365}
\end{equation}
\end_inset
The vector
\begin_inset Formula $\mathbf{K}_{k-1}\mathbf{d}_{k}$
\end_inset
is equal to
\begin_inset Formula $s\mathbf{R}_{k-1}$
\end_inset
and has already been calculated.
\end_layout
\begin_layout Standard
To avoid numerically dangerous updates,
the condition number
\begin_inset Formula $c$
\end_inset
of the updating matrix
\series bold
\begin_inset Formula $\mathbf{A}$
\end_inset
\series default
is calculated:
\begin_inset Formula
\begin{equation}
c=\left(\frac{\mathbf{d}_{k}^{T}\mathbf{G}_{k}}{\mathbf{d}_{k}^{T}\mathbf{K}_{k-1}\mathbf{d}_{k}}\right)^{1/2}\,.\label{eq365b}
\end{equation}
\end_inset
The update is not performed when this number exceeds a preset tolerance.
\end_layout
\begin_layout Standard
Considering the actual computations involved,
it should be noted that using the matrix updates defined above,
the calculation of the search direction in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq360"
nolink "false"
\end_inset
can be rewritten as,
\begin_inset Formula
\begin{equation}
\mathbf{u}=\left(\mathbf{1}+\mathbf{w}_{k-1}\mathbf{v}_{k-1}^{T}\right)\cdots\left(\mathbf{1}+\mathbf{w}_{1}\mathbf{v}_{1}^{T}\right)\mathbf{K}_{0}^{-1}\left(\mathbf{1}+\mathbf{v}_{1}\mathbf{w}_{1}^{T}\right)\cdots\left(\mathbf{1}+\mathbf{v}_{k-1}\mathbf{w}_{k-1}^{T}\right)\mathbf{R}_{k-1}\,.\label{eq366}
\end{equation}
\end_inset
Hence,
the search direction can be computed without explicitly calculating the updated matrices or performing any additional costly matrix factorizations as required in the full Newton-Raphson method.
\end_layout
\begin_layout Subsection
Line Search Method
\begin_inset CommandInset label
LatexCommand label
name "subsec:Line-Search-Method"
\end_inset
\end_layout
\begin_layout Standard
A powerful technique often used to improve the convergence rate of Newton based methods is the
\emph on
line search method
\emph default
.
In this method,
the direction of the displacement vector
\series bold
\begin_inset Formula $\mathbf{u}$
\end_inset
\series default
is considered as optimal,
but the magnitude is controlled by a parameter
\begin_inset Formula $s$
\end_inset
:
\begin_inset Formula
\begin{equation}
\mathbf{x}_{k+1}=\mathbf{x}_{k}+s\mathbf{u}\,.\label{eq367}
\end{equation}
\end_inset
The value of
\begin_inset Formula $s$
\end_inset
is usually chosen so that the total potential energy
\begin_inset Formula $W\left(s\right)=W\left(\mathbf{x}_{k}+s\mathbf{u}\right)$
\end_inset
at the end of the iteration is minimized in the direction of
\series bold
\begin_inset Formula $\mathbf{u}$
\end_inset
\series default
.
This is equivalent to the requirement that the residual force
\begin_inset Formula $\mathbf{R}\left(\mathbf{x}_{k}+s\mathbf{u}\right)$
\end_inset
at the end of the iteration is orthogonal to
\series bold
\begin_inset Formula $\mathbf{u}$
\end_inset
\series default
:
\begin_inset Formula
\begin{equation}
R\left(s\right)=\mathbf{u}^{T}\mathbf{R}\left(\mathbf{x}_{k}+s\mathbf{u}\right)=0\,.\label{eq368}
\end{equation}
\end_inset
However,
in practice it is sufficient to obtain a value of
\begin_inset Formula $s$
\end_inset
such that,
\begin_inset Formula
\begin{equation}
\left|R\left(s\right)\right|<\rho\left|R\left(0\right)\right|\,,\label{eq369}
\end{equation}
\end_inset
where typically a value of
\begin_inset Formula $\rho=0.9$
\end_inset
is used.
Under normal conditions the value
\begin_inset Formula $s=1$
\end_inset
automatically satisfies equation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq369"
nolink "false"
\end_inset
and therefore few extra operations are involved.
However,
when this is not the case,
a more suitable value for
\begin_inset Formula $s$
\end_inset
needs to be obtained.
For this reason it is convenient to approximate
\begin_inset Formula $R\left(s\right)$
\end_inset
as a quadratic in
\begin_inset Formula $s$
\end_inset
:
\begin_inset Formula
\begin{equation}
R\left(s\right)\approx\left(1-s\right)R\left(0\right)+R\left(1\right)s^{2}=0\,,\label{eq370}
\end{equation}
\end_inset
which yields a value for
\begin_inset Formula $s$
\end_inset
as
\begin_inset Formula
\begin{equation}
s=\frac{r}{2}\pm\sqrt{\left(\frac{r}{2}\right)^{2}-r}\,,\quad r=\frac{R\left(0\right)}{R\left(1\right)}\,.\label{eq371}
\end{equation}
\end_inset
If
\begin_inset Formula $r<0$
\end_inset
,
the square root is positive and a first improved value for
\begin_inset Formula $s$
\end_inset
is obtained:
\begin_inset Formula
\begin{equation}
s_{1}=\frac{r}{2}+\sqrt{\left(\frac{r}{2}\right)^{2}-r}\,.\label{eq372}
\end{equation}
\end_inset
If
\begin_inset Formula $r>0$
\end_inset
the
\begin_inset Formula $s$
\end_inset
can be obtained by using the value that minimizes the quadratic function,
that is,
\begin_inset Formula $s_{1}=r/2$
\end_inset
.
This procedure is now repeated with
\begin_inset Formula $R\left(1\right)$
\end_inset
replaced by
\begin_inset Formula $R\left(s_{1}\right)$
\end_inset
until equation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq369"
nolink "false"
\end_inset
is satisfied.
\end_layout
\begin_layout Subsection
Conjugate gradient solution method
\end_layout
\begin_layout Standard
The Newton-Raphson solution algorithms are highly effective for nearly linear problems,
but they have two major limitations.
Firstly,
for very large models,
the size of the stiffness matrix K can grow very large as well.
The factorization of this matrix,
which is needed when using direct linear solvers,
can become very time consuming and requires a large amount of memory.
This is the main factor that limits the size of model that can be solved on a given computer.
Secondly,
where the stiffness is small,
it can overestimate the displacement,
resulting in excessive distortion of the mesh and the familiar negative Jacobian failure.
This can occur when a material has a low initial stiffness that increases at higher strains (we work around this by using a large number of small timesteps to reduce the nonlinearity on each increment),
when buckling causes a temporary low or negative stiffness,
when a part of the model is not sufficiently constrained,
or when contacts cause sudden changes of stiffness.
For these reasons the Newton-Raphson algorithms often fail to converge for very nonlinear materials,
models with contacts or unstable structures that can buckle or crumple under load.
\end_layout
\begin_layout Standard
An alternative strategy is to estimate a direction to move each node directly from the residual R:
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\boldsymbol{u=-}\boldsymbol{R\left(x_{k}\right)}
\]
\end_inset
\end_layout
\begin_layout Standard
Then a line search is needed to find the appropriate distance to move in that direction.
This is the steepest descent method,
which has the disadvantage that it converges slowly in a series of decreasing zig-zag steps.
Its convergence is much improved by adding a fraction β of the previous step:
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\boldsymbol{u}_{k}=-\boldsymbol{R}\left(\boldsymbol{x}_{k}\right)+\beta\boldsymbol{u}_{k-1}
\]
\end_inset
\end_layout
\begin_layout Standard
There are many different ways to calculate β;
one method which has excellent convergence for nonlinear problems is due to Hager and Zhang:
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\boldsymbol{y}_{i}=\boldsymbol{R}_{i-1}-\boldsymbol{R}_{i}
\]
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\beta_{i}=\frac{-1}{\boldsymbol{u}_{i-1}\cdot\boldsymbol{y}_{i}}\left(\boldsymbol{y}_{i}-2\boldsymbol{u}_{i-1}\frac{\left\Vert \boldsymbol{y}_{i}\right\Vert ^{2}}{\boldsymbol{u}_{i-1}\cdot\boldsymbol{y}_{i}}\right)\cdot\boldsymbol{R}_{i}
\]
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\eta_{i}=\frac{-1}{\left\Vert \boldsymbol{u}_{i-1}\right\Vert min\left\{ \eta,\left\Vert \boldsymbol{R}_{i-1}\right\Vert \right\} }
\]
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\beta_{i}=max\left\{ \beta_{i},\eta_{i}\right\}
\]
\end_inset
\end_layout
\begin_layout Standard
A limitation of this method is that the distance each node moves is proportional to the residual;
stiffer nodes produce a larger residual for a given displacement and therefore move further,
whereas in fact they need to move less than more compliant nodes.
This results in mesh distortion where the element size varies,
for midside nodes in quadratic elements or for mixed materials.
This problem can be reduced by using a preconditioner,
dividing the residual at each node by an estimate of its stiffness.
This requires changes also to the calculation of β:
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\beta_{i}=\frac{-1}{\boldsymbol{u}_{i-1}\cdot\boldsymbol{y}_{i}}\left(\boldsymbol{y_{i}^{T}P}-2\boldsymbol{u}_{i-1}\frac{\boldsymbol{y_{i}^{T}Py}_{i}}{\boldsymbol{u}_{i-1}\cdot\boldsymbol{y}_{i}}\right)\cdot\boldsymbol{R}_{i}
\]
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\eta_{i}=0.4\frac{\Delta\boldsymbol{u}_{i-1}^{T}\boldsymbol{R}_{i}}{\boldsymbol{u_{i-1}^{T}P^{-1}u_{i-1}}}
\]
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\beta_{i}=max\left\{ \beta_{i},\eta_{i}\right\}
\]
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\boldsymbol{u}_{i+1}=\boldsymbol{P}\boldsymbol{R}_{i}+\beta_{i}\boldsymbol{u}_{i}
\]
\end_inset
\end_layout
\begin_layout Standard
The preconditioner
\series bold
P
\series default
can be found in various ways;
a convenient approximation is to use the reciprocal of the main diagonal of the stiffness matrix:
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\boldsymbol{P}^{-1}=diag\left(\boldsymbol{K}\right)
\]
\end_inset
\end_layout
\begin_layout Standard
This is calculated once at the beginning of the solution.
\end_layout
\begin_layout Section
Generalized
\begin_inset Formula $\alpha-$
\end_inset
Method
\begin_inset CommandInset label
LatexCommand label
name "sec:Generalized-Alpha-Method"
\end_inset
\end_layout
\begin_layout Standard
The generalized
\begin_inset Formula $\alpha-$
\end_inset
method is used for temporal discretization of governing equations in fluid mechanics.
For this method we combine the degrees of freedom into
\begin_inset Formula $\mathbf{Y}_{n}=\left\{ \mathbf{v},J\right\} _{n}$
\end_inset
,
where the subscript
\begin_inset Formula $n$
\end_inset
denotes time
\begin_inset Formula $t_{n}$
\end_inset
;
similarly,
we let
\begin_inset Formula $\dot{\mathbf{Y}}_{n}=\left\{ \frac{\partial\mathbf{v}}{\partial t},\frac{\partial J}{\partial t}\right\} _{n}$
\end_inset
.
According to this method
\begin_inset CommandInset citation
LatexCommand cite
key "Jansen00"
literal "true"
\end_inset
,
the virtual work is evaluated at
\begin_inset Formula $\delta W\left(\dot{\mathbf{Y}}_{n+\alpha_{m}},\mathbf{Y}_{n+\alpha_{f}}\right)$
\end_inset
,
where
\begin_inset Formula $t_{n+\alpha}=t_{n}+\alpha\Delta t$
\end_inset
and
\begin_inset Formula $\Delta t=t_{n+1}-t_{n}$
\end_inset
.
Here,
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{Y}_{n+\alpha_{f}} & =\alpha_{f}\mathbf{Y}_{n+1}+\left(1-\alpha_{f}\right)\mathbf{Y}_{n}\\
\dot{\mathbf{Y}}_{n+\alpha_{m}} & =\alpha_{m}\dot{\mathbf{Y}}_{n+1}+\left(1-\alpha_{m}\right)\dot{\mathbf{Y}}_{n}
\end{aligned}
\,.\label{eq:ga-Y-Ydot}
\end{equation}
\end_inset
The parameters
\begin_inset Formula $\alpha_{f}$
\end_inset
and
\begin_inset Formula $\alpha_{m}$
\end_inset
are evaluated from a single parameter
\begin_inset Formula $\rho_{\infty}$
\end_inset
using
\begin_inset Formula
\begin{equation}
\alpha_{f}=\frac{1}{1+\rho_{\infty}}\,,\quad\alpha_{m}=\frac{1}{2}\frac{3-\rho_{\infty}}{1+\rho_{\infty}}\,,\label{eq:ga-alphas}
\end{equation}
\end_inset
where
\begin_inset Formula $0\le\rho_{\infty}\le1$
\end_inset
.
This parameter is the spectral radius for an infinite time step,
which controls the amount of damping of high frequencies;
a value of zero produces the greatest amount of damping,
anihilating the highest frequency in one step,
whereas a value of one preserves the highest frequency.
\end_layout
\begin_layout Standard
The linearization of
\begin_inset Formula $\delta W\left(\dot{\mathbf{Y}}_{n+\alpha_{m}},\mathbf{Y}_{n+\alpha_{f}}\right)$
\end_inset
reported in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:CFD-Discretization-Linearization"
nolink "false"
\end_inset
is effectively performed along an increment
\begin_inset Formula $\Delta\mathbf{Y}$
\end_inset
of
\begin_inset Formula $\mathbf{Y}_{n+1}$
\end_inset
so that the solution to
\begin_inset Formula $\delta W=0$
\end_inset
produces
\begin_inset Formula $\mathbf{Y}_{n+1}$
\end_inset
.
Based on Newmark integration,
we have
\begin_inset Formula
\begin{equation}
\dot{\mathbf{Y}}_{n+1}=\frac{\mathbf{Y}_{n+1}-\mathbf{Y}_{n}}{\gamma\Delta t}-\left(\frac{1}{\gamma}-1\right)\dot{\mathbf{Y}}_{n}\,.\label{eq:ga-Newmark-integration}
\end{equation}
\end_inset
where,
according to the generalized
\begin_inset Formula $\alpha-$
\end_inset
method,
\begin_inset Formula
\begin{equation}
\gamma=\frac{1}{2}+\alpha_{m}-\alpha_{f}\,.\label{eq:ga-ksi-gamma}
\end{equation}
\end_inset
Therefore,
in this scheme,
\begin_inset Formula $\dot{\mathbf{Y}}_{n+\alpha_{m}}$
\end_inset
is evaluated from
\begin_inset Formula
\begin{equation}
\dot{\mathbf{Y}}_{n+\alpha_{m}}=\left(1-\frac{\alpha_{m}}{\gamma}\right)\dot{\mathbf{Y}}_{n}+\frac{\xi}{\Delta t}\left(\mathbf{Y}_{n+\alpha_{f}}-\mathbf{Y}_{n}\right)\,,\quad\xi\equiv\frac{\alpha_{m}}{\alpha_{f}\gamma}.\label{eq:ga-Ydot-evaluation}
\end{equation}
\end_inset
Using
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:ga-Y-Ydot"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:ga-Ydot-evaluation"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
we find that
\begin_inset Formula
\begin{equation}
\begin{aligned}D\mathbf{Y}_{n+\alpha_{f}}\left[\Delta\mathbf{Y}\right] & =\alpha_{f}\Delta\mathbf{Y}\\
D\dot{\mathbf{Y}}_{n+\alpha_{m}}\left[\Delta\mathbf{Y}\right] & =\frac{\alpha_{m}}{\gamma}\frac{\Delta\mathbf{Y}}{\Delta t}
\end{aligned}
\label{eq:ga-Y-Ydot-linearization}
\end{equation}
\end_inset
Given the solution
\begin_inset Formula $\left(\dot{\mathbf{Y}}_{n+\alpha_{m}},\mathbf{Y}_{n+\alpha_{f}}\right)$
\end_inset
,
the solution at
\begin_inset Formula $t_{n+1}$
\end_inset
is evaluated from
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{Y}_{n+1} & =\mathbf{Y}_{n}+\frac{\mathbf{Y}_{n+\alpha_{f}}-\mathbf{Y}_{n}}{\alpha_{f}}\,,\\
\dot{\mathbf{Y}}_{n+1} & =\dot{\mathbf{Y}}_{n}+\frac{\dot{\mathbf{Y}}_{n+\alpha_{m}}-\dot{\mathbf{Y}}_{n}}{\alpha_{m}}\,.
\end{aligned}
\label{eq:ga-Y-updates}
\end{equation}
\end_inset
Four different options are presented in
\begin_inset CommandInset citation
LatexCommand cite
key "Jansen00"
literal "true"
\end_inset
for initializing
\begin_inset Formula $\mathbf{Y}_{n+1}$
\end_inset
and
\begin_inset Formula $\dot{\mathbf{Y}}_{n+1}$
\end_inset
at the beginning of time step
\begin_inset Formula $t_{n+1}$
\end_inset
;
the first three of these have been implemented in FEBio.
For steady flows these authors recommend disregarding
\begin_inset Formula $\rho_{\infty}$
\end_inset
and setting
\begin_inset Formula $\alpha_{f}=\alpha_{m}=\gamma=1$
\end_inset
to recover the backward Euler scheme.
\end_layout
\begin_layout Chapter
Element Library
\begin_inset CommandInset label
LatexCommand label
name "chap:Element-Library"
\end_inset
\end_layout
\begin_layout Standard
FEBio provides several element types for finite element discretization.
This chapter describes these elements in more detail.
\end_layout
\begin_layout Section
Solid Elements
\begin_inset CommandInset label
LatexCommand label
name "sec:Solid-elements"
\end_inset
\end_layout
\begin_layout Standard
The 3D solid elements available in FEBio are
\emph on
isoparametric elements
\emph default
.
All of the solid elements are formulated in a global Cartesian coordinate system.
For all these elements,
a local coordinate system (so-called
\emph on
isoparametric coordinates
\emph default
) is defined as well.
The global position vector
\series bold
\begin_inset Formula $\mathbf{x}$
\end_inset
\series default
can be written as a function of the isoparametric coordinates in the following sense:
\begin_inset Formula
\begin{equation}
\mathbf{x}\left(r,s,t\right)=\sum\limits_{i=1}^{n}N_{i}\left(r,s,t\right)\mathbf{x}_{i}.\label{eq373}
\end{equation}
\end_inset
Here,
\begin_inset Formula $n$
\end_inset
is the number of nodes,
\begin_inset Formula $r$
\end_inset
,
\begin_inset Formula $s$
\end_inset
and
\begin_inset Formula $t$
\end_inset
are the isoparametric coordinates,
\begin_inset Formula $N_{i}$
\end_inset
are the element shape functions and
\begin_inset Formula $\mathbf{x}_{i}$
\end_inset
are the spatial coordinates of the element nodes.
The same parametric interpolation is used for the interpolation of other scalar and vector quantities.
\end_layout
\begin_layout Standard
All elements in FEBio are integrated numerically.
This implies that integrals over the volume of the element
\begin_inset Formula $v^{e}$
\end_inset
are approximated by a sum:
\begin_inset Formula
\begin{equation}
\int\limits_{v^{e}}f\left(\mathbf{x}\right)\,dv=\int\limits_{\Square^{e}}f\left({\mathbf{r}}\right)J(\mathbf{r})d\Square\,\cong\sum\limits_{i=1}^{m}f\left(\mathbf{r}_{i}\right)J_{i}w_{i}\,.\label{eq374}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\Square$
\end_inset
is the biunit cube,
\begin_inset Formula $m$
\end_inset
is the number of integration points,
\begin_inset Formula $\mathbf{r}_{i}$
\end_inset
are the location of the integration points in isoparametric coordinates,
\begin_inset Formula $J$
\end_inset
is the Jacobian of the transformation
\begin_inset Formula $\mathbf{x}=\mathbf{x}\left(r,s,t\right)$
\end_inset
,
and
\begin_inset Formula $w_{i}$
\end_inset
is a weight associated with the integration point.
The integration is performed over the element's volume in the natural coordinate system.
\end_layout
\begin_layout Standard
Most fully integrated solid elements are unsuitable for the analysis of (nearly-) incompressible material behavior.
To deal with this type of deformation,
a three-field element implementation is available in FEBio
\begin_inset CommandInset citation
LatexCommand citep
key "Simo91"
literal "true"
\end_inset
.
\end_layout
\begin_layout Subsection
Hexahedral Elements
\begin_inset CommandInset label
LatexCommand label
name "subsec:Hexahedral-Elements"
\end_inset
\end_layout
\begin_layout Standard
FEBio implements an 8-node trilinear hexahedral element.
This element is also known as a
\emph on
brick
\emph default
element.
The shape functions for these elements are defined in function of the isoparametric coordinates
\begin_inset Formula $r$
\end_inset
,
\begin_inset Formula $s$
\end_inset
and
\begin_inset Formula $t,$
\end_inset
and are given below.
\begin_inset Formula
\begin{equation}
\begin{aligned}N_{1} & =\frac{1}{8}\left(1-r\right)\left(1-s\right)\left(1-t\right)\\
N_{2} & =\frac{1}{8}\left(1+r\right)\left(1-s\right)\left(1-t\right)\\
N_{3} & =\frac{1}{8}\left(1+r\right)\left(1+s\right)\left(1-t\right)\\
N_{4} & =\frac{1}{8}\left(1-r\right)\left(1+s\right)\left(1-t\right)\\
N_{5} & =\frac{1}{8}\left(1-r\right)\left(1-s\right)\left(1+t\right)\\
N_{6} & =\frac{1}{8}\left(1+r\right)\left(1-s\right)\left(1+t\right)\\
N_{7} & =\frac{1}{8}\left(1+r\right)\left(1+s\right)\left(1+t\right)\\
N_{8} & =\frac{1}{8}\left(1-r\right)\left(1+s\right)\left(1+t\right)
\end{aligned}
\,.\label{eq375}
\end{equation}
\end_inset
The following integration rule is implemented for this element type.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
8-point Gauss rule
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
r
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
s
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
t
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
w
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsection
Pentahedral Elements
\begin_inset CommandInset label
LatexCommand label
name "subsec:Pentahedral-Elements"
\end_inset
\end_layout
\begin_layout Standard
Pentahedral elements (also knows as
\begin_inset Quotes eld
\end_inset
wedge
\begin_inset Quotes erd
\end_inset
elements) consist of six nodes and five faces.
Their shape functions are defined in function of the isoparametric coordinates
\begin_inset Formula $r$
\end_inset
,
\begin_inset Formula $s$
\end_inset
and
\begin_inset Formula $t$
\end_inset
and are given as follows.
\begin_inset Formula
\begin{equation}
\begin{aligned}N_{1} & =\frac{1}{2}\left(1-r-s\right)\left(1-t\right)\\
N_{2} & =\frac{1}{2}r\left(1-t\right)\\
N_{3} & =\frac{1}{2}s\left(1-t\right)\\
N_{4} & =\frac{1}{2}\left(1-r-s\right)\left(1+t\right)\\
N_{5} & =\frac{1}{2}r\left(1+t\right)\\
N_{6} & =\frac{1}{2}s\left(1+t\right)
\end{aligned}
\,.\label{eq376}
\end{equation}
\end_inset
The following integration rule is implemented for this element type.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
6-point Gauss rule
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
r
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
s
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
t
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
w
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.166666667
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.166666667
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.166666667
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.666666667
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.166666667
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.166666667
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.166666667
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.666666667
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.166666667
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.166666667
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.166666667
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.166666667
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.666666667
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.166666667
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.166666667
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.166666667
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.666666667
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.577350269
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.166666667
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsection
Tetrahedral Elements
\begin_inset CommandInset label
LatexCommand label
name "subsec:Tetrahedral-Elements"
\end_inset
\end_layout
\begin_layout Standard
Linear 4-node tetrahedral elements are also available in FEBio.
Their shape functions are defined in function of the isoparametric coordinates
\begin_inset Formula $r$
\end_inset
,
\begin_inset Formula $s$
\end_inset
and
\begin_inset Formula $t$
\end_inset
.
\begin_inset Formula
\begin{equation}
\begin{aligned}N_{1} & =1-r-s-t\\
N_{2} & =r\\
N_{3} & =s\\
N_{4} & =t
\end{aligned}
\,.\label{eq377}
\end{equation}
\end_inset
The following integration rules are implemented for this element type.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
1-point Gauss rule
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
r
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
s
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
t
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
w
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.25
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.25
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.25
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.166666667
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
4-point Gauss rule
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
r
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
s
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
t
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
w
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.041666667
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.58541020
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.041666667
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.58541020
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.041666667
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.58541020
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.041666667
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigSolidElementsTM.png
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
\series bold
Different solid element types that are available in FEBio
\end_layout
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsection
Quadratic Tetrahedral Elements
\begin_inset CommandInset label
LatexCommand label
name "subsec:Quadratic-Tetrahedral-Elements"
\end_inset
\end_layout
\begin_layout Standard
FEBio implements a 10-node quadratic tetrahedral element.
It has four corner nodes and six nodes located at the midpoint of the edges.
The shape functions in terms area coordinates are given below.
The area coordinates relate to the isoparametric coordinates as follows.
\begin_inset Formula
\begin{equation}
\begin{aligned}t_{1} & =1-r-s-t\\
t_{2} & =r\\
t_{3} & =s\\
t_{4} & =t
\end{aligned}
\,.\label{eq378}
\end{equation}
\end_inset
The shape functions follow.
\begin_inset Formula
\begin{equation}
\begin{aligned}H_{i} & =t_{i}\left(2t_{i}-1\right),\,i=1\cdots4\\
H_{5} & =4t_{1}t_{2}\\
H_{6} & =4t_{2}t_{3}\\
H_{7} & =4t_{3}t_{1}\\
H_{8} & =4t_{1}t_{4}\\
H_{9} & =4t_{2}t_{4}\\
H_{10} & =4t_{3}t_{4}
\end{aligned}
\,.\label{eq379}
\end{equation}
\end_inset
The following integration rules are implemented for this element type.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
4-point Gauss rule
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
r
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
s
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
t
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
w
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.58541020
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.041666667
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.58541020
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.041666667
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.58541020
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.041666667
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.13819660
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.041666667
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
8-point Gauss rule
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
r
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
s
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
t
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
w
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.01583591
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.328054697
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.328054697
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.023087995
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.328054697
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.01583591
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.328054697
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.023087995
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.328054697
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.328054697
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.01583591
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.023087995
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.328054697
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.328054697
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.328054697
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.023087995
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.679143178
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.106952274
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.106952274
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.018578672
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.106952274
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.679143178
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.106952274
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.018578672
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.106952274
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.106952274
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.679143178
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.018578672
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.106952274
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.106952274
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.106952274
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.018578672
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
11-point Gauss-Lobatto rule
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
r
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
s
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
t
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
w
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.002777778
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.002777778
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.002777778
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.002777778
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.5
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.011111111
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.5
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.5
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.011111111
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.5
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.011111111
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.5
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.011111111
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.5
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.5
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.011111111
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.5
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.5
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.011111111
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.25
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.25
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.25
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.088888889
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
FEBio also implements a 15-node quadratic tetrahedral element.
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigQuadraticTetrahedralElements.png
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
\series bold
Quadratic tetrahedral elements available in FEBio.
Left,
a 10-node quadratic tet.
Right,
a 15-node quadratic tet.
\end_layout
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The following integration rules are implemented for this element type.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
8-point Gauss rule
\series default
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
Note that weights sum up to one and not to the volume of the tet in the natural coordinate system (i.e.
1/6).
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
r
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
s
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
t
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
w
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.0158359099
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.3280546970
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.3280546970
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.138527967
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.3280546970
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.0158359099
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.3280546970
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.138527967
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.3280546970
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.3280546970
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.0158359099
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.138527967
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.3280546970
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.3280546970
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.3280546970
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.138527967
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.6791431780
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.1069522740
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.1069522740
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.111472033
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.1069522740
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.6791431780
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.1069522740
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.111472033
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.1069522740
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.1069522740
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.6791431780
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.111472033
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.1069522740
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.1069522740
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.1069522740
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.111472033
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
11-point Gauss rule
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
r
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
s
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
t
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
w
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.25
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.25
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.25
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-0.01315555556
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.071428571428571
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.071428571428571
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.071428571428571
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.007622222222
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.785714285714286
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.071428571428571
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.071428571428571
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.007622222222
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.071428571428571
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.785714285714286
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.071428571428571
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.007622222222
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.071428571428571
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.071428571428571
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.785714285714286
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.007622222222
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.399403576166799
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.100596423833201
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.100596423833201
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.024888888889
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.100596423833201
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.399403576166799
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.100596423833201
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.024888888889
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.100596423833201
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.100596423833201
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.399403576166799
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.024888888889
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.399403576166799
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.399403576166799
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.100596423833201
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.024888888889
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.399403576166799
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.100596423833201
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.399403576166799
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.024888888889
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.100596423833201
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.399403576166799
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.399403576166799
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.024888888889
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
15-point Gauss rule
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
r
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
s
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
t
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
w
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.25
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.25
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.25
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.030283678097089
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.333333333333333
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.333333333333333
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.333333333333333
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.006026785714286
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.000000000000000
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.333333333333333
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.333333333333333
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.006026785714286
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.333333333333333
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.000000000000000
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.333333333333333
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.006026785714286
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.333333333333333
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.333333333333333
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.000000000000000
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.006026785714286
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.090909090909091
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.090909090909091
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.090909090909091
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.011645249086029
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.727272727272727
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.090909090909091
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.090909090909091
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.011645249086029
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.090909090909091
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.727272727272727
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.090909090909091
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.011645249086029
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.090909090909091
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.090909090909091
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.727272727272727
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.011645249086029
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.433449846426336
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.066550153573664
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.066550153573664
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.010949141561386
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.066550153573664
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.433449846426336
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.066550153573664
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.010949141561386
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.066550153573664
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.066550153573664
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.433449846426336
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.010949141561386
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.066550153573664
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.433449846426336
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.433449846426336
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.010949141561386
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.433449846426336
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.066550153573664
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.433449846426336
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.010949141561386
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
0.433449846426336
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.433449846426336
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.066550153573664
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.010949141561386
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Section
Shell Elements
\begin_inset CommandInset label
LatexCommand label
name "sec:Shell-Elements"
\end_inset
\end_layout
\begin_layout Standard
Historically,
shells have been formulated using two different approaches
\begin_inset CommandInset citation
LatexCommand citep
key "Hughes80"
literal "true"
\end_inset
.
The difference between these approaches lies in the way the rotational degrees of freedom are defined.
In the first approach,
the rotational degrees of freedom are defined as angles.
In addition,
the plane stress condition needs to be enforced to take thickness variations into account.
This approach is very useful for infinitesimal strains,
but becomes very difficult to pursue in finite deformation due to the fact that finite rotations do not commute.
Another disadvantage of this approach is that it requires a modification to the material formulation to enforce the plane stress condition.
For complex materials this modification is very difficult or even impossible to obtain.
\end_layout
\begin_layout Standard
The alternative approach is to use an
\emph on
extensible director
\emph default
to describe the rotational degrees of freedom.
With this approach it is not necessary to enforce the plane-stress condition and the full 3D constitutive relations can be employed.
This approach is adapted in FEBio as described here.
\end_layout
\begin_layout Standard
The shell formulation implemented in FEBio is still a work in progress.
The goal is to implement an extensible director formulation with strain enhancements to deal with the well-known locking effect in incompressible and bending problems
\begin_inset CommandInset citation
LatexCommand citep
key "Betsch96"
literal "true"
\end_inset
.
With the current state of the implementation,
it is advised to use quadratic elements in such problems.
\end_layout
\begin_layout Standard
Starting with FEBio 2.6,
two shell formulations have become available:
The original formulation,
where nodes are located at the mid-surface through the thickness of the shell,
and a new formulation where nodes are located on the top face of the shell.
The original formulation uses nodal displacements and directors as degrees of freedom;
the new formulation uses top and bottom face nodal displacements.
The new formulation is designed to properly accommodate shells attached to the surface of a solid element,
or shells sandwiched between two solid elements,
with minimal alterations to the rest of the code.
The original formulation does not strictly enforce continuity of all the relevant degrees of freedom in those situations.
However,
this original formulation is maintained in the code for backward compatibility.
\end_layout
\begin_layout Standard
Most of the shell elements available in FEBio use a
\emph on
compatible strain
\emph default
formulation,
where the calculation of strain components is based only on nodal displacements,
similar to hexahedral or pentrahedral elements.
Users should be aware that this compatible strain formulation is very susceptible to element locking when the shell thickness is much smaller than the shell size (e.g.,
when the aspect ratio is less than 0.01).
Therefore,
these shell formulations should be used with caution,
keeping in mind this important constraint.
Conversely,
these shell elements perform very well when they are attached to solid elements (e.g.,
skin over muscle),
or sandwiched between shell elements (e.g.,
cell membrane separating cytoplasm from extra-cellular matrix).
\end_layout
\begin_layout Standard
The element-locking limitation of compatible strain shell formulations has motivated the development of specialized shell formulations that attempt to overcome locking.
The FE literature on this subject is rather extensive and we refer the reader to the excellent review chapter by Bischoff et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Bischoff18"
literal "false"
\end_inset
on this topic.
Methods for overcoming locking include the assumed natural strain (ANS) formulation for transverse shear strains
\begin_inset CommandInset citation
LatexCommand citep
key "MacNeal78,Bathe86"
literal "false"
\end_inset
and transverse normal strains
\begin_inset CommandInset citation
LatexCommand citep
key "Betsch95,Bischoff97"
literal "false"
\end_inset
.
The ANS formulation may be supplemented with the enhanced assumed strain (EAS) method
\begin_inset CommandInset citation
LatexCommand citep
key "Simo90"
literal "false"
\end_inset
and extended to large deformations
\begin_inset CommandInset citation
LatexCommand citep
key "Klinkel99,Vu-Quoc03,Simo93"
literal "false"
\end_inset
.
FEBio includes the ANS (
\emph on
q4ans
\emph default
) and EAS (
\emph on
q4eas
\emph default
) quadrilateral shell element formulations of Vu-Quoc and Tan
\begin_inset CommandInset citation
LatexCommand citep
key "Vu-Quoc03"
literal "false"
\end_inset
,
using a seven-parameter EAS interpolation,
which is otherwise substantially similar to the five-parameter interpolation presented in an earlier study by Klinkel et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Klinkel99"
literal "false"
\end_inset
.
These shell elements are not suitable for attachment to a solid element,
nor sandwiching between two solid elements.
Since they don't experience element locking,
they should be loaded more slowly than compatible strain shell elements.
The formulations presented below are for the compatible strain shell elements.
\end_layout
\begin_layout Subsection
Shell with mid-surface nodal displacements
\begin_inset CommandInset label
LatexCommand label
name "subsec:Shell-formulation-standalone"
\end_inset
\end_layout
\begin_layout Standard
We create a shell formulation by reducing a solid element interpolation which is linear along the parametric coordinate
\begin_inset Formula $\xi_{3}$
\end_inset
.
We start with the general interpolation for a solid element,
\begin_inset Formula
\begin{equation}
\mathbf{x}\left(\xi_{i}\right)=\sum\limits_{a=1}^{n}N_{a}\left(\xi_{i}\right)\mathbf{x}_{a}\,,\label{eq380}
\end{equation}
\end_inset
where
\begin_inset Formula $i=1,2,3$
\end_inset
and
\begin_inset Formula $n$
\end_inset
is the number of nodes,
and specialize it to the case of a shell as
\begin_inset Formula
\begin{equation}
N_{a}\left(\xi_{i}\right)=\begin{cases}
\frac{1-\xi_{3}}{2}M_{a}\left(\xi_{\alpha}\right) & 1\leqslant a\leqslant m\\
\frac{1+\xi_{3}}{2}M_{a}\left(\xi_{\alpha}\right) & m+1\leqslant a\leqslant n
\end{cases}\,,\label{eq381}
\end{equation}
\end_inset
where
\begin_inset Formula $\alpha=1,2$
\end_inset
,
\begin_inset Formula $m=n/2$
\end_inset
is the number of shell element nodes,
and
\begin_inset Formula $M_{a}\left(\xi_{\alpha}\right)$
\end_inset
are the interpolation functions within the mid-shell surface.
The description of the mid-shell surface is thus given by
\begin_inset Formula
\begin{equation}
\mathbf{\hat{x}}\left(\xi_{\alpha}\right)=\sum\limits_{a=1}^{n}N_{a}\left(\xi_{1},\xi_{2},0\right)\mathbf{x}_{a}\equiv\sum\limits_{b=1}^{m}M_{b}\left(\xi_{\alpha}\right)\mathbf{\hat{x}}_{b}\,,\label{eq382}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{\hat{x}}_{b}=\frac{1}{2}\left(\mathbf{x}_{b}+\mathbf{x}_{b+m}\right)\label{eq383}
\end{equation}
\end_inset
are the nodal positions for the mid-shell surface.
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigShellElementsTM.png
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
\series bold
Example of shell elements with four mid-surface nodal positions
\begin_inset Formula $\mathbf{\hat{x}}_{b}$
\end_inset
and directors
\begin_inset Formula $\mathbf{d}_{b}$
\end_inset
(
\begin_inset Formula $b=1-4)$
\end_inset
,
reduced from a solid element.
\end_layout
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
We also define the director across the shell surface as
\begin_inset Formula
\begin{equation}
\mathbf{d}\left(\xi_{\alpha}\right)=\mathbf{x}\left(\xi_{1},\xi_{2},1\right)-\mathbf{x}\left(\xi_{1},\xi_{2},-1\right)=\sum\limits_{b=1}^{m}M_{b}\left(\xi_{\alpha}\right)\mathbf{d}_{b}\,,\label{eq384}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{d}_{b}=\mathbf{x}_{b+m}-\mathbf{x}_{b},\quad b=1-m\label{eq385}
\end{equation}
\end_inset
are the nodal directors.
Note that the magnitude of the nodal director represents the shell thickness,
\begin_inset Formula $h\left(\xi_{\alpha}\right)=\left\Vert \mathbf{d}\left(\xi_{\alpha}\right)\right\Vert $
\end_inset
and the shell thicknesses at the nodes are
\begin_inset Formula $h_{b}=\left\Vert \mathbf{d}_{b}\right\Vert $
\end_inset
.
With these definitions we find that the interpolation across the parametric space of the shell element is
\begin_inset Formula
\begin{equation}
\mathbf{x}\left(\xi_{i}\right)=\mathbf{\hat{x}}\left(\xi_{\alpha}\right)+\frac{1}{2}\xi_{3}\mathbf{d}\left(\xi_{\alpha}\right)=\sum\limits_{b=1}^{m}M_{b}\left(\xi_{\alpha}\right)\left(\mathbf{\hat{x}}_{b}+\frac{1}{2}\xi_{3}\mathbf{d}_{b}\right)\,.\label{eq386}
\end{equation}
\end_inset
From this relation we can obtain the covariant basis vectors as
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{g}_{\alpha}\left(\xi_{i}\right) & =\frac{\partial\mathbf{x}}{\partial\xi_{\alpha}}=\sum\limits_{b=1}^{m}\frac{\partial M_{b}}{\partial\xi_{\alpha}}\left(\mathbf{\hat{x}}_{b}+\frac{1}{2}\xi_{3}\mathbf{d}_{b}\right)\\
\mathbf{g}_{3}\left(\xi_{i}\right) & =\frac{\partial\mathbf{x}}{\partial\xi_{3}}=\frac{1}{2}\sum\limits_{b=1}^{m}M_{b}\left(\xi_{\alpha}\right)\mathbf{d}_{b}
\end{aligned}
\,,\label{eq387}
\end{equation}
\end_inset
from which we may evaluate the contravariant basis vectors
\begin_inset Formula $\mathbf{g}^{j}$
\end_inset
using the identity
\begin_inset Formula $\mathbf{g}_{i}\cdot\mathbf{g}^{j}=\delta_{i}^{j}$
\end_inset
.
Then,
the gradients of the shape functions are given by
\begin_inset Formula
\begin{equation}
\grad M_{b}=\frac{\partial M_{b}}{\partial\xi_{\alpha}}\mathbf{g}^{\alpha},\quad\grad\left(\frac{1}{2}\xi_{3}M_{b}\right)=\frac{1}{2}\left(\xi_{3}\grad M_{b}+M_{b}\mathbf{g}^{3}\right)\,.\label{eq388}
\end{equation}
\end_inset
It follows from
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq386"
nolink "false"
\end_inset
that the virtual displacement is
\begin_inset Formula
\begin{equation}
\delta\mathbf{u}\left(\xi_{i}\right)=\sum\limits_{a=1}^{m}M_{a}\left(\xi_{\alpha}\right)\left(\delta\mathbf{\hat{u}}_{a}+\frac{1}{2}\xi_{3}\delta\mathbf{d}_{a}\right)\,,\label{eq389}
\end{equation}
\end_inset
and the incremental displacement is
\begin_inset Formula
\begin{equation}
\Delta\mathbf{u}\left(\xi_{i}\right)=\sum\limits_{b=1}^{m}M_{b}\left(\xi_{\alpha}\right)\left(\Delta\mathbf{\hat{u}}_{b}+\frac{1}{2}\xi_{3}\Delta\mathbf{d}_{b}\right)\,.\label{eq390}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
In FEBio,
for historical reasons,
the nodal director
\begin_inset Formula $\mathbf{d}_{b}$
\end_inset
is currently called
\emph on
rotation
\emph default
.
This is a misnomer and users should treat this
\emph on
rotation
\emph default
as the vector
\begin_inset Formula $\mathbf{d}_{a}$
\end_inset
whose components have units of length.
Thus,
fixing or prescribing
\emph on
rotation
\emph default
components in the input file effectively places these constraints on the components of the nodal director;
similarly,
requesting
\emph on
rotation
\emph default
in the output files will produce the components of the director.
\end_layout
\begin_layout Standard
When this type of shell is connected face-to-face with a solid element,
the nodes located at
\begin_inset Formula $\mathbf{\hat{x}}_{b}$
\end_inset
automatically share their displacement degrees of freedom
\begin_inset Formula $\mathbf{u}_{b}$
\end_inset
with the corresponding nodes from the face of the solid element.
However,
no continuity is enforced between the directors
\begin_inset Formula $\mathbf{d}_{b}$
\end_inset
and the solid element deformation.
One consequence of this condition is that a shell sandwiched between two solid elements will not detect out-of-plane shear and normal stresses transmitted by the solid element(s).
Another consequence is that bending of the solid element(s) will not produce a bending moment in the shell.
Therefore,
these shell elements are best used as shell-only structures.
\end_layout
\begin_layout Subsubsection
Elastic Shell
\begin_inset CommandInset label
LatexCommand label
name "subsec:Elastic-Shell"
\end_inset
\end_layout
\begin_layout Standard
For an elastic shell,
the internal virtual work becomes
\begin_inset Formula
\begin{equation}
\delta W_{\text{int}}^{e}=\int\limits_{\Omega^{e}}\boldsymbol{\sigma}:\grad\delta\mathbf{u}\,dv=\sum\limits_{a=1}^{n}\left[\begin{array}{cc}
\delta\mathbf{\hat{u}}_{a} & \delta\mathbf{d}_{a}\end{array}\right]\cdot\left[\begin{array}{c}
\mathbf{f}_{a}^{u}\\
\mathbf{f}_{a}^{d}
\end{array}\right]\,,\label{eq391}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{f}_{a}^{u}=\int\limits_{\Omega^{e}}\boldsymbol{\sigma}\cdot\grad M_{a}\,dv,\quad\mathbf{f}_{a}^{d}=\int\limits_{\Omega^{e}}\boldsymbol{\sigma}\cdot\grad\left(\frac{1}{2}\xi_{3}M_{a}\right)\,dv\,.\label{eq392}
\end{equation}
\end_inset
The linearization of the internal virtual work is
\begin_inset Formula
\begin{equation}
\begin{array}{c}
D\left(\delta W_{\text{int}}^{e}\right)\left[\Delta\mathbf{u}\right]=\int\limits_{\Omega^{e}}\tr\left(\grad\Delta\mathbf{u}\cdot\boldsymbol{\sigma}\cdot\grad^{T}\delta\mathbf{u}\right)\,dv\\
+\int\limits_{\Omega^{e}}\grad\delta\mathbf{u}:\boldsymbol{\mathcal{C}}:\grad^{T}\Delta\mathbf{u}\,dv
\end{array}\,.\label{eq393}
\end{equation}
\end_inset
The first of these integrals may be discretized as
\begin_inset Formula
\begin{equation}
\int\limits_{\Omega^{e}}\tr\left(\grad\Delta\mathbf{u}\cdot\boldsymbol{\sigma}\cdot\grad^{T}\delta\mathbf{u}\right)\,dv=\sum\limits_{a=1}^{m}\sum\limits_{b=1}^{m}\left[\begin{array}{cc}
\delta\mathbf{\hat{u}}_{a} & \delta\mathbf{d}_{a}\end{array}\right]\left[\begin{array}{cc}
\mathbf{K}_{ab}^{uu} & \mathbf{K}_{ab}^{ud}\\
\mathbf{K}_{ab}^{du} & \mathbf{K}_{ab}^{dd}
\end{array}\right]\left[\begin{array}{c}
\Delta\mathbf{\hat{u}}_{b}\\
\Delta\mathbf{d}_{b}
\end{array}\right]\,,\label{eq394}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{K}_{ab}^{uu} & =\int\limits_{\Omega^{e}}\left(\grad M_{a}\cdot\boldsymbol{\sigma}\cdot\grad M_{b}\right)\mathbf{I}\,dv\\
\mathbf{K}_{ab}^{ud} & =\int\limits_{\Omega^{e}}\left(\grad M_{a}\cdot\boldsymbol{\sigma}\cdot\grad\left(\frac{1}{2}\xi_{3}M_{b}\right)\right)\mathbf{I}\,dv\\
\mathbf{K}_{ab}^{du} & =\int\limits_{\Omega^{e}}\left(\grad\left(\frac{1}{2}\xi_{3}M_{a}\right)\cdot\boldsymbol{\sigma}\cdot\grad M_{b}\right)\mathbf{I}\,dv\\
\mathbf{K}_{ab}^{dd} & =\int\limits_{\Omega^{e}}\left(\grad\left(\frac{1}{2}\xi_{3}M_{a}\right)\cdot\boldsymbol{\sigma}\cdot\grad\left(\frac{1}{2}\xi_{3}M_{b}\right)\right)\mathbf{I}\,dv
\end{aligned}
\,.\label{eq395}
\end{equation}
\end_inset
The second integral in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq393"
nolink "false"
\end_inset
becomes
\begin_inset Formula
\begin{equation}
\int\limits_{\Omega^{e}}\grad\delta\mathbf{u}:\boldsymbol{\mathcal{C}}:\grad^{T}\Delta\mathbf{u}\,dv=\sum\limits_{a=1}^{m}\sum\limits_{b=1}^{m}\left[\begin{array}{cc}
\delta\mathbf{\hat{u}}_{a} & \delta\mathbf{d}_{a}\end{array}\right]\left[\begin{array}{cc}
\mathbf{K}_{ab}^{uu} & \mathbf{K}_{ab}^{ud}\\
\mathbf{K}_{ab}^{du} & \mathbf{K}_{ab}^{dd}
\end{array}\right]\left[\begin{array}{c}
\Delta\mathbf{\hat{u}}_{b}\\
\Delta\mathbf{d}_{b}
\end{array}\right]\,,\label{eq396}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{K}_{ab}^{uu} & =\int\limits_{\Omega^{e}}\grad M_{a}\cdot\boldsymbol{\mathcal{C}}\cdot\grad M_{b}\,dv\\
\mathbf{K}_{ab}^{ud} & =\int\limits_{\Omega^{e}}\grad M_{a}\cdot\boldsymbol{\mathcal{C}}\cdot\grad\left(\frac{1}{2}\xi_{3}M_{b}\right)\,dv\\
\mathbf{K}_{ab}^{du} & =\int\limits_{\Omega^{e}}\grad\left(\frac{1}{2}\xi_{3}M_{a}\right)\cdot\boldsymbol{\mathcal{C}}\cdot\grad M_{b}\,dv\\
\mathbf{K}_{ab}^{dd} & =\int\limits_{\Omega^{e}}\grad\left(\frac{1}{2}\xi_{3}M_{a}\right)\cdot\boldsymbol{\mathcal{C}}\cdot\grad\left(\frac{1}{2}\xi_{3}M_{b}\right)\,dv
\end{aligned}
\,.\label{eq397}
\end{equation}
\end_inset
Similar expressions may be derived for the external work and inertia forces.
\end_layout
\begin_layout Standard
In FEBio a 3-point Gaussian quadrature rule is used for the through-the-thickness integration.
FEBio currently supports four- and eight-node quadrilateral and three- and six-node triangular shell elements.
\end_layout
\begin_layout Subsubsection
Quadrilateral shells
\begin_inset CommandInset label
LatexCommand label
name "subsec:Quadrilateral-shells"
\end_inset
\end_layout
\begin_layout Standard
For four-node quadrilateral shells,
the shape functions are given by
\begin_inset Formula
\begin{equation}
\begin{aligned}M_{1} & =\frac{1}{4}\left(1-r\right)\left(1-s\right)\\
M_{2} & =\frac{1}{4}\left(1+r\right)\left(1-s\right)\\
M_{3} & =\frac{1}{4}\left(1+r\right)\left(1+s\right)\\
M_{4} & =\frac{1}{4}\left(1-r\right)\left(1+s\right)
\end{aligned}
\,.\label{eq398}
\end{equation}
\end_inset
For eight-node quadrilateral shells the shape functions are
\begin_inset Formula
\begin{equation}
\begin{aligned}M_{1} & =\frac{1}{4}\left(1-r\right)\left(1-s\right)-\frac{1}{2}\left(M_{8}+M_{5}\right) & M_{5} & =\frac{1}{2}\left(1-r^{2}\right)\left(1-s\right)\\
M_{2} & =\frac{1}{4}\left(1+r\right)\left(1-s\right)-\frac{1}{2}\left(M_{5}+M_{6}\right) & M_{6} & =\frac{1}{2}\left(1-s^{2}\right)\left(1+r\right)\\
M_{3} & =\frac{1}{4}\left(1+r\right)\left(1+s\right)-\frac{1}{2}\left(M_{6}+M_{7}\right) & M_{7} & =\frac{1}{2}\left(1-r^{2}\right)\left(1+s\right)\\
M_{4} & =\frac{1}{4}\left(1-r\right)\left(1+s\right)-\frac{1}{2}\left(M_{7}+M_{8}\right) & M_{8} & =\frac{1}{2}\left(1-s^{2}\right)\left(1-r\right)
\end{aligned}
\,.\label{eq399}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
Triangular shells
\begin_inset CommandInset label
LatexCommand label
name "subsec:Triangular-shells"
\end_inset
\end_layout
\begin_layout Standard
For three-node triangular shell elements,
the shape functions are given by
\begin_inset Formula
\begin{equation}
\begin{aligned}M_{1} & =1-r-s\\
M_{2} & =r\\
M_{3} & =s
\end{aligned}
\,.\label{eq400}
\end{equation}
\end_inset
For six-node triangular shell elements they are
\begin_inset Formula
\begin{equation}
\begin{aligned}M_{1} & =r_{1}\left(2r_{1}-1\right) & M_{4} & =4r_{1}r_{2}\\
M_{2} & =r_{2}\left(2r_{2}-1\right) & M_{5} & =4r_{2}r_{3}\\
M_{3} & =r_{3}\left(2r_{3}-1\right) & M_{6} & =4r_{3}r_{1}\\
r_{1} & =1-r-s & r_{2} & =r & r_{3} & =s
\end{aligned}
\,.\label{eq401}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigShellElementTypesTM.png
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
\series bold
Different shell elements available in FEBio.
\end_layout
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsection
Shells with top and bottom face nodal displacements
\begin_inset CommandInset label
LatexCommand label
name "subsec:Shells-front-back"
\end_inset
\end_layout
\begin_layout Standard
We create a shell formulation by reducing a 3D element interpolation which is linear along
\begin_inset Formula $\xi_{3}$
\end_inset
.
The nodal positions at the bottom of the shell (
\begin_inset Formula $\xi_{3}=-1$
\end_inset
) are denoted by
\begin_inset Formula $\mathbf{y}_{a}$
\end_inset
and those on the top of the shell (
\begin_inset Formula $\xi_{3}=+1$
\end_inset
) are denoted by
\begin_inset Formula $\mathbf{x}_{a}$
\end_inset
,
thus
\begin_inset Formula
\begin{equation}
\mathbf{x}\left(\xi_{i}\right)=\sum_{a}M_{a}\left(\xi_{1},\xi_{2}\right)\left(\frac{1+\xi_{3}}{2}\mathbf{x}_{a}+\frac{1-\xi_{3}}{2}\mathbf{y}_{a}\right)=\sum_{a}M_{a}\left(\xi_{1},\xi_{2}\right)\left(\mathbf{x}_{a}-\frac{1-\xi_{3}}{2}\mathbf{d}_{a}\right)\label{eq:solid-element-interpolation}
\end{equation}
\end_inset
The vector from
\begin_inset Formula $\mathbf{y}_{a}$
\end_inset
to
\begin_inset Formula $\mathbf{x}_{a}$
\end_inset
is the director,
\begin_inset Formula $\mathbf{d}_{a}$
\end_inset
,
\begin_inset Formula
\[
\mathbf{d}_{a}=\mathbf{x}_{a}-\mathbf{y}_{a}
\]
\end_inset
From this relation we can get the shell covariant basis vectors,
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{g}_{\alpha}\left(\xi_{i}\right) & =\frac{\partial\mathbf{x}}{\partial\xi_{\alpha}}=\sum_{a}\frac{\partial M_{a}}{\partial\xi_{\alpha}}\left(\frac{1+\xi_{3}}{2}\mathbf{x}_{a}+\frac{1-\xi_{3}}{2}\mathbf{y}_{a}\right)=\sum_{a}\frac{\partial M_{a}}{\partial\xi_{\alpha}}\left(\mathbf{x}_{a}-\frac{1-\xi_{3}}{2}\mathbf{d}_{a}\right)\\
\mathbf{g}_{3}\left(\xi_{i}\right) & =\frac{\partial\mathbf{x}}{\partial\xi_{3}}=\sum_{a}\frac{1}{2}M_{a}\left(\xi_{1},\xi_{2}\right)\left(\mathbf{x}_{a}-\mathbf{y}_{a}\right)=\sum_{a}\frac{1}{2}M_{a}\left(\xi_{1},\xi_{2}\right)\mathbf{d}_{a}
\end{aligned}
\label{eq:shell-covariant-basis}
\end{equation}
\end_inset
from which we may evaluate the contravariant basis vectors
\begin_inset Formula $\mathbf{g}^{i}$
\end_inset
.
Let the front-face and back-face displacements be denoted by
\begin_inset Formula $\mathbf{u}$
\end_inset
and
\begin_inset Formula $\mathbf{w}$
\end_inset
,
respectively.
It follows that
\begin_inset Formula $\mathbf{x}_{a}=\mathbf{X}_{a}+\mathbf{u}_{a}$
\end_inset
and
\begin_inset Formula $\mathbf{y}_{a}=\mathbf{Y}_{a}+\mathbf{w}_{a}$
\end_inset
,
where
\begin_inset Formula $\mathbf{X}_{a}$
\end_inset
represents the shell nodal positions in the reference configuration,
provided as nodal coordinates in the input file,
and
\begin_inset Formula $\mathbf{Y}_{a}=\mathbf{X}_{a}-\mathbf{D}_{a}$
\end_inset
is evaluated from the user-defined referential shell thickness,
and the surface surface normals evaluated at each node.
If the shell surface is not planar in the reference configuration,
users must be careful to select shell thicknesses that don't produce inverted elements (negative Jacobians) as a result of this extrapolation.
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigShellElementsFB.png
lyxscale 45
scale 45
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
\series bold
Example of shell element with front-face nodal positions
\begin_inset Formula $\mathbf{x}_{b}$
\end_inset
and back-face nodal positions
\begin_inset Formula $\mathbf{y}_{b}$
\end_inset
(
\begin_inset Formula $b=1-4)$
\end_inset
,
reduced from a solid element.
\end_layout
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
It follows that the virtual displacement is
\begin_inset Formula
\begin{equation}
\delta\mathbf{u}\left(\xi_{i}\right)=\sum_{a}M_{a}\left(\frac{1+\xi_{3}}{2}\delta\mathbf{u}_{a}+\frac{1-\xi_{3}}{2}\delta\mathbf{w}_{a}\right)\,,\label{eq:shell-virtual-velocity}
\end{equation}
\end_inset
and the incremental displacement is
\begin_inset Formula
\begin{equation}
\Delta\mathbf{u}\left(\xi_{i}\right)=\sum_{b}M_{b}\left(\frac{1+\xi_{3}}{2}\Delta\mathbf{u}_{b}+\frac{1-\xi_{3}}{2}\Delta\mathbf{w}_{b}\right)\,,\label{eq:shell-incremental-displacement}
\end{equation}
\end_inset
so that
\begin_inset Formula
\begin{equation}
\grad\delta\mathbf{u}=\sum_{a}\delta\mathbf{u}_{a}\otimes\grad\left(\frac{1+\xi_{3}}{2}M_{a}\right)+\delta\mathbf{w}_{a}\otimes\grad\left(\frac{1-\xi_{3}}{2}M_{a}\right)\,,\label{eq:gradient-virtual-velocity}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\grad\Delta\mathbf{u}=\sum_{b}\Delta\mathbf{u}_{b}\otimes\grad\left(\frac{1+\xi_{3}}{2}M_{b}\right)+\Delta\mathbf{w}_{b}\otimes\grad\left(\frac{1-\xi_{3}}{2}M_{b}\right)\label{eq:gradient-incremental-displacement}
\end{equation}
\end_inset
Note that
\begin_inset Formula
\begin{equation}
\grad M_{b}=\frac{\partial M_{b}}{\partial\xi_{\alpha}}\mathbf{g}^{\alpha}\,,\label{eq:shell-shape-gradient-M}
\end{equation}
\end_inset
so that
\begin_inset Formula
\begin{equation}
\grad\left(\frac{1+\xi_{3}}{2}M_{b}\right)=\frac{1}{2}\left(\left(1+\xi_{3}\right)\grad M_{b}+M_{b}\mathbf{g}^{3}\right)\label{eq:shell-shape-gradient-Mu}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\grad\left(\frac{1-\xi_{3}}{2}M_{b}\right)=\frac{1}{2}\left(\left(1-\xi_{3}\right)\grad M_{b}-M_{b}\mathbf{g}^{3}\right)\label{eq:shell-shape-gradient-Md}
\end{equation}
\end_inset
To evaluate the deformation gradient in this shell element,
we use
\begin_inset Formula
\[
\mathbf{F}=\Grad\mathbf{x}=\sum_{b}\mathbf{u}_{b}\otimes\Grad\left(\frac{1+\xi_{3}}{2}M_{b}\right)+\mathbf{w}_{b}\otimes\grad\left(\frac{1-\xi_{3}}{2}M_{b}\right)
\]
\end_inset
\end_layout
\begin_layout Standard
For this formulation,
when a shell element is connected face-to-face with a solid element,
the nodal displacements of the solid element face are set to coincide with the back-face nodal displacements
\begin_inset Formula $\mathbf{w}_{b}$
\end_inset
of the shell.
When a user prescribes displacement components on that shared face,
they apply to the front-face displacements
\begin_inset Formula $\mathbf{u}_{b}$
\end_inset
.
Similarly,
prescribed pressures and contact pressures act on the shell top face.
\end_layout
\begin_layout Standard
When a shell element is sandwiched between two solid elements,
the nodal displacements of the solid element facing the shell bottom face are set to coincide with the shell back-face nodal displacements
\begin_inset Formula $\mathbf{w}_{b}$
\end_inset
,
whereas the nodal displacements of the solid element facing the shell top face are set to coincide with the shell front-face nodal displacements
\begin_inset Formula $\mathbf{u}_{a}$
\end_inset
.
If the shell thickness exceeds the thickness of the solid element connected to its bottom face,
results become unpredictable.
\end_layout
\begin_layout Subsubsection
Elastic Shell
\end_layout
\begin_layout Standard
For an elastic solid,
the internal virtual work is
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W_{int} & =\int_{v}\boldsymbol{\sigma}:\grad\delta\mathbf{u}\,dv\\
& =\sum_{a}\left[\begin{array}{cc}
\delta\mathbf{u}_{a} & \delta\mathbf{w}_{a}\end{array}\right]\left[\begin{array}{c}
\mathbf{f}_{a}^{u}\\
\mathbf{f}_{a}^{w}
\end{array}\right]
\end{aligned}
\,,\label{eq:virtual-work-internal}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{f}_{a}^{u} & =\int_{v}\boldsymbol{\sigma}\cdot\grad\left(\frac{1+\xi_{3}}{2}M_{a}\right)\,dv\\
\mathbf{f}_{a}^{w} & =\int_{v}\boldsymbol{\sigma}\cdot\grad\left(\frac{1-\xi_{3}}{2}M_{a}\right)\,dv
\end{aligned}
\,.\label{eq:shell-internal-force}
\end{equation}
\end_inset
For the external work of body forces,
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W_{ext} & =\int_{v}\delta\mathbf{u}\cdot\rho\mathbf{b}\,dv\\
& =\sum_{a=1}^{m}\delta\mathbf{u}_{a}\cdot\mathbf{f}_{a}^{u}+\delta\mathbf{w}_{a}\cdot\mathbf{f}_{a}^{w}
\end{aligned}
\,,\label{eq:virtual-work-external}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{f}_{a}^{u} & =\int_{v}\frac{1+\xi_{3}}{2}M_{a}\rho\mathbf{b}\,dv\\
\mathbf{f}_{a}^{w} & =\int_{v}\frac{1-\xi_{3}}{2}M_{a}\rho\mathbf{b}\,dv
\end{aligned}
\,.\label{eq:shell-external-force}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
The linearization of the internal virtual work is
\begin_inset Formula
\begin{equation}
\begin{aligned}D\left(\delta W_{int}\right)\left[\Delta\mathbf{u}\right] & =\int_{v}\tr\left(\grad\Delta\mathbf{u}\cdot\boldsymbol{\sigma}\cdot\grad^{T}\delta\mathbf{u}\right)\,dv\\
& +\int_{v}\grad\delta\mathbf{u}:\boldsymbol{\mathcal{C}}:\grad^{T}\Delta\mathbf{u}\,dv
\end{aligned}
\,.\label{eq:linearized-internal-work}
\end{equation}
\end_inset
So
\begin_inset Formula
\begin{equation}
\int_{v}\tr\left(\grad\Delta\mathbf{u}\cdot\boldsymbol{\sigma}\cdot\grad^{T}\delta\mathbf{u}\right)\,dv=\sum_{a}\sum_{b}\left[\begin{array}{cc}
\delta\mathbf{u}_{a} & \delta\mathbf{w}_{a}\end{array}\right]\left[\begin{array}{cc}
\mathbf{K}_{ab}^{uu} & \mathbf{K}_{ab}^{uw}\\
\mathbf{K}_{ab}^{wu} & \mathbf{K}_{ab}^{ww}
\end{array}\right]\left[\begin{array}{c}
\Delta\mathbf{u}_{b}\\
\Delta\mathbf{w}_{b}
\end{array}\right]\,,\label{eq:discretized-geometric-stiffness}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{K}_{ab}^{uu} & =\int_{v}\left(\grad\left(\frac{1+\xi_{3}}{2}M_{a}\right)\cdot\boldsymbol{\sigma}\cdot\grad\left(\frac{1+\xi_{3}}{2}M_{b}\right)\right)\mathbf{I}\,dv\\
\mathbf{K}_{ab}^{uw} & =\int_{v}\left(\grad\left(\frac{1+\xi_{3}}{2}M_{a}\right)\cdot\boldsymbol{\sigma}\cdot\grad\left(\frac{1-\xi_{3}}{2}M_{b}\right)\right)\mathbf{I}\,dv\\
\mathbf{K}_{ab}^{wu} & =\int_{v}\left(\grad\left(\frac{1-\xi_{3}}{2}M_{a}\right)\cdot\boldsymbol{\sigma}\cdot\grad\left(\frac{1+\xi_{3}}{2}M_{b}\right)\right)\mathbf{I}\,dv\\
\mathbf{K}_{ab}^{ww} & =\int_{v}\left(\grad\left(\frac{1-\xi_{3}}{2}M_{a}\right)\cdot\boldsymbol{\sigma}\cdot\grad\left(\frac{1-\xi_{3}}{2}M_{b}\right)\right)\mathbf{I}\,dv
\end{aligned}
\,.\label{eq:shell-geometric-stiffness}
\end{equation}
\end_inset
Similarly,
\begin_inset Formula
\begin{equation}
\int_{v}\grad\delta\mathbf{u}:\boldsymbol{\mathcal{C}}:\grad^{T}\Delta\mathbf{u}\,dv=\sum_{a}\sum_{b}\left[\begin{array}{cc}
\delta\mathbf{u}_{a} & \delta\mathbf{w}_{a}\end{array}\right]\left[\begin{array}{cc}
\mathbf{K}_{ab}^{uu} & \mathbf{K}_{ab}^{uw}\\
\mathbf{K}_{ab}^{wu} & \mathbf{K}_{ab}^{ww}
\end{array}\right]\left[\begin{array}{c}
\Delta\mathbf{u}_{b}\\
\Delta\mathbf{w}_{b}
\end{array}\right]\,,\label{eq:discretized-material-stiffness}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{K}_{ab}^{uu} & =\int_{v}\grad\left(\frac{1+\xi_{3}}{2}M_{a}\right)\cdot\boldsymbol{\mathcal{C}}\cdot\grad\left(\frac{1+\xi_{3}}{2}M_{b}\right)\,dv\\
\mathbf{K}_{ab}^{uw} & =\int_{v}\grad\left(\frac{1+\xi_{3}}{2}M_{a}\right)\cdot\boldsymbol{\mathcal{C}}\cdot\grad\left(\frac{1-\xi_{3}}{2}M_{b}\right)\,dv\\
\mathbf{K}_{ab}^{wu} & =\int_{v}\grad\left(\frac{1-\xi_{3}}{2}M_{a}\right)\cdot\boldsymbol{\mathcal{C}}\cdot\grad\left(\frac{1+\xi_{3}}{2}M_{b}\right)\,dv\\
\mathbf{K}_{ab}^{ww} & =\int_{v}\grad\left(\frac{1-\xi_{3}}{2}M_{a}\right)\cdot\boldsymbol{\mathcal{C}}\cdot\grad\left(\frac{1-\xi_{3}}{2}M_{b}\right)\,dv
\end{aligned}
\,.\label{eq:shell-material-stiffness}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
The linearization of the external work is
\begin_inset Formula
\begin{equation}
\begin{aligned}D\left(\delta W_{ext}\right) & =\sum_{a=1}^{m}\sum_{b=1}^{m}\int_{v}\left(\frac{1+\xi_{3}}{2}M_{a}\delta\mathbf{u}_{a}+\frac{1-\xi_{3}}{2}M_{a}\delta\mathbf{w}_{a}\right)\cdot\rho\grad\mathbf{b}\cdot\left(\frac{1+\xi_{3}}{2}\Delta\mathbf{u}_{b}+\frac{1-\xi_{3}}{2}M_{b}\Delta\mathbf{w}_{b}\right)\,dv\\
& =\sum_{a}\sum_{b}\left[\begin{array}{cc}
\delta\mathbf{u}_{a} & \delta\mathbf{w}_{a}\end{array}\right]\left[\begin{array}{cc}
\mathbf{K}_{ab}^{uu} & \mathbf{K}_{ab}^{uw}\\
\mathbf{K}_{ab}^{wu} & \mathbf{K}_{ab}^{ww}
\end{array}\right]\left[\begin{array}{c}
\Delta\mathbf{u}_{b}\\
\Delta\mathbf{w}_{b}
\end{array}\right]
\end{aligned}
\,,\label{eq:linearized-external-work}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{K}_{ab}^{uu} & =\int_{V}\left(\frac{1+\xi_{3}}{2}\right)^{2}M_{a}M_{b}\rho_{0}\grad\mathbf{b}\,dV\\
\mathbf{K}_{ab}^{uw} & =\int_{V}\left(\frac{1+\xi_{3}}{2}\right)\left(\frac{1-\xi_{3}}{2}\right)M_{a}M_{b}\rho_{0}\grad\mathbf{b}\,dV\\
\mathbf{K}_{ab}^{wu} & =\int_{V}\left(\frac{1+\xi_{3}}{2}\right)\left(\frac{1-\xi_{3}}{2}\right)M_{a}M_{b}\rho_{0}\grad\mathbf{b}\,dV\\
\mathbf{K}_{ab}^{ww} & =\int_{V}\left(\frac{1-\xi_{3}}{2}\right)^{2}M_{a}M_{b}\rho_{0}\grad\mathbf{b}\,dV
\end{aligned}
\,.\label{eq:shell-external-stiffness}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
External work of surface forces
\end_layout
\begin_layout Standard
We assume that surface forces are applied on the shell top face (
\begin_inset Formula $\xi_{3}=+1$
\end_inset
).
Therefore,
the external work of surface forces has the form
\begin_inset Formula
\begin{equation}
\delta W_{ext}=\int_{\partial v}\delta\mathbf{u}\left(\xi_{1},\xi_{2},+1\right)\cdot\mathbf{t}\,da=\sum_{a}\delta\mathbf{u}_{a}\cdot\int_{\partial v}M_{a}\left(\xi_{1},\xi_{2}\right)\mathbf{t}\,da\label{eq:fbs-ext-work}
\end{equation}
\end_inset
In other words,
the treatment of surface forces on a shell becomes identical to the treatment of surface forces on the face of a solid.
No special treatment is needed.
\end_layout
\begin_layout Subsubsection
Shell on top of solid element
\end_layout
\begin_layout Standard
When a shell is coincident with the face of a solid element,
we assume that the face of the solid element coincides with the bottom face (
\begin_inset Formula $\xi_{3}=-1$
\end_inset
) of the shell element.
This means that the solid element nodal displacements
\begin_inset Formula $\mathbf{u}_{b}$
\end_inset
on that face coincide with the shell nodal displacements
\begin_inset Formula $\mathbf{w}_{b}$
\end_inset
.
Therefore,
when we use UnpackLM for those solid elements,
we should reassign the DOF ID's of the
\begin_inset Formula $\mathbf{u}_{b}$
\end_inset
displacements to those of the
\begin_inset Formula $\mathbf{w}_{b}$
\end_inset
displacements stored in that same node.
\end_layout
\begin_layout Subsubsection
Shell sandwiched between solid elements
\end_layout
\begin_layout Standard
When a shell is sandwiched between two solid elements,
we reassign the DOF ID's of the the solid
\begin_inset Formula $\mathbf{u}_{b}$
\end_inset
displacements facing the bottom of the shell to those of the shell
\begin_inset Formula $\mathbf{w}_{b}$
\end_inset
displacements stored in that same node.
The DOF ID's of solid
\begin_inset Formula $\mathbf{u}_{b}$
\end_inset
displacements facing the top of the shell remain unchanged;
they will coincide with those of the corresponding solid element nodes.
\end_layout
\begin_layout Subsubsection
Rigid-Shell Interface
\end_layout
\begin_layout Standard
When the node of a deformable shell belongs to a rigid body,
we need to substitute the nodal degrees of freedom with the rigid body degrees of freedom.
The positions of the shell top face and bottom face nodes are
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{x}_{b} & =\mathbf{r}+\boldsymbol{\Lambda}\cdot\left(\mathbf{X}_{b}-\mathbf{R}\right)\equiv\mathbf{r}+\mathbf{a}_{b}\\
\mathbf{y}_{b} & =\mathbf{r}+\boldsymbol{\Lambda}\cdot\left(\mathbf{Y}_{b}-\mathbf{R}\right)\equiv\mathbf{r}+\mathbf{b}_{b}
\end{aligned}
\,,\label{eq:fbs-rigid-shell}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{r}$
\end_inset
is the current position of the rigid body center of mass and
\begin_inset Formula $\mathbf{R}$
\end_inset
is its initial position;
\begin_inset Formula $\boldsymbol{\Lambda}$
\end_inset
is the rotation tensor for the rigid body.
We assume that
\begin_inset Formula $\mathbf{x}_{b}$
\end_inset
and
\begin_inset Formula $\mathbf{y}_{b}$
\end_inset
are connected to the same rigid body.
From these relations it follows that virtual displacements are
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta\mathbf{u}_{a} & =\delta\mathbf{r}-\hat{\mathbf{a}}_{a}\cdot\delta\boldsymbol{\theta}\\
\delta\mathbf{w}_{b} & =\delta\mathbf{r}-\hat{\mathbf{b}}_{a}\cdot\delta\boldsymbol{\theta}
\end{aligned}
\,,\label{eq:fbs-rsi-virtual}
\end{equation}
\end_inset
and incremental displacements are
\begin_inset Formula
\begin{equation}
\begin{aligned}\Delta\mathbf{u}_{b} & =\Delta\mathbf{r}-\hat{\mathbf{a}}_{b}\cdot\Delta\boldsymbol{\theta}\\
\Delta\mathbf{w}_{b} & =\Delta\mathbf{r}-\hat{\mathbf{b}}_{b}\cdot\Delta\boldsymbol{\theta}
\end{aligned}
\,,\label{eq:fbs-rsi-incremental}
\end{equation}
\end_inset
where
\begin_inset Formula $\hat{\mathbf{a}}$
\end_inset
is the skew-symmetric tensor whose dual vector is
\begin_inset Formula $\mathbf{a}$
\end_inset
,
such that
\begin_inset Formula $\hat{\mathbf{a}}\cdot\mathbf{v}=\mathbf{a}\times\mathbf{v}$
\end_inset
for any vector
\begin_inset Formula $\mathbf{v}$
\end_inset
.
When nodes are flexible (when they do not belong to any rigid body),
the virtual work has the general form
\begin_inset Formula
\begin{equation}
\delta W=\sum_{a=1}^{m}\delta\mathbf{u}_{a}\cdot\mathbf{f}_{a}^{u}+\delta\mathbf{w}_{a}\cdot\mathbf{f}_{a}^{w}+\delta p_{a}\,f_{a}^{p}=\sum_{a=1}^{m}\left[\begin{array}{ccc}
\delta\mathbf{v}_{a} & \delta\mathbf{w}_{a} & \delta p_{a}\end{array}\right]\left[\begin{array}{c}
\mathbf{f}_{a}^{u}\\
\mathbf{f}_{a}^{w}\\
f_{a}^{p}
\end{array}\right]\,,\label{eq:fbs-rsi-work}
\end{equation}
\end_inset
where
\begin_inset Formula $p$
\end_inset
denotes any additional degree-of-freedom at that node.
If node
\begin_inset Formula $a$
\end_inset
is rigid we get
\begin_inset Formula
\begin{equation}
\left[\begin{array}{ccc}
\delta\mathbf{u}_{a} & \delta\mathbf{w}_{a} & \delta p_{a}\end{array}\right]=\left[\begin{array}{ccc}
\delta\mathbf{r} & \delta\boldsymbol{\theta} & \delta p_{a}\end{array}\right]\left[\begin{array}{ccc}
\mathbf{I} & \mathbf{I} & \mathbf{0}\\
\hat{\mathbf{a}}_{a} & \hat{\mathbf{b}}_{a} & \mathbf{0}\\
\mathbf{0} & \mathbf{0} & 1
\end{array}\right]\,.\label{eq:fbs-rsi-a-rigid}
\end{equation}
\end_inset
If node
\begin_inset Formula $b$
\end_inset
is rigid we get
\begin_inset Formula
\begin{equation}
\left[\begin{array}{c}
\Delta\mathbf{u}_{b}\\
\Delta\mathbf{w}_{b}\\
\Delta p_{b}
\end{array}\right]=\left[\begin{array}{ccc}
\mathbf{I} & -\hat{\mathbf{a}}_{b} & \mathbf{0}\\
\mathbf{I} & -\hat{\mathbf{b}}_{b} & \mathbf{0}\\
\mathbf{0} & \mathbf{0} & 1
\end{array}\right]\left[\begin{array}{c}
\Delta\mathbf{r}\\
\Delta\boldsymbol{\theta}\\
\Delta p_{b}
\end{array}\right]\,.\label{eq:fbs-rsi-b-rigid}
\end{equation}
\end_inset
When node
\begin_inset Formula $a$
\end_inset
belongs to a rigid body,
the expression for
\begin_inset Formula $\delta W$
\end_inset
must be substituted with
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W & =\sum_{a=1}^{m}\left[\begin{array}{ccc}
\delta\mathbf{u}_{a} & \delta\mathbf{w}_{a} & \delta p_{a}\end{array}\right]\left[\begin{array}{c}
\mathbf{f}_{a}^{u}\\
\mathbf{f}_{a}^{w}\\
f_{a}^{p}
\end{array}\right]\\
& =\sum_{a=1}^{m}\left[\begin{array}{ccc}
\delta\mathbf{r} & \delta\boldsymbol{\omega} & \delta p_{a}\end{array}\right]\left[\begin{array}{c}
\mathbf{f}_{a}^{u}+\mathbf{f}_{a}^{w}\\
\hat{\mathbf{a}}_{a}^{n+\alpha}\cdot\mathbf{f}_{a}^{u}+\hat{\mathbf{b}}_{a}^{n+\alpha}\cdot\mathbf{f}_{a}^{w}\\
f_{a}^{p}
\end{array}\right]
\end{aligned}
\,.\label{eq:fbs-rsi-work-2}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
Similarly,
the linearized virtual work has the general form
\begin_inset Formula
\begin{equation}
D\delta W=\sum_{a}\sum_{b}\left[\begin{array}{ccc}
\delta\mathbf{u}_{a} & \delta\mathbf{w}_{a} & \delta p_{a}\end{array}\right]\left[\begin{array}{ccc}
\mathbf{K}_{ab}^{uu} & \mathbf{K}_{ab}^{uw} & \mathbf{k}_{ab}^{up}\\
\mathbf{K}_{ab}^{wu} & \mathbf{K}_{ab}^{ww} & \mathbf{k}_{ab}^{wp}\\
\mathbf{k}_{ab}^{pu} & \mathbf{k}_{ab}^{pw} & k_{ab}^{pp}
\end{array}\right]\left[\begin{array}{c}
\Delta\mathbf{u}_{b}\\
\Delta\mathbf{w}_{b}\\
\Delta p_{b}
\end{array}\right]\,.\label{eq:fbs-rsi-D-work}
\end{equation}
\end_inset
When node
\begin_inset Formula $a$
\end_inset
is rigid but node
\begin_inset Formula $b$
\end_inset
is not,
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W & =\sum_{a}\sum_{b}\left[\begin{array}{ccc}
\delta\mathbf{r} & \delta\boldsymbol{\theta} & \delta p_{a}\end{array}\right]\times\\
& \left[\begin{array}{ccc}
\mathbf{K}_{ab}^{uu}+\mathbf{K}_{ab}^{wu} & \mathbf{K}_{ab}^{uw}+\mathbf{K}_{ab}^{ww} & \mathbf{k}_{ab}^{up}+\mathbf{k}_{ab}^{wp}\\
\hat{\mathbf{a}}_{a}\cdot\mathbf{K}_{ab}^{uu}+\hat{\mathbf{b}}_{a}\cdot\mathbf{K}_{ab}^{wu} & \hat{\mathbf{a}}_{a}\cdot\mathbf{K}_{ab}^{uw}+\hat{\mathbf{b}}_{a}\cdot\mathbf{K}_{ab}^{ww} & \hat{\mathbf{a}}_{a}\cdot\mathbf{k}_{ab}^{up}+\hat{\mathbf{b}}_{a}\cdot\mathbf{k}_{ab}^{wp}\\
\mathbf{k}_{ab}^{pu} & \mathbf{k}_{ab}^{pw} & k_{ab}^{pp}
\end{array}\right]\\
& \times\left[\begin{array}{c}
\Delta\mathbf{u}_{b}\\
\Delta\mathbf{w}_{b}\\
\Delta p_{b}
\end{array}\right]
\end{aligned}
\,.\label{eq:fbs-rsi-D-work-2}
\end{equation}
\end_inset
If nodes
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $b$
\end_inset
are both rigid,
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W & =\sum_{a}\sum_{b}\left[\begin{array}{ccc}
\delta\mathbf{r} & \delta\boldsymbol{\theta} & \delta p_{a}\end{array}\right]\times\\
& \left[\begin{array}{ccc}
\mathbf{K}_{ab}^{uu}+\mathbf{K}_{ab}^{wu}+\mathbf{K}_{ab}^{uw}+\mathbf{K}_{ab}^{ww} & \left(\begin{aligned}-\left(\mathbf{K}_{ab}^{uu}+\mathbf{K}_{ab}^{wu}\right)\cdot\hat{\mathbf{a}}_{b}\\
-\left(\mathbf{K}_{ab}^{uw}+\mathbf{K}_{ab}^{ww}\right)\cdot\hat{\mathbf{b}}_{b}
\end{aligned}
\right) & \mathbf{k}_{ab}^{up}+\mathbf{k}_{ab}^{wp}\\
\left(\begin{aligned}\hat{\mathbf{a}}_{a}\cdot\left(\mathbf{K}_{ab}^{uu}+\mathbf{K}_{ab}^{uw}\right)\\
+\hat{\mathbf{b}}_{a}\cdot\left(\mathbf{K}_{ab}^{wu}+\mathbf{K}_{ab}^{ww}\right)
\end{aligned}
\right) & \left(\begin{aligned}-\left(\hat{\mathbf{a}}_{a}\cdot\mathbf{K}_{ab}^{uu}+\hat{\mathbf{b}}_{a}\cdot\mathbf{K}_{ab}^{wu}\right)\cdot\hat{\mathbf{a}}_{b}\\
-\left(\hat{\mathbf{a}}_{a}\cdot\mathbf{K}_{ab}^{uw}+\hat{\mathbf{b}}_{a}\cdot\mathbf{K}_{ab}^{ww}\right)\cdot\hat{\mathbf{b}}_{b}
\end{aligned}
\right) & \hat{\mathbf{a}}_{a}\cdot\mathbf{k}_{ab}^{up}+\hat{\mathbf{b}}_{a}\cdot\mathbf{k}_{ab}^{wp}\\
\mathbf{k}_{ab}^{pu}+\mathbf{k}_{ab}^{pw} & \hat{\mathbf{a}}_{b}\cdot\mathbf{k}_{ab}^{pu}+\hat{\mathbf{b}}_{b}\cdot\mathbf{k}_{ab}^{pw} & k_{ab}^{pp}
\end{array}\right]\\
& \times\left[\begin{array}{c}
\Delta\mathbf{r}\\
\Delta\boldsymbol{\theta}\\
\Delta p_{b}
\end{array}\right]
\end{aligned}
\,.\label{eq:fbs-rsi-D-work-3}
\end{equation}
\end_inset
If node
\begin_inset Formula $a$
\end_inset
is not rigid and node
\begin_inset Formula $b$
\end_inset
is rigid,
\begin_inset Formula
\begin{equation}
\begin{aligned}D\delta W & =\sum_{a}\sum_{b}\left[\begin{array}{ccc}
\delta\mathbf{u}_{a} & \delta\mathbf{w}_{a} & \delta p_{a}\end{array}\right]\times\\
& \left[\begin{array}{ccc}
\mathbf{K}_{ab}^{uu}+\mathbf{K}_{ab}^{wu} & -\mathbf{K}_{ab}^{uu}\cdot\hat{\mathbf{a}}_{b}-\mathbf{K}_{ab}^{uw}\cdot\hat{\mathbf{b}}_{b} & \mathbf{k}_{ab}^{up}\\
\mathbf{K}_{ab}^{wu}+\mathbf{K}_{ab}^{ww} & -\mathbf{K}_{ab}^{wu}\cdot\hat{\mathbf{a}}_{b}-\mathbf{K}_{ab}^{ww}\cdot\hat{\mathbf{b}}_{b} & \mathbf{k}_{ab}^{wp}\\
\mathbf{k}_{ab}^{pu}+\mathbf{k}_{ab}^{pw} & \hat{\mathbf{a}}_{b}\cdot\mathbf{k}_{ab}^{pu}+\hat{\mathbf{b}}_{b}\cdot\mathbf{k}_{ab}^{pw} & k_{ab}^{pp}
\end{array}\right]\left[\begin{array}{c}
\Delta\mathbf{r}\\
\Delta\boldsymbol{\theta}\\
\Delta p_{b}
\end{array}\right]
\end{aligned}
\,.\label{eq:fbs-rsi-D-work-4}
\end{equation}
\end_inset
\end_layout
\begin_layout Chapter
Constitutive Models
\begin_inset CommandInset label
LatexCommand label
name "chap:Constitutive-Models"
\end_inset
\end_layout
\begin_layout Standard
This chapter describes the theoretical background behind the constitutive models that are available in FEBio.
Most materials are derived from a hyperelastic strain-energy function.
Please consult Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Hyperelasticity"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for more background information on this class of materials.
\end_layout
\begin_layout Section
Linear Elasticity
\begin_inset CommandInset label
LatexCommand label
name "sec:Linear-Elasticity"
\end_inset
\end_layout
\begin_layout Standard
In the theory of linear elasticity the Cauchy stress tensor is a linear function of the small strain tensor
\begin_inset Formula $\boldsymbol{\varepsilon}$
\end_inset
:
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\boldsymbol{\mathcal{C}}:\boldsymbol{\varepsilon}\,.\label{eq402}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\boldsymbol{\mathcal{C}}$
\end_inset
is the fourth-order elasticity tensor that contains the material properties.
In the most general case this tensor has 21 independent parameters.
However,
in the presence of material symmetry the number of independent parameters is greatly reduced.
For example,
in the case of isotropic linear elasticity only two independent parameters remain.
In this case,
the elasticity tensor is given by
\begin_inset Formula $\boldsymbol{\mathcal{C}}=\lambda\mathbf{I}\otimes\mathbf{I}+2\mu\mathbf{I}\,\overline{\underline{\otimes}}\,\mathbf{I}$
\end_inset
,
or equivalently,
\begin_inset Formula
\begin{equation}
\mathcal{C}_{ijkl}=\lambda\delta_{ij}\delta_{kl}+\mu\left(\delta_{ik}\delta_{jl}+\delta_{il}\delta_{jk}\right)\,.\label{eq403}
\end{equation}
\end_inset
The material coefficients
\begin_inset Formula $\lambda$
\end_inset
and
\begin_inset Formula $\mu$
\end_inset
are known as the Lamé parameters.
Using this equation,
the stress-strain relationship can be written as
\begin_inset Formula
\begin{equation}
\sigma_{ij}=\lambda\varepsilon_{kk}\delta_{ij}+2\mu\varepsilon_{ij}\,.\label{eq404}
\end{equation}
\end_inset
If the stress and strain are represented inVoigt notation,
the constitutive equation can be rewritten in matrix form as
\begin_inset Formula
\begin{equation}
\left[\begin{array}{c}
\sigma_{11}\\
\sigma_{22}\\
\sigma_{33}\\
\sigma_{12}\\
\sigma_{23}\\
\sigma_{13}
\end{array}\right]=\left[\begin{array}{cccccc}
\lambda+2\mu & \lambda & \lambda & 0 & 0 & 0\\
\lambda & \lambda+2\mu & \lambda & 0 & 0 & 0\\
\lambda & \lambda & \lambda+2\mu & 0 & 0 & 0\\
0 & 0 & 0 & \mu & 0 & 0\\
0 & 0 & 0 & 0 & \mu & 0\\
0 & 0 & 0 & 0 & 0 & \mu
\end{array}\right]\left[\begin{array}{c}
\varepsilon_{11}\\
\varepsilon_{22}\\
\varepsilon_{33}\\
\gamma_{12}\\
\gamma_{23}\\
\gamma_{13}
\end{array}\right]\,.\label{eq405}
\end{equation}
\end_inset
The shear strain measures
\begin_inset Formula $\gamma_{ij}=2\varepsilon_{ij}$
\end_inset
are called the
\emph on
engineering strains
\emph default
.
\end_layout
\begin_layout Standard
The following table relates the Lamé parameters to the more familiar Young's modulus
\begin_inset Formula $E$
\end_inset
and Poisson's ratio
\begin_inset Formula $\nu$
\end_inset
or to the bulk modulus
\begin_inset Formula $K$
\end_inset
and shear modulus
\begin_inset Formula $G$
\end_inset
.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $E,\nu$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\lambda,\mu$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $K,G$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $E,\nu$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\begin{array}{l}
E=\frac{\mu}{\lambda+\mu}\left(2\mu+3\lambda\right)\\
\nu=\frac{\lambda}{2\left(\lambda+\mu\right)}
\end{array}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\begin{array}{l}
E=\frac{9KG}{3K+G}\\
\nu=\frac{3K-2G}{6K+2G}
\end{array}$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\lambda,\mu$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\begin{array}{l}
\lambda=\frac{\nu E}{\left(1+\nu\right)\left(1-2\nu\right)}\\
\mu=\frac{E}{2\left(1+\nu\right)}
\end{array}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\begin{array}{l}
\lambda=K-\frac{2}{3}G\\
\mu=G
\end{array}$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $K,G$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\begin{array}{l}
K=\frac{E}{3\left(1-2v\right)}\\
G=\frac{E}{2\left(1+v\right)}
\end{array}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\begin{array}{l}
K=\lambda+\frac{2}{3}\mu\\
G=\mu
\end{array}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The theoretical range of the Young's modulus and Poisson's ratio for an isotropic material have the ranges
\begin_inset Formula
\begin{equation}
0I_{0}$
\end_inset
,
where
\begin_inset Formula $I_{0}=\lambda_{0}^{2}$
\end_inset
is the square of the stretch at which the fiber's tensile response engages.
By default we may take
\begin_inset Formula $I_{0}=1$
\end_inset
,
though the actual value of
\begin_inset Formula $I_{0}$
\end_inset
may be set by the user.
The fiber strain energy density is given by
\begin_inset Formula
\begin{equation}
\Psi_{r}=\frac{\xi}{\alpha\beta}\left(\exp\left[\alpha\left(I_{n}-I_{0}\right)^{\beta}\right]-1\right)\,,\label{eq:fepl-fiber-Psi}
\end{equation}
\end_inset
where
\begin_inset Formula $\xi>0$
\end_inset
,
\begin_inset Formula $\alpha\geqslant0$
\end_inset
and
\begin_inset Formula $\beta\geqslant2$
\end_inset
.
From this expression we get
\begin_inset Formula
\begin{equation}
\begin{aligned}\frac{\partial\Psi_{r}}{\partial I_{n}} & =\xi\left(I_{n}-I_{0}\right)^{\beta-1}\exp\left[\alpha\left(I_{n}-I_{0}\right)^{\beta}\right]\\
\frac{\partial^{2}\Psi_{r}}{\partial I_{n}^{2}} & =\xi\left(\beta\left(1+\alpha\left(I_{n}-I_{0}\right)^{\beta}\right)-1\right)\left(I_{n}-I_{0}\right)^{\beta-2}\exp\left[\alpha\left(I_{n}-I_{0}\right)^{\beta}\right]
\end{aligned}
\,.\label{eq:fepl-fiber-dPsi}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
Note:
In the limit when
\begin_inset Formula $\alpha\to0$
\end_inset
,
this expression produces a power law,
\begin_inset Formula
\begin{equation}
\lim\limits_{\alpha\to0}\Psi_{r}=\frac{\xi}{\beta}\left(I_{n}-I_{0}\right)^{\beta}\,.\label{eq:fepl-Psi-alpha0}
\end{equation}
\end_inset
Note:
According to
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:fepl-elasticity"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:fepl-fiber-dPsi"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
when
\begin_inset Formula $\beta>2$
\end_inset
the fiber modulus is zero at the strain origin (
\begin_inset Formula $I_{n}=I_{0})$
\end_inset
.
Therefore,
use
\begin_inset Formula $\beta>2$
\end_inset
when a smooth transition in the stress is desired from compression to tension.
\end_layout
\begin_layout Standard
There is an option to also add a shear modulus
\begin_inset Formula $\mu$
\end_inset
to account for the interaction of a fiber with the ground matrix.
This additional contribution does not depend on whether the fiber is in tension.
It has a strain energy density
\begin_inset Formula
\begin{equation}
W=\frac{\mu}{4}\left(K_{n}-1-2\left(I_{n}-1\right)\right)\,,\quad K_{n}=\mathbf{n}_{r}\cdot\mathbf{C}^{2}\cdot\mathbf{n}_{r}\label{eq:fepl-shear-sed}
\end{equation}
\end_inset
The corresponding stress is
\begin_inset Formula
\begin{equation}
\begin{aligned}\boldsymbol{\sigma} & =2\frac{I_{n}}{J}\left(\frac{\partial W}{\partial I_{n}}\mathbf{n}\otimes\mathbf{n}+\frac{\partial W}{\partial K_{n}}\left(\mathbf{n}\otimes\mathbf{n}\cdot\mathbf{b}+\mathbf{b}\cdot\mathbf{n}\otimes\mathbf{n}\right)\right)\\
& =\frac{\mu}{2}\frac{I_{n}}{J}\left(\mathbf{n}\otimes\mathbf{n}\cdot\left(\mathbf{b}-\mathbf{I}\right)+\left(\mathbf{b}-\mathbf{I}\right)\cdot\mathbf{n}\otimes\mathbf{n}\right)
\end{aligned}
\label{eq:fepl-shear-stress}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{b}=\mathbf{F}\cdot\mathbf{F}^{T}$
\end_inset
is the left Cauchy-Green tensor.
The elasticity tensor is
\begin_inset Formula
\begin{equation}
\begin{aligned}\boldsymbol{\mathcal{C}} & =4\frac{I_{n}^{2}}{J}\left(\frac{\partial^{2}W}{\partial I_{n}^{2}}\mathbf{N}\otimes\mathbf{N}+\frac{\partial^{2}W}{\partial K_{n}^{2}}\left(\mathbf{N}\cdot\mathbf{b}+\mathbf{b}\cdot\mathbf{N}\right)\otimes\left(\mathbf{N}\cdot\mathbf{b}+\mathbf{b}\cdot\mathbf{N}\right)\right)\\
& +4\frac{I_{n}^{2}}{J}\frac{\partial^{2}W}{\partial I_{n}\partial K_{n}}\left(\mathbf{N}\otimes\left(\mathbf{N}\cdot\mathbf{b}+\mathbf{b}\cdot\mathbf{N}\right)+\left(\mathbf{N}\cdot\mathbf{b}+\mathbf{b}\cdot\mathbf{N}\right)\otimes\mathbf{N}\right)\\
& +\frac{4I_{n}}{J}\frac{\partial W}{\partial K_{n}}\left(\mathbf{N}\odot\mathbf{b}+\mathbf{b}\odot\mathbf{N}\right)\\
& =\mu\frac{I_{n}}{J}\left(\mathbf{N}\odot\mathbf{b}+\mathbf{b}\odot\mathbf{N}\right)
\end{aligned}
\,,\label{eq:fepl-shear-elasticity}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{N}=\mathbf{n}\otimes\mathbf{n}$
\end_inset
.
\end_layout
\begin_layout Subsection
Fiber with Natural Neo-Hookean Response
\end_layout
\begin_layout Standard
This model is an adaptation of the natural neo-Hookean material presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand eqref
reference "subsec:Natural-Neo-Hookean"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
Consider that the state of strain in a fiber is given by the unidirectional natural (left Hencky) strain along the fiber,
\begin_inset Formula
\begin{equation}
\boldsymbol{\eta}=\ln\lambda_{n}\,\mathbf{n}\otimes\mathbf{n}\label{eq:fnh-strain}
\end{equation}
\end_inset
where
\begin_inset Formula $\lambda_{n}$
\end_inset
is the stretch ratio along the current fiber unit vector
\begin_inset Formula $\mathbf{n}$
\end_inset
.
For this special state of strain the invariants
\begin_inset Formula $K_{i}$
\end_inset
of the natural strain tensor reduce to
\begin_inset Formula $K_{1}=\ln\lambda_{n}$
\end_inset
,
\begin_inset Formula $K_{2}=\sqrt{3/2}\ln\lambda_{n}$
\end_inset
,
and
\begin_inset Formula $K_{3}=1$
\end_inset
.
In this case,
a natural neo-Hookean fiber response is given by
\begin_inset Formula
\begin{equation}
\Psi_{r}=\frac{\xi}{2}H\left(\ln\lambda_{n}\right)\left(\ln\lambda_{n}\right)^{2}\,.\label{eq:fnh-sed}
\end{equation}
\end_inset
The corresponding Cauchy stress is
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\xi J^{-1}H\left(\ln\lambda_{n}\right)\ln\lambda_{n}\mathbf{n}\otimes\mathbf{n}\label{eq:fnh-stress}
\end{equation}
\end_inset
and the elasticity tensor is
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{C}}=\xi J^{-1}H\left(\ln\lambda_{n}\right)\left(1-2\ln\lambda_{n}\right)\mathbf{N}\otimes\mathbf{N}\label{eq:fnh-elasticity}
\end{equation}
\end_inset
where
\begin_inset Formula $\xi$
\end_inset
is the fiber modulus.
This expression shows that the components of the elasticity tensor become negative when
\begin_inset Formula $1-2\ln\lambda_{n}<0$
\end_inset
,
or equivalently when
\begin_inset Formula $\lambda_{n}>e^{\frac{1}{2}}$
\end_inset
.
However,
the stress always remains positive.
\end_layout
\begin_layout Standard
If we want the tensile response to engage only beyond a threshold stretch ratio
\begin_inset Formula $\lambda_{0}$
\end_inset
,
we may rewrite the strain energy density as
\begin_inset Formula
\begin{equation}
\Psi_{r}=\frac{\xi}{2}H\left(\ln\lambda_{n}-\ln\lambda_{0}\right)\left(\ln\lambda_{n}-\ln\lambda_{0}\right)^{2}=\frac{\xi}{2}H\left(\ln\frac{\lambda_{n}}{\lambda_{0}}\right)\left(\ln\frac{\lambda_{n}}{\lambda_{0}}\right)^{2}\,.\label{eq:fnh-sed-redux}
\end{equation}
\end_inset
Then
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\xi J^{-1}H\left(\ln\frac{\lambda_{n}}{\lambda_{0}}\right)\ln\frac{\lambda_{n}}{\lambda_{0}}\mathbf{n}\otimes\mathbf{n}\,,\label{eq:fnh-stress-redux}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{C}}=\xi J^{-1}H\left(\ln\frac{\lambda_{n}}{\lambda_{0}}\right)\left(1-2\ln\frac{\lambda_{n}}{\lambda_{0}}\right)\mathbf{N}\otimes\mathbf{N}\,.\label{eq:fnh-elasticity-redux}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
HGO Unconstrained
\end_layout
\begin_layout Standard
A coupled formulation of the Holzapfel-Gasser-Ogden material is implemented in the
\begin_inset Quotes eld
\end_inset
HGO unconstrained
\begin_inset Quotes erd
\end_inset
material.
\end_layout
\begin_layout Standard
The strain energy density is given by,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\Psi_{r}=\frac{c}{2}\left(I_{1}-3\right)-c\ln J+\frac{k_{1}}{2k_{2}}\sum_{\alpha}\left(\exp\left(k_{2}\left\langle E_{\alpha}\right\rangle ^{2}\right)-1\right)+\frac{K_{0}}{2}\left(\frac{J^{2}-1}{2}-\ln J\right)
\]
\end_inset
\end_layout
\begin_layout Standard
The fiber strain is
\begin_inset Formula
\[
E_{\alpha}=\kappa\left(I_{1}-3\right)+\left(1-3\kappa\right)\left(I_{4\alpha}-1\right)
\]
\end_inset
where
\begin_inset Formula $I_{1}=\tr\mathbf{C}$
\end_inset
and
\begin_inset Formula $I_{4\alpha}=\mathbf{a}_{\alpha r}\cdot\mathbf{C}\cdot\mathbf{a}_{\alpha r}$
\end_inset
.
The Macaulay brackets around
\begin_inset Formula $\left\langle E_{\alpha}\right\rangle $
\end_inset
indicate that this term is zero when
\begin_inset Formula $E_{\alpha}<0$
\end_inset
and equal to
\begin_inset Formula $E_{\alpha}$
\end_inset
when this strain is positive.There are two fiber families along the vectors
\begin_inset Formula $\mathbf{a}_{\alpha r}$
\end_inset
(
\begin_inset Formula $\alpha=1,2$
\end_inset
),
lying in the
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2}\right\} $
\end_inset
plane of the local material axes
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
,
making an angle
\begin_inset Formula $\pm\gamma$
\end_inset
with respect to
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
.
Each fiber family has a dispersion
\begin_inset Formula $\kappa$
\end_inset
,
where
\begin_inset Formula $0\le\kappa\le\frac{1}{3}$
\end_inset
.
When
\begin_inset Formula $\kappa=0$
\end_inset
there is no fiber dispersion,
implying that all the fibers in that family act along the angle
\begin_inset Formula $\pm\gamma$
\end_inset
;
the value
\begin_inset Formula $\kappa=\frac{1}{3}$
\end_inset
represents an isotropic fiber dispersion.
\end_layout
\begin_layout Standard
The Cauchy stress is given by,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\mathbf{\sigma}=\frac{1}{J}\left[c\left(\mathbf{b}-\mathbf{1}\right)+\frac{k}{2}\left(J^{2}-1\right)\mathbf{1}\right]+\frac{1}{J}\left[{\displaystyle \underset{\alpha}{\sum}2k_{1}\left\langle E_{\alpha}\right\rangle \exp\left(k_{2}\left\langle E_{\alpha}\right\rangle ^{2}\right)\mathbf{h}_{\alpha}}\right]
\]
\end_inset
\end_layout
\begin_layout Standard
where,
\begin_inset Formula $\mathbf{h}_{\alpha}=\kappa\mathbf{b}+\left(1-3\kappa\right)\mathbf{A}_{\alpha}$
\end_inset
,
and
\begin_inset Formula $\mathbf{A}_{\alpha}=\mathbf{a}_{\alpha}\otimes\mathbf{a}_{\alpha}$
\end_inset
.
\end_layout
\begin_layout Standard
The spatial elasticity tensor is given by,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\boldsymbol{c}=\frac{1}{J}\left\{ kJ^{2}\mathbf{1}\otimes\mathbf{1}+\left[2c-k\left(J^{2}-1\right)\right]\mathbf{1}\odot\mathbf{1}\right\} +\frac{1}{J}\left[{\displaystyle \underset{\alpha}{\sum}4k_{1}\left(1+2k_{2}\left\langle E_{\alpha}\right\rangle ^{2}\right)\exp\left(k_{2}\left\langle E_{\alpha}\right\rangle ^{2}\right)\mathbf{h}_{\alpha}\otimes\mathbf{h}_{\alpha}}\right]
\]
\end_inset
\end_layout
\begin_layout Section
Nearly-Incompressible Materials
\begin_inset CommandInset label
LatexCommand label
name "sec:Nearly-Incompressible-Materials"
\end_inset
\end_layout
\begin_layout Subsection
Mooney-Rivlin Hyperelasticity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Mooney-Rivlin-Hyperelasticity"
\end_inset
\end_layout
\begin_layout Standard
This material model is a hyperelastic Mooney-Rivlin type with uncoupled deviatoric and volumetric behavior.
The uncoupled strain energy W is given by:
\begin_inset Formula
\begin{equation}
W=c_{1}\left(\tilde{I}_{1}-3\right)+c_{2}\left(\tilde{I}_{2}-3\right)+\frac{1}{2}K\left(\ln J\right)^{2}\,.\label{eq449}
\end{equation}
\end_inset
Here,
\begin_inset Formula $c_{1}$
\end_inset
and
\begin_inset Formula $c_{2}$
\end_inset
are the Mooney-Rivlin material coefficients,
\begin_inset Formula $\tilde{I}_{1}$
\end_inset
and
\begin_inset Formula $\tilde{I}_{2}$
\end_inset
are the invariants of the deviatoric part of the right Cauchy-Green deformation tensor,
\begin_inset Formula $\mathbf{\tilde{C}}=\mathbf{\tilde{F}}^{T}\cdot\mathbf{\tilde{F}}$
\end_inset
,
where
\begin_inset Formula $\mathbf{\tilde{F}}=J^{-1/3}\mathbf{F}$
\end_inset
,
\series bold
\emph on
\begin_inset Formula $\mathbf{F}$
\end_inset
\series default
\emph default
is the deformation gradient and
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
is the Jacobian of the deformation.
When
\begin_inset Formula $c_{2}=0$
\end_inset
,
this model reduces to an uncoupled version of the incompressible neo-Hookean constitutive model.
\end_layout
\begin_layout Standard
The Cauchy stress is given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=p\mathbf{I}+\frac{2}{J}\left[\left(c_{1}+c_{2}\tilde{I}_{1}\right)\mathbf{\tilde{b}}-c_{2}\mathbf{\tilde{b}}^{2}-\frac{1}{3}\left(c_{1}\tilde{I}_{1}+2c_{2}\tilde{I}_{2}\right)\mathbf{I}\right]\,.\label{eq450}
\end{equation}
\end_inset
The spatial elasticity tensor is given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{C}}=p\left(\mathbf{I}\otimes\mathbf{I}-2\mathbf{I}\odot\mathbf{I}\right)-\frac{2}{3}\left(\dev\boldsymbol{\sigma}\otimes\mathbf{I}+\mathbf{I}\otimes\dev\boldsymbol{\sigma}\right)+\boldsymbol{\mathcal{C}}_{w}\,,\label{eq451}
\end{equation}
\end_inset
where,
\begin_inset Formula
\begin{equation}
\begin{aligned}\boldsymbol{\mathcal{C}}_{w} & =\frac{4}{3J}\left(c_{1}\tilde{I}_{1}+2c_{2}\tilde{I}_{2}\right)\left(\mathbf{I}\odot\mathbf{I}-\frac{1}{3}\mathbf{I}\otimes\mathbf{I}\right)+\frac{4c_{2}}{J}\left(\mathbf{\tilde{b}}\otimes\mathbf{\tilde{b}}-\mathbf{\tilde{b}}\odot\mathbf{\tilde{b}}\right)\\
& -\frac{4c_{2}}{3J}\left[\left(\tilde{I}_{1}\mathbf{\tilde{b}}-\mathbf{\tilde{b}}^{2}\right)\otimes\mathbf{I}+\mathbf{I}\otimes\left(\tilde{I}_{1}\mathbf{\tilde{b}}-\mathbf{\tilde{b}}^{2}\right)\right]+\frac{8c_{2}\tilde{I}_{2}}{9J}\mathbf{I}\otimes\mathbf{I}\,.
\end{aligned}
\label{eq452}
\end{equation}
\end_inset
This material model uses a three-field element formulation,
interpolating displacements as linear field variables and pressure and volume ratio as piecewise constant in each element
\begin_inset CommandInset citation
LatexCommand citep
key "Simo91"
literal "true"
\end_inset
.
\end_layout
\begin_layout Subsection
Ogden Hyperelastic
\begin_inset CommandInset label
LatexCommand label
name "subsec:Ogden-Hyperelastic"
\end_inset
\end_layout
\begin_layout Standard
The Ogden material is defined using the following hyperelastic strain energy function:
\begin_inset Formula
\begin{equation}
W\left(\lambda_{1},\lambda_{2},\lambda_{3},J\right)=\sum\limits_{i=1}^{N}\frac{c_{i}}{m_{i}^{2}}\left(\tilde{\lambda}_{1}^{m_{i}}+\tilde{\lambda}_{2}^{m_{i}}+\tilde{\lambda}_{3}^{m_{i}}-3\right)+U\left(J\right)\,.\label{eq453}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\tilde{\lambda}_{i}$
\end_inset
are the deviatoric principal stretches and
\begin_inset Formula $c_{i}$
\end_inset
and
\begin_inset Formula $m_{i}$
\end_inset
are material parameters.
The term
\begin_inset Formula $U\left(J\right)$
\end_inset
is the volumetric component and
\begin_inset Formula $J$
\end_inset
is the determinant of the deformation gradient.
\end_layout
\begin_layout Standard
Note that the neo-Hookean and Mooney-Rivlin models can also be obtained from the general Ogden strain energy function using special choices for
\begin_inset Formula $c_{i}$
\end_inset
and
\begin_inset Formula $m_{i}$
\end_inset
.
\end_layout
\begin_layout Subsection
Veronda-Westmann Hyperelasticity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Veronda-Westmann-Hyperelasticity"
\end_inset
\end_layout
\begin_layout Standard
This model is similar to the Mooney-Rivlin model in that it also uses an uncoupled strain energy.
However,
in this case the strain energy is given by an exponential form:
\begin_inset Formula
\begin{equation}
W=C_{1}\left[e^{\left(C_{2}\left(\tilde{I}_{1}-3\right)\right)}-1\right]-\frac{C_{1}C_{2}}{2}\left(\tilde{I}_{2}-3\right)+U\left(J\right)\,.\label{eq454}
\end{equation}
\end_inset
The dilatational term
\begin_inset Formula $U$
\end_inset
is identical to the Mooney-Rivlin model.
\end_layout
\begin_layout Standard
The Cauchy stress
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
is found from
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=p\mathbf{I}+\dev\tilde{\boldsymbol{\sigma}}\,,\label{eq455}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\sigma}}=\frac{2}{J}\left[\left(W_{1}+I_{1}W_{2}\right)\tilde{\mathbf{b}}-W_{2}\tilde{\mathbf{b}}^{2}\right]\,.\label{eq456}
\end{equation}
\end_inset
The strain energy derivatives are given by
\begin_inset Formula
\begin{equation}
W_{1}=C_{1}C_{2}e^{C_{2}\left(I_{1}-3\right)}\,,\label{eq457}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
W_{2}=-\frac{C_{1}C_{2}}{2}\,.\label{eq458}
\end{equation}
\end_inset
This material model was the result from the research of the elastic response of skin tissue
\begin_inset CommandInset citation
LatexCommand citep
key "Veronda70"
literal "true"
\end_inset
.
\end_layout
\begin_layout Subsection
Arruda-Boyce Hyperelasticity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Arruda-Boyce-Hyperelasticity"
\end_inset
\end_layout
\begin_layout Standard
Arruda and Boyce proposed a model for the deformation of rubber materials
\begin_inset CommandInset citation
LatexCommand citep
key "Arruda93"
literal "true"
\end_inset
.
Their main motivation was to develop a model that accurately captures the behavior of rubbers in different loading scenarios and that can be described with a limited number of physically motivated parameters.
Their model is based on the Langevin chain statistics,
which models a rubber chain segment between chemical crosslinks as a number
\begin_inset Formula $N$
\end_inset
of rigid links of equal length
\begin_inset Formula $l$
\end_inset
.
The parameter
\begin_inset Formula $N$
\end_inset
is related to the locking stretch
\begin_inset Formula $\lambda_{L}$
\end_inset
,
the stretch at which the chains reach their full extended state,
\begin_inset Formula $\lambda_{L}=\sqrt{N}$
\end_inset
.
\end_layout
\begin_layout Standard
Their proposed strain-energy is a truncated Taylor series of the inverse Langevin function.
A formulation that retains the first five terms of this function takes on the following form:
\begin_inset Formula
\begin{equation}
\tilde{W}=\mu\sum\limits_{i=1}^{5}\frac{\alpha_{i}}{N^{i-1}}\left(\tilde{I}_{1}^{i}-3^{i}\right)+U\left(J\right)\,,\label{eq459}
\end{equation}
\end_inset
where
\begin_inset Formula $\mu$
\end_inset
is a shear-modulus like parameter and the coefficients
\begin_inset Formula $\alpha_{i}$
\end_inset
are
\begin_inset Formula
\begin{equation}
\alpha_{1}=\frac{1}{2}\,,\quad\alpha_{2}=\frac{1}{20}\,,\quad\alpha_{3}=\frac{11}{1050}\,,\quad\alpha_{4}=\frac{19}{7000}\,,\quad\alpha_{5}=\frac{519}{673750}\,.\label{eq460}
\end{equation}
\end_inset
The Cauchy stress is given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=p\mathbf{I}+\frac{2}{J}\dev\left(W_{1}\mathbf{\tilde{b}}\right)=p\mathbf{I}+\frac{2W_{1}}{J}\left(\mathbf{\tilde{b}}-\frac{1}{3}\tilde{I}_{1}\mathbf{I}\right)\,,\label{eq461}
\end{equation}
\end_inset
where,
\begin_inset Formula
\begin{equation}
W_{1}=\frac{\partial\tilde{W}}{\partial\tilde{I}_{1}}=\mu\sum\limits_{i=1}^{5}\alpha_{i}i\left(\frac{\tilde{I}_{1}}{N}\right)^{i-1}\,.\label{eq462}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Transversely Isotropic Hyperelastic
\begin_inset CommandInset label
LatexCommand label
name "subsec:Transversely-Isotropic-Hyperelas-1"
\end_inset
\end_layout
\begin_layout Standard
This constitutive model can be used to represent a material that has a single preferred fiber direction and was developed for application to biological soft tissues
\begin_inset CommandInset citation
LatexCommand citep
key "Weiss96,Puso98,Quapp98"
literal "true"
\end_inset
.
It can be used to model tissues such as tendons,
ligaments and muscle.
The elastic response of the tissue is assumed to arise from the resistance of the fiber family and an isotropic matrix.
It is assumed that the strain energy function can be written as follows:
\begin_inset Formula
\begin{equation}
W=F_{1}\left(\tilde{I}_{1},\tilde{I}_{2}\right)+F_{2}\left(\tilde{\lambda}\right)+\frac{K}{2}\left[\ln\left(J\right)\right]^{2}\,.\label{eq463}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\tilde{I}_{1}$
\end_inset
and
\begin_inset Formula $\tilde{I}_{2}$
\end_inset
are the first and second invariants of the deviatoric version of the right Cauchy Green deformation tensor
\begin_inset Formula $\mathbf{\tilde{C}}$
\end_inset
and
\begin_inset Formula $\tilde{\lambda}$
\end_inset
is the deviatoric part of the stretch along the fiber direction (
\begin_inset Formula $\tilde{\lambda}^{2}=\mathbf{A}\cdot\mathbf{\tilde{C}}\cdot\mathbf{A}$
\end_inset
,
where
\begin_inset Formula $\mathbf{A}$
\end_inset
is the initial fiber direction).
The function
\begin_inset Formula $F_{1}$
\end_inset
represents the material response of the isotropic ground substance matrix,
while
\begin_inset Formula $F_{2}$
\end_inset
represents the contribution from the fiber family.
The strain energy of the fiber family is as follows:
\begin_inset Formula
\begin{equation}
\tilde{\lambda}\frac{\partial F_{2}}{\partial\tilde{\lambda}}=\begin{cases}
0 & \tilde{\lambda}\leqslant1\\
C_{3}\left(e^{C_{4}\left(\tilde{\lambda}-1\right)}-1\right) & 1<\tilde{\lambda}<\lambda_{m}\\
C_{5}+C_{6}\tilde{\lambda} & \tilde{\lambda}\geqslant\lambda_{m}
\end{cases}\,.\label{eq464}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\lambda_{m}$
\end_inset
is the stretch at which the fibers are straightened,
\begin_inset Formula $C_{3}$
\end_inset
scales the exponential stresses,
\begin_inset Formula $C_{4}$
\end_inset
is the rate of uncrimping of the fibers,
and
\begin_inset Formula $C_{5}$
\end_inset
is the modulus of the straightened fibers.
\begin_inset Formula $C_{6}$
\end_inset
is determined from the requirement that the stress is continuous at
\begin_inset Formula $\lambda_{m}$
\end_inset
,
\begin_inset Formula
\begin{equation}
C_{6}=\frac{1}{\lambda_{m}}\left[C_{3}\left(e^{C_{4}\left(\lambda_{m}-1\right)}-1\right)-C_{5}\right]\,.\label{eq464b}
\end{equation}
\end_inset
It also follows that
\begin_inset Formula
\begin{equation}
F_{2}\left(\tilde{\lambda}\right)=\begin{cases}
0 & \tilde{\lambda}\leqslant1\\
C_{3}\left(e^{-C_{4}}\left[\Ei\left(C_{4}\tilde{\lambda}\right)-\Ei\left(C_{4}\right)\right]-\ln\tilde{\lambda}\right) & 1<\tilde{\lambda}<\lambda_{m}\\
\left(C_{5}+\frac{C_{6}}{2}\tilde{\lambda}\right)\tilde{\lambda}+C_{7} & \tilde{\lambda}\geqslant\lambda_{m}
\end{cases}\,,\label{eq464c}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
C_{7}=C_{3}\left(e^{-C_{4}}\left[\Ei\left(C_{4}\lambda_{m}\right)-\Ei\left(C_{4}\right)\right]-\ln\lambda_{m}\right)-\left(C_{5}+\frac{C_{6}}{2}\lambda_{m}\right)\lambda_{m}\,.\label{eq464d}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
This material model uses a three-field element formulation,
interpolating displacements as linear field variables and pressure and volume ratio as piecewise constant on each element
\begin_inset CommandInset citation
LatexCommand citep
key "Simo91"
literal "true"
\end_inset
.
\end_layout
\begin_layout Subsection
Ellipsoidal Fiber Distribution
\begin_inset CommandInset label
LatexCommand label
name "subsec:Ellipsoidal-Fiber-Distribution"
\end_inset
\end_layout
\begin_layout Standard
This constitutive model describes a material that is composed of an ellipsoidal continuous fiber distribution in an uncoupled formulation.
The deviatoric part of the stress is given by
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian09a,Ateshian07a,Lanir83"
literal "true"
\end_inset
,
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\sigma}}=\int_{0}^{2\pi}\int_{0}^{\pi}H\left(\tilde{I}_{n}-1\right)\tilde{\boldsymbol{\sigma}}_{n}\left(\mathbf{n}\right)\sin\varphi\,d\varphi\,d\theta\,,\label{eq465}
\end{equation}
\end_inset
and the corresponding elasticity tensor is
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\mathcal{C}}}=\int_{0}^{2\pi}\int_{0}^{\pi}H\left(\tilde{I}_{n}-1\right)\tilde{\boldsymbol{\mathcal{C}}}_{n}\left(\mathbf{n}\right)\sin\phi\,d\phi\,d\theta\,.\label{eq466}
\end{equation}
\end_inset
\begin_inset Formula $\tilde{I}_{n}=\tilde{\lambda}_{n}^{2}=\mathbf{N}\cdot\mathbf{\tilde{C}}\cdot\mathbf{N}$
\end_inset
is the square of the fiber stretch
\begin_inset Formula $\mathbf{F}$
\end_inset
,
\begin_inset Formula $\mathbf{N}$
\end_inset
is the unit vector along the fiber direction (in the reference configuration),
which in spherical angles is directed along
\begin_inset Formula $\left(\theta,\varphi\right)$
\end_inset
,
\begin_inset Formula $\mathbf{n}=\mathbf{\tilde{F}}\cdot\mathbf{N}/\tilde{\lambda}_{n}$
\end_inset
and
\begin_inset Formula $H\left(\cdot\right)$
\end_inset
is the unit step function that enforces the tension-only contribution.
The fiber stress is determined from a fiber strain energy function in the usual manner:
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\sigma}}_{n}\left(\mathbf{n}\right)=2J^{-1}\tilde{I}_{n}\frac{\partial\tilde{\Psi}}{\partial\tilde{I}_{n}}\mathbf{n}\otimes\mathbf{n}\,,\label{eq467}
\end{equation}
\end_inset
whereas the fiber elasticity tensor is
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\mathcal{C}}}_{n}\left(\mathbf{n}\right)=4J^{-1}\tilde{I}_{n}^{2}\frac{\partial^{2}\tilde{\Psi}}{\partial\tilde{I}_{n}^{2}}\mathbf{n}\otimes\mathbf{n}\otimes\mathbf{n}\otimes\mathbf{n}\,,\label{eq468}
\end{equation}
\end_inset
where in this material
\begin_inset Formula
\begin{equation}
\tilde{\Psi}\left(\mathbf{n},\tilde{I}_{n}\right)=\xi\left(\mathbf{n}\right)\left(\tilde{I}_{n}-1\right)^{\beta\left(\mathbf{n}\right)}\,.\label{eq469}
\end{equation}
\end_inset
The materials parameters
\begin_inset Formula $\beta$
\end_inset
and
\begin_inset Formula $\xi$
\end_inset
are determined from:
\begin_inset Formula
\begin{equation}
\begin{aligned}\xi\left(\mathbf{n}\right) & =\left(\frac{\cos^{2}\theta\sin^{2}\varphi}{\xi_{1}^{2}}+\frac{\sin^{2}\theta\sin^{2}\varphi}{\xi_{2}^{2}}+\frac{\cos^{2}\varphi}{\xi_{3}^{2}}\right)^{-1/2}\,,\\
\beta\left(\mathbf{n}\right) & =\left(\frac{\cos^{2}\theta\sin^{2}\varphi}{\beta_{1}^{2}}+\frac{\sin^{2}\theta\sin^{2}\varphi}{\beta_{2}^{2}}+\frac{\cos^{2}\varphi}{\beta_{3}^{2}}\right)^{-1/2}\,.
\end{aligned}
\label{eq470}
\end{equation}
\end_inset
Since fibers can only sustain tension,
this material is not stable on its own.
It must be combined with a material that acts as the ground matrix.
The total stress is then given by the sum of the fiber stress and the ground matrix stress:
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\sigma}}=\tilde{\boldsymbol{\sigma}}_{m}+\tilde{\boldsymbol{\sigma}}_{f}\,.\label{eq471}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Fiber with Exponential Power Law Uncoupled
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fiber-Exponential-Power-UC"
\end_inset
\end_layout
\begin_layout Standard
This material model describes a constitutive model for fibers,
where a single fiber family follows an exponential power law strain energy function.
The deviatoric part of the Cauchy stress is given by:
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\sigma}}=2J^{-1}H\left(\tilde{I}_{n}-1\right)\tilde{I}_{n}\frac{\partial\tilde{\Psi}}{\partial\tilde{I}_{n}}\mathbf{n}\otimes\mathbf{n}\,,\label{eq472}
\end{equation}
\end_inset
and the corresponding spatial elasticity tensor is
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\mathcal{C}}}=4J^{-1}H\left(\tilde{I}_{n}-1\right)\tilde{I}_{n}^{2}\frac{\partial^{2}\tilde{\Psi}}{\partial\tilde{I}_{n}^{2}}\mathbf{n}\otimes\mathbf{n}\otimes\mathbf{n}\otimes\mathbf{n}\,,\label{eq473}
\end{equation}
\end_inset
where
\begin_inset Formula $\tilde{I}_{n}=\tilde{\lambda}_{n}^{2}=\mathbf{N}\cdot\mathbf{\tilde{C}}\cdot\mathbf{N}$
\end_inset
is the square of the fiber stretch,
\begin_inset Formula $\mathbf{N}$
\end_inset
is the fiber orientation in the reference configuration,
\begin_inset Formula
\begin{equation}
\mathbf{N}=\sin\varphi\cos\theta\,\mathbf{e}_{1}+\sin\varphi\sin\theta\,\mathbf{e}_{2}+\cos\varphi\,\mathbf{e}_{3}\,,\label{eq474}
\end{equation}
\end_inset
and
\begin_inset Formula $\mathbf{n}=\mathbf{\tilde{F}}\cdot\mathbf{N}/\tilde{\lambda}_{n}$
\end_inset
and
\begin_inset Formula $H\left(\cdot\right)$
\end_inset
is the unit step function that enforces the tension-only contribution.
The fiber strain energy density is given by
\begin_inset Formula
\begin{equation}
\tilde{\Psi}=\frac{\xi}{\alpha\beta}\left(\exp\left[\alpha\left(\tilde{I}_{n}-1\right)^{\beta}\right]-1\right)\,,\label{eq475}
\end{equation}
\end_inset
where
\begin_inset Formula $\xi>0$
\end_inset
,
\begin_inset Formula $\alpha\geqslant0$
\end_inset
and
\begin_inset Formula $\beta\geqslant2$
\end_inset
.
\end_layout
\begin_layout Standard
Note:
In the limit when
\begin_inset Formula $\alpha\to0$
\end_inset
,
this expression produces a power law,
\begin_inset Formula
\begin{equation}
\lim\limits_{\alpha\to0}\tilde{\Psi}=\frac{\xi}{\beta}\left(\tilde{I}_{n}-1\right)^{\beta}\,.\label{eq476}
\end{equation}
\end_inset
Note:
When
\begin_inset Formula $\beta>2$
\end_inset
,
the fiber modulus is zero at the strain origin (
\begin_inset Formula $\tilde{I}_{n}=1)$
\end_inset
.
Therefore,
use
\begin_inset Formula $\beta>2$
\end_inset
when a smooth transition in the stress is desired from compression to tension.
\end_layout
\begin_layout Subsection
Fung Orthotropic
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fung-Orthotropic"
\end_inset
\end_layout
\begin_layout Standard
The hyperelastic strain energy function for a Fung Orthotropic material is given by
\begin_inset CommandInset citation
LatexCommand citep
key "Fung93,Fung79"
literal "true"
\end_inset
\begin_inset Formula
\begin{equation}
\tilde{\Psi}=\frac{1}{2}c\left(e^{\tilde{Q}}-1\right)+U\left(J\right)\,,\label{eq477}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\tilde{Q}=c^{-1}\sum\limits_{a=1}^{3}\left[2\mu_{a}\mathbf{M}_{a}:\mathbf{\tilde{E}}^{2}+\sum\limits_{b=1}^{3}\lambda_{ab}\left(\mathbf{M}_{a}:\mathbf{\tilde{E}}\right)\left(\mathbf{M}_{b}:\mathbf{\tilde{E}}\right)\right]\,.\label{eq478}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\mathbf{\tilde{E}}=\frac{1}{2}\left(\mathbf{\tilde{C}}-\mathbf{I}\right)$
\end_inset
and
\begin_inset Formula $\mathbf{M}_{a}=\mathbf{A}_{a}\otimes\mathbf{A}_{a}$
\end_inset
,
where
\begin_inset Formula $\mathbf{A}_{a}$
\end_inset
are orthonormal vectors that define the initial direction of material axes.
The orthotropic Lamé coefficients should be chosen such that the stiffness matrix,
\begin_inset Formula
\begin{equation}
\left[\begin{array}{cccccc}
\lambda_{11}+2\mu_{1} & \lambda_{12} & \lambda_{13} & 0 & 0 & 0\\
\lambda_{12} & \lambda_{22}+2\mu_{2} & \lambda_{23} & 0 & 0 & 0\\
\lambda_{13} & \lambda_{23} & \lambda_{33}+2\mu_{3} & 0 & 0 & 0\\
0 & 0 & 0 & \frac{1}{2}\left(\mu_{1}+\mu_{2}\right) & 0 & 0\\
0 & 0 & 0 & 0 & \frac{1}{2}\left(\mu_{2}+\mu_{3}\right) & 0\\
0 & 0 & 0 & 0 & 0 & \frac{1}{2}\left(\mu_{1}+\mu_{3}\right)
\end{array}\right]\label{eq479}
\end{equation}
\end_inset
is positive definite.
\end_layout
\begin_layout Subsection
Tension-Compression Nonlinear Orthotropic
\begin_inset CommandInset label
LatexCommand label
name "subsec:TC-Nonlinear-Orthotropic"
\end_inset
\end_layout
\begin_layout Standard
This material model is based on the following uncoupled hyperelastic strain energy function
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian07c"
literal "true"
\end_inset
:
\begin_inset Formula
\begin{equation}
\Psi\left(\mathbf{C},\lambda_{1},\lambda_{2},\lambda_{3}\right)=\tilde{\Psi}_{\text{iso}}\left(\mathbf{\tilde{C}}\right)+\sum\limits_{i=1}^{3}\tilde{\Psi}_{i}^{TC}\left(\tilde{\lambda}_{i}\right)+U\left(J\right)\,.\label{eq480}
\end{equation}
\end_inset
The isotropic strain energy
\begin_inset Formula $\tilde{\Psi}_{\text{iso}}$
\end_inset
and the dilatational energy
\begin_inset Formula $U$
\end_inset
are the same as for the Mooney-Rivlin material (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Mooney-Rivlin-Hyperelasticity"
nolink "false"
\end_inset
).
The tension-compression term is defined as follows:
\begin_inset Formula
\begin{equation}
\tilde{\Psi}_{i}^{TC}\left(\tilde{\lambda}_{i}\right)=\begin{cases}
\xi_{i}\left(\tilde{\lambda}_{i}-1\right)^{\beta_{i}} & \tilde{\lambda}_{i}>1\\
0 & \tilde{\lambda}_{i}\leqslant1
\end{cases}\,,\xi_{i}\geqslant0\quad\mbox{(no sum over }i\text{).}\label{eq481}
\end{equation}
\end_inset
The
\begin_inset Formula $\tilde{\lambda}_{i}$
\end_inset
parameters are the deviatoric fiber stretches of the local material fibers,
\begin_inset Formula
\begin{equation}
\tilde{\lambda}_{i}=\left(\mathbf{A}_{i}\cdot\mathbf{\tilde{C}}\cdot\mathbf{A}_{i}\right)^{1/2}\,.\label{eq482}
\end{equation}
\end_inset
The local material fibers are defined (in the reference frame) as an orthonormal set of vectors
\begin_inset Formula $\mathbf{A}_{i}$
\end_inset
.
The corresponding deviatoric part of the Cauchy stress is
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\sigma}}=J^{-1}\sum\limits_{i=1}^{3}\frac{1}{\tilde{\lambda}_{i}}\frac{\partial\tilde{\Psi}}{\partial\tilde{\lambda}_{i}}\mathbf{a}_{i}\otimes\mathbf{a}_{i}\,,\label{eq483}
\end{equation}
\end_inset
and the spatial elasticity tensor is
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\mathcal{C}}}=J^{-1}\sum\limits_{i=1}^{3}\frac{1}{\tilde{\lambda}_{i}}\frac{\partial}{\partial\tilde{\lambda}_{i}}\left(\frac{1}{\tilde{\lambda}_{i}}\frac{\partial\tilde{\Psi}}{\partial\tilde{\lambda}_{i}}\right)\mathbf{a}_{i}\otimes\mathbf{a}_{i}\otimes\mathbf{a}_{i}\otimes\mathbf{a}_{i}\,,\label{eq484}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{a}_{i}=\mathbf{\tilde{F}}\cdot\mathbf{A}_{i}$
\end_inset
.
\end_layout
\begin_layout Subsection
Holmes-Mow Uncoupled
\begin_inset CommandInset label
LatexCommand label
name "subsec:Holmes-Mow-Uncoupled"
\end_inset
\end_layout
\begin_layout Standard
The uncoupled hyperelastic strain-energy function for this material is given by
\begin_inset CommandInset citation
LatexCommand citep
key "Holmes90"
literal "true"
\end_inset
,
\begin_inset Formula
\begin{equation}
\Psi\left(\mathbf{C}\right)=\tilde{\Psi}\left(\tilde{\mathbf{C}}\right)+U\left(J\right)\,,\label{eq:HMU-SED}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\tilde{\Psi}\left(\tilde{\mathbf{C}}\right)=\frac{1}{2}\frac{\mu}{\beta}\left(e^{\tilde{Q}}-1\right)\,,\label{eq:HMU-DSED}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\tilde{Q}=\beta\left(\tilde{I}_{1}-3\right)\,.\label{eq:HMU-Q}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\mu$
\end_inset
is the shear modulus and
\begin_inset Formula $\beta$
\end_inset
is the exponential nonlinearity coefficient.
The corresponding spatial stress and elasticity tensors are
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\sigma}}=\frac{\mu}{J}e^{\tilde{Q}}\tilde{\mathbf{b}}\,,\label{eq:HMU-stress}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\mathcal{C}}}=2\beta\frac{\mu}{J}e^{\tilde{Q}}\tilde{\mathbf{b}}\otimes\tilde{\mathbf{b}}\label{eq:HMU-elasticity}
\end{equation}
\end_inset
respectively.
Note that
\begin_inset Formula $\tilde{\boldsymbol{\sigma}}$
\end_inset
does not reduce to zero when
\begin_inset Formula $\tilde{\mathbf{b}}=\mathbf{I}$
\end_inset
,
but
\begin_inset Formula $\dev\tilde{\boldsymbol{\sigma}}$
\end_inset
does.
These expressions can be substituted into
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:UC-Cauchy-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:UC-spatial-elasticity"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
to evaluate the final expressions for the Cauchy stress and spatial elasticity tensors,
respectively.
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Viscoelasticity
\begin_inset CommandInset label
LatexCommand label
name "sec:Viscoelasticity"
\end_inset
\end_layout
\begin_layout Standard
When some of the energy stored during mechanical loading of a material gets dissipated into heat,
the material's response is called inelastic.
Inelastic behaviors include viscoelasticity and plasticity,
although this presentation focuses exclusively on viscoelasticity.
In continuum mechanics,
we can identify three forms of viscoelasticity in materials.
Viscoelasticity may occur due to (1) friction between molecules of the same material,
(2) friction between solid and fluid matter in a porous deformable medium,
and (3) breaking and reforming of weak bonds between molecules of the same material.
The first form is classically described as the viscous response of a material,
whereby the friction between molecules of the same material is represented by the material's viscosity
\begin_inset CommandInset citation
LatexCommand citep
key "Coleman63"
literal "false"
\end_inset
.
The second form is classically described by poroelasticity
\begin_inset CommandInset citation
LatexCommand citep
key "Cryer63,Rice76"
literal "false"
\end_inset
or biphasic
\begin_inset CommandInset citation
LatexCommand citep
key "Mow80"
literal "false"
\end_inset
theory,
whereby the frictional drag between the porous solid and its interstitial fluid is represented by the hydraulic permeability (also known as Darcy's law of permeation),
see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Biphasic-Material"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
The last form was proposed by Green and Tobolsky
\begin_inset CommandInset citation
LatexCommand citep
key "Green46,Tobolsky60"
literal "false"
\end_inset
as the fundamental mechanism for viscoelasticity in polymers.
Recently,
we presented a constrained reactive mixture approach to formulate a reactive viscoelasticity theory that embodies the molecular mechanism of viscoelasticity proposed by those authors
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian15,Ateshian23"
literal "false"
\end_inset
,
see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Viscoelasticity"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
A conventional approach for modeling viscoelasticity uses the framework of internal state variables
\begin_inset CommandInset citation
LatexCommand citep
key "Coleman67"
literal "false"
\end_inset
,
whereby we may decompose the deformation gradient
\begin_inset Formula $\mathbf{F}$
\end_inset
into deformations occurring in a microstructural model of the material,
consisting of a spring and dashpot in series
\begin_inset CommandInset citation
LatexCommand citep
key "Lubliner85,Simo87,Holzapfel96"
literal "false"
\end_inset
,
see Section
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Internal-State-Variable"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Internal State Variable Theory
\begin_inset CommandInset label
LatexCommand label
name "subsec:Internal-State-Variable"
\end_inset
\end_layout
\begin_layout Standard
We may model a continuum version of the standard linear solid using quasilinear viscoelasticity,
as shown for example by Simo
\begin_inset CommandInset citation
LatexCommand citep
key "Simo87"
literal "false"
\end_inset
,
though we make minor modifications and extensions to his presentation here.
Consider that the microstructural model of this viscoelastic material consists of a spring and dashpot in series (a Maxwell model),
combined with a spring in parallel,
which is equivalent to the Maxwell representation of a standard linear solid in linear viscoelasticity (Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:spring-dashpot-model"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
The total deformation gradient,
associated with the parallel spring,
is
\begin_inset Formula $\mathbf{F}=\mathbf{F}_{s}\cdot\mathbf{F}_{d}$
\end_inset
,
where
\begin_inset Formula $\mathbf{F}_{s}$
\end_inset
is the internal state variable representing the deformation gradient associated with the series spring of the Maxwell model,
and
\begin_inset Formula $\mathbf{F}_{d}$
\end_inset
is that associated with the dashpot.
The second Piola-Kirchhoff stress in the parallel spring is given by
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigStandardLinearSolid.png
lyxscale 50
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Spring-dashpot model for Maxwell representation of the standard solid.
\begin_inset CommandInset label
LatexCommand label
name "fig:spring-dashpot-model"
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
\end_layout
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{S}^{e}\left(\mathbf{F}\right)=\frac{\partial\Psi_{r}^{e}}{\partial\mathbf{E}}\,,\label{eq:IVT-parallel-spring-stress}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{E}=\frac{1}{2}\left(\mathbf{F}^{T}\cdot\mathbf{F}-\mathbf{I}\right)$
\end_inset
is the Lagrange strain tensor derived from
\begin_inset Formula $\mathbf{F}$
\end_inset
.
In this quasilinear viscoelasticity theory,
the second Piola-Kirchhoff stress in the Maxwell spring is given by
\begin_inset Formula
\begin{equation}
\mathbf{M}\left(\mathbf{F}_{s}\right)=\gamma\mathbf{S}^{e}\left(\mathbf{F}_{s}\right)\,,\label{eq:IVT-series-spring-stress}
\end{equation}
\end_inset
where
\begin_inset Formula $\gamma\ge0$
\end_inset
is a user-defined non-dimensional parameter that produces standard hyperelasticity in the limit when
\begin_inset Formula $\gamma=0$
\end_inset
.
Note that
\begin_inset Formula $\mathbf{S}^{e}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:IVT-series-spring-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
uses the same constitutive model as in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:IVT-parallel-spring-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
but its argument is different (
\begin_inset Formula $\mathbf{F}_{s}$
\end_inset
instead of
\begin_inset Formula $\mathbf{F}$
\end_inset
).
By recognizing that
\begin_inset Formula $\mathbf{M}$
\end_inset
should also be the stress in the Maxwell dashpot,
we use eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:IVT-series-spring-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
to find that
\begin_inset Formula
\begin{equation}
\dot{\mathbf{S}}^{e}\left(\mathbf{F}_{s}\left(t\right)\right)+\frac{1}{\tau}\mathbf{S}^{e}\left(\mathbf{F}_{s}\left(t\right)\right)=\dot{\mathbf{S}}^{e}\left(\mathbf{F}\left(t\right)\right)\,,\quad\mathbf{S}^{e}\left(\mathbf{F}_{s}\left(0\right)\right)=\mathbf{0}\,,\label{eq:IVT-ODE}
\end{equation}
\end_inset
where the time constant
\begin_inset Formula $\tau$
\end_inset
is the ratio of the damping coefficient in the dashpot to the Maxwell spring stiffness,
and the dot operator represents the material time derivative in the material frame.
The solution to this
\emph on
linear
\emph default
ordinary differential equation (hence,
quasi
\emph on
-linear
\emph default
viscoelasticity theory) is
\begin_inset Formula
\begin{equation}
\mathbf{S}^{e}\left(\mathbf{F}_{s}\left(t\right)\right)=\int_{0}^{t}e^{-\left(t-s\right)/\nu}\frac{d\mathbf{S}^{e}\left(\mathbf{F}\left(s\right)\right)}{ds}\,ds\,.\label{eq:IVT-P-solution}
\end{equation}
\end_inset
Now,
the total stress
\begin_inset Formula $\mathbf{S}$
\end_inset
in this material,
which is the sum of stresses in the two springs,
\begin_inset Formula $\mathbf{S}=\mathbf{S}^{e}\left(\mathbf{F}\right)+\gamma\mathbf{S}^{e}\left(\mathbf{F}_{s}\right)$
\end_inset
,
reduces to the familiar form
\begin_inset Formula
\begin{equation}
\mathbf{S}=\int_{0}^{t}G\left(t-s\right)\frac{d\mathbf{S}^{e}\left(\mathbf{F}\left(s\right)\right)}{ds}\,ds\,,\label{eq:IVT-total-stress}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
G\left(t\right)=1+\gamma e^{-t/\tau}\label{eq:IVT-relaxation-fcn}
\end{equation}
\end_inset
is called the relaxation function.
A convenient and efficient numerical scheme for solving for
\begin_inset Formula $\mathbf{S}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:IVT-total-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
was given previously by Puso and Weiss
\begin_inset CommandInset citation
LatexCommand citep
key "Puso98"
literal "false"
\end_inset
,
where they used
\begin_inset Formula $\mathbf{H}$
\end_inset
to denote
\begin_inset Formula $\mathbf{S}^{e}\left(\mathbf{F}_{s}\right)$
\end_inset
(see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Puso-Weiss-Scheme"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
Of course,
the last step in this analysis is to evaluate the Cauchy stress from eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:IVT-total-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
using the standard push-forward formula
\begin_inset Formula $\boldsymbol{\sigma}=J^{-1}\mathbf{F}\cdot\mathbf{S}\cdot\mathbf{F}^{T}$
\end_inset
.
\end_layout
\begin_layout Standard
The strain energy density associated with this viscoelastic material corresponds to that stored in the two springs.
Its continuum form is
\begin_inset Formula
\begin{equation}
\Psi_{r}=\Psi_{r}^{e}\left(\mathbf{F}\right)+\gamma\Psi_{r}^{e}\left(\mathbf{F}_{s}\right)\,.\label{eq:IVT-SED}
\end{equation}
\end_inset
It is important to note that this presentation does not provide an explicit solution for
\begin_inset Formula $\mathbf{F}_{s}\left(t\right)$
\end_inset
.
In principle,
it is possible to extract a suitable measure of strain associated with
\begin_inset Formula $\mathbf{F}_{s}\left(t\right)$
\end_inset
by inverting eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:IVT-P-solution"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
since
\begin_inset Formula $\mathbf{S}^{e}\left(\mathbf{F}_{s}\left(t\right)\right)$
\end_inset
must be evaluated explicitly in this scheme as part of the solution for
\begin_inset Formula $\mathbf{S}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:IVT-total-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
This inversion requires the adoption of suitable constitutive assumptions about the multiplicative decomposition
\begin_inset Formula $\mathbf{F}=\mathbf{F}_{s}\cdot\mathbf{F}_{d}$
\end_inset
;
it may possibly be numerically expensive.
\end_layout
\begin_layout Standard
In the context of reactive viscoelasticity (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Viscoelasticity"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
),
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:IVT-SED"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
we can refer to
\begin_inset Formula $\Psi_{r}^{e}\left(\mathbf{F}\right)$
\end_inset
as the strong bond strain energy density,
since it persists under a non-zero strain,
whereas
\begin_inset Formula $\gamma\Psi_{r}^{e}\left(\mathbf{F}_{s}\right)$
\end_inset
represents the weak bond strain energy density,
since it decays to zero under a constant strain as
\begin_inset Formula $t\to\infty$
\end_inset
.
\end_layout
\begin_layout Subsubsection
Strain Energy Density in Standard Solid
\begin_inset CommandInset label
LatexCommand label
name "subsec:SED-Standard-Solid"
\end_inset
\end_layout
\begin_layout Standard
For example,
in the special case of a stress-relaxation response to an instantaneous step strain,
evaluated from
\begin_inset Formula $\mathbf{F}\left(0^{+}\right)$
\end_inset
,
we may let
\begin_inset Formula $\mathbf{F}_{s}\left(0^{+}\right)=\mathbf{F}\left(0^{+}\right)$
\end_inset
since the dashpot cannot deform instantaneously,
under the reasonable constitutive assumption that there is no rigid body rotation associated with the dashpot distinct from that of the Maxwell series spring,
thus
\begin_inset Formula $\mathbf{F}_{d}\left(0^{+}\right)=\mathbf{I}$
\end_inset
.
If we adopt this assumption for all times
\begin_inset Formula $t$
\end_inset
,
then we can also conclude that the right stretch tensor
\begin_inset Formula $\mathbf{U}_{s}$
\end_inset
of the Maxwell spring deformation gradient tends toward
\begin_inset Formula $\mathbf{I}$
\end_inset
in the limit as
\begin_inset Formula $t\to\infty$
\end_inset
,
as the dashpot elongates or contracts to match the right-stretch tensor of the parallel spring,
also implying that
\begin_inset Formula $\Psi_{r}^{e}\left(\mathbf{F}_{s}\right)\to0$
\end_inset
in this limit.
\end_layout
\begin_layout Standard
Building upon this example,
we can assume more generally that
\begin_inset Formula $\mathbf{U}=\mathbf{U}_{s}\cdot\mathbf{U}_{d}$
\end_inset
under the constitutive assumption that the rotation tensor
\begin_inset Formula $\mathbf{R}$
\end_inset
in the polar decomposition of
\begin_inset Formula $\mathbf{F}=\mathbf{R}\cdot\mathbf{U}$
\end_inset
is the same in both branches of the microstructural model.
However,
for self-consistency,
we must also assume that
\begin_inset Formula $\mathbf{U}_{s}$
\end_inset
and
\begin_inset Formula $\mathbf{U}_{d}$
\end_inset
share the same eigenvectors as
\begin_inset Formula $\mathbf{U}$
\end_inset
to preserve the symmetry of all three right-stretch tensors.
Thus,
a valid constitutive model for the multiplicative decomposition is to let
\begin_inset Formula $\mathbf{U}_{s}=\mathbf{U}^{\alpha}$
\end_inset
and
\begin_inset Formula $\mathbf{U}_{d}=\mathbf{U}^{1-\alpha}$
\end_inset
,
where the exponent
\begin_inset Formula $\alpha\left(t\right)$
\end_inset
is a scalar function of time that can be obtained by solving eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:IVT-total-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
in the form
\begin_inset Formula $\gamma\mathbf{S}^{e}\left(\mathbf{U}^{\alpha}\right)=\mathbf{S}\left(\mathbf{U}\right)-\mathbf{S}^{e}\left(\mathbf{U}\right)$
\end_inset
at the current time
\begin_inset Formula $t$
\end_inset
.
This constitutive model is insensitive to flipping the spring and dashopt sequence in the Maxwell element,
as should be expected.
Now,
for an instantaneous step strain,
we would have
\begin_inset Formula $\alpha\left(0^{+}\right)=1$
\end_inset
,
whereas the steady-state response to a step strain would produce
\begin_inset Formula $\lim_{t\to\infty}\alpha\left(t\right)=0$
\end_inset
.
Logically,
it would be reasonable to expect that
\begin_inset Formula $\alpha\left(t\right)$
\end_inset
must remain in the range
\begin_inset Formula $0\le\alpha\le1$
\end_inset
,
since we cannot physically justify that the Maxwell spring would stretch (expand or contract) by a greater amount than the parallel spring.
A more formal enforcement of thermodynamic constraints of this internal variable theory
\begin_inset CommandInset citation
LatexCommand citep
key "Coleman67"
literal "false"
\end_inset
,
not provided here,
should confirm this expectation.
\end_layout
\begin_layout Subsubsection
Puso and Weiss Numerical Scheme
\begin_inset CommandInset label
LatexCommand label
name "subsec:Puso-Weiss-Scheme"
\end_inset
\end_layout
\begin_layout Standard
Here we consider the slightly more general case where the relaxation function is given by a Prony series
\begin_inset Formula
\begin{equation}
G\left(t\right)=\gamma_{0}+\sum\limits_{i=1}^{N}\gamma_{i}\exp\left(-t/\tau_{i}\right)\,.\label{eq486}
\end{equation}
\end_inset
With this function chosen for the relaxation function,
we can write the total stress as
\begin_inset Formula
\begin{equation}
\mathbf{S}\left(t\right)=\int\limits_{0}^{t}\left(\gamma_{0}+\sum\limits_{i=1}^{N}\gamma_{i}\exp\left(\left(-t+s\right)/\tau_{i}\right)\frac{d\mathbf{S}^{e}}{ds}\right)\,ds\,.\label{eq487}
\end{equation}
\end_inset
Introducing the internal variables,
\begin_inset Formula
\begin{equation}
\mathbf{H}^{\left(i\right)}\left(t\right)=\int\limits_{0}^{t}\exp\left[-\left(t-s\right)/\tau_{i}\right]\frac{d\mathbf{S}^{e}}{ds}\,ds\,,\label{eq488}
\end{equation}
\end_inset
we can rewrite
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq487"
nolink "false"
\end_inset
as follows,
\begin_inset Formula
\begin{equation}
\mathbf{S}\left(t\right)=\gamma_{0}\mathbf{S}^{e}\left(t\right)+\sum\limits_{i=1}^{N}\gamma_{i}\mathbf{H}^{\left(i\right)}\left(t\right)\,.\label{eq489}
\end{equation}
\end_inset
In FEBio,
\begin_inset Formula $\gamma_{0}=1$
\end_inset
,
so
\begin_inset Formula $\mathbf{S}^{e}$
\end_inset
is the long-term elastic response of the material.
\end_layout
\begin_layout Standard
The question now remains how to evaluate the internal variables.
From equation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq488"
nolink "false"
\end_inset
it appears that we have to integrate over the entire time domain.
However,
we can find a recurrence relationship that will allow us to evaluate the internal variables at a time
\begin_inset Formula $t+\Delta t$
\end_inset
given the values at time
\begin_inset Formula $t$
\end_inset
.
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{H}^{\left(i\right)}\left(t+\Delta t\right) & =\int\limits_{0}^{t+\Delta t}\exp\left[-\left(t+\Delta t-s\right)/\tau_{i}\right]\frac{d\mathbf{S}^{e}}{ds}\,ds\\
& =\exp\left(-\Delta t/\tau_{i}\right)\int\limits_{0}^{t}\exp\left[-\left(t-s\right)/\tau_{i}\right]\frac{d\mathbf{S}^{e}}{ds}\,ds+\int\limits_{t}^{t+\Delta t}\exp\left[-\left(t+\Delta t-s\right)/\tau_{i}\right]\frac{d\mathbf{S}^{e}}{ds}\,ds\\
& =\exp\left(-\Delta t/\tau_{i}\right)\mathbf{H}^{\left(i\right)}\left(t\right)+\int\limits_{t}^{t+\Delta t}\exp\left[-\left(t+\Delta t-s\right)/\tau_{i}\right]\frac{d\mathbf{S}^{e}}{ds}\,ds\,.
\end{aligned}
\label{eq490}
\end{equation}
\end_inset
The last term can now be simplified using the midpoint rule to approximate the derivate.
In that case we find the recurrence relation:
\begin_inset Formula
\begin{equation}
\mathbf{H}^{\left(i\right)}\left(t+\Delta t\right)=\exp\left(-\Delta t/\tau_{i}\right)\mathbf{H}^{\left(i\right)}\left(t\right)+\frac{1-\exp\left(-\Delta t/\tau_{i}\right)}{\Delta t/\tau_{i}}\left(\mathbf{S}^{e}\left(t+\Delta t\right)-\mathbf{S}^{e}\left(t\right)\right)\,.\label{eq491}
\end{equation}
\end_inset
The following procedure can now be applied to calculate the new stress.
Given
\begin_inset Formula $\mathbf{S}_{n}^{e}$
\end_inset
and
\begin_inset Formula $\mathbf{H}_{n}^{\left(i\right)}$
\end_inset
corresponding to time
\begin_inset Formula $t$
\end_inset
,
find
\begin_inset Formula $\mathbf{S}_{n+1}^{e}$
\end_inset
and
\begin_inset Formula $\mathbf{H}_{n+1}^{\left(i\right)}$
\end_inset
corresponding to time
\begin_inset Formula $t+\Delta t$
\end_inset
:
\end_layout
\begin_layout Enumerate
calculate elastic stress:
\begin_inset Formula
\[
\mathbf{S}_{n+1}^{e}=2\frac{\partial\Psi_{r}^{e}}{\partial\mathbf{C}_{n+1}}\,,
\]
\end_inset
\end_layout
\begin_layout Enumerate
evaluate internal variables:
\begin_inset Formula
\[
\mathbf{H}_{n+1}^{i}=\exp\left(-\Delta t/\tau_{i}\right)\mathbf{H}_{n}^{i}+\frac{1-\exp\left(-\Delta t/\tau_{i}\right)}{\Delta t/\tau_{i}}\left(\mathbf{S}_{n+1}^{e}-\mathbf{S}_{n}^{e}\right)\,,
\]
\end_inset
\end_layout
\begin_layout Enumerate
find the total stress:
\begin_inset Formula
\[
\mathbf{S}_{n+1}=\gamma_{0}\mathbf{S}_{n+1}^{e}+\sum\limits_{i=1}^{N}\gamma_{i}\mathbf{H}_{n+1}^{i}\,.
\]
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Reactive Viscoelasticity
\begin_inset CommandInset label
LatexCommand label
name "sec:Reactive-Viscoelasticity"
\end_inset
\end_layout
\begin_layout Standard
Reactive viscoelasticity models a material as a mixture of strong bonds,
which are permanent,
and weak bonds,
which break and reform in response to loading
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian15,Ateshian22"
literal "true"
\end_inset
.
This framework is based on constrained reactive mixtures of solids (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Mixture-of-Solids"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
Strong bonds produce the equilibrium elastic response,
whereas weak bonds produce the transient viscous response.
Strong bonds are in a stress-free state when in their reference configuration
\begin_inset Formula $\mathbf{X}$
\end_inset
.
Their deformation gradient is defined as usual,
\begin_inset Formula $\mathbf{F}\left(\mathbf{X},t\right)=\partial\boldsymbol{\chi}\left(\mathbf{X},t\right)/\partial\mathbf{X}$
\end_inset
.
When weak bonds break in response to loading at some time
\begin_inset Formula $u$
\end_inset
,
they reform instantaneously in a stress-free configuration
\begin_inset Formula $\mathbf{X}^{u}$
\end_inset
that coincides with the current configuration at time
\begin_inset Formula $u$
\end_inset
,
thus,
\begin_inset Formula $\mathbf{X}^{u}=\boldsymbol{\chi}\left(\mathbf{X},u\right)$
\end_inset
.
Therefore,
a reaction transforms intact loaded bonds into reformed unloaded bonds.
Weak bonds that reform at time
\begin_inset Formula $u$
\end_inset
may be called
\begin_inset Formula $u-$
\end_inset
generation bonds.
The deformation gradient of
\begin_inset Formula $u-$
\end_inset
generation weak bonds relative to their reference configuration
\begin_inset Formula $\mathbf{X}^{u}$
\end_inset
is denoted by
\begin_inset Formula $\mathbf{F}^{u}\left(\mathbf{X},t\right)$
\end_inset
,
which may be evaluated from the chain rule,
\begin_inset Formula
\begin{equation}
\mathbf{F}\left(\mathbf{X},t\right)=\mathbf{F}^{u}\left(\mathbf{X},t\right)\cdot\bar{\mathbf{R}}\left(\mathbf{X},u\right)\cdot\mathbf{U}\left(\mathbf{X},u\right)\,,\label{eq492}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{U}$
\end_inset
is the right-stretch tensor of
\begin_inset Formula $\mathbf{F}=\mathbf{R}\cdot\mathbf{U}$
\end_inset
and
\begin_inset Formula $\bar{\mathbf{R}}=\left(\mathbf{R}^{u}\right)^{T}\cdot\mathbf{R}$
\end_inset
is the relative rotation between generation
\begin_inset Formula $u$
\end_inset
and the master generation.
The strain energy density
\begin_inset Formula $\Psi_{r}$
\end_inset
in a reactive viscoelastic material is given by
\begin_inset Formula
\begin{equation}
\Psi_{r}\left(\mathbf{F}\right)=\Psi_{r}^{e}\left(\mathbf{F}\right)+\sum\limits_{u}w^{u}\Psi_{0}^{b}\left(\mathbf{F}^{u}\right)\,,\label{eq493}
\end{equation}
\end_inset
where
\begin_inset Formula $\Psi_{r}^{e}$
\end_inset
is the strain energy density of strong bonds and
\begin_inset Formula $\Psi_{0}^{b}$
\end_inset
is the strain energy density of weak bonds,
when they all belong to the same generation.
In this expression,
\begin_inset Formula $w^{u}\left(\mathbf{X},t\right)$
\end_inset
is the mass fraction of
\begin_inset Formula $u-$
\end_inset
generation weak bonds,
which evolves over time as described below.
The summation is taken over all generations
\begin_inset Formula $u$
\end_inset
that were created prior to the current time
\begin_inset Formula $t$
\end_inset
.
Based on eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:febio-mixture-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
the mixture Cauchy stress
\begin_inset Formula $\sigma$
\end_inset
in a reactive viscoelastic material is similarly given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}\left(\mathbf{F}^{s}\right)=\boldsymbol{\sigma}^{e}\left(\mathbf{F}^{s}\right)+\sum\limits_{u}w^{u}J^{-1}\left(u\right)\boldsymbol{\sigma}_{0}^{b}\left(\mathbf{F}^{u}\right)\,,\label{eq494}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
is the stress in the strong bonds and
\begin_inset Formula $\boldsymbol{\sigma}_{0}^{b}$
\end_inset
is the stress in the weak bonds.
These stresses are related to the respective strain energy densities of strong and weak bonds according to
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}^{e}\left(\mathbf{F}^{s}\right)=\frac{1}{J^{s}}\frac{\partial\Psi_{r}^{e}\left(\mathbf{F}^{s}\right)}{\partial\mathbf{F}^{s}}\cdot\left(\mathbf{F}^{s}\right)^{T},\quad\boldsymbol{\sigma}_{0}^{b}\left(\mathbf{F}^{u}\right)=\frac{1}{J^{u}}\frac{\partial\Psi_{0}^{b}\left(\mathbf{F}^{u}\right)}{\partial\mathbf{F}^{u}}\cdot\left(\mathbf{F}^{u}\right)^{T}\,.\label{eq495}
\end{equation}
\end_inset
The mass fractions
\begin_inset Formula $w^{u}\left(\mathbf{X},t\right)$
\end_inset
are obtained by solving the equation of mass balance for reactive constrained mixtures,
\begin_inset Formula
\begin{equation}
\dot{w}^{u}=\hat{w}^{u}\left(\mathbf{F},w^{\gamma}\right)\,,\label{eq496}
\end{equation}
\end_inset
where the mass fraction supply
\begin_inset Formula $\hat{w}^{u}$
\end_inset
must be specified as a constitutive function of the deformation gradient
\begin_inset Formula $\mathbf{F}$
\end_inset
and the mass fractions
\begin_inset Formula $w^{\gamma}$
\end_inset
from all generations.
Since mass must be conserved over all generations,
it follows that
\begin_inset Formula
\begin{equation}
\sum\limits_{u}\hat{w}^{u}=0,\quad\sum\limits_{u}w^{u}=1\,.\label{eq497}
\end{equation}
\end_inset
Any number of valid solutions may exist for
\begin_inset Formula $w^{u}$
\end_inset
,
based on constitutive assumptions for
\begin_inset Formula $\hat{w}^{u}$
\end_inset
.
For example,
for
\begin_inset Formula $u-$
\end_inset
generation bonds reforming in an unloaded state during the time interval
\begin_inset Formula $u\leqslant t1$
\end_inset
);
thus,
the constitutive model
\begin_inset Formula $\Psi_{n}\left(I_{n}\right)$
\end_inset
for the tensile response of the fiber must reduce to zero when
\begin_inset Formula $I_{n}=1$
\end_inset
.
\end_layout
\begin_layout Standard
In the reactive viscoelasticity framework,
each generation
\begin_inset Formula $u$
\end_inset
comes into existence at time
\begin_inset Formula $t^{u}$
\end_inset
,
thus the constitutive model for the fiber must account for the fact that the fiber orientation is no longer along
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
at time
\begin_inset Formula $t^{u}$
\end_inset
.
Indeed,
the total weak bond free energy in a reactive viscoelastic material now reduces to
\begin_inset Formula
\begin{equation}
\begin{aligned}\sum_{u}w^{u}\Psi_{0}^{b}\left(\mathbf{F}^{u}\left(t\right)\right) & =\sum_{u}w^{u}H\left(I_{n}^{u}-1\right)\Psi_{n}\left(I_{n}^{u}\right)\\
I_{n}^{u} & =\mathbf{n}_{r}^{u}\cdot\mathbf{C}^{u}\cdot\mathbf{n}_{r}^{u}
\end{aligned}
\label{eq:A-fiber-SED}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{n}_{r}^{u}$
\end_inset
is the fiber orientation at time
\begin_inset Formula $t^{u}$
\end_inset
and
\begin_inset Formula $I_{n}^{u}$
\end_inset
is the square of the stretch ratio of the fiber relative to its reference configuration at time
\begin_inset Formula $t^{u}$
\end_inset
.
Recall that the elemental line along
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
gets transformed in the material frame at any time
\begin_inset Formula $t$
\end_inset
by
\begin_inset Formula $\mathbf{U}$
\end_inset
to
\begin_inset Formula $\lambda_{n}\mathbf{n}=\mathbf{U}\cdot\mathbf{n}_{r}$
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\lambda_{n} & =\sqrt{\mathbf{n}_{r}\cdot\mathbf{C}\cdot\mathbf{n}_{r}}\,, & \mathbf{n} & =\frac{1}{\lambda_{n}}\mathbf{U}\cdot\mathbf{n}_{r}\end{aligned}
\label{eq:A-fiber-current}
\end{equation}
\end_inset
At time
\begin_inset Formula $t^{u}$
\end_inset
when generation
\begin_inset Formula $u$
\end_inset
forms in a stress-free state,
it follows that the fiber material is now based on the orientation
\begin_inset Formula $\mathbf{n}_{r}^{u}\equiv\mathbf{n}\left(t^{u}\right)$
\end_inset
,
evaluated using
\begin_inset Formula $\mathbf{U}\left(\mathbf{X},t^{u}\right)$
\end_inset
as shown in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:A-fiber-current"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
In general,
\begin_inset Formula $\mathbf{n}_{r}^{u}$
\end_inset
and
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
need not be collinear,
therefore we can find the rotation
\begin_inset Formula $\bar{\mathbf{R}}$
\end_inset
that transforms
\begin_inset Formula $\mathbf{n}_{r}^{u}$
\end_inset
to
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\bar{\mathbf{R}}=\left(1-\cos\gamma\right)\mathbf{m}\otimes\mathbf{m}+\cos\gamma\mathbf{I}-\mathbb{E}\cdot\left(\sin\gamma\,\mathbf{m}\right)\label{eq:A-R-fiber}
\end{equation}
\end_inset
with
\begin_inset Formula $\cos\gamma=\mathbf{n}_{r}^{u}\cdot\mathbf{n}_{r}$
\end_inset
and
\begin_inset Formula $\sin\gamma\,\mathbf{m}=\mathbf{n}_{r}^{u}\times\mathbf{n}_{r}$
\end_inset
.
In this expression,
\begin_inset Formula $\mathbf{m}$
\end_inset
is the unit vector along the rotation axis,
\begin_inset Formula $\gamma$
\end_inset
is the rotation angle about the axis,
and
\begin_inset Formula $\mathbb{E}$
\end_inset
represents the (pseudo-)third-order permutation tensor whose components are equal to the permutation symbol
\begin_inset Formula $\varepsilon_{ijk}$
\end_inset
.
Thus,
\begin_inset Formula $-\mathbb{E}\cdot\boldsymbol{\omega}$
\end_inset
is the antisymmetric second-order tensor
\begin_inset Formula $\boldsymbol{\Omega}$
\end_inset
whose dual vector is
\begin_inset Formula $\boldsymbol{\omega}$
\end_inset
,
from which it follows that
\begin_inset Formula $\boldsymbol{\Omega}\cdot\mathbf{a}=\boldsymbol{\omega}\times\mathbf{a}$
\end_inset
for any vector
\begin_inset Formula $\mathbf{a}$
\end_inset
.
Here again,
since
\begin_inset Formula $\bar{\mathbf{R}}$
\end_inset
represents a relative rotation between the material vectors
\begin_inset Formula $\mathbf{n}_{r}^{u}$
\end_inset
and
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
,
it is invariant to any transformation
\begin_inset Formula $\mathbf{Q}$
\end_inset
.
\end_layout
\begin_layout Standard
In practice it is not necessary to evaluate
\begin_inset Formula $\bar{\mathbf{R}}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:A-R-fiber"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for each generation
\begin_inset Formula $u$
\end_inset
of each fiber in a material model;
instead one can reset the fiber direction from
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
to
\begin_inset Formula $\mathbf{n}_{r}^{u}=\mathbf{n}\left(u\right)$
\end_inset
,
where
\begin_inset Formula $\mathbf{n}$
\end_inset
is evaluated as per eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:A-fiber-current"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
requiring only the storage of
\begin_inset Formula $\mathbf{U}\left(\mathbf{X},u\right)$
\end_inset
for each generation
\begin_inset Formula $u$
\end_inset
.
This scheme may also be used with continuous fiber distributions
\begin_inset CommandInset citation
LatexCommand citep
key "Hou16"
literal "false"
\end_inset
.
As explained in
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian22"
literal "false"
\end_inset
,
this constitutive model for
\begin_inset Formula $\bar{\mathbf{R}}$
\end_inset
ensures that cyclical loading of a reactive viscoelastic fibrous material never produces compressive fiber stresses.
\end_layout
\begin_layout Subsubsection
Reduced Relaxation Functions
\begin_inset CommandInset label
LatexCommand label
name "subsec:Reduced-Relaxation-Functions"
\end_inset
\end_layout
\begin_layout Standard
Reduced relaxation functions are monotonically decreasing functions of time
\begin_inset Formula $g\left(t\right)$
\end_inset
that satisfy
\begin_inset Formula $g\left(0\right)=1$
\end_inset
and
\begin_inset Formula $\lim_{t\to\infty}g\left(t\right)=0$
\end_inset
.
Many different forms of reduced relaxation functions are available in FEBio,
given in the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio User's Manual}}
\end_layout
\end_inset
.
The simplest and most commonly used relaxation function is the exponential function
\begin_inset Formula $g\left(t\right)=e^{-t/\tau}$
\end_inset
,
where
\begin_inset Formula $\tau$
\end_inset
is the relaxation constant.
In viscoelasticity theory it is common to use a combination of relaxation functions with distinct relaxation constants
\begin_inset Formula $\tau_{i}$
\end_inset
,
described as a Prony series of the form
\begin_inset Formula
\begin{equation}
g\left(t\right)=\frac{\sum_{i}\gamma_{i}e^{-t/\tau_{i}}}{\sum_{i}\gamma_{i}}\,.\label{eq:rrf-Prony}
\end{equation}
\end_inset
The coefficients
\begin_inset Formula $\gamma_{i}$
\end_inset
are normalized by
\begin_inset Formula $\sum_{i}\gamma_{i}$
\end_inset
to enforce
\begin_inset Formula $g\left(0\right)=1$
\end_inset
.
Alternatively,
we could have written
\begin_inset Formula
\begin{equation}
g\left(t\right)=\sum_{i}\hat{\gamma}_{i}e^{-t/\tau_{i}}\,,\quad\sum_{i}\hat{\gamma}_{i}=1\,.\label{eq:rrf-Prony-alt}
\end{equation}
\end_inset
This type of relaxation function
\begin_inset Formula $g\left(t\right)$
\end_inset
is said to have a discrete spectrum of coefficients
\begin_inset Formula $\hat{\gamma}_{i}$
\end_inset
corresponding to each
\begin_inset Formula $\tau_{i}$
\end_inset
.
\end_layout
\begin_layout Standard
It is also possible to define a continuous relaxation spectrum
\begin_inset Formula $\hat{\gamma}\left(\tau\right)$
\end_inset
such that the reduced relaxation function is given by
\begin_inset Formula
\begin{equation}
g\left(t\right)=\int_{0}^{\infty}\hat{\gamma}\left(\tau\right)e^{-t/\tau}\,d\tau\,.\label{eq:rrf-g-continuous-spectrum}
\end{equation}
\end_inset
To satisfy
\begin_inset Formula $g\left(0\right)=1$
\end_inset
the continous relaxation spectrum
\begin_inset Formula $\hat{\gamma}\left(\tau\right)$
\end_inset
must satisfy
\begin_inset Formula
\begin{equation}
\int_{0}^{\infty}\hat{\gamma}\left(\tau\right)\,d\tau=1\,.\label{eq:rrf-continuous-spectrum-constraint}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
For example,
Fung
\begin_inset CommandInset citation
LatexCommand citep
key "Fung72"
literal "false"
\end_inset
proposed a relaxation spectrum of the form
\begin_inset Formula
\begin{equation}
\hat{\gamma}\left(\tau\right)=\begin{cases}
\frac{1}{\ln\frac{\tau_{2}}{\tau_{1}}}\frac{1}{\tau} & \tau_{1}\le\tau\le\tau_{2}\\
0 & \text{otherwise}
\end{cases}\,.\label{eq:rrf-Fung-spectrum-72}
\end{equation}
\end_inset
When substituted into eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rrf-g-continuous-spectrum"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
it produces
\begin_inset Formula
\begin{equation}
g\left(t\right)=\frac{\Gamma\left(0,\frac{t}{\tau_{2}}\right)-\Gamma\left(0,\frac{t}{\tau_{1}}\right)}{\ln\frac{\tau_{2}}{\tau_{1}}}=\frac{-\Ei\left(-\frac{t}{\tau_{2}}\right)+\Ei\left(-\frac{t}{\tau_{1}}\right)}{\ln\frac{\tau_{2}}{\tau_{1}}}\,,\label{eq:rrf-Fung-72}
\end{equation}
\end_inset
where
\begin_inset Formula $\Gamma\left(a,z\right)$
\end_inset
is the incomplete gamma function and
\begin_inset Formula $\Ei\left(z\right)$
\end_inset
is the exponential integral function,
which satisfy
\begin_inset Formula $\Gamma\left(0,z\right)=-\Ei\left(-z\right)$
\end_inset
.
An alternative model proposed later by Fung
\begin_inset CommandInset citation
LatexCommand citep
key "Fung81"
literal "false"
\end_inset
is
\begin_inset Formula
\begin{equation}
\hat{\gamma}\left(\tau\right)=\begin{cases}
\frac{1}{\tau_{2}-\tau_{1}} & \tau_{1}\le\tau\le\tau_{2}\\
0 & \text{otherwise}
\end{cases}\,,\label{eq:rrf-Fung-spectrum-81}
\end{equation}
\end_inset
which produces
\begin_inset Formula
\begin{equation}
g\left(t\right)=\frac{\tau_{2}e^{-t/\tau_{2}}-\tau_{1}e^{-t/\tau_{1}}+t\left[\Ei\left(-\frac{t}{\tau_{2}}\right)-\Ei\left(-\frac{t}{\tau_{1}}\right)\right]}{\tau_{2}-\tau_{1}}\,.\label{eq:rrf-Fung-81}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
A generalization of Fung's earlier continuous relaxation spectrum may be derived from the work of Malkin
\begin_inset CommandInset citation
LatexCommand citep
key "Malkin06"
literal "false"
\end_inset
who proposed to use a function proportional to
\begin_inset Formula $\tau^{-\beta}$
\end_inset
.
If we constrain this spectrum to the range
\begin_inset Formula $\tau_{1}\le\tau\le\tau_{2}$
\end_inset
it takes the form (Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:Malkin-relaxation-spectrum"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
)
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigRelaxationSpectrumMalkin.png
lyxscale 50
width 4in
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Continuous relaxation spectrum
\begin_inset Formula $\hat{\gamma}\left(\tau\right)$
\end_inset
of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rrf-Malkin-spectrum"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
based on the work of Malkin
\begin_inset CommandInset citation
LatexCommand citep
key "Malkin06"
literal "false"
\end_inset
,
for two representative values of
\begin_inset Formula $\beta$
\end_inset
.
\begin_inset CommandInset label
LatexCommand label
name "fig:Malkin-relaxation-spectrum"
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
\end_layout
\end_inset
\begin_inset Formula
\begin{equation}
\hat{\gamma}\left(\tau\right)=\begin{cases}
\frac{\beta-1}{\tau_{1}^{1-\beta}-\tau_{2}^{1-\beta}}\frac{1}{\tau^{\beta}} & \tau_{1}\le\tau\le\tau_{2}\\
0 & \text{otherwise}
\end{cases}\,.\label{eq:rrf-Malkin-spectrum}
\end{equation}
\end_inset
When substituted into
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rrf-g-continuous-spectrum"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
this continuous relaxation spectrum produces the reduced relaxation function (Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:Malkin-reduced-relaxation"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
)
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigRelaxationMalkin.png
lyxscale 50
width 4in
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Malkin's reduced relaxation function
\begin_inset Formula $g\left(t\right)$
\end_inset
,
eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rrf-Malkin"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
for
\begin_inset Formula $\tau_{1}=10^{-2}$
\end_inset
and
\begin_inset Formula $\tau_{2}=10^{3}$
\end_inset
,
for two representative values of
\begin_inset Formula $\beta$
\end_inset
.
\begin_inset CommandInset label
LatexCommand label
name "fig:Malkin-reduced-relaxation"
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
\end_layout
\end_inset
\begin_inset Formula
\begin{equation}
g\left(t\right)=\frac{\left(\beta-1\right)t^{1-\beta}}{\tau_{1}^{1-\beta}-\tau_{2}^{1-\beta}}\left[\Gamma\left(\beta-1,\frac{t}{\tau_{2}}\right)-\Gamma\left(\beta-1,\frac{t}{\tau_{1}}\right)\right]\,.\label{eq:rrf-Malkin}
\end{equation}
\end_inset
In the limit as
\begin_inset Formula $\beta\to1$
\end_inset
,
the expression of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rrf-Malkin"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
reduces to eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rrf-Fung-72"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
For proper evaluation of the
\begin_inset Formula $\Gamma$
\end_inset
function we must have
\begin_inset Formula $\beta\ge1$
\end_inset
.
\end_layout
\begin_layout Standard
Another example for a continuous relaxation spectrum is the exponential spectrum (Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:exponential-relaxation-spectrum"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
)
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigRelaxationSpectrumExponential.png
lyxscale 50
width 4in
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Continuous exponential relaxation spectrum
\begin_inset Formula $\hat{\gamma}\left(\tau\right)$
\end_inset
of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rrf-exponential-spectrum"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
for three representative values of
\begin_inset Formula $\tau_{0}$
\end_inset
.
\begin_inset CommandInset label
LatexCommand label
name "fig:exponential-relaxation-spectrum"
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset
\begin_inset Formula
\begin{equation}
\hat{\gamma}\left(\tau\right)=\frac{1}{\tau_{0}}e^{-\tau/\tau_{0}}\,,\quad0\le\tau<\infty\,,\label{eq:rrf-exponential-spectrum}
\end{equation}
\end_inset
which produces
\begin_inset Formula
\begin{equation}
g\left(t\right)=2\sqrt{\frac{t}{\tau_{0}}}K_{1}\left(2\sqrt{\frac{t}{\tau_{0}}}\right)\,,\label{eq:rrf-exponential}
\end{equation}
\end_inset
where
\begin_inset Formula $K_{1}\left(z\right)$
\end_inset
is the modified Bessel function of the second kind,
of order 1 (Figure
\begin_inset CommandInset ref
LatexCommand eqref
reference "fig:relaxation-continuous-exponential"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigContinuousExponentialRelaxation.png
lyxscale 50
width 5in
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Reduced relaxation function
\begin_inset Formula $g\left(t\right)$
\end_inset
of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rrf-exponential"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for continuous exponential relaxation spectrum,
for three representative values of
\begin_inset Formula $\tau_{0}$
\end_inset
.
\begin_inset CommandInset label
LatexCommand label
name "fig:relaxation-continuous-exponential"
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Viscous Friction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Viscous-Friction"
\end_inset
\end_layout
\begin_layout Standard
The Cauchy stress in a viscous material
\begin_inset CommandInset citation
LatexCommand citep
key "Coleman63"
literal "false"
\end_inset
is given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\boldsymbol{\sigma}^{e}+\boldsymbol{\tau}\,,\label{eq:viscous-friction-stress}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
is the elastic part of the stress as given in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:hyperelastic-stress-C"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
and
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
is the viscous stress,
which depends on the rate of deformation tensor
\begin_inset Formula $\mathbf{D}$
\end_inset
(the symmetric part of the velocity gradient).
For example,
in an isotropic Newtonian viscous response,
\begin_inset Formula $\boldsymbol{\tau}=\lambda\left(\text{tr}\mathbf{D}\right)\mathbf{I}+2\mu\mathbf{D}$
\end_inset
,
where
\begin_inset Formula $\lambda$
\end_inset
and
\begin_inset Formula $\mu$
\end_inset
are viscosity coefficients.
Since
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
reduces to zero under static loading (when
\begin_inset Formula $\mathbf{D}=\mathbf{0}$
\end_inset
),
it follows that
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
is the equilibrium response of this type of viscoelastic material.
For a viscous fluid,
the elastic stress tensor simplifies to
\begin_inset Formula $\boldsymbol{\sigma}^{e}=-p\mathbf{I}$
\end_inset
,
where
\begin_inset Formula $p$
\end_inset
is the fluid pressure.
In a compressible fluid,
\begin_inset Formula $p$
\end_inset
is a function of the volumetric strain (e.g.,
a function of
\begin_inset Formula $J$
\end_inset
) and the absolute temperature.
\end_layout
\begin_layout Standard
By the nature of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:viscous-friction-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
we may interpret this type of viscous material microscopically as a spring and dashpot in parallel,
often called a Voigt model in linear viscoelasticity
\begin_inset CommandInset citation
LatexCommand citep
key "Bland16,Coleman61"
literal "false"
\end_inset
,
though the general continuum mechanics expression of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:viscous-friction-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
may encompass nonlinear behaviors for
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
and for
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
.
The energy density dissipated in this type of material is
\begin_inset Formula $\boldsymbol{\tau}:\mathbf{D}$
\end_inset
.
\end_layout
\begin_layout Standard
Though we include this type of viscoelastic model here for completeness,
in practice,
investigators in biomechanics have rarely adopted this model to describe biological tissues,
because it predicts that the stress
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
becomes infinite under a step increase in strain.
\end_layout
\begin_layout Section
Reactive Damage Mechanics
\begin_inset CommandInset label
LatexCommand label
name "sec:Reactive-Damage-Mechanics"
\end_inset
\end_layout
\begin_layout Subsection
Bond-Breaking Reaction
\end_layout
\begin_layout Standard
The reactive damage mechanics framework was first described in
\begin_inset CommandInset citation
LatexCommand citep
key "Nims16"
literal "false"
\end_inset
.
It is based on constrained reactive mixtures of solids (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Mixture-of-Solids"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
) and used to model damage in an elastic solid as a reaction that transforms intact (elastic) bonds into broken bonds,
\begin_inset Formula
\begin{equation}
\mathcal{E}^{i}\to\mathcal{E}^{b}\,.\label{eq:dmg-reaction}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\mathcal{E}^{\alpha}$
\end_inset
is the material associated with bonds
\begin_inset Formula $\alpha$
\end_inset
(
\begin_inset Formula $\alpha=i$
\end_inset
for intact bonds and
\begin_inset Formula $\alpha=b$
\end_inset
for broken bonds).
The material is modeled as a constrained mixture of these two constituents
\begin_inset Formula $\alpha$
\end_inset
.
Whereas intact bonds may store free energy,
broken bond sustain none.
This framework assumes that isothermal conditions prevail.
Thus,
any heat generated by the dissipative damage reaction must be radiated from the continuum to preserve a constant temperature.
In an isothermal framework,
the free energy density is also equal to the strain energy density.
\end_layout
\begin_layout Standard
The referential mass density of the solid mixture is
\begin_inset Formula $\rho_{r}$
\end_inset
(mass of solid per volume in its referential,
stress-free configuration),
which remains constant throughout an analysis.
The material associated with intact bonds has an apparent mass density
\begin_inset Formula $\rho_{r}^{i}$
\end_inset
while that associated with broken bonds is
\begin_inset Formula $\rho_{r}^{b},$
\end_inset
such that the mixture mass balance is satisfied by
\begin_inset Formula
\begin{equation}
\rho_{r}=\rho_{r}^{i}+\rho_{r}^{b}\,.\label{eq:dmg-mass-balance}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Strain Energy Density and Stress
\end_layout
\begin_layout Standard
Let the specific free energy stored in intact bonds be represented by
\begin_inset Formula $\psi\left(\mathbf{F}\right)$
\end_inset
;
that of broken bonds is zero.
Therefore,
the free energy density of the mixture is
\begin_inset Formula
\begin{equation}
\Psi_{r}\left(\mathbf{F}\right)=\rho_{r}^{i}\psi\left(\mathbf{F}\right)\,.\label{eq:dmg-FED}
\end{equation}
\end_inset
We may define the mass fraction
\begin_inset Formula $w^{\alpha}$
\end_inset
of bond species
\begin_inset Formula $\alpha$
\end_inset
as
\begin_inset Formula
\begin{equation}
w^{\alpha}=\frac{\rho_{r}^{\alpha}}{\rho_{r}}\,.\label{eq:dmg-mass-fraction}
\end{equation}
\end_inset
Now,
the mixture mass balance in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:dmg-mass-balance"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
may be rewritten as
\begin_inset Formula $\sum_{\alpha}w^{\alpha}=1$
\end_inset
,
or more specifically,
\begin_inset Formula
\begin{equation}
w^{i}+w^{b}=1\,.\label{eq:dmg-massfraction-balance}
\end{equation}
\end_inset
We may also rewrite the mixture free energy density in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:dmg-FED"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
as
\begin_inset Formula
\begin{equation}
\Psi_{r}\left(\mathbf{F}\right)=w^{i}\rho_{r}\psi\left(\mathbf{F}\right)=\left(1-w^{b}\right)\rho_{r}\psi\left(\mathbf{F}\right)\,,\label{eq:dmg-FED-redux}
\end{equation}
\end_inset
where we have made use of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:dmg-massfraction-balance"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
The corresponding Cauchy stress may be evaluated using the standard hyperelasticity formula,
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=J^{-1}\frac{\partial\Psi_{r}}{\partial\mathbf{F}}\cdot\mathbf{F}^{T}=\left(1-w^{b}\right)\frac{\rho_{r}}{J}\frac{\partial\psi}{\partial\mathbf{F}}\cdot\mathbf{F}^{T}.\label{eq:dmg-stress}
\end{equation}
\end_inset
These relation show that the free energy density and stress of a damaged material are scaled by the mass fraction
\begin_inset Formula $w^{i}=1-w^{b}$
\end_inset
of remaining intact bonds.
Comparing these formulas to those of classical damage mechanics
\begin_inset CommandInset citation
LatexCommand citep
key "Kachanov58,Rabotnov80,Chaboche81,Lemaitre84,Lemaitre85,Simo87a"
literal "false"
\end_inset
,
it becomes immediately apparent that the classical damage variable
\begin_inset Formula $D$
\end_inset
appearing in those theories is equivalent to the mass fraction
\begin_inset Formula $w^{b}$
\end_inset
of broken bonds,
\begin_inset Formula
\begin{equation}
D\equiv w^{b}.\label{eq:dmg-variable}
\end{equation}
\end_inset
To further clarify this equivalence,
we may let
\begin_inset Formula $\Psi_{0}\equiv\rho_{r}\psi$
\end_inset
represent the free energy density of an intact elastic solid,
such that eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:dmg-FED-redux"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
may be rewritten as
\begin_inset Formula $\Psi_{r}=\left(1-D\right)\Psi_{0}$
\end_inset
.
Similarly,
eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:dmg-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
may be rewritten as
\begin_inset Formula $\boldsymbol{\sigma}=\left(1-D\right)\boldsymbol{\sigma}_{0}$
\end_inset
,
where
\begin_inset Formula $\boldsymbol{\sigma}_{0}$
\end_inset
is the stress in the intact elastic solid,
derived from the hyperelasticity relation
\begin_inset Formula $\boldsymbol{\sigma}_{0}=J^{-1}\left(\partial\Psi_{0}/\partial\mathbf{F}\right)\cdot\mathbf{F}^{T}$
\end_inset
.
\end_layout
\begin_layout Standard
For nearly-incompressible hyperelastic materials (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Nearly-Incompressible-Hyperelast"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
),
the strain energy density of the intact material has the form of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:UC-SED"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
thus
\begin_inset Formula $\Psi_{0}\left(\mathbf{C}\right)=\tilde{\Psi}_{0}\left(\tilde{\mathbf{C}}\right)+U\left(J\right)$
\end_inset
.
In this case,
we assume that the damage only affects the distortional part of the strain energy density
\begin_inset Formula $\tilde{\Psi}_{0}\left(\tilde{\mathbf{C}}\right)$
\end_inset
,
consistent with the general framework advocated in
\begin_inset CommandInset citation
LatexCommand citep
key "Holzapfel00"
literal "false"
\end_inset
.
Thus,
for
\emph on
uncoupled damage
\emph default
,
we assume that
\begin_inset Formula $\Psi_{r}\left(\mathbf{C}\right)=\left(1-D\right)\tilde{\Psi}_{0}\left(\tilde{\mathbf{C}}\right)+U\left(J\right)$
\end_inset
.
The resulting damage stress similarly takes the form
\begin_inset Formula $\boldsymbol{\sigma}=\left(1-D\right)\dev\tilde{\boldsymbol{\sigma}}_{0}+p\mathbf{I}$
\end_inset
,
consistent with eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:UC-Cauchy-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
where
\begin_inset Formula $\tilde{\boldsymbol{\sigma}}_{0}$
\end_inset
is evaluated from
\begin_inset Formula $\tilde{\Psi}_{0}\left(\tilde{\mathbf{C}}\right)$
\end_inset
as given in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:UC-Cauchy-stress-tilde"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
and
\begin_inset Formula $p$
\end_inset
is evaluated from
\begin_inset Formula $U\left(J\right)$
\end_inset
as given in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:UC-p"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
When investigating the damage mechanics of tension-bearing fibrous materials,
described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Tension-Bearing-Fiber-Materials"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
it is important to use the unconstrained version of the fiber and damage mechanics models,
even when the fibers are embedded in a ground matrix with a nearly-incompressible response (uncoupled formulation).
This is a necessary requirement since uncoupled fiber formulations are now understood to be non-physical.
Nevertheless,
for historical reasons,
FEBio allows users to use uncoupled fiber formulations in an uncoupled damage material.
\end_layout
\begin_layout Subsection
Damage Criterion
\end_layout
\begin_layout Standard
At each material point
\begin_inset Formula $\mathbf{X}$
\end_inset
in the continuum,
damage occurs when a scalar damage (or failure) measure
\begin_inset Formula $\Xi\left(\mathbf{F}\right)$
\end_inset
achieves a critical value
\begin_inset Formula $\Xi_{m}$
\end_inset
over the loading history,
\begin_inset Formula
\begin{equation}
\Xi_{m}\left(\mathbf{X}\right)=\max_{-\inftyu_{\beta}$
\end_inset
,
yielded bonds may continue to yield,
but they may also sustain damage according to the reaction
\begin_inset Formula $\mathcal{E}_{\beta}^{y}\to\mathcal{E}_{\beta}^{b}$
\end_inset
,
which reduces their mass fraction
\begin_inset Formula $w_{\beta}^{y}$
\end_inset
.
Damage to yielded bonds may occur based on a function of state (often described as a plastic strain,
though it is not an observable kinematic variable),
which is distinct from the measure of elastic damage.
Therefore,
we denote the
\shape italic
plastic damage measure
\shape default
as
\begin_inset Formula $\Xi^{p}\left(\mathbf{F}_{\beta}^{ys}\right)$
\end_inset
and its cumulative distribution function by
\begin_inset Formula $F^{p}\left(\Xi_{\beta}^{p}\right)$
\end_inset
,
under the assumption that all bond families
\begin_inset Formula $\beta$
\end_inset
share the same functional forms for
\begin_inset Formula $\Xi^{p}$
\end_inset
and
\begin_inset Formula $F^{p}$
\end_inset
.
For each bond family
\begin_inset Formula $\beta$
\end_inset
,
only the remaining undamaged fraction
\begin_inset Formula $1-F^{p}\left(\Xi_{\beta}^{p}\right)$
\end_inset
of yielded bonds may break and reform as the next yielded generation.
\end_layout
\begin_layout Standard
The modern understanding is that plastic strain is ill-defined and not a suitable state variable.
It must be recognized that,
just as
\begin_inset Formula $\mathbf{F}_{\beta}^{ys}$
\end_inset
is a constitutively-prescribed function of state and does not carry the meaning of a plastic deformation gradient,
the plastic damage measure
\begin_inset Formula $\Xi^{p}\left(\mathbf{F}_{\beta}^{ys}\right)$
\end_inset
is also a function of state.
This quantity is called a plastic strain for convenience only.
\end_layout
\begin_layout Standard
When plastic deformation occurs simultaneously with damage,
the mass fraction of each successive yielded generation will have decreased.
The following treatment now considers the superposition of multiple plastic bond families,
as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Kinematic-Hardening-Response"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Subsubsection
Damage to Intact Bonds
\end_layout
\begin_layout Standard
At any given time
\begin_inset Formula $t$
\end_inset
,
there is a maximum value of
\begin_inset Formula $\Xi^{e}$
\end_inset
that has been achieved over the past deformation history.
This maximum value may be distinct for each bond family
\begin_inset Formula $\beta$
\end_inset
,
since intact bond families may yield at different values of
\begin_inset Formula $\mathbf{F}^{s}$
\end_inset
;
it is thus denoted by
\begin_inset Formula $\Xi_{m\beta}^{e}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\Xi_{m\beta}^{e}=\max_{\begin{aligned}-\infty<\tau\le tu_{\beta}$
\end_inset
,
yielded bonds may continue to yield,
breaking and reforming into successive generations.
However,
in contrast to Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Plasticity"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
the mass fraction
\begin_inset Formula $w_{\beta}^{y}$
\end_inset
of yielded bonds in family
\begin_inset Formula $\beta$
\end_inset
no longer remains constant over successive yield generations,
due to the plastic damage reaction.
Each time a yielded bond breaks and reforms into a new generation,
\begin_inset Formula $w_{\beta}^{y}$
\end_inset
is given by the undamaged fraction of yielded bonds,
\begin_inset Formula
\begin{equation}
\left\{ \begin{aligned}w_{\beta}^{s} & =0\\
w_{\beta}^{y} & =\left(1-F^{p}\left(\Xi_{m\beta}^{p}\right)\right)\left(1-F^{e}\left(\Xi_{m\beta}^{e}\right)\right)\\
w_{\beta}^{b} & =F^{e}\left(\Xi_{m\beta}^{e}\right)+F^{p}\left(\Xi_{m\beta}^{p}\right)\left(1-F^{e}\left(\Xi_{m\beta}^{e}\right)\right)
\end{aligned}
\right.\,,\quad t>u_{\beta}\,.\label{eq:plasticdmg-mass-fraction-post-yield}
\end{equation}
\end_inset
Equations
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:plasticdmg-massfraction-pre-yield"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:plasticdmg-mass-fraction-yield"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:plasticdmg-mass-fraction-post-yield"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
govern the temporal behavior of the bond species mass fractions.
\end_layout
\begin_layout Subsubsection
Strain Energy Density,
Stress,
and Damage
\end_layout
\begin_layout Standard
Recognizing that damaged (broken) bonds do not store free energy,
the referential mixture free energy density in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:multiplebonds-mixture-energy"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
may be rewritten as
\begin_inset Formula
\begin{equation}
\Psi_{r}=\sum_{\beta}w_{\beta}\left(w_{\beta}^{s}\Psi_{0}\left(\mathbf{F}^{s}\right)+w_{\beta}^{y}J^{ys}\Psi_{0}\left(\mathbf{F}_{\beta}^{y}\right)\right)\,,\label{eq:plasticdmg-free-energy}
\end{equation}
\end_inset
where the bond mass fractions
\begin_inset Formula $w_{\beta}^{s}$
\end_inset
and
\begin_inset Formula $w_{\beta}^{y}$
\end_inset
are given in Eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:plasticdmg-massfraction-pre-yield"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:plasticdmg-mass-fraction-post-yield"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
prior to,
during,
and after yielding of each bond family
\begin_inset Formula $\beta$
\end_inset
.
Similarly,
the mixture stress may be evaluated from eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:multiplebonds-mixture-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
as
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\sum_{\beta}w_{\beta}\left(w_{\beta}^{s}\boldsymbol{\sigma}_{0}\left(\mathbf{F}^{s}\right)+w_{\beta}^{y}\boldsymbol{\sigma}_{0}\left(\mathbf{F}_{\beta}^{y}\right)\right)\,,\label{eq:plasticdmg-mixture-stress}
\end{equation}
\end_inset
where the stresses
\begin_inset Formula $\boldsymbol{\sigma}_{0}$
\end_inset
are given by the standard hyperelasticity relation in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:multiplebonds-mixture-stress"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
These expressions may be simplified further when assuming that the functional form of
\begin_inset Formula $\psi_{\beta}$
\end_inset
remains the same for all bond families
\begin_inset Formula $\beta$
\end_inset
.
Finally,
the reactive mixture equivalent of the damage variable
\begin_inset Formula $D$
\end_inset
may be evaluated for elastoplastic damage as the fraction of all bonds that are broken,
\begin_inset Formula
\begin{equation}
D=w^{b}=\sum_{\beta}w_{\beta}w_{\beta}^{b}\,.\label{eq:plasticdmg-damage-variable}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
Damage Measures
\begin_inset CommandInset label
LatexCommand label
name "subsec:Yielded-damage-reaction"
\end_inset
\end_layout
\begin_layout Standard
For elastic damage,
we may use the same functional measure as proposed for plastic yielding (e.g.,
the von Mises stress);
this implies that the functions
\begin_inset Formula $\Xi^{e}$
\end_inset
and
\begin_inset Formula $\Phi$
\end_inset
have the same form.
For plastic damage,
experimental results show that during plastic flow damage is coupled with measures of plastic strain
\begin_inset CommandInset citation
LatexCommand citep
key "Lemaitre05"
literal "false"
\end_inset
,
necessitating a (pseudo-)strain-based plastic damage measure
\begin_inset Formula $\Xi^{p}$
\end_inset
.
For yielded bonds in a bond family
\begin_inset Formula $\beta$
\end_inset
,
we can use the constitutively-determined mapping
\begin_inset Formula $\mathbf{F}_{\beta}^{ys}$
\end_inset
to define plastic right Cauchy-Green and Lagrange strain tensors through
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{C}_{\beta}^{ys} & =\left(\mathbf{F}_{\beta}^{ys}\right)^{T}\cdot\mathbf{F}_{\beta}^{ys}\\
\mathbf{E}_{\beta}^{ys} & =\frac{1}{2}\left(\mathbf{C}_{\beta}^{ys}-\mathbf{I}\right)
\end{aligned}
\,.
\end{equation}
\end_inset
One possible constitutive relation for
\begin_inset Formula $\Xi^{p}$
\end_inset
,
which remains valid for general deformations,
is to set it equal to the
\shape italic
effective plastic strain
\shape default
\begin_inset Formula $e_{\beta}^{p}$
\end_inset
for the various bond families
\begin_inset Formula $\beta$
\end_inset
,
\begin_inset Formula
\begin{equation}
e_{\beta}^{p}=\sqrt{\frac{2}{3}\dev\mathbf{E}_{\beta}^{ys}:\dev\mathbf{E}_{\beta}^{ys}}\,.\label{eq:plasticdmg-effective-plastic-strain}
\end{equation}
\end_inset
In a numerical implementation,
the effective plastic strain
\begin_inset Formula $e_{0}^{p}$
\end_inset
of the first bond family to yield may be reported as the effective plastic strain in the entire material,
for consistency with plastic strain measures in classical models of plasticity.
\end_layout
\begin_layout Standard
Quantities in this section do not represent plastic strains or plastic strain tensors,
though we adopt the terminology due to similarities.
Recall that the non-observable function of state
\begin_inset Formula $\mathbf{F}_{\beta}^{ys}=\mathbf{F}_{\beta}^{ys}\left(\mathbf{F}^{s},\rho_{r\beta}^{\alpha}\right)$
\end_inset
is a time-invariant mapping providing the reference configuration of a yielded bond
\begin_inset Formula $y$
\end_inset
with respect to the reference configuration of the master constituent
\begin_inset Formula $s$
\end_inset
,
for family
\begin_inset Formula $\beta$
\end_inset
.
The quantities
\begin_inset Formula $\mathbf{C}_{\beta}^{ys}$
\end_inset
and
\begin_inset Formula $\mathbf{E}_{\beta}^{ys}$
\end_inset
then also represent non-observable functions of state calculated as strain tensors.
Consequently,
\begin_inset Formula $e_{\beta}^{p}$
\end_inset
is a measure of the relative motion of the reference configuration of bond family
\begin_inset Formula $\beta$
\end_inset
,
expressed as a scalar
\begin_inset Quotes eld
\end_inset
strain
\begin_inset Quotes erd
\end_inset
.
Physically,
this amounts to the modeling assumption that once the breaking-and-reforming process takes a bond family out of a local neighborhood centered about its original position,
the bond begins to degrade with further breaking-and-reforming processes.
That each of these quantities exists for every bond family
\begin_inset Formula $\beta$
\end_inset
emphasizes the lack of any true or unique plastic strain measure in this framework.
\end_layout
\begin_layout Subsubsection
Cumulative Damage Distribution Functions
\begin_inset CommandInset label
LatexCommand label
name "subsec:Cumulative-Damage-Distribution"
\end_inset
\end_layout
\begin_layout Standard
The final set of constitutive relations required to fully define an elastoplastic damage material are the two CDFs,
\begin_inset Formula $F^{e}\left(\Xi_{m\beta}^{e}\right)$
\end_inset
and
\begin_inset Formula $F^{p}\left(\Xi_{m\beta}^{p}\right)$
\end_inset
.
As shown by
\begin_inset CommandInset citation
LatexCommand citet
key "Nims16"
literal "false"
\end_inset
,
the only requirement imposed by the Clausius-Duhem inequality is that these be monotonically increasing functions.
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigReactivePlasticityDamage.png
lyxscale 20
width 6in
\end_inset
\begin_inset Caption Standard
\begin_layout Plain Layout
Parametric study of the effect of the damage parameter
\begin_inset Formula $\gamma^{p}$
\end_inset
for a Weibull distribution,
with no intact damage taking place.
(a) As
\begin_inset Formula $\gamma^{p}$
\end_inset
increases,
the onset of noticeable damage shifts to higher strains and becomes more rapid.
(b) Plot of the damage variable
\begin_inset Formula $D=\sum_{\beta}w_{\beta}F^{p}\left(\Xi_{m\beta}^{p}\right)$
\end_inset
.
The response becomes more nonlinear as
\begin_inset Formula $\gamma^{p}$
\end_inset
deviates from unity.
Other plasticity and damage parameters are
\begin_inset Formula $n_{f}=20$
\end_inset
,
\begin_inset Formula $\Upsilon_{0}=600$
\end_inset
MPa,
\begin_inset Formula $\Upsilon_{\text{max}}=1000$
\end_inset
MPa,
\begin_inset Formula $w_{0}=0.75$
\end_inset
,
\begin_inset Formula $w_{e}=0$
\end_inset
,
\begin_inset Formula $r=1$
\end_inset
,
and
\begin_inset Formula $\kappa^{p}=0.03$
\end_inset
.
\end_layout
\end_inset
\begin_inset CommandInset label
LatexCommand label
name "fig:damage-parametric"
\end_inset
\end_layout
\end_inset
Whereas these CDFs may be characterized directly from experimental data,
here we illustrate the FEBio elastoplastic damage framework using a Weibull distribution of the form
\begin_inset Formula
\begin{equation}
F\left(\Xi\right)=1-\exp\left(-\left(\frac{\Xi}{\kappa}\right)^{\gamma}\right)\,,\label{eq:Weibull-cdf}
\end{equation}
\end_inset
where
\begin_inset Formula $\kappa$
\end_inset
(same units as
\begin_inset Formula $\Xi$
\end_inset
) is the value of
\begin_inset Formula $\Xi$
\end_inset
at which the fraction
\begin_inset Formula $1-e^{-1}$
\end_inset
of bonds have failed and the exponent
\begin_inset Formula $\gamma$
\end_inset
(unitless) controls the slope of the response,
such that
\begin_inset Formula $F\left(\Xi\right)$
\end_inset
approaches a step function with a jump at
\begin_inset Formula $\Xi=\kappa$
\end_inset
as
\begin_inset Formula $\gamma\to\infty$
\end_inset
.
Therefore,
each damage function has two free parameters
\begin_inset Formula $\kappa$
\end_inset
and
\begin_inset Formula $\gamma$
\end_inset
.
Based on experimental evidence,
we may let
\begin_inset Formula $\Xi^{e}$
\end_inset
be given by the von Mises (effective) stress,
while
\begin_inset Formula $\Xi^{p}$
\end_inset
is taken to be the effective plastic strain (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Yielded-damage-reaction"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
Figure
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:damage-parametric"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
shows the effect of the Weibull parameter
\begin_inset Formula $\gamma^{p}$
\end_inset
on the stress-strain and damage-strain responses,
with
\begin_inset Formula $\kappa^{p}$
\end_inset
fixed.
The damage response as a function of plastic strain is identically the prescribed CDF (Figure
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:damage-parametric"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
b).
The shape of the CDF changes from logarithmic-like to exponential as
\begin_inset Formula $\gamma^{p}$
\end_inset
increases,
demonstrating the ability of this formulation to recover a broad variety of experimentally measured damage-strain behaviors
\begin_inset CommandInset citation
LatexCommand citep
key "Bonora97"
literal "false"
\end_inset
.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Hydraulic Permeability
\begin_inset CommandInset label
LatexCommand label
name "sec:Hydraulic-Permeability"
\end_inset
\end_layout
\begin_layout Standard
Hydraulic permeability is a material function needed for biphasic and multiphasic materials.
\end_layout
\begin_layout Subsection
Constant Isotropic Permeability
\begin_inset CommandInset label
LatexCommand label
name "subsec:Constant-Isotropic-Permeability"
\end_inset
\end_layout
\begin_layout Standard
When the permeability is isotropic,
\begin_inset Formula
\begin{equation}
\mathbf{k}=k\,\mathbf{I}\,.\label{eq501}
\end{equation}
\end_inset
For this material model,
\begin_inset Formula $k$
\end_inset
is constant.
Generally,
this assumption is only reasonable when strains are small.
\end_layout
\begin_layout Subsection
Exponential Isotropic Permeability
\begin_inset CommandInset label
LatexCommand label
name "subsec:Exponential-Isotropic-Permeability"
\end_inset
\end_layout
\begin_layout Standard
This isotropic material has a permeability that varies as a function of the determinant
\begin_inset Formula $J$
\end_inset
of the deformation gradient.
Its general form is
\begin_inset Formula
\begin{equation}
\mathbf{k}=k\left(J\right)\mathbf{I}\,,\label{eq:isotropic-permeability}
\end{equation}
\end_inset
where,
\begin_inset Formula
\begin{equation}
k\left(J\right)=k_{0}\exp\left(M\frac{J-1}{J-\varphi_{0}}\right)\,.\label{eq:perm-exp-iso}
\end{equation}
\end_inset
Pore closure occurs as
\begin_inset Formula $J$
\end_inset
approaches
\begin_inset Formula $\varphi_{0}$
\end_inset
from above,
in which case the permeability reduces to zero,
\begin_inset Formula
\begin{equation}
\lim_{J\to\varphi_{0}}k\left(J\right)=0\,.\label{eq:perm-pore-closure}
\end{equation}
\end_inset
In the special case when
\begin_inset Formula $M=0$
\end_inset
,
the permeability becomes constant.
In the limit of infinitesimal strains,
the permeability has the form
\begin_inset Formula
\begin{equation}
k\left(J\right)=k_{0}\left(1+\frac{M}{1-\varphi_{0}}\left(J-1\right)+\mathcal{O}\left(\left(J-1\right)^{2}\right)\right)\,.\label{eq:perm-expiso-Taylor}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
For the type of isotropic permeability given in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:isotropic-permeability"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
the spatial permeability tangent
\begin_inset Formula $\boldsymbol{\mathcal{K}}$
\end_inset
with respect to the solid matrix strain has the general form
\begin_inset Formula
\begin{equation}
\boldsymbol{\mathcal{K}}=\left(k+Jk^{\prime}\right)\mathbf{I}\otimes\mathbf{I}-2k\mathbf{I}\odot\mathbf{I}\,,\label{eq:isotropic-perm-tangent}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
k^{\prime}\left(J\right)=M\frac{1-\varphi_{0}}{\left(J-\varphi_{0}\right)^{2}}k\left(J\right)\label{eq:perm-exp-iso-tangent}
\end{equation}
\end_inset
in this case.
\end_layout
\begin_layout Subsection
Holmes-Mow
\begin_inset CommandInset label
LatexCommand label
name "subsec:Holmes-Mow-permeability"
\end_inset
\end_layout
\begin_layout Standard
This isotropic material uses a strain-dependent permeability tensor as formulated by
\begin_inset CommandInset citation
LatexCommand citep
key "Holmes90"
literal "true"
\end_inset
:
\begin_inset Formula
\begin{equation}
\mathbf{k}=k\left(J\right)\mathbf{I}\,,\label{eq502}
\end{equation}
\end_inset
where,
\begin_inset Formula
\begin{equation}
k\left(J\right)=k_{0}\left(\frac{J-\varphi_{0}}{1-\varphi_{0}}\right)^{\alpha}e^{\frac{1}{2}M\left(J^{2}-1\right)}\,.\label{eq503}
\end{equation}
\end_inset
When
\begin_inset Formula $\alpha>0$
\end_inset
,
pore closure occurs as
\begin_inset Formula $J\to\varphi_{0}$
\end_inset
from above,
in which case
\begin_inset Formula $k$
\end_inset
reduces to
\begin_inset Formula $0$
\end_inset
.
Setting
\begin_inset Formula $\alpha=0$
\end_inset
and
\begin_inset Formula $M=0$
\end_inset
produces a constant permeability.
In the limit of infinitesimal strains,
\begin_inset Formula
\begin{equation}
k\left(J\right)=k_{0}\left(1+\left(M+\frac{\alpha}{1-\varphi_{0}}\right)\left(J-1\right)+\mathcal{O}\left(\left(J-1\right)^{2}\right)\right)\,.\label{eq:perm-HM-Taylor}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
The spatial tangent of the permeability tensor with respect to strain may be evaluated from
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:isotropic-perm-tangent"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
using
\begin_inset Formula
\begin{equation}
k^{\prime}\left(J\right)=\left(J\,M+\frac{\alpha}{J-\varphi_{0}}\right)k\left(J\right)\,.\label{eq:perm-HM-tangent}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Referentially Isotropic Permeability
\begin_inset CommandInset label
LatexCommand label
name "subsec:Referentially-Isotropic-Permeabi"
\end_inset
\end_layout
\begin_layout Standard
This material uses a strain-dependent permeability tensor that accommodates strain-induced anisotropy
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10"
literal "true"
\end_inset
:
\begin_inset Formula
\begin{equation}
\mathbf{k}=\left(k_{0r}\mathbf{I}+\frac{k_{1r}}{J^{2}}\mathbf{b}+\frac{k_{2r}}{J^{4}}\mathbf{b}^{2}\right)\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\right)e^{M\left(J^{2}-1\right)/2}\,,\label{eq504}
\end{equation}
\end_inset
Note that the permeability in the reference state (
\begin_inset Formula $\mathbf{F}=\mathbf{I})$
\end_inset
is isotropic and given by
\begin_inset Formula $\mathbf{k}=\left(k_{0r}+k_{1r}+k_{2r}\right)\mathbf{I}$
\end_inset
.
\end_layout
\begin_layout Subsection
Referentially Orthotropic Permeability
\begin_inset CommandInset label
LatexCommand label
name "subsec:Referentially-Orthotropic-Permea"
\end_inset
\end_layout
\begin_layout Standard
This material uses a strain-dependent permeability tensor that is orthotropic in the reference configuration,
and accommodates strain-induced anisotropy
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10"
literal "true"
\end_inset
:
\begin_inset Formula
\begin{equation}
\mathbf{k}=k_{0}\mathbf{I}+\sum\limits_{a=1}^{3}k_{1}^{a}\mathbf{m}_{a}+k_{2}^{a}\left(\mathbf{m}_{a}\cdot\mathbf{b}+\mathbf{b}\cdot\mathbf{m}_{a}\right)\,,\label{eq505}
\end{equation}
\end_inset
where,
\begin_inset Formula
\begin{equation}
\begin{aligned} & k_{0}=k_{0r}\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\right)^{\alpha_{^{0}}}e^{M_{^{0}}\left(J^{2}-1\right)/2}\,,\\
& k_{1}^{a}=\frac{k_{1r}^{a}}{J^{2}}\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\right)^{\alpha_{^{a}}}e^{M_{^{a}}\left(J^{2}-1\right)/2}\,,\\
& k_{2}^{a}=\frac{k_{2r}^{a}}{2J^{4}}\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\right)^{\alpha_{^{a}}}e^{M_{a}\left(J^{2}-1\right)/2}\,.
\end{aligned}
\quad a=1,2,3\label{eq506}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\mathbf{m}_{a}$
\end_inset
are second order tensors representing the spatial structural tensors describing the orthogonal planes of symmetry,
given by
\begin_inset Formula
\begin{equation}
\mathbf{m}_{a}=\mathbf{F}\cdot\left(\mathbf{V}_{a}\otimes\mathbf{V}_{a}\right)\cdot\mathbf{F}^{T},\quad a=1-3,\label{eq507}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{V}_{a}$
\end_inset
are orthonormal vectors normal to the planes of symmetry.
Note that the permeability in the reference state (
\begin_inset Formula $\mathbf{F}=\mathbf{I}$
\end_inset
) is given by
\begin_inset Formula $\mathbf{k}=k_{0r}\mathbf{I}+\sum\limits_{a=1}^{3}\left(k_{1r}^{a}+k_{2r}^{a}\right)\mathbf{V}_{a}\otimes\mathbf{V}_{a}$
\end_inset
.
\end_layout
\begin_layout Subsection
Referentially Transversely Isotropic Permeability
\begin_inset CommandInset label
LatexCommand label
name "subsec:Referentially-TISO-permeability"
\end_inset
\end_layout
\begin_layout Standard
This material uses a strain-dependent permeability tensor that is transversely isotropic in the reference configuration,
and accommodates strain-induced anisotropy
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10"
literal "true"
\end_inset
:
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{k} & =k_{0r}\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\right)^{\alpha_{0}}e^{M_{^{0}}\left(J^{2}-1\right)/2}\mathbf{I}\\
& +\left(\frac{k_{1r}^{T}}{J^{2}}\left(\mathbf{b}-\mathbf{m}\right)+\frac{k_{2r}^{T}}{2J^{4}}\left[2\mathbf{b}^{2}-\left(\mathbf{m}\cdot\mathbf{b}+\mathbf{b}\cdot\mathbf{m}\right)\right]\right)\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\right)^{\alpha_{T}}e^{M_{T}\left(J^{2}-1\right)/2}\\
& +\left(\frac{1}{J^{2}}k_{1r}^{A}\mathbf{m}+\frac{1}{2J^{4}}k_{2r}^{A}\left(\mathbf{m}\cdot\mathbf{b}+\mathbf{b}\cdot\mathbf{m}\right)\right)\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\right)^{\alpha_{A}}e^{M_{A}\left(J^{2}-1\right)/2}\,,
\end{aligned}
\label{eq508}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{m}$
\end_inset
is a second order tensor representing the spatial structural tensor describing the axial direction,
given by
\begin_inset Formula
\begin{equation}
\mathbf{m}=\mathbf{F}\cdot\left(\mathbf{V}\otimes\mathbf{V}\right)\cdot\mathbf{F}^{T}\,,\label{eq509}
\end{equation}
\end_inset
and
\begin_inset Formula $\mathbf{V}$
\end_inset
is a unit vector along the axial direction.
Note that the permeability in the reference state (
\begin_inset Formula $\mathbf{F}=\mathbf{I}$
\end_inset
) is given by
\begin_inset Formula $\mathbf{k}=\left(k_{0r}+k_{1r}^{T}+k_{2r}^{T}\right)\mathbf{I}+\left(k_{1r}^{A}-k_{1r}^{T}+k_{2r}^{A}-k_{2r}^{T}\right)\left(\mathbf{V}\otimes\mathbf{V}\right)$
\end_inset
.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Solute Diffusivity
\begin_inset CommandInset label
LatexCommand label
name "sec:Solute-Diffusivity"
\end_inset
\end_layout
\begin_layout Standard
Diffusivity materials provide a constitutive relation for the solute diffusivity in a biphasic-solute material.
In general,
the diffusivity tensor
\begin_inset Formula $\mathbf{d}$
\end_inset
may be a function of strain and solute concentration.
\end_layout
\begin_layout Subsection
Constant Isotropic Diffusivity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Constant-Isotropic-Diffusivity"
\end_inset
\end_layout
\begin_layout Standard
When the permeability is isotropic,
\begin_inset Formula
\begin{equation}
\mathbf{d}=d\,\mathbf{I}\,.\label{eq510}
\end{equation}
\end_inset
For this material model,
\begin_inset Formula $d$
\end_inset
is constant.
This assumption is only true when strains are small.
Note that the user must specify
\begin_inset Formula $d\leqslant d_{0}$
\end_inset
,
where
\begin_inset Formula $d_{0}$
\end_inset
is the solute diffusivity in free solution,
since a solute cannot diffuse through the biphasic-solute mixture faster than in free solution.
\end_layout
\begin_layout Subsection
Constant Orthotropic Diffusivity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Constant-Orthotropic-Diffusivity"
\end_inset
\end_layout
\begin_layout Standard
When the permeability is orthotropic,
\begin_inset Formula
\begin{equation}
\mathbf{d}=\sum\limits_{a=1}^{3}d^{a}\mathbf{V}_{a}\otimes\mathbf{V}_{a}\,,\label{eq511}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{V}_{a}$
\end_inset
are orthonormal vectors normal to the planes of symmetry.
For this material model,
the
\begin_inset Formula $d^{a}$
\end_inset
are constant.
Therefore this model should be used only when strains are small.
Note that the user must specify
\begin_inset Formula $d^{a}\leqslant d_{0}$
\end_inset
,
where
\begin_inset Formula $d_{0}$
\end_inset
is the solute diffusivity in free solution,
since a solute cannot diffuse through the biphasic-solute mixture faster than in free solution.
\end_layout
\begin_layout Subsection
Referentially Isotropic Diffusivity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Referentially-Isotropic-Diffusiv"
\end_inset
\end_layout
\begin_layout Standard
This material uses a strain-dependent diffusivity tensor that is isotropic in the reference configuration and accommodates strain-induced anisotropy:
\begin_inset Formula
\begin{equation}
\mathbf{d}=\left(d_{0r}\mathbf{I}+\frac{d_{1r}}{J^{2}}\mathbf{b}+\frac{d_{2r}}{J^{4}}\mathbf{b}^{2}\right)\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\right)e^{M\left(J^{2}-1\right)/2},\label{eq512}
\end{equation}
\end_inset
where
\begin_inset Formula $J$
\end_inset
is the jacobian of the deformation,
i.e.
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
where
\begin_inset Formula $\mathbf{F}$
\end_inset
is the deformation gradient,
and
\begin_inset Formula $\mathbf{b}=\mathbf{F}\cdot\mathbf{F}^{T}$
\end_inset
is the left Cauchy-Green tensor.
Note that the diffusivity in the reference state (
\begin_inset Formula $\mathbf{F}=\mathbf{I}$
\end_inset
) is isotropic and given by
\begin_inset Formula $\mathbf{d}=\left(d_{0r}+d_{1r}+d_{2r}\right)\mathbf{I}$
\end_inset
.
\end_layout
\begin_layout Subsection
Referentially Orthotropic Diffusivity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Referentially-Orthotropic-Diffus"
\end_inset
\end_layout
\begin_layout Standard
This material uses a strain-dependent diffusivity tensor that is orthotropic in the reference configuration and accommodates strain-induced anisotropy:
\begin_inset Formula
\begin{equation}
\mathbf{d}=d_{0}\mathbf{I}+\sum\limits_{a=1}^{3}d_{1}^{a}\mathbf{m}_{a}+d_{2}^{a}\left(\mathbf{m}_{a}\cdot\mathbf{b}+\mathbf{b}\cdot\mathbf{m}_{a}\right)\,,\label{eq513}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}d_{0} & =d_{0r}\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\right)^{\alpha_{^{0}}}e^{M_{^{0}}\left(J^{2}-1\right)/2}\,,\\
d_{1}^{a} & =\frac{d_{1r}^{a}}{J^{2}}\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\right)^{\alpha_{^{a}}}e^{M_{^{a}}\left(J^{2}-1\right)/2}\,,\\
d_{2}^{a} & =\frac{d_{2r}^{a}}{2J^{4}}\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\right)^{\alpha_{^{a}}}e^{M_{a}\left(J^{2}-1\right)/2}\,.
\end{aligned}
\quad a=1,2,3\label{eq514}
\end{equation}
\end_inset
Here,
\begin_inset Formula $J$
\end_inset
is the Jacobian of the deformation,
i.e.
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
where
\series bold
\series default
\begin_inset Formula $\mathbf{F}$
\end_inset
is the deformation gradient.
\begin_inset Formula $\mathbf{m}_{a}$
\end_inset
are second order tensor representing the spatial structural tensors describing the orthogonal planes of symmetry,
given by
\begin_inset Formula
\begin{equation}
\mathbf{m}_{a}=\mathbf{F}\cdot\left(\mathbf{V}_{a}\otimes\mathbf{V}_{a}\right)\cdot\mathbf{F}^{T},\quad a=1-3\,,\label{eq515}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{V}_{a}$
\end_inset
are orthonormal vectors normal to the planes of symmetry.
Note that the permeability in the reference state (
\begin_inset Formula $\mathbf{F}=\mathbf{I}$
\end_inset
) is given by
\begin_inset Formula $\mathbf{k}=k_{0r}\mathbf{I}+\sum\limits_{a=1}^{3}\left(k_{1r}^{a}+k_{2r}^{a}\right)\mathbf{V}_{a}\otimes\mathbf{V}_{a}$
\end_inset
.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Solute Solubility
\begin_inset CommandInset label
LatexCommand label
name "sec:Solute-Solubility"
\end_inset
\end_layout
\begin_layout Standard
Solubility constitutive equations provide a relation for
\begin_inset Formula $\tilde{\kappa}$
\end_inset
as a function of solid matrix strain and effective solute concentrations.
\end_layout
\begin_layout Subsection
Constant Solubility
\begin_inset CommandInset label
LatexCommand label
name "subsec:Constant-Solubility"
\end_inset
\end_layout
\begin_layout Standard
For this material model,
\begin_inset Formula $\tilde{\kappa}$
\end_inset
is constant.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Osmotic Coefficient
\begin_inset CommandInset label
LatexCommand label
name "sec:Osmotic-Coefficient"
\end_inset
\end_layout
\begin_layout Standard
Osmotic coefficient constitutive equations provide a relation for
\begin_inset Formula $\Phi$
\end_inset
as a function of solid matrix strain and effective solute concentrations.
\end_layout
\begin_layout Subsection
Constant Osmotic Coefficient
\begin_inset CommandInset label
LatexCommand label
name "subsec:Constant-Osmotic-Coefficient"
\end_inset
\end_layout
\begin_layout Standard
For this material model,
\begin_inset Formula $\Phi$
\end_inset
is constant.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Active Contraction Model
\begin_inset CommandInset label
LatexCommand label
name "sec:Active-Contraction-Model"
\end_inset
\end_layout
\begin_layout Standard
A time varying
\begin_inset Quotes eld
\end_inset
elastance
\begin_inset Quotes erd
\end_inset
active contraction model
\begin_inset CommandInset citation
LatexCommand citep
key "Guccione93"
literal "true"
\end_inset
was added to the transversely isotropic materials.
When active contraction is activated,
the total Cauchy stress
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
is defined as the sum of the active stress tensor
\begin_inset Formula $\boldsymbol{\sigma}^{a}=T^{a}\mathbf{a}\otimes\mathbf{a}$
\end_inset
and the passive stress tensor
\begin_inset Formula $\boldsymbol{\sigma}^{p}$
\end_inset
:
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\boldsymbol{\sigma}^{p}+\boldsymbol{\sigma}^{a},\label{eq516}
\end{equation}
\end_inset
where
\series bold
\emph on
a
\series default
\emph default
is the deformed fiber vector (unit length),
defined as
\begin_inset Formula $\lambda\mathbf{a}=\mathbf{F}\cdot\mathbf{a}$
\end_inset
.
The time varying elastance model is a modification of the standard Hill equation that scales the standard equation by an activation curve
\begin_inset Formula $C\left(t\right)$
\end_inset
.
The active fiber stress
\begin_inset Formula $T^{a}$
\end_inset
is defined as:
\begin_inset Formula
\begin{equation}
T^{a}=T_{\max}\frac{Ca_{0}^{2}}{Ca_{0}^{2}+ECa_{50}^{2}}C\left(t\right),\label{eq517}
\end{equation}
\end_inset
where
\begin_inset Formula $T_{max}=135.7\,\text{kPa}$
\end_inset
is the isometric tension under maximal activation at the peak intracellular calcium concentration of
\emph on
\begin_inset Formula $\text{Ca}_{0}=4.35\,\mu\text{M}$
\end_inset
\emph default
.
The length dependent calcium sensitivity is governed by the following equation:
\begin_inset Formula
\begin{equation}
ECa_{50}=\frac{\left(\text{Ca}_{0}\right)_{\max}}{\sqrt{\exp\left[B(l-l_{0})\right]-1}}\,,\label{eq518}
\end{equation}
\end_inset
where
\begin_inset Formula $\left(\text{Ca}_{0}\right)_{\max}=4.35\,\mu\text{M}$
\end_inset
is the maximum peak intracellular calcium concentration,
\begin_inset Formula $B=4.75\,\mu\text{m}^{-1}$
\end_inset
governs the shape of the peak isometric tension-sarcomere length relation,
\begin_inset Formula $l_{0}=1.58\,\mu\text{m}$
\end_inset
is the sarcomere length at which no active tension develops,
and
\begin_inset Formula $l$
\end_inset
is the sarcomere length which is the product of the fiber stretch
\begin_inset Formula $\lambda$
\end_inset
and the sarcomere unloaded length
\begin_inset Formula $l_{r}=2.04\,\mu\text{m}$
\end_inset
.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Prescribed Active Contraction
\begin_inset CommandInset label
LatexCommand label
name "sec:Prescribed-Active-Contraction"
\end_inset
\end_layout
\begin_layout Standard
Prescribed active contraction models allow the user to directly specify the time history of the active contractile stress.
\end_layout
\begin_layout Subsection
Uniaxial Active Contraction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Uniaxial-Active-Contraction"
\end_inset
\end_layout
\begin_layout Standard
For this model,
the active stress is acting along a prescribed direction given by the unit vector
\begin_inset Formula $\mathbf{a}_{r}$
\end_inset
in the reference configuration.
The
\begin_inset Formula $2^{\text{nd}}$
\end_inset
Piola-Kirchhoff stress is
\begin_inset Formula
\begin{equation}
\mathbf{S}^{a}=T^{a}\mathbf{a}_{r}\otimes\mathbf{a}_{r}\,,\label{eq519}
\end{equation}
\end_inset
and the Cauchy stress is
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}^{a}=J^{-1}T^{a}\mathbf{a}\otimes\mathbf{a}\,,\label{eq520}
\end{equation}
\end_inset
where
\begin_inset Formula $T^{a}$
\end_inset
is the prescribed contractile stress and
\begin_inset Formula $\mathbf{a}=\mathbf{F}\cdot\mathbf{a}_{r}$
\end_inset
.
Since
\begin_inset Formula $\mathbf{S}^{a}$
\end_inset
is not a function of deformation,
the material and spatial tangents are both zero.
\end_layout
\begin_layout Subsection
Transversely Isotropic Active Contraction
\begin_inset CommandInset label
LatexCommand label
name "subsec:TISO-Active-Contraction"
\end_inset
\end_layout
\begin_layout Standard
In this case,
the active stress is isotropic in a plane transverse to the direction
\begin_inset Formula $\mathbf{a}_{r}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\mathbf{S}^{a}=T^{a}\left(\mathbf{I}-\mathbf{a}_{r}\otimes\mathbf{a}_{r}\right)\,,\label{eq521}
\end{equation}
\end_inset
and the corresponding Cauchy stress is
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}^{a}=J^{-1}T^{a}\left(\mathbf{B}-\mathbf{a}\otimes\mathbf{a}\right)\,,\label{eq522}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{B}=\mathbf{F}\cdot\mathbf{F}^{T}$
\end_inset
is the left Cauchy-Green tensor.
The material and spatial tangents are zero.
\end_layout
\begin_layout Subsection
Isotropic Active Contraction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Isotropic-Active-Contraction"
\end_inset
\end_layout
\begin_layout Standard
An isotropic active contractile stress is given by
\begin_inset Formula
\begin{equation}
\mathbf{S}^{a}=T^{a}\mathbf{I}\label{eq523}
\end{equation}
\end_inset
and the corresponding Cauchy stress is
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}^{a}=J^{-1}T^{a}\mathbf{B}\,.\label{eq524}
\end{equation}
\end_inset
The material and spatial tangents are zero.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Chemical Reaction Production Rate
\begin_inset CommandInset label
LatexCommand label
name "sec:CR-Production-Rate"
\end_inset
\end_layout
\begin_layout Standard
Production rate constitutive equations provide a relation for
\begin_inset Formula $\hat{\zeta}$
\end_inset
as a function of solid matrix strain,
solute concentrations,
and the concentrations of solid-bound molecular species.
\end_layout
\begin_layout Subsection
Mass Action Forward
\begin_inset CommandInset label
LatexCommand label
name "subsec:Mass-Action-Forward"
\end_inset
\end_layout
\begin_layout Standard
According to the law of mass action for forward reactions,
\begin_inset Formula
\begin{equation}
\hat{\zeta}=k\left(\theta,\mathbf{F},\rho_{r}^{\sigma}\right)\prod\limits_{\alpha}\left(c^{\alpha}\right)^{\nu_{R}^{\alpha}}\,.\label{eq525}
\end{equation}
\end_inset
A constitutive relation for the specific reaction rate
\begin_inset Formula $k\left(\theta,\mathbf{F},\rho_{r}^{\sigma}\right)$
\end_inset
must also be provided.
\end_layout
\begin_layout Subsection
Mass Action Reversible
\begin_inset CommandInset label
LatexCommand label
name "subsec:Mass-Action-Reversible"
\end_inset
\end_layout
\begin_layout Standard
According to the law of mass action for reversible reactions,
\begin_inset Formula
\begin{equation}
\begin{aligned}\hat{\zeta}_{F} & =k_{F}\left(\theta,\mathbf{F},\rho_{r}^{\sigma}\right)\prod\limits_{\alpha}\left(c^{\alpha}\right)^{\nu_{R}^{\alpha}}\\
\hat{\zeta}_{R} & =k_{R}\left(\theta,\mathbf{F},\rho_{r}^{\sigma}\right)\prod\limits_{\alpha}\left(c^{\alpha}\right)^{\nu_{P}^{\alpha}}\\
\hat{\zeta} & =\hat{\zeta}_{F}-\hat{\zeta}_{R}=\hat{\zeta}_{F}\left[1-K_{c}\left(\theta,\mathbf{F},\rho_{r}^{\sigma}\right)\prod\limits_{\alpha}\left(c^{\alpha}\right)^{\nu^{\alpha}}\right]\,,
\end{aligned}
\label{eq526}
\end{equation}
\end_inset
where
\begin_inset Formula $K_{c}=k_{R}/k_{F}$
\end_inset
is a function that reduces to the equilibrium constant of the reversible reaction at chemical equilibrium (when
\begin_inset Formula $\hat{\zeta}=0)$
\end_inset
.
Constitutive relations for the specific forward and reverse reaction rates,
\begin_inset Formula $k_{F}\left(\theta,\mathbf{F},\rho_{r}^{\sigma}\right)$
\end_inset
and
\begin_inset Formula $k_{R}\left(\theta,\mathbf{F},\rho_{r}^{\sigma}\right)$
\end_inset
respectively,
must also be provided.
\end_layout
\begin_layout Subsection
Michaelis-Menten
\begin_inset CommandInset label
LatexCommand label
name "subsec:Michaelis-Menten"
\end_inset
\end_layout
\begin_layout Standard
Michaelis-Menten is a model for enzyme kinetics as represented by the reactions
\begin_inset Formula
\begin{equation}
\mathcal{E}^{e}+\mathcal{E}^{s}\rightleftharpoons\mathcal{E}^{es}\to\mathcal{E}^{e}+\mathcal{E}^{p}\,,\label{eq527}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathcal{E}^{e}$
\end_inset
is the enzyme,
\begin_inset Formula $\mathcal{E}^{s}$
\end_inset
is the substrate,
\begin_inset Formula $\mathcal{E}^{es}$
\end_inset
is the enzyme-substrate complex,
and
\begin_inset Formula $\mathcal{E}^{p}$
\end_inset
is the product.
The molar mass supply
\begin_inset Formula $\hat{c}^{p}$
\end_inset
producing
\begin_inset Formula $\mathcal{E}^{p}$
\end_inset
is related to the concentration of the substrate
\begin_inset Formula $\mathcal{E}^{s}$
\end_inset
via
\begin_inset Formula
\begin{equation}
\hat{c}^{p}=\frac{V_{max}c^{s}}{K_{m}+c^{s}}\,,\label{eq528}
\end{equation}
\end_inset
where
\begin_inset Formula $V_{max}$
\end_inset
is the maximum rate achieved by the system,
at maximum (saturating) substrate concentrations.
\begin_inset Formula $K_{m}$
\end_inset
is the substrate concentration at which the reaction rate is half of
\begin_inset Formula $V_{max}$
\end_inset
.
\end_layout
\begin_layout Standard
This relation may be derived by applying the law of mass action to the two reactions in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq527"
nolink "false"
\end_inset
.
under the simplifying assumption that the reversible reaction between the enzyme and substrate reaches steady state much faster than the subsequent forward reaction forming the product.
If the first and second reactions are denoted by subscripts 1 and 2,
respectively,
the law of mass action for the first (reversible) and second (forwar) reaction produces
\begin_inset Formula
\begin{equation}
\begin{aligned}\hat{\zeta}_{1} & =k_{F1}c^{e}c^{s}-k_{R1}c^{es},\quad\hat{\zeta}_{2}=k_{F2}c^{es}\,,\\
\hat{c}^{s} & =-\hat{\zeta}_{1},\quad\hat{c}^{p}=\hat{\zeta}_{2},\quad\hat{c}^{es}=\hat{\zeta}_{1}-\hat{\zeta}_{2}\,.
\end{aligned}
\label{eq529}
\end{equation}
\end_inset
The total enzyme concentration remains constant at
\begin_inset Formula $c_{0}^{e}=c^{e}+c^{es}$
\end_inset
,
so that
\begin_inset Formula $\hat{\zeta}_{1}=k_{F1}c_{0}^{e}c^{s}-\left(k_{F1}c^{s}+k_{R1}\right)c^{es}$
\end_inset
.
Assuming that the first reaction equilibrates much faster than the second is equivalent to letting
\begin_inset Formula $\hat{\zeta}_{1}\approx0$
\end_inset
,
in which case
\begin_inset Formula
\begin{equation}
c^{es}\approx\frac{c_{0}^{e}c^{s}}{c^{s}+K_{m}}\,,\label{eq530}
\end{equation}
\end_inset
where
\begin_inset Formula $K_{m}=k_{R1}/k_{F1}$
\end_inset
.
Then,
\begin_inset Formula
\[
\hat{\zeta}_{2}=\frac{V_{\max}c^{s}}{c^{s}+K_{m}}\,,
\]
\end_inset
where
\begin_inset Formula $V_{\max}=k_{F2}c_{0}^{e}$
\end_inset
represents the maximum value of
\begin_inset Formula $\hat{\zeta}_{2}$
\end_inset
,
when
\begin_inset Formula $K_{m}\ll c^{s}$
\end_inset
.
In practice,
choosing
\begin_inset Formula $k_{F1}\gg k_{F2}$
\end_inset
can produce the desired effect.
\end_layout
\begin_layout Section
Specific Reaction Rate
\begin_inset CommandInset label
LatexCommand label
name "sec:Specific-Reaction-Rate"
\end_inset
\end_layout
\begin_layout Standard
Specific reaction rate constitutive equations provide a relation for
\begin_inset Formula $k$
\end_inset
as a function of solid matrix strain and the concentrations of solid-bound molecular species.
\end_layout
\begin_layout Subsection
Constant Specific Reaction Rate
\begin_inset CommandInset label
LatexCommand label
name "subsec:Constant-Specific-Reaction"
\end_inset
\end_layout
\begin_layout Standard
For this material model,
\begin_inset Formula $k$
\end_inset
is constant.
\end_layout
\begin_layout Subsection
Huiskes Remodeling
\begin_inset CommandInset label
LatexCommand label
name "subsec:Huiskes-Remodeling"
\end_inset
\end_layout
\begin_layout Standard
For this material,
which is based on the bone remodeling framework of Weinans et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Weinans92"
literal "false"
\end_inset
,
the specific reaction rate depends on the deviation of the specific strain energy from a threshold value,
\begin_inset Formula
\begin{equation}
k\left(\mathbf{F},\rho_{r}^{s}\right)=\frac{B}{\left(J-\varphi_{r}^{s}\right)M^{s}}\left(\frac{\Psi_{r}}{\rho_{r}^{s}}-\psi_{0}\right)\,,,\label{eq531}
\end{equation}
\end_inset
where
\begin_inset Formula $B$
\end_inset
is a constant,
\begin_inset Formula $\Psi_{r}$
\end_inset
is the strain energy density of the solid,
\begin_inset Formula $\rho_{r}^{s}$
\end_inset
is the referential mass density of the solid,
\begin_inset Formula $\psi_{0}$
\end_inset
is the threshold value for the specific strain energy.
In this relation,
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
is evaluated from the solid deformation and
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
is evaluated from
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:referential-solid-volume-fraction"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
In the subsequent study by Mullender et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Mullender94"
literal "false"
\end_inset
it was proposed to let osteocytes serve as sensing cells,
such that the remodeling rate may depend on cells in the neighborhood of the the point at which remodeling is calculated.
In that case,
the model of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq531"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
is extended to include the contribution from neighboring sensing cells,
\begin_inset Formula
\begin{equation}
k\left(\mathbf{F},\rho_{r}^{s}\right)=\frac{1}{\left(J-\varphi_{r}^{s}\right)M^{s}}\left(B\left(\frac{\Psi_{r}}{\rho_{r}^{s}}-\psi_{0}\right)+\sum_{i=1}^{N}e^{-d_{i}/D}B_{i}\left(\frac{\Psi_{ri}}{\rho_{ri}^{s}}-\psi_{0}\right)\right)\,.\label{eq:eq531b}
\end{equation}
\end_inset
Here,
\begin_inset Formula $N$
\end_inset
represents the number of elements in the neighborhood of the current material point element,
which fall within a characteristic sensing distance
\begin_inset Formula $D$
\end_inset
,
and
\begin_inset Formula $d_{i}$
\end_inset
represents the distance between these neighboring points and the current material point.
\end_layout
\begin_layout Section
Viscous Fluids
\begin_inset CommandInset label
LatexCommand label
name "sec:Viscous-Fluids"
\end_inset
\end_layout
\begin_layout Standard
The most common family of constitutive relations employed for viscous fluids,
including Newtonian fluids,
is given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\tau}\left(J,\mathbf{D}\right)=\left(\kappa-\frac{2}{3}\mu\right)\left(\tr\mathbf{D}\right)\,\mathbf{I}+2\mu\,\mathbf{D}\,,\label{eq:viscous-stress}
\end{equation}
\end_inset
where
\begin_inset Formula $\mu$
\end_inset
and
\begin_inset Formula $\kappa$
\end_inset
are,
respectively,
the dynamic shear and bulk viscosity coefficients (both positive),
which may generally depend on
\begin_inset Formula $J$
\end_inset
and,
for non-Newtonian fluids,
on invariants of
\begin_inset Formula $\mathbf{D}$
\end_inset
.
In practice,
most constitutive models for non-Newtonian viscous fluids only use a dependence on
\begin_inset Formula $\dot{\gamma}=\sqrt{2\mathbf{D}:\mathbf{D}}$
\end_inset
,
since it is the only non-zero invariant in viscometric flows
\begin_inset CommandInset citation
LatexCommand cite
key "Reddy08"
literal "true"
\end_inset
.
In this case,
substituting eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:viscous-stress"
nolink "false"
\end_inset
into eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:stress-tangent-D"
nolink "false"
\end_inset
produces
\begin_inset Formula
\begin{equation}
\begin{aligned}\boldsymbol{\mathcal{C}}^{\tau} & =\left(\kappa-\frac{2}{3}\mu\right)\mathbf{I}\otimes\mathbf{I}+\frac{2}{\dot{\gamma}}\left(\frac{\partial\kappa}{\partial\dot{\gamma}}-\frac{2}{3}\frac{\partial\mu}{\partial\dot{\gamma}}\right)\left(\tr\mathbf{D}\right)\mathbf{I}\otimes\mathbf{D}\\
& +2\left(\frac{2}{\dot{\gamma}}\frac{\partial\mu}{\partial\dot{\gamma}}\mathbf{D}\otimes\mathbf{D}+\mu\,\mathbf{I}\odot\mathbf{I}\right)\,.
\end{aligned}
\label{eq:viscous-tangent-D}
\end{equation}
\end_inset
The term containing
\begin_inset Formula $\mathbf{I}\otimes\mathbf{D}$
\end_inset
is the only one that does not exhibit major symmetry.
In Newtonian fluids,
\begin_inset Formula $\mu$
\end_inset
and
\begin_inset Formula $\kappa$
\end_inset
are independent of
\begin_inset Formula $\mathbf{D}$
\end_inset
;
in incompressible fluids they are independent of
\begin_inset Formula $J$
\end_inset
(since
\begin_inset Formula $J=1$
\end_inset
remains constant and
\begin_inset Formula $\tr\mathbf{D}=0$
\end_inset
).
Thus,
for both of these cases the term containing
\begin_inset Formula $\mathbf{I}\otimes\mathbf{D}$
\end_inset
drops out and
\begin_inset Formula $\boldsymbol{\mathcal{C}}^{\tau}$
\end_inset
exhibits major symmetry.
\end_layout
\begin_layout Standard
Similarly,
using eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:viscous-stress"
nolink "false"
\end_inset
,
the tangent
\begin_inset Formula $\boldsymbol{\tau}_{J}^{\prime}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:stress-tangent-J"
nolink "false"
\end_inset
reduces to
\begin_inset Formula
\begin{equation}
\boldsymbol{\tau}_{J}^{\prime}=\left(\frac{\partial\kappa}{\partial J}-\frac{2}{3}\frac{\partial\mu}{\partial J}\right)\left(\tr\mathbf{D}\right)\,\mathbf{I}+2\frac{\partial\mu}{\partial J}\,\mathbf{D}\,.\label{eq:viscous-tangent-J}
\end{equation}
\end_inset
Explicit forms for the dependence of
\begin_inset Formula $\mu$
\end_inset
or
\begin_inset Formula $\kappa$
\end_inset
on
\begin_inset Formula $J$
\end_inset
are not illustrated here,
since viscosity generally shows negligible dependence on pressure (thus
\begin_inset Formula $J$
\end_inset
) over typical ranges of pressures in fluids,
hence
\begin_inset Formula $\boldsymbol{\tau}_{J}^{\prime}\approx\mathbf{0}$
\end_inset
in most analyses.
\end_layout
\begin_layout Standard
Many fluid mechanics textbooks employ Stoke's condition (
\begin_inset Formula $\kappa=0$
\end_inset
) for the purpose of equating the elastic pressure
\begin_inset Formula $p$
\end_inset
with the mean normal stress
\begin_inset Formula $-\frac{1}{3}\tr\boldsymbol{\sigma}$
\end_inset
\begin_inset CommandInset citation
LatexCommand cite
key "Panton06"
literal "true"
\end_inset
;
in FEBio,
\begin_inset Formula $\kappa$
\end_inset
is kept as a user-defined material property,
which may be set to zero if desired.
A common example of a non-Newtonian fluid is the Carreau model,
where
\begin_inset Formula $\boldsymbol{\tau}=2\mu\left(\dot{\gamma}\right)\mathbf{D}$
\end_inset
,
which is a special case of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:viscous-stress"
nolink "false"
\end_inset
,
with
\begin_inset Formula $\kappa=2\mu/3$
\end_inset
and
\begin_inset Formula
\begin{equation}
\mu=\mu_{\infty}+\left(\mu_{0}-\mu_{\infty}\right)\left(1+\left(\lambda\dot{\gamma}\right)^{2}\right)^{\left(n-1\right)/2}\,,\label{eq:Carreau-model-viscosity}
\end{equation}
\end_inset
where
\begin_inset Formula $\lambda$
\end_inset
is a time constant,
\begin_inset Formula $n$
\end_inset
is a parameter governing the power-law response,
\begin_inset Formula $\mu_{0}$
\end_inset
is the viscosity when
\begin_inset Formula $\dot{\gamma}=0$
\end_inset
and
\begin_inset Formula $\mu_{\infty}$
\end_inset
is the viscosity as
\begin_inset Formula $\dot{\gamma}\to\infty$
\end_inset
.
Other common models of non-Newtonian viscous fluids are summarized in
\begin_inset CommandInset citation
LatexCommand cite
key "Cho91"
literal "true"
\end_inset
,
though it should be noted that some of these models produce infinite values when evaluating
\begin_inset Formula $\dot{\gamma}^{-1}\partial\mu/\partial\dot{\gamma}$
\end_inset
as
\begin_inset Formula $\dot{\gamma}\to0$
\end_inset
,
which is problematic in the evaluation of
\begin_inset Formula $\boldsymbol{\mathcal{C}}^{\tau}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:viscous-tangent-D"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
For nearly incompressible fluids,
a simple constitutive relation may be adopted for the pressure,
\begin_inset Formula
\begin{equation}
p\left(J\right)=K\left(1-J\right)\,,\label{eq:ideal-fluid}
\end{equation}
\end_inset
where
\begin_inset Formula $K$
\end_inset
is the bulk modulus of the fluid in the limit when
\begin_inset Formula $J=1$
\end_inset
.
It follows that
\begin_inset Formula $p^{\prime}\left(J\right)=-K$
\end_inset
and
\begin_inset Formula $p^{\prime\prime}\left(J\right)=0$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Wint-linearization-J"
nolink "false"
\end_inset
.
This constitutive relation is adopted for nearly-incompressible CFD analyses in FEBio,
though alternative formulations may be easily implemented.
\end_layout
\begin_layout Chapter
Dynamics
\begin_inset CommandInset label
LatexCommand label
name "chap:Dynamics"
\end_inset
\end_layout
\begin_layout Standard
FEBio can perform a nonlinear dynamic analysis by iteratively solving the following nonlinear semi-discrete finite element equations
\begin_inset CommandInset citation
LatexCommand citep
key "Bathe82"
literal "true"
\end_inset
.
\begin_inset Formula
\begin{equation}
\begin{aligned} & \mathbf{M\ddot{d}}_{n+1}^{k}+\mathbf{K}\Delta\mathbf{d}^{k}=\mathbf{T}_{n+1}^{k}-\mathbf{F}_{n+1}\\
& \mathbf{d}_{n+1}^{k}=\mathbf{d}_{n+1}^{k-1}+\Delta\mathbf{d}^{k}
\end{aligned}
\,.\label{eq717}
\end{equation}
\end_inset
Here,
\series bold
\begin_inset Formula $\mathbf{M}$
\end_inset
\series default
is the mass matrix,
\series bold
\begin_inset Formula $\mathbf{K}$
\end_inset
\series default
the stiffness matrix,
\series bold
\begin_inset Formula $\mathbf{T}$
\end_inset
\series default
the internal force (stress) vector and
\series bold
\begin_inset Formula $\mathbf{F}$
\end_inset
\series default
the externally applied loads.
The upperscript index
\begin_inset Formula $k$
\end_inset
refers to the iteration number,
the subscript
\begin_inset Formula $n$
\end_inset
refers to the time increment.
The trapezoidal (or midpoint) rule is used to perform the time integration.
This results in the following approximations for the displacement and velocity updates.
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{d}_{n+1} & =\mathbf{d}_{n}+\frac{h}{2}\left(\mathbf{\dot{d}}_{n}+\mathbf{\dot{d}}_{n+1}\right)\\
\mathbf{\dot{d}}_{n+1} & =\mathbf{\dot{d}}_{n}+\frac{h}{2}\left(\mathbf{\ddot{d}}_{n}+\mathbf{\ddot{d}}_{n+1}\right)
\end{aligned}
\,.\label{eq718}
\end{equation}
\end_inset
Using
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq718"
nolink "false"
\end_inset
we can solve for
\begin_inset Formula $\mathbf{\ddot{d}}_{n+1}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\mathbf{\ddot{d}}_{n+1}^{k}=\frac{4}{h^{2}}\left(\mathbf{d}_{n+1}^{k-1}-\mathbf{d}_{n}+\Delta\mathbf{d}^{k}\right)-\frac{4}{h}\mathbf{\dot{d}}_{n}-\mathbf{\ddot{d}}_{n}\,.\label{eq719}
\end{equation}
\end_inset
Substituting this into equation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq717"
nolink "false"
\end_inset
results in the following linear system of equations.
\begin_inset Formula
\begin{equation}
\left(\frac{4}{h^{2}}\mathbf{M}+\mathbf{K}\right)\Delta\mathbf{d}^{k}=\mathbf{T}_{n+1}^{k}-\mathbf{F}_{n+1}-\mathbf{M}\left(\frac{4}{h^{2}}\left(\mathbf{d}_{n+1}^{k-1}-\mathbf{d}_{n}\right)-\frac{4}{h}\mathbf{\dot{d}}_{n}-\mathbf{\ddot{d}}_{n}\right)\,.\label{eq720}
\end{equation}
\end_inset
Solving this equation for
\begin_inset Formula $\Delta\mathbf{d}^{k}$
\end_inset
and using
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq717"
nolink "false"
\end_inset
gives the new displacement vector
\begin_inset Formula $\mathbf{d}_{n+1}^{k}$
\end_inset
.
The acceleration vector
\begin_inset Formula $\mathbf{\ddot{d}}_{n+1}^{k}$
\end_inset
can then be found from
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq719"
nolink "false"
\end_inset
and the velocity vector
\begin_inset Formula $\mathbf{\dot{d}}_{n+1}^{k}$
\end_inset
from
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq719"
nolink "false"
\end_inset
.
This algorithm is repeated until convergence is reached.
\end_layout
\begin_layout Section
Newmark Integration
\begin_inset CommandInset label
LatexCommand label
name "sec:Newmark-Integration"
\end_inset
\end_layout
\begin_layout Standard
To solve a differential equation which is second-order in time,
we need to perform a numerical integration in the time domain.
Let
\begin_inset Formula $\theta\left(t\right)$
\end_inset
denote the function of interest and let
\begin_inset Formula $t_{n}$
\end_inset
and
\begin_inset Formula $t_{n+1}$
\end_inset
represent consecutive time steps such that
\begin_inset Formula $\Delta t=t_{n+1}-t_{n}$
\end_inset
.
The function
\begin_inset Formula $\theta\left(t\right)$
\end_inset
may be represented at each time point as
\begin_inset Formula $\theta_{n}=\theta\left(t_{n}\right)$
\end_inset
and
\begin_inset Formula $\theta_{n+1}=\theta\left(t_{n+1}\right)$
\end_inset
.
The Newmark integration formulas are used to evaluate
\begin_inset Formula $\theta_{n+1}$
\end_inset
and
\begin_inset Formula $\dot{\theta}_{n+1}$
\end_inset
at time
\begin_inset Formula $\theta_{n+1}$
\end_inset
,
assuming that they can be integrated from a judiciously selected
\begin_inset Formula $\ddot{\theta}\left(t_{n+\gamma}\right)$
\end_inset
in the time interval
\begin_inset Formula $\left[t_{n},t_{n+1}\right]$
\end_inset
.
Using the mean value theorem for definite integrals,
we know that an exact solution may be found for the integral according to
\begin_inset Formula
\begin{equation}
\int_{t_{n}}^{t_{n+1}}\ddot{\theta}\left(t\right)\,dt=\dot{\theta}_{n+1}-\dot{\theta}_{n}\equiv\ddot{\theta}\left(t_{n+\gamma}\right)\Delta t\,,\label{eq:Newmark-mean-value-theorem}
\end{equation}
\end_inset
where
\begin_inset Formula $\gamma$
\end_inset
is generally unknown
\emph on
a priori
\emph default
.
In the Newmark integration scheme we let
\begin_inset Formula
\begin{equation}
\ddot{\theta}\left(t_{n+\gamma}\right)=\gamma\ddot{\theta}_{n+1}+\left(1-\gamma\right)\ddot{\theta}_{n}\,,\label{eq:Newmark-gamma-deriv}
\end{equation}
\end_inset
where
\begin_inset Formula $\gamma$
\end_inset
is a user-selected parameter in the range
\begin_inset Formula $0$
\end_inset
to
\begin_inset Formula $1$
\end_inset
.
It follows that
\begin_inset Formula
\begin{equation}
\dot{\theta}_{n+1}=\dot{\theta}_{n}+\Delta t\left[\gamma\ddot{\theta}_{n+1}+\left(1-\gamma\right)\ddot{\theta}_{n}\right]\,.\label{eq:Newmark-velocity}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
We can similarly integrate this function twice to obtain
\begin_inset Formula $\theta_{n+1}$
\end_inset
,
\begin_inset Formula
\[
\int_{t_{n}}^{t_{n+1}}\int_{t_{n}}^{t}\ddot{\theta}\left(\tau\right)\,d\tau\,dt=\int_{t_{n}}^{t_{n+1}}\left(\dot{\theta}\left(t\right)-\dot{\theta}_{n}\right)\,dt=\theta_{n+1}-\theta_{n}-\dot{\theta}_{n}\Delta t\equiv\ddot{\theta}\left(t_{n+2\beta}\right)\frac{\Delta t^{2}}{2}
\]
\end_inset
where we let
\begin_inset Formula
\[
\ddot{\theta}\left(t_{n+2\beta}\right)=2\beta\ddot{\theta}_{n+1}+\left(1-2\beta\right)\ddot{\theta}_{n}\,.
\]
\end_inset
Here,
\begin_inset Formula $\beta$
\end_inset
represents a parameter that varies from
\begin_inset Formula $0$
\end_inset
to
\begin_inset Formula $\frac{1}{2}$
\end_inset
.
It follows that
\begin_inset Formula
\begin{equation}
\theta_{n+1}=\theta_{n}+\dot{\theta}_{n}\Delta t+\frac{\Delta t^{2}}{2}\left[2\beta\ddot{\theta}_{n+1}+\left(1-2\beta\right)\ddot{\theta}_{n}\right]\,,\label{eq:Newmark-displacement}
\end{equation}
\end_inset
or alternatively,
\begin_inset Formula
\begin{equation}
\ddot{\theta}_{n+1}=\frac{1}{\beta\Delta t^{2}}\left(\theta_{n+1}-\theta_{n}-\dot{\theta}_{n}\Delta t\right)-\left(\frac{1}{2\beta}-1\right)\ddot{\theta}_{n}\,,\label{eq:Newmark-acceleration}
\end{equation}
\end_inset
from which we may re-evaluate
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Newmark-velocity"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
as
\begin_inset Formula
\begin{equation}
\dot{\theta}_{n+1}=\dot{\theta}_{n}+\Delta t\left[\frac{\gamma}{\beta\Delta t^{2}}\left(\theta_{n+1}-\theta_{n}-\dot{\theta}_{n}\Delta t\right)+\left(1-\frac{\gamma}{2\beta}\right)\ddot{\theta}_{n}\right]\,.\label{eq:Newmark-velocity-redux}
\end{equation}
\end_inset
Stability of this integration scheme is guaranteed when
\begin_inset Formula
\begin{equation}
\gamma\ge\frac{1}{2}\,,\quad\beta\ge\frac{\left(\gamma+\frac{1}{2}\right)^{2}}{4}\,.\label{eq:Newmark-stability}
\end{equation}
\end_inset
\end_layout
\begin_layout Section
Elastodynamics
\begin_inset CommandInset label
LatexCommand label
name "sec:Elastodynamics"
\end_inset
\end_layout
\begin_layout Subsection
Governing Equations
\end_layout
\begin_layout Standard
The linear momentum balance for elastodynamics is
\begin_inset Formula
\begin{equation}
\rho\mathbf{a}=\divg\boldsymbol{\sigma}+\rho\mathbf{b}\,,\label{eq:edy-solid-momentum}
\end{equation}
\end_inset
where
\begin_inset Formula $\rho$
\end_inset
is the density,
\begin_inset Formula $\mathbf{a}$
\end_inset
is the acceleration,
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
is the Cauchy stress,
and
\begin_inset Formula $\mathbf{b}$
\end_inset
is the body force per mass.
The angular momentum balance is satisfied by letting
\begin_inset Formula $\boldsymbol{\sigma}^{T}=\boldsymbol{\sigma}$
\end_inset
.
The integrated form of the mass balance equations yields
\begin_inset Formula
\begin{equation}
\rho=\frac{\rho_{r}}{J}\,,\label{eq:edy-mass-balance}
\end{equation}
\end_inset
where
\begin_inset Formula $\rho_{r}$
\end_inset
is the density in the reference configuration and
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
,
where
\begin_inset Formula $\mathbf{F}$
\end_inset
is the deformation gradient.
The acceleration is given by the material time derivative of the velocity
\begin_inset Formula $\mathbf{v}$
\end_inset
,
evaluated either in a spatial or a material frame,
\begin_inset Formula
\begin{equation}
\mathbf{a}=\dot{\mathbf{v}}\label{eq:edy-acceleration}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Virtual Work
\end_layout
\begin_layout Standard
The virtual work for the domain
\begin_inset Formula $b$
\end_inset
is given by
\begin_inset Formula
\begin{equation}
\delta W=\int_{b}\delta\mathbf{v}\cdot\left(\divg\boldsymbol{\sigma}+\rho\left(\mathbf{b}-\mathbf{a}\right)\right)\,dv\,,\label{eq:edy-virtual-work}
\end{equation}
\end_inset
where
\begin_inset Formula $\delta\mathbf{v}$
\end_inset
is the virtual velocity.
Using the divergence theorem,
this virtual work may be expressed as the difference
\begin_inset Formula $\delta W=\delta W_{ext}-\delta W_{int}$
\end_inset
between external virtual work
\begin_inset Formula $\delta W_{ext}$
\end_inset
and internal virtual work
\begin_inset Formula $\delta W_{int}$
\end_inset
,
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta W_{int} & =\int_{b}\boldsymbol{\sigma}:\grad\delta\mathbf{v}\,dv+\int_{b}\delta\mathbf{v}\cdot\rho\mathbf{a}\,dv\,,\\
\delta W_{ext} & =\int_{\partial b}\delta\mathbf{v}\cdot\mathbf{t}\,da+\int_{b}\delta\mathbf{v}\cdot\rho\mathbf{b}\,dv\,,
\end{aligned}
\label{eq:edy-int-ext-virtual-work}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{t}=\boldsymbol{\sigma}\cdot\mathbf{n}$
\end_inset
is the traction on the boundary
\begin_inset Formula $\partial b$
\end_inset
.
\end_layout
\begin_layout Subsection
Generalized
\begin_inset Formula $\alpha-$
\end_inset
Method for Elastodynamics
\begin_inset CommandInset label
LatexCommand label
name "subsec:Generalized-alpha-elastodynamics"
\end_inset
\end_layout
\begin_layout Standard
In the generalized
\begin_inset Formula $\alpha-$
\end_inset
method,
we evaluate displacements and velocities at the intermediate time
\begin_inset Formula $t_{n+\alpha_{f}}=t_{n}+\alpha_{f}\left(t_{n+1}-t_{n}\right)$
\end_inset
,
where
\begin_inset Formula $\alpha_{f}$
\end_inset
is a user-defined parameter (
\begin_inset Formula $0<\alpha_{f}\le1$
\end_inset
),
such that
\begin_inset Formula
\begin{equation}
\begin{aligned}\boldsymbol{\chi}_{n+\alpha_{f}} & =\left(1-\alpha_{f}\right)\boldsymbol{\chi}_{n}+\alpha_{f}\boldsymbol{\chi}_{n+1}\,,\\
\mathbf{u}_{n+\alpha_{f}} & =\left(1-\alpha_{f}\right)\mathbf{u}_{n}+\alpha_{f}\mathbf{u}_{n+1}\,,\\
\mathbf{v}_{n+\alpha_{f}} & =\left(1-\alpha_{f}\right)\mathbf{v}_{n}+\alpha_{f}\mathbf{v}_{n+1}\,,
\end{aligned}
\label{eq:edy-motion-interpolation}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\chi}$
\end_inset
is the motion and
\begin_inset Formula $\mathbf{u}$
\end_inset
is the displacement.
In particular,
it follows that the deformation gradient and its determinant are given at the intermediate time by
\begin_inset Formula
\begin{equation}
\mathbf{F}_{n+\alpha_{f}}=\frac{\partial\boldsymbol{\chi}_{n+\alpha_{f}}}{\partial\mathbf{X}}=\left(1-\alpha_{f}\right)\mathbf{F}_{n}+\alpha_{f}\mathbf{F}_{n+1}\,,\label{eq:edy-mp-defgrad}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
J_{n+\alpha_{f}}=\det\mathbf{F}_{n+\alpha_{f}}\,.\label{eq:edy-mp-detJ}
\end{equation}
\end_inset
The material time derivative of
\begin_inset Formula $J_{n+\alpha_{f}}$
\end_inset
,
and the velocity gradient
\begin_inset Formula $\mathbf{L}_{n+\alpha_{f}}$
\end_inset
are normally evaluated as
\begin_inset Formula
\begin{equation}
\dot{J}_{n+\alpha_{f}}=J_{n+\alpha_{f}}\mathbf{F}_{n+\alpha_{f}}^{-T}:\Grad\mathbf{v}_{n+\alpha_{f}}\,,\label{eq:edy-Jdot-exact}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\mathbf{L}_{n+\alpha_{f}}=\Grad\mathbf{v}_{n+\alpha_{f}}\cdot\mathbf{F}_{n+\alpha_{f}}^{-1}\,.\label{eq:edy-L-exact}
\end{equation}
\end_inset
In practice however,
we get better numerical results when using
\begin_inset Formula
\begin{equation}
\dot{J}_{n+\alpha_{f}}=\frac{J_{n+1}-J_{n}}{\Delta t}\,,\label{eq:edy-Jdot-approx}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\mathbf{L}_{n+\alpha_{f}}=\frac{\mathbf{F}_{n+1}-\mathbf{F}_{n}}{\Delta t}\cdot\mathbf{F}_{n+\alpha_{f}}^{-1}\,.\label{eq:edy-L-approx}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
According to the generalized
\begin_inset Formula $-\alpha$
\end_inset
method,
we evaluate the velocity derivative at a different intermediate time
\begin_inset Formula $t_{n+\alpha_{m}}=t_{n}+\alpha_{m}\left(t_{n+1}-t_{n}\right)$
\end_inset
,
such that
\begin_inset Formula
\begin{equation}
\dot{\mathbf{v}}_{n+\alpha_{m}}=\left(1-\alpha_{m}\right)\dot{\mathbf{v}}_{n}+\alpha_{m}\dot{\mathbf{v}}_{n+1}\,.\label{eq:edy-vdot-interpolation}
\end{equation}
\end_inset
Since elastodynamics represent a second-order system of equations in time,
the parameters
\begin_inset Formula $\alpha_{f}$
\end_inset
and
\begin_inset Formula $\alpha_{m}$
\end_inset
are evaluated from a single parameter
\begin_inset Formula $\rho_{\infty}$
\end_inset
using
\begin_inset CommandInset citation
LatexCommand citep
key "Bazilevs08"
literal "true"
\end_inset
\begin_inset Formula
\begin{equation}
\alpha_{f}=\frac{1}{1+\rho_{\infty}}\,,\quad\alpha_{m}=\frac{2-\rho_{\infty}}{1+\rho_{\infty}}\,,\label{eq:ga-alphas-2-1}
\end{equation}
\end_inset
where
\begin_inset Formula $0\le\rho_{\infty}\le1$
\end_inset
.
This parameter is the spectral radius for an infinite time step,
which controls the amount of damping of high frequencies;
a value of zero produces the greatest amount of damping,
anihilating the highest frequency in one step,
whereas a value of one preserves the highest frequency.
\end_layout
\begin_layout Standard
To complete the integration scheme
\begin_inset CommandInset citation
LatexCommand citep
key "Jansen00"
literal "true"
\end_inset
,
we evaluate
\begin_inset Formula
\begin{equation}
\begin{aligned}\beta & =\frac{1}{4}\left(1+\alpha_{m}-\alpha_{f}\right)^{2}\\
\gamma & =\frac{1}{2}+\alpha_{m}-\alpha_{f}
\end{aligned}
\,,\label{eq:edy-Newmark}
\end{equation}
\end_inset
then we use the Newmark integration formulas (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Newmark-Integration"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
),
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{v}_{n+1} & =\mathbf{v}_{n}+\Delta t\left[\left(1-\gamma\right)\dot{\mathbf{v}}_{n}+\gamma\dot{\mathbf{v}}_{n+1}\right]\\
\mathbf{u}_{n+1} & =\mathbf{u}_{n}+\Delta t\mathbf{v}_{n}+\frac{\Delta t^{2}}{2}\left[\left(1-2\beta\right)\dot{\mathbf{v}}_{n}+2\beta\dot{\mathbf{v}}_{n+1}\right]\\
\dot{\mathbf{v}}_{n+1} & =\frac{1}{\beta\Delta t}\left(\frac{\mathbf{u}_{n+1}-\mathbf{u}_{n}}{\Delta t}-\mathbf{v}_{n}\right)+\left(1-\frac{1}{2\beta}\right)\dot{\mathbf{v}}_{n}
\end{aligned}
\,.\label{eq:edy-current-time}
\end{equation}
\end_inset
At the start of each time step,
we initialize the variables as follows:
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{u}_{n+1} & =\mathbf{u}_{n}\\
\dot{\mathbf{v}}_{n+1} & =\left(1-\frac{1}{2\beta}\right)\dot{\mathbf{v}}_{n}-\frac{1}{\beta\Delta t}\mathbf{v}_{n}\\
\mathbf{v}_{n+1} & =\left(1-\frac{\gamma}{\beta}\right)\mathbf{v}_{n}+\Delta t\left(1-\frac{\gamma}{2\beta}\right)\dot{\mathbf{v}}_{n}
\end{aligned}
\,.\label{eq:edy-initializations}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Linearization
\end_layout
\begin_layout Standard
The solution of the nonlinear equation
\begin_inset Formula $\delta W=0$
\end_inset
is obtained by linearizing this relation as
\begin_inset Formula
\begin{equation}
\delta W+D\delta W\left[\Delta\mathbf{u}\right]\approx0\,,\label{eq:edy-linearized-virtual-work}
\end{equation}
\end_inset
where the operator
\begin_inset Formula $D\delta W\left[\cdot\right]$
\end_inset
represents the directional derivative of
\begin_inset Formula $\delta W$
\end_inset
at
\begin_inset Formula $\mathbf{u}$
\end_inset
along an increment
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
of
\begin_inset Formula $\mathbf{u}_{n+1}$
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
.
According to the generalized
\begin_inset Formula $-\alpha$
\end_inset
method
\begin_inset CommandInset citation
LatexCommand cite
key "Jansen00"
literal "true"
\end_inset
,
the virtual work is evaluated using intermediate time step values,
at
\begin_inset Formula $t_{n+\alpha_{f}}$
\end_inset
for all parameters except
\begin_inset Formula $\dot{\mathbf{v}}$
\end_inset
,
which is evaluated at
\begin_inset Formula $t_{n+\alpha_{m}}$
\end_inset
.
It follows from these definitions that the linearizations of critical variables are given by
\begin_inset Formula
\begin{equation}
\begin{aligned}D\mathbf{u}\left[\Delta\mathbf{u}\right] & =\alpha_{f}\Delta\mathbf{u}\\
D\mathbf{F}\left[\Delta\mathbf{u}\right] & =\alpha_{f}\Grad\Delta\mathbf{u}\\
DJ\left[\Delta\mathbf{u}\right] & =\alpha_{f}J\left(\divg\Delta\mathbf{u}\right)\\
D\dot{J}\left[\Delta\mathbf{u}\right] & =D\left(J\mathbf{F}^{-T}:\Grad\mathbf{v}\right)\left[\Delta\mathbf{u}\right]\\
& =\alpha_{f}J\left[\left(\divg\mathbf{v}+\frac{\gamma}{\beta\Delta t}\right)\left(\divg\Delta\mathbf{u}\right)-\left(\grad\Delta\mathbf{u}\right)^{T}:\mathbf{L}\right]\\
D\mathbf{v}\left[\Delta\mathbf{u}\right] & =\frac{\alpha_{f}\gamma}{\beta\Delta t}\Delta\mathbf{u}\\
D\dot{\mathbf{v}}\left[\Delta\mathbf{u}\right] & =\frac{\alpha_{m}}{\beta\Delta t^{2}}\Delta\mathbf{u}
\end{aligned}
\,.\label{eq:edy-linearizations}
\end{equation}
\end_inset
To linearize the virtual work,
we need to express the integrals appearing in
\begin_inset Formula $\delta W_{int}$
\end_inset
and
\begin_inset Formula $\delta W_{ext}$
\end_inset
over the material frame of the finite element solid domain.
\end_layout
\begin_layout Subsubsection
Internal Work
\end_layout
\begin_layout Standard
The first term in the internal work becomes
\begin_inset Formula
\begin{equation}
\begin{aligned}\int_{b}\boldsymbol{\sigma}:\grad\delta\mathbf{v}\,dv & =\int_{B}\mathbf{F}\cdot\mathbf{S}:\Grad\delta\mathbf{v}\,dV\end{aligned}
\,,\label{eq:work-material-1-1}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{S}=J\cdot\mathbf{F}^{-1}\cdot\boldsymbol{\sigma}\cdot\mathbf{F}^{-T}$
\end_inset
is the second Piola-Kirchhoff stress for the solid material.
In general,
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
(and thus,
\begin_inset Formula $\mathbf{S}$
\end_inset
) is only a function of the solid strain,
such as the right Cauchy-Green tensor
\begin_inset Formula $\mathbf{C}=\mathbf{F}^{T}\cdot\mathbf{F}$
\end_inset
or the Green-Lagrange strain
\begin_inset Formula $\mathbf{E}=\left(\mathbf{C}-\mathbf{I}\right)/2$
\end_inset
.
\begin_inset Formula
\begin{equation}
D\mathbf{E}\left[\Delta\mathbf{u}\right]=\frac{\alpha_{f}}{2}\left(\Grad^{T}\Delta\mathbf{u}\cdot\mathbf{F}+\mathbf{F}^{T}\cdot\Grad\Delta\mathbf{u}\right)\,.\label{eq:edy-E-linearization}
\end{equation}
\end_inset
Therefore,
following the standard approach in solid mechanics,
the linearization of
\begin_inset Formula $\mathbf{S}$
\end_inset
is
\begin_inset Formula
\begin{equation}
\begin{aligned}D\mathbf{S}\left[\Delta\mathbf{u}\right] & =\frac{\partial\mathbf{S}}{\partial\mathbf{E}}:D\mathbf{E}\left[\Delta\mathbf{u}\right]\\
& =\alpha_{f}\boldsymbol{\mathbb{C}}:\frac{1}{2}\left(\Grad^{T}\Delta\mathbf{u}\cdot\mathbf{F}+\mathbf{F}^{T}\cdot\Grad\Delta\mathbf{u}\right)\\
& =\alpha_{f}\boldsymbol{\mathbb{C}}:\left(\mathbf{F}^{T}\oslash\mathbf{F}^{T}\right):\Delta\boldsymbol{\varepsilon}
\end{aligned}
\,,\label{eq:edy-solid-stress-linearization}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\mathbb{C}}$
\end_inset
is the material elasticity tensor.
Now,
the linearization of the first term in
\begin_inset Formula $\delta W_{int}$
\end_inset
is
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned} & D\left(\int_{B}\mathbf{F}\cdot\mathbf{S}:\Grad\delta\mathbf{v}\,dV\right)\left[\Delta\mathbf{u}\right]\\
& =\int_{v}\alpha_{f}\left(\grad\delta\mathbf{v}:\grad\Delta\mathbf{u}\cdot\boldsymbol{\sigma}+\grad\delta\mathbf{v}:\boldsymbol{\mathcal{C}}:\grad\Delta\mathbf{u}\right)\,dv
\end{aligned}
}\,.\label{eq:edy-Dint-1}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\mathcal{C}}$
\end_inset
is the spatial elasticity tensor.
Similarly,
the second term in
\begin_inset Formula $\delta W_{int}$
\end_inset
produces
\begin_inset Formula
\begin{equation}
\boxed{D\left(\int_{B}\delta\mathbf{v}\cdot\rho_{r}\mathbf{a}\,dV\right)\left[\Delta\mathbf{u}\right]=\int_{b}\delta\mathbf{v}\cdot\frac{\alpha_{m}}{\beta\Delta t^{2}}\rho\Delta\mathbf{u}\,dv}\,.\label{eq:edy-Dint-2}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
External Work
\end_layout
\begin_layout Standard
The linearization of the body force term is
\begin_inset Formula
\begin{equation}
D\left(\int_{B}\delta\mathbf{v}\cdot\rho_{r}\mathbf{b}\,dV\right)\left[\Delta\mathbf{u}\right]=\int_{b}\delta\mathbf{v}\cdot\alpha_{f}\rho\grad\mathbf{b}\cdot\Delta\mathbf{u}\,dv\,.\label{eq:edy-Dext}
\end{equation}
\end_inset
The linearization of the traction force term is
\begin_inset Formula
\begin{equation}
\begin{aligned} & D\left(\int_{\Gamma_{\eta}}\delta\mathbf{v}\cdot\mathbf{t}\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|\,d\eta^{1}d\eta^{2}\right)\left[\Delta\mathbf{u}\right]\\
& =\int_{\Gamma_{\eta}}\alpha_{f}\delta\mathbf{v}\cdot\left(\mathbf{t}\otimes\mathbf{n}\right)\cdot\left(\mathbf{g}_{1}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{2}}-\mathbf{g}_{2}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{1}}\right)\,d\eta^{1}d\eta^{2}\\
& +\int_{\Gamma_{\eta}}\delta\mathbf{v}\cdot D\mathbf{t}\left[\Delta\mathbf{u}\right]\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|\,d\eta^{1}d\eta^{2}
\end{aligned}
\,.\label{eq:edy-Dext-final}
\end{equation}
\end_inset
Note that
\begin_inset Formula $D\mathbf{t}\left[\Delta\mathbf{u}\right]$
\end_inset
depends on the nature of the surface traction.
For a prescribed traction we have
\begin_inset Formula $D\mathbf{t}\left[\Delta\mathbf{u}\right]=\mathbf{0}$
\end_inset
.
A contact analysis needs more elaborate derivations (not yet implemented as of FEBio 2.7).
In the above expression we used
\begin_inset Formula
\begin{equation}
\begin{aligned}D\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|\left[\Delta\mathbf{u}\right] & =\mathbf{n}\cdot D\left(\mathbf{g}_{1}\times\mathbf{g}_{2}\right)\left[\Delta\mathbf{u}\right]\\
& =\alpha_{f}\mathbf{n}\cdot\left(\mathbf{g}_{1}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{2}}-\mathbf{g}_{2}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{1}}\right)
\end{aligned}
\label{eq:edy-Dext-DA}
\end{equation}
\end_inset
where the unit outward normal is evaluated as
\begin_inset Formula
\begin{equation}
\mathbf{n}=\frac{\mathbf{g}_{1}\times\mathbf{g}_{2}}{\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|}\,.\label{eq:edy-unit-normal}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Discretization
\end_layout
\begin_layout Standard
We use the following interpolations:
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta\mathbf{v} & =\sum_{a}N_{a}\delta\mathbf{v}_{a} & \Delta\mathbf{u} & =\sum_{b}N_{b}\Delta\mathbf{u}_{b}\\
\grad\delta\mathbf{v} & =\sum_{a}\delta\mathbf{v}_{a}\otimes\grad N_{a} & \grad\Delta\mathbf{u} & =\sum_{b}\Delta\mathbf{u}_{b}\otimes\grad N_{b}\\
\divg\delta\mathbf{v} & =\sum_{a}\delta\mathbf{v}_{a}\cdot\grad N_{a} & \divg\Delta\mathbf{u} & =\sum_{b}\Delta\mathbf{u}_{b}\cdot\grad N_{b}
\end{aligned}
\,,\label{eq:interpolations-1}
\end{equation}
\end_inset
where
\begin_inset Formula $N_{a}\left(\eta^{1},\eta^{2},\eta^{3}\right)$
\end_inset
are shape functions of the element parametric coordinates
\begin_inset Formula $\left(\eta^{1},\eta^{2},\eta^{3}\right)$
\end_inset
.
Note that the
\begin_inset Formula $\grad\equiv\frac{\partial}{\partial\mathbf{x}}$
\end_inset
operator should be evaluated at
\begin_inset Formula $t_{n+\alpha_{f}}$
\end_inset
,
using
\begin_inset Formula $\mathbf{x}_{n+\alpha_{f}}$
\end_inset
.
For example,
in the case of a scalar function
\begin_inset Formula $f$
\end_inset
,
\begin_inset Formula
\[
\begin{aligned}\grad f & =\frac{\partial f}{\partial\mathbf{x}_{n+\alpha_{f}}}=\frac{\partial f}{\partial\eta^{i}}\mathbf{g}_{n+\alpha_{f}}^{i}\\
\mathbf{g}_{n+\alpha_{f}}^{i} & =\frac{\partial\eta^{i}}{\partial\mathbf{x}_{n+\alpha_{f}}}
\end{aligned}
\,,
\]
\end_inset
where the contravariant basis vectors
\begin_inset Formula $\mathbf{g}_{n+\alpha_{f}}^{i}$
\end_inset
may be evaluated from the covariant basis vectors
\begin_inset Formula
\[
\mathbf{g}_{i}^{n+\alpha_{f}}=\frac{\partial\mathbf{x}_{n+\alpha_{f}}}{\partial\eta^{i}}=\left(1-\alpha_{f}\right)\frac{\partial\mathbf{x}_{n}}{\partial\eta^{i}}+\alpha_{f}\frac{\partial\mathbf{x}_{n+1}}{\partial\eta^{i}}
\]
\end_inset
using
\begin_inset Formula $\mathbf{g}_{i}^{n+\alpha_{f}}\cdot\mathbf{g}_{n+\alpha_{f}}^{j}=\delta_{i}^{j}$
\end_inset
.
\end_layout
\begin_layout Standard
The discretization of the internal work produces
\begin_inset Formula
\begin{equation}
\delta W_{int}=\sum_{a}\delta\mathbf{v}_{a}\cdot\int_{b}\left(\mathbf{f}_{a}^{u}+\mathbf{f}_{a}^{\rho}\right)\,dv\,,\label{eq:edy-discretized-internal-work}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned}\mathbf{f}_{a}^{u} & =\boldsymbol{\sigma}\cdot\grad N_{a}\\
\mathbf{f}_{a}^{\rho} & =N_{a}\rho\mathbf{a}
\end{aligned}
}\,.\label{eq:edy-discretized-residuals}
\end{equation}
\end_inset
The discretization of the stress and elasticity terms in the internal work is
\begin_inset Formula
\[
\begin{aligned} & \int_{v}\alpha_{f}\left(\grad\delta\mathbf{v}:\grad\Delta\mathbf{u}\cdot\boldsymbol{\sigma}+\grad\delta\mathbf{v}:\boldsymbol{\mathcal{C}}:\grad\Delta\mathbf{u}\right)\,dv\\
& =\sum_{a}\delta\mathbf{v}_{a}\cdot\sum_{b}\int_{v}\mathbf{K}_{ab}\,dv\cdot\Delta\mathbf{u}_{b}
\end{aligned}
\,,
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{ab}=\alpha_{f}\left(\left(\grad N_{a}\cdot\boldsymbol{\sigma}\cdot\grad N_{b}\right)\mathbf{I}+\grad N_{a}\cdot\boldsymbol{\mathcal{C}}\cdot\grad N_{b}\right)}\,.\label{eq:edy-Wint-Kab}
\end{equation}
\end_inset
The discretization of the mass term in the internal work is
\begin_inset Formula
\[
\int_{b}\delta\mathbf{v}\cdot\frac{\alpha_{m}}{\beta\Delta t^{2}}\rho\Delta\mathbf{u}\,dv=\sum_{a}\delta\mathbf{v}_{a}\cdot\sum_{b}\int_{b}\mathbf{M}_{ab}\,dv\cdot\Delta\mathbf{u}_{b}\,,
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{M}_{ab}=\frac{\alpha_{m}}{\beta\Delta t^{2}}\rho N_{a}N_{b}\mathbf{I}}\,.\label{eq:edy-Wint-Mab}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
For the external work of body forces,
\begin_inset Formula
\[
\int_{b}\delta\mathbf{v}\cdot\rho\mathbf{b}\,dv=\sum_{a}\delta\mathbf{v}_{a}\cdot\int_{b}\mathbf{f}_{a}^{\mathbf{b}}\,dv
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{f}_{a}^{\mathbf{b}}=N_{a}\rho^{s}\mathbf{b}}\,,\label{eq:edy-Wext-fb}
\end{equation}
\end_inset
and
\begin_inset Formula
\[
\int_{b}\delta\mathbf{v}^{s}\cdot\alpha_{f}\rho^{s}\grad\mathbf{b}\cdot\Delta\mathbf{u}\,dv=\sum_{a}\delta\mathbf{v}_{a}^{s}\cdot\sum_{b}\int_{b}\mathbf{K}_{ab}^{\mathbf{b}}\,dv\cdot\Delta\mathbf{u}_{b}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{ab}^{\mathbf{b}}=\alpha_{f}N_{a}N_{b}\rho^{s}\grad\mathbf{b}}\,.\label{eq:edy-Wext-Kb}
\end{equation}
\end_inset
For prescribed tractions,
\begin_inset Formula
\[
\int_{\partial b}\delta\mathbf{v}^{s}\cdot\mathbf{t}^{s}\,da=\sum_{a}\delta\mathbf{v}_{a}^{s}\cdot\int_{\Gamma_{\eta}}\mathbf{f}_{a}^{t}\,d\eta^{1}d\eta^{2}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{f}_{a}^{t}=N_{a}\mathbf{t}^{s}\,\left|\mathbf{g}_{1}\times\mathbf{g}_{2}\right|}\,,\label{eq:edy-Wext-ft}
\end{equation}
\end_inset
and
\begin_inset Formula
\[
\begin{aligned} & \int_{\Gamma_{\eta}}\alpha_{f}\delta\mathbf{v}^{s}\cdot\left(\mathbf{t}^{s}\otimes\mathbf{n}\right)\cdot\left(\mathbf{g}_{1}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{2}}-\mathbf{g}_{2}\times\frac{\partial\Delta\mathbf{u}}{\partial\eta^{1}}\right)\,d\eta^{1}d\eta^{2}\\
& =\sum_{a}\delta\mathbf{v}_{a}^{s}\cdot\sum_{b}\int_{\Gamma_{\eta}}\mathbf{K}_{ab}^{t}\,d\eta^{1}d\eta^{2}\cdot\Delta\mathbf{u}_{b}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{ab}^{t}=\alpha_{f}N_{a}\left(\mathbf{t}^{s}\otimes\mathbf{n}\right)\cdot\left(\frac{\partial N_{b}}{\partial\eta^{2}}\hat{\mathbf{g}}_{1}-\frac{\partial N_{b}}{\partial\eta^{1}}\hat{\mathbf{g}}_{2}\right)}\,,\label{eq:edy-Wext-Kt}
\end{equation}
\end_inset
where
\begin_inset Formula $\hat{\mathbf{g}}$
\end_inset
is the skew-symmetric tensor whose dual vector is
\begin_inset Formula $\mathbf{g}$
\end_inset
.
\end_layout
\begin_layout Subsection
Energy-Momentum Conservation Scheme
\end_layout
\begin_layout Standard
The time discretization scheme may be selected in a manner that enforces linear and angular momentum,
and energy conservation over consecutive time steps
\begin_inset Formula $t_{n}$
\end_inset
and
\begin_inset Formula $t_{n+1}$
\end_inset
,
when boundary conditions and external loads are time-independent.
Based on the prior literature
\begin_inset CommandInset citation
LatexCommand citep
key "Simo92a,Gonzalez00,Puso02"
literal "true"
\end_inset
,
this momentum and energy conservation may be achieved by using the midpoint rule (
\begin_inset Formula $\rho_{\infty}=1$
\end_inset
,
leading to
\begin_inset Formula $\alpha_{f}=\alpha_{m}=\frac{1}{2}$
\end_inset
),
and evaluating the virtual work at
\begin_inset Formula $t_{n+\frac{1}{2}}$
\end_inset
.
However,
since the virtual work strictly enforces momentum balance only,
there is no guarantee that energy conservation will be satisfied as a result of time discretization.
Therefore,
we need to enforce a specific scheme to satisfy energy balance.
\end_layout
\begin_layout Subsubsection
Energy Balance
\end_layout
\begin_layout Standard
For an elastic solid,
in the absence of heat exchanges (i.e.,
in elastodynamics),
the equation of energy balance reduces
\begin_inset Formula
\begin{equation}
\rho\dot{\varepsilon}=\boldsymbol{\sigma}:\mathbf{D}\,,\label{eq:edy-energy-balance}
\end{equation}
\end_inset
where
\begin_inset Formula $\varepsilon$
\end_inset
is the specific internal energy and
\begin_inset Formula $\mathbf{D}$
\end_inset
is the rate of deformation tensor.
Recall that
\begin_inset Formula $\varepsilon=\psi+\theta\eta$
\end_inset
,
where
\begin_inset Formula $\psi$
\end_inset
is the specific free energy,
\begin_inset Formula $\theta$
\end_inset
is the absolute temperature and
\begin_inset Formula $\eta$
\end_inset
is the specific entropy.
Since
\begin_inset Formula $\eta=0$
\end_inset
in elasticity (due to the temperature remaining constant),
the above energy balance may be combined with the mass balance
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:edy-mass-balance"
nolink "false"
\end_inset
as
\begin_inset Formula
\begin{equation}
\rho\dot{\psi}=\frac{\rho_{r}}{J}\dot{\psi}=\boldsymbol{\sigma}:\mathbf{D}\,,\label{eq:edy-energy-r1}
\end{equation}
\end_inset
or
\begin_inset Formula
\begin{equation}
\dot{\Psi}_{r}=J\boldsymbol{\sigma}:\mathbf{D}\,,\label{eq:edy-energy-r2}
\end{equation}
\end_inset
where
\begin_inset Formula $\Psi_{r}=\rho_{r}\psi$
\end_inset
is the free energy density (per volume of the material in the reference configuration).
\end_layout
\begin_layout Standard
In our time integration scheme,
to satisfy energy balance,
this equation needs to be evaluated at
\begin_inset Formula $t_{n+\alpha_{f}}$
\end_inset
,
thus
\begin_inset Formula
\begin{equation}
\left(\dot{\Psi}_{r}\right)_{n+\alpha_{f}}=J_{n+\alpha_{f}}\boldsymbol{\sigma}_{n+\alpha_{f}}:\mathbf{D}_{n+\alpha_{f}}\,.\label{eq:edy-mp-energy}
\end{equation}
\end_inset
However,
the solution for
\begin_inset Formula $\boldsymbol{\sigma}_{n+\alpha_{f}}\equiv\boldsymbol{\sigma}\left(\mathbf{F}_{n+\alpha_{f}}\right)$
\end_inset
obtained from the momentum balance may not necessarity satisfy this equation.
Thus,
to satisfy energy balance over consecutive time steps,
we want to evaluate an effective stress
\begin_inset Formula $\tilde{\boldsymbol{\sigma}}_{n+\alpha_{f}}$
\end_inset
such that
\begin_inset Formula
\begin{equation}
J_{n+\alpha_{f}}\tilde{\boldsymbol{\sigma}}_{n+\alpha_{f}}:\mathbf{D}_{n+\alpha_{f}}=\frac{\left(\Psi_{r}\right)_{n+1}-\left(\Psi_{r}\right)_{n}}{\Delta t}\,.\label{eq:edy-energy-discretized}
\end{equation}
\end_inset
To find a solution for
\begin_inset Formula $\tilde{\boldsymbol{\sigma}}_{n+\alpha_{f}}$
\end_inset
,
we follow the procedure of Gonzalez
\begin_inset CommandInset citation
LatexCommand citep
key "Gonzalez00"
literal "true"
\end_inset
and let
\begin_inset Formula
\begin{equation}
\tilde{\boldsymbol{\sigma}}_{n+\alpha_{f}}=\boldsymbol{\sigma}_{n+\alpha_{f}}+f\mathbf{D}_{n+\alpha_{f}}\,,\label{eq:edy-eff-stress-model}
\end{equation}
\end_inset
where
\begin_inset Formula $f$
\end_inset
is some scalar function to be determined.
Substituting this relation,
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:edy-eff-stress-model"
nolink "false"
\end_inset
,
into the previous equation,
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:edy-energy-discretized"
nolink "false"
\end_inset
,
produces
\begin_inset Formula
\begin{equation}
f=\left(\frac{\left(\Psi_{r}\right)_{n+1}-\left(\Psi_{r}\right)_{n}}{J_{n+\alpha_{f}}^{s}\Delta t}-\boldsymbol{\sigma}_{n+\alpha_{f}}:\mathbf{D}_{n+\alpha_{f}}\right)\frac{1}{\mathbf{D}_{n+\alpha_{f}}:\mathbf{D}_{n+\alpha_{f}}}\,.\label{eq:edy-eff-stress-f}
\end{equation}
\end_inset
Hence,
the equation for an effective stress needed to satisfy energy balance between consecutive time steps is
\begin_inset Formula
\begin{equation}
\boxed{\tilde{\boldsymbol{\sigma}}_{n+\alpha_{f}}=\boldsymbol{\sigma}_{n+\alpha_{f}}+\left(\frac{\left(\Psi_{r}\right)_{n+1}-\left(\Psi_{r}\right)_{n}}{J_{n+\alpha_{f}}\Delta t}-\boldsymbol{\sigma}_{n+\alpha_{f}}:\mathbf{D}_{n+\alpha_{f}}\right)\frac{\mathbf{D}_{n+\alpha_{f}}}{\mathbf{D}_{n+\alpha_{f}}:\mathbf{D}_{n+\alpha_{f}}}}\,.\label{eq:edy-eff-stress-final}
\end{equation}
\end_inset
In the limit when
\begin_inset Formula $\mathbf{D}_{n+\alpha_{f}}:\mathbf{D}_{n+\alpha_{f}}=0$
\end_inset
,
we use
\begin_inset Formula $\tilde{\boldsymbol{\sigma}}_{n+\alpha_{f}}=\boldsymbol{\sigma}_{n+\alpha_{f}}$
\end_inset
.
Recall that this scheme produces conservation of linear and angular momentum and total energy only with
\begin_inset Formula $\rho_{\infty}=1$
\end_inset
,
or equivalently,
\begin_inset Formula $\alpha_{f}=\alpha_{m}=\frac{1}{2}$
\end_inset
,
\begin_inset Formula $\beta=\frac{1}{2}$
\end_inset
and
\begin_inset Formula $\gamma=1$
\end_inset
.
Therefore,
this effective stress calculation is only applied when the user employs
\begin_inset Formula $\rho_{\infty}=1$
\end_inset
.
\end_layout
\begin_layout Section
Rigid Body Dynamics
\end_layout
\begin_layout Subsection
Rigid Body Rotation
\begin_inset CommandInset label
LatexCommand label
name "subsec:Rigid-Body-Rotation"
\end_inset
\end_layout
\begin_layout Subsubsection
Exponential Map
\begin_inset CommandInset label
LatexCommand label
name "subsec:Exponential-Map"
\end_inset
\end_layout
\begin_layout Standard
Conventionally,
the rigid body rotation tensor
\begin_inset Formula $\boldsymbol{\Lambda}$
\end_inset
corresponding to a rotation of angle
\begin_inset Formula $\chi$
\end_inset
about the unit vector
\begin_inset Formula $\mathbf{n}$
\end_inset
may be expressed in terms of the vector
\begin_inset Formula $\boldsymbol{\chi}=\chi\mathbf{n}$
\end_inset
as
\begin_inset Formula
\begin{equation}
\boldsymbol{\Lambda}\left(\boldsymbol{\chi}\right)=\cos\chi\,\mathbf{I}-\sin\chi\,\boldsymbol{\mathcal{E}}\cdot\mathbf{n}+\left(1-\cos\chi\right)\mathbf{n}\otimes\mathbf{n}\label{eq:rbr-rotation-tensor}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\mathcal{E}}$
\end_inset
is the third-order permutation pseudo-tensor with Cartesian components
\begin_inset Formula $\varepsilon_{ijk}$
\end_inset
.
Making use of the trigonometric identity,
\begin_inset Formula
\begin{equation}
\cos\chi=1-2\sin^{2}\frac{1}{2}\chi\,,\label{eq:rbr-identity-1}
\end{equation}
\end_inset
this expression may be rearranged as
\begin_inset Formula
\begin{equation}
\boldsymbol{\Lambda}\left(\boldsymbol{\chi}\right)=\mathbf{I}-\frac{\sin\chi}{\chi}\,\boldsymbol{\mathcal{E}}\cdot\boldsymbol{\chi}+\frac{2}{\chi^{2}}\sin^{2}\frac{1}{2}\chi\left(\boldsymbol{\mathcal{E}}\cdot\boldsymbol{\chi}\right)^{2}\,,\label{eq:rbr-rotation-tensor-alt-1}
\end{equation}
\end_inset
where we have made use of the identity
\begin_inset Formula
\begin{equation}
\left(\boldsymbol{\mathcal{E}}\cdot\boldsymbol{\chi}\right)^{2}=\boldsymbol{\chi}\otimes\boldsymbol{\chi}-\chi^{2}\mathbf{I}\,.\label{eq:rbr-identity-2}
\end{equation}
\end_inset
Letting
\begin_inset Formula
\begin{equation}
\hat{\boldsymbol{\chi}}=-\boldsymbol{\mathcal{E}}\cdot\boldsymbol{\chi}\label{eq:rbr-antisymmetric-tensor}
\end{equation}
\end_inset
represent the antisymmetric tensor with axial vector
\begin_inset Formula $\boldsymbol{\chi}$
\end_inset
,
\begin_inset Formula $\boldsymbol{\Lambda}\left(\boldsymbol{\chi}\right)$
\end_inset
may now be represented as
\begin_inset Formula
\begin{equation}
\boldsymbol{\Lambda}\left(\boldsymbol{\chi}\right)\equiv\exp\left[\hat{\boldsymbol{\chi}}\right]=\mathbf{I}+\frac{\sin\chi}{\chi}\hat{\boldsymbol{\chi}}+\frac{2}{\chi^{2}}\sin^{2}\left(\frac{1}{2}\chi\right)\,\hat{\boldsymbol{\chi}}^{2}\,,\label{eq:rbr-rotation-tensor-alt-2}
\end{equation}
\end_inset
where
\begin_inset Formula $\exp\left[\hat{\boldsymbol{\chi}}\right]$
\end_inset
is known as the
\emph on
exponential map
\emph default
.
Thus,
the exponential map provides the rotation tensor for a rotation
\begin_inset Formula $\chi$
\end_inset
about the unit vector
\begin_inset Formula $\mathbf{n}$
\end_inset
.
Note that
\begin_inset Formula $\boldsymbol{\Lambda}\cdot\boldsymbol{\chi}=\boldsymbol{\chi}$
\end_inset
,
since
\begin_inset Formula $\hat{\boldsymbol{\chi}}\cdot\boldsymbol{\chi}=\boldsymbol{\chi}\times\boldsymbol{\chi}=\mathbf{0}$
\end_inset
.
\end_layout
\begin_layout Standard
Let
\begin_inset Formula $\mathbf{Q}$
\end_inset
be any orthogonal transformation,
then
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{Q}\cdot\exp\left[\hat{\boldsymbol{\chi}}\right]\cdot\mathbf{Q}^{T} & =\mathbf{I}+\frac{\sin\chi}{\chi}\mathbf{Q}\cdot\hat{\boldsymbol{\chi}}\cdot\mathbf{Q}^{T}+\frac{2}{\chi^{2}}\sin^{2}\frac{1}{2}\chi\left(\mathbf{Q}\cdot\hat{\boldsymbol{\chi}}\cdot\mathbf{Q}^{T}\right)^{2}\\
& =\exp\left[\mathbf{Q}\cdot\hat{\boldsymbol{\chi}}\cdot\mathbf{Q}^{T}\right]\equiv\exp\left[\hat{\boldsymbol{\theta}}\right]
\end{aligned}
\label{eq:rbr-orthogonal-transformation}
\end{equation}
\end_inset
where
\begin_inset Formula $\hat{\boldsymbol{\theta}}=\mathbf{Q}\cdot\hat{\boldsymbol{\chi}}\cdot\mathbf{Q}^{T}$
\end_inset
and its corresponding axial vector is
\begin_inset Formula $\boldsymbol{\theta}=\mathbf{Q}\cdot\boldsymbol{\chi}$
\end_inset
,
implying that
\begin_inset Formula $\theta=\chi$
\end_inset
.
This property of the exponential map is used in the next derivation.
\end_layout
\begin_layout Standard
Consider a vector
\begin_inset Formula $\mathbf{Z}$
\end_inset
in the reference configuration of a rigid body.
Upon rigid body rotation,
this vector is currently at
\begin_inset Formula
\begin{equation}
\mathbf{z}\left(t\right)=\boldsymbol{\Lambda}\left(t\right)\cdot\mathbf{Z}\,.\label{eq:rbr-rotation-t}
\end{equation}
\end_inset
The corresponding axial vector of
\begin_inset Formula $\boldsymbol{\Lambda}\left(t\right)$
\end_inset
is
\begin_inset Formula $\boldsymbol{\chi}\left(t\right)$
\end_inset
.
At a subsequent time
\begin_inset Formula $t^{\prime}$
\end_inset
,
we would similarly have
\begin_inset Formula
\begin{equation}
\mathbf{z}\left(t^{\prime}\right)=\boldsymbol{\Lambda}\left(t^{\prime}\right)\cdot\mathbf{Z}=\exp\left[\hat{\boldsymbol{\theta}}\right]\cdot\boldsymbol{\Lambda}\left(t\right)\cdot\mathbf{Z}\,,\label{eq:rbr-orthogonal-rotation-t-prime}
\end{equation}
\end_inset
where here,
\begin_inset Formula $\boldsymbol{\theta}$
\end_inset
is the incremental (finite) rotation from
\begin_inset Formula $t$
\end_inset
to
\begin_inset Formula $t^{\prime}$
\end_inset
.
Alternatively,
we may choose to write
\begin_inset Formula
\begin{equation}
\mathbf{z}\left(t^{\prime}\right)=\boldsymbol{\Lambda}\left(t^{\prime}\right)\cdot\mathbf{Z}=\boldsymbol{\Lambda}\left(t\right)\cdot\exp\left[\hat{\boldsymbol{\Theta}}\right]\cdot\mathbf{Z}\,,\label{eq:rbr-incremental-finite-rotation}
\end{equation}
\end_inset
such that
\begin_inset Formula
\begin{equation}
\begin{aligned}\boldsymbol{\Lambda}\left(t^{\prime}\right) & =\exp\left[\hat{\boldsymbol{\theta}}\right]\cdot\boldsymbol{\Lambda}\left(t\right)\\
& =\boldsymbol{\Lambda}\left(t\right)\cdot\exp\left[\hat{\boldsymbol{\Theta}}\right]
\end{aligned}
\,,\label{eq:rbr-material-spatial-increments}
\end{equation}
\end_inset
implying that
\begin_inset Formula
\begin{equation}
\begin{aligned}\exp\left[\hat{\boldsymbol{\theta}}\right] & =\exp\left[\boldsymbol{\Lambda}\left(t\right)\cdot\hat{\boldsymbol{\Theta}}\cdot\boldsymbol{\Lambda}^{T}\left(t\right)\right]\\
\boldsymbol{\theta} & =\boldsymbol{\Lambda}\left(t\right)\cdot\boldsymbol{\Theta}
\end{aligned}
\,.\label{eq:rbr-material-spatial-redux}
\end{equation}
\end_inset
Note from these relations that
\begin_inset Formula $\theta=\Theta$
\end_inset
.
Thus,
\begin_inset Formula $\boldsymbol{\Theta}$
\end_inset
is the material representation of the incremental rotation from
\begin_inset Formula $t$
\end_inset
to
\begin_inset Formula $t^{\prime}$
\end_inset
,
while
\begin_inset Formula $\boldsymbol{\theta}$
\end_inset
is the corresponding spatial representation.
\end_layout
\begin_layout Subsubsection
Cayley Transform
\begin_inset CommandInset label
LatexCommand label
name "subsec:Cayley-Transform"
\end_inset
\end_layout
\begin_layout Standard
An alternative to the exponential map is the Cayley transform,
\begin_inset Formula
\begin{equation}
\boldsymbol{\Lambda}\left(\boldsymbol{\chi}\right)=\cay\left[\hat{\boldsymbol{\chi}}\right]=\mathbf{I}+\frac{2}{1+\left(\frac{1}{2}\chi\right)^{2}}\left(\frac{1}{2}\hat{\boldsymbol{\chi}}+\frac{1}{4}\hat{\boldsymbol{\chi}}^{2}\right)\label{eq:rbr-Cayley-transform}
\end{equation}
\end_inset
which is a second order approximation to the exponential map.
This formula is a correction to that appearing in
\begin_inset CommandInset citation
LatexCommand citep
key "Puso02"
literal "true"
\end_inset
(which has
\begin_inset Formula $\frac{1}{2}\chi^{2}$
\end_inset
in the denominator).
According to Puso
\begin_inset CommandInset citation
LatexCommand citep
key "Puso02"
literal "true"
\end_inset
,
the Cayley transform must be used to enforce conservation of momentum and energy in a midpoint rule discretization scheme,
whenever the rigid body is connected to a deformable body,
or whenever two rigid bodies are connected by a joint.
Comparing the above expression to the exponential map
\begin_inset Formula $\exp\left[\hat{\boldsymbol{\theta}}\right]$
\end_inset
using
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rbr-rotation-tensor-alt-2"
nolink "false"
\end_inset
,
we find that
\begin_inset Formula $\boldsymbol{\chi}$
\end_inset
and
\begin_inset Formula $\boldsymbol{\theta}$
\end_inset
are related via
\begin_inset Formula
\begin{equation}
\boldsymbol{\chi}=2\tan\frac{\theta}{2}\,\mathbf{n}\,.\label{eq:exponential-Cayley-relation}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
Linearization Along Rotational Increment
\begin_inset CommandInset label
LatexCommand label
name "subsec:Linearization-Along-Rotational"
\end_inset
\end_layout
\begin_layout Standard
Let
\begin_inset Formula $\boldsymbol{\theta}$
\end_inset
represent a spatial rotational increment,
such that a rotation tensor compounded by an infinitesimal incremental rotation is given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\Lambda}_{\varepsilon}=\cay\left[\varepsilon\hat{\boldsymbol{\theta}}\right]\cdot\boldsymbol{\Lambda}\,.\label{eq:rbr-spatial-rotation-increment}
\end{equation}
\end_inset
Using the Cayley transform for illustration,
the linearization of
\begin_inset Formula $\boldsymbol{\Lambda}$
\end_inset
along the increment
\begin_inset Formula $\boldsymbol{\theta}$
\end_inset
is obtained from
\begin_inset Formula
\begin{equation}
\begin{aligned}D\boldsymbol{\Lambda}\left[\boldsymbol{\theta}\right] & =\left.\frac{d}{d\varepsilon}\right|_{\varepsilon=0}\cay\left[\varepsilon\hat{\boldsymbol{\theta}}\right]\cdot\boldsymbol{\Lambda}\\
& =\left.\frac{d}{d\varepsilon}\right|_{\varepsilon=0}\left(\mathbf{I}+\frac{2}{1+\frac{1}{4}\varepsilon^{2}\theta^{2}}\left(\frac{1}{2}\varepsilon\hat{\boldsymbol{\theta}}+\frac{1}{4}\varepsilon^{2}\hat{\boldsymbol{\theta}}^{2}\right)\right)\cdot\boldsymbol{\Lambda}\\
& =\hat{\boldsymbol{\theta}}\cdot\boldsymbol{\Lambda}
\end{aligned}
\,.\label{eq:rbr-spatial-rotation-linearization}
\end{equation}
\end_inset
The same result may be obtained with the exponential map.
Similarly,
using an infinitesimal material rotational increment such that
\begin_inset Formula $\boldsymbol{\Lambda}_{\varepsilon}=\boldsymbol{\Lambda}\cdot\cay\left[\varepsilon\hat{\boldsymbol{\Theta}}\right]$
\end_inset
,
we may find
\begin_inset Formula
\begin{equation}
D\boldsymbol{\Lambda}\left[\boldsymbol{\Theta}\right]=\boldsymbol{\Lambda}\cdot\hat{\boldsymbol{\Theta}}\,.\label{eq:rbr-material-rotation-increment}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
General Rigid Body Motion
\begin_inset CommandInset label
LatexCommand label
name "subsec:General-Rigid-Body"
\end_inset
\end_layout
\begin_layout Standard
If the point
\begin_inset Formula $\mathbf{x}$
\end_inset
is connected to a rigid body,
its motion is given by
\begin_inset Formula
\begin{equation}
\mathbf{x}=\mathbf{r}\left(t\right)+\boldsymbol{\Lambda}\left(t\right)\cdot\mathbf{Z}=\mathbf{r}\left(t\right)+\mathbf{z}\left(t\right)\label{eq:rbm-position}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{r}\left(t\right)$
\end_inset
is the position of the rigid body center of mass and
\begin_inset Formula $\boldsymbol{\Lambda}\left(t\right)$
\end_inset
is the body's rotation tensor,
which satisfies
\begin_inset Formula $\boldsymbol{\Lambda}\left(t_{0}\right)=\mathbf{I}$
\end_inset
at the initial time
\begin_inset Formula $t_{0}$
\end_inset
;
here,
\begin_inset Formula $\mathbf{z}\left(t\right)=\boldsymbol{\Lambda}\left(t\right)\cdot\mathbf{Z}$
\end_inset
is the distance of the point from the body's center of mass,
and
\begin_inset Formula $\mathbf{X}=\mathbf{r}\left(t_{0}\right)+\mathbf{Z}$
\end_inset
is the initial position.
The velocity of that point is
\begin_inset Formula
\begin{equation}
\begin{aligned}\dot{\mathbf{x}} & =\dot{\mathbf{r}}\left(t\right)+\dot{\boldsymbol{\Lambda}}\left(t\right)\cdot\mathbf{Z}\end{aligned}
\,,\label{eq:rbm-velocity}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\dot{\boldsymbol{\Lambda}}\left(t\right)=\hat{\boldsymbol{\omega}}\left(t\right)\cdot\boldsymbol{\Lambda}\left(t\right)=\boldsymbol{\Lambda}\left(t\right)\cdot\hat{\mathbf{W}}\left(t\right)\,.\label{eq:rbm-lambda-dot}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\hat{\boldsymbol{\omega}}$
\end_inset
is an antisymmetric tensor with axial vector
\begin_inset Formula $\boldsymbol{\omega}$
\end_inset
which represents the spatial angular velocity vector;
similarly,
\begin_inset Formula $\hat{\mathbf{W}}$
\end_inset
is an antisymmetric tensor with axial vector
\begin_inset Formula $\mathbf{W}$
\end_inset
(the material angular velocity),
such that
\begin_inset Formula $\boldsymbol{\omega}=\boldsymbol{\Lambda}\cdot\mathbf{W}$
\end_inset
and
\begin_inset Formula
\begin{equation}
\hat{\boldsymbol{\omega}}=\boldsymbol{\Lambda}\cdot\hat{\mathbf{W}}\cdot\boldsymbol{\Lambda}^{T}\,.\label{eq:rbm-material-spatial-angular-velocity}
\end{equation}
\end_inset
We may now rewrite
\begin_inset Formula
\begin{equation}
\begin{aligned}\dot{\mathbf{x}} & =\dot{\mathbf{r}}\left(t\right)+\hat{\boldsymbol{\omega}}\left(t\right)\cdot\mathbf{z}\left(t\right)\\
& =\dot{\mathbf{r}}\left(t\right)+\boldsymbol{\Lambda}\left(t\right)\cdot\hat{\mathbf{W}}\left(t\right)\cdot\mathbf{Z}
\end{aligned}
\,,\label{eq:rbm-rigid-point-velocity}
\end{equation}
\end_inset
so that the acceleration of the point is
\begin_inset Formula
\begin{equation}
\begin{aligned}\ddot{\mathbf{x}} & =\ddot{\mathbf{r}}\left(t\right)+\left(\hat{\boldsymbol{\alpha}}\left(t\right)+\hat{\boldsymbol{\omega}}^{2}\left(t\right)\right)\cdot\mathbf{z}\\
& =\ddot{\mathbf{r}}\left(t\right)+\boldsymbol{\Lambda}\left(t\right)\cdot\left(\hat{\mathbf{A}}\left(t\right)+\hat{\mathbf{W}}^{2}\left(t\right)\right)\cdot\mathbf{Z}
\end{aligned}
\,,\label{eq:rbm-rigid-point-acceleration}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\alpha}=\dot{\boldsymbol{\omega}}=\boldsymbol{\Lambda}\cdot\mathbf{A}$
\end_inset
is the spatial angular acceleration vector,
\begin_inset Formula $\mathbf{A}=\dot{\mathbf{W}}$
\end_inset
is the material angular acceleration vector.
As shown below,
the time discretization is performed in the material frame.
\end_layout
\begin_layout Subsection
Rigid Body Momentum Balance
\begin_inset CommandInset label
LatexCommand label
name "subsec:Rigid-Body-Momentum"
\end_inset
\end_layout
\begin_layout Standard
For a rigid body,
the conservation of linear momentum is given by
\begin_inset Formula
\begin{equation}
\frac{d}{dt}\left(m\dot{\mathbf{r}}\right)=\dot{\mathbf{p}}=\mathbf{f}^{ext}\left(t\right)\label{eq:rbm-linear-momentum-balance}
\end{equation}
\end_inset
where
\begin_inset Formula $m$
\end_inset
is the mass of the rigid body,
\begin_inset Formula $\dot{\mathbf{r}}$
\end_inset
is the velocity of the center of mass,
\begin_inset Formula $\mathbf{p}=m\dot{\mathbf{r}}$
\end_inset
is the linear momentum,
and
\begin_inset Formula $\mathbf{f}^{ext}\left(t\right)$
\end_inset
represents the sum of external forces acting on the body.
Here,
\begin_inset Formula $m$
\end_inset
is constant for a rigid body.
There are typically four contributions to
\begin_inset Formula $\mathbf{f}^{ext}\left(t\right)$
\end_inset
:
Body forces
\begin_inset Formula $\mathbf{f}_{b}^{ext}\left(t\right)=m\mathbf{b}\left(t\right)$
\end_inset
(where
\begin_inset Formula $\mathbf{b}$
\end_inset
represents the body force per mass,
such as gravitational acceleration),
other user-prescribed forces
\begin_inset Formula $\mathbf{f}_{p}^{ext}\left(t\right)$
\end_inset
(which act at the center of mass),
forces
\begin_inset Formula $\mathbf{f}_{c}^{ext}\left(t\right)$
\end_inset
produced by rigid body connectors (such as revolute and prismatic joints,
or contact forces),
and forces
\begin_inset Formula $\mathbf{f}_{f}^{ext}\left(t\right)$
\end_inset
produced by rigid-flexible connections (where deformable materials interface with the rigid body),
in which case
\begin_inset Formula $\mathbf{f}_{f}^{ext}$
\end_inset
is evaluated from the traction
\begin_inset Formula $\mathbf{t}=\boldsymbol{\sigma}\cdot\mathbf{n}$
\end_inset
over that interface,
with
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
representing the stress in the deformable material.
\end_layout
\begin_layout Standard
The conservation of angular momentum is similarly given by
\begin_inset Formula
\begin{equation}
\frac{d}{dt}\left(\mathbf{J}\cdot\boldsymbol{\omega}\right)=\dot{\mathbf{h}}=\boldsymbol{\omega}\times\mathbf{h}+\mathbf{J}\cdot\boldsymbol{\alpha}=\mathbf{m}^{ext}\left(t\right)\label{eq:rbm-angular-momentum-balance}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{J}$
\end_inset
is the rigid body mass moment of inertia about its center of mass,
\begin_inset Formula $\boldsymbol{\omega}$
\end_inset
is its angular velocity,
\begin_inset Formula $\mathbf{h}=\mathbf{J}\cdot\boldsymbol{\omega}$
\end_inset
is its angular momentum,
\begin_inset Formula $\boldsymbol{\alpha}=\dot{\boldsymbol{\omega}}$
\end_inset
is the rigid body angular acceleration,
and
\begin_inset Formula $\mathbf{m}^{ext}\left(t\right)$
\end_inset
is the sum of moments acting on the rigid body.
External moments include contributions from user-prescribed moments/torques
\begin_inset Formula $\mathbf{m}_{p}^{ext}\left(t\right)$
\end_inset
,
from rigid body connectors,
\begin_inset Formula $\mathbf{m}_{c}^{ext}\left(t\right)=\mathbf{z}_{c}\left(t\right)\times\mathbf{f}_{c}^{ext}\left(t\right)$
\end_inset
where
\begin_inset Formula $\mathbf{z}_{c}\left(t\right)$
\end_inset
is the connector insertion relative to the rigid body center of mass,
and rigid-flexible interfaces,
\begin_inset Formula $\mathbf{m}_{f}^{ext}\left(t\right)=\mathbf{z}_{f}\left(t\right)\times\mathbf{f}_{f}^{ext}\left(t\right)$
\end_inset
where
\begin_inset Formula $\mathbf{z}_{f}\left(t\right)$
\end_inset
is the position of the interface point relative to the rigid body center of mass.
Since body forces
\begin_inset Formula $\mathbf{f}_{b}^{ext}$
\end_inset
and user-prescribed forces
\begin_inset Formula $\mathbf{f}_{p}^{ext}$
\end_inset
act at the center of mass,
they do not contribute to
\begin_inset Formula $\mathbf{m}^{ext}\left(t\right)$
\end_inset
.
Note that
\begin_inset Formula
\begin{equation}
\mathbf{J}\left(t\right)=\boldsymbol{\Lambda}\left(t\right)\cdot\mathbf{J}_{r}\cdot\boldsymbol{\Lambda}^{T}\left(t\right)\,,\label{eq:rbm-moi-rotation}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{J}_{r}$
\end_inset
is the mass moment of inertia about the center of mass in the reference configuration and
\begin_inset Formula $\boldsymbol{\Lambda}\left(t\right)$
\end_inset
is the rotation tensor representing the orientation of the rigid body at time
\begin_inset Formula $t$
\end_inset
,
with
\begin_inset Formula $\boldsymbol{\Lambda}=\mathbf{I}$
\end_inset
in the reference configuration.
\end_layout
\begin_layout Standard
The virtual work statement is given by
\begin_inset Formula
\begin{equation}
\delta W=\delta\mathbf{r}\cdot\left(\mathbf{f}^{ext}\left(t\right)-\dot{\mathbf{p}}\right)+\delta\boldsymbol{\theta}\cdot\left(\mathbf{m}^{ext}\left(t\right)-\dot{\mathbf{h}}\right)\,,\label{eq:rbm-virtual-work}
\end{equation}
\end_inset
where
\begin_inset Formula $\delta\mathbf{r}$
\end_inset
is the virtual velocity of the center of mass and
\begin_inset Formula $\delta\boldsymbol{\theta}$
\end_inset
is the virtual angular velocity of the rigid body.
\end_layout
\begin_layout Subsection
Time Discretization
\begin_inset CommandInset label
LatexCommand label
name "subsec:Time-Discretization"
\end_inset
\end_layout
\begin_layout Subsubsection
Newmark Integration for Rigid Body Dynamics
\begin_inset CommandInset label
LatexCommand label
name "subsec:Newmark-Integration-RBD"
\end_inset
\end_layout
\begin_layout Standard
Let
\begin_inset Formula $t_{n}$
\end_inset
and
\begin_inset Formula $t_{n+1}$
\end_inset
represent consecutive time points.
According to the Newmark integration scheme,
the rigid body center of mass velocity and acceleration at
\begin_inset Formula $t_{n+1}$
\end_inset
may be expressed in terms of their values at
\begin_inset Formula $t_{n}$
\end_inset
as
\begin_inset Formula
\begin{equation}
\begin{aligned}\dot{\mathbf{r}}_{n+1} & =\dot{\mathbf{r}}_{n}+\Delta t\left[\left(1-\gamma\right)\ddot{\mathbf{r}}_{n}+\gamma\ddot{\mathbf{r}}_{n+1}\right]\\
\ddot{\mathbf{r}}_{n+1} & =\frac{1}{\beta\Delta t}\left[\frac{1}{\Delta t}\left(\mathbf{r}_{n+1}-\mathbf{r}_{n}\right)-\dot{\mathbf{r}}_{n}\right]+\left(1-\frac{1}{2\beta}\right)\ddot{\mathbf{r}}_{n}
\end{aligned}
\,,\label{eq:td-Newmark-COM}
\end{equation}
\end_inset
where
\begin_inset Formula $\beta$
\end_inset
and
\begin_inset Formula $\gamma$
\end_inset
are Newmark parameters that satisfy
\begin_inset Formula $0\le2\beta\le1$
\end_inset
and
\begin_inset Formula $0\le\gamma\le1$
\end_inset
.
\end_layout
\begin_layout Standard
Let the rigid body rotation tensor
\begin_inset Formula $\boldsymbol{\Lambda}\left(t\right)$
\end_inset
be expressed as
\begin_inset Formula $\boldsymbol{\Lambda}\left(t\right)=\exp\left[\boldsymbol{\xi}\left(t\right)\right]$
\end_inset
,
and
\begin_inset Formula $\boldsymbol{\xi}\left(t\right)$
\end_inset
is the material rotation of the rigid body from its reference configuration.
Thus,
\begin_inset Formula $\boldsymbol{\Lambda}_{n}=\exp\left[\boldsymbol{\xi}_{n}\right]$
\end_inset
and
\begin_inset Formula $\boldsymbol{\Lambda}_{n+1}=\exp\left[\boldsymbol{\xi}_{n+1}\right]$
\end_inset
respectively represent the rigid body rotation tensors at
\begin_inset Formula $t_{n}$
\end_inset
and
\begin_inset Formula $t_{n+1}$
\end_inset
.
(In practice,
\begin_inset Formula $\boldsymbol{\xi}$
\end_inset
is stored as a quaternion to facilitate the multiplication of rotation tensors.) These tensors are related by the incremental spatial rotation
\begin_inset Formula $\boldsymbol{\theta}$
\end_inset
or material rotation
\begin_inset Formula $\boldsymbol{\Theta}$
\end_inset
from
\begin_inset Formula $t_{n}$
\end_inset
to
\begin_inset Formula $t_{n+1}$
\end_inset
according to
\begin_inset Formula
\begin{equation}
\boldsymbol{\Lambda}_{n+1}=\cay\left[\boldsymbol{\theta}\right]\cdot\boldsymbol{\Lambda}_{n}=\boldsymbol{\Lambda}_{n}\cdot\cay\left[\boldsymbol{\Theta}\right]\,.\label{eq:td-incremental-rotation}
\end{equation}
\end_inset
Here,
it should be understood that the material frame for this incremental rotation is the configuration at time
\begin_inset Formula $t_{n}$
\end_inset
,
while the spatial frame is the configuration at
\begin_inset Formula $t_{n+1}$
\end_inset
.
For rotational motion,
the Newmark scheme is applied in the material frame as
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{W}_{n+1} & =\frac{\gamma}{\beta\Delta t}\boldsymbol{\Theta}-\mathbf{W}_{n}+\left(2-\frac{\gamma}{\beta}\right)\left(\mathbf{W}_{n}+\frac{\Delta t}{2}\mathbf{A}_{n}\right)\\
\mathbf{A}_{n+1} & =\frac{1}{\gamma\Delta t}\left(\mathbf{W}_{n+1}-\mathbf{W}_{n}\right)+\left(1-\frac{1}{\gamma}\right)\mathbf{A}_{n}\\
& =\frac{1}{\beta\Delta t}\left(\frac{1}{\Delta t}\boldsymbol{\Theta}-\mathbf{W}_{n}\right)+\left(1-\frac{1}{2\beta}\right)\mathbf{A}_{n}
\end{aligned}
\,.\label{eq:td-Newmark-mrot}
\end{equation}
\end_inset
Then,
using the relations
\begin_inset Formula $\boldsymbol{\omega}=\boldsymbol{\Lambda}\cdot\mathbf{W}$
\end_inset
and
\begin_inset Formula $\boldsymbol{\alpha}=\boldsymbol{\Lambda}\cdot\mathbf{A}$
\end_inset
at
\begin_inset Formula $t_{n}$
\end_inset
and
\begin_inset Formula $t_{n+1}$
\end_inset
,
along with
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:td-incremental-rotation"
nolink "false"
\end_inset
,
we may express these relations in the spatial frame as
\begin_inset Formula
\begin{equation}
\begin{aligned}\boldsymbol{\omega}_{n+1} & =\cay\left[\boldsymbol{\theta}\right]\cdot\left(\frac{\gamma}{\beta\Delta t}\boldsymbol{\theta}-\boldsymbol{\omega}_{n}+\left(2-\frac{\gamma}{\beta}\right)\left(\boldsymbol{\omega}_{n}+\frac{\Delta t}{2}\boldsymbol{\alpha}_{n}\right)\right)\\
\boldsymbol{\alpha}_{n+1} & =\cay\left[\boldsymbol{\theta}\right]\cdot\left(\frac{1}{\beta\Delta t}\left(\frac{1}{\Delta t}\boldsymbol{\theta}-\boldsymbol{\omega}_{n}\right)+\left(1-\frac{1}{2\beta}\right)\boldsymbol{\alpha}_{n}\right)
\end{aligned}
\,.\label{eq:td-Newmark-srot}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
In a nonlinear solution scheme we solve for
\begin_inset Formula $\boldsymbol{\Theta}$
\end_inset
incrementally.
According to
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rbr-material-rotation-increment"
nolink "false"
\end_inset
,
the linearization of
\begin_inset Formula $\cay\left[\boldsymbol{\Theta}\right]$
\end_inset
along an increment
\begin_inset Formula $\Delta\boldsymbol{\Theta}$
\end_inset
is given by
\begin_inset Formula
\begin{equation}
D\left(\cay\left[\boldsymbol{\Theta}\right]\right)\left[\Delta\boldsymbol{\Theta}\right]=\cay\left[\boldsymbol{\Theta}\right]\cdot\widehat{\Delta\boldsymbol{\Theta}}\,,\label{eq:td-linearization-rot}
\end{equation}
\end_inset
so that
\begin_inset Formula
\begin{equation}
D\boldsymbol{\Lambda}_{n+1}\left[\Delta\boldsymbol{\Theta}\right]=\boldsymbol{\Lambda}_{n+1}\cdot\widehat{\Delta\boldsymbol{\Theta}}\,.\label{eq:td-linearization-Lambda}
\end{equation}
\end_inset
The linearizations of
\begin_inset Formula $\mathbf{W}_{n+1}$
\end_inset
and
\begin_inset Formula $\mathbf{A}_{n+1}$
\end_inset
,
as given in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:td-Newmark-mrot"
nolink "false"
\end_inset
,
along an increment
\begin_inset Formula $\Delta\boldsymbol{\Theta}$
\end_inset
requires us to first evaluate
\begin_inset Formula $D\boldsymbol{\Theta}\left[\Delta\boldsymbol{\Theta}\right]$
\end_inset
.
According to Puso
\begin_inset CommandInset citation
LatexCommand citep
key "Puso02"
literal "true"
\end_inset
,
\begin_inset Formula
\begin{equation}
D\boldsymbol{\Theta}\left[\Delta\boldsymbol{\Theta}\right]=\mathbf{T}\left(\boldsymbol{\Theta}\right)\cdot\Delta\boldsymbol{\Theta}\,,\label{td-Theta-linearization}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{T}\left(\boldsymbol{\Theta}\right)=\mathbf{I}+\frac{1}{2}\hat{\boldsymbol{\Theta}}+\frac{1}{4}\boldsymbol{\Theta}\otimes\boldsymbol{\Theta}\,.\label{eq:td-T-Theta-relation}
\end{equation}
\end_inset
Thus,
\begin_inset Formula
\begin{equation}
\begin{aligned}D\mathbf{W}_{n+1}\left[\Delta\boldsymbol{\Theta}\right] & =\frac{\gamma}{\beta\Delta t}\mathbf{T}\left(\boldsymbol{\Theta}\right)\cdot\Delta\boldsymbol{\Theta}\\
D\mathbf{A}_{n+1}\left[\Delta\boldsymbol{\Theta}\right] & =\frac{1}{\beta\Delta t^{2}}\mathbf{T}\left(\boldsymbol{\Theta}\right)\cdot\Delta\boldsymbol{\Theta}
\end{aligned}
\,.\label{eq:tf-W-A-linearizations}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Generalized-
\begin_inset Formula $\alpha$
\end_inset
Method for Rigid Body Dynamics
\begin_inset CommandInset label
LatexCommand label
name "subsec:Generalized-alpha-RBD"
\end_inset
\end_layout
\begin_layout Standard
In the generalized-
\begin_inset Formula $\alpha$
\end_inset
method,
we evaluate forces and moments at time
\begin_inset Formula $t_{n+\alpha_{f}}=\left(1-\alpha_{f}\right)t_{n}+\alpha_{f}t_{n+1}$
\end_inset
and the time rate of change of linear and angular momenta at time
\begin_inset Formula $t_{n+\alpha_{m}}=\left(1-\alpha_{m}\right)t_{n}+\alpha_{m}t_{n+1}$
\end_inset
,
where
\begin_inset Formula $\alpha_{f}$
\end_inset
and
\begin_inset Formula $\alpha_{m}$
\end_inset
may be evaluated from the spectral radius for an infinite time step,
\begin_inset Formula $\rho_{\infty}$
\end_inset
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Generalized-Alpha-Method"
nolink "false"
\end_inset
).
For second-order systems these parameters may be evaluated from
\begin_inset CommandInset citation
LatexCommand citep
key "Bazilevs08"
literal "true"
\end_inset
\begin_inset Formula
\begin{equation}
\alpha_{f}=\frac{1}{1+\rho_{\infty}}\,,\quad\alpha_{m}=\frac{2-\rho_{\infty}}{1+\rho_{\infty}}\,,\label{eq:ga-alphas-2nd}
\end{equation}
\end_inset
Then,
the Newmark parameters are given by
\begin_inset Formula
\begin{equation}
\begin{aligned}\beta & =\frac{1}{4}\left(1+\alpha_{m}-\alpha_{f}\right)^{2}\,,\\
\gamma & =\frac{1}{2}+\alpha_{m}-\alpha_{f}\,.
\end{aligned}
\label{eq:ga-Newmark-params}
\end{equation}
\end_inset
Accordingly,
to solve numerically for
\begin_inset Formula $\delta W=0$
\end_inset
over the time domain,
we express
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rbm-virtual-work"
nolink "false"
\end_inset
in the discretized time domain as
\begin_inset Formula
\begin{equation}
\delta\mathbf{r}\cdot\left(\mathbf{f}_{n+\alpha_{f}}^{ext}-\dot{\mathbf{p}}_{n+\alpha_{m}}\right)+\delta\boldsymbol{\theta}\cdot\left(\mathbf{m}_{n+\alpha_{f}}^{ext}-\dot{\mathbf{h}}_{n+\alpha_{m}}\right)=0\,,\label{eq:ga-virtual-work}
\end{equation}
\end_inset
or equivalently,
\begin_inset Formula
\begin{equation}
\left[\begin{array}{cc}
\delta\mathbf{r} & \delta\boldsymbol{\theta}\end{array}\right]\cdot\left[\begin{array}{c}
\mathbf{f}_{n+\alpha_{f}}^{ext}-\dot{\mathbf{p}}_{n+\alpha_{m}}\\
\mathbf{m}_{n+\alpha_{f}}^{ext}-\dot{\mathbf{h}}_{n+\alpha_{m}}
\end{array}\right]=0\,,\label{eq:ga-virtual-work-alt}
\end{equation}
\end_inset
Thus,
the residual vector is given by
\begin_inset Formula
\begin{equation}
\left[\mathbf{R}\right]=\left[\begin{array}{c}
\mathbf{f}_{n+\alpha_{f}}^{ext}\\
\mathbf{m}_{n+\alpha_{f}}^{ext}
\end{array}\right]-\left[\begin{array}{c}
\dot{\mathbf{p}}_{n+\alpha_{m}}\\
\dot{\mathbf{h}}_{n+\alpha_{m}}
\end{array}\right]\label{eq:ga-residual-vector}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}\dot{\mathbf{p}}_{n+\alpha_{m}} & =\left(1-\alpha_{m}\right)\dot{\mathbf{p}}_{n}+\alpha_{m}\dot{\mathbf{p}}_{n+1}\\
\dot{\mathbf{h}}_{n+\alpha_{m}} & =\left(1-\alpha_{m}\right)\dot{\mathbf{h}}_{n}+\alpha_{m}\dot{\mathbf{h}}_{n+1}
\end{aligned}
\,.\label{eq:ga-momenta-interpolation}
\end{equation}
\end_inset
According to the Newmark integration scheme,
\begin_inset Formula
\begin{equation}
\begin{aligned}\dot{\mathbf{p}}_{n+1} & =\frac{\mathbf{p}_{n+1}-\mathbf{p}_{n}}{\gamma\Delta t}+\left(1-\frac{1}{\gamma}\right)\dot{\mathbf{p}}_{n}\\
\dot{\mathbf{h}}_{n+1} & =\frac{\mathbf{h}_{n+1}-\mathbf{h}_{n}}{\gamma\Delta t}+\left(1-\frac{1}{\gamma}\right)\dot{\mathbf{h}}_{n}
\end{aligned}
\,,\label{eq:ga-momenta-Newmark}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{p}_{n+1}=m\dot{\mathbf{r}}_{n+1}$
\end_inset
and
\begin_inset Formula $\mathbf{h}_{n+1}=\mathbf{J}_{n+1}\cdot\boldsymbol{\omega}_{n+1}$
\end_inset
.
\end_layout
\begin_layout Standard
The nonlinear system
\begin_inset Formula $\mathbf{R}=\mathbf{0}$
\end_inset
is solved using a Newton scheme that requires linearizing
\begin_inset Formula $\mathbf{R}$
\end_inset
along increments
\begin_inset Formula $\Delta\mathbf{r}$
\end_inset
and
\begin_inset Formula $\Delta\boldsymbol{\theta}$
\end_inset
.
Thus,
\begin_inset Formula
\begin{equation}
\mathbf{R}+D\mathbf{R}\left[\Delta\mathbf{r}\right]+D\mathbf{R}\left[\Delta\boldsymbol{\theta}\right]\approx\mathbf{0}\,.\label{eq:ga-Newton-scheme}
\end{equation}
\end_inset
The increments
\begin_inset Formula $\Delta\mathbf{r}$
\end_inset
and
\begin_inset Formula $\Delta\boldsymbol{\theta}$
\end_inset
are evaluated at
\begin_inset Formula $t_{n+1}$
\end_inset
and the iterative Newton scheme requires updates of the form
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{r}_{n+1}^{j+1} & =\mathbf{r}_{n+1}^{j}+\Delta\mathbf{r}\\
\cay\left[\boldsymbol{\theta}^{j+1}\right] & =\cay\left[\Delta\boldsymbol{\theta}\right]\cdot\cay\left[\boldsymbol{\theta}^{j}\right]
\end{aligned}
\,,\label{eq:ga-Newton-iterations}
\end{equation}
\end_inset
where
\begin_inset Formula $j$
\end_inset
represents the Newton iteration.
At each Newton iteration,
the current value of
\begin_inset Formula $\cay\left[\boldsymbol{\theta}^{j+1}\right]$
\end_inset
is used to perform the update
\begin_inset Formula
\begin{equation}
\boldsymbol{\Lambda}_{n+1}^{j+1}=\cay\left[\boldsymbol{\theta}^{j+1}\right]\cdot\boldsymbol{\Lambda}_{n}\,,\label{eq:ga-rotation-iterations}
\end{equation}
\end_inset
until convergence is achieved.
\end_layout
\begin_layout Standard
In practice,
it is convenient to store
\begin_inset Formula $\boldsymbol{\theta}$
\end_inset
and
\begin_inset Formula $\Delta\boldsymbol{\theta}$
\end_inset
in quaternions,
recognizing that
\begin_inset Formula
\[
\cay\left[\theta\mathbf{n}\right]=\exp\left[\left(2\tan^{-1}\frac{\theta}{2}\right)\mathbf{n}\right]\,,
\]
\end_inset
where
\begin_inset Formula $\mathbf{n}$
\end_inset
is the unit vector along
\begin_inset Formula $\boldsymbol{\theta}$
\end_inset
and
\begin_inset Formula $\theta=\left\Vert \boldsymbol{\theta}\right\Vert $
\end_inset
.
Thus,
it is
\begin_inset Formula $\left(2\tan^{-1}\frac{\theta}{2}\right)\mathbf{n}$
\end_inset
which is stored in the quaternion,
instead of
\begin_inset Formula $\theta\mathbf{n}$
\end_inset
.
\end_layout
\begin_layout Standard
In the linearization of
\begin_inset Formula $\mathbf{R}$
\end_inset
,
the contributions from the rate of change of linear momentum
\begin_inset Formula $\dot{\mathbf{p}}_{n+\alpha_{m}}$
\end_inset
reduce to
\begin_inset Formula
\[
\begin{aligned}D\dot{\mathbf{p}}_{n+\alpha_{m}}\left[\Delta\mathbf{r}\right] & =\frac{\alpha_{m}}{\beta\Delta t^{2}}m\Delta\mathbf{r}\\
D\dot{\mathbf{p}}_{n+\alpha_{m}}\left[\Delta\boldsymbol{\theta}\right] & =\mathbf{0}
\end{aligned}
\,.
\]
\end_inset
To evaluate the contributions from the rate of change of angular momentum
\begin_inset Formula $\dot{\mathbf{h}}_{n+\alpha_{m}}$
\end_inset
,
we start from
\begin_inset Formula $D\dot{\mathbf{h}}_{n+\alpha_{m}}=\alpha_{m}D\dot{\mathbf{h}}_{n+1}$
\end_inset
.
Then,
it becomes necessary to transform the variables to the material frame,
\begin_inset Formula
\[
\begin{aligned}\dot{\mathbf{h}}_{n+1} & =\boldsymbol{\omega}_{n+1}\times\mathbf{h}_{n+1}+\mathbf{J}_{n+1}\cdot\boldsymbol{\alpha}_{n+1}\\
& =\boldsymbol{\Lambda}_{n+1}\cdot\left(\hat{\mathbf{W}}_{n+1}\cdot\mathbf{J}_{r}\cdot\mathbf{W}_{n+1}+\mathbf{J}_{r}\cdot\mathbf{A}_{n+1}\right)
\end{aligned}
\,.
\]
\end_inset
It follows that
\begin_inset Formula
\[
D\dot{\mathbf{h}}_{n+\alpha_{m}}\left[\Delta\mathbf{r}\right]=\mathbf{0}\,.
\]
\end_inset
Then,
using the relations in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Newmark-Integration-RBD"
nolink "false"
\end_inset
,
it can be shown that
\begin_inset Formula
\[
D\dot{\mathbf{h}}_{n+\alpha_{m}}\left[\Delta\boldsymbol{\Theta}\right]=\alpha_{m}\left[\frac{1}{\beta\Delta t}\left(\left(\gamma\hat{\boldsymbol{\omega}}_{n+1}+\frac{1}{\Delta t}\mathbf{I}\right)\cdot\mathbf{J}_{n+1}-\gamma\hat{\mathbf{h}}_{n+1}\right)\cdot\mathbf{T}\left(\boldsymbol{\theta}\right)-\hat{\dot{\mathbf{h}}}_{n+1}\right]\cdot\Delta\boldsymbol{\theta}\equiv\alpha_{m}\mathbf{K}\cdot\Delta\boldsymbol{\theta}\,.
\]
\end_inset
Alternatively,
we may use the discretization in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:ga-momenta-Newmark"
nolink "false"
\end_inset
to produce
\begin_inset Formula
\[
D\dot{\mathbf{h}}_{n+\alpha_{m}}\left[\Delta\boldsymbol{\Theta}\right]=\frac{\alpha_{m}}{\gamma\Delta t}D\mathbf{h}_{n+1}\left[\Delta\boldsymbol{\Theta}\right]
\]
\end_inset
where
\begin_inset Formula
\[
D\mathbf{h}_{n+1}\left[\Delta\boldsymbol{\Theta}\right]=\left(\frac{\gamma}{\beta\Delta t}\mathbf{J}_{n+1}\cdot\mathbf{T}\left(\boldsymbol{\theta}\right)-\hat{\mathbf{h}}_{n+1}\right)\cdot\Delta\boldsymbol{\theta}
\]
\end_inset
so that
\begin_inset Formula
\[
D\dot{\mathbf{h}}_{n+\alpha_{m}}\left[\Delta\boldsymbol{\Theta}\right]=\frac{\alpha_{m}}{\Delta t}\left(\frac{1}{\beta\Delta t}\mathbf{J}_{n+1}\cdot\mathbf{T}\left(\boldsymbol{\theta}\right)-\frac{1}{\gamma}\hat{\mathbf{h}}_{n+1}\right)\cdot\Delta\boldsymbol{\theta}\equiv\alpha_{m}\mathbf{K}\cdot\Delta\boldsymbol{\theta}
\]
\end_inset
Therefore,
the contribution to
\begin_inset Formula $D\mathbf{R}$
\end_inset
from the linear and angular momenta produces a stiffness matrix called the mass matrix,
\begin_inset Formula
\[
D\left[\begin{array}{c}
\dot{\mathbf{p}}_{n+\alpha_{m}}\\
\dot{\mathbf{h}}_{n+\alpha_{m}}
\end{array}\right]=\alpha_{m}\left[\begin{array}{cc}
\frac{m}{\beta\Delta t^{2}}\mathbf{I} & \mathbf{0}\\
\mathbf{0} & \mathbf{K}
\end{array}\right]\left[\begin{array}{c}
\Delta\mathbf{r}\\
\Delta\boldsymbol{\theta}
\end{array}\right]\,.
\]
\end_inset
\end_layout
\begin_layout Standard
Consider that the moments
\begin_inset Formula $\mathbf{m}_{n+\alpha_{f}}^{ext}$
\end_inset
about the rigid body center of mass are produced by the forces
\begin_inset Formula $\mathbf{f}_{n+\alpha_{f}}^{ext}$
\end_inset
according to
\begin_inset Formula
\[
\mathbf{m}_{n+\alpha_{f}}^{ext}=\mathbf{z}_{n+\alpha_{f}}\times\mathbf{f}_{n+\alpha_{f}}^{ext}=\hat{\mathbf{z}}_{n+\alpha_{f}}\cdot\mathbf{f}_{n+\alpha_{f}}^{ext}\,,
\]
\end_inset
where
\begin_inset Formula $\mathbf{z}_{n+\alpha_{f}}$
\end_inset
is the moment arm at
\begin_inset Formula $t_{n+\alpha_{f}}$
\end_inset
,
\begin_inset Formula
\[
\begin{aligned}\mathbf{z}_{n+\alpha_{f}} & =\left(1-\alpha_{f}\right)\mathbf{z}_{n}+\alpha_{f}\mathbf{z}_{n+1}\\
& =\left[\left(1-\alpha_{f}\right)\boldsymbol{\Lambda}_{n}+\alpha_{f}\boldsymbol{\Lambda}_{n+1}\right]\cdot\mathbf{Z}\\
& \equiv\boldsymbol{\Lambda}_{n+\alpha_{f}}\cdot\mathbf{Z}
\end{aligned}
\]
\end_inset
where
\begin_inset Formula $\mathbf{Z}$
\end_inset
is the moment arm in the reference configuration.
Note that
\begin_inset Formula
\[
\begin{aligned}D\mathbf{z}_{n+\alpha_{f}}\left[\Delta\mathbf{r}\right] & =\mathbf{0}\\
D\mathbf{z}_{n+\alpha_{f}}\left[\Delta\boldsymbol{\theta}\right] & =\alpha_{f}D\boldsymbol{\Lambda}_{n+1}\left[\Delta\boldsymbol{\theta}\right]\cdot\mathbf{Z}=-\alpha_{f}\hat{\mathbf{z}}_{n+1}\cdot\Delta\boldsymbol{\theta}
\end{aligned}
\]
\end_inset
Thus,
\begin_inset Formula
\[
\left[\begin{array}{c}
D\mathbf{f}_{n+\alpha_{f}}^{ext}\left[\Delta\mathbf{r}\right]\\
D\mathbf{m}_{n+\alpha_{f}}^{ext}\left[\Delta\mathbf{r}\right]
\end{array}\right]=\left[\begin{array}{c}
D\mathbf{f}_{n+\alpha_{f}}^{ext}\left[\Delta\mathbf{r}\right]\\
\mathbf{z}_{n+\alpha_{f}}\times D\mathbf{f}_{n+\alpha_{f}}^{ext}\left[\Delta\mathbf{r}\right]
\end{array}\right]
\]
\end_inset
and
\begin_inset Formula
\[
\left[\begin{array}{c}
D\mathbf{f}_{n+\alpha_{f}}^{ext}\left[\Delta\boldsymbol{\theta}\right]\\
D\mathbf{m}_{n+\alpha_{f}}^{ext}\left[\Delta\boldsymbol{\theta}\right]
\end{array}\right]=\left[\begin{array}{c}
D\mathbf{f}_{n+\alpha_{f}}^{ext}\left[\Delta\boldsymbol{\theta}\right]\\
\mathbf{z}_{n+\alpha_{f}}\times D\mathbf{f}_{n+\alpha_{f}}^{ext}\left[\Delta\boldsymbol{\theta}\right]-\left(\alpha_{f}\hat{\mathbf{z}}_{n+1}\cdot\Delta\boldsymbol{\theta}\right)\times\mathbf{f}_{n+\alpha_{f}}^{ext}
\end{array}\right]\,.
\]
\end_inset
\end_layout
\begin_layout Chapter
Contact and Coupling
\begin_inset CommandInset label
LatexCommand label
name "chap:Contact-and-Coupling"
\end_inset
\end_layout
\begin_layout Standard
FEBio allows the user to connect the different parts of the model in various ways.
Deformable parts can be connected to rigid bodies.
Deformable objects can be brought in contact with each other.
Rigid bodies can be connected with rigid joints.
This chapter describes the different ways to couple parts together.
\end_layout
\begin_layout Section
Sliding Interfaces
\begin_inset CommandInset label
LatexCommand label
name "sec:Sliding-Interfaces"
\end_inset
\end_layout
\begin_layout Standard
This section summarizes the theoretical developments of the two body contact problem.
After introducing some notation and terminology,
the contact integral is presented,
which contains the contribution to the virtual work equation from the contact tractions.
Since the nonlinear contact problem is solved using a Newton based iterative method,
the contact integral is linearized.
Next,
anticipating a finite element implementation,
the contact integral and its linearization are discretized using a standard finite element approach.
Finally the augmented Lagrangian method for enforcing the contact constraints is described.
\end_layout
\begin_layout Subsection
Contact Kinematics
\begin_inset CommandInset label
LatexCommand label
name "subsec:Sliding-Contact-Kinematics"
\end_inset
\end_layout
\begin_layout Standard
For the most part the notation of this section follows
\begin_inset CommandInset citation
LatexCommand citep
key "Laursen02"
literal "true"
\end_inset
,
with a few simplifications here and there since the implementation in FEBio is currently for quasi-static,
frictionless,
two body contact problem.
\end_layout
\begin_layout Standard
The volume occupied by body
\begin_inset Formula $i$
\end_inset
in the reference configuration is denoted by
\begin_inset Formula $\Omega^{\left(i\right)}\subset\mathbb{R}^{3}$
\end_inset
where
\begin_inset Formula $i=1,2$
\end_inset
.
The boundary of body
\begin_inset Formula $i$
\end_inset
is denoted by
\begin_inset Formula $\Gamma^{\left(i\right)}$
\end_inset
and is divided into three regions
\begin_inset Formula $\Gamma^{\left(i\right)}=\Gamma_{\sigma}^{\left(i\right)}\cup\Gamma_{u}^{\left(i\right)}\cup\Gamma_{c}^{\left(i\right)}$
\end_inset
,
where
\begin_inset Formula $\Gamma_{\sigma}^{\left(i\right)}$
\end_inset
is the boundary where tractions are applied,
\begin_inset Formula $\Gamma_{u}^{\left(i\right)}$
\end_inset
the boundary where the solution is prescribed and
\begin_inset Formula $\Gamma_{c}^{\left(i\right)}$
\end_inset
the part of the boundary that will be in contact with the other body.
It is assumed that
\begin_inset Formula $\Gamma_{\sigma}^{\left(i\right)}\cap\Gamma_{u}^{\left(i\right)}\cap\Gamma_{c}^{\left(i\right)}=\emptyset$
\end_inset
.
\end_layout
\begin_layout Standard
The deformation of body
\begin_inset Formula $i$
\end_inset
is defined by
\begin_inset Formula $\boldsymbol{\varphi}^{\left(i\right)}$
\end_inset
.
The boundary of the deformed body
\begin_inset Formula $i$
\end_inset
,
that is the boundary of
\begin_inset Formula $\boldsymbol{\varphi}^{\left(i\right)}\left(\Omega^{\left(i\right)}\right)$
\end_inset
is denoted by
\begin_inset Formula $\gamma^{\left(i\right)}=\gamma_{\sigma}^{\left(i\right)}\cup\gamma_{u}^{\left(i\right)}\cup\gamma_{c}^{\left(i\right)}$
\end_inset
where
\begin_inset Formula $\gamma_{\sigma}^{\left(i\right)}=\boldsymbol{\varphi}^{\left(i\right)}\left(\Gamma_{\sigma}^{\left(i\right)}\right)$
\end_inset
is the boundary in the current configuration where the tractions are applied and similar definitions for
\begin_inset Formula $\gamma_{u}^{\left(i\right)}$
\end_inset
and
\begin_inset Formula $\gamma_{c}^{\left(i\right)}$
\end_inset
.
See the figure below for a graphical illustration of the defined regions.
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigTwoBodyContactProblem.png
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
\series bold
The two-body contact problem.
\end_layout
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
Points in body 1 are denoted by
\series bold
\begin_inset Formula $\mathbf{X}$
\end_inset
\series default
in the reference configuration and
\series bold
\begin_inset Formula $\mathbf{x}$
\end_inset
\series default
in the current configuration.
For body 2 these points are denoted by
\series bold
\begin_inset Formula $\mathbf{Y}$
\end_inset
\series default
and
\series bold
\begin_inset Formula $\mathbf{y}$
\end_inset
\series default
.
To define contact,
the location where the two bodies are in contact with each other must be established.
If body 1 is the
\emph on
slave body
\emph default
and body 2 is the
\emph on
master body
\emph default
,
then for a given point
\series bold
\begin_inset Formula $\mathbf{X}$
\end_inset
\series default
on the slave reference contact surface there is a point
\begin_inset Formula $\mathbf{\bar{Y}}\left(\mathbf{X}\right)$
\end_inset
on the master contact surface that is in some sense closest to point
\series bold
\begin_inset Formula $\mathbf{X}$
\end_inset
\series default
.
This closest point is defined in a closest point projection sense:
\begin_inset Formula
\begin{equation}
\mathbf{\bar{Y}}\left(\mathbf{X}\right)=\arg\min\limits_{\mathbf{Y}\in\Gamma_{c}^{\left(2\right)}}\left\Vert \boldsymbol{\varphi}^{\left(1\right)}\left(\mathbf{X}\right)-\boldsymbol{\varphi}^{\left(2\right)}\left(\mathbf{Y}\right)\right\Vert \,.\label{eq564}
\end{equation}
\end_inset
With the definition of
\begin_inset Formula $\mathbf{\bar{Y}}\left(\mathbf{X}\right)$
\end_inset
established the
\emph on
gap function
\emph default
can be defined,
which is a measure for the distance between
\series bold
\begin_inset Formula $\mathbf{X}$
\end_inset
\series default
and
\begin_inset Formula $\mathbf{\bar{Y}}\left(\mathbf{X}\right)$
\end_inset
,
\begin_inset Formula
\begin{equation}
g\left(\mathbf{X}\right)=-\boldsymbol{\nu}\cdot\left(\boldsymbol{\varphi}^{\left(1\right)}\left(\mathbf{X}\right)-\boldsymbol{\varphi}^{\left(2\right)}\left(\mathbf{\bar{Y}}\left(\mathbf{X}\right)\right)\right)\,,\label{eq565}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\nu}$
\end_inset
is the local surface normal of surface
\begin_inset Formula $\gamma_{c}^{\left(2\right)}$
\end_inset
evaluated at
\begin_inset Formula $\mathbf{\bar{y}}=\boldsymbol{\varphi}^{\left(2\right)}\left(\mathbf{\bar{Y}}\left(\mathbf{X}\right)\right)$
\end_inset
.
Note that
\begin_inset Formula $g>0$
\end_inset
when
\series bold
\begin_inset Formula $\mathbf{X}$
\end_inset
\series default
has penetrated body 2,
so that the constraint condition to be satisfied at all time is
\begin_inset Formula $g\leqslant0$
\end_inset
.
\end_layout
\begin_layout Subsection
Weak Form of Two Body Contact
\begin_inset CommandInset label
LatexCommand label
name "subsec:Weak-Form-Two-Body"
\end_inset
\end_layout
\begin_layout Standard
The balance of linear momentum can be written for each of the two bodies in the reference configuration,
\begin_inset Formula
\begin{equation}
G^{\left(i\right)}\left(\boldsymbol{\varphi}^{\left(i\right)},\mathbf{w}^{\left(i\right)}\right)=\int\limits_{\Omega^{\left(i\right)}}\Grad\mathbf{w}^{\left(i\right)}:\mathbf{P}^{\left(i\right)}\,d\Omega-\int\limits_{\Omega^{\left(i\right)}}\mathbf{w}^{\left(i\right)}\cdot\mathbf{F}^{\left(i\right)}\,d\Omega-\int\limits_{\Gamma_{s}^{\left(i\right)}}\mathbf{w}^{\left(i\right)}\cdot\mathbf{T}^{\left(i\right)}\,d\Gamma-\int\limits_{\Gamma_{c}^{\left(i\right)}}\mathbf{w}^{\left(i\right)}\cdot\mathbf{T}^{\left(i\right)}\,d\Gamma=0\,,\label{eq566}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{w}^{\left(i\right)}$
\end_inset
is a weighting function and
\series bold
\begin_inset Formula $\mathbf{P}$
\end_inset
\series default
is the
\begin_inset Formula $1^{\text{st}}$
\end_inset
Piola-Kirchhoff stress tensor.
The last term corresponds to the virtual work of the contact tractions on body
\begin_inset Formula $i$
\end_inset
.
For notational convenience,
the notations
\begin_inset Formula $\varphi$
\end_inset
and
\begin_inset Formula $w$
\end_inset
are introduced to denote the collection of the respective mappings
\begin_inset Formula $\boldsymbol{\varphi}^{\left(i\right)}$
\end_inset
and
\begin_inset Formula $\mathbf{w}^{\left(i\right)}$
\end_inset
(for
\begin_inset Formula $i=$
\end_inset
1,2).
In other words,
\begin_inset Formula
\begin{equation}
\begin{aligned}\varphi & :\bar{\Omega}^{\left(1\right)}\cup\bar{\Omega}^{\left(2\right)}\to\mathbb{R}^{3}\,,\\
w & :\bar{\Omega}^{\left(1\right)}\cup\bar{\Omega}^{\left(2\right)}\to\mathbb{R}^{3}\,.
\end{aligned}
\label{eq567}
\end{equation}
\end_inset
The variational principle for the two body system is the sum of
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq566"
nolink "false"
\end_inset
for body 1 and 2 and can be expressed as,
\begin_inset Formula
\begin{equation}
\begin{aligned}G\left(\boldsymbol{\varphi},\mathbf{w}\right) & :=\sum\limits_{i=1}^{2}G^{\left(i\right)}\left(\boldsymbol{\varphi}^{\left(i\right)},\mathbf{w}^{\left(i\right)}\right)\\
& =\underbrace{\sum\limits_{i=1}^{2}\left\{ \int\limits_{\Omega^{\left(i\right)}}\Grad\mathbf{w}^{\left(i\right)}:\mathbf{P}^{\left(i\right)}\,d\Omega-\int\limits_{\Omega^{\left(i\right)}}\mathbf{w}^{\left(i\right)}\cdot\mathbf{F}^{\left(i\right)}\,d\Omega-\int\limits_{\Gamma_{s}^{\left(i\right)}}\mathbf{w}^{\left(i\right)}\cdot\mathbf{T}^{\left(i\right)}\,d\Gamma\right\} }_{G^{\text{int},\text{ext}}\left(\boldsymbol{\varphi},\mathbf{w}\right)}\\
& \underbrace{-\sum\limits_{i=1}^{2}\int\limits_{\Gamma_{c}^{\left(i\right)}}\mathbf{w}^{\left(i\right)}\cdot\mathbf{T}^{\left(i\right)}\,d\Gamma}_{G^{c}\left(\boldsymbol{\varphi},\mathbf{w}\right)}\,.
\end{aligned}
\label{eq568}
\end{equation}
\end_inset
Or in short,
\begin_inset Formula
\begin{equation}
G\left(\boldsymbol{\varphi},\mathbf{w}\right)=G^{\text{int},\text{ext}}\left(\boldsymbol{\varphi},\mathbf{w}\right)+G^{c}\left(\boldsymbol{\varphi},\mathbf{w}\right)\,.\label{eq569}
\end{equation}
\end_inset
Note that the minus sign is included in the definition of the contact integral
\begin_inset Formula $G^{c}$
\end_inset
.
The contact integral can be written as an integration over the contact surface of body 1 by balancing linear momentum across the contact surface:
\begin_inset Formula
\begin{equation}
\mathbf{t}^{\left(2\right)}\left(\mathbf{\bar{y}}\left(\mathbf{x}\right)\right)d\Gamma^{\left(2\right)}=-\mathbf{t}^{\left(1\right)}\left(\mathbf{x}\right)\,d\Gamma^{\left(1\right)}\,.\label{eq570}
\end{equation}
\end_inset
The contact integral can now be rewritten over the contact surface of body 1:
\begin_inset Formula
\begin{equation}
G^{c}=-\int\limits_{\Gamma_{c}^{\left(1\right)}}\mathbf{t}^{\left(1\right)}\left(\mathbf{x}\right)\cdot\left[\mathbf{w}^{\left(1\right)}\left(\mathbf{x}\right)-\mathbf{w}^{\left(2\right)}\left(\mathbf{\bar{y}}\left(\mathbf{x}\right)\right)\right]\,d\Gamma\,.\label{eq571}
\end{equation}
\end_inset
In the case of frictionless contact,
the contact traction is taken as perpendicular to surface 2 and therefore can be written as,
\begin_inset Formula $\mathbf{t}^{\left(1\right)}=t_{N}\boldsymbol{\nu}$
\end_inset
where
\begin_inset Formula $\boldsymbol{\nu}$
\end_inset
is the (outward) surface normal and
\begin_inset Formula $t_{N}$
\end_inset
is to be determined from the solution strategy.
For example in a Lagrange multiplier method the
\begin_inset Formula $t_{N}$
\end_inset
's would be the Lagrange multipliers.
\end_layout
\begin_layout Standard
By noting that the variation of the gap function is given by
\begin_inset Formula
\begin{equation}
\delta g=-\boldsymbol{\nu}\cdot\left(\mathbf{w}^{\left(1\right)}\left(\mathbf{x}\right)-\mathbf{w}^{\left(2\right)}\left(\mathbf{\bar{y}}\left(\mathbf{x}\right)\right)\right)\,,\label{eq572}
\end{equation}
\end_inset
equation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq571"
nolink "false"
\end_inset
can be simplified as,
\begin_inset Formula
\begin{equation}
G^{c}=\int\limits_{\Gamma_{c}^{\left(1\right)}}t_{N}\delta g\,d\Gamma\,.\label{eq573}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Linearization of the Contact Integral
\begin_inset CommandInset label
LatexCommand label
name "subsec:Linearization-Contact-Integral"
\end_inset
\end_layout
\begin_layout Standard
In a Newton-Raphson implementation the contact integral must be linearized with respect to the current configuration:
\begin_inset Formula
\begin{equation}
\Delta G^{c}\left(\boldsymbol{\varphi},\mathbf{w}\right)=\int\limits_{\Gamma_{c}^{\left(1\right)}}\Delta\left(t_{N}\delta g\right)\,d\Gamma\,.\label{eq574}
\end{equation}
\end_inset
Examining the normal contact term first,
the directional derivative of
\begin_inset Formula $t_{N}$
\end_inset
is given (for the case of the penalty regularization) by:
\begin_inset Formula
\begin{equation}
\begin{aligned}\Delta t_{N} & =\Delta\left\{ \varepsilon_{N}\left\langle g\right\rangle \right\} \\
& =H\left(g\right)\varepsilon_{N}\Delta g
\end{aligned}
\,,\label{eq575}
\end{equation}
\end_inset
where
\begin_inset Formula $\varepsilon_{N}$
\end_inset
is the penalty factor and
\begin_inset Formula $H\left(g\right)$
\end_inset
is the Heaviside function.
The quantity
\begin_inset Formula $\Delta\left(\delta g\right)$
\end_inset
is given by
\begin_inset Formula
\begin{equation}
\begin{aligned}\Delta\left(\delta g\right) & =g\left[\boldsymbol{\nu}\cdot\delta\varphi_{,\gamma}^{\left(2\right)}\left(\mathbf{\bar{Y}}\left(\mathbf{X}\right)\right)+\kappa_{\alpha\gamma}\left(\mathbf{\bar{Y}}\left(\mathbf{X}\right)\right)\delta\bar{\xi}_{\alpha}\right]m^{\gamma\beta}\\
& \left[\boldsymbol{\nu}\cdot\Delta\varphi_{,\beta}^{\left(2\right)}\left(\mathbf{\bar{Y}}\left(\mathbf{X}\right)\right)+\kappa_{\alpha\beta}\left(\mathbf{\bar{Y}}\left(\mathbf{X}\right)\right)\Delta\bar{\xi}^{\alpha}\right]\\
& +\delta\bar{\xi}^{\beta}\boldsymbol{\nu}\cdot\left[\Delta\varphi_{,\beta}^{\left(2\right)}\left(\mathbf{\bar{Y}}\left(\mathbf{X}\right)\right)\right]+\Delta\bar{\xi}^{\beta}\boldsymbol{\nu}\cdot\left[\delta\boldsymbol{\varphi}_{,\beta}^{\left(2\right)}\left(\mathbf{\bar{Y}}\left(\mathbf{X}\right)\right)\right]\\
& +\kappa_{\alpha\beta}\left(\mathbf{\bar{Y}}\left(\mathbf{X}\right)\right)\delta\bar{\xi}^{\beta}\Delta\bar{\xi}^{\alpha}\,.
\end{aligned}
\label{eq576}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Discretization of the Contact Integral
\begin_inset CommandInset label
LatexCommand label
name "subsec:Discretization-Contact-Integral"
\end_inset
\end_layout
\begin_layout Standard
The contact integral,
which is repeated here,
\begin_inset Formula
\begin{equation}
G^{c}\left(\boldsymbol{\varphi},\mathbf{w}\right)=\int\limits_{\Gamma^{\left(1\right)}}t_{N}\delta g\,d\Gamma\,,\label{eq577}
\end{equation}
\end_inset
will now be discretized using a standard finite element procedure.
First it is noted that the integration can be written as a sum over the surface element areas:
\begin_inset Formula
\begin{equation}
G^{c}\left(\boldsymbol{\varphi},\mathbf{w}\right)=\sum\limits_{e=1}^{N_{sel}}\int\limits_{\Gamma^{\left(1\right)e}}t_{N}\delta g\,d\Gamma\,,\label{eq578}
\end{equation}
\end_inset
where
\begin_inset Formula $N_{sel}$
\end_inset
is the number of surface elements.
The integration can be approximated using a quadrature rule,
\begin_inset Formula
\begin{equation}
G^{c}\left(\boldsymbol{\varphi},\mathbf{w}\right)\cong\sum\limits_{e=1}^{N_{sel}}\left\{ \sum\limits_{i=1}^{N_{int}^{e}}w^{i}j\left(\boldsymbol{\xi}_{i}\right)t_{N}\left(\boldsymbol{\xi}_{i}\right)\delta g\left(\boldsymbol{\xi}_{i}\right)\right\} \,,\label{eq579}
\end{equation}
\end_inset
where
\begin_inset Formula $N_{int}^{e}$
\end_inset
are the number of integration points for element
\begin_inset Formula $e$
\end_inset
.
It is now assumed that the integration points coincide with the element's nodes (e.g.
for a quadrilateral surface element we have
\begin_inset Formula $\boldsymbol{\xi}_{1}=\left(-1,-1\right)$
\end_inset
,
\begin_inset Formula $\boldsymbol{\xi}_{2}=\left(1,-1\right)$
\end_inset
,
\begin_inset Formula $\boldsymbol{\xi}_{3}=\left(1,1\right)$
\end_inset
and
\begin_inset Formula $\boldsymbol{\xi}_{4}=\left(-1,1\right))$
\end_inset
.
With this quadrature rule,
we have
\begin_inset Formula
\begin{equation}
\begin{aligned}w^{\left(1\right)}\left(\boldsymbol{\xi}_{i}\right) & =\mathbf{c}_{i}^{\left(1\right)}\\
w^{\left(2\right)}\left(\bar{\boldsymbol{\xi}}_{i}\right) & =\sum\limits_{j=1}^{n}N_{j}\left(\bar{\boldsymbol{\xi}}_{i}\right)\mathbf{c}_{j}^{\left(2\right)}
\end{aligned}
\,,\label{eq580}
\end{equation}
\end_inset
so that,
\begin_inset Formula
\begin{equation}
\delta g\left(\boldsymbol{\xi}_{i}\right)=-\boldsymbol{\nu}\cdot\left(\mathbf{c}_{i}^{\left(1\right)}-\sum\limits_{j=1}^{n}N_{j}^{\left(2\right)}\left(\bar{\boldsymbol{\xi}}_{i}\right)\mathbf{c}_{j}^{\left(2\right)}\right)\,.\label{eq581}
\end{equation}
\end_inset
If the following vectors are defined,
\begin_inset Formula
\begin{equation}
\begin{aligned}\delta\boldsymbol{\Phi}^{T} & =\left[\begin{array}{cccc}
\mathbf{c}_{i}^{\left(1\right)} & \mathbf{c}_{1}^{\left(2\right)} & \cdots & \mathbf{c}_{n}^{\left(2\right)}\end{array}\right]\\
\mathbf{N}^{T} & =\left[\begin{array}{cccc}
\boldsymbol{\nu} & -\boldsymbol{\nu}N_{1}^{\left(2\right)} & \cdots & -\boldsymbol{\nu}N_{n}^{\left(2\right)}\end{array}\right]
\end{aligned}
\,,\label{eq582}
\end{equation}
\end_inset
equation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq579"
nolink "false"
\end_inset
can then be rewritten as follows,
\begin_inset Formula
\begin{equation}
G^{c}\left(\boldsymbol{\varphi},\mathbf{w}\right)\cong\sum\limits_{e=1}^{N_{sel}}\left\{ \sum\limits_{i=1}^{N_{int}^{e}}w^{i}j\left(\boldsymbol{\xi}_{i}\right)t_{N}\left(\boldsymbol{\xi}_{i}\right)\delta\boldsymbol{\Phi}^{T}\mathbf{N}^{T}\right\} \,.\label{eq583}
\end{equation}
\end_inset
The specific form for
\begin_inset Formula $t_{N}$
\end_inset
will depend on the method employed for enforcing the contact constraint.
\end_layout
\begin_layout Subsection
Discretization of the Contact Stiffness
\begin_inset CommandInset label
LatexCommand label
name "subsec:Discretization-Contact-Stiffness"
\end_inset
\end_layout
\begin_layout Standard
A similar procedure can now be used to calculate the discretized contact stiffness matrix.
The linearization of the contact integral is repeated here:
\begin_inset Formula
\begin{equation}
\begin{aligned}\Delta G^{c}\left(\boldsymbol{\varphi},\mathbf{w}\right) & =\sum\limits_{e=1}^{N_{sel}}\int\limits_{\Gamma^{\left(1\right)e}}\Delta\left(t_{N}\delta g\right)\,d\Gamma\\
& =\sum\limits_{e=1}^{N_{sel}}\sum\limits_{i=1}^{N_{int}^{e}}w_{i}j\left(\boldsymbol{\xi}_{i}\right)\Delta\left(t_{N}\delta g\right)\left(\boldsymbol{\xi}_{i}\right)
\end{aligned}
\,.\label{eq584}
\end{equation}
\end_inset
Using matrix notation we can rewrite equation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq584"
nolink "false"
\end_inset
as,
\begin_inset Formula
\begin{equation}
\Delta W^{c}\left(\boldsymbol{\varphi},\mathbf{w}\right)=\sum\limits_{e=1}^{N_{sel}}\sum\limits_{i}^{N_{int}^{e}}w_{i}j\left(\mathbf{\xi}_{i}\right)\delta\boldsymbol{\Phi}\cdot\mathbf{k}^{c}\Delta\boldsymbol{\Phi}\,,\label{eq585}
\end{equation}
\end_inset
where
\begin_inset Formula $\delta\boldsymbol{\Phi}$
\end_inset
is as above and
\begin_inset Formula $\Delta\boldsymbol{\Phi}$
\end_inset
similar to
\begin_inset Formula $\delta\boldsymbol{\Phi}$
\end_inset
with
\begin_inset Formula $\delta$
\end_inset
replaced with
\begin_inset Formula $\Delta$
\end_inset
,
and
\begin_inset Formula $\mathbf{k}^{c}$
\end_inset
is
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{k}^{c} & =\varepsilon_{N}H\left(\lambda_{N}^{k}+\varepsilon_{N}g\right)\mathbf{NN}^{T}+t_{N}\left\{ g\left[m^{11}\mathbf{\bar{N}}_{1}\mathbf{\bar{N}}_{1}^{T}\right.\right.\\
& +m^{12}\left(\mathbf{\bar{N}}_{1}\mathbf{\bar{N}}_{2}^{T}+\mathbf{\bar{N}}_{2}\mathbf{\bar{N}}_{1}^{T}\right)+\left.m^{22}\mathbf{\bar{N}}_{2}\mathbf{\bar{N}}_{2}^{T}\right]-\mathbf{D}_{1}\mathbf{N}_{1}^{T}\\
& -\mathbf{D}_{2}\mathbf{N}_{2}^{T}-\mathbf{N}_{1}\mathbf{D}_{1}^{T}-\mathbf{N}_{2}\mathbf{D}_{2}^{T}+\left.\kappa_{12}\left(\mathbf{D}_{1}\mathbf{D}_{2}^{T}+\mathbf{D}_{2}\mathbf{D}_{1}^{T}\right)\right\}
\end{aligned}
\,,\label{eq586}
\end{equation}
\end_inset
where,
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{N}= & \left[\begin{array}{c}
\boldsymbol{\nu}\\
-N_{1}\left(\bar{\boldsymbol{\xi}}\right)\boldsymbol{\nu}\\
\vdots\\
-N_{4}\left(\bar{\boldsymbol{\xi}}\right)\boldsymbol{\nu}
\end{array}\right]\,, & \mathbf{T}_{\alpha} & =\left[\begin{array}{c}
\boldsymbol{\tau}_{\alpha}\\
-N_{1}\left(\bar{\boldsymbol{\xi}}\right)\boldsymbol{\tau}_{\alpha}\\
\vdots\\
-N_{4}\left(\bar{\boldsymbol{\xi}}\right)\boldsymbol{\tau}_{\alpha}
\end{array}\right]\,, & \mathbf{N}_{\alpha} & =\left[\begin{array}{c}
\mathbf{0}\\
-N_{1,\alpha}\left(\bar{\boldsymbol{\xi}}\right)\boldsymbol{\nu}\\
\vdots\\
-N_{4,\alpha}\left(\bar{\boldsymbol{\xi}}\right)\boldsymbol{\nu}
\end{array}\right]\,.\end{aligned}
\label{eq587}
\end{equation}
\end_inset
The following vectors are also defined which depend on the vectors of
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq587"
nolink "false"
\end_inset
:
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{D}_{1} & =\frac{1}{\det\mathbf{A}}\left[A_{22}\left(\mathbf{T}_{1}+g\mathbf{N}_{1}\right)-A_{12}\left(\mathbf{T}_{2}+g\mathbf{N}_{2}\right)\right]\\
\mathbf{D}_{2} & =\frac{1}{\det\mathbf{A}}\left[A_{11}\left(\mathbf{T}_{2}+g\mathbf{N}_{2}\right)-A_{12}\left(\mathbf{T}_{1}+g\mathbf{N}_{1}\right)\right]\\
\mathbf{\bar{N}}_{1} & =\mathbf{N}_{1}-\kappa_{12}\mathbf{D}_{2}\\
\mathbf{\bar{N}}_{2} & =\mathbf{N}_{2}-\kappa_{12}\mathbf{D}_{1}
\end{aligned}
\,,\label{eq588}
\end{equation}
\end_inset
where the matrix
\series bold
\begin_inset Formula $\mathbf{A}$
\end_inset
\series default
is defined as,
\begin_inset Formula
\begin{equation}
A_{ij}=m_{ij}+g\kappa_{ij}\,.\label{eq589}
\end{equation}
\end_inset
Here,
\begin_inset Formula $m_{ij}=\boldsymbol{\tau}_{i}\cdot\boldsymbol{\tau}_{j}$
\end_inset
is the surface metric tensor and
\begin_inset Formula $\kappa_{ij}=\boldsymbol{\nu}\cdot\boldsymbol{\varphi}_{t,ij}^{\left(2\right)}\left(\mathbf{\bar{Y}}\right)$
\end_inset
denotes the components of the surface curvature at
\begin_inset Formula $\bar{\boldsymbol{\xi}}$
\end_inset
.
\end_layout
\begin_layout Subsection
Augmented Lagrangian Method
\begin_inset CommandInset label
LatexCommand label
name "subsec:Augmented-Lagrangian-Method"
\end_inset
\end_layout
\begin_layout Standard
The augmented Lagrangian method is used in FEBio to enforce the contact constraints to a user-specified tolerance.
This implies that the normal contact tractions are given by,
\begin_inset Formula
\begin{equation}
t_{N}=\left\langle \lambda_{N}+\varepsilon_{N}g\right\rangle \,.\label{eq590}
\end{equation}
\end_inset
Note that this assumption is consistent with the approach that was used in establishing the discretization of the linearization of the contact integral
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq586"
nolink "false"
\end_inset
.
In
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq590"
nolink "false"
\end_inset
\begin_inset Formula $\varepsilon_{N}$
\end_inset
is a penalty factor that is chosen arbitrarily.
\end_layout
\begin_layout Standard
The Newton-Raphson iterative method is now used to solve the nonlinear contact problem where Uzawa's method (REF) is employed to calculate the Lagrange multipliers
\begin_inset Formula $\lambda_{N}$
\end_inset
.
This implies that the Lagrange multipliers are kept fixed during the Newton-Raphson iterations.
After convergence the multipliers are updated and a new NR procedure is started.
This procedure can be summarized by the following four steps.
\end_layout
\begin_layout Enumerate
\series bold
Initialize
\series default
the augmented Lagrangian iteration counter
\begin_inset Formula $k$
\end_inset
,
and the initial guesses for the multipliers:
\begin_inset Formula
\begin{equation}
\begin{aligned}\lambda_{N_{n+1}}^{\left(0\right)} & =\lambda_{N_{n}}\,,\\
k & =0\,.
\end{aligned}
\label{eq591}
\end{equation}
\end_inset
\end_layout
\begin_layout Enumerate
\series bold
Solve
\series default
for
\begin_inset Formula $\mathbf{d}_{n+1}^{\left(k\right)}$
\end_inset
,
the solution vector corresponding to the fixed
\begin_inset Formula $k$
\end_inset
th iterate for the multipliers,
\begin_inset Formula
\begin{equation}
\mathbf{F}^{int}\left(\mathbf{d}_{n+1}^{\left(k\right)}\right)+\mathbf{F}^{c}\left(\mathbf{d}_{n+1}^{\left(k\right)}\right)=\mathbf{F}_{n+1}^{ext}\,,\label{eq592}
\end{equation}
\end_inset
where the contact tractions used to compute
\begin_inset Formula $\mathbf{F}^{c}$
\end_inset
,
the contact force,
are governed by
\begin_inset Formula
\begin{equation}
t_{N_{n+1}}^{\left(k\right)}=\left\langle \lambda_{N_{n+1}}^{\left(k\right)}+\varepsilon_{N}g_{n+1}^{k}\right\rangle \,.\label{eq593}
\end{equation}
\end_inset
\end_layout
\begin_layout Enumerate
\series bold
Update
\series default
the Lagrange multipliers and iteration counters:
\begin_inset Formula
\begin{equation}
\begin{aligned}\lambda_{N_{n+1}}^{\left(k+1\right)} & =\left\langle \lambda_{N_{n+1}}^{\left(k\right)}+\varepsilon_{N}g_{n+1}^{\left(k\right)}\right\rangle \,,\\
k & =k+1\,.
\end{aligned}
\label{eq594}
\end{equation}
\end_inset
\end_layout
\begin_layout Enumerate
\series bold
Return
\series default
to the solution phase.
\end_layout
\begin_layout Standard
Steps 2-4 of the above algorithm are generally repeated until all contact constraints are satisfied to a user-specified tolerance or little change in the solution vector from augmentation to augmentation is noted.
\end_layout
\begin_layout Subsection
Automatic Penalty Calculation
\begin_inset CommandInset label
LatexCommand label
name "subsec:Automatic-Penalty-Calculation"
\end_inset
\end_layout
\begin_layout Standard
The determination of the penalty factor
\begin_inset Formula $\varepsilon_{N}$
\end_inset
can be a difficult task,
since a good value may depend on both material parameters and geometrical factors.
In FEBio the value of this penalty factor can be determined automatically.
In this case FEBio will calculate a penalty factor for each facet using the following formula.
\begin_inset Formula
\begin{equation}
\varepsilon_{i}=\frac{f_{SI}E_{i}A_{i}}{V_{i}}\,.\label{eq595}
\end{equation}
\end_inset
Here,
\begin_inset Formula $E_{i}$
\end_inset
is the effective Young's modulus along the facet normal,
\begin_inset Formula $A_{i}$
\end_inset
the surface area of the facet,
\begin_inset Formula $V_{i}$
\end_inset
the volume of the element to which this facet belongs and
\begin_inset Formula $f_{SI}$
\end_inset
a user defined scale factor.
The parameter
\begin_inset Formula $E_{i}$
\end_inset
is evaluated from the elasticity tensor
\begin_inset Formula $\boldsymbol{\mathcal{C}}$
\end_inset
and the facet unit normal
\begin_inset Formula $\mathbf{n}$
\end_inset
according to
\begin_inset Formula
\begin{equation}
\frac{1}{E_{i}}=\left(\mathbf{n}\otimes\mathbf{n}\right):\boldsymbol{\mathcal{C}}^{-1}:\left(\mathbf{n}\otimes\mathbf{n}\right)\,,\label{eq596}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\mathcal{C}}^{-1}$
\end_inset
is the compliance tensor.
\end_layout
\begin_layout Subsection
Facet-To-Facet Sliding
\begin_inset CommandInset label
LatexCommand label
name "subsec:Alternative-Formulations"
\end_inset
\end_layout
\begin_layout Standard
As of FEBio version 1.2,
two alternative formulations for sliding contact are available.
The first method,
which is referred to as the
\emph on
facet-to-facet sliding
\emph default
,
is very similar to the formulation described above.
It only differs in that it uses a Gaussian quadrature rule instead of nodal integration.
Because of the more accurate integration rule,
it was noted that this method in many situations was more stable and resulted in better convergence.
\end_layout
\begin_layout Subsection
Sliding-Elastic
\begin_inset CommandInset label
LatexCommand label
name "subsec:Sliding-Elastic"
\end_inset
\end_layout
\begin_layout Standard
This algorithm was presented in
\begin_inset CommandInset citation
LatexCommand citep
key "Zimmerman18"
literal "false"
\end_inset
and differs considerably from the previous two.
Consider a domain
\begin_inset Formula $b$
\end_inset
consisting of two bodies
\begin_inset Formula $b^{(1)}$
\end_inset
and
\begin_inset Formula $b^{(2)}$
\end_inset
with respective boundaries
\begin_inset Formula $\partial b^{(1)}$
\end_inset
and
\begin_inset Formula $\partial b^{(2)}$
\end_inset
.
The two bodies are in contact over portions of
\family roman
\series medium
\shape up
\size normal
\emph off
\bar no
\noun off
\color none
\begin_inset Formula $\partial b^{(1)}$
\end_inset
\family default
\series default
\shape default
\size default
\emph default
\bar default
\noun default
\color inherit
and
\begin_inset Formula $\partial b^{(2)}$
\end_inset
,
respectively denoted
\begin_inset Formula $\gamma^{(1)}$
\end_inset
and
\begin_inset Formula $\gamma^{(2)}$
\end_inset
.
The contribution of contact to the external virtual work may be written as
\begin_inset Formula
\begin{equation}
\delta G_{c}=\sum_{i=1}^{2}\intop_{\gamma^{(i)}}\delta\mathbf{v}^{(i)}\cdot\mathbf{t}^{(i)}\,da^{(i)}
\end{equation}
\end_inset
where
\begin_inset Formula $\delta\mathbf{v}^{(i)}$
\end_inset
is a virtual velocity,
\begin_inset Formula $\mathbf{t}^{(i)}$
\end_inset
represents the traction on
\begin_inset Formula $\gamma^{(i)}$
\end_inset
,
and
\begin_inset Formula $da^{(i)}$
\end_inset
is an elemental area of
\begin_inset Formula $\gamma^{(i)}$
\end_inset
.
In contact analyses,
the tractions on
\begin_inset Formula $\gamma^{\left(i\right)}$
\end_inset
are equal and opposite,
\begin_inset Formula $\mathbf{t}^{(1)}=-\mathbf{t}^{(2)}$
\end_inset
,
and the contact surfaces are shared,
hence we may select one surface to perform the integration over.
The virtual work arising from contact may be written as an integral over the primary surface
\begin_inset Formula $\gamma^{(1)}$
\end_inset
only,
yielding
\begin_inset Formula
\begin{equation}
\delta G_{c}=\intop_{\gamma^{(1)}}\left(\delta\mathbf{v}^{(1)}-\delta\mathbf{v}^{(2)}\right)\cdot\mathbf{t}^{(1)}\,da^{(1)}\label{eq:contact_int}
\end{equation}
\end_inset
eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:contact_int"
nolink "false"
\end_inset
is commonly referred to as the contact integral.
\end_layout
\begin_layout Standard
To evaluate the directional derivatives of
\begin_inset Formula $\delta G_{c}$
\end_inset
along increments in the displacements
\begin_inset Formula $\Delta\mathbf{u}^{(i)}$
\end_inset
of
\begin_inset Formula $\gamma^{\left(i\right)}$
\end_inset
,
as required for an iterative technique such as Newton's method,
it is necessary to formulate the integration over an invariant domain so that the directional derivative may be brought inside the integral without concern for variations in the domain of integration.
In our approach the integral is formulated over the invariant parametric space of
\begin_inset Formula $\gamma^{\left(1\right)}$
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10b,Bonet97"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
Each surface
\begin_inset Formula $\gamma^{(i)}$
\end_inset
is expressed in parametric form using coordinates
\begin_inset Formula $\eta_{(i)}^{\alpha}$
\end_inset
,
and material points
\begin_inset Formula $X^{(i)}$
\end_inset
are identified through their parametric coordinates.
On each surface
\begin_inset Formula $\gamma^{(i)}$
\end_inset
,
covariant basis vectors are given by
\begin_inset Formula
\begin{equation}
\mathbf{g}_{\alpha}^{(i)}=\frac{\partial\mathbf{x}^{(i)}}{\partial\eta_{(i)}^{\alpha}}\,.\label{eq:basis_vectors}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\mathbf{x}^{(i)}\left(\eta_{(i)}^{\alpha},t\right)$
\end_inset
is the spatial representation of surface
\begin_inset Formula $\gamma^{(i)}$
\end_inset
as it deforms over time
\begin_inset Formula $t$
\end_inset
,
in terms of contravariant surface parametric coordinates
\begin_inset Formula $\eta_{(i)}^{\alpha}$
\end_inset
.
These covariant basis vectors are tangent to
\begin_inset Formula $\gamma^{(i)}$
\end_inset
,
and it follows that the unit outward normal to
\begin_inset Formula $\gamma^{\left(i\right)}$
\end_inset
is
\begin_inset Formula
\begin{equation}
\mathbf{n}^{(i)}=\frac{\mathbf{g}_{1}^{(i)}\times\mathbf{g}_{2}^{(i)}}{\left|\mathbf{g}_{1}^{(i)}\times\mathbf{g}_{2}^{(i)}\right|}\,.\label{eq:n}
\end{equation}
\end_inset
Furthermore,
the elemental area on
\begin_inset Formula $\gamma^{\left(i\right)}$
\end_inset
is evaluated as
\begin_inset Formula
\begin{equation}
\begin{aligned}da^{(i)} & =J_{\eta}^{(i)}\,d\eta_{(i)}^{1}d\eta_{(i)}^{2}\,, & J_{\eta}^{(i)} & =\left|\mathbf{g}_{1}^{(i)}\times\mathbf{g}_{2}^{(i)}\right|\,.\end{aligned}
\label{eq:da_jeta}
\end{equation}
\end_inset
Therefore the contact integral of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:contact_int"
nolink "false"
\end_inset
may be placed into matrix form and rewritten as
\begin_inset Formula
\begin{equation}
\delta G_{c}=\int_{\Gamma_{\eta}^{(1)}}\begin{bmatrix}\delta\mathbf{v}^{(1)} & \delta\mathbf{v}^{(2)}\end{bmatrix}\cdot\begin{bmatrix}\mathbf{t}^{(1)}\\
-\mathbf{t}^{(1)}
\end{bmatrix}\,J_{\eta}^{(1)}\,d\eta_{(1)}^{1}d\eta_{(1)}^{2}\,,\label{eq:contact-int-invariant}
\end{equation}
\end_inset
where
\begin_inset Formula $\Gamma_{\eta}^{(1)}$
\end_inset
represents the invariant parametric space of surface
\begin_inset Formula $\gamma^{(1)}$
\end_inset
and integration is performed over points
\begin_inset Formula $X^{(1)}$
\end_inset
with prescribed parametric coordinates
\begin_inset Formula $\eta_{(1)}^{\alpha}$
\end_inset
.
Since
\begin_inset Formula $\Gamma_{\eta}^{(1)}$
\end_inset
represents a material frame,
it is possible to linearize
\begin_inset Formula $\delta G_{c}$
\end_inset
by applying the directional derivative operator directly to the integrand,
\begin_inset Formula
\begin{equation}
D\delta G_{c}=\int_{\Gamma_{\eta}^{(1)}}D\left(\begin{bmatrix}\delta\mathbf{v}^{(1)} & \delta\mathbf{v}^{(2)}\end{bmatrix}\cdot\begin{bmatrix}\mathbf{t}^{(1)}\\
-\mathbf{t}^{(1)}
\end{bmatrix}\,J_{\eta}^{(1)}\right)d\eta_{(1)}^{1}d\eta_{(1)}^{2}\,,\label{eq:dgc}
\end{equation}
\end_inset
where it is understood that for any function
\begin_inset Formula $f$
\end_inset
,
\begin_inset Formula
\begin{equation}
Df\equiv\sum_{i=1}^{2}Df\left[\Delta\mathbf{u}^{(i)}\right]\,.
\end{equation}
\end_inset
To proceed with this linearization,
it is necessary to formulate the kinematics of points on
\begin_inset Formula $\gamma^{\left(i\right)}$
\end_inset
and provide expressions for the contact traction
\begin_inset Formula $\mathbf{t}^{(1)}$
\end_inset
that can differentiate between frictional stick and slip.
\end_layout
\begin_layout Subsubsection
Slip Kinematics
\begin_inset CommandInset label
LatexCommand label
name "subsec:SE-Slip-Kinematics"
\end_inset
\end_layout
\begin_layout Standard
During contact slip,
\begin_inset Formula $\gamma^{(1)}$
\end_inset
and
\begin_inset Formula $\gamma^{(2)}$
\end_inset
move relative to one another as their configurations evolve.
Performing a contact analysis requires mapping points between these surfaces.
For the spatial position
\begin_inset Formula $\mathbf{x}^{(1)}\left(\eta_{(1)}^{\alpha},t\right)$
\end_inset
of each material point on the primary surface,
we define the intersection point
\begin_inset Formula $\mathbf{x}^{(2)}\left(\eta_{(2)}^{\alpha},t\right)$
\end_inset
on the secondary surface as the point intersected by a ray directed along the unit outward normal to the primary surface
\begin_inset Formula $\mathbf{n}^{(1)}\left(\eta_{(1)}^{\alpha},t\right)$
\end_inset
,
\begin_inset Formula
\begin{equation}
\mathbf{x}^{(2)}=\mathbf{x}^{(1)}+g\mathbf{n}^{(1)},\label{eq:slip_x2}
\end{equation}
\end_inset
where the gap function
\begin_inset Formula $g$
\end_inset
is defined to be positive when the surfaces
\begin_inset Formula $\gamma^{(1)}$
\end_inset
and
\begin_inset Formula $\gamma^{(2)}$
\end_inset
are separated,
and negative when they penetrate,
\begin_inset Formula
\begin{equation}
g=\left(\mathbf{x}^{(2)}-\mathbf{x}^{(1)}\right)\cdot\mathbf{n}^{(1)}.\label{eq:slip_gap}
\end{equation}
\end_inset
The ray intersects
\begin_inset Formula $\gamma^{\left(2\right)}$
\end_inset
at a spatial position
\begin_inset Formula $\mathbf{x}^{\left(2\right)}$
\end_inset
through which different material points
\begin_inset Formula $X^{(2)}$
\end_inset
identified by parametric coordinates
\begin_inset Formula $\eta_{(2)}^{\alpha}$
\end_inset
may convect.
Computationally,
this ray intersection and contact detection is performed with an Octree method
\begin_inset CommandInset citation
LatexCommand citep
key "Foley96"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
The projection approach of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:slip_x2"
nolink "false"
\end_inset
,
described in our previous study
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10b"
literal "true"
\end_inset
and commonly termed
\emph on
ray-tracing
\emph default
\begin_inset CommandInset citation
LatexCommand citep
key "Poulios15"
literal "true"
\end_inset
,
can be characterized as an inverse projection relative to the classical contact mechanics approach used for NTS contact
\begin_inset CommandInset citation
LatexCommand citep
key "Laursen02,Wriggers06"
literal "true"
\end_inset
.
Although the definition of this projection and its associated gap function is not new,
it has typically been employed mostly for mortar contact (e.g.
as in Tur et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Tur09"
literal "true"
\end_inset
).
The benefits associated with a projection method such as eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:slip_x2"
nolink "false"
\end_inset
for non-mortar contact have been developed in detail
\begin_inset CommandInset citation
LatexCommand citep
key "Poulios15"
literal "true"
\end_inset
.
Here it suffices to note that avoiding a reliance on secondary surface normal vectors eliminates many contact-searching difficulties that plague NTS algorithms
\begin_inset CommandInset citation
LatexCommand citep
key "Zavarise09"
literal "true"
\end_inset
,
and also serves to greatly reduce the complexity of the linearizations and the resulting stiffness matrices.
\end_layout
\begin_layout Subsubsection
Stick Kinematics
\begin_inset CommandInset label
LatexCommand label
name "subsec:SE-Stick-Kinematics"
\end_inset
\end_layout
\begin_layout Standard
Equations
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:slip_x2"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:slip_gap"
nolink "false"
\end_inset
describe searching for evolving contact and are only valid during slip.
In stick no relative motion occurs between contacting points,
thus the intersection point
\begin_inset Formula $X^{\left(2\right)}$
\end_inset
on
\begin_inset Formula $\gamma^{(2)}$
\end_inset
does not evolve during the iterative solution process,
allowing the development of kinematics of sticking contact.
Implicit in this condition is the assumption that the contact projection was previously resolved,
and thus contact searching is not performed again;
rather,
the contact point on
\begin_inset Formula $\gamma^{(2)}$
\end_inset
is given by the parametric coordinates of intersection
\begin_inset Formula $\eta_{(2)}^{\alpha}$
\end_inset
found from the previous time point,
which will be denoted as
\begin_inset Formula $\eta_{(2)p}^{\alpha}$
\end_inset
,
with the subscripted
\begin_inset Formula $p$
\end_inset
referring to the previous time.
Thus,
we write the spatial position of
\begin_inset Formula $X^{\left(2\right)}$
\end_inset
in stick as
\begin_inset Formula
\begin{equation}
\mathbf{x}_{s}^{(2)}=\mathbf{x}^{(2)}\left(\eta_{(2)p}^{\alpha},t\right)=\mathbf{x}^{(1)}\left(\eta_{(1)}^{\alpha},t\right)+\mathbf{g}_{s}\,,\label{eq:stick_x2}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{g}_{s}$
\end_inset
is a vectorial gap function,
\begin_inset Formula
\begin{equation}
\mathbf{g}_{s}=\mathbf{x}_{s}^{(2)}-\mathbf{x}^{(1)}\,.\label{eq:stick_gap}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\mathbf{g}_{s}$
\end_inset
is the vectorial distance,
at the current time
\begin_inset Formula $t$
\end_inset
,
between material points which were in contact at the previous time step;
for perfect stick we must have
\begin_inset Formula $\mathbf{g}_{s}=\mathbf{0}$
\end_inset
.
In a finite element implementation however,
it is important to note that the intersection point
\begin_inset Formula $\mathbf{x}_{s}^{(2)}$
\end_inset
is not in general the point that would be found from a ray directed from
\begin_inset Formula $\eta_{(1)}^{\alpha}$
\end_inset
along the unit outward normal
\begin_inset Formula $\mathbf{n}^{(1)}$
\end_inset
.
This is because stick will not be enforced exactly,
so the points
\begin_inset Formula $\mathbf{x}^{(1)}$
\end_inset
and
\begin_inset Formula $\mathbf{x}_{s}^{(2)}$
\end_inset
will separate slightly when using a penalty method for enforcing this constraint.
How to minimize this separation and enforce perfect stick behavior is the subject of the forthcoming sections.
\end_layout
\begin_layout Subsubsection
Velocities
\begin_inset CommandInset label
LatexCommand label
name "subsec:SE-Velocities"
\end_inset
\end_layout
\begin_layout Standard
The kinematics developed above can be used to formulate velocities.
The formulation for stick developed in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:SE-Coulomb-Friction"
nolink "false"
\end_inset
does not rely on velocity constraints,
therefore we are only concerned with velocities of opposing contact points in slip.
The development of velocities presented below anticipates the need for a relative velocity as required by Coulomb's law of kinetic friction,
which aligns the friction force with this slip direction.
\end_layout
\begin_layout Standard
Since the parametric coordinates
\begin_inset Formula $\eta_{(1)}^{\alpha}$
\end_inset
of integration points represent material points on
\begin_inset Formula $\gamma^{\left(1\right)}$
\end_inset
,
the velocity
\begin_inset Formula $\mathbf{v}^{\left(1\right)}$
\end_inset
of these points on the primary surface is evaluated from the material time derivative in the material frame,
\begin_inset Formula
\begin{equation}
\mathbf{v}^{(1)}\left(\eta_{(1)}^{\alpha},t\right)=\frac{\partial\mathbf{x}^{(1)}\left(\eta_{(1)}^{\alpha},t\right)}{\partial t}\,.\label{eq:v1}
\end{equation}
\end_inset
In contrast,
since material may convect through the intersection point of the ray with
\begin_inset Formula $\gamma^{\left(2\right)}$
\end_inset
,
the total velocity
\begin_inset Formula $\mathbf{v}^{(2)}$
\end_inset
at the intersection point on
\begin_inset Formula $\gamma^{\left(2\right)}$
\end_inset
needs to be evaluated using the material time derivative in the spatial frame,
\begin_inset Formula
\begin{equation}
\mathbf{v}^{(2)}\left(\eta_{(2)}^{\alpha},t\right)=\frac{\partial\mathbf{x}^{(2)}\left(\eta_{(2)}^{\alpha},t\right)}{\partial t}+\dot{\eta}_{(2)}^{\alpha}\mathbf{g}_{\alpha}^{(2)}\,.\label{eq:both_v2}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\partial\mathbf{x}^{(2)}/\partial t$
\end_inset
represents the velocity of the intersection point on
\begin_inset Formula $\gamma^{\left(2\right)}$
\end_inset
,
whereas
\begin_inset Formula $\dot{\eta}_{(2)}^{\alpha}$
\end_inset
are the contravariant components of the convective velocity of material passing through this intersection point.
In effect,
\begin_inset Formula $\dot{\eta}_{(2)}^{\alpha}\mathbf{g}_{\alpha}^{(2)}$
\end_inset
represents the relative (slip) velocity between the material on
\begin_inset Formula $\gamma^{\left(2\right)}$
\end_inset
and that on
\begin_inset Formula $\gamma^{\left(1\right)}$
\end_inset
.
Importantly,
as noted below when performing time discretization and linearization,
by definition
\begin_inset Formula $\partial\mathbf{x}^{(2)}/\partial t$
\end_inset
is evaluated while keeping
\begin_inset Formula $\eta_{(2)}^{\alpha}$
\end_inset
constant.
\end_layout
\begin_layout Standard
We now use these relations to produce a more practical formulation of the slip velocity for our frictional contact implementation.
Taking the material time derivative of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:slip_x2"
nolink "false"
\end_inset
and using the contact persistency condition
\begin_inset Formula $\dot{g}=0$
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Laursen93"
literal "true"
\end_inset
produces
\begin_inset Formula $\mathbf{v}^{\left(2\right)}=\mathbf{v}^{\left(1\right)}+g\dot{\mathbf{n}}^{\left(1\right)}$
\end_inset
.
Substituting Eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:v1"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:both_v2"
nolink "false"
\end_inset
into this expression yields a frame-invariant measure of relative velocity between
\begin_inset Formula $\gamma^{(1)}$
\end_inset
and
\begin_inset Formula $\gamma^{(2)}$
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Poulios15,Curnier95"
literal "true"
\end_inset
,
\begin_inset Formula
\begin{equation}
\mathbf{v}^{r}\equiv\dot{\eta}_{(2)}^{\alpha}\mathbf{g}_{\alpha}^{(2)}=g\dot{\mathbf{n}}^{(1)}+\frac{\partial\mathbf{x}^{(1)}\left(\eta_{(1)}^{\alpha},t\right)}{\partial t}-\frac{\partial\mathbf{x}^{(2)}\left(\eta_{(2)}^{\alpha},t\right)}{\partial t},\label{eq:vr}
\end{equation}
\end_inset
where
\begin_inset Formula $\dot{\mathbf{n}}^{(1)}$
\end_inset
is the material time derivative of
\begin_inset Formula $\mathbf{n}^{(1)}$
\end_inset
in the parametric material frame of
\begin_inset Formula $\gamma^{\left(1\right)}$
\end_inset
,
evaluated from eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:n"
nolink "false"
\end_inset
as
\begin_inset Formula
\begin{equation}
\dot{\mathbf{n}}^{(1)}=\mathbf{P}_{N}\cdot\frac{\dot{\mathbf{g}}_{1}^{(1)}\times\mathbf{g}_{2}^{(1)}+\mathbf{g}_{1}^{(1)}\times\dot{\mathbf{g}}_{2}^{(1)}}{J_{\eta}^{(1)}}\,.\label{eq:n_dot}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\dot{\mathbf{g}}_{\alpha}^{(1)}$
\end_inset
denotes the material time derivative of
\begin_inset Formula $\mathbf{g}_{\alpha}^{(1)}$
\end_inset
in the material frame,
\begin_inset Formula
\begin{equation}
\dot{\mathbf{g}}_{\alpha}^{(1)}\left(\eta_{\left(1\right)}^{\beta},t\right)=\frac{\partial\mathbf{g}_{\alpha}^{(1)}\left(\eta_{\left(1\right)}^{\beta},t\right)}{\partial t}\,,
\end{equation}
\end_inset
and we define the tangential plane projection tensor
\begin_inset Formula $\mathbf{P}_{N}$
\end_inset
as
\begin_inset Formula
\begin{equation}
\mathbf{P}_{N}=\mathbf{I}-\mathbf{n}^{(1)}\otimes\mathbf{n}^{(1)}\,.\label{eq:Pn}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
Previous authors have utilized
\begin_inset Formula $\mathbf{v}^{r}=\dot{\eta}_{(2)}^{\alpha}\mathbf{g}_{\alpha}^{(2)}$
\end_inset
directly instead of the right-hand-side of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:vr"
nolink "false"
\end_inset
;
this expression requires the evaluation of time derivatives of parametric coordinates
\begin_inset CommandInset citation
LatexCommand citep
key "Wriggers90,Laursen93,Sauer15"
literal "true"
\end_inset
,
which necessitates special integration algorithms to handle crossing element boundaries
\begin_inset CommandInset citation
LatexCommand citep
key "Saracibar97"
literal "true"
\end_inset
.
The relative velocity measure on the right-hand-side of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:vr"
nolink "false"
\end_inset
obviates the need for any such special treatment.
In particular,
the choice of
\begin_inset Formula $\partial\mathbf{x}^{(2)}/\partial t$
\end_inset
ensures that element boundaries will never be crossed when calculating this velocity,
since it is evaluated while keeping
\begin_inset Formula $\eta_{(2)}^{\alpha}$
\end_inset
constant.
\end_layout
\begin_layout Standard
The tangential frictional traction in slip depends only on the tangential component of the relative velocity,
therefore we may define the slip direction
\begin_inset Formula $\mathbf{s}^{(1)}$
\end_inset
as the unit vector of the projection
\begin_inset Formula $\mathbf{P}_{N}\cdot\mathbf{v}^{r}$
\end_inset
of
\begin_inset Formula $\mathbf{v}^{r}$
\end_inset
onto the tangent plane of
\begin_inset Formula $\gamma^{\left(1\right)}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\mathbf{s}^{(1)}=\frac{\mathbf{P}_{N}\cdot\mathbf{v}^{r}}{\left|\mathbf{P}_{N}\cdot\mathbf{v}^{r}\right|}\,,\label{eq:s1}
\end{equation}
\end_inset
These definitions of contact kinematics may now be used to formulate frictional contact.
\end_layout
\begin_layout Subsubsection
Coulomb Frictional Contact
\begin_inset CommandInset label
LatexCommand label
name "subsec:SE-Coulomb-Friction"
\end_inset
\end_layout
\begin_layout Standard
This work considers Coulomb frictional contact,
with no distinction made between static and kinetic coefficients of friction.
Although classical Coulomb friction is the most frequently adopted behavior,
it should be noted that other constitutive equations,
including micromechanically-inspired formulations which consider local phenomena,
have been proposed as well
\begin_inset CommandInset citation
LatexCommand citep
key "Wriggers90,Wriggers06"
literal "true"
\end_inset
.
During frictional contact,
the contact traction
\begin_inset Formula $\mathbf{t}^{(i)}$
\end_inset
on the opposing surfaces is determined by the sticking or slipping behavior.
For Coulomb friction,
the relationship between sticking and slipping is described by a slip criterion
\begin_inset Formula $\Phi$
\end_inset
,
where on the primary surface
\begin_inset Formula
\begin{equation}
\Phi=\left|\mathbf{t}_{T}^{(1)}\right|-\mu\left|t_{n}\right|\,.
\end{equation}
\end_inset
Here,
\begin_inset Formula $t_{n}=\mathbf{t}^{(1)}\cdot\mathbf{n}^{(1)}$
\end_inset
is the normal component of the contact traction (negative in compression),
\begin_inset Formula $\mathbf{t}_{T}^{(1)}=\mathbf{t}^{(1)}-t_{n}\mathbf{n}^{(1)}$
\end_inset
is the tangential component of the contact traction,
and
\begin_inset Formula $\mu$
\end_inset
is the friction coefficient.
The value of the slip criterion determines the stick-slip status,
\begin_inset Formula
\begin{equation}
\Phi\begin{cases}
<0 & \text{sticking}\\
=0 & \text{slipping}
\end{cases}\label{eq:slip-criterion}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
Algorithmically,
stick and slip are typically based on a predictor-corrector approach derived from an analogy with elastoplasticity
\begin_inset CommandInset citation
LatexCommand citep
key "Giannakopoulos89"
literal "true"
\end_inset
,
leading to constitutive relations for the rate of the traction and thus requiring numerical integration
\begin_inset CommandInset citation
LatexCommand citep
key "Saracibar97"
literal "true"
\end_inset
.
Variations of this approach have been utilized in differing forms
\begin_inset CommandInset citation
LatexCommand citep
key "Wriggers90,Laursen93,Sauer15"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
In contrast,
this presentation proposes to treat stick and slip separately,
controlled by an exact return mapping based on the slip criterion.
The return mapping defines a rule for correcting a calculated traction which exceeds the slip limit and is thus not permissible.
Stick will be treated as a special case of a tied interface,
whereas in slip the traction will be directly prescribed.
The formulation of Coulomb frictional contact is presented for both penalty and augmented Lagrangian regularization schemes.
\end_layout
\begin_layout Subsubsection
Penalty Scheme
\begin_inset CommandInset label
LatexCommand label
name "subsec:SE-Penalty-Scheme"
\end_inset
\end_layout
\begin_layout Standard
During stick,
no relative motion may occur between surfaces;
thus,
points on
\begin_inset Formula $\gamma^{(1)}$
\end_inset
and
\begin_inset Formula $\gamma^{(2)}$
\end_inset
that were in contact at the previous time must remain in contact.
The stick traction may be obtained by penalizing any relative motion between such points,
\begin_inset Formula
\begin{equation}
\mathbf{t}^{(1)}=\varepsilon\mathbf{g}_{s}\,,\label{eq:stick_traction}
\end{equation}
\end_inset
where
\begin_inset Formula $\varepsilon$
\end_inset
is the penalty parameter and we have employed eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:stick_gap"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
During slip,
we first calculate the normal component of the contact traction by penalizing the normal gap of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:slip_gap"
nolink "false"
\end_inset
,
\begin_inset Formula
\begin{equation}
t_{n}=\varepsilon g\,.\label{eq:slip_tn}
\end{equation}
\end_inset
The total traction vector is then directly obtained as
\begin_inset Formula
\begin{equation}
\mathbf{t}^{(1)}=t_{n}\left(\mathbf{n}^{(1)}+\mu\mathbf{s}^{(1)}\right)\,.\label{eq:slip_traction}
\end{equation}
\end_inset
Here we have achieved an exact expression for the tangential traction in slip and remark that since
\begin_inset Formula $t_{n}$
\end_inset
is strictly negative in contact,
the frictional contact traction
\begin_inset Formula $\mu t_{n}\mathbf{s}^{(1)}$
\end_inset
acting on
\begin_inset Formula $\gamma^{\left(1\right)}$
\end_inset
is in the direction opposing the motion of
\begin_inset Formula $\gamma^{\left(1\right)}$
\end_inset
relative to
\begin_inset Formula $\gamma^{\left(2\right)}$
\end_inset
.
A trial state and return map,
presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:SE-Stick-Slip-Algorithm"
nolink "false"
\end_inset
,
is employed to differentiate between stick and slip.
\end_layout
\begin_layout Subsubsection
Augmented Lagrangian Scheme
\begin_inset CommandInset label
LatexCommand label
name "subsec:SE-Augmented-Lagrangian"
\end_inset
\end_layout
\begin_layout Standard
The augmented Lagrangian scheme employed in this study is first order and utilizes Uzawa's algorithm
\begin_inset CommandInset citation
LatexCommand citep
key "Bertsekas82"
literal "true"
\end_inset
,
where multipliers are updated outside of the Newton step,
producing a double loop algorithm (see the texts by Laursen
\begin_inset CommandInset citation
LatexCommand citep
key "Laursen02"
literal "true"
\end_inset
and Wriggers
\begin_inset CommandInset citation
LatexCommand citep
key "Wriggers06"
literal "true"
\end_inset
for a discussion of Uzawa's algorithm applied to frictional contact problems).
Such an approach preserves the quadratic convergence of Newton's method near solution points.
The presented scheme is a modification of the approach suggested by Simo and Laursen
\begin_inset CommandInset citation
LatexCommand citep
key "Simo92c"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
During stick,
the traction is calculated by augmenting the vector gap
\begin_inset Formula $\mathbf{g}_{s}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\mathbf{t}^{(1)}=\boldsymbol{\lambda}_{s}+\varepsilon\mathbf{g}_{s}\,,\label{eq:AL_stick_traction}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\lambda}_{s}$
\end_inset
is the vectorial Lagrange multiplier in stick.
In slip,
we first calculate the normal component of the contact traction by augmenting the normal gap
\begin_inset Formula $g$
\end_inset
,
\begin_inset Formula
\begin{equation}
t_{n}=\lambda_{n}+\varepsilon g\,,\label{eq:AL_tn}
\end{equation}
\end_inset
where
\begin_inset Formula $\lambda_{n}$
\end_inset
is the normal Lagrange multiplier.
The total traction vector in slip is then defined to be
\begin_inset Formula
\begin{equation}
\mathbf{t}^{(1)}=t_{n}\left(\mathbf{n}^{(1)}+\mu\mathbf{s}^{(1)}\right)\,,
\end{equation}
\end_inset
where
\begin_inset Formula $t_{n}$
\end_inset
is given by eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:AL_tn"
nolink "false"
\end_inset
.
In this approach the Lagrange multiplier
\begin_inset Formula $\boldsymbol{\lambda}_{s}$
\end_inset
augments the traction
\begin_inset Formula $\mathbf{t}^{(1)}$
\end_inset
in stick,
but in slip only the normal component of traction
\begin_inset Formula $t_{n}$
\end_inset
is augmented by
\begin_inset Formula $\lambda_{n}$
\end_inset
and the tangential traction is directly prescribed from the augmented normal component.
This approach has the advantage of preserving an exact mapping to the proper tangential traction in slip,
which is consistent with the augmented normal traction.
As in the penalty case,
a trial state and return map controlled by the slip criterion is employed to differentiate between stick and slip,
presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:SE-Stick-Slip-Algorithm"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
The Lagrange multipliers
\begin_inset Formula $\lambda_{n}$
\end_inset
and
\begin_inset Formula $\boldsymbol{\lambda}_{s}$
\end_inset
are held constant during each Newton step.
Outside of the Newton loop,
in this study we propose a novel update scheme where one of these multipliers is considered active and is updated from the kinematic data (
\begin_inset Formula $\mathbf{g}_{s}$
\end_inset
or
\begin_inset Formula $g$
\end_inset
),
and the other is considered passive and is derived from the active multiplier.
The contact status is determined via eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:slip-criterion"
nolink "false"
\end_inset
.
If the current status is stick (
\begin_inset Formula $\Phi<0$
\end_inset
),
we update
\begin_inset Formula $\boldsymbol{\lambda}_{s}$
\end_inset
(active) and derive
\begin_inset Formula $\lambda_{n}$
\end_inset
(passive),
\begin_inset Formula
\begin{equation}
\begin{aligned}\boldsymbol{\lambda}_{s} & \leftarrow\boldsymbol{\lambda}_{s}+\varepsilon\mathbf{g}_{s}\\
\lambda_{n} & =\boldsymbol{\lambda}_{s}\cdot\mathbf{n}^{(1)}
\end{aligned}
\label{eq:AL-stick}
\end{equation}
\end_inset
Alternatively,
if the current contact status is slip (
\begin_inset Formula $\Phi=0$
\end_inset
),
we update
\begin_inset Formula $\lambda_{n}$
\end_inset
(active) and derive
\begin_inset Formula $\boldsymbol{\lambda}_{s}$
\end_inset
(passive),
\begin_inset Formula
\begin{equation}
\begin{aligned}\lambda_{n} & \leftarrow\lambda_{n}+\varepsilon g\\
\boldsymbol{\lambda}_{s} & =\lambda_{n}\left(\mathbf{n}^{(1)}+\mu\mathbf{s}^{(1)}\right)
\end{aligned}
\label{eq:AL-slip}
\end{equation}
\end_inset
An active-passive strategy for the multipliers ensures consistency when the contact status switches between stick and slip and is made possible due to this formulation's use of a single penalty parameter
\begin_inset Formula $\varepsilon$
\end_inset
,
in conjunction with an exact return mapping for slip.
\end_layout
\begin_layout Standard
Augmentations proceed until a tolerance related to a convergence criterion is met.
In this formulation,
two separate convergence criteria and their associated tolerances are defined.
The first criterion considers the relative change of the norms of the active Lagrange multipliers between successive iterations,
where the associated unitless tolerance
\begin_inset Formula $P_{tol}$
\end_inset
specifies the largest allowable change.
Convergence is achieved when
\begin_inset Formula
\begin{equation}
\left|\frac{L^{r}-L^{r-1}}{L^{r}}\right|
|
\begin_inset Text
\begin_layout Plain Layout
Joint
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Spherical
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Revolute
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prismatic
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Cylindrical
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Planar
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Lock
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
linear spring
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
\begin_inset Formula $\mathbf{P}_{1},\mathbf{Q}_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\mathbf{P}_{1},\mathbf{Q}_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\mathbf{P}_{2},\mathbf{Q}_{2}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\mathbf{P}_{2},\mathbf{Q}_{2}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\mathbf{P}_{3},\mathbf{Q}_{3}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
\begin_inset Formula $\mathbf{P}_{1},\mathbf{Q}_{1}$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
torsional spring
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $k=0$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $k=1$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $k=3$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $k=1$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $k=1$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $k=3$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
linear damper
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
\begin_inset Formula $\mathbf{P}_{1},\mathbf{V}_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\mathbf{P}_{1},\mathbf{V}_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\mathbf{P}_{2},\mathbf{V}_{2}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\mathbf{P}_{2},\mathbf{V}_{2}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\mathbf{P}_{3},\mathbf{V}_{3}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
\begin_inset Formula $\mathbf{P}_{1},\mathbf{V}_{1}$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
torsional damper
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\mathbf{0},\mathbf{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\mathbf{P}_{2},\mathbf{W}_{2}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\mathbf{P}_{1},\mathbf{W}_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\mathbf{P}_{2},\mathbf{W}_{2}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\mathbf{P}_{2},\mathbf{W}_{2}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\mathbf{P}_{1},\mathbf{W}_{1}$
\end_inset
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Subsection
Prescribed Joint Forces and Moments
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-Joint-Forces"
\end_inset
\end_layout
\begin_layout Subsubsection
Prescribed Force at Joint
\begin_inset CommandInset label
LatexCommand label
name "subsec:Joint-Prescribed-Force"
\end_inset
\end_layout
\begin_layout Standard
When a joint has a translational degree of freedom along
\begin_inset Formula $\mathbf{n}^{\left(1\right)}$
\end_inset
,
there may be a need to prescribe the force
\begin_inset Formula $f$
\end_inset
along that direction.
This means that the reaction force
\begin_inset Formula $\mathbf{f}^{\left(1\right)}$
\end_inset
may be supplemented with the force
\begin_inset Formula $f\,\mathbf{n}^{\left(1\right)}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\mathbf{f}^{\left(1\right)}=f\mathbf{n}^{\left(1\right)}\,,\label{eq:pfj-1}
\end{equation}
\end_inset
and the linearization produces
\begin_inset Formula
\begin{equation}
D\mathbf{f}^{\left(1\right)}=-f\,\hat{\mathbf{n}}^{\left(1\right)}\cdot\Delta\boldsymbol{\theta}^{\left(1\right)}\,.\label{eq:pfj-2}
\end{equation}
\end_inset
Thus,
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{f\theta}^{\left(1\right)}=-f\,\hat{\mathbf{n}}^{\left(1\right)}}\,,\label{eq:pfj-3}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{fr}^{\left(1\right)}=\mathbf{K}_{fr}^{\left(2\right)}=\mathbf{K}_{f\theta}^{\left(2\right)}=\mathbf{0}}\,.\label{eq:pfj-4}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
Prescribed Moment at Joint
\begin_inset CommandInset label
LatexCommand label
name "subsec:Joint-Prescribed-Moment"
\end_inset
\end_layout
\begin_layout Standard
When a joint has a rotational degree of freedom along
\begin_inset Formula $\mathbf{n}^{\left(1\right)}$
\end_inset
,
there may be a need to prescribe the moment
\begin_inset Formula $m$
\end_inset
along that direction.
This means that the reaction moment
\begin_inset Formula $\mathbf{m}^{\left(1\right)}$
\end_inset
may be supplemented with the moment
\begin_inset Formula $m\,\mathbf{n}^{\left(1\right)}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\mathbf{m}^{\left(1\right)}=m\,\mathbf{n}^{\left(1\right)}\,,\label{eq:pmj-1}
\end{equation}
\end_inset
and the linearization produces
\begin_inset Formula
\begin{equation}
D\mathbf{m}^{\left(1\right)}=-m\,\hat{\mathbf{n}}^{\left(1\right)}\cdot\Delta\boldsymbol{\theta}^{\left(1\right)}\,.\label{eq:pmj-2}
\end{equation}
\end_inset
Thus,
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{m\theta}^{\left(1\right)}=-m\,\hat{\mathbf{n}}^{\left(1\right)}}\,,\label{eq:pmj-3}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{mr}^{\left(1\right)}=\mathbf{K}_{mr}^{\left(2\right)}=\mathbf{K}_{m\theta}^{\left(2\right)}=\mathbf{0}}\,.\label{eq:pmj-4}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Prescribed Joint Motion
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-Joint-Motion"
\end_inset
\end_layout
\begin_layout Subsubsection
Prescribed Displacement at Joint
\begin_inset CommandInset label
LatexCommand label
name "subsec:Joint-Prescribed-Displacement"
\end_inset
\end_layout
\begin_layout Standard
When a joint has a translational degree of freedom along
\begin_inset Formula $\mathbf{n}^{\left(1\right)}$
\end_inset
,
there may be a need to prescribe the relative displacement
\begin_inset Formula $d$
\end_inset
along that direction.
This can be achieved by supplementing the joint reaction force with a force that closes the gap between the current and desired translation,
\begin_inset Formula
\begin{equation}
\mathbf{f}^{\left(1\right)}=\varepsilon_{c}\left[\left(\mathbf{n}^{\left(1\right)}\otimes\mathbf{n}^{\left(1\right)}\right)\cdot\mathbf{g}-d\,\mathbf{n}^{\left(1\right)}\right]=\varepsilon_{c}\left(\mathbf{P}_{3}\cdot\mathbf{g}-d\,\mathbf{n}^{\left(1\right)}\right)\,,\label{eq:pdj-1}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{P}_{3}$
\end_inset
is given in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:jf-P-projection"
nolink "false"
\end_inset
.
Then,
\begin_inset Formula
\begin{equation}
D\mathbf{f}^{\left(1\right)}=D\mathbf{P}_{3}\cdot\mathbf{g}+\mathbf{P}_{3}\cdot D\mathbf{g}+d\,\hat{\mathbf{n}}^{\left(1\right)}\cdot\Delta\boldsymbol{\theta}^{\left(1\right)}\label{eq:pdj-2}
\end{equation}
\end_inset
Using the results of Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Joint-Springs"
nolink "false"
\end_inset
,
the stiffnesses are supplemented with
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned}\mathbf{K}_{fr}^{\left(1\right)} & =-\varepsilon_{c}\mathbf{P}_{3}\\
\mathbf{K}_{f\theta}^{\left(1\right)} & =\varepsilon_{c}\left(\mathbf{P}_{3}\cdot\hat{\mathbf{z}}^{\left(1\right)}+\mathbf{Q}+d\,\hat{\mathbf{n}}^{\left(1\right)}\right)\\
\mathbf{K}_{fr}^{\left(2\right)} & =\varepsilon_{c}\mathbf{P}_{3}\\
\mathbf{K}_{f\theta}^{\left(2\right)} & =-\varepsilon_{c}\mathbf{P}_{3}\cdot\hat{\mathbf{z}}^{\left(2\right)}
\end{aligned}
}\,.\label{eq:pdj-3}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
Prescribed Rotation at Joint
\begin_inset CommandInset label
LatexCommand label
name "subsec:Joint-Prescribed-Rotation"
\end_inset
\end_layout
\begin_layout Standard
The relative rotation between the rigid bodies is
\begin_inset Formula
\begin{equation}
\mathbf{Q}=\boldsymbol{\Lambda}^{\left(2\right)}\cdot\boldsymbol{\Lambda}^{\left(1\right)T}=\sum_{j}\mathbf{e}_{j}^{\left(2\right)}\otimes\mathbf{e}_{j}^{\left(1\right)}\,.\label{eq:prj-1}
\end{equation}
\end_inset
We want it to be equal to a rotation by
\begin_inset Formula $\boldsymbol{\chi}$
\end_inset
as expressed in the basis
\begin_inset Formula $\mathbf{e}_{j}^{\left(1\right)}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\mathbf{A}=\exp\left[\boldsymbol{\chi}\right]\,.\label{eq:prj-2}
\end{equation}
\end_inset
We enforce this constraint by requiring that
\begin_inset Formula
\begin{equation}
\mathbf{A}\cdot\mathbf{Q}^{T}=\mathbf{I}\,.\label{eq:prj-3}
\end{equation}
\end_inset
We may thus evaluate
\begin_inset Formula
\begin{equation}
\mathbf{R}=\mathbf{A}\cdot\mathbf{Q}^{T}\,,\label{eq:prj-4}
\end{equation}
\end_inset
and expect that
\begin_inset Formula $\mathbf{R}=\mathbf{I}$
\end_inset
when the constraint is enforced.
Note that
\begin_inset Formula $\mathbf{R}^{T}\cdot\mathbf{R}=\mathbf{I}$
\end_inset
because of the orthogonality of
\begin_inset Formula $\mathbf{Q}$
\end_inset
and
\begin_inset Formula $\mathbf{A}$
\end_inset
,
i.e.,
\begin_inset Formula $\mathbf{R}$
\end_inset
is always orthogonal,
even when the constraint is not enforced.
The axial vector of
\begin_inset Formula $\mathbf{R}$
\end_inset
may be denoted by
\begin_inset Formula $\boldsymbol{\xi}$
\end_inset
,
i.e.,
\begin_inset Formula $\mathbf{R}=\exp\left[\boldsymbol{\xi}\right]$
\end_inset
,
and the constraint is enforced when
\begin_inset Formula $\boldsymbol{\xi}=\mathbf{0}$
\end_inset
.
Therefore,
a moment
\begin_inset Formula $\varepsilon_{r}\boldsymbol{\xi}$
\end_inset
needs to be prescribed,
\begin_inset Formula
\begin{equation}
\mathbf{m}^{\left(1\right)}=\varepsilon_{r}\boldsymbol{\xi}\,.\label{eq:prj-5}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
Since
\begin_inset Formula $\mathbf{R}$
\end_inset
is orthogonal,
we can linearize it along an increment
\begin_inset Formula $\Delta\boldsymbol{\xi}$
\end_inset
,
\begin_inset Formula $D\mathbf{R}\left[\Delta\boldsymbol{\xi}\right]=\Delta\hat{\boldsymbol{\xi}}\cdot\mathbf{R}$
\end_inset
,
from which it follows that
\begin_inset Formula $\Delta\hat{\boldsymbol{\xi}}=D\mathbf{R}\cdot\mathbf{R}^{T}$
\end_inset
with
\begin_inset Formula
\begin{equation}
D\mathbf{R}=\mathbf{A}\cdot D\mathbf{Q}^{T}=\mathbf{A}\cdot\left(\Delta\hat{\boldsymbol{\theta}}^{\left(1\right)}\cdot\mathbf{Q}^{T}-\mathbf{Q}^{T}\cdot\Delta\hat{\boldsymbol{\theta}}^{\left(2\right)}\right)\,,\label{eq:prj-6}
\end{equation}
\end_inset
so that
\begin_inset Formula
\begin{equation}
\Delta\hat{\boldsymbol{\xi}}=\mathbf{A}\cdot\Delta\hat{\boldsymbol{\theta}}^{\left(1\right)}\cdot\mathbf{A}^{T}-\mathbf{R}\cdot\Delta\hat{\boldsymbol{\theta}}^{\left(2\right)}\cdot\mathbf{R}^{T}\,.\label{eq:prj-7}
\end{equation}
\end_inset
From this expression we get
\begin_inset Formula
\begin{equation}
\Delta\boldsymbol{\xi}=\mathbf{A}\cdot\Delta\boldsymbol{\theta}^{\left(1\right)}-\mathbf{R}\cdot\Delta\boldsymbol{\theta}^{\left(2\right)}\,.\label{eq:prj-8}
\end{equation}
\end_inset
Thus,
\begin_inset Formula
\begin{equation}
D\mathbf{m}^{\left(1\right)}=\varepsilon_{r}\left(\mathbf{A}\cdot\Delta\boldsymbol{\theta}^{\left(1\right)}-\mathbf{R}\cdot\Delta\boldsymbol{\theta}^{\left(2\right)}\right)\,.\label{eq:prj-9}
\end{equation}
\end_inset
It follows that
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{K}_{mr}^{\left(1\right)}=\mathbf{K}_{mr}^{\left(2\right)}=\mathbf{0}}\,,\label{eq:prj-10}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned}\mathbf{K}_{m\theta}^{\left(1\right)} & =\varepsilon_{r}\mathbf{A}\\
\mathbf{K}_{m\theta}^{\left(2\right)} & =-\varepsilon_{r}\mathbf{R}
\end{aligned}
}\,.\label{eq:prj-11}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Other Rigid Connectors
\begin_inset CommandInset label
LatexCommand label
name "subsec:Other-Rigid-Connectors"
\end_inset
\end_layout
\begin_layout Subsubsection
Spring Between Rigid Bodies
\begin_inset CommandInset label
LatexCommand label
name "subsec:Spring-Between-Rigid-Bodies"
\end_inset
\end_layout
\begin_layout Standard
Consider a spring between points
\begin_inset Formula $\mathbf{x}^{\left(i\right)}$
\end_inset
on rigid bodies
\begin_inset Formula $\left(1\right)$
\end_inset
and
\begin_inset Formula $\left(2\right)$
\end_inset
.
The spring force is oriented along
\begin_inset Formula $\mathbf{n}$
\end_inset
,
where
\begin_inset Formula
\begin{equation}
\mathbf{n}=\frac{\mathbf{x}^{\left(2\right)}-\mathbf{x}^{\left(1\right)}}{\left|\mathbf{x}^{\left(2\right)}-\mathbf{x}^{\left(1\right)}\right|}\,.\label{eq:rbs-1}
\end{equation}
\end_inset
We may write
\begin_inset Formula
\begin{equation}
L=\left|\mathbf{x}^{\left(2\right)}-\mathbf{x}^{\left(1\right)}\right|\,,\quad L_{0}=\left|\mathbf{X}^{\left(2\right)}-\mathbf{X}^{\left(2\right)}\right|\,.\label{eq:rbs-2}
\end{equation}
\end_inset
Then,
the spring force acting on body
\begin_inset Formula $\left(1\right)$
\end_inset
is
\begin_inset Formula
\begin{equation}
\mathbf{f}^{\left(1\right)}=k\left(L-L_{0}\right)\mathbf{n}=k\left(\mathbf{x}^{\left(2\right)}-\mathbf{x}^{\left(1\right)}-L_{0}\mathbf{n}\right)\,,\label{eq:rbs-3}
\end{equation}
\end_inset
where
\begin_inset Formula $k$
\end_inset
is the spring constant.
It is understood that the special case
\begin_inset Formula $L_{0}=0$
\end_inset
produces
\begin_inset Formula $\mathbf{f}^{\left(1\right)}=k\left(\mathbf{x}^{\left(2\right)}-\mathbf{x}^{\left(1\right)}\right)$
\end_inset
.
We do not need to use the augmented Lagrangian method here,
therefore
\begin_inset Formula $\mathbf{f}^{\left(1\right)}=k\mathbf{c}$
\end_inset
,
where
\begin_inset Formula
\begin{equation}
\mathbf{c}=\mathbf{x}_{n+\alpha}^{\left(2\right)}-\mathbf{x}_{n+\alpha}^{\left(1\right)}-L_{0}\frac{\mathbf{x}_{n+\alpha}^{\left(2\right)}-\mathbf{x}_{n+\alpha}^{\left(1\right)}}{\left|\mathbf{x}_{n+\alpha}^{\left(2\right)}-\mathbf{x}_{n+\alpha}^{\left(1\right)}\right|}\,.\label{eq:rbs-4}
\end{equation}
\end_inset
Since the spring may freely pivot about its insertion point,
we let
\begin_inset Formula $\mathbf{m}^{\left(1\right)}=\mathbf{0}$
\end_inset
.
Thus,
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned}\mathbf{f}^{\left(1\right)} & =k\left(\mathbf{x}_{n+\alpha}^{\left(2\right)}-\mathbf{x}_{n+\alpha}^{\left(1\right)}-L_{0}\frac{\mathbf{x}_{n+\alpha}^{\left(2\right)}-\mathbf{x}_{n+\alpha}^{\left(1\right)}}{\left|\mathbf{x}_{n+\alpha}^{\left(2\right)}-\mathbf{x}_{n+\alpha}^{\left(1\right)}\right|}\right)\\
\mathbf{m}^{\left(1\right)} & =\mathbf{0}
\end{aligned}
}\label{eq:rbs-5}
\end{equation}
\end_inset
and the virtual work associated with this spring is
\begin_inset Formula
\begin{equation}
\delta G=\left[\begin{array}{cccc}
\delta\mathbf{r}^{\left(1\right)} & \delta\boldsymbol{\omega}^{\left(1\right)} & \delta\mathbf{r}^{\left(2\right)} & \delta\boldsymbol{\omega}^{\left(2\right)}\end{array}\right]\left[\begin{array}{c}
\mathbf{f}^{\left(1\right)}\\
\hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{f}^{\left(1\right)}\\
-\mathbf{f}^{\left(1\right)}\\
-\hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{f}^{\left(1\right)}
\end{array}\right]\,.\label{eq:rbs-6}
\end{equation}
\end_inset
The linearization of
\begin_inset Formula $\delta G$
\end_inset
may be expressed as
\begin_inset Formula
\begin{equation}
-D\delta G=\left[\begin{array}{cccc}
\delta\mathbf{r}^{\left(1\right)} & \delta\boldsymbol{\omega}^{\left(1\right)} & \delta\mathbf{r}^{\left(2\right)} & \delta\boldsymbol{\omega}^{\left(2\right)}\end{array}\right]\left[\mathbf{K}\right]\left[\begin{array}{c}
\Delta\mathbf{r}^{\left(1\right)}\\
\Delta\boldsymbol{\theta}^{\left(1\right)}\\
\Delta\mathbf{r}^{\left(2\right)}\\
\Delta\boldsymbol{\theta}^{\left(2\right)}
\end{array}\right]\,,\label{eq:rbs-7}
\end{equation}
\end_inset
where the stiffness matrix is
\begin_inset Formula
\begin{equation}
\left[\mathbf{K}\right]=k\alpha\left[\begin{array}{cccc}
\mathbf{P} & -\mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(1\right)} & -\mathbf{P} & \mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(2\right)}\\
\hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{P} & -\hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(1\right)} & -\hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{P} & \hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(2\right)}\\
-\mathbf{P} & \mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(1\right)} & \mathbf{P} & -\mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(2\right)}\\
-\hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{P} & \hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(1\right)} & \hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{P} & -\hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(2\right)}
\end{array}\right]\,,\label{eq:rbs-8}
\end{equation}
\end_inset
with
\begin_inset Formula
\begin{equation}
\mathbf{P}=\left(1-\frac{L_{0}}{L_{n+\alpha}}\right)\mathbf{I}+\frac{L_{0}}{L_{n+\alpha}}\mathbf{n}_{n+\alpha}\otimes\mathbf{n}_{n+\alpha}\,.\label{eq:rbs-9}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
Damper Between Rigid Bodies
\end_layout
\begin_layout Standard
Consider a damper (e.g.,
a dashpot) inserted between points on two rigid bodies.
The force generated by this dashpot is
\begin_inset Formula
\begin{equation}
\mathbf{f}^{\left(1\right)}=\varepsilon_{c}\dot{\mathbf{c}}\,.\label{eq:rbd-1}
\end{equation}
\end_inset
where
\begin_inset Formula $\dot{\mathbf{c}}$
\end_inset
is the relative velocity between insertion points,
\begin_inset Formula
\begin{equation}
\dot{\mathbf{c}}=\mathbf{v}_{n+\alpha}^{\left(2\right)}-\mathbf{v}_{n+\alpha}^{\left(1\right)}\,.\label{eq:rbd-2}
\end{equation}
\end_inset
This relative velocity is related to the rigid body degrees of freedom by
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{x}_{n+\alpha}^{\left(i\right)} & =\mathbf{r}_{n+\alpha}^{\left(i\right)}+\mathbf{z}_{n+\alpha}^{\left(i\right)}\\
\mathbf{v}_{n}^{\left(i\right)} & =\dot{\mathbf{r}}_{n}^{\left(i\right)}+\boldsymbol{\omega}_{n}\times\mathbf{z}_{n}^{\left(i\right)}\\
\mathbf{v}_{n+1}^{\left(i\right)} & =\dot{\mathbf{r}}_{n+1}^{\left(i\right)}+\boldsymbol{\omega}_{n+1}\times\mathbf{z}_{n+1}^{\left(i\right)}\\
\mathbf{v}_{n+\alpha}^{\left(i\right)} & =\alpha\mathbf{v}_{n+1}^{\left(i\right)}+\left(1-\alpha\right)\mathbf{v}_{n}^{\left(i\right)}
\end{aligned}
\,.\label{eq:rbd-3}
\end{equation}
\end_inset
Since the dashpot may freely rotate about its insertion points,
we set
\begin_inset Formula $\mathbf{m}^{\left(1\right)}=\mathbf{0}$
\end_inset
.
It follows that
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned}\mathbf{f}^{\left(1\right)} & =\varepsilon_{c}\left(\mathbf{v}_{n+\alpha}^{\left(2\right)}-\mathbf{v}_{n+\alpha}^{\left(1\right)}\right)\\
\mathbf{m}^{\left(1\right)} & =\mathbf{0}
\end{aligned}
}\,,\label{eq:rbd-4}
\end{equation}
\end_inset
and the virtual work resulting from the dashpot is
\begin_inset Formula
\begin{equation}
\delta G=\left[\begin{array}{cccc}
\delta\mathbf{r}^{\left(1\right)} & \delta\boldsymbol{\omega}^{\left(1\right)} & \delta\mathbf{r}^{\left(2\right)} & \delta\boldsymbol{\omega}^{\left(2\right)}\end{array}\right]\left[\begin{array}{c}
\mathbf{f}^{\left(1\right)}\\
\hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{f}^{\left(1\right)}\\
-\mathbf{f}^{\left(1\right)}\\
-\hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{f}^{\left(1\right)}
\end{array}\right]\,.\label{eq:rbd-5}
\end{equation}
\end_inset
The linearization of
\begin_inset Formula $\delta G$
\end_inset
may be written as
\begin_inset Formula
\begin{equation}
\begin{aligned}-D\delta G & =\left[\begin{array}{cccc}
\delta\mathbf{r}^{\left(1\right)} & \delta\boldsymbol{\omega}^{\left(1\right)} & \delta\mathbf{r}^{\left(2\right)} & \delta\boldsymbol{\omega}^{\left(2\right)}\end{array}\right]\varepsilon_{c}\alpha\left[\begin{array}{cccc}
\mathbf{A} & -\mathbf{B}^{\left(1\right)} & -\mathbf{A} & \mathbf{B}^{\left(2\right)}\\
\hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{A} & -\hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{B}^{\left(1\right)} & -\hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{A} & \hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{B}^{\left(2\right)}\\
-\mathbf{A} & \mathbf{B}^{\left(1\right)} & \mathbf{A} & -\mathbf{B}^{\left(2\right)}\\
-\hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{A} & \hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{B}^{\left(1\right)} & \hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{A} & -\hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{B}^{\left(2\right)}
\end{array}\right]\left[\begin{array}{c}
\Delta\mathbf{r}^{\left(1\right)}\\
\Delta\boldsymbol{\theta}^{\left(1\right)}\\
\Delta\mathbf{r}^{\left(2\right)}\\
\Delta\boldsymbol{\theta}^{\left(2\right)}
\end{array}\right]\end{aligned}
\,,\label{eq:rbd-6}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\left[\mathbf{K}\right]=\varepsilon_{c}\alpha\left[\begin{array}{cccc}
\mathbf{A} & -\mathbf{B}^{\left(1\right)} & -\mathbf{A} & \mathbf{B}^{\left(2\right)}\\
\hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{A} & -\hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{B}^{\left(1\right)} & -\hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{A} & \hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{B}^{\left(2\right)}\\
-\mathbf{A} & \mathbf{B}^{\left(1\right)} & \mathbf{A} & -\mathbf{B}^{\left(2\right)}\\
-\hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{A} & \hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{B}^{\left(1\right)} & \hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{A} & -\hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{B}^{\left(2\right)}
\end{array}\right]\,,\label{eq:rbd-7}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{A} & =\frac{\gamma}{\beta\Delta t}\mathbf{I}\\
\mathbf{B}^{\left(i\right)} & =\frac{\gamma}{\beta\Delta t}\hat{\mathbf{z}}_{n+1}^{\left(i\right)}\cdot\mathbf{T}^{T}\left(\boldsymbol{\theta}^{\left(i\right)}\right)+\hat{\boldsymbol{\omega}}_{n+1}\cdot\hat{\mathbf{z}}_{n+1}^{\left(i\right)}
\end{aligned}
\,.\label{eq:rbd-8}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
Contractile Force Between Rigid Bodies
\begin_inset CommandInset label
LatexCommand label
name "subsec:Contractile-Force-Rigid"
\end_inset
\end_layout
\begin_layout Standard
Consider a contractile force between points
\begin_inset Formula $\mathbf{x}^{\left(i\right)}$
\end_inset
on rigid bodies
\begin_inset Formula $\left(1\right)$
\end_inset
and
\begin_inset Formula $\left(2\right)$
\end_inset
.
The force is oriented along
\begin_inset Formula $\mathbf{n}$
\end_inset
,
where
\begin_inset Formula
\begin{equation}
\mathbf{n}=\frac{\mathbf{x}^{\left(2\right)}-\mathbf{x}^{\left(1\right)}}{\left|\mathbf{x}^{\left(2\right)}-\mathbf{x}^{\left(1\right)}\right|}\,.\label{eq:rcf-1}
\end{equation}
\end_inset
Let
\begin_inset Formula $L=\left|\mathbf{x}^{\left(2\right)}-\mathbf{x}^{\left(1\right)}\right|$
\end_inset
and
\begin_inset Formula $L_{0}=\left|\mathbf{X}^{\left(2\right)}-\mathbf{X}^{\left(2\right)}\right|$
\end_inset
,
so that the contractile force acting on body
\begin_inset Formula $\left(1\right)$
\end_inset
is given by
\begin_inset Formula
\begin{equation}
\mathbf{f}^{\left(1\right)}=f_{0}\mathbf{n}=\frac{f_{0}}{L}\left(\mathbf{x}^{\left(2\right)}-\mathbf{x}^{\left(1\right)}\right)\,.\label{eq:rcf-2}
\end{equation}
\end_inset
We do not need to use the augmented Lagrangian method here,
thus
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\boxed{\begin{aligned}\mathbf{f}^{\left(1\right)} & =f_{0}\frac{\mathbf{x}_{n+\alpha}^{\left(2\right)}-\mathbf{x}_{n+\alpha}^{\left(1\right)}}{\left|\mathbf{x}_{n+\alpha}^{\left(2\right)}-\mathbf{x}_{n+\alpha}^{\left(1\right)}\right|}\\
\mathbf{m}^{\left(1\right)} & =\mathbf{0}
\end{aligned}
}\label{eq:rcf-3}
\end{equation}
\end_inset
where we assume that the contractile force pivots freely at the rigid body insertiones.
The virtual work resulting from this contractile force is thus
\begin_inset Formula
\begin{equation}
\delta G=\left[\begin{array}{cccc}
\delta\mathbf{r}^{\left(1\right)} & \delta\boldsymbol{\omega}^{\left(1\right)} & \delta\mathbf{r}^{\left(2\right)} & \delta\boldsymbol{\omega}^{\left(2\right)}\end{array}\right]\left[\begin{array}{c}
\mathbf{f}^{\left(1\right)}\\
\hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{f}^{\left(1\right)}\\
-\mathbf{f}^{\left(1\right)}\\
-\hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{f}^{\left(1\right)}
\end{array}\right]\,,\label{eq:rcf-4}
\end{equation}
\end_inset
and its linearization is
\begin_inset Formula
\begin{equation}
-D\delta G=\left[\begin{array}{cccc}
\delta\mathbf{r}^{\left(1\right)} & \delta\boldsymbol{\omega}^{\left(1\right)} & \delta\mathbf{r}^{\left(2\right)} & \delta\boldsymbol{\omega}^{\left(2\right)}\end{array}\right]\left[\mathbf{K}\right]\left[\begin{array}{c}
\Delta\mathbf{r}^{\left(1\right)}\\
\Delta\boldsymbol{\theta}^{\left(1\right)}\\
\Delta\mathbf{r}^{\left(2\right)}\\
\Delta\boldsymbol{\theta}^{\left(2\right)}
\end{array}\right]\,.\label{eq:rcf-5}
\end{equation}
\end_inset
Here,
the stiffness matrix is given by
\begin_inset Formula
\begin{equation}
\left[\mathbf{K}\right]=\alpha\frac{f_{0}}{L_{n+\alpha}}\left[\begin{array}{cccc}
\mathbf{P} & -\mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(1\right)} & -\mathbf{P} & \mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(2\right)}\\
\hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{P} & -\hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(1\right)} & -\hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{P} & \hat{\mathbf{z}}_{n+\alpha}^{\left(1\right)}\cdot\mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(2\right)}\\
-\mathbf{P} & \mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(1\right)} & \mathbf{P} & -\mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(2\right)}\\
-\hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{P} & \hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(1\right)} & \hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{P} & -\hat{\mathbf{z}}_{n+\alpha}^{\left(2\right)}\cdot\mathbf{P}\cdot\hat{\mathbf{z}}_{n+1}^{\left(2\right)}
\end{array}\right]\,,\label{eq:rcf-6}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{P}=\mathbf{I}-\mathbf{n}_{n+\alpha}\otimes\mathbf{n}_{n+\alpha}\,.\label{eq:rcf-7}
\end{equation}
\end_inset
\end_layout
\begin_layout Section
Rigid-Deformable Coupling
\begin_inset CommandInset label
LatexCommand label
name "sec:Rigid-Deformable-Coupling"
\end_inset
\end_layout
\begin_layout Standard
In FEBio deformable bodies can be coupled with rigid bodies
\begin_inset CommandInset citation
LatexCommand citep
key "Maker95"
literal "true"
\end_inset
.
At these rigid-deformable interfaces,
the coupling of nodal degrees of freedom of deformable elements that attach to rigid bodies requires a modification of the global stiffness matrix and residual vector.
This section describes the coupling between rigid and deformable bodies.
\end_layout
\begin_layout Standard
The position of a node shared by any number of deformable finite elements is denoted by
\begin_inset Formula $\mathbf{x}$
\end_inset
in the current configuration.
If the node belongs to one or more deformable elements but is not connected to a rigid body,
then
\begin_inset Formula $\mathbf{x}$
\end_inset
is given in terms of the nodal displacement
\begin_inset Formula $\mathbf{u}$
\end_inset
by
\begin_inset Formula $\mathbf{x}=\mathbf{X}+\mathbf{u}$
\end_inset
;
the corresponding nodal virtual velocity is
\begin_inset Formula $\delta\mathbf{v}$
\end_inset
and the linearization of
\begin_inset Formula $\mathbf{x}$
\end_inset
along an incremental displacement is denoted by
\begin_inset Formula $\Delta\mathbf{u}$
\end_inset
.
\end_layout
\begin_layout Standard
The contribution to the virtual work of the nodal force
\begin_inset Formula $\mathbf{f}^{a}$
\end_inset
at node
\begin_inset Formula $a$
\end_inset
is given by
\begin_inset Formula
\begin{equation}
\delta G=\delta\mathbf{v}^{a}\cdot\mathbf{f}_{n+\alpha}^{a}\,,\label{eq:rdc-virtual-work}
\end{equation}
\end_inset
whera
\begin_inset Formula $\delta\mathbf{v}^{a}$
\end_inset
is the virtual velocity of node
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $\mathbf{f}_{n+\alpha}^{a}$
\end_inset
is the global nodal force,
evaluated at the intermediate time
\begin_inset Formula $t_{n+\alpha}$
\end_inset
as
\begin_inset Formula $\mathbf{f}_{n+\alpha}^{a}=\alpha\mathbf{f}_{n+1}^{a}+\left(1-\alpha\right)\mathbf{f}_{n}^{a}$
\end_inset
.
The linearization of this virtual work along the incremental displacement
\begin_inset Formula $\Delta\mathbf{u}^{b}$
\end_inset
of node
\begin_inset Formula $b$
\end_inset
is
\begin_inset Formula
\begin{equation}
D\delta G=-\alpha\delta\mathbf{v}^{a}\cdot\mathbf{K}^{ab}\cdot\Delta\mathbf{u}^{b},\label{eq:rdc-linearization-vw}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{K}^{ab}=\left(\partial\mathbf{f}^{a}/\partial\mathbf{x}^{b}\right)_{n+1}$
\end_inset
is the contribution to the global stiffness matrix from the interactions of the degrees of freedom of nodes
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $b$
\end_inset
.
\end_layout
\begin_layout Standard
Now we consider the cases when either node
\begin_inset Formula $a$
\end_inset
,
or node
\begin_inset Formula $b$
\end_inset
,
or both,
are attached to a rigid body.
Our objective is to determine how to modify the global residual vector and stiffness matrix to account for the coupling of deformable and rigid body degrees of freedom.
\end_layout
\begin_layout Standard
When node
\begin_inset Formula $a$
\end_inset
is attached to rigid body
\begin_inset Formula $a$
\end_inset
,
its position is given in terms of that rigid body's degrees of freedom by the general relation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rbm-position"
nolink "false"
\end_inset
.
The corresponding virtual velocity is given in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rc-origin-virtual-displacement"
nolink "false"
\end_inset
,
reproduced here as
\begin_inset Formula
\begin{equation}
\delta\mathbf{v}^{a}=\delta\mathbf{r}^{a}-\hat{\mathbf{z}}_{n+\alpha}^{a}\cdot\delta\boldsymbol{\theta}^{a}\,,\label{eq:rdc-rb-virtual-velocity}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{z}_{n+\alpha}^{a}=\boldsymbol{\Lambda}_{n+\alpha}^{a}\cdot\mathbf{Z}^{a}$
\end_inset
is the position of node
\begin_inset Formula $a$
\end_inset
relative to the center of mass of rigid body
\begin_inset Formula $a$
\end_inset
,
at the intermediate time
\begin_inset Formula $t_{n+\alpha}$
\end_inset
.
Now,
the contribution of the global nodal force
\begin_inset Formula $\mathbf{f}_{n+\alpha}^{a}$
\end_inset
to
\begin_inset Formula $\delta G$
\end_inset
must be modified from
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rdc-virtual-work"
nolink "false"
\end_inset
according to
\begin_inset Formula
\begin{equation}
\delta G=\delta\mathbf{v}^{a}\cdot\mathbf{f}_{n+\alpha}^{a}=\left[\begin{array}{cc}
\delta\mathbf{r}^{a} & \delta\boldsymbol{\theta}^{a}\end{array}\right]\left[\begin{array}{c}
\mathbf{f}_{n+\alpha}^{a}\\
\hat{\mathbf{z}}_{n+\alpha}^{a}\cdot\mathbf{f}_{n+\alpha}^{a}
\end{array}\right]\,.\label{eq:rdc-rb-virtual-work}
\end{equation}
\end_inset
In other words,
the displacement degrees of freedom of node
\begin_inset Formula $a$
\end_inset
should be eliminated from the global system of equations and replaced with the translation and rotation degrees of freedom of rigid body
\begin_inset Formula $a$
\end_inset
.
The force vector
\begin_inset Formula $\mathbf{f}_{n+\alpha}^{a}$
\end_inset
should be made to contribute to the translation degrees of freedom of the center of mass of rigid body
\begin_inset Formula $a$
\end_inset
,
whereas the moment
\begin_inset Formula $\mathbf{z}_{n+\alpha}^{a}\times\mathbf{f}_{n+\alpha}^{a}$
\end_inset
should contribute to the rotation degrees of freedom of the rigid body.
\end_layout
\begin_layout Standard
When node
\begin_inset Formula $b$
\end_inset
is connected to rigid body
\begin_inset Formula $b$
\end_inset
,
the incremental displacement
\begin_inset Formula $\Delta\mathbf{u}^{b}$
\end_inset
should be replaced with the rigid body incremental motions,
\begin_inset Formula
\begin{equation}
\Delta\mathbf{u}^{b}=\Delta\mathbf{r}^{b}-\hat{\mathbf{z}}_{n+1}^{b}\cdot\Delta\boldsymbol{\theta}^{b}\,.\label{eq:rdc-rb-incremental-disp}
\end{equation}
\end_inset
Now,
the contribution
\begin_inset Formula $\mathbf{K}^{ab}$
\end_inset
to the global stiffness matrix needs to be modified from
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rdc-linearization-vw"
nolink "false"
\end_inset
according to the three possible cases:
\end_layout
\begin_layout Itemize
Node
\begin_inset Formula $a$
\end_inset
belongs to rigid body
\begin_inset Formula $a$
\end_inset
,
node
\begin_inset Formula $b$
\end_inset
belongs to flexible elements only,
\begin_inset Formula
\begin{equation}
D\delta G=-\alpha\left[\begin{array}{cc}
\delta\mathbf{r}^{a} & \delta\boldsymbol{\theta}^{a}\end{array}\right]\left[\begin{array}{c}
\mathbf{K}^{ab}\\
\hat{\mathbf{z}}_{n+\alpha}^{a}\cdot\mathbf{K}^{ab}
\end{array}\right]\left[\Delta\mathbf{u}^{b}\right]\,.\label{eq:rdc-arigid-bflex}
\end{equation}
\end_inset
\end_layout
\begin_layout Itemize
Node
\begin_inset Formula $b$
\end_inset
belongs to rigid body
\begin_inset Formula $b$
\end_inset
,
node
\begin_inset Formula $a$
\end_inset
belongs to flexible elements only,
\begin_inset Formula
\begin{equation}
D\delta G=-\alpha\left[\delta\mathbf{v}^{a}\right]\left[\begin{array}{cc}
\mathbf{K}^{ab} & -\mathbf{K}^{ab}\cdot\hat{\mathbf{z}}_{n+1}^{b}\end{array}\right]\left[\begin{array}{c}
\Delta\mathbf{r}^{b}\\
\Delta\boldsymbol{\theta}^{b}
\end{array}\right]\,.\label{eq:rdc-aflex-brigid}
\end{equation}
\end_inset
\end_layout
\begin_layout Itemize
Node
\begin_inset Formula $a$
\end_inset
belongs to rigid body
\begin_inset Formula $a$
\end_inset
,
node
\begin_inset Formula $b$
\end_inset
belongs to rigid body
\begin_inset Formula $b$
\end_inset
,
\begin_inset Formula
\begin{equation}
D\delta G=-\alpha\left[\begin{array}{cc}
\delta\mathbf{r}^{a} & \delta\boldsymbol{\theta}^{a}\end{array}\right]\left[\begin{array}{cc}
\mathbf{K}^{ab} & -\mathbf{K}^{ab}\cdot\hat{\mathbf{z}}_{n+1}^{b}\\
\hat{\mathbf{z}}_{n+\alpha}^{a}\cdot\mathbf{K}^{ab} & -\hat{\mathbf{z}}_{n+\alpha}^{a}\cdot\mathbf{K}^{ab}\cdot\hat{\mathbf{z}}_{n+1}^{b}
\end{array}\right]\left[\begin{array}{c}
\Delta\mathbf{r}^{b}\\
\Delta\boldsymbol{\theta}^{b}
\end{array}\right]\,.\label{eq:rdc-arigid-brigid}
\end{equation}
\end_inset
\end_layout
\begin_layout Section
Nonlinear Constraints
\begin_inset CommandInset label
LatexCommand label
name "sec:Nonlinear-Constraints"
\end_inset
\end_layout
\begin_layout Standard
Nonlinear constraints are equations of the form
\begin_inset Formula $f\left(x_{i}\right)=0$
\end_inset
,
where
\begin_inset Formula $x_{i}$
\end_inset
represent nodal degrees of freedom.
These constraints may be enforced using the penalty method,
with or without augmented Lagrangian,
or the method of Lagrange multipliers.
Each method has its own advantages and disadvantages.
\end_layout
\begin_layout Subsection
Penalty Method with Augmented Lagrangian
\begin_inset CommandInset label
LatexCommand label
name "subsec:Penalty-Method"
\end_inset
\end_layout
\begin_layout Standard
The penalty method employs the penalty parameter
\begin_inset Formula $\varepsilon$
\end_inset
to add
\begin_inset Formula $W_{p}=\frac{1}{2}\varepsilon f^{2}$
\end_inset
to the total work,
where
\begin_inset Formula $\varepsilon$
\end_inset
serves as the 'stiffness' or spring constant in the 'spring' whose 'elongation' is
\begin_inset Formula $f$
\end_inset
,
such that
\begin_inset Formula $W_{p}$
\end_inset
represents the stored energy in the spring.
The contribution to the virtual work for this type of analysis is
\begin_inset Formula $\delta W_{p}=\varepsilon f\,\delta f$
\end_inset
,
where
\begin_inset Formula
\begin{equation}
\delta f=\sum_{i}\frac{\partial f}{\partial x_{i}}\delta x_{i}\label{eq:nlc-virtual-force}
\end{equation}
\end_inset
If we are concerned that the value of
\begin_inset Formula $\varepsilon$
\end_inset
may become too large to produce good numerical convergence,
we may augment this expression by using
\begin_inset Formula $\delta W_{p}=\left(\lambda+\varepsilon f\right)\delta f$
\end_inset
,
where
\begin_inset Formula $\lambda$
\end_inset
is the Lagrangian augmentation parameter,
which gets updated at each iteration to help us avoid using a value of
\begin_inset Formula $\varepsilon$
\end_inset
that's too large.
We may let
\begin_inset Formula $c=\lambda+\varepsilon f$
\end_inset
represent the constraint that needs to be satisfied.
Substituing eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:nlc-virtual-force"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
into this relation allows us to express
\begin_inset Formula $\delta W_{p}$
\end_inset
in matrix form,
\begin_inset Formula
\begin{equation}
\delta W_{p}=\left[\begin{array}{ccc}
\delta x_{1} & \cdots & \delta x_{n}\end{array}\right]\left[\begin{array}{c}
c\frac{\partial f}{\partial x_{1}}\\
\vdots\\
c\frac{\partial f}{\partial x_{n}}
\end{array}\right]=\delta\boldsymbol{\mathbf{r}}\cdot\mathbf{\boldsymbol{f_{\mathit{p}}}}\,.\label{eq:nlc-pm-virtual-work}
\end{equation}
\end_inset
The linearization of
\begin_inset Formula $\delta W_{p}$
\end_inset
along increments
\begin_inset Formula $\Delta x_{i}$
\end_inset
of the degrees of freedom employs
\begin_inset Formula
\begin{equation}
Df=\sum_{j}\frac{\partial f}{\partial x_{j}}\Delta x_{j}\label{eq:nlc-pm-f-linearization}
\end{equation}
\end_inset
and takes the form
\begin_inset Formula
\begin{equation}
D\delta W_{p}=\left[\begin{array}{ccc}
\delta x_{1} & \cdots & \delta x_{n}\end{array}\right]\left[\begin{array}{ccc}
\varepsilon\left(\frac{\partial f}{\partial x_{1}}\right)^{2}+c\frac{\partial^{2}f}{\partial x_{1}^{2}} & \cdots & \varepsilon\frac{\partial f}{\partial x_{1}}\frac{\partial f}{\partial x_{n}}+c\frac{\partial^{2}f}{\partial x_{1}\partial x_{n}}\\
\vdots & \ddots & \vdots\\
\varepsilon\frac{\partial f}{\partial x_{n}}\frac{\partial f}{\partial x_{1}}+c\frac{\partial^{2}f}{\partial x_{1}\partial x_{n}} & \cdots & \varepsilon\left(\frac{\partial f}{\partial x_{n}}\right)^{2}+c\frac{\partial^{2}f}{\partial x_{n}^{2}}
\end{array}\right]\left[\begin{array}{c}
\Delta x_{1}\\
\vdots\\
\Delta x_{n}
\end{array}\right]=\delta\boldsymbol{\mathbf{r}}\cdot\mathbf{\boldsymbol{K_{\mathit{p}}}\boldsymbol{\Delta r}}\,,\label{eq:nlc-pm-stiffness}
\end{equation}
\end_inset
The stiffness matrix for the penalty constraint is symmetric.
\end_layout
\begin_layout Standard
Lagrangian augmentation is performed after the (quasi-)Newton method has converged.
At that time,
the augmented Lagrangians are updated as follows
\begin_inset Formula
\begin{equation}
\lambda^{\left(k+1\right)}\leftarrow\lambda^{\left(k\right)}+\varepsilon f\label{eq:nlc-pm-augment}
\end{equation}
\end_inset
The penalty method with augmented Lagrangian does not increase the number of equations that need to be solved globally.
However,
it does require users to specify the parameter
\begin_inset Formula $\varepsilon$
\end_inset
,
and to provide a convergence tolerance for Lagrange augmentation.
\end_layout
\begin_layout Example
\begin_inset CommandInset label
LatexCommand label
name "exa:Linear-Constraints-Penalty"
\end_inset
For linear constraints of the form
\begin_inset Formula
\begin{equation}
f=a_{0}+\sum_{j}a_{j}x_{j}=0\label{eq:nlc-linear-constraint}
\end{equation}
\end_inset
we find that
\begin_inset Formula $\frac{\partial f}{\partial x_{i}}=a_{i}$
\end_inset
and the second derivatives are all zero,
so that the constributions to the global system of equations take the form
\begin_inset Formula
\begin{equation}
\mathbf{f}_{\mathit{p}}=\left[\begin{array}{c}
ca_{1}\\
\vdots\\
ca_{n}
\end{array}\right],\;\mathbf{K}_{\mathit{p}}=\left[\begin{array}{ccc}
\varepsilon a_{1}^{2} & \cdots & \varepsilon a_{1}a_{n}\\
\vdots & \ddots & \vdots\\
\varepsilon a_{n}a_{1} & \cdots & \varepsilon a_{n}^{2}
\end{array}\right].\label{eq:nlc-pm-linear}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Method of Lagrange Multipliers
\begin_inset CommandInset label
LatexCommand label
name "subsec:Lagrange-Multipliers"
\end_inset
\end_layout
\begin_layout Standard
When using the method of Lagrange multipliers we have to include equations that solve for the multipliers.
We let the work done by the constraint be represented by
\begin_inset Formula $W_{c}=\lambda f$
\end_inset
,
where
\begin_inset Formula $\lambda$
\end_inset
is the multiplier (if
\begin_inset Formula $f$
\end_inset
is a vector equation,
we can use
\begin_inset Formula $W_{c}=\boldsymbol{\lambda}\cdot\mathbf{f}$
\end_inset
).
The total work is then
\begin_inset Formula $\widetilde{W}=W+W_{c}$
\end_inset
where
\begin_inset Formula $W$
\end_inset
is the work of the unconstrained problem (i.e.
the contributions from the internal and external forces.) Then,
we evaulate the first varition of
\begin_inset Formula $\delta\widetilde{W}=\delta W+\delta W_{c}=0$
\end_inset
,
where
\begin_inset Formula $\delta W_{c}=\delta f+\delta\lambda\,f$
\end_inset
.
Since
\begin_inset Formula $\delta f$
\end_inset
is given as per eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:nlc-virtual-force"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
\begin_inset Formula $\delta W_{c}$
\end_inset
may be written in matrix form as
\begin_inset Formula
\begin{equation}
\delta W_{c}=\left[\begin{array}{cccc}
\delta x_{1} & \cdots & \delta x_{n} & \delta\lambda\end{array}\right]\left[\begin{array}{c}
\lambda\frac{\partial f}{\partial x_{1}}\\
\vdots\\
\lambda\frac{\partial f}{\partial x_{n}}\\
f
\end{array}\right]=\delta\boldsymbol{r\cdot}\mathbf{f}_{c}\,.\label{eq:nlc-lm-virtual-work}
\end{equation}
\end_inset
The linearization of
\begin_inset Formula $\delta W_{c}$
\end_inset
along increments
\begin_inset Formula $\Delta x_{j}$
\end_inset
and
\begin_inset Formula $\Delta\lambda$
\end_inset
takes the form
\begin_inset Formula
\begin{equation}
D\delta W_{c}=\sum_{i}\delta x_{i}\frac{\partial f}{\partial x_{i}}\Delta\lambda+\sum_{i}\delta x_{i}\sum_{j}\lambda\frac{\partial^{2}f}{\partial x_{i}\partial x_{j}}\Delta x_{j}+\delta\lambda\,\sum_{j}\frac{\partial f}{\partial x_{j}}\Delta x_{j}\,.\label{eq:nlc-lm-linearization}
\end{equation}
\end_inset
The corresponding stiffness matrix is
\begin_inset Formula
\begin{equation}
D\delta W_{c}=\left[\begin{array}{cccc}
\delta x_{1} & \cdots & \delta x_{n} & \delta\lambda\end{array}\right]\left[\begin{array}{cccc}
\lambda\frac{\partial^{2}f}{\partial x_{1}^{2}} & \cdots & \lambda\frac{\partial^{2}f}{\partial x_{1}\partial x_{n}} & \frac{\partial f}{\partial x_{1}}\\
\vdots & \ddots & \vdots & \vdots\\
\lambda\frac{\partial^{2}f}{\partial x_{n}\partial x_{1}} & \cdots & \lambda\frac{\partial^{2}f}{\partial x_{n}^{2}} & \frac{\partial f}{\partial x_{n}}\\
\frac{\partial f}{\partial x_{1}} & \cdots & \frac{\partial f}{\partial x_{n}} & 0
\end{array}\right]\left[\begin{array}{c}
\Delta x_{1}\\
\vdots\\
\Delta x_{n}\\
\Delta\lambda
\end{array}\right]=\delta\boldsymbol{r\cdot}\mathbf{K}_{c}\boldsymbol{\Delta r}\,,\label{eq:nlc-lm-stiffness}
\end{equation}
\end_inset
This resulting system of equations requires
\begin_inset Formula $\lambda$
\end_inset
to part of the solution,
and to be updated at each iteration
\begin_inset Formula $k$
\end_inset
according to
\begin_inset Formula $\lambda^{\left(k+1\right)}\leftarrow\lambda^{\left(k\right)}+\Delta\lambda$
\end_inset
.
The stiffness matrix is symmetric for this analysis.
\end_layout
\begin_layout Standard
The method of Lagrange multipliers increases the number of equations that need to be solved globally.
However,
it does not require users to specify additional parameters.
Note that the contribution to the stiffness matrix introduces a zero coefficient on the diagonal of the stiffness matrix for the equation corresponding to
\begin_inset Formula $\Delta\lambda$
\end_inset
.
This means that these equations can only be solved with linear solvers that support pivoting.
(Most linear solvers in FEBio,
including the default pardiso solver,
can handle zero-diagonal elements.)
\end_layout
\begin_layout Example
\begin_inset CommandInset label
LatexCommand label
name "exa:Linear-System-Multiplier"
\end_inset
For linear constraints of the form
\begin_inset Formula
\[
f=a_{0}+\sum_{j}a_{j}x_{j}=0
\]
\end_inset
we find that
\begin_inset Formula $\frac{\partial f}{\partial x_{i}}=a_{i}$
\end_inset
and second derivatives are all zero,
so that the contributions to the global residual and stiffness matrix take the form
\begin_inset Formula
\begin{equation}
\mathbf{f}_{c}=\left[\begin{array}{c}
\lambda a_{1}\\
\vdots\\
\lambda a_{n}\\
f
\end{array}\right],\:\boldsymbol{\mathbf{K}_{c}}=\left[\begin{array}{cccc}
0 & \cdots & 0 & a_{1}\\
\vdots & \ddots & \vdots & \vdots\\
0 & \cdots & 0 & a_{n}\\
a_{1} & \cdots & a_{n} & 0
\end{array}\right]\label{eq:nlc-lm-linear}
\end{equation}
\end_inset
\end_layout
\begin_layout Chapter
Optimization
\end_layout
\begin_layout Standard
This chapter describes the theoretical framework of FEBio's optimization module.
This module can be used to optimize model parameters (like material parameters,
or load values) in order to achieve an objective.
The objective is generally the minimization of the
\emph on
objective function
\emph default
,
to be introduced below.
\end_layout
\begin_layout Section
The Objective Function
\end_layout
\begin_layout Standard
The objective function,
which is to be minimized,
can be defined as follows,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\varphi\left(\mathbf{a}\right)=\sum\limits_{i=1}^{n}\left[y_{i}-f\left(x_{i};\mathbf{a}\right)\right]^{2}.
\]
\end_inset
\end_layout
\begin_layout Standard
Here,
the
\begin_inset Formula $\left(x_{i},y_{i}\right)$
\end_inset
are user-defined data pairs and
\begin_inset Formula $f\left(x;\mathbf{a}\right)$
\end_inset
is the function that extracts the corresponding data from the model.
The optimization module tries to find the model parameters
\series bold
a
\series default
that minimize the function
\begin_inset Formula $\varphi$
\end_inset
.
It does this by repeatedly evaluating the function
\begin_inset Formula $y$
\end_inset
,
which will usually call FEBio to solve a forward FE problem.
\end_layout
\begin_layout Section
The Levenberg-Marquardt Method
\end_layout
\begin_layout Standard
One of the methods that is currently implemented in FEBio's optimization method is the constrained Levenberg-Marquardt method via the
\emph on
levmar
\emph default
library.
(see
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
url{http://users.ics.forth.gr/~lourakis/levmar/}
\end_layout
\end_inset
for more information on this library.)
\end_layout
\begin_layout Standard
The Levenberg-Marquardt method is a numerical algorithm that minimizes a function that is defined as a sum of squares of nonlinear functions,
i.e.
the objective function as defined above.
It combines the steepest-descent method with a Gauss-Newton method to find the parameters that minimize the objective function.
\end_layout
\begin_layout Standard
The LM method requires a set of measured values
\begin_inset Formula $(x_{i},y_{i})$
\end_inset
and an initial guess for the
\series bold
a
\series default
vector.
It then tries to find a better estimate for
\series bold
a
\series default
by replacing it with
\begin_inset Formula $\mathbf{a}+\delta$
\end_inset
.
The function
\begin_inset Formula $f(x_{i};\mathbf{a}+\delta)$
\end_inset
is linearly approximated.
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
f\left(x_{i};\mathbf{a}+\delta\right)\approx f\left(x_{i};\mathbf{a}\right)+\mathbf{J}_{i}\delta
\]
\end_inset
\end_layout
\begin_layout Standard
where
\begin_inset Formula $\mathbf{J}_{i}$
\end_inset
is the Jacobian of
\emph on
\begin_inset Formula $f$
\end_inset
\emph default
with respect to
\begin_inset Formula $\delta$
\end_inset
.
Substituting this in the objective function and minimizing with respect to
\begin_inset Formula $\delta$
\end_inset
leads to,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
(\mathbf{J^{\mathrm{T}}J\mathrm{)\delta=}J^{\mathrm{T}}\mathrm{(\mathbf{y}-\mathbf{f}(\boldsymbol{a}))}}
\]
\end_inset
\end_layout
\begin_layout Standard
where
\series bold
y
\series default
is the vector of
\begin_inset Formula $y_{i},$
\end_inset
and
\series bold
f
\series default
is the vector of
\begin_inset Formula $f(x_{i};\boldsymbol{a})$
\end_inset
.
\end_layout
\begin_layout Standard
The main idea of the LM method is to replace this linear equation with the following.
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
(\mathbf{J^{\mathrm{T}}J\mathrm{+\mu(\mathbf{J}^{\mathrm{T}}\mathbf{J})_{\mathit{ii}})\delta=}J^{\mathrm{T}}\mathrm{(\mathbf{y}-\mathbf{f}(\boldsymbol{a}))}}
\]
\end_inset
\end_layout
\begin_layout Standard
Here,
\begin_inset Formula $\mu$
\end_inset
is a damping parameter that is controlled by the algorithm.
When
\begin_inset Formula $\mu$
\end_inset
is small,
the method approximates Gauss-Newton,
when
\begin_inset Formula $\mu$
\end_inset
is large it is closer to a steepdest-descent method.
The algorithm will modify try to modify
\begin_inset Formula $\mu$
\end_inset
such that an improvement to the parameter vector
\series bold
a
\series default
can be found in each iteration.
The method will terminate when the value of the objective function falls below a user-specified tolerance (the
\emph on
obj_tol
\emph default
parameter in FEBio).
\end_layout
\begin_layout Standard
The evaluation of the Jacobian requires evaluating the derivatives of
\begin_inset Formula $f$
\end_inset
with respect to
\series bold
a
\series default
.
These derivatives are approximated via forward difference formulas.
For example,
the
\begin_inset Formula $k$
\end_inset
-th component of the gradient is approximated as follows.
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\frac{\partial f}{\partial a_{k}}\approx\frac{1}{\delta a_{k}}\left[f\left(a_{1},\cdots,a_{k}+\delta a_{k},\cdots,a_{m}\right)-f\left(a_{1},\cdots,a_{k},\cdots,a_{m}\right)\right]
\]
\end_inset
The value for
\begin_inset Formula $\delta a_{k}$
\end_inset
is determined from the following formula.
\begin_inset Formula
\[
\delta a_{k}=\varepsilon\left(1+a_{k}\right)
\]
\end_inset
\end_layout
\begin_layout Standard
where,
\begin_inset Formula $\varepsilon$
\end_inset
is the forward difference scale factor (the
\shape italic
fdiff_scale
\shape default
option in FEBio).
In FEBio,
the initial value for the damping parameter
\begin_inset Formula $\mu$
\end_inset
can be set with the
\emph on
tau
\emph default
parameter.
\end_layout
\begin_layout Chapter
\start_of_appendix
Tensor Calculus
\end_layout
\begin_layout Section
Second-Order Tensors
\end_layout
\begin_layout Subsection
Definition
\end_layout
\begin_layout Standard
Let
\begin_inset Formula $\mathbf{T}$
\end_inset
be a transformation,
which transforms any vector into another vector,
e.g.,
\begin_inset Formula
\[
\mathbf{T}\cdot\mathbf{a}=\mathbf{b}\quad\mathbf{T}\cdot\mathbf{c}=\mathbf{d}
\]
\end_inset
If
\begin_inset Formula $\mathbf{T}$
\end_inset
has the following properties,
\begin_inset Formula
\begin{equation}
\mathbf{T}\cdot\left(\mathbf{a}+\mathbf{c}\right)=\mathbf{T}\cdot\mathbf{a}+\mathbf{T}\cdot\mathbf{c}\label{eq6-1}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\mathbf{T}\cdot\left(\alpha\mathbf{a}\right)=\alpha\mathbf{T}\cdot\mathbf{a}\label{eq7-1}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{a}$
\end_inset
and
\begin_inset Formula $\mathbf{c}$
\end_inset
are arbitrary vectors,
and
\begin_inset Formula $\alpha$
\end_inset
is an arbitrary scalar,
then
\begin_inset Formula $\mathbf{T}$
\end_inset
is called a
\shape italic
linear transformation
\shape default
,
a
\shape italic
second-order tensor
\shape default
,
or simply a
\shape italic
tensor
\shape default
.
Vectors are first-order tensors and scalars are zeroth-order tensors.
\end_layout
\begin_layout Subsection
Cartesian Components of a Tensor
\end_layout
\begin_layout Standard
Let
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
form an orthonormal basis in a Cartesian coordinate system
\begin_inset Formula $x_{1},x_{2},x_{3}$
\end_inset
.
Then the Cartesian components of
\begin_inset Formula $\mathbf{a}$
\end_inset
are
\begin_inset Formula
\[
a_{1}=\mathbf{e}_{1}\cdot\mathbf{a},\quad a_{2}=\mathbf{e}_{2}\cdot\mathbf{a},\quad a_{3}=\mathbf{e}_{3}\cdot\mathbf{a}
\]
\end_inset
or equivalently,
\begin_inset Formula
\begin{equation}
\boxed{a_{j}=\mathbf{e}_{j}\cdot\mathbf{a}}\label{eq7b}
\end{equation}
\end_inset
(Recall that
\begin_inset Formula $\mathbf{a}=a_{i}\mathbf{e}_{i}$
\end_inset
,
thus
\begin_inset Formula $\mathbf{a}\cdot\mathbf{e}_{j}=a_{i}\mathbf{e}_{i}\cdot\mathbf{e}_{j}=a_{i}\delta_{ij}=a_{j}$
\end_inset
.)
\end_layout
\begin_layout Standard
The Cartesian components of a tensor
\begin_inset Formula $\mathbf{T}$
\end_inset
are obtained as follows.
Let
\begin_inset Formula $\mathbf{T}\cdot\mathbf{a}=\mathbf{b}$
\end_inset
.
The components of
\begin_inset Formula $\mathbf{b}$
\end_inset
are given by
\begin_inset Formula $b_{i}=\mathbf{e}_{i}\cdot\mathbf{b}=\mathbf{e}_{i}\cdot\mathbf{T}\cdot\mathbf{a}$
\end_inset
.
But
\begin_inset Formula $\mathbf{a}=a_{j}\mathbf{e}_{j}$
\end_inset
,
so
\begin_inset Formula $b_{i}=a_{j}\mathbf{e}_{i}\cdot\mathbf{T}\cdot\mathbf{e}_{j}$
\end_inset
.
Note that
\begin_inset Formula $\mathbf{e}_{i}\cdot\mathbf{T}\cdot\mathbf{e}_{j}$
\end_inset
is the component along
\begin_inset Formula $\mathbf{e}_{i}$
\end_inset
of the vector
\begin_inset Formula $\mathbf{T}\cdot\mathbf{e}_{j}$
\end_inset
.
By convention,
we denote this component as
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\boxed{T_{ij}=\mathbf{e}_{i}\cdot\mathbf{T}\cdot\mathbf{e}_{j}}\quad\text{components of tensor }\mathbf{T}\label{eq7c}
\end{equation}
\end_inset
components of tensor
\begin_inset Formula $\mathbf{T}$
\end_inset
.
\end_layout
\begin_layout Standard
Thus,
\begin_inset Formula $\mathbf{b}=\mathbf{T}\cdot\mathbf{a}=a_{j}\mathbf{T}\cdot\mathbf{e}_{j}=b_{k}\mathbf{e}_{k}$
\end_inset
.
Taking the dot product on both sides with
\begin_inset Formula $\mathbf{e}_{i}$
\end_inset
yields
\begin_inset Formula $a_{j}\mathbf{e}_{i}\cdot\mathbf{T}\cdot\mathbf{e}_{j}=a_{j}T_{ij}=b_{k}\mathbf{e}_{i}\cdot\mathbf{e}_{k}=b_{k}\delta_{ik}=b_{i}$
\end_inset
,
or
\begin_inset Formula
\[
\boxed{b_{i}=T_{ij}a_{j}}
\]
\end_inset
in indicial form.
In matrix form,
\begin_inset Formula
\[
\left[\begin{array}{c}
b_{1}\\
b_{2}\\
b_{3}
\end{array}\right]=\left[\begin{array}{ccc}
T_{11} & T_{12} & T_{13}\\
T_{21} & T_{22} & T_{23}\\
T_{31} & T_{32} & T_{33}
\end{array}\right]\left[\begin{array}{c}
a_{1}\\
a_{2}\\
a_{3}
\end{array}\right]
\]
\end_inset
The matrix of tensor
\begin_inset Formula $\mathbf{T}$
\end_inset
with respect to
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
can also be denoted by
\begin_inset Formula $\left[\mathbf{T}\right]$
\end_inset
or
\begin_inset Formula $\left[T_{ij}\right]$
\end_inset
.
The columns of
\begin_inset Formula $\left[\mathbf{T}\right]$
\end_inset
are given by
\begin_inset Formula $\mathbf{T}\cdot\mathbf{e}_{i}$
\end_inset
,
e.g.,
\begin_inset Formula
\[
\left[\mathbf{T}\cdot\mathbf{e}_{2}\right]=\left[T_{j2}\mathbf{e}_{2}\right]=\left[\begin{array}{ccc}
T_{11} & T_{12} & T_{13}\\
T_{21} & T_{22} & T_{23}\\
T_{31} & T_{32} & T_{33}
\end{array}\right]\left[\begin{array}{c}
0\\
1\\
0
\end{array}\right]=\left[\begin{array}{c}
T_{12}\\
T_{22}\\
T_{32}
\end{array}\right]
\]
\end_inset
This result,
when generalized,
leads to the useful identity
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{T}\cdot\mathbf{e}_{i}=T_{ji}\mathbf{e}_{j}}=T_{1i}\mathbf{e}_{1}+T_{2i}\mathbf{e}_{2}+T_{3i}\mathbf{e}_{3}\label{eq8-1}
\end{equation}
\end_inset
\end_layout
\begin_layout Example
Scaling transformation
\end_layout
\begin_layout Example
A scaling transformation
\begin_inset Formula $\mathbf{T}$
\end_inset
with different scale factors along
\begin_inset Formula $x_{1},x_{2},x_{3}$
\end_inset
should satisfy the following relations by definition:
\begin_inset Formula
\[
\mathbf{T}\cdot\mathbf{a}=s_{1}\left(\mathbf{a}\cdot\mathbf{e}_{1}\right)\mathbf{e}_{1}+s_{2}\left(\mathbf{a}\cdot\mathbf{e}_{2}\right)\mathbf{e}_{2}+s_{3}\left(\mathbf{a}\cdot\mathbf{e}_{3}\right)\mathbf{e}_{3}
\]
\end_inset
Verify that
\begin_inset Formula $\mathbf{T}$
\end_inset
is a tensor.
Also find the matrix of
\begin_inset Formula $\mathbf{T}$
\end_inset
in
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
.
\end_layout
\begin_layout Example
\shape italic
Solution
\shape default
.
Is
\begin_inset Formula $\mathbf{T}$
\end_inset
a tensor?
Let any
\begin_inset Formula $\mathbf{a}=a_{i}\mathbf{e}_{i}$
\end_inset
and
\begin_inset Formula $\mathbf{b}=b_{i}\mathbf{e}_{i}$
\end_inset
,
then
\begin_inset Formula
\[
\begin{aligned}\mathbf{T}\cdot\left(\alpha\mathbf{a}\right) & =s_{1}\left(\alpha\mathbf{a}\cdot\mathbf{e}_{1}\right)\mathbf{e}_{1}+s_{2}\left(\alpha\mathbf{a}\cdot\mathbf{e}_{2}\right)\mathbf{e}_{2}+s_{3}\left(\alpha\mathbf{a}\cdot\mathbf{e}_{3}\right)\mathbf{e}_{3}\\
& =\alpha\left(s_{1}\left(\mathbf{a}\cdot\mathbf{e}_{1}\right)\mathbf{e}_{1}+s_{2}\left(\mathbf{a}\cdot\mathbf{e}_{2}\right)\mathbf{e}_{2}+s_{3}\left(\mathbf{a}\cdot\mathbf{e}_{3}\right)\mathbf{e}_{3}\right)\\
& =\alpha\mathbf{T}\cdot\mathbf{a}
\end{aligned}
\]
\end_inset
and
\begin_inset Formula
\[
\begin{aligned}\mathbf{T}\cdot\left(\mathbf{a}+\mathbf{b}\right) & =s_{1}\left(\left(\mathbf{a}+\mathbf{b}\right)\cdot\mathbf{e}_{1}\right)\mathbf{e}_{1}+s_{2}\left(\left(\mathbf{a}+\mathbf{b}\right)\cdot\mathbf{e}_{2}\right)\mathbf{e}_{2}+s_{3}\left(\left(\mathbf{a}+\mathbf{b}\right)\cdot\mathbf{e}_{3}\right)\mathbf{e}_{3}\\
& =s_{1}\left(\mathbf{a}\cdot\mathbf{e}_{1}\right)\mathbf{e}_{1}+s_{2}\left(\mathbf{a}\cdot\mathbf{e}_{2}\right)\mathbf{e}_{2}+s_{3}\left(\mathbf{a}\cdot\mathbf{e}_{3}\right)\mathbf{e}_{3}\\
& +s_{1}\left(\mathbf{b}\cdot\mathbf{e}_{1}\right)\mathbf{e}_{1}+s_{2}\left(\mathbf{b}\cdot\mathbf{e}_{2}\right)\mathbf{e}_{2}+s_{3}\left(\mathbf{b}\cdot\mathbf{e}_{3}\right)\mathbf{e}_{3}\\
& =\mathbf{T}\cdot\mathbf{a}+\mathbf{T}\cdot\mathbf{b}
\end{aligned}
\]
\end_inset
\end_layout
\begin_layout Example
Now that we have demonstrated that
\begin_inset Formula $\mathbf{T}$
\end_inset
is a tensor,
its components are given by
\begin_inset Formula $T_{ij}=\mathbf{e}_{i}\cdot\mathbf{T}\cdot\mathbf{e}_{j}$
\end_inset
,
thus
\begin_inset Formula
\[
\begin{gathered}\left[T_{i1}\right]=\left[\mathbf{e}_{i}\cdot\mathbf{T}\cdot\mathbf{e}_{1}\right]=\left[\mathbf{e}_{i}\cdot s_{1}\mathbf{e}_{1}\right]=\left[s_{1}\delta_{i1}\right]=\left[\begin{array}{c}
s_{1}\\
0\\
0
\end{array}\right]\\
\left[T_{i2}\right]=\left[\mathbf{e}_{i}\cdot\mathbf{T}\cdot\mathbf{e}_{2}\right]=\left[\mathbf{e}_{i}\cdot s_{2}\mathbf{e}_{2}\right]=\left[s_{2}\delta_{i2}\right]=\left[\begin{array}{c}
0\\
s_{2}\\
0
\end{array}\right]\\
\left[T_{i3}\right]=\left[\mathbf{e}_{i}\cdot\mathbf{T}\cdot\mathbf{e}_{3}\right]=\left[\mathbf{e}_{i}\cdot s_{3}\mathbf{e}_{3}\right]=\left[s_{3}\delta_{i3}\right]=\left[\begin{array}{c}
0\\
0\\
s_{3}
\end{array}\right]
\end{gathered}
\]
\end_inset
Then,
the matrix of
\begin_inset Formula $\mathbf{T}$
\end_inset
is given by
\begin_inset Formula
\[
\left[\mathbf{T}\right]=\left[\begin{array}{ccc}
s_{1} & 0 & 0\\
0 & s_{2} & 0\\
0 & 0 & s_{3}
\end{array}\right]
\]
\end_inset
\end_layout
\begin_layout Subsection
Sum of Tensors
\end_layout
\begin_layout Standard
The sum of two tensors
\begin_inset Formula $\mathbf{T}$
\end_inset
and
\begin_inset Formula $\mathbf{S}$
\end_inset
is denoted by
\begin_inset Formula $\mathbf{T}+\mathbf{S}$
\end_inset
and defined by
\begin_inset Formula
\begin{equation}
\boxed{\left(\mathbf{T}+\mathbf{S}\right)\cdot\mathbf{a}=\mathbf{T}\cdot\mathbf{a}+\mathbf{S}\cdot\mathbf{a}}\label{eq9-1}
\end{equation}
\end_inset
for any vector
\begin_inset Formula $\mathbf{a}$
\end_inset
.
Thus
\begin_inset Formula $\mathbf{T}+\mathbf{S}$
\end_inset
is also a tensor,
whose components are
\begin_inset Formula
\[
\left(\mathbf{T}+\mathbf{S}\right)_{ij}=\mathbf{e}_{i}\cdot\left(\mathbf{T}+\mathbf{S}\right)\cdot\mathbf{e}_{j}=\mathbf{e}_{i}\cdot\mathbf{T}\cdot\mathbf{e}_{j}+\mathbf{e}_{i}\cdot\mathbf{S}\cdot\mathbf{e}_{j}=T_{ij}+S_{ij}
\]
\end_inset
In matrix notation,
\begin_inset Formula $\left[\mathbf{T}+\mathbf{S}\right]=\left[\mathbf{T}\right]+\left[\mathbf{S}\right]$
\end_inset
.
\end_layout
\begin_layout Subsection
Dyadic Product of Vectors
\end_layout
\begin_layout Standard
The dyadic product of two vectors
\begin_inset Formula $\mathbf{a}$
\end_inset
and
\begin_inset Formula $\mathbf{b}$
\end_inset
is denoted by
\begin_inset Formula $\mathbf{a}\otimes\mathbf{b}$
\end_inset
(or
\begin_inset Formula $\mathbf{ab}$
\end_inset
) and defined as the transformation which satisfies
\begin_inset Formula
\begin{equation}
\boxed{\left(\mathbf{a}\otimes\mathbf{b}\right)\cdot\mathbf{c}=\left(\mathbf{b}\cdot\mathbf{c}\right)\mathbf{a}}\label{eq10-1}
\end{equation}
\end_inset
For any
\begin_inset Formula $\mathbf{c}$
\end_inset
,
\begin_inset Formula $\mathbf{d}$
\end_inset
,
\begin_inset Formula $\alpha$
\end_inset
and
\begin_inset Formula $\beta$
\end_inset
,
we have
\begin_inset Formula
\[
\begin{gathered}\left(\mathbf{a}\otimes\mathbf{b}\right)\cdot\left(\alpha\mathbf{c}+\beta\mathbf{d}\right)=\left(\mathbf{b}\cdot\left(\alpha\mathbf{c}+\beta\mathbf{d}\right)\right)\mathbf{a}=\left(\mathbf{b}\cdot\alpha\mathbf{c}\right)\mathbf{a}+\left(\mathbf{b}\cdot\beta\mathbf{d}\right)\mathbf{a}\\
=\alpha\left(\mathbf{b}\cdot\mathbf{c}\right)\mathbf{a}+\beta\left(\mathbf{b}\cdot\mathbf{d}\right)\mathbf{a}=\alpha\left(\mathbf{a}\otimes\mathbf{b}\right)\cdot\mathbf{c}+\beta\left(\mathbf{a}\otimes\mathbf{b}\right)\cdot\mathbf{d}
\end{gathered}
\]
\end_inset
thus
\begin_inset Formula $\mathbf{a}\otimes\mathbf{b}$
\end_inset
is a tensor.
Its Cartesian components with respect to
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
are
\begin_inset Formula
\[
\left(\mathbf{a}\otimes\mathbf{b}\right)_{ij}=\mathbf{e}_{i}\cdot\left(\mathbf{a}\otimes\mathbf{b}\right)\cdot\mathbf{e}_{j}=\mathbf{e}_{i}\cdot\left(\mathbf{b}\cdot\mathbf{e}_{j}\right)\mathbf{a}=b_{j}\mathbf{e}_{i}\cdot\mathbf{a}=a_{i}b_{j}
\]
\end_inset
In matrix form,
\begin_inset Formula
\[
\left[\mathbf{a}\otimes\mathbf{b}\right]=\left[\begin{array}{ccc}
a_{1}b_{1} & a_{1}b_{2} & a_{1}b_{3}\\
a_{2}b_{1} & a_{2}b_{2} & a_{2}b_{3}\\
a_{3}b_{1} & a_{3}b_{2} & a_{3}b_{3}
\end{array}\right]=\left[\begin{array}{c}
a_{1}\\
a_{2}\\
a_{3}
\end{array}\right]\left[\begin{array}{ccc}
b_{1} & b_{2} & b_{3}\end{array}\right]=\left[\mathbf{a}\right]\left[\mathbf{b}\right]^{T}
\]
\end_inset
Note that in general,
\begin_inset Formula $\mathbf{a}\otimes\mathbf{b}\ne\mathbf{b}\otimes\mathbf{a}$
\end_inset
,
i.e.,
the dyadic product is
\shape italic
not commutative
\shape default
.
Also note that
\begin_inset Formula
\[
\left[\mathbf{e}_{1}\otimes\mathbf{e}_{1}\right]=\left[\begin{array}{ccc}
1 & 0 & 0\\
0 & 0 & 0\\
0 & 0 & 0
\end{array}\right],\quad\left[\mathbf{e}_{1}\otimes\mathbf{e}_{2}\right]=\left[\begin{array}{ccc}
0 & 1 & 0\\
0 & 0 & 0\\
0 & 0 & 0
\end{array}\right],\quad\left[\mathbf{e}_{1}\otimes\mathbf{e}_{3}\right]=\left[\begin{array}{ccc}
0 & 0 & 1\\
0 & 0 & 0\\
0 & 0 & 0
\end{array}\right]\quad\text{etc.}
\]
\end_inset
thus it is possible to represent a second-order tensor in terms of its Cartesian components in
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
as
\begin_inset Formula $\mathbf{T}=T_{11}\mathbf{e}_{1}\otimes\mathbf{e}_{1}+T_{12}\mathbf{e}_{1}\otimes\mathbf{e}_{2}+T_{13}\mathbf{e}_{1}\otimes\mathbf{e}_{3}+\ldots+T_{33}\mathbf{e}_{3}\otimes\mathbf{e}_{3}$
\end_inset
,
or
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{T}=T_{ij}\mathbf{e}_{i}\otimes\mathbf{e}_{j}}\label{eq11-1}
\end{equation}
\end_inset
This turns out to be an important result that can be generalized to higher order tensors,
e.g.,
third-order tensors can be represented in terms of their Cartesian components as
\begin_inset Formula $\mathbb{T}=T_{ijk}\mathbf{e}_{i}\otimes\mathbf{e}_{j}\otimes\mathbf{e}_{k}$
\end_inset
,
and similarly for higher orders.
\end_layout
\begin_layout Example
The scaling transformation derived in a previous example can be represented as
\begin_inset Formula
\[
\mathbf{T}=s_{1}\mathbf{e}_{1}\otimes\mathbf{e}_{1}+s_{2}\mathbf{e}_{2}\otimes\mathbf{e}_{2}+s_{3}\mathbf{e}_{3}\otimes\mathbf{e}_{3}
\]
\end_inset
\end_layout
\begin_layout Subsection
Trace of a Second-Order Tensor
\end_layout
\begin_layout Standard
The trace of any dyad
\begin_inset Formula $\mathbf{a}\otimes\mathbf{b}$
\end_inset
is defined by
\begin_inset Formula
\[
\boxed{\tr\left(\mathbf{a}\otimes\mathbf{b}\right)=\mathbf{a}\cdot\mathbf{b}}
\]
\end_inset
and
\begin_inset Formula
\[
\boxed{\tr\left(\alpha\mathbf{a}\otimes\mathbf{b}+\beta\mathbf{c}\otimes\mathbf{d}\right)=\alpha\tr\left(\mathbf{a}\otimes\mathbf{b}\right)+\beta\tr\left(\mathbf{c}\otimes\mathbf{d}\right)}
\]
\end_inset
The trace operator yields a scalar function.
In component form,
\begin_inset Formula
\[
\tr\left(a_{i}b_{j}\right)=a_{i}b_{i}
\]
\end_inset
For any tensor
\begin_inset Formula $\mathbf{T}$
\end_inset
,
we can write
\begin_inset Formula $\mathbf{T}=T_{ij}\mathbf{e}_{i}\otimes\mathbf{e}_{j}$
\end_inset
,
thus
\begin_inset Formula
\[
\tr\mathbf{T}=T_{ij}\tr\left(\mathbf{e}_{i}\otimes\mathbf{e}_{j}\right)=T_{ij}\mathbf{e}_{i}\cdot\mathbf{e}_{j}=T_{ij}\delta_{ij}=T_{ii}=T_{11}+T_{22}+T_{33}
\]
\end_inset
The trace of a tensor is the sum of its diagonal components.
\end_layout
\begin_layout Subsection
Product of Two Tensors
\end_layout
\begin_layout Standard
The products of two tensors
\begin_inset Formula $\mathbf{T}$
\end_inset
and
\begin_inset Formula $\mathbf{S}$
\end_inset
are denoted by
\begin_inset Formula $\mathbf{T}\cdot\mathbf{S}$
\end_inset
and
\begin_inset Formula $\mathbf{S}\cdot\mathbf{T}$
\end_inset
and defined respectively by
\begin_inset Formula
\begin{equation}
\boxed{\left(\mathbf{T}\cdot\mathbf{S}\right)\cdot\mathbf{a}=\mathbf{T}\cdot\left(\mathbf{S}\cdot\mathbf{a}\right)}\label{eq12-1}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
\boxed{\left(\mathbf{S}\cdot\mathbf{T}\right)\cdot\mathbf{a}=\mathbf{S}\cdot\left(\mathbf{T}\cdot\mathbf{a}\right)}\label{eq12b}
\end{equation}
\end_inset
Clearly,
\begin_inset Formula $\mathbf{T}\cdot\mathbf{S}$
\end_inset
and
\begin_inset Formula $\mathbf{S}\cdot\mathbf{T}$
\end_inset
are tensors as well.
Their components in
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
are given by
\begin_inset Formula
\[
\left(\mathbf{T}\cdot\mathbf{S}\right)_{ij}=\mathbf{e}_{i}\cdot\left(\mathbf{T}\cdot\mathbf{S}\right)\cdot\mathbf{e}_{j}=\mathbf{e}_{i}\cdot\mathbf{T}\cdot\left(\mathbf{S}\cdot\mathbf{e}_{j}\right)=\mathbf{e}_{i}\cdot\mathbf{T}\cdot\left(S_{kj}\mathbf{e}_{k}\right)=S_{kj}\mathbf{e}_{i}\cdot\mathbf{T}\cdot\mathbf{e}_{k}=T_{ik}S_{kj}
\]
\end_inset
In matrix form,
\begin_inset Formula $\left[\mathbf{T}\cdot\mathbf{S}\right]=\left[\mathbf{T}\right]\left[\mathbf{S}\right]$
\end_inset
.
Similarly,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\left(\mathbf{S}\cdot\mathbf{T}\right)_{ij}=S_{ik}T_{kj}\quad\text{and}\quad\left[\mathbf{S}\cdot\mathbf{T}\right]=\left[\mathbf{S}\right]\left[\mathbf{T}\right]
\]
\end_inset
In general,
\begin_inset Formula $\mathbf{T}\cdot\mathbf{S}\ne\mathbf{S}\cdot\mathbf{T}$
\end_inset
,
however
\begin_inset Formula $\left(\mathbf{T}\cdot\mathbf{S}\right)\cdot\mathbf{V}=\mathbf{T}\cdot\left(\mathbf{S}\cdot\mathbf{V}\right)$
\end_inset
,
i.e.,
the tensor product is
\shape italic
associative
\shape default
but
\shape italic
not commutative
\shape default
.
\end_layout
\begin_layout Subsection
Identity Tensor and Tensor Inverse
\end_layout
\begin_layout Standard
The identity tensor,
denoted by
\begin_inset Formula $\mathbf{I}$
\end_inset
,
is defined by
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{I}\cdot\mathbf{a}=\mathbf{a}}\label{eq13-1}
\end{equation}
\end_inset
for any vector
\begin_inset Formula $\mathbf{a}$
\end_inset
.
The Cartesian components o f
\begin_inset Formula $\mathbf{I}$
\end_inset
in
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
are given by
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
I_{ij}=\mathbf{e}_{i}\cdot\mathbf{I}\cdot\mathbf{e}_{j}=\mathbf{e}_{i}\cdot\mathbf{e}_{j}=\delta_{ij}
\]
\end_inset
or
\begin_inset Formula
\[
\left[\mathbf{I}\right]=\left[\begin{array}{ccc}
1 & 0 & 0\\
0 & 1 & 0\\
0 & 0 & 1
\end{array}\right]
\]
\end_inset
Given
\begin_inset Formula $\mathbf{T}$
\end_inset
,
if
\begin_inset Formula $\mathbf{S}$
\end_inset
exists such that
\begin_inset Formula $\mathbf{S}\cdot\mathbf{T}=\mathbf{I}$
\end_inset
,
we call
\begin_inset Formula $\mathbf{S}$
\end_inset
the
\emph on
inverse
\emph default
of
\begin_inset Formula $\mathbf{T}$
\end_inset
,
and
\begin_inset Formula $\mathbf{S}=\mathbf{T}^{-1}$
\end_inset
.
The inverse exists as long as
\begin_inset Formula $\det\mathbf{T}\neq0$
\end_inset
.
Also note that
\begin_inset Formula $\left(\mathbf{T}^{-1}\right)^{-1}=\mathbf{T}$
\end_inset
and
\begin_inset Formula $\mathbf{T}^{-1}\cdot\mathbf{T}=\mathbf{T}\cdot\mathbf{T}^{-1}=\mathbf{I}$
\end_inset
.
Also note that
\begin_inset Formula
\[
\boxed{\left(\mathbf{U}\cdot\mathbf{V}\right)^{-1}=\mathbf{V}^{-1}\cdot\mathbf{U}^{-1}}\,.
\]
\end_inset
\end_layout
\begin_layout Subsection
Transpose of a Tensor
\end_layout
\begin_layout Standard
Given a tensor
\begin_inset Formula $\mathbf{T}$
\end_inset
,
its transpose is denoted by
\begin_inset Formula $\mathbf{T}^{T}$
\end_inset
which is defined by
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{a}\cdot\left(\mathbf{T}\cdot\mathbf{b}\right)=\mathbf{b}\cdot\left(\mathbf{T}^{T}\cdot\mathbf{\mathbf{a}}\right)}\label{eq14-1}
\end{equation}
\end_inset
In component form,
\begin_inset Formula
\[
T_{ij}^{T}=\mathbf{e}_{i}\cdot\mathbf{T}^{T}\cdot\mathbf{e}_{j}=\mathbf{e}_{j}\cdot\mathbf{T}\cdot\mathbf{e}_{i}=T_{ji}
\]
\end_inset
Also note that
\begin_inset Formula
\begin{equation}
\boxed{\left(\mathbf{S}\cdot\mathbf{T}\right)^{T}=\mathbf{T}^{T}\cdot\mathbf{S}^{T}}\label{eq15-1}
\end{equation}
\end_inset
and
\begin_inset Formula $\left(\mathbf{S}^{T}\right)^{T}=\mathbf{S}$
\end_inset
and
\begin_inset Formula $\left(\mathbf{S}+\mathbf{T}\right)^{T}=\mathbf{S}^{T}+\mathbf{T}^{T}$
\end_inset
.
\end_layout
\begin_layout Subsection
Double Product of Tensors
\end_layout
\begin_layout Standard
The double product of tensors is analogous to the dot product of vectors.
Given two tensors
\begin_inset Formula $\mathbf{S}$
\end_inset
and
\begin_inset Formula $\mathbf{T}$
\end_inset
,
the double product (or
\shape italic
double contraction
\shape default
) is defined as
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{S}:\mathbf{T}=\tr\left(\mathbf{S}^{T}\cdot\mathbf{T}\right)}\label{eq16-1}
\end{equation}
\end_inset
Thus,
for any tensor
\begin_inset Formula $\mathbf{T}$
\end_inset
,
\begin_inset Formula $\tr\mathbf{T}=\mathbf{I}:\mathbf{T}$
\end_inset
.
In component form,
\begin_inset Formula
\[
\mathbf{S}:\mathbf{T}=S_{ij}T_{ij}
\]
\end_inset
The double product of second order tensors is commutative.
\end_layout
\begin_layout Example
Show that
\begin_inset Formula $\mathbf{a}\cdot\mathbf{T}\cdot\mathbf{b}=\mathbf{T}:\left(\mathbf{a}\otimes\mathbf{b}\right)$
\end_inset
and
\begin_inset Formula $\left(\mathbf{a}\otimes\mathbf{b}\right):\left(\mathbf{c}\otimes\mathbf{d}\right)=\left(\mathbf{a}\cdot\mathbf{c}\right)\left(\mathbf{b}\cdot\mathbf{d}\right)$
\end_inset
.
\end_layout
\begin_layout Example
Using indicial notation,
\begin_inset Formula
\[
\mathbf{a}\cdot\mathbf{T}\cdot\mathbf{b}=a_{i}T_{ij}b_{j}=T_{ij}a_{i}b_{j}=\mathbf{T}:\left(\mathbf{a}\otimes\mathbf{b}\right)\,,
\]
\end_inset
and
\begin_inset Formula
\[
\left(\mathbf{a}\otimes\mathbf{b}\right):\left(\mathbf{c}\otimes\mathbf{d}\right)=a_{i}b_{j}c_{i}d_{j}=\left(a_{i}c_{i}\right)\left(b_{j}d_{j}\right)=\left(\mathbf{a}\cdot\mathbf{c}\right)\left(\mathbf{b}\cdot\mathbf{d}\right)\,.
\]
\end_inset
\end_layout
\begin_layout Subsection
Determinant of a Tensor
\begin_inset CommandInset label
LatexCommand label
name "subsubsec:determinant"
\end_inset
\end_layout
\begin_layout Standard
The determinant of a tensor is equal to the determinant of its components in
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
,
\begin_inset Formula
\begin{equation}
\det\mathbf{T}=\det\left[\mathbf{T}\right]_{\mathbf{e}_{i}}=\left|\begin{array}{ccc}
T_{11} & T_{12} & T_{13}\\
T_{21} & T_{22} & T_{23}\\
T_{31} & T_{32} & T_{33}
\end{array}\right|=\left(\mathbf{T}\cdot\mathbf{e}_{1}\times\mathbf{T}\cdot\mathbf{e}_{2}\right)\cdot\mathbf{T}\cdot\mathbf{e}_{3}=\varepsilon_{ijk}T_{i1}T_{j2}T_{k3}\label{eq17-1}
\end{equation}
\end_inset
In particular,
the determinant of a diagonal matrix is the product of the diagonal components,
\begin_inset Formula
\begin{equation}
\det\left[\mathbf{T}\right]_{\mathbf{e}_{i}}=\left|\begin{array}{ccc}
T_{11} & 0 & 0\\
0 & T_{22} & 0\\
0 & 0 & T_{33}
\end{array}\right|=\varepsilon_{123}T_{11}T_{22}T_{33}=T_{11}T_{22}T_{33}\label{eq18-1}
\end{equation}
\end_inset
The determinant satisfies the following relations,
\begin_inset Formula
\begin{equation}
\det\mathbf{T}^{-1}=\frac{1}{\det\mathbf{T}}\label{eq19-1}
\end{equation}
\end_inset
\begin_inset Formula
\begin{equation}
\det\left(\mathbf{S}\cdot\mathbf{T}\right)=\left(\det\mathbf{S}\right)\left(\det\mathbf{T}\right)\label{eq20-1}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Orthogonal Tensor
\end_layout
\begin_layout Standard
An orthogonal tensor
\begin_inset Formula $\mathbf{Q}$
\end_inset
is a linear transformation which preserves the length of a vector and the angle between vectors.
Thus,
by definition,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\left|\mathbf{Q}\cdot\mathbf{a}\right|=\left|\mathbf{a}\right|\quad\text{and}\quad\cos\left(\mathbf{Q}\cdot\mathbf{a},\mathbf{Q}\cdot\mathbf{b}\right)=\cos\left(\mathbf{a},\mathbf{b}\right)
\]
\end_inset
for any vectors
\begin_inset Formula $\mathbf{a}$
\end_inset
and
\begin_inset Formula $\mathbf{b}$
\end_inset
.
It follows from this definition and the definition of the dot product of vectors (
\begin_inset Formula $\mathbf{a}\cdot\mathbf{b}=\left|\mathbf{a}\right|\left|\mathbf{b}\right|\cos\left(\mathbf{a},\mathbf{b}\right))$
\end_inset
,
that
\begin_inset Formula
\[
\left(\mathbf{Q}\cdot\mathbf{a}\right)\cdot\left(\mathbf{Q}\cdot\mathbf{b}\right)=\mathbf{a}\cdot\mathbf{b}
\]
\end_inset
But
\begin_inset Formula $\left(\mathbf{Q}\cdot\mathbf{a}\right)\cdot\left(\mathbf{Q}\cdot\mathbf{b}\right)=\mathbf{b}\cdot\left(\mathbf{Q}^{T}\cdot\mathbf{Q}\right)\mathbf{a}=\mathbf{a}\cdot\mathbf{b}=\mathbf{b}\cdot\mathbf{I}\cdot\mathbf{a}$
\end_inset
,
which implies that
\begin_inset Formula $\mathbf{b}\cdot\left(\mathbf{Q}^{T}\cdot\mathbf{Q}-\mathbf{I}\right)\cdot\mathbf{a}=0$
\end_inset
.
Since
\begin_inset Formula $\mathbf{a}$
\end_inset
and
\begin_inset Formula $\mathbf{b}$
\end_inset
are arbitrary,
an orthogonal tensor must satisfy
\begin_inset Formula $\mathbf{Q}^{T}\cdot\mathbf{Q}=\mathbf{I}$
\end_inset
.
In indicial form,
\begin_inset Formula $Q_{im}^{T}Q_{mj}=Q_{mi}Q_{mj}=\delta_{ij}$
\end_inset
,
and in matrix form,
\begin_inset Formula $\left[\mathbf{Q}\right]^{T}\left[\mathbf{Q}\right]=\left[\mathbf{I}\right]$
\end_inset
.
\end_layout
\begin_layout Standard
Note that
\begin_inset Formula $\mathbf{Q}^{T}\cdot\mathbf{Q}=\mathbf{I}$
\end_inset
implies that
\begin_inset Formula $\mathbf{Q}^{T}=\mathbf{Q}^{-1}$
\end_inset
,
i.e.,
the transpose of an orthogonal tensor is equal to its inverse,
since
\begin_inset Formula $\mathbf{Q}^{-1}\cdot\mathbf{Q}=\mathbf{Q}\cdot\mathbf{Q}^{-1}=\mathbf{I}$
\end_inset
.
It follows that
\begin_inset Formula
\begin{equation}
\boxed{\mathbf{Q}^{T}\cdot\mathbf{Q}=\mathbf{Q}\cdot\mathbf{Q}^{T}=\mathbf{I}}\label{eq21-1}
\end{equation}
\end_inset
The determinant of an orthogonal tensor is given by
\begin_inset Formula
\[
\det\mathbf{Q}=\left(\mathbf{Q}\cdot\mathbf{e}_{1}\times\mathbf{Q}\cdot\mathbf{e}_{2}\right)\cdot\mathbf{Q}\cdot\mathbf{e}_{3}=\left(\mathbf{e}'_{1}\times\mathbf{e}'_{2}\right)\cdot\mathbf{e}'_{3}=\pm\mathbf{e}'_{3}\cdot\mathbf{e}'_{3}=\pm1
\]
\end_inset
Here,
\begin_inset Formula $\left\{ \mathbf{e}'_{1},\mathbf{e}'_{2},\mathbf{e}'_{3}\right\} $
\end_inset
is the orthonormal basis resulting from the transformation of
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
by
\begin_inset Formula $\mathbf{Q}$
\end_inset
.
If
\begin_inset Formula $\mathbf{Q}$
\end_inset
maintains the handedness of
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
(e.g.,
if both
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
and
\begin_inset Formula $\left\{ \mathbf{e}'_{1},\mathbf{e}'_{2},\mathbf{e}'_{3}\right\} $
\end_inset
form a right-handed basis),
then
\begin_inset Formula $\det\mathbf{Q}=+1$
\end_inset
and
\begin_inset Formula $\mathbf{Q}$
\end_inset
is called a
\shape italic
proper
\shape default
orthogonal transformation (also equivalent to a rigid body rotation).
Otherwise,
in the case of a reflection which reverses the handedness of the basis vectors,
\begin_inset Formula $\det\mathbf{Q}=-1$
\end_inset
and
\begin_inset Formula $\mathbf{Q}$
\end_inset
is called
\shape italic
improper
\shape default
(e.g.,
\begin_inset Formula $\mathbf{e}'_{1}=\mathbf{e}_{1},\,\mathbf{e}'_{2}=-\mathbf{e}_{2},\,\mathbf{e}'_{3}=\mathbf{e}_{3}$
\end_inset
).
\end_layout
\begin_layout Subsection
Transformation Laws for Cartesian Components of Vectors and Tensors
\end_layout
\begin_layout Standard
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\begin_inset Graphics
filename Figures/FigOrthoBases.png
lyxscale 50
width 1.39in
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Orthonormal bases
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
and
\begin_inset Formula $\left\{ \mathbf{e}'_{1},\mathbf{e}'_{2},\mathbf{e}'_{3}\right\} $
\end_inset
.
\begin_inset CommandInset label
LatexCommand label
name "fig3"
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset
Let
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
and
\begin_inset Formula $\left\{ \mathbf{e}'_{1},\mathbf{e}'_{2},\mathbf{e}'_{3}\right\} $
\end_inset
be two orthogonal bases in a Cartesian coordinate system.
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
could be made to coincide with
\begin_inset Formula $\left\{ \mathbf{e}'_{1},\mathbf{e}'_{2},\mathbf{e}'_{3}\right\} $
\end_inset
through a rigid body rotation (i.e.,
a transformation that preserves vector length and angles),
\begin_inset Formula
\[
\mathbf{e}'_{i}=\mathbf{Q}\cdot\mathbf{e}_{i}=Q_{mi}\mathbf{e}_{m}
\]
\end_inset
where
\begin_inset Formula $Q_{mi}Q_{mj}=Q_{im}Q_{jm}=\delta_{ij}$
\end_inset
.
Since
\begin_inset Formula $Q_{mi}=\mathbf{e}_{m}\cdot\mathbf{Q}\cdot\mathbf{e}_{i}=\mathbf{e}_{m}\cdot\mathbf{e}'_{i}=\cos\left(\mathbf{e}_{m},\mathbf{e}'_{i}\right)$
\end_inset
,
the components of
\begin_inset Formula $\mathbf{Q}$
\end_inset
are direction cosines between
\begin_inset Formula $\mathbf{e}_{m}$
\end_inset
and
\begin_inset Formula $\mathbf{e}'_{i}$
\end_inset
.
\end_layout
\begin_layout Example
Rotation about
\begin_inset Formula $x_{3}$
\end_inset
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\begin_inset Graphics
filename Figures/FigRotationAboutX3.png
lyxscale 50
width 2.58in
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Rotation about
\begin_inset Formula $x_{3}$
\end_inset
.
\begin_inset CommandInset label
LatexCommand label
name "fig36"
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset
\begin_inset Formula
\[
\left[\mathbf{Q}\right]=\left[\begin{array}{ccc}
\cos\theta & -\sin\theta & 0\\
\sin\theta & \cos\theta & 0\\
0 & 0 & 1
\end{array}\right]
\]
\end_inset
\end_layout
\begin_layout Example
Reflection about
\begin_inset Formula $x_{2}-x_{3}$
\end_inset
plane,
\begin_inset Formula $\mathbf{e}'_{1}=\mathbf{Q}\cdot\mathbf{e}_{1}=-\mathbf{e}_{1},\,\mathbf{e}'_{2}=\mathbf{Q}\cdot\mathbf{e}_{2}=\mathbf{e}_{2},\,\mathbf{e}'_{3}=\mathbf{Q}\cdot\mathbf{e}_{3}=\mathbf{e}_{3}$
\end_inset
.
\begin_inset Formula
\[
\left[\mathbf{Q}\right]=\left[\begin{array}{ccc}
-1 & 0 & 0\\
0 & 1 & 0\\
0 & 0 & 1
\end{array}\right]
\]
\end_inset
\end_layout
\begin_layout Standard
For any vector
\begin_inset Formula $\mathbf{a}$
\end_inset
,
its components with respect to
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
and
\begin_inset Formula $\left\{ \mathbf{e}'_{1},\mathbf{e}'_{2},\mathbf{e}'_{3}\right\} $
\end_inset
are
\begin_inset Formula $a_{i}=\mathbf{e}_{i}\cdot\mathbf{a}$
\end_inset
and
\begin_inset Formula $a'_{i}=\mathbf{e}'_{i}\cdot\mathbf{a}$
\end_inset
,
respectively.
Using the above relation,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
a'_{i}=\mathbf{e}'_{i}\cdot\mathbf{a}=\mathbf{a}\cdot\mathbf{Q}\cdot\mathbf{e}_{i}=Q_{mi}\mathbf{a}\cdot\mathbf{e}_{m}=Q_{mi}a_{m},
\]
\end_inset
or
\begin_inset Formula
\begin{equation}
\boxed{a'_{i}=Q_{mi}a_{m}}\label{eq22-1}
\end{equation}
\end_inset
In matrix form,
\begin_inset Formula
\[
\left[\begin{array}{c}
a'_{1}\\
a'_{2}\\
a'_{3}
\end{array}\right]_{\mathbf{e'}_{i}}=\left[\begin{array}{ccc}
Q_{11} & Q_{21} & Q_{31}\\
Q_{12} & Q_{22} & Q_{32}\\
Q_{13} & Q_{23} & Q_{33}
\end{array}\right]\left[\begin{array}{c}
a_{1}\\
a_{2}\\
a_{3}
\end{array}\right]_{\mathbf{e}_{i}}
\]
\end_inset
or
\begin_inset Formula
\[
\left[\mathbf{a}\right]^{\prime}=\left[\mathbf{Q}\right]^{T}\left[\mathbf{a}\right]\quad\text{or}\quad\left[\mathbf{a}\right]_{\mathbf{e'}_{i}}=\left[\mathbf{Q}\right]^{T}\left[\mathbf{a}\right]_{\mathbf{e}_{i}}
\]
\end_inset
Here
\begin_inset Formula $\left[\mathbf{a}\right]^{\prime}$
\end_inset
and
\begin_inset Formula $\left[\mathbf{a}\right]$
\end_inset
are matrices of the
\shape italic
same
\shape default
vector,
expressed in two different coordinate systems.
This is
\shape italic
not the same
\shape default
as
\begin_inset Formula $\mathbf{a}'=\mathbf{Q}^{T}\cdot\mathbf{a}$
\end_inset
,
where
\begin_inset Formula $\mathbf{a}'$
\end_inset
is the linear transformation of
\begin_inset Formula $\mathbf{a}$
\end_inset
by
\begin_inset Formula $\mathbf{Q}^{T}$
\end_inset
.
\end_layout
\begin_layout Standard
Now consider a tensors
\begin_inset Formula $\mathbf{T}$
\end_inset
.
Its components with respect to
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
and
\begin_inset Formula $\left\{ \mathbf{e}'_{1},\mathbf{e}'_{2},\mathbf{e}'_{3}\right\} $
\end_inset
are given by
\begin_inset Formula $T_{ij}=\mathbf{e}_{i}\cdot\mathbf{T}\cdot\mathbf{e}_{j}$
\end_inset
and
\begin_inset Formula $T'_{ij}=\mathbf{e}'_{i}\cdot\mathbf{T}\cdot\mathbf{e}'_{j}$
\end_inset
,
respectively.
Thus,
\begin_inset Formula $T'_{ij}=\left(\mathbf{Q}\cdot\mathbf{e}_{i}\right)\cdot\mathbf{T}\cdot\left(\mathbf{Q}\cdot\mathbf{e}_{j}\right)=Q_{mi}\mathbf{e}_{m}\cdot\mathbf{T}\cdot Q_{nj}\mathbf{e}_{n}=Q_{mi}Q_{nj}\mathbf{e}_{m}\cdot\mathbf{T}\cdot\mathbf{e}_{n}=Q_{mi}Q_{nj}T_{mn}$
\end_inset
,
or
\begin_inset Formula
\begin{equation}
\boxed{T'_{ij}=Q_{mi}Q_{nj}T_{mn}}\label{eq23-1}
\end{equation}
\end_inset
In matrix form,
\begin_inset Formula $\left[\mathbf{T}\right]^{\prime}=\left[\mathbf{Q}\right]^{T}\left[\mathbf{T}\right]\left[\mathbf{Q}\right]$
\end_inset
,
or
\begin_inset Formula
\[
\left[\begin{array}{ccc}
T'_{11} & T'_{12} & T'_{13}\\
T'_{21} & T'_{22} & T'_{23}\\
T'_{31} & T'_{32} & T'_{33}
\end{array}\right]=\left[\begin{array}{ccc}
Q_{11} & Q_{21} & Q_{31}\\
Q_{12} & Q_{22} & Q_{32}\\
Q_{13} & Q_{23} & Q_{33}
\end{array}\right]\left[\begin{array}{ccc}
T_{11} & T_{12} & T_{13}\\
T_{21} & T_{22} & T_{23}\\
T_{31} & T_{32} & T_{33}
\end{array}\right]\left[\begin{array}{ccc}
Q_{11} & Q_{12} & Q_{13}\\
Q_{21} & Q_{22} & Q_{23}\\
Q_{31} & Q_{32} & Q_{33}
\end{array}\right]
\]
\end_inset
Equivalently,
we can show that
\begin_inset Formula
\begin{equation}
\boxed{T_{ij}=Q_{im}Q_{jn}T'_{mn}}\label{eq24-1}
\end{equation}
\end_inset
or
\begin_inset Formula $\left[\mathbf{T}\right]=\left[\mathbf{Q}\right]\left[\mathbf{T}\right]^{\prime}\left[\mathbf{Q}\right]^{T}$
\end_inset
.
As for vectors,
we note that
\begin_inset Formula $\left[\mathbf{T}\right]$
\end_inset
and
\begin_inset Formula $\left[\mathbf{T}\right]^{\prime}$
\end_inset
are the matrices of the
\shape italic
same
\shape default
tensor
\begin_inset Formula $\mathbf{T}$
\end_inset
,
with respect to two different coordinate systems.
This is
\shape italic
not the same
\shape default
as
\begin_inset Formula $\mathbf{T}'=\mathbf{Q}^{T}\cdot\mathbf{T}\cdot\mathbf{Q}$
\end_inset
.
\end_layout
\begin_layout Subsection
Symmetric and Antisymmetric Tensors
\begin_inset CommandInset label
LatexCommand label
name "subsubsec:symmetric"
\end_inset
\end_layout
\begin_layout Standard
A
\shape italic
symmetric
\shape default
tensor
\begin_inset Formula $\mathbf{T}$
\end_inset
satisfies
\begin_inset Formula $\mathbf{T}^{T}=\mathbf{T}$
\end_inset
,
i.e.,
\begin_inset Formula $T_{ji}=T_{ij}$
\end_inset
,
or in matrix form,
\begin_inset Formula
\[
\left[\mathbf{T}\right]=\left[\begin{array}{ccc}
T_{11} & T_{12} & T_{13}\\
T_{12} & T_{22} & T_{23}\\
T_{13} & T_{23} & T_{33}
\end{array}\right]
\]
\end_inset
An
\shape italic
antisymmetric
\shape default
(or
\shape italic
skew-symmetric
\shape default
) tensor
\begin_inset Formula $\boldsymbol{\Omega}$
\end_inset
satisfies
\begin_inset Formula $\boldsymbol{\Omega}^{T}=-\boldsymbol{\Omega}$
\end_inset
,
i.e.,
\begin_inset Formula $\Omega_{ji}=-\Omega_{ij}$
\end_inset
and thus
\begin_inset Formula $\Omega_{11}=\Omega_{22}=\Omega_{33}=0$
\end_inset
,
\begin_inset Formula
\[
\left[\boldsymbol{\Omega}\right]=\left[\begin{array}{ccc}
0 & \Omega_{12} & -\Omega_{31}\\
-\Omega_{12} & 0 & \Omega_{23}\\
\Omega_{31} & -\Omega_{23} & 0
\end{array}\right]
\]
\end_inset
Any tensor can be written as the sum of a symmetric and antisymmetric tensor,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\mathbf{T}=\mathbf{T}^{S}+\mathbf{T}^{A}\quad\text{where}\quad\mathbf{T}^{S}=\frac{1}{2}\left(\mathbf{T}+\mathbf{T}^{T}\right)\quad\text{and}\quad\mathbf{T}^{A}=\frac{1}{2}\left(\mathbf{T}-\mathbf{T}^{T}\right)
\]
\end_inset
This is a unique decomposition.
It can be checked that
\begin_inset Formula $\mathbf{T}^{S}$
\end_inset
is symmetric and
\begin_inset Formula $\mathbf{T}^{A}$
\end_inset
is antisymmetric.
\end_layout
\begin_layout Standard
The
\shape italic
dual vector
\shape default
\begin_inset Formula $\boldsymbol{\omega}$
\end_inset
of an antisymmetric tensor
\begin_inset Formula $\boldsymbol{\Omega}$
\end_inset
satisfies
\begin_inset Formula
\begin{equation}
\boxed{\boldsymbol{\Omega}\cdot\mathbf{a}=\boldsymbol{\omega}\times\mathbf{a}}\label{eq25-1}
\end{equation}
\end_inset
for any vector
\begin_inset Formula $\mathbf{a}$
\end_inset
.
Thus
\begin_inset Formula $\Omega_{ij}=\mathbf{e}_{i}\cdot\boldsymbol{\Omega}\cdot\mathbf{e}_{j}=\mathbf{e}_{i}\cdot\left(\boldsymbol{\omega}\times\mathbf{e}_{j}\right)=\omega_{k}\mathbf{e}_{i}\cdot\left(\mathbf{e}_{k}\times\mathbf{e}_{j}\right)=\omega_{k}\mathbf{e}_{i}\cdot\varepsilon_{kjl}\mathbf{e}_{l}=\omega_{k}\varepsilon_{kjl}\delta_{il}$
\end_inset
or
\begin_inset Formula
\begin{equation}
\boxed{\Omega_{ij}=-\varepsilon_{ijk}\omega_{k}}\label{eq26-1}
\end{equation}
\end_inset
In matrix form,
\begin_inset Formula
\[
\left[\boldsymbol{\Omega}\right]=\left[\begin{array}{ccc}
0 & -\omega_{3} & \omega_{2}\\
\omega_{3} & 0 & -\omega_{1}\\
-\omega_{2} & \omega_{1} & 0
\end{array}\right]
\]
\end_inset
Conversely,
it can also be shown that
\begin_inset Formula
\begin{equation}
\boxed{\omega_{i}=-\frac{1}{2}\varepsilon_{ijk}\Omega_{jk}}\label{eq27-1}
\end{equation}
\end_inset
As a homework problem,
it may be shown that
\begin_inset Formula $\varepsilon_{ijk}T_{jk}=\varepsilon_{ijk}T_{jk}^{A}$
\end_inset
,
since
\begin_inset Formula $\varepsilon_{ijk}T_{jk}^{S}=0$
\end_inset
for any symmetric tensor
\begin_inset Formula $\mathbf{T}^{S}$
\end_inset
.
\end_layout
\begin_layout Subsection
Eigenvalues and Eigenvectors of Real Symmetric Tensors
\end_layout
\begin_layout Standard
A second-order tensor
\begin_inset Formula $\mathbf{T}$
\end_inset
has three pairs of eigenvalues
\begin_inset Formula $\lambda$
\end_inset
and eigenvectors
\begin_inset Formula $\mathbf{v}$
\end_inset
that each satisfy
\begin_inset Formula
\begin{equation}
\mathbf{T}\cdot\mathbf{v}=\lambda\mathbf{v}\label{eq:eigen-def}
\end{equation}
\end_inset
The eigenvalues
\begin_inset Formula $\lambda$
\end_inset
are the roots of the characteristic equation of
\begin_inset Formula $\mathbf{T}$
\end_inset
,
which is the cubic polynomial produced by setting
\begin_inset Formula $\det\left(\mathbf{T}-\lambda\mathbf{I}\right)=0$
\end_inset
,
\begin_inset Formula
\begin{equation}
-\lambda^{3}+I_{1}\lambda^{2}-I_{2}\lambda+I_{3}=0\label{eq:eigen-char-eqn}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\begin{aligned}I_{1} & =\tr\mathbf{T}\\
I_{2} & =\frac{1}{2}\left(I_{1}^{2}-\tr\mathbf{T}^{2}\right)\\
I_{3} & =\det\mathbf{T}
\end{aligned}
\label{eq:eigen-invariants}
\end{equation}
\end_inset
are called
\emph on
invariants
\emph default
of
\begin_inset Formula $\mathbf{T}$
\end_inset
.
\end_layout
\begin_layout Standard
According to the Cayley-Hamilton theorem,
a tensor
\begin_inset Formula $\mathbf{T}$
\end_inset
satisfies its own characteristic equation,
\begin_inset Formula
\begin{equation}
-\mathbf{T}^{3}+I_{1}\mathbf{T}^{2}-I_{2}\mathbf{T}+I_{3}\mathbf{I}=\mathbf{0}\label{eq:Cayley-Hamilton-theorem}
\end{equation}
\end_inset
Therefore,
the cubic power of
\begin_inset Formula $\mathbf{T}$
\end_inset
can be expressed in terms of its lower powers according to
\begin_inset Formula $\mathbf{T}^{3}=I_{1}\mathbf{T}^{2}-I_{2}\mathbf{T}+I_{3}\mathbf{I}$
\end_inset
.
Taking the trace of this equation allows us to solve for
\begin_inset Formula $I_{3}$
\end_inset
as
\begin_inset Formula
\begin{equation}
\begin{aligned}I_{3} & =\frac{1}{3}\left(\tr\mathbf{T}^{3}-I_{1}\tr\mathbf{T}^{2}+I_{2}\tr\mathbf{T}\right)\\
& =\frac{1}{3}\left(\tr\mathbf{T}^{3}-I_{1}^{3}+3I_{1}I_{2}\right)
\end{aligned}
\label{eq:eigen-I3-soln}
\end{equation}
\end_inset
Multiplying eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:Cayley-Hamilton-theorem"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
by
\begin_inset Formula $\mathbf{T}^{-1}$
\end_inset
also produces
\begin_inset Formula
\[
I_{3}\mathbf{T}^{-1}=\mathbf{T}^{2}-I_{1}\mathbf{T}+I_{2}\mathbf{I}
\]
\end_inset
Using all these relations,
we may differentiate the three invariants of
\begin_inset Formula $\mathbf{T}$
\end_inset
with respect to
\begin_inset Formula $\mathbf{T}$
\end_inset
to get
\begin_inset Formula
\begin{equation}
\begin{aligned}\frac{\partial I_{1}}{\partial\mathbf{T}} & =\mathbf{I}\\
\frac{\partial I_{2}}{\partial\mathbf{T}} & =I_{1}\mathbf{I}-\mathbf{T}^{T}\\
\frac{\partial I_{3}}{\partial\mathbf{T}} & =I_{3}\mathbf{T}^{-T}
\end{aligned}
\label{eq:eigen-dinv-dT}
\end{equation}
\end_inset
\end_layout
\begin_layout Theorem*
The eigenvalues of real symmetric tensors are real (proof not provided here).
\end_layout
\begin_deeper
\begin_layout Theorem*
If the eigenvalues of a real symmetric tensor are all distinct,
the eigenvectors are orthogonal to each other.
\end_layout
\end_deeper
\begin_layout Standard
\shape italic
Proof:
\shape default
Given
\begin_inset Formula $\mathbf{T}\cdot\mathbf{v}_{1}=\lambda_{1}\mathbf{v}_{1}$
\end_inset
,
\begin_inset Formula $\mathbf{T}\cdot\mathbf{v}_{2}=\lambda_{2}\mathbf{v}_{2}$
\end_inset
,
\begin_inset Formula $\lambda_{1}\ne\lambda_{2}$
\end_inset
,
then
\begin_inset Formula $\mathbf{v}_{2}\cdot\mathbf{T}\cdot\mathbf{v}_{1}=\lambda_{1}\mathbf{v}_{1}\cdot\mathbf{v}_{2}$
\end_inset
and
\begin_inset Formula $\mathbf{v}_{1}\cdot\mathbf{T}\cdot\mathbf{v}_{2}=\lambda_{2}\mathbf{v}_{1}\cdot\mathbf{v}_{2}=\mathbf{v}_{2}\cdot\mathbf{T}^{T}\cdot\mathbf{v}_{1}=\mathbf{v}_{2}\cdot\mathbf{T}\cdot\mathbf{v}_{1}$
\end_inset
,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\Rightarrow\lambda_{1}\mathbf{v}_{1}\cdot\mathbf{v}_{2}=\lambda_{2}\mathbf{v}_{1}\cdot\mathbf{v}_{2}\quad\text{or}\quad\left(\lambda_{1}-\lambda_{2}\right)\mathbf{v}_{1}\cdot\mathbf{v}_{2}=0\quad\Rightarrow\mathbf{v}_{1}\cdot\mathbf{v}_{2}=0
\]
\end_inset
\end_layout
\begin_layout Standard
When two of the eigenvalues are repeated (a double root of the characteristic equation),
the resulting eigenvectors are not necessarily orthogonal to each other;
however,
they remain orthogonal to the third eigenvector.
This means that any vector lying in the plane normal to the third eigenvector is an eigenvector corresponding to the double root.
Similarly,
when all three eigenvalues are repeated (a triple root),
any vector becomes an eigenvector of
\begin_inset Formula $\mathbf{T}$
\end_inset
.
\end_layout
\begin_layout Example
In hydrostatics the stress tensor is
\begin_inset Formula $\mathbf{T}=-p\mathbf{I}$
\end_inset
,
where
\begin_inset Formula $p$
\end_inset
is the hydrostatic pressure.
In this case,
\begin_inset Formula $-p$
\end_inset
is a triple root of the characteristic equation of
\begin_inset Formula $\mathbf{T}$
\end_inset
.
Any vector
\begin_inset Formula $\mathbf{v}$
\end_inset
satisfies
\begin_inset Formula $\mathbf{T}\cdot\mathbf{v}=-p\mathbf{v}$
\end_inset
,
and is thus an eigenvector of
\begin_inset Formula $\mathbf{T}$
\end_inset
.
\end_layout
\begin_layout Standard
In continuum mechanics the eigenvectors
\begin_inset Formula $\mathbf{v}$
\end_inset
of a tensor are generally normalized,
\begin_inset Formula
\[
\mathbf{n}\equiv\frac{\mathbf{v}}{\left|\mathbf{v}\right|}
\]
\end_inset
Thus,
we can always find a set of three orthonormal eigenvectors
\begin_inset Formula $\left\{ \mathbf{n}_{1},\mathbf{n}_{2},\mathbf{n}_{3}\right\} $
\end_inset
for any real symmetric tensor
\begin_inset Formula $\mathbf{T}$
\end_inset
,
even when the eigenvalues are repeated.
Given a tensor
\begin_inset Formula $\mathbf{T}$
\end_inset
with eigenvalues
\begin_inset Formula $\lambda_{1},\lambda_{2},\lambda_{3}$
\end_inset
and eigenvectors
\begin_inset Formula $\mathbf{n}_{1},\mathbf{n}_{2},\mathbf{n}_{3}$
\end_inset
,
the components of
\begin_inset Formula $\mathbf{T}$
\end_inset
in the orthonormal basis
\begin_inset Formula $\left\{ \mathbf{n}_{1},\mathbf{n}_{2},\mathbf{n}_{3}\right\} $
\end_inset
can be obtained from
\begin_inset Formula
\[
T_{i1}=\mathbf{v}_{i}\cdot\mathbf{T}\cdot\mathbf{n}_{1}=\lambda_{1}\mathbf{n}_{i}\cdot\mathbf{n}_{1}=\lambda_{1}\delta_{i1}\quad T_{i2}=\lambda_{2}\delta_{i2}T_{i3}=\lambda_{3}\delta_{i3}
\]
\end_inset
Thus,
\begin_inset Formula
\[
\left[\mathbf{T}\right]_{\mathbf{n}_{i}}=\left[\begin{array}{ccc}
\lambda_{1} & 0 & 0\\
0 & \lambda_{2} & 0\\
0 & 0 & \lambda_{3}
\end{array}\right]=\left[\begin{array}{ccc}
T_{1} & 0 & 0\\
0 & T_{2} & 0\\
0 & 0 & T_{3}
\end{array}\right]
\]
\end_inset
Since
\begin_inset Formula $\mathbf{T}=T_{ij}\mathbf{n}_{i}\otimes\mathbf{n}_{j}=T_{i1}\mathbf{n}_{i}\otimes\mathbf{n}_{1}+T_{i2}\mathbf{n}_{i}\otimes\mathbf{n}_{2}+T_{i3}\mathbf{n}_{i}\otimes\mathbf{n}_{3}$
\end_inset
,
we find that
\begin_inset Formula
\begin{equation}
\mathbf{T}=\lambda_{1}\mathbf{n}_{1}\otimes\mathbf{n}_{1}+\lambda_{2}\mathbf{n}_{2}\otimes\mathbf{n}_{2}+\lambda_{3}\mathbf{n}_{3}\otimes\mathbf{n}_{3}\label{eq:eigen-spectral-rep}
\end{equation}
\end_inset
This is known as the
\shape italic
spectral representation
\shape default
of the tensor
\begin_inset Formula $\mathbf{T}$
\end_inset
.
In particular,
since the eigenvalues of the identity tensor are
\begin_inset Formula $\lambda_{1}=\lambda_{2}=\lambda_{3}=1$
\end_inset
,
and since any vector is an eigenvector of
\begin_inset Formula $\mathbf{I}$
\end_inset
,
we can select the basis vectors
\begin_inset Formula $\mathbf{e}_{1},\,\mathbf{e}_{2},\,\mathbf{e}_{3}$
\end_inset
so that the spectral representation of
\begin_inset Formula $\mathbf{I}$
\end_inset
may be given by
\begin_inset Formula
\begin{equation}
\mathbf{I}=\mathbf{e}_{i}\otimes\mathbf{e}_{i}=\mathbf{e}_{1}\otimes\mathbf{e}_{1}+\mathbf{e}_{2}\otimes\mathbf{e}_{2}+\mathbf{e}_{3}\otimes\mathbf{e}_{3}\label{eq:eigen-identity-spectral}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Orthogonal Transformation of Tensors
\end_layout
\begin_layout Standard
An orthogonal transformation
\begin_inset Formula $\mathbf{Q}$
\end_inset
transforms any vector
\begin_inset Formula $\mathbf{a}$
\end_inset
into the vector
\begin_inset Formula $\mathbf{Q}\cdot\mathbf{a}$
\end_inset
,
which we may denote as
\begin_inset Formula
\begin{equation}
\mathbf{a}^{*}=\mathbf{Q}\cdot\mathbf{a}\label{eq:OT-vector}
\end{equation}
\end_inset
Recall that a tensor
\begin_inset Formula $\mathbf{T}$
\end_inset
may be expressed in its spectral representation as per eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:eigen-spectral-rep"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
Each of its eigenvectors
\begin_inset Formula $\mathbf{n}$
\end_inset
is transformed by
\begin_inset Formula $\mathbf{Q}$
\end_inset
into
\begin_inset Formula $\mathbf{n}^{*}=\mathbf{Q}\cdot\mathbf{n}$
\end_inset
.
Since eigenvalues of
\begin_inset Formula $\mathbf{T}$
\end_inset
are invariant to orthogonal transformations,
it follows that
\begin_inset Formula
\[
\begin{aligned}\mathbf{T}^{*} & =\lambda_{1}\mathbf{n}_{1}^{*}\otimes\mathbf{n}_{1}^{*}+\lambda_{2}\mathbf{n}_{2}^{*}\otimes\mathbf{n}_{2}^{*}+\lambda_{3}\mathbf{n}_{3}^{*}\otimes\mathbf{n}_{3}^{*}\\
& =\lambda_{1}\left(\mathbf{Q}\cdot\mathbf{n}_{1}\right)\otimes\left(\mathbf{Q}\cdot\mathbf{n}_{1}\right)+\lambda_{2}\left(\mathbf{Q}\cdot\mathbf{n}_{2}\right)\otimes\left(\mathbf{Q}\cdot\mathbf{n}_{2}\right)+\lambda_{3}\left(\mathbf{Q}\cdot\mathbf{n}_{3}\right)\otimes\left(\mathbf{Q}\cdot\mathbf{n}_{3}\right)\\
& =\mathbf{Q}\cdot\left(\lambda_{1}\mathbf{n}_{1}\otimes\mathbf{n}_{1}+\lambda_{2}\mathbf{n}_{2}\otimes\mathbf{n}_{2}+\lambda_{3}\mathbf{n}_{3}\otimes\mathbf{n}_{3}\right)\cdot\mathbf{Q}^{T}\\
& =\mathbf{Q}\cdot\mathbf{T}\cdot\mathbf{Q}^{T}
\end{aligned}
\]
\end_inset
Thus,
the transformation of the second-order tensor
\begin_inset Formula $\mathbf{T}$
\end_inset
by
\begin_inset Formula $\mathbf{Q}$
\end_inset
is
\begin_inset Formula $\mathbf{T}^{*}=\mathbf{Q}\cdot\mathbf{T}\cdot\mathbf{Q}^{T}$
\end_inset
.
\end_layout
\begin_layout Section
Higher Order Tensors
\end_layout
\begin_layout Standard
Note that
\begin_inset Formula $\mathbf{a}\cdot\mathbf{T}\cdot\mathbf{b}=\mathbf{a}\otimes\mathbf{b}:\mathbf{T}=\mathbf{T}:\mathbf{a}\otimes\mathbf{b}$
\end_inset
,
and
\begin_inset Formula $\mathbf{a}\otimes\mathbf{b}:\mathbf{c}\otimes\mathbf{d}=\left(\mathbf{a}\cdot\mathbf{c}\right)\left(\mathbf{b}\cdot\mathbf{d}\right)$
\end_inset
.
Similarly,
\begin_inset Formula $\left(\mathbf{a}\otimes\mathbf{b}\right)\cdot\left(\mathbf{c}\otimes\mathbf{d}\right)=\left(\mathbf{b}\cdot\mathbf{c}\right)\mathbf{a}\otimes\mathbf{d}$
\end_inset
.
We will be using generalizations of these relations when examining higher order tensors.
\end_layout
\begin_layout Subsection
Third-Order Tensors
\end_layout
\begin_layout Standard
A third-order tensor
\begin_inset Formula $\mathbb{T}$
\end_inset
is a linear transformation that transforms any vector
\begin_inset Formula $\mathbf{a}$
\end_inset
into a second-order tensor
\begin_inset Formula $\mathbf{S}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\boxed{\mathbb{T}\cdot\mathbf{a}=\mathbf{S}}\label{eq62-1}
\end{equation}
\end_inset
In general,
the dyadic product of three vectors is a third-order tensor which satisfies
\begin_inset Formula
\begin{equation}
\boxed{\left(\mathbf{a}\otimes\mathbf{b}\otimes\mathbf{c}\right)\cdot\left(\alpha\mathbf{u}+\beta\mathbf{v}\right)=\left(\alpha\mathbf{c}\cdot\mathbf{u}+\beta\mathbf{c}\cdot\mathbf{v}\right)\left(\mathbf{a}\otimes\mathbf{b}\right)}\quad\forall\,\mathbf{u},\mathbf{v}\,.\label{eq62b}
\end{equation}
\end_inset
Any third-order tensor
\begin_inset Formula $\mathbb{T}$
\end_inset
can be expressed in terms of its Cartesian components
\begin_inset Formula $T_{ijk}$
\end_inset
as
\begin_inset Formula
\begin{equation}
\boxed{\mathbb{T}=T_{ijk}\mathbf{e}_{i}\otimes\mathbf{e}_{j}\otimes\mathbf{e}_{k}}\label{eq62d}
\end{equation}
\end_inset
and the Cartesian components of a third-order tensor may be evaluated from
\begin_inset Formula
\begin{equation}
\boxed{T_{ijk}=\mathbf{e}_{i}\cdot\left(\mathbb{T}\cdot\mathbf{e}_{k}\right)\cdot\mathbf{e}_{j}}\label{eq62c}
\end{equation}
\end_inset
It follows from Eqs.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq62b"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq62d"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
that
\begin_inset Formula
\[
\mathbb{T}\cdot\mathbf{a}=T_{ijk}\left(\mathbf{e}_{i}\otimes\mathbf{e}_{j}\otimes\mathbf{e}_{k}\right)\cdot\mathbf{a}=T_{ijk}\left(\mathbf{e}_{k}\cdot\mathbf{a}\right)\left(\mathbf{e}_{i}\otimes\mathbf{e}_{j}\right)=T_{ijk}a_{k}\left(\mathbf{e}_{i}\otimes\mathbf{e}_{j}\right)=\mathbf{S}=S_{ij}\left(\mathbf{e}_{i}\otimes\mathbf{e}_{j}\right)
\]
\end_inset
so that the indicial form of eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq62-1"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
is
\begin_inset Formula
\begin{equation}
T_{ijk}a_{k}=S_{ij}\label{eq62e}
\end{equation}
\end_inset
In particular,
\begin_inset Formula
\begin{equation}
\mathbb{T}\cdot\mathbf{e}_{k}=T_{ijk}\mathbf{e}_{i}\otimes\mathbf{e}_{j}\label{eq62f}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
The double dot product of a third-order tensor with a second-order tensor is defined by
\begin_inset Formula
\[
\boxed{\left(\mathbf{a}\otimes\mathbf{b}\otimes\mathbf{c}\right):\left(\mathbf{d}\otimes\mathbf{e}\right)=\left(\mathbf{b}\cdot\mathbf{d}\right)\left(\mathbf{c}\cdot\mathbf{e}\right)\mathbf{a}}\,,
\]
\end_inset
and
\begin_inset Formula
\[
\boxed{\left(\mathbf{a}\otimes\mathbf{b}\right):\left(\mathbf{c}\otimes\mathbf{d}\otimes\mathbf{e}\right)=\left(\mathbf{a}\cdot\mathbf{c}\right)\left(\mathbf{b}\cdot\mathbf{d}\right)\mathbf{e}}\,.
\]
\end_inset
Therefore,
the double dot product of a third-order tensor with a second-order tensor is a vector given by
\begin_inset Formula
\begin{equation}
\mathbb{T}:\left(\mathbf{a}\otimes\mathbf{b}\right)=\left(\mathbb{T}\cdot\mathbf{b}\right)\cdot\mathbf{a}\,.\label{eq63f}
\end{equation}
\end_inset
Proof:
Using
\begin_inset Formula $\mathbb{T}\cdot\mathbf{b}=T_{ijk}b_{k}\left(\mathbf{e}_{i}\otimes\mathbf{e}_{j}\right)$
\end_inset
,
we find that
\begin_inset Formula $\left(\mathbb{T}\cdot\mathbf{b}\right)\cdot\mathbf{a}=T_{ijk}b_{k}\left(\mathbf{e}_{i}\otimes\mathbf{e}_{j}\right)\cdot\mathbf{a}=T_{ijk}b_{k}\left(\mathbf{a}\cdot\mathbf{e}_{j}\right)\mathbf{e}_{i}=T_{ijk}a_{j}b_{k}\mathbf{e}_{i}$
\end_inset
.
Similarly,
\begin_inset Formula $\mathbb{T}:\left(\mathbf{a}\otimes\mathbf{b}\right)=T_{ijk}\left(\mathbf{e}_{i}\otimes\mathbf{e}_{j}\otimes\mathbf{e}_{k}\right):\left(\mathbf{a}\otimes\mathbf{b}\right)=T_{ijk}\left(\mathbf{e}_{j}\cdot\mathbf{a}\right)\left(\mathbf{e}_{k}\cdot\mathbf{b}\right)\mathbf{e}_{i}=T_{ijk}a_{j}b_{k}\mathbf{e}_{i}$
\end_inset
,
thus completing the proof.
\end_layout
\begin_layout Standard
For any second-order tensor
\begin_inset Formula $\mathbf{S}$
\end_inset
,
it also follows that
\begin_inset Formula
\[
\mathbb{T}:\mathbf{S}=T_{ijk}S_{jk}\mathbf{e}_{i}\,.
\]
\end_inset
\end_layout
\begin_layout Example
If we introduce the notation
\begin_inset Formula $\mathbb{E}$
\end_inset
as the third-order (pseudo-)tensor of Cartesian components
\begin_inset Formula $\varepsilon_{ijk}$
\end_inset
,
the relation between an antisymmetric tensor and its dual vector can also be written as
\begin_inset Formula
\begin{equation}
\boxed{\boldsymbol{\Omega}=-\mathbb{E}\cdot\boldsymbol{\omega}}\label{eq26b}
\end{equation}
\end_inset
Similarly,
\begin_inset Formula
\begin{equation}
\boxed{\boldsymbol{\omega}=-\frac{1}{2}\mathbb{E}:\boldsymbol{\Omega}}\label{eq27b}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Fourth-Order Tensors
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fourth-Order-Tensors"
\end_inset
\end_layout
\begin_layout Standard
The dyadic product of four vectors is a fourth-order tensor
\begin_inset Formula $\mathbf{a}\otimes\mathbf{b}\otimes\mathbf{c}\otimes\mathbf{d}$
\end_inset
,
defined as
\begin_inset Formula
\begin{equation}
\left(\mathbf{a}\otimes\mathbf{b}\otimes\mathbf{c}\otimes\mathbf{d}\right)\cdot\mathbf{v}=\left(\mathbf{d}\cdot\mathbf{v}\right)\left(\mathbf{a}\otimes\mathbf{b}\otimes\mathbf{c}\right)\label{eq:63g}
\end{equation}
\end_inset
The Cartesian components of a fourth-order tensor
\begin_inset Formula $\mathcal{T}$
\end_inset
are given by
\begin_inset Formula
\begin{equation}
T_{ijkl}=\left(\mathbf{e}_{i}\otimes\mathbf{e}_{j}\right):\mathcal{T}:\left(\mathbf{e}_{k}\otimes\mathbf{e}_{l}\right)\label{eq:63h}
\end{equation}
\end_inset
such that
\begin_inset Formula
\begin{equation}
\mathcal{T}=T_{ijkl}\mathbf{e}_{i}\otimes\mathbf{e}_{j}\otimes\mathbf{e}_{k}\otimes\mathbf{e}_{l}\label{eq:63i}
\end{equation}
\end_inset
Therefore,
a fourth-order tensor transforms a vector into a third-order tensor,
\begin_inset Formula
\begin{equation}
\mathcal{T}\cdot\mathbf{a}=\left(T_{ijkl}\mathbf{e}_{i}\otimes\mathbf{e}_{j}\otimes\mathbf{e}_{k}\otimes\mathbf{e}_{l}\right)\cdot\mathbf{a}=T_{ijkl}a_{l}\mathbf{e}_{i}\otimes\mathbf{e}_{j}\otimes\mathbf{e}_{k}\equiv S_{ijk}\mathbf{e}_{i}\otimes\mathbf{e}_{j}\otimes\mathbf{e}_{k}=\mathbb{S}\label{eq:63j}
\end{equation}
\end_inset
The double dot product of a fourth-order tensor with a second-order tensor is a second-order tensor defined as
\begin_inset Formula
\begin{equation}
\boxed{\mathcal{T}:\left(\mathbf{a}\otimes\mathbf{b}\right)=\left(\mathcal{T}\cdot\mathbf{b}\right)\cdot\mathbf{a}}\label{eq:63k}
\end{equation}
\end_inset
from which it can be shown that
\begin_inset Formula
\begin{equation}
\mathcal{T}:\mathbf{S}=T_{ijmn}S_{mn}\mathbf{e}_{i}\otimes\mathbf{e}_{j}\label{eq:63l}
\end{equation}
\end_inset
or equivalently,
\begin_inset Formula $\left(\mathcal{T}:\mathbf{S}\right)_{ij}=T_{ijkl}S_{kl}$
\end_inset
.
\end_layout
\begin_layout Standard
A fourth-order tensor can exhibit three levels of symmetry,
which can be represented using Cartesian components as
\begin_inset Formula
\begin{equation}
\begin{aligned}T_{ijkl} & =T_{jikl} & \text{left minor symmetry}\\
T_{ijkl} & =T_{ijlk} & \text{right minor symmetry}\\
T_{ijkl} & =T_{klij} & \text{major symmetry}
\end{aligned}
\label{eq:tens4-symmetries}
\end{equation}
\end_inset
Whereas a general fourth-order tensor may have 81 distinct components,
a tensor with one minor symmetry has 54 distinct components;
a tensor with both minor symmetries has 36 distinct components;
and a tensor with minor and major symmetries has 21distinct components.
We may represent the major symmetry of
\begin_inset Formula $\mathcal{T}$
\end_inset
as
\begin_inset Formula $\mathcal{T}=\mathcal{T}^{T}$
\end_inset
,
whose Cartesian representation is provided above.
It follows from this definition that
\begin_inset Formula
\[
\begin{aligned}\mathbf{S}:\mathcal{T} & =\mathcal{T}^{T}:\mathbf{S}\\
\left(\mathbf{S}:\mathcal{T}\right)_{ij} & =S_{kl}T_{klij}=T_{ijkl}^{T}S_{kl}
\end{aligned}
\]
\end_inset
\end_layout
\begin_layout Subsection
Additional Tensor Products
\end_layout
\begin_layout Standard
Earlier we saw that the dyadic product of vectors can produce tensors.
Similarly,
we can define dyadic products of tensors which produce higher-order tensors.
In particular,
the following products of second-order tensors
\begin_inset Formula $\mathbf{A}$
\end_inset
and
\begin_inset Formula $\mathbf{B}$
\end_inset
produce fouth-order tensors,
satisfying
\begin_inset Formula
\begin{equation}
\begin{aligned}\left(\mathbf{A}\otimes\mathbf{B}\right):\mathbf{S} & =\left(\mathbf{B}:\mathbf{S}\right)\mathbf{A}\\
\left(\mathbf{A}\oslash\mathbf{B}\right):\mathbf{S} & =\mathbf{A}\cdot\mathbf{S}\cdot\mathbf{B}^{T}\\
\left(\mathbf{A}\obslash\mathbf{B}\right):\mathbf{S} & =\mathbf{A}\cdot\mathbf{S}^{T}\cdot\mathbf{B}^{T}\\
\left(\mathbf{A}\odot\mathbf{B}\right):\mathbf{S} & =\frac{1}{2}\left(\mathbf{A}\oslash\mathbf{B}+\mathbf{A}\obslash\mathbf{B}\right):\mathbf{S}=\frac{1}{2}\left(\mathbf{A}\cdot\mathbf{S}\cdot\mathbf{B}^{T}+\mathbf{A}\cdot\mathbf{S}^{T}\cdot\mathbf{B}^{T}\right)
\end{aligned}
\label{eq:tensor-products}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{S}$
\end_inset
is any second-order tensor.
Using Cartesian components of tensors,
the indicial form of these tensor products are
\begin_inset Formula
\begin{equation}
\begin{aligned}\left(\mathbf{A}\otimes\mathbf{B}\right)_{ijkl} & =A_{ij}B_{kl}\\
\left(\mathbf{A}\oslash\mathbf{B}\right)_{ijkl} & =A_{ik}B_{jl}\\
\left(\mathbf{A}\obslash\mathbf{B}\right)_{ijkl} & =A_{il}B_{jk}\\
\left(\mathbf{A}\odot\mathbf{B}\right)_{ijkl} & =\frac{1}{2}\left(A_{ik}B_{jl}+A_{il}B_{jk}\right)
\end{aligned}
\label{eq:tensor-products-Cartesian}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
\begin_inset CommandInset bibtex
LatexCommand bibtex
bibfiles "FEBio3"
options "bibtotoc,plain"
\end_inset
\end_layout
\end_body
\end_document
================================================
FILE: Documentation/FEBio_User_Manual.lyx
================================================
#LyX 2.4 created this file. For more info see https://www.lyx.org/
\lyxformat 620
\begin_document
\begin_header
\save_transient_properties true
\origin unavailable
\textclass extbook
\begin_preamble
\usepackage{latexsym}
\hypersetup{colorlinks=true,citecolor=blue,filecolor=blue,urlcolor=blue,linkcolor=blue}
\end_preamble
\use_default_options false
\begin_modules
theorems-ams
eqs-within-sections
figs-within-sections
\end_modules
\maintain_unincluded_children no
\language english
\language_package none
\inputencoding auto-legacy
\fontencoding auto
\font_roman "default" "default"
\font_sans "helvet" "default"
\font_typewriter "default" "default"
\font_math "auto" "auto"
\font_default_family sfdefault
\use_non_tex_fonts false
\font_sc false
\font_roman_osf false
\font_sans_osf false
\font_typewriter_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\use_microtype false
\use_dash_ligatures false
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize 11
\spacing single
\use_hyperref true
\pdf_bookmarks true
\pdf_bookmarksnumbered true
\pdf_bookmarksopen false
\pdf_bookmarksopenlevel 1
\pdf_breaklinks false
\pdf_pdfborder true
\pdf_colorlinks false
\pdf_backref false
\pdf_pdfusetitle true
\papersize default
\use_geometry true
\use_package amsmath 2
\use_package amssymb 2
\use_package cancel 0
\use_package esint 0
\use_package mathdots 0
\use_package mathtools 0
\use_package mhchem 0
\use_package stackrel 0
\use_package stmaryrd 0
\use_package undertilde 0
\cite_engine natbib
\cite_engine_type numerical
\biblio_style plain
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 0
\use_formatted_ref 0
\use_minted 0
\use_lineno 0
\index Index
\shortcut idx
\color #008000
\end_index
\spellchecker_ignore english feb
\spellchecker_ignore english xplt
\spellchecker_ignore english fluid-FSI
\spellchecker_ignore english Broyden's
\spellchecker_ignore english qnmethod
\spellchecker_ignore english rtol
\spellchecker_ignore english Globals
\spellchecker_ignore english Fc
\spellchecker_ignore english triphasic
\spellchecker_ignore english Glc
\spellchecker_ignore english SolidBoundMolecules
\spellchecker_ignore english sbm
\spellchecker_ignore english 'fem
\spellchecker_ignore english '
\spellchecker_ignore english mymat
\spellchecker_ignore english neo-Hookean
\spellchecker_ignore english NodeSet
\spellchecker_ignore english DiscreteSet
\spellchecker_ignore english ElementSet
\spellchecker_ignore english SurfacePair
\spellchecker_ignore english PartList
\spellchecker_ignore english trilinear
\spellchecker_ignore english pentahedral
\spellchecker_ignore english pentrahedral
\spellchecker_ignore english Bischoff
\spellchecker_ignore english et
\spellchecker_ignore english al
\spellchecker_ignore english EAS
\spellchecker_ignore english Vu-Quoc
\spellchecker_ignore english Klinkel
\spellchecker_ignore english normals
\spellchecker_ignore english Jacobian
\spellchecker_ignore english 'shell
\spellchecker_ignore english stress'
\spellchecker_ignore english strain'
\spellchecker_ignore english ShellDomain
\spellchecker_ignore english BeamDomain
\spellchecker_ignore english nodesets
\spellchecker_ignore english delem
\spellchecker_ignore english allParts
\spellchecker_ignore english bc
\spellchecker_ignore english nodeset
\spellchecker_ignore english MeshDomains
\spellchecker_ignore english SolidDomain
\spellchecker_ignore english udg-hex
\spellchecker_ignore english sri-solid
\spellchecker_ignore english Gauss-Lobatto
\spellchecker_ignore english Lobatto
\spellchecker_ignore english tet
\spellchecker_ignore english nodally
\spellchecker_ignore english iso
\spellchecker_ignore english elastic-shell-eas
\spellchecker_ignore english MeshData
\spellchecker_ignore english NodeData
\spellchecker_ignore english SurfaceData
\spellchecker_ignore english ElementData
\spellchecker_ignore english procedurally
\spellchecker_ignore english Emap
\spellchecker_ignore english const
\spellchecker_ignore english EdgeData
\spellchecker_ignore english Adaptor
\spellchecker_ignore english FEAMR
\spellchecker_ignore english adaptor
\spellchecker_ignore english remeshing
\spellchecker_ignore english Remeshing
\spellchecker_ignore english visco-elastic
\spellchecker_ignore english MeshAdaptor
\spellchecker_ignore english adapators
\spellchecker_ignore english iters
\spellchecker_ignore english elems
\spellchecker_ignore english mmg
\spellchecker_ignore english remesh
\spellchecker_ignore english hausdorff
\spellchecker_ignore english XY
\spellchecker_ignore english dof
\spellchecker_ignore english ic
\spellchecker_ignore english init
\spellchecker_ignore english vx
\spellchecker_ignore english Prestrain
\spellchecker_ignore english prestrain
\spellchecker_ignore english eq
\spellchecker_ignore english Nodesets
\spellchecker_ignore english sx
\spellchecker_ignore english sy
\spellchecker_ignore english sz
\spellchecker_ignore english lc
\spellchecker_ignore english pos
\spellchecker_ignore english rb
\spellchecker_ignore english RCR
\spellchecker_ignore english Windkessel
\spellchecker_ignore english loadcurve
\spellchecker_ignore english Rz
\spellchecker_ignore english Rv
\spellchecker_ignore english Rw
\spellchecker_ignore english vy
\spellchecker_ignore english vz
\spellchecker_ignore english euler
\spellchecker_ignore english Ey
\spellchecker_ignore english Ez
\spellchecker_ignore english dofs
\spellchecker_ignore english maxaug
\spellchecker_ignore english minaug
\spellchecker_ignore english gaptol
\spellchecker_ignore english angtol
\spellchecker_ignore english revolute
\spellchecker_ignore english laugon
\spellchecker_ignore english Revolute
\spellchecker_ignore english xy-plane
\spellchecker_ignore english LoadData
\spellchecker_ignore english loadcontroller
\spellchecker_ignore english loadpoint
\spellchecker_ignore english fluidflux
\spellchecker_ignore english soluteflux
\spellchecker_ignore english heatflux
\spellchecker_ignore english hc
\spellchecker_ignore english Backflow
\spellchecker_ignore english backflow
\spellchecker_ignore english unitless
\spellchecker_ignore english Poiseuille
\spellchecker_ignore english wx
\spellchecker_ignore english wy
\spellchecker_ignore english wz
\spellchecker_ignore english axisymmetric
\spellchecker_ignore english Fluid-FSI
\spellchecker_ignore english FSI
\spellchecker_ignore english Biphasic-FSI
\spellchecker_ignore english biphasic-FSI
\spellchecker_ignore english inhomogeneous
\spellchecker_ignore english inhomogeneity
\spellchecker_ignore english non-const
\spellchecker_ignore english blt
\spellchecker_ignore english bsf
\spellchecker_ignore english tol
\spellchecker_ignore english centrifual
\spellchecker_ignore english ay
\spellchecker_ignore english az
\spellchecker_ignore english --
\spellchecker_ignore english FEBio's
\spellchecker_ignore english Laursen's
\spellchecker_ignore english symmetrized
\spellchecker_ignore english SBP
\spellchecker_ignore english SBS
\spellchecker_ignore english SMP
\spellchecker_ignore english CP
\spellchecker_ignore english aug
\spellchecker_ignore english fric
\spellchecker_ignore english coeff
\spellchecker_ignore english ktmult
\spellchecker_ignore english seg
\spellchecker_ignore english Macauley
\spellchecker_ignore english Symmetrized
\spellchecker_ignore english nonsymmetric
\spellchecker_ignore english -
\spellchecker_ignore english in-situ
\spellchecker_ignore english augtol
\spellchecker_ignore english Vmax
\spellchecker_ignore english Fmax
\spellchecker_ignore english Lmax
\spellchecker_ignore english Sv
\spellchecker_ignore english Ftl
\spellchecker_ignore english Ftv
\spellchecker_ignore english xml
\spellchecker_ignore english dmp
\spellchecker_ignore english levmar
\spellchecker_ignore english DWORD
\leftmargin 1in
\topmargin 1in
\rightmargin 1in
\bottommargin 1in
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\is_math_indent 0
\math_numbering_side default
\quotes_style english
\dynamic_quotes 0
\papercolumns 1
\papersides 2
\paperpagestyle default
\tablestyle default
\tracking_changes false
\output_changes false
\change_bars false
\postpone_fragile_content false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\docbook_table_output 0
\docbook_mathml_prefix 1
\end_header
\begin_body
\begin_layout Standard
\begin_inset FormulaMacro
\newcommand{\Dev}{\operatorname{Dev}}
{\text{Dev}}
\end_inset
\begin_inset FormulaMacro
\newcommand{\dev}{\operatorname{dev}}
{\text{dev}}
\end_inset
\begin_inset FormulaMacro
\newcommand{\grad}{\operatorname{grad}}
{\text{grad}}
\end_inset
\begin_inset FormulaMacro
\newcommand{\divg}{\operatorname{div}}
{\text{div}}
\end_inset
\begin_inset FormulaMacro
\newcommand{\Ei}{\operatorname{Ei}}
{\text{Ei}}
\end_inset
\begin_inset FormulaMacro
\newcommand{\tr}{\operatorname{tr}}
{\text{tr}}
\end_inset
\end_layout
\begin_layout Title
\begin_inset Graphics
filename Figures/FigFEBioTitle.png
width 4.88in
\end_inset
\series bold
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
User's Manual Version 4.12
\end_layout
\begin_layout Date
\series bold
Last Updated:
February 25,
2026
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Paragraph*
Contributors
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Steve Maas (
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{mailto:steve.maas@utah.edu}{steve.maas@utah.edu}
\end_layout
\end_inset
)
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
Dr.
Jeffrey Weiss (
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{mailto:jeff.weiss@utah.edu}{jeff.weiss@utah.edu}
\end_layout
\end_inset
)
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
Dr.
Gerard Ateshian (
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{mailto:ateshian@columbia.edu}{ateshian@columbia.edu}
\end_layout
\end_inset
)
\end_layout
\begin_layout Paragraph*
Contact address
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Musculoskeletal Research Laboratories,
University of Utah
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
72 S.
Central Campus Drive,
Room 2646
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
Salt Lake City,
Utah
\end_layout
\begin_layout Paragraph*
Website
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Weiss Lab:
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
url{https://weisslabutah.org}
\end_layout
\end_inset
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
FEBio:
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
url{http://febio.org}
\end_layout
\end_inset
\end_layout
\begin_layout Paragraph*
Forum
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
url{https://forums.febio.org/}
\end_layout
\end_inset
\end_layout
\begin_layout Paragraph*
Acknowledgments
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
\backslash
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Development of the FEBio project is supported in part by a grant from the U.S.
National Institutes of Health (R01GM083925).
\end_layout
\begin_layout Standard
\begin_inset Graphics
filename Figures/NIHlogo.png
lyxscale 25
width 2cm
special height=0.75in
\end_inset
\end_layout
\begin_layout Standard
\series bold
\begin_inset CommandInset toc
LatexCommand tableofcontents
\end_inset
\end_layout
\begin_layout Chapter
Introduction
\begin_inset CommandInset label
LatexCommand label
name "chap:introduction"
\end_inset
\end_layout
\begin_layout Section
Overview of FEBio
\begin_inset CommandInset label
LatexCommand label
name "sec:overview"
\end_inset
\end_layout
\begin_layout Standard
FEBio is a nonlinear finite element solver that is specifically designed for biomechanical applications.
It offers modeling scenarios,
constitutive models and boundary conditions that are relevant to many research areas in biomechanics,
thus offering a powerful tool for solving 3D problems in computational biomechanics.
The software is open-source and the source code,
as well as pre-compiled executables for Windows,
OS-X,
and Linux platforms are available for download at
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
url{http://febio.org}
\end_layout
\end_inset
.
This chapter presents a brief overview of the available features of FEBio.
\end_layout
\begin_layout Standard
FEBio is a multi-physics code and can solve problems in structural mechanics,
biphasic and multiphasic physics,
fluid mechanics,
and fluid-solid interaction (FSI).
Both (quasi-) static (or steady-state) and dynamic (or transient) analyses can be performed in each of the different physics modules.
For instance,
in the structural mechanics module,
the (quasi-) static response of the system is sought in a quasi-static analysis and the effects of inertia are ignored.
In a dynamic analysis,
the inertial effects are included in the governing equations to calculate the time dependent response of the system.
In the biphasic module,
a coupled solid-fluid problem is solved.
In a transient biphasic analysis the time dependent response of both the solid and the fluid phase is determined.
For the steady-state analysis the final relaxed state is recovered.
Similarly,
for multiphasic problems,
both the time dependent transient response as well as the steady-state response can be determined.
For fluid analyses,
dynamic and steady-state responses may be specified.
\end_layout
\begin_layout Standard
Many nonlinear constitutive models are available,
allowing the user to model the often complicated biological tissue behavior.
Several isotropic constitutive models are supported such as Neo-Hookean,
Mooney-Rivlin,
Ogden,
Arruda-Boyce and Veronda-Westmann.
All these models have a nonlinear stress-strain response and are objective for large deformations.
In addition to the isotropic models there are several transversely isotropic and orthotropic constitutive models available.
These models exhibit anisotropic behavior in a single or multiple preferred directions and are useful for representing biological tissues such as tendons,
muscles,
cartilage and other tissues that contain fibers.
FEBio also contains a
\shape italic
rigid body
\shape default
constitutive model.
This model can be used to represent materials or structures whose deformation is negligible compared to that of other materials in the overall model.
Several constitutive models are available for representing the solid phase of biphasic and multiphasic materials,
which are materials that contain both a solid phase and a fluid phase.
For incompressible materials FEBio employs special algorithms for enforcing the incompressibility constraint.
A three-field formulation is used for tri-linear hexahedral and wedge elements.
This algorithm allows the user to capture the accurate response of highly incompressible materials.
\end_layout
\begin_layout Standard
FEBio can now also solve first-order computational homogenization problems.
In such problems,
the response of the macro-model is determined by the averaged local response of a representative volume element (RVE).
The deformation of the macro-model,
and more specifically the local deformation gradient,
is applied to a RVE model which in turns determines the stress (and tangent) of the macro-model.
\end_layout
\begin_layout Standard
FEBio supports a wide range of boundary conditions and loads to model interactions between materials that are relevant to problems in biomechanics.
Deformable models can be connected to rigid bodies.
With this feature,
the user can model prescribed rotations and torques for rigid segments,
thereby allowing the coupling of rigid body mechanics with deformable continuum mechanics.
FEBio provides the ability to represent frictionless and frictional contact between rigid and/or deformable materials using sliding interfaces.
A sliding surface is defined between two surfaces that are allowed to separate and slide across each other but are not allowed to penetrate.
Variations of the sliding interface,
such as tied interfaces,
tied-sliding (tension-compression) and rigid walls,
are available as well.
As of version 1.2 it is also possible to model the fluid flow across two contacting biphasic materials.
Finally,
the user may specify a body force to model the effects such as,
gravity,
base acceleration or centripetal acceleration.
\end_layout
\begin_layout Standard
FEBio has a large library of element formulations.
These include linear and quadratic tetrahedral,
hexahedral and pentahedral (wedge) elements.
FEBio also supports triangular quadrilateral shell elements,
with linear and quadratic interpolations.
\end_layout
\begin_layout Standard
In order to facilitate the process of customizing FEBio,
a plugin framework is available.
Plugins allow researchers to add new materials,
boundary conditions,
loads,
and more,
without the need to edit and recompile the FEBio source code itself.
\end_layout
\begin_layout Standard
FEBio is a nonlinear implicit FE solver and does not have mesh generation capabilities.
The finite element mesh,
as well as all constitutive parameters and loading is defined in an input file,
the format of which is described in detail in this document.
This input file needs to be generated by preprocessing software.
The preferred preprocessor for FEBio is called
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/febio-studio/}{
\backslash
emph{FEBioStudio}}
\end_layout
\end_inset
.
FEBioStudio can convert some other formats to the FEBio input specification.
For instance,
NIKE3D
\begin_inset CommandInset citation
LatexCommand citep
key "Maker95"
literal "true"
\end_inset
and Abaqus input files can be imported in FEBioStudio and can be exported as a FEBio input file.
\end_layout
\begin_layout Section
About this document
\begin_inset CommandInset label
LatexCommand label
name "sec:about"
\end_inset
\end_layout
\begin_layout Standard
This document is part of a set of three manuals that accompany FEBio:
the User's Manual,
describing how to use FEBio (this manual),
a
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://help.febio.org/doxygen/html/index.html}{
\backslash
emph{Developer's Manual}}
\end_layout
\end_inset
for users who wish to modify or add features to the code,
and a
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Theory Manual}}
\end_layout
\end_inset
,
which describes the theory behind the FEBio algorithms.
\begin_inset Foot
status open
\begin_layout Plain Layout
The User and Theory manuals are also available in pdf form,
but the Developer's manual is only available online.
\end_layout
\end_inset
\end_layout
\begin_layout Standard
This document discusses how to use FEBio and describes the input file format in detail.
Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:running-FEBio"
nolink "false"
\end_inset
describes how to run FEBio and explains the various command line options.
It also discusses the different files that are required and created by FEBio.
Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Free-Format-Input"
nolink "false"
\end_inset
describes the format of the FEBio input file.
An XML-based format is used,
organizing the data in a convenient hierarchical structure.
Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Materials"
nolink "false"
\end_inset
gives a detailed overview of the available constitutive models.
Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Restart-Input-file"
nolink "false"
\end_inset
discusses the restart capabilities of FEBio.
The restart feature allows the user to interrupt a run and continue it at a later time,
optionally making changes to the problem data.
Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Multi-step-Analysis"
nolink "false"
\end_inset
describes the multi-step analysis feature,
which allows the user to split up the entire analysis into several steps.
Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Parameter-Optimization"
nolink "false"
\end_inset
explains how to setup and run a parameter optimization problem using FEBio's optimization module.
Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Troubleshooting"
nolink "false"
\end_inset
provides helpful information for troubleshooting an FEBio model and offers guidelines that help users avoid common problems.
Chapter
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Configuration-File"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
discusses the configuration file,
which allow users to customize how FEBio runs on their system.
For instance,
users can configure the default linear solver that will be used for solving models.
Chapter
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:FEBio-Plugins"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
explains how use plugins with FEBio.
\end_layout
\begin_layout Section
FEBio Basics
\end_layout
\begin_layout Standard
This section provides a brief overview of how FEBio works.
For more details regarding the algorithms in FEBio,
please consult the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Theory Manual}}
\end_layout
\end_inset
.
\end_layout
\begin_layout Standard
When FEBio starts,
first it will load the configuration file where it will find instructions on what linear solver to use,
what plugins to load,
etc.
Please see section
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Configuration-File"
nolink "false"
\end_inset
for more information regarding the configuration file.
\end_layout
\begin_layout Standard
Usually FEBio will read the input file that was specified on the command line next.
The input file contains all the information that FEBio needs to build the FE Model and solve it.
At the very least the input file will define the mesh,
the materials,
boundary conditions,
time stepping,
and analysis parameters.
This document describes the structure of the FEBio input file in detail.
See
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Free-Format-Input"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Materials"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
Next,
FEBio will start solving the model defined by the input file and proceed as follows:
\end_layout
\begin_layout Enumerate
\series bold
Loop over all analysis steps
\series default
.
A model can define multiple analysis steps.
In each step the boundary conditions,
time stepping,
and analysis parameters can be modified (e.g.
a two-step analysis where a model is loaded statically in the first step.
In the second step the load is released and the dynamic response is sought.)
\end_layout
\begin_layout Enumerate
\series bold
For each analysis step,
loop over all time steps
\series default
:
In each analysis step,
loads are usually applied incrementally for stability reasons over a period of time.
The time parameter can represent the actual physical time (e.g.
in dynamic simulations),
or a pseudo-time (e.g.
quasi-static loading of an elastic model.).
For more on time stepping see
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Control-Section"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Enumerate
\series bold
Solve each time step
\series default
:
for each time step FEBio will solve the corresponding finite element equations.
Usually they are nonlinear and thus are solved with a nonlinear solution strategy.
In FEBio this is a variation of the Newton method.
See section
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Control-Section"
nolink "false"
\end_inset
for more information.
\end_layout
\begin_layout Enumerate
\series bold
Check convergence
\series default
:
Since Newton's method is an iterative method convergence is determined by comparing the norms of the solution and residual to the user-defined values in the input file.
What norms are used will depend on the physics of the problem,
as well as on several user control parameters.
See
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Control-Section"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Enumerate
\series bold
Augmentation
\series default
:
In models that define some type of constraint (e.g.
contact,
rigid joints,
etc.),
FEBio will do an additional calculation after a time step converges,
called an augmentation.
This is because FEBio does not calculate the exact Lagrange multiplier that enforce the constraints,
but instead uses an iterative algorithm (called augmented Lagrangian method) to approximate the Lagrange multipliers.
During the augmentation,
FEBio updates the approximate Lagrange multipliers.
If the updates to the multipliers are small,
FEBio will terminate the time step,
otherwise it will restart the time step with the updated multipliers.
\end_layout
\begin_layout Standard
See the figure below for an overview of the basic FEBio flow.
\end_layout
\begin_layout Standard
\begin_inset Graphics
filename Figures/FEBio flow.png
scale 50
\end_inset
\end_layout
\begin_layout Section
Units in FEBio
\begin_inset CommandInset label
LatexCommand label
name "sec:units"
\end_inset
\end_layout
\begin_layout Standard
FEBio does not assume a specific unit system.
It is up to the user to enter numbers that are defined in consistent units.
For example,
when entering material parameters in SI units,
the user must enter all loads,
contact parameters,
and other boundary conditions in SI units as well.
The units of all the parameters are given when they are defined in this manual.
We use a generic designation of units for all the parameters using the following symbols.
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
\shape italic
Symbol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
\emph on
Name
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
\shape italic
SI unit
\series default
\shape default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
L
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Length
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
meter (m)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
M
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Mass
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
kilogram (kg)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
t
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Time
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
second (s)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
T
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Temperature
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Kelvin (K)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
n
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Amount of substance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
mole (mol)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
F
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Force
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Newton (kg
\begin_inset Formula $\cdot$
\end_inset
m/s
\begin_inset Formula $^{2}$
\end_inset
)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
P
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Pressure,
stress
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Pascal (Pa=N/m
\begin_inset Formula $^{2}$
\end_inset
)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Q
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Electric charge
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Coulomb (C=A
\begin_inset Formula $\cdot$
\end_inset
s)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
Units are given using the bracket notation.
For instance,
the unit for density is [
\series bold
M/L
\series default
\begin_inset Formula $^{3}$
\end_inset
] and the unit for permeability is [
\series bold
L
\series default
\begin_inset Formula $^{4}$
\end_inset
\series bold
/F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t].
\series default
When using SI units,
this corresponds to units of kg/m
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
for density and m
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/N.s for permeability,
respectively.
Unitless parameters are designated by empty brackets (
\series bold
[ ]
\series default
).
The units for angles are either [
\series bold
deg
\series default
] for degrees or [
\series bold
rad
\series default
] for radians.
\end_layout
\begin_layout Standard
When adopting a consistent set of units,
first choose a primary set of units,
and then determine the remaining derived units.
For example,
in typical problems in solid mechanics,
the primary set consists of three units.
If you choose [
\series bold
M
\series default
]=kg,
[
\series bold
L
\series default
]=m,
and [
\series bold
t
\series default
]=s,
then [
\series bold
F
\series default
]=N and [
\series bold
P
\series default
]=Pa.
Alternatively,
if you choose [
\series bold
L
\series default
]=mm,
[
\series bold
F
\series default
]=N and [
\series bold
T
\series default
]=s as the primary set,
then [
\series bold
P
\series default
]=MPa (since 1 N/mm
\begin_inset Formula $^{\mathrm{2}}=$
\end_inset
10
\begin_inset Formula $^{\mathrm{6}}$
\end_inset
N/m
\begin_inset Formula $^{\mathrm{2}}=$
\end_inset
1 MPa) and [
\series bold
M
\series default
]=tonne (tonne = N
\begin_inset Formula $\cdot$
\end_inset
s
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/mm).
The primary set of units must be independent.
For instance,
in the last example,
you cannot choose [
\series bold
P
\series default
] as a primary unit as it can be expressed in terms of [
\series bold
F
\series default
] and [
\series bold
L
\series default
] (i.e.
[
\series bold
P
\series default
]=[
\series bold
F/L
\series default
\begin_inset Formula $^{\mathrm{\mathbf{2}}}$
\end_inset
]).
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Primary Units
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
time
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
s
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
length
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
mm
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
force
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
N
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
amount of substance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
nmol
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
charge
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
C
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
temperature
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
K
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Derived Units
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
stress
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
N/mm
\begin_inset Formula $^{2}$
\end_inset
,
MPa
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
permeability
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
mm
\begin_inset Formula $^{4}$
\end_inset
/N
\begin_inset Formula $\cdot$
\end_inset
s,
mm
\begin_inset Formula $^{2}$
\end_inset
/Pa
\begin_inset Formula $\cdot$
\end_inset
s
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
diffusivity
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
mm
\begin_inset Formula $^{2}$
\end_inset
/s
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
concentration
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
nmol/mm
\begin_inset Formula $^{3}$
\end_inset
,
mM
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
charge density
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
nEq/mm
\begin_inset Formula $^{3}$
\end_inset
,
mEq/L
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
voltage
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
mV
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
current density
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A/mm
\begin_inset Formula $^{2}$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
current
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Chapter
Running FEBio
\begin_inset CommandInset label
LatexCommand label
name "chap:running-FEBio"
\end_inset
\end_layout
\begin_layout Standard
FEBio is a command line application which means it does not have its own Graphical User Interface (GUI) and must be run from a shell or command line.
FEBio runs on several different computing platforms including Windows,
Mac OSX,
and many versions of Linux.
The command line input and output options are described in this chapter.
\end_layout
\begin_layout Section
Running FEBio on Windows
\begin_inset CommandInset label
LatexCommand label
name "sec:running-FEBio-Windows"
\end_inset
\end_layout
\begin_layout Standard
There are several ways to run FEBio on Windows.
The easiest way is by simply selecting the FEBio program from the Programs menu or by double-clicking the FEBio icon in the installation folder.
However,
this runs FEBio with the installation folder as the working folder,
and unless the FEBio input files are in this folder,
you will need to know the relative or absolute path to your input files.
A more practical approach is to run FEBio from a command prompt.
Before you can do this,
you need to know two things:
how to open a command prompt and how to add the FEBio installation folder to your PATH environment variable so that you can run FEBio from any folder on your system.
\begin_inset Foot
status open
\begin_layout Plain Layout
The current FEBio installers should automatically setup the environment path so that FEBio can be run from anywhere on the file system.
\end_layout
\end_inset
\end_layout
\begin_layout Subsection
Windows
\begin_inset CommandInset label
LatexCommand label
name "subsec:windows"
\end_inset
\end_layout
\begin_layout Standard
In order to run FEBio from a command prompt,
the path to the FEBio executable must be set in the PATH environment variable.
The environment variables,
including the PATH variable,
are specified in the Environment Variables dialog box.
There are a few different ways to get to this dialog box.
The easiest way is to write
\begin_inset Quotes eld
\end_inset
environment
\begin_inset Quotes erd
\end_inset
in the Windows search bar,
and select the
\begin_inset Quotes eld
\end_inset
Edit the system's environment variables
\begin_inset Quotes erd
\end_inset
suggestion.
This will open the
\begin_inset Quotes eld
\end_inset
System Properties
\begin_inset Quotes erd
\end_inset
dialog box.
On the Advanced tab,
click the Environment variables button.
This will open the Environment Variables dialog box.
Find the
\shape italic
path
\shape default
variable and click the
\shape italic
Edit
\shape default
button.
On older versions of Windows a semicolon delimited text string appears.
At the end of that string (don't delete the current value) type a semi-colon and then the absolute path to the FEBio installation folder (e.g.
C:/Program Files/FEBio/bin/).
On Windows 10 or newer,
the values are displayed in a list.
Either click New or double-click on the first empty slot in the list and type the path the febio executable.
Then click the
\shape italic
OK
\shape default
-button on all open dialog boxes.
\end_layout
\begin_layout Standard
To open a command prompt,
type
\emph on
cmd
\emph default
in the Windows search and press Enter.
A command prompt window should appear.
You can now use the
\shape italic
cd
\shape default
(change directory) command to navigate to the folder that contains the FEBio input files.
To run FEBio,
simply type
\shape italic
febio4
\shape default
(with or without additional arguments) and press
\shape italic
Enter
\shape default
.
Note that if you already had a command prompt open when changing the PATH environment variable,
you'll nee to close this window and reopen it after the changes to the environment variables are applied.
\end_layout
\begin_layout Subsection
Running FEBio from Explorer
\begin_inset CommandInset label
LatexCommand label
name "subsec:running-Explorer"
\end_inset
\end_layout
\begin_layout Standard
A third method of running FEBio,
which often is very convenient,
is to run FEBio from Windows Explorer.
To do this,
first open Explorer and browse to the folder that contains your FEBio input files.
Next,
right-click on the input file and select
\shape italic
Open With
\shape default
.
Now select
\shape italic
Choose default program
\shape default
.
A dialog box appears with a list of programs to open the input file.
If FEBio is not on this list yet,
click the
\shape italic
Browse
\shape default
button.
Locate the FEBio executable (e.g.
in C:/Program Files/FEBio2/bin),
select it and press the
\shape italic
Open
\shape default
button.
Now select FEBio in the
\shape italic
Open With
\shape default
dialog box and press Ok.
\end_layout
\begin_layout Standard
After you have done this once,
the process simplifies.
After you right-click the input file,
FEBio should now show up in the
\shape italic
Open With
\shape default
menu item and can be selected immediately without having to go through all the previous steps.
\end_layout
\begin_layout Section
Running FEBio on Linux or MAC
\begin_inset CommandInset label
LatexCommand label
name "sec:Running-Linux-MAC"
\end_inset
\end_layout
\begin_layout Standard
Running FEBio on Linux or Mac is as easy as opening up a shell window and typing FEBio on the command line.
However,
you may need to define an alias to the folder that contains the FEBio executable if you want to run FEBio from any folder on your system.
Since this depends on your shell,
you need to consult your Linux documentation on how to do this.
E.g.
if you are using c-shell,
you can define an alias as follows:
\end_layout
\begin_layout LyX-Code
alias febio '/path/to/febio/executable/'
\end_layout
\begin_layout Standard
If you don't want to define this alias every time you open a shell window,
you can place it in your shell start up file (e.g.
\shape italic
.cshrc
\shape default
for c-shell).
\end_layout
\begin_layout Section
The Command Line
\begin_inset CommandInset label
LatexCommand label
name "sec:Command-Line"
\end_inset
\end_layout
\begin_layout Standard
FEBio is started from a shell window (or the
\shape italic
command prompt
\shape default
in Windows).
The command line is the same for all platforms:
\end_layout
\begin_layout LyX-Code
febio4 [-o1 [arg1] | -o2 [arg2] | ...
]
\end_layout
\begin_layout Standard
Where -o1,
-o2 are options and
\shape italic
arg1
\shape default
,
\shape italic
arg2
\shape default
,
...
are additional arguments.
The different options (of which most are optional) are given by the following list:
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Float table
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
command line option
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
argument
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-i
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify the FEBio input file.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
feb file name
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-r
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify the FEBio restart file.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
restart file or dump file
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-g,-g1,-g2
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Debug flags
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-p
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify name of the FEBio plot file.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
plot file name
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-o
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify the name of the FEBio log file.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
log file name
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-s
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify the optimization input file.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
optimization input file
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-d
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Run an FEBio diagnostic
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
diagnostic input file
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-break
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Set a breakpoint where FEBio will pause the run.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
breakpoint
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-dump[=
\emph on
n
\emph default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Activate restart option and (optionally) set dump file name
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
dump file name
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-dump_stride[=n]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Set the dump interval.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-config
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify the FEBio configuration file to use.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
configuration file
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-noconfig
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Don't read configuration file.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-nosplash
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Don't print the splash window to the screen on startup.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-import
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Import a plugin file.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
plugin file name
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-silent
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Run FEBio in silent mode,
which suppresses screen output.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-task[=
\emph on
name
\emph default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Run an FEBio task
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
task input file
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-info
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Print febio version information to screen or file
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
(optional) output file name
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-noappend
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Do not append the log and plot files on restart.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-norun
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Do not run FEBio.
(Only process command line.)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
-output_negative_jacobians[=n]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify the max nr of negative jacobians that will be printed.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
List of command line options.
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
A more detailed description of these options follows.
\end_layout
\begin_layout Description
\series bold
-i
\series default
The -i option is used to specify the name of the input file.
The input file is expected to follow the format specifications as described in Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Free-Format-Input"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio4
\series bold
-i input.feb
\end_layout
\begin_layout Standard
This is the most common way to start an FEBio run.
However,
FEBio allows the omission of the -i when only a filename is given.
\end_layout
\begin_layout LyX-Code
> febio4 input.feb
\end_layout
\begin_layout Standard
On Windows,
this allows for starting FEBio by double-clicking on an input file (assuming you have chosen FEBio as the default program to open .feb files).
Note that if additional options are specified on the command line the -i must be present.
\end_layout
\begin_layout Standard
It is also allowed to omit the .feb extension for FEBio input files.
If no extension is given,
FEBio will assume that .feb is the file extension.
Thus,
the following command will run the file
\emph on
input.feb
\emph default
:
\end_layout
\begin_layout LyX-Code
> febio4 input
\end_layout
\begin_layout Description
\series bold
-r
\series default
The -r option allows you to restart a previous analysis.
The filename that must follow this option is an FEBio
\shape italic
restart input file
\shape default
or a
\shape italic
dump file
\shape default
.
The restart input file and dump file are described in more detail in
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Restarting-a-Run"
nolink "false"
\end_inset
.
The -i and -r options are mutually exclusive;
only one of them may appear on the command line.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio4
\series bold
-r file.feb
\end_layout
\begin_layout Description
\series bold
-g,-g1,-g2
\series default
The –g options run FEBio in
\shape italic
debug mode
\shape default
,
in which case FEBio will print more information to the log and plot files.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Debugging-a-Run"
nolink "false"
\end_inset
for more information on running FEBio in debug mode.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio4 -i input.feb
\series bold
–g
\end_layout
\begin_layout Description
\series bold
-p
\series default
The –p option allows the user to specify the name of the
\shape italic
plot file
\shape default
.
The plot file is a binary file that contains the main results of the analysis.
FEBio usually provides a default name for this file;
however,
the user can override the default name using this option.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:FEBio-Output"
nolink "false"
\end_inset
for more details on the output files generated by FEBio.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio4 -i input.feb
\series bold
–p out.xplt
\end_layout
\begin_layout Description
\series bold
-o
\series default
The –o option allows the user to set the name of the
\shape italic
log file
\shape default
.
The log file will contain a record of the screen output that was generated during a run.
FEBio usually provides a default name for this file (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:FEBio-Output"
nolink "false"
\end_inset
),
but the user can override it with this command line option.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio4 -i input.feb
\series bold
–o out.log
\end_layout
\begin_layout Description
\series bold
-s
\series default
This option instructs FEBio to run a material parameter optimization on the specified input file.
The optimization module is described in detail in Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Parameter-Optimization"
nolink "false"
\end_inset
.
The –s option is followed by the optimization control file which contains among other things the parameters that need to be optimized.
Note that the restart feature does not work with the optimization module.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio4 –i file.feb
\series bold
–s control.opt
\end_layout
\begin_layout Description
\series bold
-d
\series default
This option will run a FEBio diagnostics.
A diagnostic is a special type of test that can be used to verify an implementation.
For example,
the
\shape italic
tangent diagnostic
\shape default
allows users to check the consistency between the material's stress and tangent implementations.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio4
\series bold
–d diagnostic.feb
\end_layout
\begin_layout Description
\series bold
-break
\series default
With this option a break point can be set which sets a time point or an event at which FEBio will interrupt the run and show the FEBio prompt.
The following example sets a break point at time 1.0.
FEBio will interrupt the run after the time step at time 1.0 is reached (i.e.
has converged).
(See section
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Setting-break-points"
nolink "false"
\end_inset
for more information on setting break points.)
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio4 –i file.feb
\series bold
–break 1.0
\end_layout
\begin_layout Description
\series bold
-dump
\series default
It is possible to restart a previous run using the restart capability in FEBio.
This is useful when a run terminates unexpectedly.
If that happens,
the user can restart the analysis from the last converged timestep.
Before this feature can be used,
the user must request the creation of a
\shape italic
dump file
\shape default
.
This file will store all the information that FEBio will need to restart the analysis.
FEBio will usually provide a default name for the dump file,
but the
\emph on
–dump
\emph default
command line option allows the user to override the default name for the dump file.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Restarting-a-Run"
nolink "false"
\end_inset
and Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Restart-Input-file"
nolink "false"
\end_inset
for more details on how to use the restart feature.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio4 -i input.feb
\series bold
–dump out.dmp
\end_layout
\begin_layout Standard
To control when FEBio will write the dumpfile,
the -dump command can be appended by a number that defines the dump level.
See section
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Restarting-a-Run"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for more information.
\end_layout
\begin_layout Description
-dump_stride Sets the interval between writing dump files.
The default is 1 (although the dump level may affect this as well.) The following example will write a dump file after every 10 timesteps.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio4 -i input.feb –dump out.dmp
\series bold
-dump_stride=10
\end_layout
\begin_layout Description
\series bold
-config
\series default
As of version 1.2,
FEBio uses a
\shape italic
configuration file
\shape default
to store platform specific settings.
Usually FEBio assumes that the location for this configuration file is the same as the executable.
However,
the user can specify a different location and filename using the –config command line option.
If the user does not have a configuration file or does not wish to use one,
this can be specified using the
\emph on
–noconfig
\emph default
option.
More details on the configuration file can be found in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Configuration-file"
nolink "false"
\end_inset
and Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Configuration-File"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio4 -i input.feb
\series bold
–config C:
\begin_inset Formula $\backslash$
\end_inset
path
\begin_inset Formula $\backslash$
\end_inset
to
\begin_inset Formula $\backslash$
\end_inset
febio.xml
\end_layout
\begin_layout Description
\series bold
-noconfig
\series default
Do not read and process the FEBio configuration file.
FEBio will start with its default configuration.
\end_layout
\begin_layout Description
\series bold
-nosplash
\series default
When the –nosplash command is entered on the command line,
FEBio will not print the welcome message to the screen.
This is useful when calling FEBio from another application and when the user wishes to suppress any screen output from FEBio.
Other options for suppressing output can be set in the control section of the FEBio input file (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Control-Parameters"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio4 -i input.feb
\series bold
–nosplash
\end_layout
\begin_layout Description
-import This command will load the plugin that is specified following this command line option.
Although it is more convenient to list plugins in the FEBio configuration file,
this option allows users to load a plugin from the command line,
if such a need would arise.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio4
\series bold
–import myplugin.dll
\end_layout
\begin_layout Description
\series bold
-silent
\series default
When the –silence option is specified on the command line,
FEBio will not generate any output to the screen.
Unless explicitly instructed not to,
FEBio will still create a log file which will have the convergence information.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio4 -i input.feb
\series bold
–silent
\end_layout
\begin_layout Description
\series bold
-task
\series default
FEBio will always run a
\emph on
task
\emph default
.
The default task is to solve a forward model defined by the input file specified using the -i command line option.
However,
other tasks are available,
such as optimization and restart,
as well as user-created tasks created in FEBio plugins.
The name of the task is defined after an equal sign (=).
An optional task control file can be specified as well.
For instance,
an alternative way for running an optimization problem is as follows.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio4 -i input.feb
\series bold
–task=optimize control.opt
\end_layout
\begin_layout Description
\series bold
-info
\series default
Prints version information to the screen.
\end_layout
\begin_layout Description
-noappend Do not append the log and plot file on restart.
When restarting an analysis,
FEBio will append the log and plot files with new data.
However,
when using this flag,
new log and plot files will be generated for the run.
\end_layout
\begin_layout Description
-norun Do not run FEBio.
Only command line is processed.
For instance,
to get the version info from FEBio without running it,
use the following command.
\end_layout
\begin_layout LyX-Code
> febio4 -info -norun
\end_layout
\begin_layout Description
-output_negative_jacobians Sets whether FEBio will output any negative Jacobians.
A negative Jacobian is often an indication of a problem during the solution process and knowing where these negative Jacobians occurred may be helpful for debugging.
By default,
FEBio will only report that negative Jacobians happened,
but won't print any other information.
The command can also be appended by a number that indicates the max number of Jacobians will be printed.
\end_layout
\begin_layout LyX-Code
> febio4 -i input.feb
\series bold
–output_negative_jacobians=100
\end_layout
\begin_layout Section
The FEBio Prompt
\begin_inset CommandInset label
LatexCommand label
name "sec:FEBio-prompt"
\end_inset
\end_layout
\begin_layout Standard
The FEBio prompt is shown when you start FEBio without any command arguments (referred to as
\emph on
interactive mode
\emph default
),
or when a run is interrupted either by the user (using ctrl+c
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
This feature does not work on some Linux platforms and may abruptly terminate the run.
\end_layout
\end_inset
;
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Interrupting-a-Run"
nolink "false"
\end_inset
for more details),
or by reaching a breakpoint (referred to as
\emph on
break mode
\emph default
).
The FEBio prompt will look something like this:
\end_layout
\begin_layout LyX-Code
febio>
\end_layout
\begin_layout Standard
You can now enter one of the following commands.
Note that some commands are only available in a specific mode (either
\emph on
interactive
\emph default
or
\emph on
break
\emph default
mode).
Also see additional comments below.
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Float table
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
command line option
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
argument
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
interactive
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
break
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
break
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Add a breakpoint,
which stops FEBio at a particular point.(1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
breakpoint
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
breaks
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Print a list of breakpoints.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
clear
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Clears one or more breakpoints.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
breakpoint
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
config
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Load (or reload) configuration file.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
configuration file
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
cont
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Continue the current task
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
conv
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Force conversion of the current time step.
(2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
debug
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Toggle debug mode (3)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[on/off]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
events
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Print a list of events
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
fail
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Force the current time step to fail.
(4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
help
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Print a list of available commands
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
import
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Import a plugin file
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
plugin file name
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
out
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Output to file the current stiffness matrix and right-hand side
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[-txt]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
plot
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Write the current model state to the plot file.
(5)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
plugins
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Print a list of plugins.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
print
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Print the value of an internal variable.
(6)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
variable name
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
quit
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Stop the current model or exit of no model is running
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
restart
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Toggle the restart flag.
(7)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
run
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Run a febio input file.
(8)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
(command line options)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
set
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
sets certain model and configuration variables.
(9)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
variable name (space) value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
svg
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Write the sparse matrix profile to an svg file.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
svg file name
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
time
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Print progress time statistics.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
unload
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Unload a plugin from FEBio.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
plugin name
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
version
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Print version information.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
where
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prints the current callback event
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
list
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Lists all the factory classes (10)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
(command line options)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
✓
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
List of options for the FEBio command prompt.
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments
\emph default
:
\end_layout
\begin_layout Enumerate
A breakpoint is a particular time point or an event at which FEBio will pause the run.
See section
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Setting-break-points"
nolink "false"
\end_inset
for more details on break points.
\end_layout
\begin_layout Enumerate
The
\emph on
force
\emph default
command is useful,
for example,
when a time step is having difficulty satisfying the convergence criteria.
The user can then manually force the convergence of the time step.
However,
if the convergence difficulties are due to instabilities,
forcing a time step to converge could cause the solution to become unstable or even incorrect.
Also be aware that even if the solution recovers on later timesteps,
the manually converged step might be incorrect.
\end_layout
\begin_layout Enumerate
The
\emph on
debug
\emph default
command toggles the debug flag.
Adding
\shape italic
on
\shape default
(
\shape italic
off
\shape default
) will turn the debug mode on (resp.
off).
In debug mode,
FEBio will store additional information to the log and plot file that could be useful in debugging the run.
It is important to note that since FEBio will store all non-converged states to the plot file,
this file may become very large in a short number of time steps.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Debugging-a-Run"
nolink "false"
\end_inset
for more details on debugging.
\end_layout
\begin_layout Enumerate
If the current time step is not converging and if the auto-time stepper is enabled,
the fail command will stop the current time step and retry it with a smaller time step size.
If the auto-time stepper is not enabled,
the fail command will simply exit the application.
\end_layout
\begin_layout Enumerate
The
\emph on
plot
\emph default
command is useful when you want to store the non-converged state at the current iteration.
Note that this command only stores the state at the current iteration.
If you turn on debug mode,
all the iterations are stored to the plot file.
\end_layout
\begin_layout Enumerate
The following variables can be printed.
\end_layout
\begin_deeper
\begin_layout Description
nnz Number of nonzeroes in global stiffness matrix.
\end_layout
\begin_layout Description
time The current simulation time
\end_layout
\begin_layout Description
neq The number of equations
\end_layout
\end_deeper
\begin_layout Enumerate
When the restart flag is set,
FEBio will create a dump file at the end of each converged time step.
This dump file can then later be used to restart the analysis from the last converged time step.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Restarting-a-Run"
nolink "false"
\end_inset
and Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Restart-Input-file"
nolink "false"
\end_inset
for more details on FEBio's restart feature.
\end_layout
\begin_layout Enumerate
The
\emph on
run
\emph default
command is used to start an FEBio task.
This command takes the same options that you can enter on the command line.
For example,
to run a file named
\shape italic
test.feb
\shape default
from the FEBio prompt,
type the following:
\end_layout
\begin_deeper
\begin_layout LyX-Code
run –i test.feb
\end_layout
\end_deeper
\begin_layout Enumerate
The following configuration file settings can be set from the febio command prompt.
\end_layout
\begin_deeper
\begin_layout Description
output_negative_jacobians turn on or off the detailed output when negative jacobians are encountered.
\end_layout
\begin_layout Description
print_model_params turn on or off the output of the parameter values of parameters that are load controlled.
\end_layout
\begin_layout Description
show_warnings_and_errors turn on or off the printing of warning and error messages.
\end_layout
\begin_layout Standard
To turn the option on (off),
follow the set command by the variable name and then a value of 1 (0).
For example,
\end_layout
\begin_layout LyX-Code
set output_negative_jacobians 1
\end_layout
\begin_layout Standard
If you enter the set command without any additional options,
a list will be printed of the current configuration settings.
\end_layout
\end_deeper
\begin_layout Enumerate
The
\emph on
list
\emph default
command prints a list of all available FEBio features.
Additional options can be specified to configure the output.
\end_layout
\begin_deeper
\begin_layout Description
-m Specify the module name.
(e.g.
list -m solid)
\end_layout
\begin_layout Description
-c Specify the category.
(e.g.
list -m FEMATERIAL_ID)
\end_layout
\begin_layout Description
-n Set the max nr of lines in the output (e.g.
list -n 100)
\end_layout
\begin_layout Description
-s Specify a general pattern that should match.
(e.g.
list -s neo)
\end_layout
\end_deeper
\begin_layout Section
The Configuration File
\begin_inset CommandInset label
LatexCommand label
name "sec:Configuration-file"
\end_inset
\end_layout
\begin_layout Standard
As of version 1.2,
FEBio uses a
\shape italic
configuration file
\shape default
to store platform-specific settings,
such as the default linear solver and the list of plugins that need to be loaded at startup.
The configuration file uses an xml format to store data and is detailed in Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Configuration-File"
nolink "false"
\end_inset
.
For backward compatibility,
it is still possible to run FEBio without the configuration file.
In that case,
the default settings prior to version 1.2 are used.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio –i myfile.feb -noconfig
\end_layout
\begin_layout Standard
The default configuration file needs to be stored in the same location as the executable and named
\shape italic
febio.xml
\shape default
.
Alternatively,
the location and the name of the file can also be specified on the command line using the –config option.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
> febio -i myfile.feb –config /home/my/folder/FEBio/febio.xml
\end_layout
\begin_layout Section
Using Multiple Processors
\begin_inset CommandInset label
LatexCommand label
name "sec:Using-Multiple-Processors"
\end_inset
\end_layout
\begin_layout Standard
As of version 2.0,
FEBio uses OpenMP to parallelize several of the finite element calculations,
improving the performance considerably.
Both the right-hand-side and the stiffness matrix evaluations for many types of problems have been parallelized.
On a system with four processors,
a speedup of 2-3 can be expected,
depending on the size and type of model.
Models with complex material behavior (such as EFD-type materials,
biphasic,
multiphasic materials,
etc.) will benefit most from these parallelization efforts.
In addition,
FEBio implements the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{http://software.intel.com/en-us/intel-mkl/}{
\backslash
emph{MKL}}
\end_layout
\end_inset
version of the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{http://www.pardiso-project.org/}{
\backslash
emph{PARDISO}}
\end_layout
\end_inset
linear solver,
which is a parallel linear solver that uses OpenMP.
\end_layout
\begin_layout Standard
To use multiple processors,
set the environment variable OMP_NUM_THREADS to the number of desired threads.
You should set the number of threads to be equal or less than the number of processors on your system (Setting it higher may actually decrease performance).
For example,
on a system with four processors you can set the environment as follows.
On Linux using the Bash shell,
execute:
\end_layout
\begin_layout LyX-Code
> export OMP_NUM_THREADS=4
\end_layout
\begin_layout Standard
Using the c-shell,
execute:
\end_layout
\begin_layout LyX-Code
> setenv OMP_NUM_THREADS 4
\end_layout
\begin_layout Standard
Or at a Windows command prompt:
\end_layout
\begin_layout LyX-Code
> set OMP_NUM_THREADS=4
\end_layout
\begin_layout Standard
On Windows,
you can add this environment variable as well from the System Properties dialog box.
\end_layout
\begin_layout Paragraph
\series bold
A note on repeatability
\end_layout
\begin_layout Standard
Ideally,
when the same model is run repeatedly,
either on the same machine or on different machines,
it should produce the same convergence statistics and results.
However,
in practice this is not always the case and sometimes the convergence stats and even the results can differ.
In most cases,
the discrepancies should be small,
however in some cases,
and especially in models that are prone to ill-conditioning (e.g.
contact),
the discrepancies may be more significant.
The underlying reason is that in different compute environments it can not be guaranteed that all calculations are executed in the exact same order and,
due to numerical round-off,
the results of these calculations will not always be the same.
On a single machine,
this can happen when the model is run using multiple processors.
(However,
running the same model on a machine with a single processor should always produce the exact same results.) This behavior can also be observed when running the same model on different machines,
especially if these machines have different OS.
\end_layout
\begin_layout Standard
Similarly,
although FEBio aims to be backward compatible,
running the same model with different versions of FEBio,
may also show discrepancies for similar reasons.
In this case,
the discrepancies are likely caused by algorithmic optimizations or changes in compiler settings.
\end_layout
\begin_layout Section
FEBio Output
\begin_inset CommandInset label
LatexCommand label
name "sec:FEBio-Output"
\end_inset
\end_layout
\begin_layout Subsection
Screen output
\end_layout
\begin_layout Standard
By default,
FEBio will print convergence and progress information to the screen that informs users how the analysis is progressing.
The output depends on the particular module and solver that was chosen in the FEBio input file,
as well as some user-defined settings,
but in general provides the following information.
\end_layout
\begin_layout Itemize
\series bold
Time stepping
\series default
\series bold
information
\series default
:
The current time step that FEBio is solving and a notification when the time step completed (or an error message why the time step failed to complete)
\end_layout
\begin_layout Itemize
\series bold
Convergence information
\series default
:
for each time step,
FEBio usually has to solve a nonlinear problem for which an iterative nonlinear solver is used.
Several
\begin_inset Quotes eld
\end_inset
norms
\begin_inset Quotes erd
\end_inset
are printed to inform the user how FEBio is progressing toward the solution of the nonlinear problem.
\end_layout
\begin_layout Itemize
\series bold
Summary:
\series default
At the end of the analysis a summary is printed with heuristics that inform the user how well the model ran.
\end_layout
\begin_layout Standard
By default,
all screen output will also be printed to the log file.
\end_layout
\begin_layout Standard
The summary printed at the end of a run also provides some useful timing information.
Below follows an explanation of the different reported timings.
\end_layout
\begin_layout Standard
\begin_inset Float table
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
timing
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
Input time
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The time it took to process the FEBio input file.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
Initialization time
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The time to initialize and check the model
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
Solve time
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The total time it took to solve the model.
This is the sum of the following timings:
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
IO-time
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The time to write the output files (i.e.
the plot,
dump,
and data files)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
reforming stiffness
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The time to reform the stiffness matrix (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
evaluating stiffness
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The time to evaluate the stiffness matrix (2)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
evaluating residual
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The time to evaluate the residual (3)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
model update
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The time to update the model (4)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
QN updates
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The time to evaluate the Quasi-Newton updates (5)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
time in linear solver
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The time spent in the linear solver (6)
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
\begin_inset Caption Standard
\begin_layout Plain Layout
Table listing descriptions of the different timings reported at the end of an FEBio job.
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Comments:
\end_layout
\begin_layout Enumerate
Internally,
FEBio uses a sparse-matrix storage format to store the global stiffness matrix efficiently.
A matrix reformation refers to the process of calculating the structure of this sparse matrix.
The structure depends mostly on the nodal connectivity and for many problems this only needs to be calculated once at the start of the run.
However,
for some problems the connectivity may change during an analysis and this may require a reformation of the global stiffness matrix.
(For instance,
changes in contacting facets.)
\end_layout
\begin_layout Enumerate
The global stiffness matrix needs to be evaluated often as it is needed by the Newton solver for finding the solution.
The total time to evaluate this stiffness matrix may often be a significant portion of the total runtime,
however,
there are several parameters that affect this.
For instance,
the max_ups parameter sets the number of quasi-Newton updates.
During these updates,
the full stiffness is not re-evaluated.
Instead,
a rank-one update is performed,
which often significantly reduces the time to evaluate the stiffness matrices.
\end_layout
\begin_layout Enumerate
The residual,
which is the difference between
\begin_inset Quotes eld
\end_inset
internal
\begin_inset Quotes erd
\end_inset
forces (i.e.
stresses) and external forces,
is evaluated during each quasi-Newton iteration.
Although the residual is calculated many times during an analysis,
its evaluation rarely takes up a significant time of the total run time.
\end_layout
\begin_layout Enumerate
During the model update,
all quantities that depend on the solution variables will be updated.
This includes nodal positions,
element stress,
etc.
This update is also called for each quasi-Newton iteration.
Although the update is usually fast,
the fact that it is required for every iteration may cause the total time spent in the model update to be significant.
\end_layout
\begin_layout Enumerate
The QN update refers to the process of calculating a rank-one update of the stiffness matrix.
This is usually a fast process and does not take up a significant amount of time.
\end_layout
\begin_layout Enumerate
The time in the linear solver usually takes up most of the total runtime.
Most of this time is spent calculating the factorization of the global stiffness matrix.
\end_layout
\begin_layout Subsection
Output files
\end_layout
\begin_layout Standard
After running FEBio,
two or three files are created:
the
\shape italic
log file
\shape default
,
the
\shape italic
plot file,
\shape default
and optionally the
\shape italic
dump file
\shape default
.
The log file is a text file that contains the same output (and usually more) that was written to the screen.
The
\shape italic
plot file
\shape default
contains the results of the analysis.
Since this is a binary file,
the results must be analyzed using post processing software such as
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/febio-studio/}{
\backslash
emph{FEBio Studio}}
\end_layout
\end_inset
.
In some cases,
the user may wish to request the creation of a
\shape italic
dump file
\shape default
.
This file contains temporary results of the run.
If an analysis terminates unexpectedly or with an error,
this file can be used to restart the analysis from the last converged time step.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Restarting-a-Run"
nolink "false"
\end_inset
and Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Restart-Input-file"
nolink "false"
\end_inset
for more details.
The names of these files can be specified with the command options –p (plot file),
-a (dump file),
-o (log file).
If one or more of the file names following these flags are omitted,
then the omitted file name(s) will be given a default name.
The default file names are derived from the input file name.
For example,
if the input file name is
\shape italic
input.feb
\shape default
the logfile will have the name
\shape italic
input.log
\shape default
,
the plot file is called
\shape italic
input.xplt
\shape default
and the dump file is called
\shape italic
input.dmp
\shape default
.
\end_layout
\begin_layout Standard
\emph on
Note 1.
\emph default
The name of the log and plot file can also be specified in the FEBio input file.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:LoadData-Section"
nolink "false"
\end_inset
for more information.
\end_layout
\begin_layout Standard
\emph on
Note 2.
\emph default
When running an optimization problem the name of the log file is derived from the optimization control file.
See Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Parameter-Optimization"
nolink "false"
\end_inset
for more information on running optimization problems with FEBio.
\end_layout
\begin_layout Standard
\emph on
Note 3
\emph default
.
FEBio may also generate additional
\emph on
data files
\emph default
.
Although the log file is used as the default output file for data requested in the
\emph on
logfile
\emph default
section of the input file,
users can specify the location of the output file.
In that case,
the data will be written to the output file instead of the logfile.
\end_layout
\begin_layout Section
Advanced Options
\begin_inset CommandInset label
LatexCommand label
name "sec:Advanced-Options"
\end_inset
\end_layout
\begin_layout Subsection
Interrupting a Run
\begin_inset CommandInset label
LatexCommand label
name "subsec:Interrupting-a-Run"
\end_inset
\end_layout
\begin_layout Standard
The user can pause the run by pressing ctrl+c.
This will bring up the FEBio prompt,
and the user can enter a command.
The FEBio prompt will also be shown when FEBio reaches a break point.
See Section
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:FEBio-prompt"
nolink "false"
\end_inset
for a list of available commands.
Note that it may take a while before the FEBio prompt is displayed after the user requests a ctrl+c interruption.
This may be because the program is in the middle of a call to the linear solver or another time-consuming part of the analysis procedure that cannot be interrupted.
NOTE:
This feature may not work properly on all systems,
although it should always work on Windows systems.
\end_layout
\begin_layout Subsection
Debugging a Run
\begin_inset CommandInset label
LatexCommand label
name "subsec:Debugging-a-Run"
\end_inset
\end_layout
\begin_layout Standard
As stated in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Command-Line"
nolink "false"
\end_inset
,
FEBio can be run in debug-mode by specifying one of the –g options on the command line.
When running in debug mode,
FEBio performs additional checks and prints out more information to the screen and to the plot file.
It will also store all non-converged states to the plot file.
These non-converged states can be very useful for determining the cause of non-convergence or slow convergence.
Because of this additional work,
the problem may run slightly slower.
Note that debug mode can be turned on/off while running an analysis by first interrupting the run with ctrl+c and then using the
\shape italic
debug
\shape default
command to toggle the debug mode on or off.
It is important to note that since FEBio will store all non-converged states to the plot file,
this file may become very large in a short number of time steps.
An alternative approach is to use the
\shape italic
plot
\shape default
command to write out select non-converged states.
\end_layout
\begin_layout Subsection
Setting break points
\begin_inset CommandInset label
LatexCommand label
name "subsec:Setting-break-points"
\end_inset
\end_layout
\begin_layout Standard
Although ctrl+c can be used to interrupt a run,
it might sometimes be difficult to interrupt a run at a desired point.
For this reason,
you can set break points that will pause the execution and bring up the FEBio prompt.
Breakpoints are set on the command line using the
\series bold
-break
\series default
option,
followed by the break condition.
In addition,
breakpoints can also be set via the FEBio prompt using the
\series bold
break
\series default
option.
\end_layout
\begin_layout Standard
To break at a particular time point,
simply add the value of the time after the
\emph on
-break
\emph default
option.
This example will pause the run after time 0.45 completed (or the first time point past 0.45):
\end_layout
\begin_layout LyX-Code
>febio -i input.feb -break 0.45
\end_layout
\begin_layout Standard
Instead of pausing at a particular time,
you can also interrupt the run when a certain event happens.
To break at an event,
specify the event name at which to pause the run.
The following list of events are defined.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Event
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
ALWAYS
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
break on any event
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
INIT
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
break after model initialization
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
STEP_ACTIVE
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
break after step activation
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
MAJOR_ITERS
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
break after major iteration (i.e.
time step) converged
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
MINOR_ITERS
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
break after minor iteration (i.e.
Newton iteration)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
SOLVED
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
break after the model is solved
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
UPDATE_TIME
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
break before time is incremented
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
AUGMENT
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
break before augmentation
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
STEP_SOLVED
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
break after step is solved
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
REFORM
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
break after global matrix and right hand side is reformed
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
MATRIX_SOLVE
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
break right before the linear system solve
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For example,
to pause the execution after a matrix reformation (and right-hand-side evaluation),
enter the following command line.
\end_layout
\begin_layout LyX-Code
>febio -i input.feb -break REFORM
\end_layout
\begin_layout Standard
Once the code reaches a breakpoint,
the febio prompt will be presented.
There are several commands that relate to breakpoints.
\end_layout
\begin_layout Description
break Add a breakpoint
\end_layout
\begin_layout Description
breaks Prints list of current breakpoints.
\end_layout
\begin_layout Description
clear Clear one or all breakpoints.
\end_layout
\begin_layout Subsection
Restarting a Run
\begin_inset CommandInset label
LatexCommand label
name "subsec:Restarting-a-Run"
\end_inset
\end_layout
\begin_layout Standard
When the creation of a restart dump file is requested,
the analysis can be restarted from the last converged timestep.
This is useful when the run terminated unexpectedly or when the user wishes to modify some parameters during the analysis.
To request the creation of a dump file,
simply add the
\emph on
-dump
\emph default
flag on the command line.
This will generate a
\shape italic
\emph on
dump
\emph default
\shape default
file which then can be used to restart the analysis.
You can specify an optional dump level,
which sets how often the dump file is created,
and an optional dump file name.
\end_layout
\begin_layout LyX-Code
> febio -i input.feb -dump
\end_layout
\begin_layout Standard
With the optional arguments,
the complete syntax would be:
\end_layout
\begin_layout LyX-Code
>febio -i input.feb -dump=1 out.dmp
\end_layout
\begin_layout Standard
The dump level can be set to the following values:
\end_layout
\begin_layout Enumerate
write dump file after each converged time step
\end_layout
\begin_layout Enumerate
write dump file after each completed analysis step
\end_layout
\begin_layout Enumerate
write dump file after each converged
\shape italic
must-point
\end_layout
\begin_layout Standard
To restart an analysis,
use the
\series bold
-r
\series default
command line option.
This option requires a filename as a parameter,
and this name can be either the name of a dump file or the name of a restart input file.
The latter case is a text file that allows the user to redefine some parameters when restarting the run.
The format of this file is described in Chapter
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Restart-Input-file"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Section
FEBio File Conventions
\end_layout
\begin_layout Standard
Although users are free to choose file names and file extensions,
it might be beneficial to adhere to the following file naming conventions.
\end_layout
\begin_layout Description
feb FEBio input file.
\end_layout
\begin_layout Description
xplt FEBio plot file.
\end_layout
\begin_layout Description
log FEBio log file.
\end_layout
\begin_layout Description
dmp FEBio dump file (for restarts).
\end_layout
\begin_layout Description
opt FEBio optimization control file.
\end_layout
\begin_layout Description
rst FEBio restart input file.
\end_layout
\begin_layout Section
FEBio Tasks
\end_layout
\begin_layout Standard
At its core,
FEBio always executes a
\emph on
task
\emph default
.
You can think of a task as the outer loop that instructs FEBio what to do.
The default task will run the FEBio input file provided on the command line and calculate the solution.
Other tasks perform a restart,
solve an optimization problem,
or run a diagnostic.
Users can also create custom tasks via plugins and direct FEBio what exactly it should do.
Many of these tasks perform tests on specific FEBio features and thus can be helpful for plugin developers to ensure that their plugin works correctly with these specific FEBio features.
\end_layout
\begin_layout Standard
The task to execute can be specified on the command line using the
\series bold
-task
\series default
command line option.
The name of the task is specified as follows.
\end_layout
\begin_layout LyX-Code
>febio4 -i input.feb
\series bold
-task=task_name [task_input_file]
\end_layout
\begin_layout Standard
The name of the task follows after an equal sign ('=') (Notice that there are no spaces before or after the equal sign).
Some tasks require an additional input file,
which can be specified directly following the -task command line option.
(There should be a space between the -task command line option and the optional task input file.)
\end_layout
\begin_layout Standard
In this section we'll document the tasks that are currently supported by FEBio.
The following table lists the available tasks.
\end_layout
\begin_layout Standard
\begin_inset Float table
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
task
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
diagnose
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Run a diagnostic.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
jfnk tangent test
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Runs a tangent test on the JFNK solver
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
optimize
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Runs an optimization problem.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
param_run
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Runs a parameter study
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
parameter_sweep
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Runs a parameter study
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
quick_restart_test
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Runs a restart test
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
rci_solve
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Runs a model using the RCI solver
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
reset_test
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Runs a test on the FEBio reset functionality
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
restart
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Runs a cold restart problem.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
restart_test
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Runs a test on the restart feature.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
solve
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Runs the forward model (default task)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
stiffness_test
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Allows users to export the stiffness matrix from FEBio.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
test
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Runs the model as a test suite problem.
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Table of available FEBio tasks.
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
Some more details about these tasks follow.
\end_layout
\begin_layout Itemize
\series bold
diagnose:
\series default
The
\emph on
diagnose
\emph default
task runs a diagnostic.
\end_layout
\begin_layout Itemize
\series bold
jfnk_tangent_test:
\series default
The
\emph on
\begin_inset Quotes eld
\end_inset
jfnk tangent test
\begin_inset Quotes erd
\end_inset
\emph default
runs a test on the tangent produced by the JFNK linear solver.
The JFNK linear solver is an iterative solver that aims to solve the nonlinear Newton problem without ever evaluating the stiffness matrix explicitly.
\end_layout
\begin_layout Itemize
\series bold
optimize:
\series default
Runs an optimization problem.
(See
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Parameter-Optimization"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
or more details on how to run optimization problems in FEBio.)
\end_layout
\begin_layout Itemize
\series bold
param_run:
\series default
The
\emph on
param_run
\emph default
task runs a parameter study on the input model.
In other words,
it runs the input file multiple times,
each time using a different value for certain parameters.
\end_layout
\begin_layout Itemize
\series bold
parameter_sweep
\series default
:
This tasks runs a parameter study on the input file.
\end_layout
\begin_layout Itemize
\series bold
quick_restart_test:
\series default
The
\emph on
quick_restart_test
\emph default
runs a test on the restart feature after model initialization.
This task initializes the model and then writes a dump file.
After that,
the model is cleared and the dump file is read to re-initialize the model.
Any issues that occur during re-initialization will be reported.
If no problems are encountered,
the task finishes.
(Note that the model is not solved.)
\end_layout
\begin_layout Itemize
\series bold
rci_solve:
\series default
The
\emph on
rci_solve
\emph default
task solves a model using the RCI solver.
The RCI (Reverse Communication Interface) solver is a feature that allows users more control over how FEBio solves the model.
This feature was added to give plugins that interface with third party solvers the ability to transfer some of the solution progress decisions (e.g.
when to advance the time step) to the third party library.
This tasks tests that interface and ensures that it produces the same result as the standard solver.
\end_layout
\begin_layout Itemize
\series bold
reset_test:
\series default
FEBio's reset feature restores the original state of the model.
This feature is used in several other tasks that need to solve the forward model repeatedly (e.g.
optimization,
parameter study).
This task can be used to test the reset feature and ensure that it indeed properly resets the model.
The test will run the forward model twice.
After the first run,
some stats are collected.
The model is then reset and run again.
The same stats are collected after the second run and compared with those from the first run.
If the model reset was successful,
the stats should be identical.
If not,
there is a problem with model reset.
This task also produces a separate log file for each run that can be compared.
\end_layout
\begin_layout Itemize
\series bold
restart:
\series default
Runs a cold restart of a previously run model.
See
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Restart-Input-file"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for more details on how to run restart problems.
\end_layout
\begin_layout Itemize
\series bold
restart_test:
\series default
This task tests the restart feature to ensure that it indeed correctly restarts a model.
After each converged time step,
the model's state is serialized (in memory) to a dump stream and then immediately read back from the dump stream.
If the restart feature is working properly,
the model should produce the exact same output to both log and plot file as the forward model (i.e.
the model run with that default task).
Users can compare outputs to see if there might be any problem with the restart feature.
\end_layout
\begin_layout Itemize
\series bold
solve:
\series default
This solves the forward model provided by the FEBio input file.
This is the default task when the -task command line option is not provided.
\end_layout
\begin_layout Itemize
\series bold
stiffness_test:
\series default
The
\emph on
stiffness_test
\emph default
task allows users to export the stiffness matrix and right-hand-side vector out of FEBio.
\end_layout
\begin_layout Itemize
\series bold
test:
\series default
This task is used by the FEBio test suite and adds the solution norm as a log variable that can be queried once the model completes.
(This is used in the test suite to see if the solution norm has changed compared to a golden standard.)
\end_layout
\begin_layout Chapter
Free Format Input
\begin_inset CommandInset label
LatexCommand label
name "chap:Free-Format-Input"
\end_inset
\end_layout
\begin_layout Standard
This chapter describes the XML-based input format used by FEBio.
Since this format follows standard XML conventions,
the files can be viewed with any file viewer that supports XML files.
Since the free format input file is a text file,
it can be edited with any text editor.
\end_layout
\begin_layout Standard
An XML file is composed of a hierarchical list of
\shape italic
elements
\shape default
.
The first element is called the
\shape italic
root element
\shape default
.
Elements can have multiple
\shape italic
child elements
\shape default
.
All elements are enclosed by two
\shape italic
tags:
\shape default
a tag defining the element and an
\shape italic
end tag
\shape default
.
A simple example of an XML file might look like this:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
...
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\shape italic
value
\shape default
of an element is enclosed between the name and the end tag.
\end_layout
\begin_layout LyX-Code
here is the value
\end_layout
\begin_layout Standard
Note that the XML format is case-sensitive.
\end_layout
\begin_layout Standard
XML elements can also have
\shape italic
attributes
\shape default
in name/value pairs.
The attribute value must always be quoted using quotation marks (") or apostrophes (')
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
Support for apostrophes was not added until FEBio version 2.1.
\end_layout
\end_inset
.
\end_layout
\begin_layout LyX-Code
...
\end_layout
\begin_layout LyX-Code
...
\end_layout
\begin_layout Standard
If an XML element has no value,
an abbreviated syntax can be used.
The following two lines are identical.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
or
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Comments can be added as follows.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The first line in the document – the XML declaration – defines the XML version and the character encoding used in the document.
An example can be:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Section
Free Format Overview
\begin_inset CommandInset label
LatexCommand label
name "sec:Free-Format-Overview"
\end_inset
\end_layout
\begin_layout Standard
The free format organizes the FEBio input data into hierarchical XML elements.
The root element is called
\shape italic
febio_spec
\shape default
.
This root element also defines the format version number (Note that FEBio and the input format specification follow different version numberings).
This document describes version 4.0 of the FEBio specification
\begin_inset Foot
status open
\begin_layout Plain Layout
FEBio continues to read some older formats,
but they are considered to be obsolete.
\end_layout
\end_inset
(see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Format-Specification-Versions"
nolink "false"
\end_inset
below for more details on the different input specification formats).
The root element will therefore be defined as follows:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The different sections introduced in this chapter are child elements of this root element.
The following sections are currently defined:
\end_layout
\begin_layout Description
\shape italic
\emph on
Module
\shape default
\emph default
defines the physics module for solving the model.
\end_layout
\begin_layout Description
\shape italic
\emph on
Globals
\shape default
\emph default
Defines the global variables in the model
\end_layout
\begin_layout Description
\shape italic
\emph on
Control
\shape default
\emph default
specifies control and solver parameters.
\end_layout
\begin_layout Description
\shape italic
\emph on
Material
\shape default
\emph default
Specifies the materials used in the problem and the material parameters.
\end_layout
\begin_layout Description
\shape italic
\emph on
Mesh
\shape default
\emph default
Defines the mesh of the problem,
including nodal coordinates and element connectivity.
\end_layout
\begin_layout Description
MeshDomains Assigns materials and other formulation attributes to element sets.
\end_layout
\begin_layout Description
\shape italic
\emph on
MeshData
\shape default
\emph default
Defines element,
facet,
edge or nodal data that can be mapped to material parameters or certain boundary conditions and loads.
\end_layout
\begin_layout Description
MeshAdaptor Defines mesh adaptors that modify the mesh.
\end_layout
\begin_layout Description
\shape italic
\emph on
Initial
\shape default
\emph default
Defines initial conditions for dynamic problems,
such as initial velocities,
and for transient quasi-static problems.
\end_layout
\begin_layout Description
\shape italic
\emph on
Boundary
\shape default
\emph default
Defines the boundary conditions that are applied on the geometry.
\end_layout
\begin_layout Description
\shape italic
\emph on
Loads
\shape default
\emph default
Defines the loads applied to the model.
This includes nodal loads,
boundary loads and volume loads (or sources for heat transfer problems).
\end_layout
\begin_layout Description
\shape italic
\emph on
Contact
\shape default
\emph default
This section defines all contact interfaces.
\end_layout
\begin_layout Description
\shape italic
\emph on
Constraints
\shape default
\emph default
This section defines rigid and nonlinear constraints.
\end_layout
\begin_layout Description
Rigid This sections defines rigid components,
such as rigid constraints,
rigid loads,
and rigid connectors.
\end_layout
\begin_layout Description
\shape italic
\emph on
Discrete
\shape default
\emph default
This section defines all the discrete elements (i.e.
springs).
\end_layout
\begin_layout Description
\shape italic
\emph on
LoadData
\shape default
\emph default
Defines the load controllers,
which can control model parameters as a function of time.
\end_layout
\begin_layout Description
\shape italic
\emph on
Step
\shape default
\emph default
Defines different analysis steps,
where in each analysis the boundary,
loads,
contact and initial conditions can be redefined.
\end_layout
\begin_layout Description
\shape italic
\emph on
Output
\shape default
\emph default
Defines additional data that needs to be stored to file.
\end_layout
\begin_layout Standard
Although there is some flexibility in the order in which these sections can be listed,
it is recommended to list them in the same order as given above.
Not all sections are required.
Empty sections can be omitted.
A minimal file must contain at least the Module,
Control,
Material,
Mesh,
and MeshDomains sections.
The rest of this chapter describes each of these sections in more detail.
\end_layout
\begin_layout Subsection
Format Specification Versions
\begin_inset CommandInset label
LatexCommand label
name "sec:Format-Specification-Versions"
\end_inset
\end_layout
\begin_layout Standard
This document describes version 4.0 of the FEBio input specification.
This format differs in several aspects from the previous versions of the input specification.
This section describes the major changes between the different versions.
\end_layout
\begin_layout Itemize
\series bold
Version 4.0
\series default
:
The latest and recommended version of the FEBio input specification described in this document.
The main motivation for this format was to improve consistency between the feb file structure and the way the FEBio model is constructed in FEBio Studio.
This format is very similar to version 3.0 and only differs in a few sections:
Some solver parameters have moved.
The Rigid section was restructured.
Node and element sets can be specified more concisely.
\end_layout
\begin_layout Itemize
\series bold
Version 3.0
\series default
:
The major focus of this revision was adding support for FEBio 3.0's features for modeling heterogeneous parameters.
Heterogeneous parameters can be created via mathematical expressions or via the MeshData section.
It also introduces a more consistent way for referencing model parameters.
The
\emph on
Geometry
\emph default
section was replaced with the
\emph on
Mesh
\emph default
and
\emph on
MeshDomains
\emph default
sections in order to further separate the definition of the mesh and its physical attributes (e.g.
material assignments).
This format is
\series bold
still supported
\series default
but considered obsolete.
\end_layout
\begin_layout Itemize
\series bold
Version 2.5
\series default
:
This format differs from its predecessor in some important aspects:
all nodesets,
surfaces,
etc.,
that are used by boundary conditions,
loads,
contact,
etc.,
must be defined in the Geometry section.
Boundary conditions,
loads,
contact,
etc.,
are now defined by referencing the sets in the Geometry section.
This format also adds the
\shape italic
MeshData
\shape default
section and re-formats the
\shape italic
Discrete
\shape default
section.
Rigid node sets and prescribed rigid degrees of freedom are moved to the
\shape italic
Boundary
\shape default
section.
This format is
\series bold
still supported
\series default
but considered obsolete.
\end_layout
\begin_layout Itemize
\series bold
Version 2.0
\series default
:
This is the first major revision of the input file format and redefines many of the file sections:
The
\shape italic
Elements
\shape default
section uses a different organization.
Elements are now grouped by material and element type.
Multiple
\shape italic
Elements
\shape default
sections can now be defined to create multiple parts.
Surfaces can now be defined in the
\shape italic
Geometry
\shape default
section and referenced by boundary conditions and contact definitions.
A new
\shape italic
Contact
\shape default
section contains all the contact definitions.
A new
\shape italic
Discrete
\shape default
section was defined that contains all the materials and definitions of the discrete elements (e.g.
springs).
The
\shape italic
Boundary
\shape default
section is also redesigned.
This format is
\series bold
still supported
\series default
but considered obsolete.
\end_layout
\begin_layout Itemize
\series bold
Version 1.3
\series default
:
This was an experimental version that redefined the
\shape italic
Geometry
\shape default
section,
but was later abandoned in favor of version 2.0.
This version is
\series bold
no longer supported
\series default
.
\end_layout
\begin_layout Itemize
\series bold
Version 1.2
\series default
:
A
\shape italic
Loads
\shape default
section was added and all surface and body loads are now defined in this section instead of the
\shape italic
Boundary
\shape default
section.
This version is
\series bold
mostly supported
\series default
but considered obsolete.
\end_layout
\begin_layout Itemize
\series bold
Version 1
\series default
.
\series bold
1
\series default
:
Rigid body constraints are no longer defined in the rigid material definition but instead placed in a new
\shape italic
Constraints
\shape default
section.
This version is
\series bold
no longer supported
\series default
.
\end_layout
\begin_layout Itemize
\series bold
Version 1.0
\series default
:
The original input format specification.
This version is
\series bold
no longer supported
\series default
.
\end_layout
\begin_layout Standard
As of FEBio 4.0,
only versions 1.2,
2.0,
2.5,
and 3.0 are supported.
Versions 1.2 and 2.0 are considered obsolete and it is highly recommended to convert older files to the newest specification for use with newer versions of FEBio.
This can be done for instance using FEBioStudio.
\end_layout
\begin_layout Subsection
\series bold
Notes on backward compatibility
\end_layout
\begin_layout Standard
Some features that were available in versions prior to 4.0 are no longer supported or require a different syntax.
\end_layout
\begin_layout Enumerate
The
\emph on
Parameters
\emph default
section is no longer supported.
This section allowed users to define file parameters that could be used as parameter values.
This section was removed since it was difficult to support in FEBio Studio and a better mechanism was implemented for defining model-level parameters.
(See the
\emph on
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:User-Variables"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
\emph default
section.)
\end_layout
\begin_layout Enumerate
Some fiber materials defined the
\emph on
theta
\emph default
and
\emph on
phi
\emph default
parameters for setting the fiber orientation.
These parameters are no longer supported.
Instead,
the fiber direction should be specified via the
\emph on
fiber
\emph default
property,
or if the
\emph on
fiber
\emph default
property is not available,
the
\emph on
mat_axis
\emph default
property.
\end_layout
\begin_deeper
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
90
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\end_deeper
\begin_layout Subsection
Multiple Input Files
\begin_inset CommandInset label
LatexCommand label
name "sec:Multiple-Input-Files"
\end_inset
\end_layout
\begin_layout Standard
FEBio supports distributing the model definition across multiple input files.
This can greatly facilitate defining large,
complex models and allows the re-use of model input files without the need to create the entire model input file from scratch.
When using multiple input files to define a model,
you must create a control input file that may reference other input files.
This control file will be used to run the model in FEBio.
There are two ways of including a file into the control file:
The
\emph on
Include
\emph default
section,
and the
\emph on
from
\emph default
attribute
\emph on
.
\end_layout
\begin_layout Standard
Note that all input files must start with the
\emph on
febio_spec
\emph default
tag and use the same format specification.
\end_layout
\begin_layout Subsubsection
Include Keyword
\begin_inset CommandInset label
LatexCommand label
name "subsec:Include-Keyword"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
Include
\shape default
keyword
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
Supported from FEBio version 2.3 and up.
\end_layout
\end_inset
can be used to include the contents of another FEBio input file.
The filename is entered as the value of the tag.
\end_layout
\begin_layout LyX-Code
example.feb
\end_layout
\begin_layout Standard
The included file must be a valid FEBio file in that it must begin with the
\shape italic
febio_spec
\shape default
tag and contain sections defined in this document.
However,
the included file does not need to define a complete model definition.
For instance,
it can contain only the
\shape italic
Mesh
\shape default
section.
\end_layout
\begin_layout Standard
Note that the contents of the entire file will be included.
This is different from the
\shape italic
from
\shape default
attribute discussed below,
which can be used to include only certain sections from files.
\end_layout
\begin_layout Subsubsection
The 'from' Attribute
\begin_inset CommandInset label
LatexCommand label
name "subsec:The-'from'-Attribute"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
from
\shape default
attribute can be used to include sections from other files.
All the main sections defined in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Free-Format-Overview"
nolink "false"
\end_inset
support the
\shape italic
from
\shape default
attribute which can be used to load the section from another input file.
For example,
to load the
\shape italic
Material
\shape default
section from the file mat.feb,
defining the
\shape italic
Material
\shape default
section in the control input file as follows.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
FEBio will now read the
\shape italic
Material
\shape default
section from this child file.
The child file must be a valid FEBio input file,
meaning it must begin with the
\shape italic
febio_spec
\shape default
root section,
but does not have to be complete.
For example,
the file mat.feb only needs to define the Material section.
However,
the child file may contain other sections.
In that case,
only the section referenced in the control file will be read from the child file.
For example,
if the file
\shape italic
in.feb
\shape default
contains both the
\shape italic
Material
\shape default
and the
\shape italic
Mesh
\shape default
section,
the control file can read both these sections as follows.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
To give a more concrete example,
assume that the
\shape italic
Material
\shape default
,
\shape italic
Mesh
\shape default
,
and
\shape italic
Boundary
\shape default
sections are defined in the files
\shape italic
mat.feb
\shape default
,
\shape italic
geom.feb
\shape default
,
and
\shape italic
bc.feb
\shape default
respectively.
The control input file could then look like the following.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Notice that the
\shape italic
Control
\shape default
section is still defined in the control file.
The control file can contain a combination of explicit section definitions and referenced sections using the
\shape italic
from
\shape default
attribute.
As mentioned above,
the control file is used to run the model in FEBio.
So,
if the control file is called
\shape italic
model.feb
\shape default
then the model is run as follows.
\end_layout
\begin_layout LyX-Code
>febio –i model.feb
\end_layout
\begin_layout Standard
When FEBio parses the control file it will automatically parse the referenced child files it encounters in the control input file.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Module Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Module-Section"
\end_inset
\end_layout
\begin_layout Standard
The module section defines the type of analysis to perform with FEBio.
This section must be defined as the first section in the input file.
It takes on the following format:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
where
\shape italic
type
\shape default
can be any of the following values:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
solid
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Structural mechanics analysis:
quasi-static or dynamic,
implicit and explicit solver available
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
biphasic
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Biphasic analysis:
steady-state or transient
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
solute
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Biphasic analysis including solute transport:
steady-state or transient
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
multiphasic
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Multiphasic analysis including solute transport and chemical reactions
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
fluid
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fluid mechanics analysis:
steady-state or dynamic
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
fluid-FSI
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fluid mechanics with fluid-structure interactions:
steady-state or dynamic
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
fluid-solutes
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A fluid mechanics analysis with support for solute transport.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
multiphasic-FSI
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The FSI module with support for multiphasic materials.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The module tag can also be used to specify the units of the model.
Although FEBio doesn't care about units,
if the user specifies the unit system,
the proper units of variables are stored in the plot file and visible in FEBio Studio when opening the plot file.
\end_layout
\begin_layout Standard
To specify units,
use the following syntax:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
[unit system]
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
where
\emph on
unit system
\emph default
can be any of the following values.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
units
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
SI
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Units follow the standard definition of the international SI unit system.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
mm-N-s
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Millimeter-Newton-seconds unit system
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
mm-kg-s
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Millimeter-kilogram-seconds unit system
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
um-nN-s
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Micron-nanoNewton-seconds unit system
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
CGS
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Centimeter-gram-seconds unit system
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
If the units are not defined,
FEBio will not output any units for plot variables.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\series bold
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The following example defines the model's units explicitly.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\series bold
\end_layout
\begin_layout LyX-Code
\series bold
SI
\end_layout
\begin_layout LyX-Code
\series bold
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\emph on
Notes
\emph default
:
\end_layout
\begin_layout Enumerate
In version 1.2 the Module section was optional.
If omitted it was assumed that the
\shape italic
solid
\shape default
module was used.
Since version 2.0 the Module section is required and must be the first section in the file.
\end_layout
\begin_layout Enumerate
Older versions of FEBio (format specification 1.2 and before) allowed you to run a poroelastic (now called biphasic) problem by simply defining a poroelastic material.
This is no longer possible.
You need to define the proper Module section to run a biphasic analysis.
If you have a file that no longer works as of version 1.4 of FEBio,
you'll need to insert the following Module section in the file as the first section of the file.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Control Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Control-Section"
\end_inset
\end_layout
\begin_layout Standard
The control section is defined by the
\shape italic
Control
\shape default
element.
This section defines all parameters that are used to control the evolution of the solution as well as parameters for the nonlinear solution procedure.
These parameters are defined as child elements of the
\shape italic
Control
\shape default
element and depend somewhat on the analysis as defined by the
\shape italic
Module
\shape default
section.
The control section defines the control parameters,
the solver parameters,
and optionally,
the time_stepper parameters.
\end_layout
\begin_layout Standard
Note that for multistep analyses (see chapter
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Multi-step-Analysis"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
) the Control section is specified for each step separately and defined as a child element of each
\emph on
step
\emph default
section.
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
STATIC
\end_layout
\begin_layout LyX-Code
50
\end_layout
\begin_layout LyX-Code
0.02
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
25
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
0.01
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0.9
\end_layout
\begin_layout LyX-Code
1e-20
\end_layout
\begin_layout LyX-Code
-2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.0002
\end_layout
\begin_layout LyX-Code
0.02
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
6
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Control Parameters
\begin_inset CommandInset label
LatexCommand label
name "subsec:Control-Parameters"
\end_inset
\end_layout
\begin_layout Standard
The following parameters are common for all analysis types.
If not specified they are assigned default values,
which are found in the last column.
An asterisk (*) after the name indicates a required parameter.
The numbers behind the description refer to the comments following the table.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
analysis
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Sets the analysis type (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
static
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
time_steps*
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Total number of time steps.
(=
\shape italic
ntime
\shape default
)(2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
(none)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
step_size*
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The initial time step size.
(=
\shape italic
dt
\shape default
) (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
(none)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
plot_level
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Sets the level of state dumps to the plot file (3)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
PLOT_MAJOR_ITRS
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
plot_range
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Set the range of the states that will be stored to the plot file (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0,-1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
plot_stride
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Set the stride of the states that will be stored to the plot file (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
plot_zero_state
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Flag that controls whether the
\begin_inset Quotes eld
\end_inset
zero
\begin_inset Quotes erd
\end_inset
state will be written to the plot file,
even if it is not defined in the range (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (false)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
output_level
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Controls when to output data to file (5)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
OUTPUT_MAJOR_ITRS
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
output_stride
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Set the output stride for writing out
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
adaptor_resolve
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
re-solve time step after mesh adaptations
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1 (yes)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Comments
\shape default
:
\end_layout
\begin_layout Enumerate
The
\shape italic
analysis
\shape default
element sets the analysis type.
The text value of this element is determined by the module,
but the numeric value should be 0 for (quasi-)static or steady-state analysis and 1 for dynamic or transient analysis.
In a quasi-static analysis,
inertial effects are ignored and an equilibrium solution is sought.
Note that in this analysis mode it is still possible to simulate time-dependent effects such as viscoelasticity.
In a dynamic analysis the inertial effects are included.
\end_layout
\begin_deeper
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
static
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
(quasi-) static analysis
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
steady-state
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
steady-state response of a transient (quasi-static) biphasic,
biphasic-solute,
multiphasic,
fluid or fluid-FSI analysis
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
dynamic
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
dynamic analysis for solid,
fluid and fluid-FSI analyses
\end_layout
\end_inset
|
\end_inset
\end_layout
\end_deeper
\begin_layout Enumerate
The total simulation time of the analysis is determined by
\shape italic
ntime
\shape default
*
\shape italic
dt
\shape default
.
Note that when the auto-time stepper is enabled (see below),
the actual number of time steps and time step size may be different than specified in the input file.
However,
the total simulation time will always be determined by
\shape italic
ntime
\shape default
*
\shape italic
dt.
\end_layout
\begin_layout Enumerate
The
\shape italic
plot_level
\shape default
allows the user to control exactly when the solution is to be saved to the plot file.
The following values are allowed:
\end_layout
\begin_deeper
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
PLOT_NEVER
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Don't save the solution to the plot file
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
PLOT_MAJOR_ITRS
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Save the solution after each converged timestep
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
PLOT_MINOR_ITRS
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Save the solution for every quasi-Newton iteration
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
PLOT_MUST_POINTS
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Only save the solution at the must points
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
PLOT_FINAL
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Only store the final converged state.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
PLOT_STEP_FINAL
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Store only the final converged state of each analysis step.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
PLOT_AUGMENTATIONS
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Store states at the start of each augmentation.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The PLOT_MUST_POINTS option must be used in conjunction of a
\shape italic
must-point
\shape default
curve.
See the comments on the
\shape italic
dtmax
\shape default
parameter for more information on must-point curves.
When the
\shape italic
plot_level
\shape default
option is set to PLOT_MUST_POINTS,
only the time-points defined in the must-point curve are stored to the plotfile.
\end_layout
\end_deeper
\begin_layout Enumerate
When using the fixed time stepper,
several parameters control which time steps are stored to the plot file.
\end_layout
\begin_deeper
\begin_layout Standard
The
\shape italic
plot_range
\shape default
parameter sets the range of the states that will be stored to the plot file.
The range is defined by two values that specify the first and last time step that will be stored to the plot file.
The value
\begin_inset Quotes eld
\end_inset
0
\begin_inset Quotes erd
\end_inset
refers to the initial time step,
usually time zero,
and negative values count backwards from the final time step (as defined by the
\shape italic
time_steps
\shape default
parameter).
For instance,
the default values,
\end_layout
\begin_layout LyX-Code
0,-1
\end_layout
\begin_layout Standard
store all time steps to the plot file,
including the initial
\begin_inset Quotes eld
\end_inset
zero
\begin_inset Quotes erd
\end_inset
time step.
As another example,
to store only the last five time steps,
set
\end_layout
\begin_layout LyX-Code
-5,-1
\end_layout
\begin_layout Standard
By default,
all time steps within the range will be stored to the plot file.
Time steps can be skipped using the
\shape italic
plot_stride
\shape default
parameter.
For instance,
to store only every 10 steps,
set
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout Standard
Note that the first and last time step defined by the range will always be stored,
regardless of the plot stride.
\end_layout
\begin_layout Standard
The
\begin_inset Quotes eld
\end_inset
zero
\begin_inset Quotes erd
\end_inset
time step refers to the initial state of the model,
before any calculations are done.
This state will only be stored to the plot file if the minimal value of the plot range is set to zero.
To force storing this state to the plot file,
set the
\shape italic
plot_zero_state
\shape default
parameter to one.
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout Standard
This will store the zero time step to the plot file,
even when it is not specified inside the plot range.
\end_layout
\begin_layout Standard
Again,
the
\shape italic
plot_range
\shape default
,
\shape italic
plot_stride
\shape default
,
and
\shape italic
plot_zero_state
\shape default
parameters are only used by the fixed time stepper.
Currently,
these parameters are not used with the auto time stepper.
\end_layout
\end_deeper
\begin_layout Enumerate
The
\shape italic
output_level
\shape default
can be used to control when FEBio outputs the data files.
The following values are supported.
\end_layout
\begin_deeper
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
OUTPUT_NEVER
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Don't generate any output
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
OUTPUT_MUST_POINTS
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Only output at must points
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
OUTPUT_MAJOR_ITRS
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Output at end of each time step
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
OUTPUT_MINOR_ITRS
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Output at each iteration
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
OUTPUT_FINAL
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Only output the data at the last converged time step.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\end_deeper
\begin_layout Subsection
Time Stepper parameters
\end_layout
\begin_layout Standard
The optional
\emph on
time_stepper
\emph default
element sets the parameters that control the FEBio auto-time stepper.
This auto-time stepper will adjust the time step size depending on the convergence stats of the previous time step.
It defines the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
dtmin
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Minimum time step size (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
dtmax
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Maximum time step size (3)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
opt_iter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Optimal,
or desired,
number of iterations per time step (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
10
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
max_retries
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Maximum number of times a time step is restarted.
(2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
5
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
aggressiveness
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Algorithm for cutting the time step size after a failed time step (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
cutback
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Time step scale factor,
used when aggressiveness = 1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.5
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments
\emph default
:
\end_layout
\begin_layout Enumerate
The
\shape italic
dtmin
\shape default
and
\shape italic
dtmax
\shape default
values are used to constrain the range of possible time step values.
The
\shape italic
opt_iter
\shape default
defines the estimated optimal number of quasi-Newton iterations.
If the actual number of iterations is less than or equal to this value the time step size is increased,
otherwise it is decreased,
as detailed further below.
\end_layout
\begin_layout Enumerate
When a time step fails (e.g.
due to a negative Jacobian),
FEBio will retry the time step with a smaller time step size.
The
\shape italic
max_retries
\shape default
parameter determines the maximum number of times a timestep may be retried before FEBio error terminates.
The new time step size is determined by the ratio of the time step size before restarts started and
\shape italic
max_retries+1
\shape default
.
For example,
if the time step size is 0.1 and
\shape italic
max_retries
\shape default
is set to 4,
then the time step size is adjusted by 0.02:
The first retry will have a step size of 0.08;
the next will be 0.06,
and so on.
Specifically,
the new time step size is determined as follows.
(This is only for the case when the
\emph on
aggressiveness
\emph default
parameter is set to zero.)
\begin_inset Newline newline
\end_inset
\begin_inset Formula
\[
\Delta t^{k+1}=\Delta t^{k}-\Delta t^{0}/\left(m_{\mathrm{max}}+1\right)
\]
\end_inset
Here,
\begin_inset Formula $\Delta t^{k}$
\end_inset
is the current time step size,
\begin_inset Formula $\Delta t^{k+1}$
\end_inset
is the new time step size,
\begin_inset Formula $\Delta t^{0}$
\end_inset
is the time step size before retries started,
and
\begin_inset Formula $m_{\mathrm{max}}$
\end_inset
is the max number of retries (i.e.
\emph on
max_
\emph default
retries).
\begin_inset Newline newline
\end_inset
When the time step succeeds,
the time step size will be adjusted by comparing the
\emph on
opt_iter
\emph default
parameter to the actual number of iterations it took to converge.
If the actual number of iterations is larger than
\emph on
opt_iter
\emph default
,
the time step size will be decreased.
\begin_inset Newline newline
\end_inset
\begin_inset Formula
\[
\Delta t^{k+1}=\Delta t^{k}-\left(\Delta t^{k}-\Delta t_{\mathrm{min}}\right)\left(1-r\right)
\]
\end_inset
Here,
\begin_inset Formula $\Delta t^{k}$
\end_inset
is the current time step size,
\begin_inset Formula $\Delta t^{k+1}$
\end_inset
is the new time step size,
\begin_inset Formula $\Delta t_{\mathrm{min}}$
\end_inset
is the minimum time step size and
\begin_inset Formula $r=\sqrt{n_{\mathrm{opt}}/n}$
\end_inset
,
where
\begin_inset Formula $n$
\end_inset
is the number of iterations and
\begin_inset Formula $n_{\mathrm{opt}}$
\end_inset
is the optimal number of iterations as specified by the user (i.e.
\emph on
opt_iter
\emph default
).
\begin_inset Newline newline
\end_inset
On the other hand,
if the actual number of iterations is less than
\emph on
opt_iter
\emph default
,
then the time step size will be increased.
The exact equation follows.
\begin_inset Newline newline
\end_inset
\begin_inset Formula
\[
\Delta t^{k+1}=\Delta t^{k}+\left(\Delta t_{\mathrm{max}}-\Delta t^{k}\right)\mathrm{min}\left(0.2,r-1\right)
\]
\end_inset
In addition,
the new time step size is enforced to be less than 5 times the old time step size,
to prevent the time step size from growing too fast.
\begin_inset Newline newline
\end_inset
After calculating the new time step size,
it will be ensured that the new timestep size falls within the range defined by
\emph on
dtmin
\emph default
and
\emph on
dtmax
\emph default
and that must-points are respected.
\end_layout
\begin_layout Enumerate
The user can specify a load curve for the
\shape italic
dtmax
\shape default
parameter.
This load curve is referred to as the
\shape italic
must-point
\shape default
curve and serves two purposes.
Firstly,
it defines the value of the
\shape italic
dtmax
\shape default
parameter as a function of time.
This can be useful,
for instance,
to enforce smaller time steps during rapid loading or larger time steps when approaching steady-state in a transient analysis.
Secondly,
the time points of the
\shape italic
dtmax
\shape default
loadcurve define so-called
\shape italic
must-points
\shape default
.
A must-point is a time point where FEBio must pass through.
This is useful for synchronizing the auto-time stepper with the loading scenario.
For instance,
when loading starts at time 0.5,
adding a must-point at this time will guarantee that the timestepper evaluates the model at that time.
In conjunction with the PLOT_MUST_POINT value of the
\shape italic
plot_level
\shape default
parameter,
this option can also be used to only write results to the plotfile at the specified time points.
Consider the following example.
\end_layout
\begin_deeper
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
...
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
STEP
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0
\end_layout
\begin_layout LyX-Code
0.5,
0.1
\end_layout
\begin_layout LyX-Code
1.0,
0.2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
This example defines load curve 1 as the
\shape italic
must-point
\shape default
curve.
This curve defines three points where FEBio will pass through (namely 0,
0.5 and 1.0).
The values of each time point is the value of the maximum time-step size (
\shape italic
dtmax
\shape default
).
Since the curve is defined as a step-function,
each value is valid up to the corresponding time-point.
Thus,
between time 0 and time 0.5,
the maximum time step value is 0.1.
Between 0.5 and 1.0 the maximum time step value is 0.2.
If the
\shape italic
plot_level
\shape default
parameter is set to PLOT_MUST_POINTS,
then only the three defined time points will be stored to the plotfile.
\end_layout
\begin_layout Standard
Note that when specifying a loadcurve for the dtmax parameter,
the value of this parameter will be ignored.
\end_layout
\end_deeper
\begin_layout Enumerate
When FEBio fails to converge a time step,
the time step size is reduced and then FEBio tries to solve the time step again.
The algorithm for determining the reduced time step size,
depends on the
\emph on
aggressiveness
\emph default
parameter.
\end_layout
\begin_deeper
\begin_layout Enumerate
\emph on
aggressiveness = 0
\emph default
(default):
\begin_inset Formula $\Delta t^{k+1}=\Delta t^{k}-\Delta t^{0}/\left(m_{\mathrm{max}}+1\right)$
\end_inset
,
(see comment 2 for more details).
\end_layout
\begin_layout Enumerate
\emph on
aggressiveness = 1:
\emph default
\begin_inset Formula $\Delta t^{k+1}=\gamma\Delta t^{k}$
\end_inset
,
where
\begin_inset Formula $\gamma$
\end_inset
is the cutback factor (i.e.
the
\emph on
cutback
\emph default
parameter).
\end_layout
\end_deeper
\begin_layout Subsection
Common Solver Parameters
\end_layout
\begin_layout Standard
Many of the solvers define the same parameters.
They are listed in the table below.
Additional parameters that are only defined for a specific type of analysis are listed in the following sections.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
etol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Convergence tolerance on energy (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.01
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
rtol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Convergence tolerance on residual (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (disabled)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
lstol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Convergence tolerance on line search (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.9
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
lsmin
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
minimum line search step
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.01
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
lsiter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Maximum number of line search iterations
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
5
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
ls_check_jacobians
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Check for negative Jacobians during linesearch
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (disabled)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
max_refs
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Max number of stiffness reformations (3)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
15
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
qn_method
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Quasi-Newton update method (3)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
BFGS
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
max_ups
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Max number of BFGS/Broyden stiffness updates (3)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
10
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
diverge_reform
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Flag for reforming stiffness matrix when the solution diverges (3)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
min_residual
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Sets minimal value for residual norm (5)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1e-20
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
max_residual
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Sets the max value for residual norm
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (disabled)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
symmetric_stiffness
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Use symmetric stiffness matrix flag (6)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
equation_scheme
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Set the equation allocation scheme
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
equation_order
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Set the equation allocation ordering
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
optimize_bw
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Optimize bandwidth of stiffness matrix (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
linear_solver
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Set the preferred linear solver to use.
(7)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
(default)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
check_zero_diagonal
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Check for zero diagonals in the stiffness matrix
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (disabled)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
zero_diagonal_tol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Tolerance value for checking zero diagonals
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
force_partition
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
For a partition in the stiffness matrix
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (disabled)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
reform_each_time_step
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Reform the stiffness matrix at the start of each time step
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1 (enabled)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
reform_augment
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Reform stiffness matrix after each augmentation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (disabled)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments
\emph default
:
\end_layout
\begin_layout Enumerate
FEBio determines convergence of a time step based on three convergence criteria:
displacement,
residual and energy (that is,
residual multiplied by displacement).
Each of these criteria requires a tolerance value that will determine convergence when the relative change will drop below this value.
For example,
a displacement tolerance of
\begin_inset Formula $\varepsilon$
\end_inset
means that the ratio of the displacement increment (i.e.
the solution of the linearized FE equations,
\begin_inset Formula $\Delta\mathbf{U}=-\mathbf{K}_{k}^{-1}\mathbf{R}_{k}$
\end_inset
) norm at the current iteration
\begin_inset Formula $k+$
\end_inset
\shape italic
1
\shape default
to the norm of the total displacement (
\begin_inset Formula $\mathbf{U}_{k+1}=\mathbf{U}_{k}+\Delta\mathbf{U}$
\end_inset
) must be less than
\begin_inset Formula $\varepsilon$
\end_inset
:
\begin_inset Formula
\[
\frac{\left\Vert \Delta\mathbf{U}\right\Vert }{\left\Vert \mathbf{U}_{k+1}\right\Vert }<\varepsilon
\]
\end_inset
For the residual and energy norms,
it is the ratio of the current residual norm (resp.
energy norm) to the initial one that needs to be less than the specified convergence tolerance.
\end_layout
\begin_deeper
\begin_layout Standard
To disable a specific convergence criterion,
set the corresponding tolerance to zero.
For example,
by default,
the residual tolerance is zero,
so that this convergence criterion is not used.
\end_layout
\end_deeper
\begin_layout Enumerate
The
\shape italic
lstol
\shape default
parameter controls the scaling of the vector direction obtained from the line search.
A line search method is used to improve the convergence of the nonlinear (quasi-) Newton solution algorithm.
After each quasi-Newton iteration,
this algorithm searches in the direction of the displacement increment for a solution that has less energy (that is,
residual multiplied with the displacement increment) than the previous iteration.
In many problems this will automatically be the case.
However,
in some problems that are very nonlinear (e.g.
contact),
the line search can improve convergence significantly.
The line search can be disabled by setting the
\shape italic
lstol
\shape default
parameter to zero,
although this is not recommended.
\end_layout
\begin_layout Enumerate
The
\emph on
qn_method
\emph default
property determines the quasi-Newton update method.
The particular method is set via the
\emph on
type
\emph default
attribute.
Additional parameters are then specified as child elements of this tag.
\shape italic
\emph on
\shape default
\emph default
See section
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Quasi-Newton-Solver-Parameters"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for more details.
\end_layout
\begin_layout Enumerate
The
\shape italic
optimize_bw
\shape default
parameter enables bandwidth minimization for the global stiffness matrix.
This can drastically decrease the memory requirements and running times when using the skyline solver.
It is highly recommended when using the skyline solver.
\end_layout
\begin_deeper
\begin_layout LyX-Code
1
\end_layout
\begin_layout Standard
When using a different linear solver (e.g.,
pardiso or SuperLU),
the bandwidth optimization can still be performed if so desired.
However,
for these solvers there will be little or no effect since these solvers are not as sensitive to the bandwidth as the skyline solver.
\end_layout
\end_deeper
\begin_layout Enumerate
If no force is acting on the model,
then convergence might be problematic due to numerical noise in the calculations.
For example,
this can happen in a displacement driven contact problem where one of the contacting bodies is moved before initial contact is made.
When this happens,
the residual norm will be very small.
When it drops below the tolerance set by
\shape italic
min_residual
\shape default
,
FEBio will assume that there is no force acting on the system and will converge the time step.
\end_layout
\begin_layout Enumerate
The
\emph on
symmetric_stiffness
\emph default
flag is used to set the symmetry of the global stiffness matrix.
Only specify this flag if you want to override the default symmetry,
which depends somewhat on the analysis type.
Forcing a symmetric matrix when the problem is non-symmetric may have negative impact on convergence.
The values for this parameter are:
\begin_inset Newline newline
\end_inset
- 0 = unsymmetic
\begin_inset Newline newline
\end_inset
- 1 = symmetric
\begin_inset Newline newline
\end_inset
- 2 = structurally symmetric
\begin_inset Newline newline
\end_inset
- 3 = preferred
\begin_inset Newline newline
\end_inset
If the option is set to 3 (preferred),
then one of the other formats will be chosen depending on the model components in the model.
For instance,
if a non-symmetric contact formulation is used,
then a non-symmetric stiffness matrix will be used.
\end_layout
\begin_layout Enumerate
The default linear solver used by FEBio is usually configured in the FEBio configuration file.
However,
it can also be specified directly in the FEBio input file as part of the solver parameters using the
\emph on
linear_solver
\emph default
tag.
See
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Configuring-Linear-Solvers"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for more details on configuring linear solvers.
\end_layout
\begin_deeper
\begin_layout LyX-Code
\end_layout
\end_deeper
\begin_layout Subsection
Quasi-Newton Solver Parameters
\begin_inset CommandInset label
LatexCommand label
name "subsec:Quasi-Newton-Solver-Parameters"
\end_inset
\end_layout
\begin_layout Standard
Most solvers in FEBio use the quasi-Newton method for solving the nonlinear FE equations.
Several different QN algorithms are implemented as described below.
The specific QN method is selected using the
\emph on
qn_method
\emph default
property of the
\emph on
solver
\emph default
.
The following QN methods are supported.
\end_layout
\begin_layout Description
BFGS The Broyden-Fletcher-G-S method.
(default if qn_method is not specified).
This method assumes the global stiffness matrix is symmetric.
It can still be used with non–symmetric matrices,
but the convergence might be compromised.
\end_layout
\begin_layout Description
Broyden The Broyden method is similar to BFGS,
but works with both symmetric and non-symmetric matrices.
Therefore,
it is the recommended method for problems that generate a non-symmetric stiffness matrix,
such as (some) contact formulations,
biphasic,
multi-phasic,
fluid,
fluid FSI.
\end_layout
\begin_layout Description
JFNK This is an implementation of the Jacobian-Free-Newton-Krylov method.
When using this option,
you must also use an iterative linear solver such as FGMRES.
\end_layout
\begin_layout Standard
Both the BFGS and Broyden methods calculate the global stiffness matrix at the beginning of each time step.
For each iteration,
a matrix update is then done.
The maximum number of such updates is set with
\shape italic
max_ups
\shape default
.
When FEBio reaches this number,
or if the solution diverges and
\emph on
diverge_reform
\emph default
is set to 1,
it reforms the global stiffness matrix (that is,
it recalculates it) and factorizes it,
essentially taking a "full Newton" iteration.
Then FEBio continues with BFGS/Broyden iterations.
The
\shape italic
max_refs
\shape default
parameter is used to set the maximum of such reformations FEBio can do,
before it fails the timestep.
In that case,
FEBio will either terminate or,
if the auto-time stepper is enabled,
retry with a smaller time step size.
\end_layout
\begin_layout Standard
The BFGS and Broyden take the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
max_ups
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\shape italic
\emph on
This is the maximum number of updates between stiffness matrix reformations.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
10
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
cmax
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Sets the max condition number.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1e5
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
max_buffer_size
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Sets the max buffer size.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (ignored)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
cycle_buffer
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Recycle buffers when max_ups is larger than max_buffer_size
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
Note that when max_ups is set to 0,
FEBio effectively will use a Full-Newton method since the stiffness matrix is reformed each iteration.
In this case it is recommended to increase the number of
\shape italic
max_refs
\shape default
(to e.g.
50) in the solver settings,
since the default value might cause FEBio to terminate prematurely when convergence is slow.
\end_layout
\begin_layout Subsection
Solver Parameters for a Structural Mechanics Analysis
\begin_inset CommandInset label
LatexCommand label
name "subsec:Parameters-Solid-Analysis"
\end_inset
\end_layout
\begin_layout Standard
A structural mechanics analysis is defined by using the
\shape italic
solid
\shape default
type in Module section.
The solver parameters are given in the table below:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
dtol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
convergence tolerance on displacement
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.001
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
rhoi
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Spectral radius parameter
\begin_inset Formula $\rho_{\infty}$
\end_inset
(1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-2
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
alpha
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
generalized alpha method parameter alpha
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
beta
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
generalized alpha method beta
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.25
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
gamma
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
generalized alpha method gamma
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.5
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
logSolve
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Use an acceleration for Newton iterations
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
arc_length
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specifies arc-length method (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
arc_length_scale
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Set the arc-length scale factor
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
There are two time-integrators implemented in FEBio:
the classical Newmark integration and the generalized alpha method.
Setting rhoi to -2,
will use the former,
where as setting rhoi to the range [0,1] will use the latter.
In the latter case,
the values for gamma,
beta,
and gamma are determined from the spectral radius parameter,
rhoi.
\end_layout
\begin_layout Enumerate
When using the arc-length method,
there are some important restrictions.
Only zero-prescribed boundary conditions are allowed.
The loads must be specified via nodal loads and cannot be time-dependent.
The time_steps and step_size control parameters are interpreted as arc-length steps and step_size respectively.
\end_layout
\begin_layout Standard
When using the
\begin_inset Quotes eld
\end_inset
CG-solid
\begin_inset Quotes erd
\end_inset
solver,
the following parameters are defined.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
cgmethod
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Select solution algorithm (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
preconditioner
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Select the preconditioner (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
lsiter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
maximum number of line search iterations
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
10
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
The solution algorithm can be:
\end_layout
\begin_deeper
\begin_layout Enumerate
0 :
Hager-Zhang conjugate gradient (This is the default and should be preferred since its faster.)
\end_layout
\begin_layout Enumerate
1 :
steepest descent
\end_layout
\end_deeper
\begin_layout Enumerate
Set 0 for no preconditioner,
1 for diagonal stiffness preconditioner.
The diagonal stiffness preconditioner greatly improves convergence when there are different size elements,
mixed materials,
or quadratic elements with midside nodes.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Solver Parameters for Biphasic Analysis
\begin_inset CommandInset label
LatexCommand label
name "subsec:Parameters-Biphasic-Analysis"
\end_inset
\end_layout
\begin_layout Standard
A biphasic analysis is defined by using the
\shape italic
biphasic
\shape default
type in Module section.
Since a biphasic analysis couples a fluid problem to a solid mechanics problem,
all control parameters above can be used in a biphasic analysis.
In addition,
the following parameters can be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
ptol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify the fluid pressure convergence tolerance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.01
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
mixed_formulation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Use a mixed formulation (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comment
\emph default
:
\end_layout
\begin_layout Enumerate
The mixed formulation uses discontinuous shape functions for the pressure interpolation.
It still uses the full shape functions for displacement.
\end_layout
\begin_layout Subsection
Solver Parameters for Solute and Multiphasic Analyses
\begin_inset CommandInset label
LatexCommand label
name "subsec:Parameters-Solute-Analysis"
\end_inset
\end_layout
\begin_layout Standard
When the type attribute of the Module section is set to
\shape italic
solute
\shape default
or
\emph on
multiphasic
\emph default
,
an analysis is solved that includes solute transport.
All parameters for a biphasic analysis can be used (including the ones for a structural mechanics analysis).
In addition,
the following parameters can be specified:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
ctol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify the concentration convergence tolerance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.01
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
force_positive_concentrations
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Force the concentration values always to be positive.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1 (enabled)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsection
Solver Parameters for Fluid and Fluid-FSI Analyses
\end_layout
\begin_layout Standard
A fluid analysis is defined by using the
\emph on
fluid
\emph default
type in Module section (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Module-Section"
nolink "false"
\end_inset
).
In addition to the common parameters,
the following parameters can be specified:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
vtol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
convergence tolerance on velocity
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.001
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
ftol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
convergence tolerance on dilatation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.001
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
rhoi
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Spectral radius parameter
\begin_inset Formula $\rho_{\infty}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
reform_each_time_step
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Flag for reforming stiffness matrix at the start of each time step
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
predictor
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Sets the predictor method
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
min_volume_ratio
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Sets the minimum value for the volume ratio.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (disabled)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
A fluid-structure interaction analysis is defined by using the
\emph on
fluid-FSI
\emph default
type in Module section.
It uses the parameters of
\emph on
solid
\emph default
and
\emph on
fluid
\emph default
analyses.
\end_layout
\begin_layout Standard
Transient fluid and fluid-FSI analyses may often run very efficiently using Broyden's method (
\emph on
qnmethod
\emph default
set to 1) with
\emph on
max_ups
\emph default
set to 50;
efficiency may be further increased by setting
\emph on
reform_each_time_step
\emph default
to 0,
which will postpone reforming the stiffness matrix at subsequent time steps until
\emph on
max_ups
\emph default
updates have been exhausted.
When using Broyden's method with fluid and fluid-FSI analyses,
set
\emph on
rtol
\emph default
to a non-zero value to ensure an accurate solution,
for example
\emph on
rtol
\emph default
=0.001 (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Control-Parameters"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Standard
The spectral radius parameter
\begin_inset Formula $\rho_{\infty}$
\end_inset
determines the time integration scheme:
Values in the range
\begin_inset Formula $0\le\rho_{\infty}\le1$
\end_inset
use the generalized
\begin_inset Formula $\alpha-$
\end_inset
method (see
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Theory Manual}}
\end_layout
\end_inset
).
With
\begin_inset Formula $\rho_{\infty}=0$
\end_inset
,
damping of higher frequency components (such as those produced by a step increase in velocity) occurs theoretically within a single time step;
in contrast,
with
\begin_inset Formula $\rho_{\infty}=1$
\end_inset
,
no damping occurs,
potentially leading to instability in the solution process.
When solving transient flows that exhibit eddies or shed vortices,
a value of
\begin_inset Formula $\rho_{\infty}=0.5$
\end_inset
represents a good balance between too much and too little numerical damping.
\end_layout
\begin_layout Subsection
Explicit-Solid Solver
\end_layout
\begin_layout Standard
FEBio supports an explicit-solid solver,
which solves dynamic structural mechanics problems using an explicit time-integration scheme.
This means that the solution at a given timestep is calculated using only the solution from the previous timestep.
The advantage of this approach is that no stiffness matrix needs to be calculated and no linear system of equations needs to be solved (at least,
with mass-lumping enabled).
As a result,
this solver can solve dynamic problems very fast.
However,
the downside of this approach is that it is only conditionally stable and imposes an upper limit on the time step size.
This limit is often much smaller than the time step sizes that can be taken by implicit time-integration schemes (as used by the default Newton-based solvers in FEBio) and thus often will require many more time steps to solve the model.
Thus,
the explicit solver is most useful in dynamic problems that already require relatively small time step sizes,
such as impact-contact models,
or models that use non-elastic material behavior that may undergo rapid changes in their constitutive behavior (e.g.
damage).
\end_layout
\begin_layout Standard
The explicit solver in FEBio uses the midpoint time integration rule and uses mass lumping.
Mass lumping is a technique that replaces the consistent mass matrix with a diagonal approximation.
In fact,
it's this diagonalization of the mass matrix that really prevents the need to solve a linear system of equations.
(Since solving a diagonal linear system of equations is trivial.)
\end_layout
\begin_layout Standard
The explicit solver can be selected by setting the
\series bold
type
\series default
attribute of the
\series bold
solver
\series default
element to
\emph on
explicit-solid
\emph default
.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
...
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The following parameters can be specified for the explicit-solid solver.
\end_layout
\begin_layout Standard
\begin_inset Float table
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
default value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
mass_lumping
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Chooses the mass lumping strategy.
(1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
2
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
dyn_damping
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The damping factor for dynamic damping.
(2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
The parameters of the explicit-solid solver
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments
\emph default
:
\end_layout
\begin_layout Enumerate
As mentioned,
mass lumping is a technique to approximate the mass matrix with a diagonal matrix.
Several approaches are supported in FEBio.
\end_layout
\begin_deeper
\begin_layout Enumerate
mass_lumping = 0:
no mass-lumping (This is currently not implemented,
but the value is reserved in case support will be added in the future.)
\end_layout
\begin_layout Enumerate
mass_lumping = 1 :
use row summation approach.
Useful for linear elements,
but may produce negative nodal masses for quadratic elements and thus should not be used for models containing higher-order elements.
\end_layout
\begin_layout Enumerate
mass_lumping = 2:
HRZ lumping technique.
Better suited for higher-order elements,
but should not be used for shells.
\end_layout
\end_deeper
\begin_layout Enumerate
Dynamic damping is a technique to dampen the solution in order to obtain an equilibrium solution (e.g.
for false-transient analyses).
In FEBio,
dynamic damping is applied to the velocity updates and the
\emph on
dyn_damping
\emph default
parameter specifies the damping factor.
The default value is 1 so no damping is applied.
Note that the lower the damping factor,
the more damping,
but also the longer it may take to find the equilibrium solution.
\end_layout
\begin_layout Standard
\series bold
Important!
\series default
As a final note,
the explicit-solver is still considered an experimental feature in FEBio and may not work correctly with all of the features of FEBio yet.
Use at your own risk and please report any problems you may encounter to the FEBio developers.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Globals Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Globals-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
Globals
\shape default
section is used to define some global variables,
such as global constants,
solute data and solid bound molecule data,
as well user-defined global variables.
\end_layout
\begin_layout Subsection
Constants
\begin_inset CommandInset label
LatexCommand label
name "subsec:Constants"
\end_inset
\end_layout
\begin_layout Standard
Global constants are predefined variables that some modules may rely on and currently include the universal gas constant
\begin_inset Formula $R$
\end_inset
[
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
L
\series default
/
\series bold
n
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
T
\series default
],
absolute temperature
\begin_inset Formula $\theta$
\end_inset
[
\series bold
T
\series default
],
and Faraday constant
\begin_inset Formula $F_{c}$
\end_inset
[
\series bold
Q
\series default
/
\series bold
n
\series default
].
These constants must be expressed in units consistent with the rest of the analysis:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
8.314e-6
\end_layout
\begin_layout LyX-Code
298
\end_layout
\begin_layout LyX-Code
96485e-9
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Solutes
\begin_inset CommandInset label
LatexCommand label
name "subsec:Solutes"
\end_inset
\end_layout
\begin_layout Standard
In biphasic-solute,
triphasic,
and multiphasic analyses,
a unique identifier must be associated with each solute in order to enforce consistent nodal degrees of freedom across boundaries of different materials.
This unique identification is achieved by listing each solute species that appears in the entire finite element model and associating it with a unique
\shape italic
id
\shape default
,
\shape italic
name
\emph on
,
and providing its
\shape default
\emph default
charge number
\begin_inset Formula $z^{\alpha}$
\end_inset
,
molar mass
\begin_inset Formula $M^{\alpha}$
\end_inset
,
and density
\begin_inset Formula $\rho_{T}^{\alpha}$
\end_inset
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
22.99
\end_layout
\begin_layout LyX-Code
0.97
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
-1
\end_layout
\begin_layout LyX-Code
35.45
\end_layout
\begin_layout LyX-Code
3.21
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
180.16
\end_layout
\begin_layout LyX-Code
1.54
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
These solute identification numbers should be referenced in the
\shape italic
sol
\shape default
attribute of solutes when defining a biphasic-solute (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:General-Specification-BS-Materials"
nolink "false"
\end_inset
),
triphasic or multiphasic material (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:General-Specification-Multiphasic-Mat"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Standard
The molar mass and density of solutes are needed only when solutes are involved in chemical reactions.
When not specified,
default values for these properties are set to 1.
\end_layout
\begin_layout Subsection
Solid-Bound Molecules
\begin_inset CommandInset label
LatexCommand label
name "subsec:Solid-Bound-Molecules"
\end_inset
\end_layout
\begin_layout Standard
In multiphasic analyses with chemical reactions involving solid-bound molecules,
a unique identifier must be associated with each such molecule in order to enforce consistent properties across the entire model.
This unique identification is achieved by listing each solid-bound species that appears in the entire finite element model and associating it with a unique
\shape italic
id
\shape default
,
\shape italic
name,
\shape default
charge number,
molar mass and density:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
-2
\end_layout
\begin_layout LyX-Code
463.37
\end_layout
\begin_layout LyX-Code
1.5
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\shape italic
id
\shape default
number should be referenced in the
\shape italic
sbm
\shape default
attribute of solid-bound molecules when included in the definition of a multiphasic material (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Triphasic-Multiphasic-Materials"
nolink "false"
\end_inset
).
The charge number is used in the calculation of the fixed charge density contributed by this solid-bound molecule to the overall solid matrix fixed-charge density.
The density is used in the calculation of the contribution of this molecule to the referential solid volume fraction.
The density and molar mass are used in the calculation of the molar volume of this molecule in chemical reactions.
\end_layout
\begin_layout Subsection
User Variables
\begin_inset CommandInset label
LatexCommand label
name "subsec:User-Variables"
\end_inset
\end_layout
\begin_layout Standard
Users can define custom,
global variables,
that can be referenced in other model parameters.
This offers a convenient way to parameterize a model.
Global user variables can also be used in optimizations.
Currently,
only scalar values can be defined.
User variables are defined in the
\emph on
Variables
\emph default
child element.
\end_layout
\begin_layout Standard
To define a global variable,
specify the
\emph on
var
\emph default
element,
add the
\emph on
name
\emph default
attribute to name the variable,
and specify the variable's value as the tag's value.
\end_layout
\begin_layout Standard
The following example defines a global variable,
called A,
and assigns the value 1.23 to it.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\series bold
1.23
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
As mentioned,
these global variables can be used to define other model variables,
for example,
in variables that are defined with mathematical expressions.
To use a global variable,
prefix the name with 'fem.'.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\series bold
3*fem.A
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Material Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Material-Section"
\end_inset
\end_layout
\begin_layout Standard
The material section is defined by the
\shape italic
Material
\shape default
element.
This section defines all the materials and material parameters that are used in the model.
A material is defined by the
\shape italic
material
\shape default
child element.
This element has two attributes:
\shape italic
id,
\shape default
which specifies a number that is used to reference the material,
and
\shape italic
type
\shape default
,
which specifies the type of the material.
The
\shape italic
material
\shape default
element can also have a third optional attribute called
\shape italic
name
\shape default
,
which can be used to identify the material by a text description.
A material definition might look like this:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Or,
if the optional
\shape italic
name
\shape default
attribute is present:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The material parameters that have to be entered depend on the material type.
A complete list of available materials and their parameters is provided in Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Materials"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Mesh Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Geometry-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\emph on
Mesh
\emph default
section contains all the mesh data,
including nodal coordinates and element connectivity.
It has the following sub-sections:
\end_layout
\begin_layout Description
Nodes defines the nodal coordinates of the mesh
\end_layout
\begin_layout Description
\series bold
Elements
\series default
defines the elements of the mesh.
If the name attribute is provided,
then this also defines an element set.
Element sets defined this way are also referred to as
\emph on
parts
\emph default
.
\end_layout
\begin_layout Description
\shape italic
\emph on
NodeSet
\shape default
\emph default
defines a node set
\end_layout
\begin_layout Description
\shape italic
\emph on
Edge
\shape default
\emph default
defines an edge,
i.e.
a set of line elements
\end_layout
\begin_layout Description
\shape italic
\emph on
Surface
\shape default
\emph default
defines a surface,
i.e.
a set of facets
\end_layout
\begin_layout Description
\shape italic
\emph on
DiscreteSet
\emph default
\shape default
defines a set of discrete elements (e.g.
springs)
\end_layout
\begin_layout Description
\shape italic
\emph on
ElementSet
\shape default
\emph default
defines an element set
\end_layout
\begin_layout Description
\shape italic
\emph on
SurfacePair
\emph default
\shape default
define a surface pair that can be used by a contact definition.
\end_layout
\begin_layout Description
PartList define a named list of parts (i.e.
element sets defined via the Elements tag)
\end_layout
\begin_layout Standard
At least one
\emph on
Nodes
\emph default
section must be defined and one
\emph on
Elements
\emph default
section.
The other sections are optional.
The
\shape italic
NodeSet
\shape default
,
\shape italic
Edge
\shape default
,
\shape italic
Surface
\shape default
,
\shape italic
DiscreteSet
\shape default
,
\shape italic
ElementSet
\shape default
,
\shape italic
SurfacePair
\emph on
,
and
\emph default
PartList
\shape default
sections define sets of nodes,
edges,
facets,
discrete elements,
elements,
surface pairs,
and part lists,
respectively,
and can be referenced by other sections of the model file.
For instance,
boundary conditions can be defined by referencing the sets to which the boundary condition will be applied.
\end_layout
\begin_layout Subsection
Nodes Section
\end_layout
\begin_layout Standard
The
\shape italic
Nodes
\shape default
section contains nodal coordinates.
It has an optional attribute called
\shape italic
name
\shape default
.
If this attribute is defined,
the
\shape italic
Nodes
\shape default
section also defines a node set.
\end_layout
\begin_layout LyX-Code
"]>
\end_layout
\begin_layout Standard
The nodes are defined using the
\shape italic
node
\shape default
tag which is a child of the
\shape italic
Nodes
\shape default
section.
Repeat the following XML-element for each node:
\end_layout
\begin_layout LyX-Code
x,y,z
\end_layout
\begin_layout Standard
The
\shape italic
id
\shape default
attribute is the global identifier of the node and must be a unique number within the model definition.
Nodal ids must be defined in increasing order,
but do not have to be sequential.
This
\shape italic
id
\shape default
is used as a reference in the element connectivity section.
\end_layout
\begin_layout Standard
Multiple
\shape italic
Nodes
\shape default
sections can be defined,
but each node can only be defined once.
For example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
...
\end_layout
\begin_layout LyX-Code
1,1,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
2,1,1
\end_layout
\begin_layout LyX-Code
...
\end_layout
\begin_layout LyX-Code
2,2,2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Elements Section
\begin_inset CommandInset label
LatexCommand label
name "subsec:Elements-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
Elements
\shape default
sections contain a list of the element connectivity data.
Multiple
\shape italic
Elements
\shape default
sections can be defined.
The
\shape italic
Elements
\shape default
section has the following attributes.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Attribute
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
element type
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
name
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
unique name that identifies this domain
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
Each
\shape italic
Elements
\shape default
section contains multiple
\shape italic
elem
\shape default
elements that define the element connectivities.
Each
\shape italic
elem
\shape default
tag has a
\shape italic
id
\shape default
attribute that defines the element number.
For example,
the following
\shape italic
Elements
\shape default
section defines a list of hexahedral elements:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1,2,3,4,5,6,7,8
\end_layout
\begin_layout LyX-Code
9,10,11,12,13,14,15,16
\end_layout
\begin_layout LyX-Code
...
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
FEBio classifies elements in three categories,
namely
\shape italic
solids,
shells
\shape default
\emph on
,
\emph default
and
\emph on
beams
\emph default
.
\end_layout
\begin_layout Subsubsection
Solid Elements
\begin_inset CommandInset label
LatexCommand label
name "subsec:Solid-Elements"
\end_inset
\end_layout
\begin_layout Standard
The following solid element types are defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
hex8
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
8-node trilinear hexahedral element
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
hex20
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
20-node quadratic hexahedral elements
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
hex27
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
27-node quadratic hexahedral elements
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
penta6
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
6-node linear pentahedral (wedge) element
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
penta15
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
15-node quadratic pentahedral (wedge) element
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
pyra5
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
5-node linear pyramidal element
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
pyra13
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
13-node quadratic pyramidal element
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
tet4
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
4-node linear tetrahedral element
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
tet10
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
10-node quadratic tetrahedral element
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
tet15
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
15-node quadratic tetrahedral element
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The node numbering has to be defined as in the figure below.
\end_layout
\begin_layout Standard
\align center
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigNodeNumberingSolidElements.png
lyxscale 50
scale 50
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
Node numbering for solid elements
\end_layout
\end_inset
\end_layout
\begin_layout Subsubsection
Shell Elements
\begin_inset CommandInset label
LatexCommand label
name "subsec:Shell-Elements"
\end_inset
\end_layout
\begin_layout Standard
FEBio currently supports the following shell elements:
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
tri3
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
3-node linear triangular shell element (compatible strain)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
tri6
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
6-node quadratic triangular shell element (compatible strain)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
quad4
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
4-node linear quadrilateral shell element (compatible strain)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
quad8
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
8-node quadratic quadrilateral shell element (compatible strain)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
quad9
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
9-node quadratic quadrilateral shell element (compatible strain)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
q4ans
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
4-node linear quadrilateral shell element (assumed natural strain)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
q4eas
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
4-node linear quadrilateral shell element (enhanced assumed strain)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For shell elements that use a
\emph on
compatible strain
\emph default
formulation,
the calculation of strain components is based on nodal displacements,
similar to hexahedral or pentrahedral elements.
Users should be aware that this compatible strain formulation is very susceptible to element locking when the shell thickness is much smaller than the shell size (e.g.,
when the aspect ratio is less than 0.01).
Therefore,
these shell formulations should be used with caution,
keeping in mind this important constraint.
Conversely,
these shell elements perform very well when they are attached to solid elements (e.g.,
skin over muscle),
or sandwiched between shell elements (e.g.,
cell membrane separating cytoplasm from extra-cellular matrix),
as described in
\begin_inset CommandInset citation
LatexCommand citep
key "Hou18"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
\align center
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigNodeNumberingShellElements.png
lyxscale 50
scale 75
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
Node numbering for shell elements
\end_layout
\end_inset
\end_layout
\begin_layout Standard
The element-locking limitation of compatible strain shell formulations has motivated the development of specialized shell formulations that attempt to overcome locking.
The FE literature on this subject is rather extensive and we refer the reader to the excellent review chapter by Bischoff et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Bischoff18"
literal "true"
\end_inset
on this topic.
Methods for overcoming locking include the assumed natural strain (ANS) formulation for transverse shear strains
\begin_inset CommandInset citation
LatexCommand citep
key "MacNeal78,Bathe86"
literal "true"
\end_inset
and transverse normal strains
\begin_inset CommandInset citation
LatexCommand citep
key "Betsch95,Bischoff97"
literal "true"
\end_inset
.
The ANS formulation may be supplemented with the enhanced assumed strain (EAS) method
\begin_inset CommandInset citation
LatexCommand citep
key "Simo90"
literal "true"
\end_inset
and extended to large deformations
\begin_inset CommandInset citation
LatexCommand citep
key "Klinkel99,Vu-Quoc03,Simo93"
literal "true"
\end_inset
.
FEBio includes the ANS (
\emph on
q4ans
\emph default
) and EAS (
\emph on
q4eas
\emph default
) quadrilateral shell element formulations of Vu-Quoc and Tan
\begin_inset CommandInset citation
LatexCommand citep
key "Vu-Quoc03"
literal "true"
\end_inset
,
using a seven-parameter EAS interpolation,
which is otherwise substantially similar to the five-parameter interpolation presented in an earlier study by Klinkel et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Klinkel99"
literal "true"
\end_inset
.
These shell elements are not suitable for attachment to a solid element,
nor sandwiching between two solid elements.
Since they don't experience element locking,
they should be loaded more slowly than compatible strain shell elements.
The most accurate of these shell formulation is
\emph on
q4eas
\emph default
.
\end_layout
\begin_layout Standard
By default,
the nodes of a shell element define its
\emph on
top
\emph default
face.
The location of the shell element
\emph on
bottom
\emph default
face is calculated from the nodal values of the shell thickness,
along the opposite direction of nodal normals.
The nodal normal is evaluated by averaging the top face normal of all shell elements sharing that node.
When a shell element is attached to a solid element (e.g.,
when the shell nodes also represent the nodes of one face of the solid element),
FEBio automatically accounts for the shell thickness,
reducing the height of the solid element in the direction of the shell normal.
It is the user's responsibility to ensure that the shell thickness is less than that of the solid element;
otherwise,
a negative Jacobian error will be automatically generated.
\end_layout
\begin_layout Standard
Prior to FEBio 2.6,
the nodes of a shell element defined its
\emph on
middle
\emph default
face (halfway between top and bottom,
such that the shell element extends above and below the face defined by the shell nodes).
This older formulation can be recovered by setting
\emph on
shell_formulation
\emph default
to 0 in the
\emph on
Control
\emph default
section.
This setting only works with compatible strain shell formulations.
\end_layout
\begin_layout Standard
By default,
stresses and strains reported for a shell element are evaluated by averaging all the integration point values within the shell element,
thus producing values that reflect the response along the middle surface.
To display shell stresses or strains at the top or bottom faces,
use plot variables that start with 'shell top...' or 'shell bottom...',
such as 'shell top stress' or 'shell bottom nodal strain'.
\end_layout
\begin_layout Standard
When shell domains intersect such that three or more shell elements share the same edge,
as in a T-connection,
users should set
\emph on
shell_normal_nodal
\emph default
to 0 in the
\emph on
ShellDomain
\emph default
section.
This setting ensures that the bottom face of a shell element is calculated using the top face normal,
instead of nodal normals,
since the latter would be ill-defined for nodes belonging to such an edge.
\end_layout
\begin_layout Standard
Finally,
please note that shell elements cannot be stacked in FEBio.
\end_layout
\begin_layout Subsubsection
Beam Elements
\end_layout
\begin_layout Standard
FEBio supports some truss and beam element formulations.
Currently,
only linear trusses and linear and quadratic beam elements are supported.
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
line2
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
2-node linear truss or beam element
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
line3
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
3-node quadratic beam element
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
Whether a truss or beam formulation is used,
is determined in the corresponding BeamDomain section.
\end_layout
\begin_layout Subsection
NodeSet Section
\begin_inset CommandInset label
LatexCommand label
name "subsec:NodeSet-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
NodeSet
\shape default
section allows users to define node sets.
These node sets can then later be used in the definition of boundary conditions and loads.
A node set is defined by the
\shape italic
NodeSet
\shape default
tag.
This tag takes one required attribute,
\shape italic
name
\shape default
,
which defines the name of the node set.
A node set definition is followed by a list of node IDs.
For example,
\end_layout
\begin_layout LyX-Code
1,
2,
101,
102
\end_layout
\begin_layout Standard
For larger nodesets,
it is recommended to split the list across several lines.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1,
2,
3,
4,
\end_layout
\begin_layout LyX-Code
5,
6,
7,
8,
\end_layout
\begin_layout LyX-Code
9,
10,
11,
12
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Edge Section
\begin_inset CommandInset label
LatexCommand label
name "subsec:Edge-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
Edge
\shape default
section allows users to define a set of edges.
These edges can be used to define boundary conditions or loads.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1,2
\end_layout
\begin_layout LyX-Code
2,3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Here,
the
\shape italic
lid
\shape default
attribute defines the
\shape italic
local
\shape default
id of the edge,
local with respect to the edge definition.
The local ids must begin at 1 and defined sequentially.
\end_layout
\begin_layout Standard
The edge elements are defined by using a tag that depends on the type of the edge element.
The following edge elements are currently supported.
\end_layout
\begin_layout Description
\shape italic
line2
\shape default
2-node line element
\end_layout
\begin_layout Description
\shape italic
line3
\shape default
3-node line element
\end_layout
\begin_layout Standard
Edges cannot overlap element boundaries and must be a valid edges of elements.
\end_layout
\begin_layout Subsection
Surface Section
\begin_inset CommandInset label
LatexCommand label
name "subsec:Surface-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
Surface
\shape default
section allows users to define surfaces.
These surfaces can then later be used to define the boundary conditions and contact definitions.
A surface definition is followed by a list of surface elements,
following the format described below.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1,2,3,4
\end_layout
\begin_layout LyX-Code
<...>
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\shape italic
Surface
\shape default
takes one required attribute,
namely the
\shape italic
name
\shape default
.
This attribute sets the name of the surface.
This name will be used later to refer back to this surface.
\end_layout
\begin_layout Standard
The following surface elements are available:
\end_layout
\begin_layout Description
\shape italic
quad4
\shape default
4-node quadrilateral element
\end_layout
\begin_layout Description
\shape italic
quad8
\shape default
8-node serendipity quadrilateral element
\end_layout
\begin_layout Description
\shape italic
tri3
\shape default
3-node triangular element
\end_layout
\begin_layout Description
\shape italic
tri6
\shape default
6-node quadratic triangular element
\end_layout
\begin_layout Description
\shape italic
tri7
\shape default
7-node quadratic triangular element
\end_layout
\begin_layout Standard
The value for the surface element is the nodal connectivity:
\end_layout
\begin_layout LyX-Code
n1,n2,n3,n4
\end_layout
\begin_layout LyX-Code
n1,n2,n3
\end_layout
\begin_layout Standard
Surface elements cannot overlap element boundaries.
That is,
the surface element must belong to a specific element.
Surface elements do not contribute to the total number of elements in the mesh.
They are also not to be confused with shell elements.
\end_layout
\begin_layout Subsection
ElementSet Section
\begin_inset CommandInset label
LatexCommand label
name "subsec:ElementSet-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
ElementSet
\shape default
section can be used to define an element set.
Element sets can be used to output data for only a subset of elements.
An element set is defined through the
\shape italic
ElementSet
\shape default
tag,
which takes one attribute,
namely
\shape italic
name
\shape default
that specifies the name of the element set.
The value of the tag is the list of element IDs.
For example,
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1,
2,
3,
4
\end_layout
\begin_layout LyX-Code
5,
6,
7,
8
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
DiscreteSet Section
\begin_inset CommandInset label
LatexCommand label
name "subsec:DiscreteSet-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
DiscreteSet
\shape default
section defines sets of discrete elements.
These sets can then be used to define e.g.
springs.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1,2
\end_layout
\begin_layout LyX-Code
3,4
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
SurfacePair Section
\begin_inset CommandInset label
LatexCommand label
name "subsec:SurfacePair-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
SurfacePair
\shape default
section defines a pair of surfaces that can be used to define surface-to-surface interactions (e.g.
contact).
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
surface1
\end_layout
\begin_layout LyX-Code
surface2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The surfaces (i.e.
\shape italic
surface1
\shape default
and
\shape italic
surface2
\shape default
) are surfaces defined in
\shape italic
Surface
\shape default
sections.
Because surfaces must already be defined before they can be referenced in the
\shape italic
SurfacePair
\shape default
section,
the
\shape italic
Surface
\shape default
sections must be defined before the
\shape italic
SurfacePair
\shape default
section.
\end_layout
\begin_layout Subsection
PartList
\end_layout
\begin_layout Standard
A
\emph on
part
\emph default
is an element set that is defined via the
\emph on
Elements
\emph default
tag.
Parts can be grouped together in part lists.
A part list is defined via the
\emph on
PartList
\emph default
tag.
The value of this tag is a list of the names of the parts that belong to the list.
\end_layout
\begin_layout LyX-Code
part1,part2
\end_layout
\begin_layout Standard
Here,
\emph on
part1
\emph default
and
\emph on
part2
\emph default
are parts defined via Elements sections.
Because part lists depend on the Elements sections,
the PartList tag must be defined after all Elements sections have been defined.
\end_layout
\begin_layout Standard
Part lists can be used,
for instance,
in body loads if the body load is to be applied to multiple parts.
\end_layout
\begin_layout Subsection
Implicit Partitions
\begin_inset CommandInset label
LatexCommand label
name "subsec:Implicit-Partitions"
\end_inset
\end_layout
\begin_layout Standard
In addition to the explicit mesh partitions that can be defined in the Mesh section,
as detailed above,
FEBio also supports
\emph on
implicit partitions
\emph default
.
This allows you to assign a different type of partition to a model component than the target partition.
For instance,
if a boundary condition requires a node set,
using implicit partitioning,
you can assign a surface or an element set.
\end_layout
\begin_layout Standard
Consider the following example.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
FEBio expects a node set with the name set1 defined in the Mesh section.
However,
if set1 is a surface,
then this surface can be assigned to the boundary condition using the following syntax.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The presence of the specifier @surface informs FEBio that set1 is a surface and the node set needs to be extracted from the surface definition.
\end_layout
\begin_layout Standard
Mesh partitions can only be assigned this way if the target partition is a subset of the source partition.
For instance,
it is not possible to assign a node set to a surface partition.
\end_layout
\begin_layout Standard
The following specifiers are available.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
specifier
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Target partition
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
@surface
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
References a surface
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
nodeset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
@edge
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
References an edge
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
nodeset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
@elem_set
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
References an element set (either via Elements or ElementSet)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
nodeset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
@part_list
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
References a part list
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
nodeset,
surface
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
Note that the @part_list is the only specifier that can be used to assign a part list to a surface.
This can be useful for defining contact surfaces where the surface might have a complex shape and is difficult to extract manually.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
MeshDomains Section
\begin_inset CommandInset label
LatexCommand label
name "sec:MeshDomains-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\emph on
MeshDomains
\emph default
section assigns various physical attributes to the element sets of the mesh.
For each of the
\emph on
Elements
\emph default
sections in the
\emph on
Mesh
\emph default
section,
define a
\emph on
SolidDomain
\emph default
,
\emph on
ShellDomain
\emph default
,
or
\emph on
BeamDomain
\emph default
section,
depending on whether the elements are solid,
shells,
or beams (or trusses).
Each domain also requires a material name that defines the material properties of the domain.
\end_layout
\begin_layout Subsection
SolidDomain Section
\begin_inset CommandInset label
LatexCommand label
name "subsec:SolidDomain-Section"
\end_inset
\end_layout
\begin_layout Standard
Use the
\emph on
SolidDomain
\emph default
section to define a solid domain.
This section takes the following parameters:
\end_layout
\begin_layout Description
\series bold
name
\series default
The name of the element set (defined via an
\emph on
Elements
\emph default
section).
This element set must only contain solid elements.
\end_layout
\begin_layout Description
mat The name of the material that will be assigned to this domain
\end_layout
\begin_layout Description
type (optional) the specific formulation used for this domain.
\end_layout
\begin_layout Standard
The optional
\series bold
type
\series default
attribute can be added to specify a specific solid formulation.
If omitted,
FEBio will determine the proper domain type by inspecting the material and element types used.
However,
users can explicitly set the type attribute.
The following solid domain types are defined.
If the domain type is specified explicitly,
the user must make sure that the assigned material is compatible with the domain type.
(For instance,
you cannot assign a biphasic material to an elastic-solid.)
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
elastic-solid
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
standard solid formulation (default for most materials) (1,2)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
three-field-solid
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A three-field formulation used for modeling (nearly) incompressible materials.
(default for uncoupled materials)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
rigid-solid
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Rigid solid domain.
(default for rigid materials.)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
udg-hex
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
uniform deformation gradient hex formulation
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
sri-solid
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Formulation that uses a selective reduced integration rule
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
remodeling-solid
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Formulation used for elastic remodeling problems.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
elastic-mm-solid
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Formulation used for multi-scale domains.
(requires the
\begin_inset Quotes eld
\end_inset
micro-material
\begin_inset Quotes erd
\end_inset
)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
ut4-solid
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Uniform nodal strain tetrahedron.
(3)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
biphasic-solid
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The standard formulation for biphasic domains.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
biphasic-solute-solid
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The standard formulation for biphasic-solute domains.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
multiphasic-solid
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The standard formulation for multiphasic domains.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
triphasic-solid
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The standard formulation for triphasic domains (deprecated,
use multiphasic-solid instead).
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
fluid-3D
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The standard formulation for fluid domains.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
fluid-FSI-3D
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The standard formulation for fluid-FSI domains.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Standard
1.
For the elastic-solid domain,
the elem_type attribute can be specified to further specialize the quadrature rule.
The values of the rule depend on the specific element type.
The tables below show the available integration rules for the different element types.
The values marked with an asterisk (*) are the default.
\end_layout
\begin_layout Itemize
For the
\shape italic
hex8
\shape default
element,
the following values are defined.
\end_layout
\begin_deeper
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
hex8
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
HEX8G8*
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Gaussian integration using 2x2x2 integration points.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
HEX8G6
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Alternative integration rule for bricks using 6 integration point
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\end_deeper
\begin_layout Itemize
For the
\shape italic
hex20
\shape default
element,
the following values are defined.
\end_layout
\begin_deeper
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
hex20
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
HEX20G8*
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Gaussian integration using 2x2x2 integration points.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\end_deeper
\begin_layout Itemize
For the
\shape italic
tet4
\shape default
element,
the following values are allowed.
\end_layout
\begin_deeper
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
tet4
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
TET4G1*
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Gaussian integration rule using one integration point.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
TET4G4
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Gaussian integration rule using 4 integration points.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\end_deeper
\begin_layout Itemize
For the
\shape italic
tet10
\shape default
element,
the following integration rules are supported.
\end_layout
\begin_deeper
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
tet10
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
TET10G4
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Gaussian integration rule using 4 integration points
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
TET10G8*
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Gaussian integration rule using 8 integration points
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
TET10GL11
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Gauss-Lobatto integration rule using 11 integration points
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The Lobatto integration rule differs from a regular Gauss integration rule in that it includes the vertices of the tetrahedral element.
The
\shape italic
Lobatto11
\shape default
integration rule uses the 10 tetrahedral nodes,
plus one integration rule located at the center of the element.
\end_layout
\end_deeper
\begin_layout Itemize
For the
\shape italic
tet15
\shape default
element,
the following integration rules are defined.
\end_layout
\begin_deeper
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
tet15
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
TET15G8
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Gaussian integration rule using 8 integration points
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
TET15G11
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Gaussian integration rule using 11 integration points
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
TET15G15*
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Gaussian integration rule using 15 integration points
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\end_deeper
\begin_layout Itemize
For the
\shape italic
penta15
\shape default
element,
the following values are defined.
\end_layout
\begin_deeper
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
penta15
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
PENTA15G8*
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Gaussian integration using 2x2x2 integration points.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\end_deeper
\begin_layout Standard
2.
The
\begin_inset Quotes eld
\end_inset
solid-elastic
\begin_inset Quotes erd
\end_inset
defines the parameters
\emph on
secant_stress
\emph default
and
\emph on
secant_tangent
\emph default
.
When,
specified,
the formulation will use a secant approximation of the corresponding variable.
When setting
\emph on
secant_stress
\emph default
is set to 1,
the stress is calculated from a secant approximation that uses the material's strain-energy density.
Similarly,
when
\emph on
secant_tangent
\emph default
is specified,
the material tangent is approximated using the PK2 stress.
\end_layout
\begin_layout Standard
3.The ut4-solid is a special formulation for tetrahedral elements that uses a
\nospellcheck on
nodally-averaged
\nospellcheck default
integration rule,
as proposed by Gee et al
\begin_inset CommandInset citation
LatexCommand citep
key "Gee09"
literal "true"
\end_inset
.
This formulation requires additional parameters.
To override the default values,
use the following alternative syntax:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_deeper
\begin_layout LyX-Code
0.05
\end_layout
\begin_layout LyX-Code
<
\nospellcheck on
iso
\nospellcheck default
_stab>0
\nospellcheck on
iso
\nospellcheck default
_stab>
\end_layout
\begin_layout LyX-Code
\end_layout
\end_deeper
\begin_layout Standard
The
\shape italic
alpha
\shape default
parameter defines the amount of
\begin_inset Quotes eld
\end_inset
blending
\begin_inset Quotes erd
\end_inset
between the regular
\nospellcheck on
tet-contribution
\nospellcheck default
and the
\nospellcheck on
nodally
\nospellcheck default
integrated contribution.
The value must be between 0 and 1,
where 0 means no contribution from the regular tet and 1 means no contribution from the nodally averaged tet.
The
\shape italic
iso_stab
\shape default
parameter is a flag that chooses between two slightly different formulations of the nodally integrated tet.
When set to 0,
the stabilization is applied to the entire virtual work,
whereas when set to 1 the stabilization is applied only to the isochoric part.
See the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Theory Manual}}
\end_layout
\end_inset
for a detailed description of this formulation.
\end_layout
\begin_layout Subsection
ShellDomain Section
\end_layout
\begin_layout Standard
Use the
\emph on
ShellDomain
\emph default
section to define a shell domain.
This section takes two parameters:
\end_layout
\begin_layout Description
\series bold
name
\series default
The name of the element set (defined via an
\emph on
Elements
\emph default
section).
This element set must only contain shell elements.
\end_layout
\begin_layout Description
mat The name of the material that will be assigned to this domain
\end_layout
\begin_layout Description
type (optional) the specific shell formulation
\end_layout
\begin_layout Standard
Similar to solid domains,
the particular shell formulation can be requested via the
\series bold
type
\series default
attribute.
If omitted,
FEBio will determine the formulation from the material and shell element types.
If specified explicitly,
the user must ensure that the correct material is assigned to the domain.
The following shell domain types are available.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
elastic-shell
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
standard shell formulation (default for most materials) (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
three-field-shell
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A three-field formulation used for modeling (nearly) incompressible materials.
(default for uncoupled materials)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
rigid-shell
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Rigid shell domain.
(default for rigid materials.)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
elastic-shell-old
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The
\begin_inset Quotes eld
\end_inset
old
\begin_inset Quotes erd
\end_inset
shell formulation,
used in FEBio version 2.0 and older.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
elastic-shell-eas
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Enhanced-Assumed-Strain shell;
an alternative shell formulation for incompressible shells.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
elastic-shell-ans
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Assumed-Natural-Strain shell;
an alternative shell formulation for incompressible shells.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
biphasic-shell
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The standard formulation for biphasic shell domains.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
biphasic-solute-shell
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The standard formulation for biphasic-solute shell domains.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
multiphasic-shell
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The standard formulation for multiphasic shell domains.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The default shell thickness can be specified as a parameter of the ShellDomain section.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.01
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
If the shell thickness parameter is not specified,
the initial shell thickness is set to zero,
and it is assumed that the actual shell thickness is specified in the MeshData section.
\end_layout
\begin_layout Subsection
BeamDomain Section
\end_layout
\begin_layout Standard
Beam and trusses can be defined with the
\emph on
BeamDomain
\emph default
section.
This tag takes the following attributes.
\end_layout
\begin_layout Description
name This is the name of the part to which this domain will be assigned.
The part is defined via a named
\emph on
Elements
\emph default
section.
\end_layout
\begin_layout Description
mat The name of the material that will be assigned to this domain.
\end_layout
\begin_layout Description
type The specific formulation that will be used.
\end_layout
\begin_layout Standard
The particular beam formulation that can be assigned is listed below.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
linear-truss
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A linear truss formulation.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
elastic-truss
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
An extension of the linear-truss formulation that allows the use of standard FEBio materials (EXPERIMENTAL!)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
linear-beam
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A linear beam formulation.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
MeshData Section
\begin_inset CommandInset label
LatexCommand label
name "sec:MeshData-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
MeshData
\shape default
section is where data is specified that can be mapped to the mesh.
The data can then be applied to a parameter of the model,
e.g.
a material parameter,
or a pressure load.
\end_layout
\begin_layout Standard
To define a mesh data section add one of the following tags.
\end_layout
\begin_layout Description
NodeData Define data on a node set
\end_layout
\begin_layout Description
SurfaceData Define data on a surface
\end_layout
\begin_layout Description
ElementData Define data on an element set
\end_layout
\begin_layout Standard
The following attributes can be added.
\end_layout
\begin_layout Description
name All mesh data sections require a name,
which can be specified with the
\emph on
name
\emph default
attribute.
This name will be used by model parameters to reference the particular mesh data.
\end_layout
\begin_layout Standard
Data maps can be defined in two ways:
1) explicitly,
where the value of each node (face,
element) can be specified,
or 2) implicitly,
via data generators that define the values of each node (face,
element) procedurally.
\end_layout
\begin_layout Standard
When mesh data maps are defined explicitly,
the following attributes should be specified in addition to the name attribute.
\end_layout
\begin_layout Description
\series bold
data_type
\series default
defines the type of data
\end_layout
\begin_layout Standard
The following table lists the supported data types.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
data type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
scalar
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A single floating point value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
vec2
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A 2D vector defined as
\begin_inset Formula $x$
\end_inset
,
\begin_inset Formula $y$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
vec3
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A 3D vector defined as
\begin_inset Formula $x$
\end_inset
,
\begin_inset Formula $y$
\end_inset
,
\begin_inset Formula $z$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
mat3
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A 3x3 tensor,
row-major sorted
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
mat3s
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A symmetric 3x3 tensor,
defined as
\begin_inset Formula $xx$
\end_inset
,
\begin_inset Formula $yy$
\end_inset
,
\begin_inset Formula $zz,xy,yz,xz$
\end_inset
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
If the data type is not defined,
the
\shape italic
scalar
\shape default
data type is assumed.
\end_layout
\begin_layout Subsection
Data Generators
\begin_inset CommandInset label
LatexCommand label
name "subsec:generator"
\end_inset
\end_layout
\begin_layout Standard
Data generators can be used to populate the values of a data map procedurally.
To use a data generator,
specify the
\emph on
type
\emph default
attribute.
If the
\emph on
type
\emph default
attribute is defined,
the child tags must be the parameters of the generator.
For example,
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
X*X + Y*Y + Z*Z
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Data generators that can be used for a specific mesh data are described in the sections below.
\end_layout
\begin_layout Subsection
ElementData
\begin_inset CommandInset label
LatexCommand label
name "subsec:ElementData"
\end_inset
\end_layout
\begin_layout Standard
This section defines data that can be mapped to the elements of an element set.
The element set is specified via the
\emph on
elem_set
\emph default
attribute.
\end_layout
\begin_layout Description
\series bold
Defining
\begin_inset space ~
\end_inset
maps
\series default
A map is defined by using the
\emph on
name
\emph default
attribute to give the map a name.
This name can then be used in mapped parameters (see Appendix A).
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.23
\end_layout
\begin_layout LyX-Code
1.25
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The following data generators are available for element data sections.
\end_layout
\begin_layout Description
surface-to-surface_map The
\begin_inset Quotes eld
\end_inset
\emph on
surface-to-surface map
\emph default
\begin_inset Quotes erd
\end_inset
generator defines a data field on the domain bounded by two surfaces.
The data values are interpolated using a user-defined function between the surfaces.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
x*x+1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Description
\series bold
special
\begin_inset space ~
\end_inset
generators
\series default
A few special data generators do not generate maps,
but instead modify model data in a more direct way.
The following table lists the currently supported special generators.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Property
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Data type/format
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
fiber
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify a local fiber direction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
vec3/const
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
mat_axis
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify local element material axes
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
vec3/const
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
shell thickness
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify the shell element thickness
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
float/shape
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For example,
to assign shell thicknesses to an element set,
use the following syntax.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0,
1.0,
1.0,
1.0
\end_layout
\begin_layout LyX-Code
1.0,
1.0,
1.0,
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
SurfaceData
\begin_inset CommandInset label
LatexCommand label
name "subsec:SurfaceData"
\end_inset
\end_layout
\begin_layout Standard
This section allows users to define data that can be mapped to the surfaces of certain boundary conditions and loads.
This section only defines user-defined data maps,
i.e.
the
\shape italic
name
\shape default
,
\shape italic
data_type
\shape default
and
\shape italic
data_format
\shape default
attributes must be used.
The surface is defined via the
\shape italic
surface
\shape default
attribute.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.23
\end_layout
\begin_layout LyX-Code
3.45
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The surface definition is defined in the
\shape italic
Mesh
\shape default
section.
Note that the ids refer to the local ids of the surface facets.
By default,
the
\shape italic
scalar
\shape default
data type and
\shape italic
const
\shape default
data format are assumed so only one value per facet is expected.
Other data types and formats can be specified with the
\shape italic
data_type
\shape default
and
\shape italic
data_format
\shape default
attributes.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.0,
1.0,
0.0
\end_layout
\begin_layout LyX-Code
0.0,
2.0,
0.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Optionally,
the surface data may be described with a data generator.
The data generator is specified via the
\emph on
type
\emph default
attribute.
The following data generators are available for surface data.
\end_layout
\begin_layout Description
parabolic_map The
\begin_inset Quotes eld
\end_inset
\emph on
parabolic map
\emph default
\begin_inset Quotes erd
\end_inset
defines a scalar data field with a parabolic profile on a surface.
The data is determined by solving a heat-type problem with a constant source and homogeneous boundary conditions on the edge of the surface.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
EdgeData
\begin_inset CommandInset label
LatexCommand label
name "subsec:EdgeData"
\end_inset
\end_layout
\begin_layout Standard
This section allows users to define user-defined data maps that will be mapped to an edge defined in the Mesh section.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
2.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Notice that the
\shape italic
local
\shape default
IDs are required here.
\end_layout
\begin_layout Subsection
NodeData
\begin_inset CommandInset label
LatexCommand label
name "subsec:NodeData"
\end_inset
\end_layout
\begin_layout Standard
This section allows users to define data that will be mapped to node sets.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
2.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
For node data the
\shape italic
data_format
\shape default
attribute,
if specified,
will be ignored.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Mesh Adaptor Section
\end_layout
\begin_layout Standard
The FEBio Adaptive Mesh Refinement framework (FEAMR,
pronounced “femur”) allows users to make modifications to the mesh during the analysis of the model.
There are currently two mesh adaptor applications supported,
namely mesh erosion,
which removes elements from the mesh,
and remeshing,
which can be used to adaptively refine or coarsen the mesh based on the solution.
The mesh adaptors are controlled via user-defined criteria that determine the conditions under which to modify the mesh.
\end_layout
\begin_layout Standard
A mesh adaptor is applied at the end of a timestep,
after the Newton-iterations and augmentations have converged.
If the mesh adaptor modifies the mesh,
then the timestep is solved again,
using the new mesh.
Several adaptors define the
\emph on
criterion
\emph default
property,
which evaluates the variable or metric that is used by the adaptor,
and optionally,
can be used to filter the elements to which the adaptor will be applied.
How the criterion is used,
depends on the adaptor.
For instance,
the erosion adaptor uses it to identify the elements to deactivate.
Remeshing adaptors will use it to set the new element size.
It is allowed to use several mesh adaptors in a single model,
but keep in mind that the order in which the mesh adaptors are listed in the input file is important.
For instance,
if two mesh adaptors are defined,
the second adaptor will operate on the mesh created by the first adaptor.
Mesh adaptors used for adaptive refinement will also map data between the old mesh and the new mesh.
User data,
defined in the MeshData section,
is always mapped between meshes.
If the model is history-dependent,
it might be important to map additional data.
For instance,
a visco-elastic material needs to map stress-history variables.
By default,
mapping data (except for user-data) is not done unless the user sets a specific flag (map_data).
New mesh adaptors and adaptor criteria can be defined via the plugin framework.
\end_layout
\begin_layout Subsection
The MeshAdaptor Section
\end_layout
\begin_layout Standard
Mesh adaptors are added to the FEBio Input file (version 3.0 and above) in a new section,
called
\series bold
MeshAdaptor
\series default
.
This section must appear after the Mesh and MeshDomains sections.
The MeshAdaptor section may also be defined in a
\emph on
step
\emph default
section in order to apply the adaptor only during that step.
Inside the MeshAdaptor section,
each mesh adaptor is defined via the
\series bold
mesh_adaptor
\series default
tag.
This tag allows the following attributes:
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
attribute
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
set the type of the mesh adaptor.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
elem_set
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The element set to apply the adaptor to (1) (Optional)
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments
\emph default
:
\end_layout
\begin_layout Enumerate
The
\series bold
elem_set
\series default
attribute is optional,
but can be used to apply the adaptor to only a part of the mesh.
This is useful to limit the effect of an adaptor to a part of the mesh.
The element set must reference a domain (i.e.
defined via Elements) of a mesh,
or a set of domains.
It cannot be an element set defined through the ElementSet tag.
(Note that not all mesh adaptors support this attribute.) If omitted,
the adaptor is applied to the entire mesh.
\end_layout
\begin_layout Standard
Many mesh adapators require a mesh adaptor criterion.
The criterion defines the metric that will assign a value to each element.
This value can then in turn be used by the adaptor to decide what to do with a particular element.
Adaptor criteria are defined in section
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Mesh-Adaptor-Criteria"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Subsubsection
The erosion adaptor
\end_layout
\begin_layout Standard
The erosion adaptor can be used to deactivate elements in a mesh,
based on a user-defined criterion.
It defines the following properties:
\end_layout
\begin_layout Itemize
\series bold
max_iters
\series default
:
Set the max number of adaption iterations,
for each time step.
\end_layout
\begin_layout Itemize
\series bold
remove_islands
\series default
:
If true,
removes small element sets that have become disconnected from the main mesh.
\end_layout
\begin_layout Itemize
\series bold
max_elems
\series default
:
Set the max number of elements to erode,
per adaptation.
\end_layout
\begin_layout Itemize
\series bold
sort
\series default
:
sort the element values returned by the criterion.
\end_layout
\begin_layout Itemize
\series bold
criterion
\series default
:
Set the criterion that determines the element metric to evaluate and which elements to erode.
\end_layout
\begin_layout Itemize
\series bold
erode_surfaces
\series default
:
Sets the policy of handling surface facets that attach to eroded elements.
The value can be set to one of the following values:
\end_layout
\begin_deeper
\begin_layout Itemize
\series bold
no
\series default
:
don't erode surfaces (default)
\end_layout
\begin_layout Itemize
\series bold
yes
\series default
:
erode surfaces if the underlying element is eroded.
\end_layout
\begin_layout Itemize
\series bold
grow
\series default
:
add the newly exposed facets of eroded elements to the surface.
\end_layout
\begin_layout Itemize
\series bold
reconstruct
\series default
:
reconstruct surface.
This only works if the surface is defined via a part.
\end_layout
\end_deeper
\begin_layout Standard
\emph on
Example
\emph default
:
\end_layout
\begin_layout Standard
In this example,
elements that have an (integration point averaged) effective stress larger than 0.3,
are eroded.
Only three elements are eroded per adaptation cycle.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
The mmg_remesh adaptor
\end_layout
\begin_layout Standard
The mmg_remesh adaptor can be used for adaptive mesh refinement of linear tetrahedral meshes.
\end_layout
\begin_layout Itemize
\series bold
max_iters
\series default
:
The maximum number of adaption iterations per time step.
\end_layout
\begin_layout Itemize
\series bold
max_elements
\series default
:
The maximum number of elements.
If the number of elements of the mesh is larger,
the adaptor is not applied.
\end_layout
\begin_layout Itemize
\series bold
min_element_size
\series default
:
Set the desired minimal element size.
\end_layout
\begin_layout Itemize
\series bold
hausdorff
\series default
:
The Hausdorff distance.
This is used to preserve curved sections.
(default = 0.01).
\end_layout
\begin_layout Itemize
\series bold
gradation
\series default
:
This parameter sets the spatial gradient of element size.
(default = 1.3).
Value should be larger than 1.
\end_layout
\begin_layout Itemize
\series bold
mesh_coarsen
\series default
:
Allow mesh-coarsening
\end_layout
\begin_layout Itemize
\series bold
normalize_data
\series default
:
normalize the element values returned by the criterion between 0 and 1.
\end_layout
\begin_layout Itemize
\series bold
relative_size
\series default
:
Sets whether the size function is to be interpreted as a relative size function (i.e.
a scale function to the current element size),
or an absolute element size metric.
\end_layout
\begin_layout Itemize
\series bold
criterion
\series default
:
The metric used to assign values to elements.
(See section
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Mesh-Adaptor-Criteria"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
)
\end_layout
\begin_layout Itemize
\series bold
size_function
\series default
:
set the mesh size function.
This function is applied to the (optionally normalized) element values returned by the criterion.
\end_layout
\begin_layout Standard
\emph on
Example
\emph default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
hex_refined2d
\end_layout
\begin_layout Standard
The hex_refined2d adaptor refines elements in the XY plane.
(It assumes that the mesh consists of a single layer of hex elements,
aligned in the XY coordinate plane.) Elements are split by splitting each edge into 2.
This may result in a non-conforming mesh,
where an element node in the refined mesh lies on an edge in the parent mesh.
Such
\emph on
hanging nodes
\emph default
are constrained using linear constraints and are forced to remain in the same relative position as the parent edge.
This ensures that the refined mesh remains
\begin_inset Quotes eld
\end_inset
watertight
\begin_inset Quotes erd
\end_inset
.
\end_layout
\begin_layout Standard
The following parameters are available.
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
max_elem_refine
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The max number of elements to refine per refinement step.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
criterion
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The adaption criterion to use
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
max_value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Elements with criterion values above this threshold will be refined.
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsubsection
tet_refine
\end_layout
\begin_layout Standard
Applies a uniform refinement of a tetrahedral mesh.
\end_layout
\begin_layout Subsubsection
hex_refine
\end_layout
\begin_layout Standard
The hex_refined adaptor refines elements by splitting each edge into 2.
This may result in a non-conforming mesh,
where an element node in the refined mesh lies on an edge in the parent mesh.
Such
\emph on
hanging nodes
\emph default
are constrained using linear constraints and are forced to remain in the same relative position as the parent edge.
This ensures that the refined mesh remains
\begin_inset Quotes eld
\end_inset
watertight
\begin_inset Quotes erd
\end_inset
.
\end_layout
\begin_layout Standard
The following parameters are available.
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
max_elem_refine
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The max number of elements to refine per refinement step.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
criterion
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The adaption criterion to use
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
max_value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Elements with criterion values above this threshold will be refined.
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsection
Mesh Adaptor Criteria
\begin_inset CommandInset label
LatexCommand label
name "subsec:Mesh-Adaptor-Criteria"
\end_inset
\end_layout
\begin_layout Standard
The purpose of the mesh adaptor criteria is to assign values to elements.
Some adaptors also act as filters that limit the effect of the adaptor to certain elements.
These values will then be used by the mesh adaptor to modify the mesh.
How these values are used depends on the adaptor.
For instance,
the erosion uses it to decide which elements to erode.
The mesh refinement adaptors use it to define the size function.
\end_layout
\begin_layout Standard
The following criteria are currently available.
A detailed description of these adaptor criteria is given below.
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
max_variable
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Evaluates average of element’s nodal values of a model primary variable.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
element_selection
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Sets the element selection to which the adaptor should be applied (only for erosion)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
stress
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Evaluate the (integration point average) effective stress of each element.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
damage
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Evaluate the (integration point average) damage value.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
relative error
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Evaluate a relative error measure.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
spring force
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Evaluate the axial force of the spring.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
spring stretch
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Evaluate the stretch of a spring.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
math
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify the element value based on a mathematical expression.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
min-max filter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Selects elements whose value falls within a min-max range.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
contact gap
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Select elements that are in contact.
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsubsection
max_variable
\end_layout
\begin_layout Standard
The max_variable criterion evaluates elements based on a primary variable’s degrees of freedom.
\end_layout
\begin_layout Itemize
\series bold
dof
\series default
:
The degree of freedom that defines the variable to inspect.
\end_layout
\begin_layout Subsubsection
element_selection
\end_layout
\begin_layout Standard
Sets the selected elements directly.
\end_layout
\begin_layout Itemize
\series bold
element_list:
\series default
a comma-separated list of element indices.
\end_layout
\begin_layout Subsubsection
math
\end_layout
\begin_layout Standard
Sets the scale factor for each element.
\end_layout
\begin_layout Itemize
\series bold
scale
\series default
:
the scale factor to use.
This can be a constant,
or a mathematical expression of position (use X,
Y,
Z for the nodal coordinates),
or a scalar map defined in the MeshData section.
\end_layout
\begin_layout Standard
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1*(1 - (X^2+Y^2)) + (X^2+Y^2)*(0.5*(Z-1)^2 - Z*(Z - 2))
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
stress
\end_layout
\begin_layout Standard
This criterion selects elements that exceed a maximum stress value.
\end_layout
\begin_layout Itemize
\series bold
metric
\series default
:
The stress measure to use:
0=effective stress,
1=max principal stress.
\end_layout
\begin_layout Subsubsection
max_damage
\end_layout
\begin_layout Standard
This criterion evaluates the maximum damage value for each element.
This can only be used with materials that define the damage property.
\end_layout
\begin_layout Subsubsection
relative error
\end_layout
\begin_layout Standard
This criterion evaluates a relative error metric for each element.
\end_layout
\begin_layout Itemize
\series bold
error:
\series default
If nonzero,
this criterion will evaluate a relative size metric for each element.
Otherwise,
the actual relative error is evaluated.
\end_layout
\begin_layout Itemize
\series bold
data:
\series default
Specify the metric to evaluate the element values.
Any of the other criteria defined above can be used.
\end_layout
\begin_layout Subsubsection
min-max filter
\end_layout
\begin_layout Standard
This criterion evaluates a metric for each element,
but then filters out the elements that have values within a min-max range.
\end_layout
\begin_layout Itemize
\series bold
min
\series default
:
set the minimum value of the filter
\end_layout
\begin_layout Itemize
\series bold
max
\series default
:
set the maximum value of the filter
\end_layout
\begin_layout Itemize
\series bold
clamp
\series default
:
If true,
the element values will be clamped to the range.
\end_layout
\begin_layout Itemize
\series bold
data
\series default
:
Specify the metric to evaluate the element values.
Any of the other criteria defined above can be used.
\end_layout
\begin_layout Subsubsection
contact gap
\end_layout
\begin_layout Standard
This criterion evaluates the contact gap for all elements that are in contact.
\end_layout
\begin_layout Itemize
\series bold
gap
\series default
:
contact gap threshold value.
\end_layout
\begin_layout Subsection
Limitations
\end_layout
\begin_layout Standard
Please take into account the following limitations of the FEAMR framework.
\end_layout
\begin_layout Enumerate
Although contact can be used with the FEAMR framework,
currently no contact data is mapped from the old mesh to the new mesh.
It is advised to only use penalty-based contact interfaces.
\end_layout
\begin_layout Enumerate
It is not advised to erode elements that are in contact,
since this may not produce the correct result.
If you want to use erosion with contact,
make sure to set the
\emph on
erode_surfaces
\emph default
to an appropriate value.
\end_layout
\begin_layout Enumerate
Mapping history-data is supported (if the proper flag is set),
but can be very time consuming since FEBio maps all material point data between meshes.
\end_layout
\begin_layout Enumerate
The FEAMR framework does not work with the auto time-stepper.
It is advised to use fixed time stepping when using mesh adaptation.
\end_layout
\begin_layout Standard
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Initial Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Initial-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
Initial
\shape default
section defines all the initial conditions that may be applied to the analysis.
An initial condition allows users to set the initial values of solution variables (e.g.
velocity) as well as initialize the values of some special components.
\end_layout
\begin_layout Standard
An initial condition is defined via the
\shape italic
ic
\shape default
element and requires the
\shape italic
type
\shape default
attribute and
\shape italic
node_set
\shape default
attribute.
The
\emph on
type
\emph default
attribute defines the particular initial condition that will be applied.
The
\shape italic
node_set
\shape default
attribute defines the set of nodes that this initial condition affects.
This node set must be defined in the Mesh section of the input file.
Using implicit partitions (see section
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Implicit-Partitions"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
) surfaces,
element sets,
and part lists can also be assigned to the node_set attribute.
\end_layout
\begin_layout Standard
An optional name attribute can be defined to assign a unique name to the initial condition.
\end_layout
\begin_layout Standard
\emph on
Example
\emph default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_deeper
\begin_layout LyX-Code
1,0,0
\end_layout
\end_deeper
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
The init_dof Initial Condition
\end_layout
\begin_layout Standard
The
\emph on
init_dof
\emph default
initial condition can be used to initialize any degree of freedom of the model.
It supports the following parameters.
This feature is deprecated and it is better to use one of the specific initial conditions listed in the sections below.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
initial value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The degree of freedom identifier
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The value for the corresponding nodal degree of freedom
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_deeper
\begin_layout LyX-Code
vx
\end_layout
\begin_layout LyX-Code
1
\end_layout
\end_deeper
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
The displacement Initial Condition
\end_layout
\begin_layout Standard
The
\emph on
displacement
\emph default
initial condition can be used to set the initial displacement for a solid-mechanics analysis.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
initial value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The value for the initial displacement
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0,0,0
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
It should be noted that the initial displacement will be reflected in the plot file at time=0,
but not the stress.
However,
internally,
the stress at time=0 will be taken into account as the calculation is performed for subsequent times.
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0,0.0,0.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
The velocity Initial Condition
\end_layout
\begin_layout Standard
The
\emph on
velocity
\emph default
initial condition can be used to set the initial velocity for a dynamic solid-mechanics analysis.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
initial value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The value for the initial velocity
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0,0,0
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0,0.0,0.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
The shell velocity Initial Condition
\end_layout
\begin_layout Standard
The
\emph on
shell velocity
\emph default
initial condition can be used to set the initial velocity for the for the back-nodes of shells in a dynamic solid-mechanics analysis.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
initial value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The value for the initial velocity
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0,0,0
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0,0.0,0.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
The Initial Fluid Velocity Initial Condition
\end_layout
\begin_layout Standard
The
\emph on
initial fluid velocity
\emph default
initial condition can be used to set the initial velocity for a fluid mechanics analysis.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
initial value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The value for the initial fluid velocity
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0,0,0
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0,0.0,0.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Initial Fluid Dilatation
\end_layout
\begin_layout Standard
The
\begin_inset Quotes eld
\end_inset
\emph on
initial fluid dilatation
\emph default
\begin_inset Quotes erd
\end_inset
initial condition can be used to set the initial value of the fluid dilatation in a fluid analysis.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
initial value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The value for the initial fluid dilatation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1e-8
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
The Prestrain Initial Condition
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prestrain-Initial-Condition"
\end_inset
\end_layout
\begin_layout Standard
The prestrain initial condition can be used to accomplish one of two things.
It can be used to convert a forward analysis in an equivalent prestrain analysis.
Or it can be used to fix the prestrain gradient.
In either case the current geometry is used as the new reference geometry of the following analysis step.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
initial value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
init
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Initialize prestrain field
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1 (=true)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
reset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Make current geometry the reference geometry of the following steps
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1 (=true)
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The following example shows how a forward analysis can be converted to a prestrain analysis.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Note that this in itself may not be sufficient to define the equivalent prestrain analysis.
For instance,
if the forward model applied prescribed displacements,
then these boundary conditions must be replaced with fixed boundary conditions.
\end_layout
\begin_layout Standard
If the
\emph on
init
\emph default
parameter is set to 0 (false),
then the prestrain gradient will be fixated in the current geometry.
This means that any remaining distortion will be applied to the prestrain correction factor before the current geometry is converted to the new reference geometry.
\end_layout
\begin_layout Subsection
Fluid Pressure Initial Condition
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fluid-Pressure-IC"
\end_inset
\end_layout
\begin_layout Standard
The
\begin_inset Quotes eld
\end_inset
\emph on
initial fluid pressure
\emph default
\begin_inset Quotes erd
\end_inset
initial condition can be used in biphasic and multiphasic analyses,
and in fluid,
fluid-FSI,
and fluid-solutes analyses.
In all cases it sets the initial value of the effective fluid pressure
\begin_inset Formula $\tilde{p}$
\end_inset
.
If the analysis includes solutes (multiphasic or fluid-solutes),
it is the user's responsibility to evaluate
\begin_inset Formula $\tilde{p}$
\end_inset
using eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:mp-effective-p-c"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
knowing the values of the universal gas constant
\begin_inset Formula $R$
\end_inset
and absolute temperature
\begin_inset Formula $T$
\end_inset
specified in the Globals section (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Globals-Section"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
),
and the values of initial effective solute concentrations
\begin_inset Formula $\tilde{c}$
\end_inset
in the given multiphasic or fluid-solutes domain.
\end_layout
\begin_layout Standard
In biphasic and multiphasic analyses the value of
\begin_inset Formula $\tilde{p}$
\end_inset
is prescribed directly as a nodal degree of freedom.
In a fluid,
fluid-FSI,
or fluid-solutes analysis,
the effective fluid pressure
\begin_inset Formula $\tilde{p}$
\end_inset
is converted internally to the corresponding initial value of the fluid dilatation
\begin_inset Formula $e^{f}$
\end_inset
,
based on the constitutive models presented in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:fluid-pressure-state"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Subsection
Initial Shell Fluid Pressure
\end_layout
\begin_layout Standard
Similar to the
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Fluid-Pressure-IC"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
but applied to the back nodes of shell elements.
\end_layout
\begin_layout Subsection
Initial Concentration
\end_layout
\begin_layout Standard
The
\emph on
"initial concentration"
\emph default
initial condition sets the initial concentration values of solutes in a biphasic-solute or multiphasic analysis.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
initial value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The solute's degree of freedom
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
(none)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The value of the solute concentration
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsection
Initial Shell Concentration
\end_layout
\begin_layout Standard
The
\emph on
"initial shell concentration"
\emph default
initial condition sets the initial concentration values of solutes in a biphasic-solute or multiphasic analysis on the back nodes of a shell element.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
initial value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The solute's degree of freedom
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
(none)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The value of the solute concentration
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsection
Rigid Kinematics
\end_layout
\begin_layout Standard
The
\begin_inset Quotes eld
\end_inset
\emph on
rigid kinematics
\emph default
\begin_inset Quotes erd
\end_inset
initial condition sets the initial velocity of a rigid body from the following equation.
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\mathbf{v}_{0}=\mathbf{V}+\mathbf{\omega}\times\left(\mathbf{r_{0}}-\mathbf{c}\right)
\]
\end_inset
\end_layout
\begin_layout Standard
Here,
\begin_inset Formula $\mathbf{V}$
\end_inset
is the linear velocity,
\begin_inset Formula $\omega$
\end_inset
is the angular velocity,
\begin_inset Formula $\boldsymbol{\mathbf{r_{0}}}$
\end_inset
is the initial position of the rigid body,
and
\begin_inset Formula $\mathbf{c}$
\end_inset
is a position vector indicating the center of rotation.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
initial value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
velocity
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The velocity vector
\begin_inset Formula $\mathbf{V}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0,0,0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
angular_velocity
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The angular velocity vector
\begin_inset Formula $\omega$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0,0,0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
center_of_rotation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The center or rotation vector
\begin_inset Formula $\mathbf{c}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0,0,0
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Boundary Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Boundary-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
Boundary
\shape default
section defines all fixed and prescribed boundary conditions that may be applied to the model.
Individual boundary conditions are defined via the
\emph on
bc
\emph default
tag and the particular boundary condition is defined via the
\emph on
type
\emph default
attribute.
An optional
\emph on
name
\emph default
attribute can be added to uniquely name the boundary condition.
\end_layout
\begin_layout Standard
For example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
Most of these boundary conditions require the node set to which to apply the boundary condition to.
That nodeset can be defined via the
\emph on
node_set
\emph default
attribute.
The value of this attribute should be set to the name of a nodeset defined in the Mesh section.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:NodeSet-Section"
nolink "false"
\end_inset
for more information on how to define node sets.
Nodesets can also be defined via surfaces or element sets.
To define a node set via a surface,
use the following syntax.
\end_layout
\begin_layout LyX-Code
node_set="@surface:surface1"
\end_layout
\begin_layout Standard
Here,
\emph on
surface1
\emph default
is a surface defined in the
\emph on
Mesh
\emph default
section.
Similarly,
defining a node set via an element set is done using
\emph on
@elem_set:.
\emph default
See section
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Implicit-Partitions"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for more information on how to implicit partitions.
\end_layout
\begin_layout Subsection
Zero Displacement
\begin_inset CommandInset label
LatexCommand label
name "subsec:Zero-Displacement"
\end_inset
\end_layout
\begin_layout Standard
To fix the nodal displacement degrees of freedom (dof) use the
\shape italic
zero displacement
\shape default
boundary condition.
This element has two required attributes:
the
\emph on
type
\emph default
is set to
\begin_inset Quotes eld
\end_inset
zero displacement
\begin_inset Quotes erd
\end_inset
and the node set to which this boundary condition applies is defined via
\shape italic
node_set
\shape default
.
The optional
\emph on
name
\emph default
attribute can be used to give the boundary condition a name.
\end_layout
\begin_layout Standard
This boundary condition has three parameters,
one for each degree of freedom.
Set the value of each parameter to 1 to constrain the corresponding dof.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Zero Shell Displacement
\begin_inset CommandInset label
LatexCommand label
name "subsec:Zero-Shell-Displacement"
\end_inset
\end_layout
\begin_layout Standard
To fix the nodal back-displacement degrees of freedom (dof) of a shell use the
\shape italic
zero
\shape default
\emph on
shell displacement
\emph default
boundary condition.
This element has two required attributes:
the
\emph on
type
\emph default
is set to
\begin_inset Quotes eld
\end_inset
zero shell displacement
\begin_inset Quotes erd
\end_inset
and the node set to which this boundary condition applies is defined via
\shape italic
node_set
\shape default
.
The optional
\emph on
name
\emph default
attribute can be used to give the boundary condition a name.
\end_layout
\begin_layout Standard
This boundary condition has three parameters,
one for each degree of freedom.
Set the value of each parameter to 1 to constrain the corresponding dof.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
This boundary condition can only be applied to nodes that belong to shells.
\end_layout
\begin_layout Subsection
Zero Fluid Pressure
\begin_inset CommandInset label
LatexCommand label
name "subsec:Zero-Fluid-Pressure"
\end_inset
\end_layout
\begin_layout Standard
To fix the effective fluid pressure
\begin_inset Formula $\tilde{p}$
\end_inset
in a biphasic or multiphasic analysis,
use the
\emph on
zero fluid pressure
\emph default
boundary condition.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Zero Concentration
\begin_inset CommandInset label
LatexCommand label
name "subsec:Zero-Concentration"
\end_inset
\end_layout
\begin_layout Standard
To fix an effective solute concentration
\begin_inset Formula $\tilde{c}$
\end_inset
degree of freedom (c_dof) in a multiphasic or fluid-solutes analysis,
use the
\emph on
zero concentration
\emph default
boundary conditions.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
c1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Zero Fluid Dilatation
\begin_inset CommandInset label
LatexCommand label
name "subsec:Zero-Dilatation"
\end_inset
\end_layout
\begin_layout Standard
To fix the fluid dilatation
\begin_inset Formula $e^{f}$
\end_inset
in a fluid or fluid-FSI or fluid-solutes analysis,
use the
\emph on
zero fluid dilatation
\emph default
boundary condition.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Zero fluid dilatation is the same as setting the effective fluid pressure
\begin_inset Formula $\tilde{p}$
\end_inset
to zero in fluid analyses.
If you want to set the actual fluid pressure
\begin_inset Formula $p$
\end_inset
to some value (such as zero) in a fluid analysis,
use the
\emph on
fluid pressure
\emph default
boundary condition (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Fluid-Pressure-BC"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Subsection
Prescribed Displacement
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-Displacement"
\end_inset
\end_layout
\begin_layout Standard
The prescribed displacement boundary condition can be used to prescribe the value of the nodal displacement degrees of freedom.
This boundary condition takes the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The displacement dof to prescribe,
x,
y,
or z
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The prescribed value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
relative
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Flag that defines whether the value is absolute or relative (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments
\emph default
:
\end_layout
\begin_layout Enumerate
If the relative flag is set to 1,
then the value is relative with respect to the current position of the node at the time the boundary condition becomes active.
This only has an effect in multi-step analyses.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
x
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Although the
\shape italic
prescribe displacement
\shape default
element with a value of zero can also be used to fix a certain nodal degree of freedom,
the user should use the
\emph on
zero displacement
\emph default
boundary condition whenever possible,
since this option causes the equation corresponding to the constrained degree of freedom to be removed from the linear system of equations.
This results in fewer equations that need to be solved for and thus reduces the run time of the FE analysis.
\end_layout
\begin_layout Subsection
Prescribed Shell Displacement
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-Shell-Displacement"
\end_inset
\end_layout
\begin_layout Standard
The
\emph on
prescribed shell displacement
\emph default
boundary condition can be used to prescribe the value of the nodal back-displacement degrees of freedom of a shell.
This boundary condition takes the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The displacement dof to prescribe,
sx,
sy,
or sz
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The prescribed value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
relative
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Flag that defines whether the value is absolute or relative (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments
\emph default
:
\end_layout
\begin_layout Enumerate
If the relative flag is set to 1,
then the value is relative with respect to the current position of the node at the time the boundary condition becomes active.
This only has an effect in multi-step analyses.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
sx
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Although the
\shape italic
prescribe shell displacement
\shape default
element with a value of zero can also be used to fix a certain nodal degree of freedom,
the user should use the
\emph on
zero shell displacement
\emph default
boundary condition whenever possible,
since this option causes the equation corresponding to the constrained degree of freedom to be removed from the linear system of equations.
This results in fewer equations that need to be solved for and thus reduces the run time of the FE analysis.
\end_layout
\begin_layout Subsection
Prescribed Fluid Pressure
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-Fluid-Pressure"
\end_inset
\end_layout
\begin_layout Standard
The
\emph on
prescribed fluid pressure
\emph default
boundary condition can be used to prescribe the effective fluid pressure
\begin_inset Formula $\tilde{p}$
\end_inset
on the boundary of a biphasic or multiphasic material.
This boundary condition takes the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The prescribed value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
relative
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Flag that defines whether the value is absolute or relative (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments
\emph default
:
\end_layout
\begin_layout Enumerate
If the relative flag is set to 1,
then the value is relative with respect to the current position of the node at the time the boundary condition becomes active.
This only has an effect in multi-step analyses.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Although the
\shape italic
prescribed
\shape default
\emph on
fluid pressure
\shape italic
\emph default
\shape default
element with a value of zero can also be used to fix the effective fluid pressure,
the user should use the
\emph on
zero fluid pressure
\emph default
boundary condition whenever possible,
since this option causes the equation corresponding to that degree of freedom to be removed from the linear system of equations.
This results in fewer equations that need to be solved for and thus reduces the run time of the FE analysis.
\end_layout
\begin_layout Subsection
Prescribed Concentration
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-Concentration"
\end_inset
\end_layout
\begin_layout Standard
The
\emph on
prescribed concentration
\emph default
boundary condition can be used to prescribe the value of the effective solute concentration
\begin_inset Formula $\tilde{c}$
\end_inset
in a multiphasic or fluid-solutes analysis.
This boundary condition takes the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The solute concentration dof to prescribe,
c1,
c2,
etc.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The prescribed value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
relative
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Flag that defines whether the value is absolute or relative (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments
\emph default
:
\end_layout
\begin_layout Enumerate
If the relative flag is set to 1,
then the value is relative with respect to the current effective solute concentration at the time the boundary condition becomes active.
This only has an effect in multi-step analyses.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
c1
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Although the
\shape italic
prescribed concentration
\shape default
element with a value of zero can also be used to fix that degree of freedom,
the user should use the
\emph on
zero concentration
\emph default
boundary condition whenever possible,
since this option causes the equation corresponding to the constrained degree of freedom to be removed from the linear system of equations.
This results in fewer equations that need to be solved for and thus reduces the run time of the FE analysis.
\end_layout
\begin_layout Subsection
Prescribed Deformation
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-Deformation"
\end_inset
\end_layout
\begin_layout Standard
The
\emph on
prescribed deformation
\emph default
boundary condition can be used to prescribe the displacement of a node using the following equation.
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\boldsymbol{u}=s\left(\boldsymbol{F}-\boldsymbol{I}\right)\boldsymbol{X}
\]
\end_inset
\end_layout
\begin_layout Standard
Here,
\begin_inset Formula $\boldsymbol{u}$
\end_inset
is the displacement vector,
\begin_inset Formula $\boldsymbol{X}$
\end_inset
the reference position vector,
\begin_inset Formula $\boldsymbol{F}$
\end_inset
a
\begin_inset Quotes eld
\end_inset
deformation gradient
\begin_inset Quotes erd
\end_inset
,
\begin_inset Formula $\boldsymbol{I}$
\end_inset
the identity tensor,
and
\begin_inset Formula $s$
\end_inset
a scale factor.
\end_layout
\begin_layout Standard
The following parameters are defined.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
scale
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The scale factor
\begin_inset Formula $s$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
F
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The deformation gradient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\boldsymbol{I}$
\end_inset
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
2,0,0,
0,2,0,
0,0.25,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Prescribed Fluid Dilatation
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-Fluid-Dilatation"
\end_inset
\end_layout
\begin_layout Standard
The
\emph on
prescribed fluid dilatation
\emph default
boundary condition can be used to prescribe the fluid dilatation
\begin_inset Formula $e^{f}$
\end_inset
on the boundary of a fluid,
fluid-FSI or fluid-solutes material.
This boundary condition takes the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The prescribed value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
relative
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Flag that defines whether the value is absolute or relative (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments
\emph default
:
\end_layout
\begin_layout Enumerate
If the relative flag is set to 1,
then the value is relative with respect to the current position of the node at the time the boundary condition becomes active.
This only has an effect in multi-step analyses.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
-1e-8
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Although the
\shape italic
prescribed
\shape default
\emph on
fluid dilatation
\shape italic
\emph default
\shape default
element with a value of zero can also be used to fix the effective fluid pressure,
the user should use the
\emph on
zero fluid dilatation
\emph default
boundary condition whenever possible,
since this option causes the equation corresponding to that degree of freedom to be removed from the linear system of equations.
This results in fewer equations that need to be solved for and thus reduces the run time of the FE analysis.
\end_layout
\begin_layout Subsection
Prescribed Fluid Velocity
\end_layout
\begin_layout Standard
The
\begin_inset Quotes eld
\end_inset
\emph on
prescribed fluid velocity
\emph default
\begin_inset Quotes erd
\end_inset
boundary condition can be used to to prescribe the fluid velocity on the boundary of a fluid domain.
This boundary condition takes the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The degree of freedom to prescribe
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
(none)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The prescribed values
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
relative
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
If set,
the value is relative to the value at the last analysis step
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsection
Prescribed Shell Fluid Pressure
\end_layout
\begin_layout Standard
The
\begin_inset Quotes eld
\end_inset
\emph on
prescribed shell fluid pressure
\emph default
\begin_inset Quotes erd
\end_inset
boundary condition can be used to prescribe the fluid pressure on the back nodes of a shell element in a biphasic or multiphasic analysis.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The prescribed values
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
relative
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
If set,
the value is relative to the value at the last analysis step
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsection
Normal Displacement
\begin_inset CommandInset label
LatexCommand label
name "subsec:Normal-Displacement"
\end_inset
\end_layout
\begin_layout Standard
The
\emph on
normal displacement
\emph default
boundary condition prescribes the displacement of a node along the normal vector to the surface on which the node lies.
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\boldsymbol{u}=s\boldsymbol{N}
\]
\end_inset
\end_layout
\begin_layout Standard
Here,
\begin_inset Formula $\boldsymbol{u}$
\end_inset
is the displacement vector,
\begin_inset Formula $\boldsymbol{N}$
\end_inset
is the normal to the surface in the reference configuration,
and
\begin_inset Formula $s$
\end_inset
is a scale factor.
\end_layout
\begin_layout Standard
Note that this boundary condition requires a
\emph on
surface
\emph default
attribute,
instead of the
\emph on
node_set
\emph default
attribute.
The following parameters are defined.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
scale
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The scale factor
\begin_inset Formula $s$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
surface_hint
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Flag indicating the type of surface (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
The
\emph on
surface_hint
\emph default
parameter indicates the shape of the surface.
Set this value to 1 if the surface is spherical.
This will calculate a more accurate normal vector.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Rigid Deformation
\begin_inset CommandInset label
LatexCommand label
name "subsec:Rigid-Deformation"
\end_inset
\end_layout
\begin_layout Standard
The
\emph on
rigid deformation
\emph default
boundary condition can be used to prescribe the motion of a nodeset via a rigid transformation.
The displacement is given by the following equation.
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\boldsymbol{u}=\boldsymbol{Q}\left(\boldsymbol{X}-\boldsymbol{r}_{0}\right)+\boldsymbol{r}_{t}-\boldsymbol{X}
\]
\end_inset
\end_layout
\begin_layout Standard
Here,
\begin_inset Formula $\boldsymbol{u}$
\end_inset
is the displacement vector,
\begin_inset Formula $\boldsymbol{Q}$
\end_inset
is a rotation tensor,
\begin_inset Formula $\boldsymbol{X}$
\end_inset
is the initial position of the node,
and
\begin_inset Formula $\boldsymbol{r}_{0}$
\end_inset
and
\begin_inset Formula $\boldsymbol{r}_{t}$
\end_inset
are the reference and current position respectively of the rigid coordinate system.
The following parameters are defined.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
pos
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Position vector of the rigid coordinate system
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
{0,0,0}
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
rot
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Rotation vector of the rigid coordinate system (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
{0,0,0}
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
The rotation of the rigid coordinate system is given by a rotation vector.
The direction of this vector defines the (instantaneous) axis or rotation,
and the magnitude is the rotation angle (in radians) around this axis.
\end_layout
\begin_layout Subsection
Rigid
\begin_inset CommandInset label
LatexCommand label
name "subsec:Rigid"
\end_inset
\end_layout
\begin_layout Standard
A node set can be attached to a rigid body using the
\shape italic
rigid
\shape default
boundary condition.
Rigid nodes are not assigned degrees of freedom.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\shape italic
rb
\shape default
parameter defines the material (which must be a
\begin_inset Quotes eld
\end_inset
rigid body
\begin_inset Quotes erd
\end_inset
material) that in turn defines the rigid body.
The node set must be defined in the
\emph on
Mesh
\shape italic
\emph default
\shape default
section.
\end_layout
\begin_layout Subsection
Multiphasic Fluid Pressure
\begin_inset CommandInset label
LatexCommand label
name "subsec:Multiphasic-Fluid-Pressure"
\end_inset
\end_layout
\begin_layout Standard
In a multiphasic mixture the nodal degree of freedom for fluid pressure represents the effective fluid pressure
\begin_inset Formula $\tilde{p}$
\end_inset
,
which is related to the actual fluid pressure
\begin_inset Formula $p$
\end_inset
according to eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:mp-effective-p-c"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
One may assign the value of
\begin_inset Formula $p$
\end_inset
directly on a boundary,
by using the
\emph on
actual fluid pressure
\emph default
boundary condition.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
This surface load evaluates
\begin_inset Formula $p$
\end_inset
from nodal values of
\begin_inset Formula $\tilde{p}$
\end_inset
on the surface,
and using the average values of
\begin_inset Formula $\Phi$
\end_inset
and
\begin_inset Formula $c^{\alpha}$
\end_inset
at the integration points of the underlying element.
This surface load is particularly useful when the effective solute concentrations
\begin_inset Formula $\tilde{c}^{\alpha}$
\end_inset
are not prescribed as boundary conditions on that surface,
but evolve with the analysis solution.
the
\emph on
shell_bottom
\emph default
boolean flag (0=false,
1=true) should be set to true when prescribing this pressure on the bottom of a multiphasic shell domain.
\end_layout
\begin_layout Subsection
Fluid Pressure
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fluid-Pressure-BC"
\end_inset
\end_layout
\begin_layout Standard
To set the actual fluid pressure
\begin_inset Formula $p$
\end_inset
in a fluid,
fluid-FSI,
or fluid-solutes analysis,
use the
\emph on
fluid pressure
\emph default
boundary condition.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
100
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The optional
\shape italic
lc
\shape default
parameter associates a load curve (a user-defined scale factor that evolves with time) which multiplies the value of .
The surface must be defined in the
\emph on
Mesh
\shape italic
\emph default
\shape default
section.
For a biphasic analysis the actual fluid pressure is equal to the effective fluid pressure (
\begin_inset Formula $p=\tilde{p}$
\end_inset
),
in which case use
\emph on
prescribed fluid pressure
\emph default
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Prescribed-Fluid-Pressure"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Subsection
Fluid Resistance
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fluid-Resistance"
\end_inset
\end_layout
\begin_layout Standard
In a fluid,
fluid-FSI or fluid-solutes analysis,
this boundary condition prescribes an elastic pressure
\begin_inset Formula $p=R\,q+p_{d}$
\end_inset
on a surface,
where
\begin_inset Formula $R$
\end_inset
is the flow resistance and
\begin_inset Formula $q$
\end_inset
is the volumetric flow rate across the surface (calculated internally);
\begin_inset Formula $p_{d}$
\end_inset
is an optional offset pressure.
The pressure
\begin_inset Formula $p$
\end_inset
is converted to a dilatation and prescribed as an essential boundary condition at the nodes of the facets.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
7.93e+07
\end_layout
\begin_layout LyX-Code
10640
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Fluid RC
\end_layout
\begin_layout Standard
This boundary condition models a fluid surface that has an RC-equivalent circuit for outflow conditions.
\end_layout
\begin_layout Subsection
Fluid RCR
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fluid-RCR"
\end_inset
\end_layout
\begin_layout Standard
This boundary condition models a three-element Windkessel outflow condition on a surface in a fluid,
fluid-FSI or fluid-solutes analysis,
as described in
\begin_inset CommandInset citation
LatexCommand citep
key "Vignon-Clementel06"
literal "false"
\end_inset
.
It prescribes an elastic pressure
\begin_inset Formula $p$
\end_inset
on a surface,
which satisfies the ordinary differential equation
\begin_inset Formula
\[
p+\tau\frac{dp}{dt}=\left(R_{d}+R\right)q+R\tau\frac{dq}{dt}+p_{d}+\tau\frac{dp_{d}}{dt},\quad\tau=R_{d}C
\]
\end_inset
where
\begin_inset Formula $R$
\end_inset
is the upstream flow resistance (series resistance),
\begin_inset Formula $R_{d}$
\end_inset
is the downstream flow resistance and
\begin_inset Formula $C$
\end_inset
is the downstream flow capacitance (parallel
\begin_inset Formula $R_{d}C$
\end_inset
element downstream of
\begin_inset Formula $R$
\end_inset
),
whereas
\begin_inset Formula $q$
\end_inset
is the volumetric flow rate across the surface (calculated internally);
\begin_inset Formula $p_{d}$
\end_inset
is an optional downstream offset pressure,
which may be associated with a loadcurve to produce a function of time.
The actual pressure
\begin_inset Formula $p$
\end_inset
obtained by solving this differential equation is converted to a dilatation and prescribed as an essential boundary condition at the nodes of the facets.
Since the pressure is the solution of an ordinary differential equation,
the user may also optionally specify the initial condition for the pressure.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
By setting
\begin_inset Formula $C=0$
\end_inset
we recover the fluid resistance surface load described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Fluid-Resistance"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
with flow resistance equal to
\begin_inset Formula $R_{d}+R$
\end_inset
.
By setting
\begin_inset Formula $R$
\end_inset
to zero we can have simulate a parallel
\begin_inset Formula $R_{d}C$
\end_inset
circuit.
\end_layout
\begin_layout Standard
Internally,
the ordinary differential equation presented above is solved numerically using a standard finite difference scheme,
\begin_inset Formula
\[
p_{n+1}=\left(\frac{R_{d}}{1+\frac{\tau}{\Delta t}}+R\right)q_{n+1}+\frac{\tau}{\Delta t+\tau}\left(p_{n}-p_{d,n}-Rq_{n}\right)+p_{d,n+1}
\]
\end_inset
where
\begin_inset Formula $f_{n+1}$
\end_inset
is the value of any function
\begin_inset Formula $f\left(t\right)$
\end_inset
at the current time step
\begin_inset Formula $t_{n+1}$
\end_inset
,
\begin_inset Formula $f_{n}$
\end_inset
is its value at the previous time step
\begin_inset Formula $t_{n}$
\end_inset
,
and
\begin_inset Formula $\Delta t=t_{n+1}-t_{n}$
\end_inset
is the time increment.
\end_layout
\begin_layout Subsection
Linear Constraints
\end_layout
\begin_layout Standard
A linear constraint can be used to couple nodal degrees of freedom.
The linear constraint has one dependent degree of freedom
\begin_inset Formula $u^{*}$
\end_inset
,
and several independent degrees of freedom
\begin_inset Formula $u_{i}$
\end_inset
.
The linear constraint is defined as follows:
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
u^{*}=c_{0}+c_{1}u_{1}+\ldots+c_{n}u_{n}
\]
\end_inset
\end_layout
\begin_layout Standard
Here,
the
\begin_inset Formula $c_{i}$
\end_inset
are user-specified scale factors and
\begin_inset Formula $c_{0}$
\end_inset
can be used to specified an offset.
\end_layout
\begin_layout Standard
The dependent degree of freedom
\begin_inset Formula $u^{*}$
\end_inset
will be removed from the linear system of equations.
Consequently,
this nodal degree of freedom should not be used in any other boundary condition.
\end_layout
\begin_layout Standard
To define a linear constraint,
set the
\emph on
type
\emph default
attribute to
\emph on
linear constraint
\emph default
.
The dependent degree of freedom,
i.e.
the dof that will be removed,
is specified via a node number and a dof identifier.
Each child dof is defined via the
\emph on
child_dof
\emph default
tag and similarly requires the corresponding node and dof identifier,
as well as the value parameter.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
x
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
8
\end_layout
\begin_layout LyX-Code
x
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
9
\end_layout
\begin_layout LyX-Code
x
\end_layout
\begin_layout LyX-Code
-1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Matching OSM Coefficient
\end_layout
\begin_layout Standard
The
\begin_inset Quotes eld
\end_inset
matching_osm_coef
\begin_inset Quotes erd
\end_inset
boundary condition is a surface boundary condition that imposes the same osmotic coefficient in the bath as in the multiphasic material bounded by that surface.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1e-3
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Rigid Section
\end_layout
\begin_layout Standard
The
\emph on
Rigid
\emph default
section is used to define all rigid constraints,
rigid body initial kinematics,
and rigid connectors.
The motion of a point
\begin_inset Formula $\mathbf{x}$
\end_inset
connected to a rigid body is given by
\begin_inset Formula
\begin{equation}
\mathbf{x}=\mathbf{r}\left(t\right)+\mathbf{R}\left(t\right)\cdot\mathbf{Z}=\mathbf{r}\left(t\right)+\mathbf{z}\left(t\right)\label{eq:rbm-position}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{r}\left(t\right)$
\end_inset
is the position of the rigid body center of mass and
\begin_inset Formula $\mathbf{R}\left(t\right)$
\end_inset
is the body's (proper orthogonal) rotation tensor,
which satisfies
\begin_inset Formula $\mathbf{R}\left(t_{0}\right)=\mathbf{I}$
\end_inset
at the initial time
\begin_inset Formula $t_{0}$
\end_inset
;
here,
\begin_inset Formula $\mathbf{z}\left(t\right)=\mathbf{R}\left(t\right)\cdot\mathbf{Z}$
\end_inset
is the position vector of the point relative to the body's center of mass,
and
\begin_inset Formula $\mathbf{X}=\mathbf{r}\left(t_{0}\right)+\mathbf{Z}$
\end_inset
is the initial position.
In FEBio,
the rotation is evaluated as
\begin_inset Formula $\mathbf{R}\left(t\right)=\exp\left[\boldsymbol{\xi}\left(t\right)\right]$
\end_inset
,
where
\begin_inset Formula $\boldsymbol{\xi}\left(t\right)$
\end_inset
is the material rotation of the rigid body from its reference configuration.
In practice,
\begin_inset Formula $\boldsymbol{\xi}$
\end_inset
is stored as a quaternion to facilitate the multiplication of rotation tensors.
The exponential map
\begin_inset Formula $\exp\left[\boldsymbol{\xi}\left(t\right)\right]$
\end_inset
is given in full form as
\begin_inset Formula
\begin{equation}
\mathbf{R}\left(t\right)=\exp\left[\boldsymbol{\xi}\left(t\right)\right]=\cos\xi\,\mathbf{I}-\sin\xi\,\boldsymbol{\mathcal{E}}\cdot\mathbf{n}+\left(1-\cos\xi\right)\mathbf{n}\otimes\mathbf{n}\label{eq:rbr-rotation-tensor}
\end{equation}
\end_inset
where
\begin_inset Formula $\boldsymbol{\mathcal{E}}$
\end_inset
is the third-order permutation pseudo-tensor with rectangular components
\begin_inset Formula $\varepsilon_{ijk}$
\end_inset
(permutation symbol).
Here,
\begin_inset Formula $\mathbf{n}$
\end_inset
is the unit vector along the axis of rotation and
\begin_inset Formula $\xi$
\end_inset
is the angle of rotation about
\begin_inset Formula $\mathbf{n}$
\end_inset
,
such that
\begin_inset Formula $\boldsymbol{\xi}=\xi\mathbf{n}$
\end_inset
.
Both
\begin_inset Formula $\xi$
\end_inset
and
\begin_inset Formula $\mathbf{n}$
\end_inset
may evolve over time.
Either none or all the components of
\begin_inset Formula $\boldsymbol{\xi}\left(t\right)$
\end_inset
must be prescribed (or fixed) for a rigid body.
\end_layout
\begin_layout Standard
The Rigid section can contain the following subsections.
\end_layout
\begin_layout Description
rigid_bc Define a rigid constraint.
\end_layout
\begin_layout Description
rigid_ic Define a rigid initial condition.
\end_layout
\begin_layout Description
rigid_load Define a load on a rigid body.
\end_layout
\begin_layout Description
rigid_connector Define a connection or joint between two rigid bodies.
\end_layout
\begin_layout Subsection
Rigid Constraints
\begin_inset CommandInset label
LatexCommand label
name "subsec:Rigid-Constraints"
\end_inset
\end_layout
\begin_layout Standard
The rigid constraints section allows users to prescribe the kinematics applied to a single rigid body.
A rigid constraint is added using the
\emph on
rigid_bc
\emph default
tag in the
\emph on
Rigid
\emph default
parent tag.
The particular constraint is defined via the
\emph on
type
\emph default
attribute.
An optional
\emph on
name
\emph default
attribute can be added to uniquely name the constraint.
\end_layout
\begin_layout Subsubsection
Rigid_fixed Constraint
\end_layout
\begin_layout Standard
The
\emph on
rigid_fixed
\emph default
constraint fixes one or multiple rigid degrees of freedom.
It requires the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameters
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rb
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rigid material name (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
Rx_dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fix x-displacement degree of freedom
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
Ry_dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fix y-displacement degree of freedom
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
Rz_dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fix z-displacement degree of freedom
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
Ru_dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fix x-rotational degree of freedom
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
Rv_dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fix y-rotational degree of freedom
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
Rw_dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fix z-rotational degree of freedom
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
The name of the rigid material is defined in the Material section.
The referenced material must be a
\begin_inset Quotes eld
\end_inset
rigid body
\begin_inset Quotes erd
\end_inset
material.
\end_layout
\begin_layout Standard
The following example fixes the displacement degrees of freedom.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
RigidMaterial1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid_displacement Constraint
\end_layout
\begin_layout Standard
The
\emph on
rigid_displacement
\emph default
constraint prescribes the value of a rigid displacement degree of freedom.
It requires the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameters
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rb
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rigid body's material name (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rigid degree of freedom to prescribe.
(2)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The prescribed value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
relative
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Defines the value as relative or absolute.
(3)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
This is the name attribute assigned to the corresponding rigid body material as defined in the Material section.
\end_layout
\begin_layout Enumerate
The values allowed for the
\emph on
dof
\emph default
parameter are:
x,
y,
or z.
\end_layout
\begin_layout Enumerate
If the relative flag is set,
the value is taken relative to the dof value at the start of the step.
\end_layout
\begin_layout Standard
The following example prescribes the x-displacement degree of freedom.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
rigid
\end_layout
\begin_layout LyX-Code
x
\end_layout
\begin_layout LyX-Code
3.14
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid_rotation Constraint
\end_layout
\begin_layout Standard
The
\emph on
rigid_rotation
\emph default
constraint prescribes the value of a rigid rotational degree of freedom.
It requires the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameters
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rb
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rigid body's material name (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rigid degree of freedom to prescribe.
(2)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The prescribed value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
relative
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Defines the value as relative or absolute.
(3)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
This is the name attribute assigned to the corresponding rigid body material as defined in the Material section.
\end_layout
\begin_layout Enumerate
The values allowed for the
\emph on
dof
\emph default
parameter are:
Ru,
Rv,
or Rw.
\end_layout
\begin_layout Enumerate
If the relative flag is set,
the value is taken relative to the dof value at the start of the step.
\end_layout
\begin_layout Standard
The following example prescribes a rotation around the x-axis.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
rigid
\end_layout
\begin_layout LyX-Code
Ru
\end_layout
\begin_layout LyX-Code
3.14
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid_rotation_vector Constraint
\end_layout
\begin_layout Standard
The
\emph on
rigid_rotation_vector
\emph default
constraint allows the user to prescribe the rotation of a rigid body using a rotation vector.
In essence,
this combines the effect of using three separate rigid rotation constraints,
one for each component of the rotation vector,
and thus might be a more convenient choice if the rotation of the rigid body is fully prescribed.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameters
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rb
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rigid body's material name (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
vx
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
x-component of the rotation vector
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
vy
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
y-component of the rotation vector
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
vz
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
z-component of the rotation vector
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
This is the name attribute assigned to the corresponding rigid body material as defined in the Material section.
\end_layout
\begin_layout Standard
The following example prescribes a rotation around the z-axis using a load controller.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
rigid
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
3.14
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid_euler_angles Constraint
\end_layout
\begin_layout Standard
The
\emph on
rigid_euler_angles
\emph default
constraint allows the user to prescribe the rotation of a rigid body using three Euler angles.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameters
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rb
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rigid body's material name (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
Ex
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
X Euler angle (degrees)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
Ey
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Y Euler angle (degrees)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
Ez
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Z Euler angle (degrees)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
This is the name attribute assigned to the corresponding rigid body material as defined in the Material section.
\end_layout
\begin_layout Standard
The following example prescribes a rotation around the z-axis using a load controller.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
rigid
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
180.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Rigid Initial Conditions
\end_layout
\begin_layout Standard
The
\emph on
rigid_ic
\emph default
section defines the initial conditions on rigid bodies.
Rigid initial conditions can be used to set the initial values for the rigid body's linear and angular velocity.
The particular initial condition is selected using the
\emph on
type
\emph default
attribute.
\end_layout
\begin_layout Subsubsection
Initial Rigid Velocity
\end_layout
\begin_layout Standard
In dynamic analysis,
the initial velocity of a rigid body can be set via the
\emph on
initial_rigid_velocity
\emph default
rigid constraint.
It requires the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameters
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rb
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rigid body's material name (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The initial velocity vector
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
This is the
\begin_inset Quotes eld
\end_inset
name
\begin_inset Quotes erd
\end_inset
attribute assigned to the corresponding rigid body material as defined in the Material section.
\end_layout
\begin_layout Standard
The following example defines an initial velocity for a rigid body.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
rigid
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Initial Rigid Angular Velocity
\end_layout
\begin_layout Standard
In dynamic analysis,
the initial angular velocity of a rigid body can be set via the
\emph on
initial_rigid_angular_velocity
\emph default
rigid constraint.
It requires the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameters
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rb
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rigid body's material name.
(1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The initial angular velocity vector
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
This is the
\begin_inset Quotes eld
\end_inset
name
\begin_inset Quotes erd
\end_inset
attribute assigned to the corresponding rigid body material as defined in the Material section.
\end_layout
\begin_layout Standard
The following example defines an initial angular velocity for a rigid body.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
rigid
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Rigid Loads
\end_layout
\begin_layout Standard
The
\emph on
rigid_load
\emph default
section can be used to applied loads to a rigid body.
\end_layout
\begin_layout Subsubsection
Rigid_force Load
\end_layout
\begin_layout Standard
The
\emph on
rigid_force
\emph default
load applies a load directly to the rigid degree of freedom.
It requires the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameters
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rb
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rigid body's material name (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rigid degree of freedom to prescribe.
(2)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The prescribed force value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
load_type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Defines the type of load.
(3)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
This is the
\begin_inset Quotes eld
\end_inset
name
\begin_inset Quotes erd
\end_inset
attribute assigned to the corresponding rigid body material as defined in the Material section.
\end_layout
\begin_layout Enumerate
The values allowed for the
\emph on
dof
\emph default
parameter are:
Rx,
Ry,
Rz.
\end_layout
\begin_layout Enumerate
The load_type allows the following values:
\end_layout
\begin_deeper
\begin_layout Enumerate
0 = a load (force/moment) is applied directly to the degree of freedom.
\end_layout
\begin_layout Enumerate
1 = a follower load applied is applied to the rigid body.
The load is applied in the rigid body's coordinate system,
so it rotates with the rigid body.
This only works for Rx,
Ry,
Rz.
\end_layout
\begin_layout Enumerate
2 = target load.
The load's value is ramped up from its initial value at the start of the step,
and ramped up linearly to the value specified in the
\emph on
value
\emph default
parameter.
\end_layout
\end_deeper
\begin_layout Standard
The following example applies a force in the x-direction.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
Rx
\end_layout
\begin_layout LyX-Code
3.14
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid_moment Load
\end_layout
\begin_layout Standard
The
\emph on
rigid_moment
\emph default
load applies a moment about a particular coordinate axis.
It requires the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameters
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rb
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rigid body's material name (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
dof
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rigid degree of freedom to prescribe.
(2)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The prescribed moment value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
relative
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Defines the type of load.
(3)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
This is the
\begin_inset Quotes eld
\end_inset
name
\begin_inset Quotes erd
\end_inset
attribute assigned to the corresponding rigid body material as defined in the Material section.
\end_layout
\begin_layout Enumerate
The values allowed for the
\emph on
dof
\emph default
parameter are:
Ru,
Rv,
Rw.
\end_layout
\begin_layout Enumerate
The relative flag indicates whether the applied value should be absolute or relative to the value at the end of the previous analysis step.
\end_layout
\begin_layout Standard
The following example applies a moment about the x-axis.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
rigid
\end_layout
\begin_layout LyX-Code
Ru
\end_layout
\begin_layout LyX-Code
3.14
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid_follower_force Load
\end_layout
\begin_layout Standard
The
\emph on
rigid_follower_force
\emph default
load applies a force in the local rigid body coordinate system.
The direction of the force in global coordinates therefore depends on orientation of the rigid body.
It requires the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameters
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rb
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rigid body's material name (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
insertion
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Location where the force is applied.
(2)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
force
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The vector force value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
relative
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Relative flag (3)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
This is the
\begin_inset Quotes eld
\end_inset
name
\begin_inset Quotes erd
\end_inset
attribute assigned to the corresponding rigid body material as defined in the Material section.
\end_layout
\begin_layout Enumerate
This is the position in the reference coordinate system of the point where the force is applied.
\end_layout
\begin_layout Enumerate
The relative flag indicates whether the applied value should be absolute or relative to the value at the end of the previous analysis step.
\end_layout
\begin_layout Standard
The following example applies a moment about the x-axis.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
rigid
\end_layout
\begin_layout LyX-Code
1,2,3
\end_layout
\begin_layout LyX-Code
100,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid_follower_moment Load
\end_layout
\begin_layout Standard
The
\emph on
rigid_follower_
\emph default
moment load applies a moment in the local rigid body coordinate system.
The direction of the moment in global coordinates therefore depends on orientation of the rigid body.
It requires the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameters
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rb
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rigid body's material name (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
moment
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The vector moment value
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
This is the
\begin_inset Quotes eld
\end_inset
name
\begin_inset Quotes erd
\end_inset
attribute assigned to the corresponding rigid body material as defined in the Material section.
\end_layout
\begin_layout Standard
The following example applies a moment about the x-axis.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
rigid
\end_layout
\begin_layout LyX-Code
100,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid_cable Load
\end_layout
\begin_layout Standard
The
\emph on
rigid_cable
\emph default
load emulates the effect of a force applied on one end of a cable that is connected to one or more rigid bodies.
It requires the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameters
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
force
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The scalar force magnitude
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
force_direction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The unit vector defining the force direction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0,0,0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
relative
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Indicates whether the through-points are defined in global or relative coordinates (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rigid_cable_point
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A point on a rigid body that the cable runs through.
(2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
(none)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
The
\emph on
relative
\emph default
flag indicates whether the location of the cable's via-points are defined in global coordinates (relative=0) or in the local coordinates of the corresponding rigid body (relative=1).
\end_layout
\begin_layout Enumerate
One or more rigid cable points must be defined that define the points that the cable runs through.
The first point defined is the anchor,
where the cable is attached to.
The other points define the via points,
i.e.
a point where the cable runs through.
Each cable point is defined by the rigid body that it connects to and a point on the rigid body that the cable runs through.
The point's coordinates are either in the global or the local coordinate system of the rigid body,
as determined by the
\emph on
relative
\emph default
flag.
\end_layout
\begin_layout Standard
The following example illustrates a rigid cable setup.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
100
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
rigid1
\end_layout
\begin_layout LyX-Code
0,
-1,
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
rigid2
\end_layout
\begin_layout LyX-Code
0,
1,
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Rigid Connectors
\begin_inset CommandInset label
LatexCommand label
name "subsec:Rigid-Connectors"
\end_inset
\end_layout
\begin_layout Standard
The rigid connector section allows users to define different type of connections between two rigid bodies.
The specific connector is defined via the
\emph on
type
\emph default
attribute.
\end_layout
\begin_layout Standard
The rigid connectors fall into two categories.
The first category define different joints that constrain the relative motion of one rigid body with respect to the second one.
\end_layout
\begin_layout Standard
Rigid joints produce nonlinear constraints between rigid bodies,
which prevent relative motion except along the degrees of freedom of the joint.
The term 'rigid' refers to the bodies,
not to the joints.
Each rigid joint needs to define two rigid bodies (
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $b)$
\end_inset
,
a joint origin common to both bodies,
and a set of axes that determine the relative orientation of the joint degrees of freedom.
These axes define orthonormal basis vectors
\begin_inset Formula $\left\{ \mathbf{e}_{1}^{a},\mathbf{e}_{2}^{a},\mathbf{e}_{3}^{a}\right\} $
\end_inset
and
\begin_inset Formula $\left\{ \mathbf{e}_{1}^{b},\mathbf{e}_{2}^{b},\mathbf{e}_{3}^{b}\right\} $
\end_inset
on each rigid body,
with both bases being coincident,
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
,
at the start of the analysis,
and given in world coordinates.
\end_layout
\begin_layout Standard
The rigid joint nonlinear constraints produce reaction forces and moments that are enforced with penalty parameters and Lagrange multipliers.
The penalty parameters,
\emph on
force_penalty
\emph default
and
\emph on
moment_penalty
\emph default
,
may be conceptualized as stiffnesses of linear/torsional springs that prevent relative translations/rotations of the rigid bodies along degrees of freedom that must remain constrained for that joint.
The penalty values should be selected based on a rough estimation of the maximum reactions forces and moments acting at these joints,
divided by the maximum amount of linear/angular separation that your analysis can tolerate for that joint.
Alternatively,
set the
\emph on
force_penalty
\emph default
and
\emph on
moment_penalty
\emph default
parameters to 1 and turn on the
\emph on
auto_penalty
\emph default
;
this setting will automatically adjust the
\emph on
force_penalty
\emph default
and
\emph on
moment_penalty
\emph default
to an appropriate value.
\end_layout
\begin_layout Standard
The augmented Lagrangian method is used by default,
where the joint reaction force and moment are treated as Lagrange multipliers,
augmented at each time step by the product of the force/moment penalty parameter and the linear/angular gap.
Use the parameter
\emph on
maxaug
\emph default
to control the maximum allowable number of augmentations at each time step (
\emph on
maxaug
\emph default
=0 produces the penalty method);
use a non-zero value for the parameter
\emph on
minaug
\emph default
to ensure a minimum number of augmentations.
Augmentations will proceed until the relative change in the reaction force/moment magnitude is less than
\emph on
tolerance
\emph default
,
and/or the linear gap is less than
\emph on
gaptol
\emph default
,
and/or the angular gap is less than
\emph on
angtol
\emph default
.
Setting any of these parameters to zero disables that check.
\end_layout
\begin_layout Standard
The nonlinear constraints that enforce these joints produce a non-symmetric stiffness matrix.
Therefore,
when using rigid joints,
use the analysis setting for a non-symmetric formulation,
see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Parameters-Solid-Analysis"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
The following rigid joints can be defined.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rigid spherical joint
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Connect rigid bodies at point.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rigid revolute joint
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Rotation about a single prescribed axis
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rigid prismatic joint
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Translation along a single prescribed axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rigid cylindrical joint
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Rotation and translation about prescribed axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rigid planar joint
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
2D plane translation and rotation about normal.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rigid lock
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prevent any relative motion between rigid bodies.
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The second category of connectors apply a force on the rigid bodies that is proportional to some relative motion.
The term 'rigid' refers to the bodies,
not to the connectors.
\end_layout
\begin_layout Standard
The following rigid connectors can be defined.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rigid spring
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Applies a spring that connects the two rigid bodies.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rigid damper
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Applies a damper based on relative linear velocity.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rigid angular damper
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Applies a damper based on relative angular velocity.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rigid contractile force
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Constant contractile force between rigid bodies.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rigid planar joint
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
2D plane translation and rotation about normal.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rigid lock
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prevent any relative motion between rigid bodies.
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
All of these joints and connectors define two parameters that reference the two rigid bodies.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
body_a
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The first rigid body in the connector
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
body_b
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The second rigid body in the connector
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
In addition,
the joints defined above are all based on the Augmented Lagrangian method,
and consequently,
also share the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
laugon
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Augmentation flag
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
tolerance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specifies the augmentation tolerance
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
minaug
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The minimum number of augmentations.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
maxaug
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The maximum number of augmentations.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
gaptol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Gap tolerance
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
angtol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Angular separation tolerance
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
force_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Penalty factor applied to force augmentations.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
moment_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Penalty factor applied to moment augmentations.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
auto_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Flag to calculate penalty factor automatically.
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
Additional parameters,
unique to a specific connector,
are defined in the sections below.
\end_layout
\begin_layout Subsubsection
Rigid Spherical Joint
\end_layout
\begin_layout Standard
A rigid spherical joint connects rigid bodies
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $b$
\end_inset
at a point in space,
allowing three degrees of freedom for rotation about that point.
\end_layout
\begin_layout Standard
In addition to the shared parameters above,
it defines the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
joint_origin
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The position of the joint.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
prescribed_rotation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The prescribed rotation flag.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rotation_x
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The x-component of the prescribed rotation.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rotation_y
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The y-component of the prescribed rotation.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rotation_z
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The z-component of the prescribed rotation.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
moment_x
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
X-component of applied moment
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
moment_y
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Y-component of applied moment
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
moment_z
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Z-component of applied moment
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
tolerance
\shape default
element defines the augmentation tolerance.
That is,
when the relative change in the constraint forces and moments (the Lagrange multipliers) are less than this value.
The
\shape italic
gaptol
\shape default
element defines the tolerance for spatial separation of the joint origin on the two bodies (in units of length).
Setting either of these elements to zero disables the enforcement of that tolerance.
The
\shape italic
force_penalty
\shape default
parameter (with units of force per length) represents the stiffness that prevents the joint origin on the two bodies from separating.
The
\shape italic
body_a
\shape default
and
\shape italic
body_b
\shape default
elements are the material numbers of the two rigid bodies.
The
\shape italic
joint_origin
\shape default
element defines the position of the joint (the origin of the basis
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} )$
\end_inset
in world coordinates at the start of the analysis.
Note that this point does not have to be inside or on the surface of either of the two bodies.
The
\shape italic
rotation_axis
\shape default
element defines the orientation of the joint rotation axis in world coordinates at the start of the analysis.
\end_layout
\begin_layout Standard
Optionally,
the rotation of body
\begin_inset Formula $b$
\end_inset
relative to body
\begin_inset Formula $a$
\end_inset
may be prescribed using the additional tags
\end_layout
\begin_layout LyX-Code
1e0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout Standard
The
\shape italic
prescribed_rotation
\shape default
element is a flag that indicates that the motion of the joint is prescribed (1 for prescribed,
0 for free).
The
\shape italic
rotation_x
\shape default
,
\shape italic
rotation_y
\shape default
and
\shape italic
rotation_z
\shape default
elements specify the components
\begin_inset Formula $\left(\theta_{1},\theta_{2},\theta_{3}\right)$
\end_inset
of rotation (with units of radians),
with optional associated load curves.
The rotation occurs about the axis directed along
\begin_inset Formula $\theta_{1}\mathbf{e}_{1}^{a}+\theta_{2}\mathbf{e}_{2}^{a}+\theta_{3}\mathbf{e}_{3}^{a}$
\end_inset
,
with a magnitude
\begin_inset Formula $\sqrt{\theta_{1}^{2}+\theta_{2}^{2}+\theta_{3}^{2}}$
\end_inset
.
Either all or none of the rotation components must be prescribed,
since all rotation components are needed to define a rotation tensor.
The
\shape italic
moment_penalty
\shape default
parameter (with units of moment per radians) represents the torsional stiffness that enforces tracking of the prescribed rotations between the two bodies.
\end_layout
\begin_layout Standard
Optionally,
moments may be prescribed on body
\begin_inset Formula $b$
\end_inset
relative to body
\begin_inset Formula $a$
\end_inset
,
about the world coordinate axes,
using the additional tag
\end_layout
\begin_layout LyX-Code
1.e-3
\end_layout
\begin_layout LyX-Code
3.e-3
\end_layout
\begin_layout LyX-Code
2.e-3
\end_layout
\begin_layout Standard
The
\shape italic
moment
\shape default
elements specify the components of the moment vector in world coordinates,
with optional associated load curves.
The
\shape italic
moment
\shape default
elements should not be used simultaneously with a prescribed rotation.
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1e0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid Revolute Joint
\end_layout
\begin_layout Standard
The rigid revolute joint connector allows the user to connect two rigid bodies
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $b$
\end_inset
at a point in space and allow rotation about a single prescribed axis.
\end_layout
\begin_layout Standard
In addition to the shared parameters above,
it defines the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
joint_origin
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The position of the joint.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rotation_axis
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The rotation axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
transverse_axis
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The transverse axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
prescribed_rotation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prescribed rotation flag
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rotation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prescribed rotation around axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
moment
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Applied moment about axis.
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
tolerance
\shape default
element defines the augmentation tolerance.
That is,
when the relative change in the constraint forces and moments (the Lagrange multipliers) are less than this value.
The
\shape italic
gaptol
\shape default
element defines the tolerance for spatial separation of the joint origin on the two bodies (in units of length).
The
\shape italic
angtol
\shape default
element defines the tolerance for angular separation of the joint axis on the two bodies (in units of radians).
Setting any of these three elements to zero disables the enforcement of that tolerance.
The
\shape italic
force_penalty
\shape default
parameter (with units of force per length) represents the stiffness that prevents the joint origin on the two bodies from separating.
The
\shape italic
moment_penalty
\shape default
parameter (with units of moment per radians) represents the torsional stiffness that enforces parallelism of the joint axis on the two bodies.
The
\shape italic
body_a
\shape default
and
\shape italic
body_b
\shape default
elements are the material numbers of the two rigid bodies.
The
\shape italic
joint_origin
\shape default
element defines the position of the joint origin (the origin of the basis
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} )$
\end_inset
in world coordinates at the start of the analysis.
Note that this point does not have to be inside or on the surface of either of the two bodies.
The
\shape italic
rotation_axis
\shape default
element defines the orientation of the joint rotation axis
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
in world coordinates at the start of the analysis.
\end_layout
\begin_layout Standard
Optionally,
the rotation of body
\begin_inset Formula $b$
\end_inset
relative to body
\begin_inset Formula $a$
\end_inset
may be prescribed using the additional tags
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
3.14159
\end_layout
\begin_layout Standard
The
\shape italic
prescribed_rotation
\shape default
element is a flag that indicates that the motion of the joint is prescribed (1 for prescribed,
0 for free).
The
\shape italic
rotation
\shape default
element specifies the amount of rotation (with units of radians) with an optional associated load curve.
\end_layout
\begin_layout Standard
Optionally,
a moment may be prescribed on body
\begin_inset Formula $b$
\end_inset
relative to body
\begin_inset Formula $a$
\end_inset
,
about the joint axis,
using the additional tag
\end_layout
\begin_layout LyX-Code
5.e-3
\end_layout
\begin_layout Standard
The
\shape italic
moment
\shape default
element specifies the magnitude of the moment,
with an optional associated load curve.
The
\shape italic
moment
\shape default
element should not be used simultaneously with a prescribed rotation.
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1e-4
\end_layout
\begin_layout LyX-Code
1e-4
\end_layout
\begin_layout LyX-Code
1e0
\end_layout
\begin_layout LyX-Code
1e0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
-150,0,2
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid Prismatic Joint
\end_layout
\begin_layout Standard
The rigid prismatic joint connector allows the user to connect two rigid bodies
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $b$
\end_inset
at a point in space and allow translation along a single prescribed axis.
\end_layout
\begin_layout Standard
In addition to the shared parameters above,
it defines the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
joint_origin
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The position of the joint.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
translation_axis
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The translation axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
transverse_axis
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The transverse axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
prescribed_translation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prescribed translation flag
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
translation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prescribed translation along axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
force
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Applied force along axis.
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
tolerance
\shape default
element defines the augmentation tolerance.
That is,
when the relative change in the constraint forces and moments (the Lagrange multipliers) are less than this value.
The
\shape italic
gaptol
\shape default
element defines the tolerance for spatial separation of the joint origin on the two bodies (in units of length).
The
\shape italic
angtol
\shape default
element defines the tolerance for angular separation of the joint axis on the two bodies (in units of radians).
Setting any of these three elements to zero disables the enforcement of that tolerance.
The
\shape italic
force_penalty
\shape default
parameter (with units of force per length) represents the stiffness that prevents the joint origin on the two bodies from separating.
The
\shape italic
moment_penalty
\shape default
parameter (with units of moment per radians) represents the torsional stiffness that enforces parallelism of the joint axis on the two bodies.
The
\shape italic
body_a
\shape default
and
\shape italic
body_b
\shape default
elements are the material numbers of the two rigid bodies.
The
\shape italic
joint_origin
\shape default
element defines the position of the joint (the origin of the basis
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} )$
\end_inset
in world coordinates at the start of the analysis.
Note that this point does not have to be inside or on the surface of either of the two bodies.
The
\shape italic
translation_axis
\shape default
element defines the orientation
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
of the joint translation axis in world coordinates at the start of the analysis.
\end_layout
\begin_layout Standard
Optionally,
the translation of body
\begin_inset Formula $b$
\end_inset
relative to body
\begin_inset Formula $a$
\end_inset
may be prescribed using the additional tags
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
5.0
\end_layout
\begin_layout Standard
The
\shape italic
prescribed_translation
\shape default
element is a flag that indicates that the motion of the joint is prescribed (1 for prescribed,
0 for free).
The
\shape italic
translation
\shape default
element specifies the amount of translation (with units of length) with an optional associated load curve.
\end_layout
\begin_layout Standard
Optionally,
a force may be prescribed on body
\begin_inset Formula $b$
\end_inset
relative to body
\begin_inset Formula $a$
\end_inset
,
along the joint axis using the additional tag
\end_layout
\begin_layout LyX-Code
5.e-3
\end_layout
\begin_layout Standard
The
\shape italic
force
\shape default
element specifies the magnitude of the force,
with an optional associated load curve.
The
\shape italic
force
\shape default
element should not be used simultaneously with a prescribed translation.
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1e-4
\end_layout
\begin_layout LyX-Code
1e-4
\end_layout
\begin_layout LyX-Code
1e0
\end_layout
\begin_layout LyX-Code
1e0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
4
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
-150,0,2
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
150
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid Cylindrical Joint
\end_layout
\begin_layout Standard
A rigid cylindrical joint connects rigid bodies
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $b$
\end_inset
at a point in space,
allowing one degree of freedom for rotation about an axis through that point,
and another degree of freedom for translation along that axis.
\end_layout
\begin_layout Standard
In addition to the shared parameters above,
it defines the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
joint_origin
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The position of the joint.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
joint_axis
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The joint axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
transverse_axis
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The transverse axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
prescribed_translation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prescribed translation flag
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
translation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prescribed translation along axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
force
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Applied force along axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
prescribed_rotation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prescribed rotation flag
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rotation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prescribed rotation around axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
moment
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Applied moment about axis.
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
tolerance
\shape default
element defines the augmentation tolerance.
That is,
when the relative change in the constraint forces and moments (the Lagrange multipliers) are less than this value.
The
\shape italic
gaptol
\shape default
element defines the tolerance for spatial separation of the joint origin on the two bodies (in units of length).
The
\shape italic
angtol
\shape default
element defines the tolerance for angular separation of the joint axis on the two bodies (in units of radians).
Setting any of these three elements to zero disables the enforcement of that tolerance.
The
\shape italic
force_penalty
\shape default
parameter (with units of force per length) represents the stiffness that prevents the joint origin on the two bodies from separating.
The
\shape italic
moment_penalty
\shape default
parameter (with units of moment per radians) represents the torsional stiffness that enforces parallelism of the joint axis on the two bodies.
The
\shape italic
body_a
\shape default
and
\shape italic
body_b
\shape default
elements are the material numbers of the two rigid bodies.
The
\shape italic
joint_origin
\shape default
element defines the position of the joint (the origin of the basis
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} )$
\end_inset
in world coordinates at the start of the analysis.
Note that this point does not have to be inside or on the surface of either of the two bodies.
The
\shape italic
joint_axis
\shape default
element defines the orientation
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
of the joint rotation and translation axis in world coordinates at the start of the analysis.
\end_layout
\begin_layout Standard
Optionally,
the rotation of body
\begin_inset Formula $b$
\end_inset
relative to body
\begin_inset Formula $a$
\end_inset
may be prescribed using the additional tags
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1.570796327
\end_layout
\begin_layout Standard
The
\shape italic
prescribed_rotation
\shape default
element is a flag that indicates that the motion of the joint is prescribed (1 for prescribed,
0 for free).
The
\shape italic
rotation
\shape default
element specifies the amount of rotation (with units of radians) with an optional associated load curve.
\end_layout
\begin_layout Standard
Optionally,
the translation of body
\begin_inset Formula $b$
\end_inset
relative to body
\begin_inset Formula $a$
\end_inset
may be prescribed using the additional tags
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
10.0
\end_layout
\begin_layout Standard
Optionally,
a moment may be prescribed about the joint axis using the additional tag
\end_layout
\begin_layout LyX-Code
5.e-3
\end_layout
\begin_layout Standard
The
\shape italic
moment
\shape default
element specifies the magnitude of the moment,
with an optional associated load curve.
The
\shape italic
moment
\shape default
element should not be used simultaneously with a prescribed rotation.
\end_layout
\begin_layout Standard
Optionally,
a force may be prescribed along the joint axis using the additional tag
\end_layout
\begin_layout LyX-Code
2.0
\end_layout
\begin_layout Standard
The
\shape italic
force
\shape default
element specifies the magnitude of the force,
with an optional associated load curve.
The
\shape italic
force
\shape default
element should not be used simultaneously with a prescribed translation.
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1e-4
\end_layout
\begin_layout LyX-Code
1e-4
\end_layout
\begin_layout LyX-Code
1e0
\end_layout
\begin_layout LyX-Code
1e0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid Planar Joint
\end_layout
\begin_layout Standard
A rigid planar joint connects rigid bodies
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $b$
\end_inset
,
allowing one degree of freedom for rotation about the axis
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
through that point,
and two degrees of freedom for translations in the plane perpendicular to that axis,
along
\begin_inset Formula $\mathbf{e}_{2}^{a}$
\end_inset
and
\begin_inset Formula $\mathbf{e}_{3}^{a}$
\end_inset
.
\end_layout
\begin_layout Standard
In addition to the shared parameters above,
it defines the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
joint_origin
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The position of the joint.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rotation_axis
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The joint axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
translation_axis_1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The first translation axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
prescribed_rotation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prescribed rotation flag
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
rotation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prescribed rotation around axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
prescribed_translation_1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prescribed translation 1 flag
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
translation_1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prescribed translation along axis 1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
prescribed_translation_2
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prescribed translation 2 flag
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
translation_2
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Prescribed translation along axis 2
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
tolerance
\shape default
element defines the augmentation tolerance.
That is,
when the relative change in the constraint forces and moments (the Lagrange multipliers) are less than this value.
The
\shape italic
gaptol
\shape default
element defines the tolerance for spatial separation of the joint origin on the two bodies (in units of length).
The
\shape italic
angtol
\shape default
element defines the tolerance for angular separation of the joint axes on the two bodies (in units of radians).
Setting any of these three elements to zero disables the enforcement of that tolerance.
The
\shape italic
force_penalty
\shape default
parameter (with units of force per length) represents the stiffness that prevents the joint origin on the two bodies from separating along the rotation axis.
The
\shape italic
moment_penalty
\shape default
parameter (with units of moment per radians) represents the torsional stiffness that enforces parallelism of the joint rotation axis on the two bodies.
The
\shape italic
body_a
\shape default
and
\shape italic
body_b
\shape default
elements are the material numbers of the two rigid bodies.
The
\shape italic
joint_origin
\shape default
element defines the position of the joint (the origin of the basis
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} )$
\end_inset
in world coordinates at the start of the analysis.
Note that this point does not have to be inside or on the surface of either of the two bodies.
The
\shape italic
rotation_axis
\shape default
element defines the orientation of the joint rotation axis
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
in world coordinates at the start of the analysis.
The
\shape italic
translation_axis_1
\shape default
element defines the orientation of the joint translation axis
\begin_inset Formula $\mathbf{e}_{2}^{a}$
\end_inset
in the plane perpendicular to the joint rotation axis,
in world coordinates at the start of the analysis.
\end_layout
\begin_layout Standard
Optionally,
the rotation of body
\begin_inset Formula $b$
\end_inset
relative to body
\begin_inset Formula $a$
\end_inset
may be prescribed using the additional tags
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1.570796327
\end_layout
\begin_layout Standard
The
\shape italic
prescribed_rotation
\shape default
element is a flag that indicates that the motion of the joint is prescribed (1 for prescribed,
0 for free).
The
\shape italic
rotation
\shape default
element specifies the amount of rotation (with units of radians) with an optional associated load curve.
\end_layout
\begin_layout Standard
Optionally,
the translation of body
\begin_inset Formula $b$
\end_inset
relative to body
\begin_inset Formula $a$
\end_inset
may be prescribed along
\begin_inset Formula $\mathbf{e}_{2}^{a}$
\end_inset
using the additional tags
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
10.0
\end_layout
\begin_layout Standard
Optionally,
the translation of body
\begin_inset Formula $b$
\end_inset
relative to body
\begin_inset Formula $a$
\end_inset
may be prescribed along
\begin_inset Formula $\mathbf{e}_{3}^{a}$
\end_inset
using the additional tags
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
10.0
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1e-4
\end_layout
\begin_layout LyX-Code
1e-4
\end_layout
\begin_layout LyX-Code
1e0
\end_layout
\begin_layout LyX-Code
1e0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
0,-0.5,0.8660254
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid Lock Joint
\end_layout
\begin_layout Standard
A rigid lock connects rigid bodies
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $b$
\end_inset
,
preventing relative motion between them.
It requires the specification of a joint origin and two orthogonal axes
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
and
\begin_inset Formula $\mathbf{e}_{2}$
\end_inset
.
\end_layout
\begin_layout Standard
In addition to the shared parameters above,
it defines the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
joint_origin
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The position of the joint.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
first_axis
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The first axis.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
second_axis
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The second axis.
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
tolerance
\shape default
element defines the augmentation tolerance.
That is,
when the relative change in the constraint forces and moments (the Lagrange multipliers) are less than this value.
The
\shape italic
gaptol
\shape default
element defines the tolerance for spatial separation of the joint origin on the two bodies (in units of length).
The
\shape italic
angtol
\shape default
element defines the tolerance for angular separation of the joint axes on the two bodies (in units of radians).
Setting any of these three elements to zero disables the enforcement of that tolerance.
The
\shape italic
force_penalty
\shape default
parameter (with units of force per length) represents the stiffness that prevents the joint origin on the two bodies from separating along the rotation axis.
The
\shape italic
moment_penalty
\shape default
parameter (with units of moment per radians) represents the torsional stiffness that enforces parallelism of the joint rotation axis on the two bodies.
The
\shape italic
body_a
\shape default
and
\shape italic
body_b
\shape default
elements are the material numbers of the two rigid bodies.
The
\shape italic
joint_origin
\shape default
element defines the position of the joint (the origin of the basis
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} )$
\end_inset
in world coordinates at the start of the analysis.
Note that this point does not have to be inside or on the surface of either of the two bodies.
The
\shape italic
first_axis
\shape default
element defines the orientation of the axis
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
in world coordinates at the start of the analysis.
The
\shape italic
second_axis
\shape default
element defines the orientation of the second axis
\begin_inset Formula $\mathbf{e}_{2}$
\end_inset
in world coordinates at the start of the analysis.
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1e-4
\end_layout
\begin_layout LyX-Code
1e-4
\end_layout
\begin_layout LyX-Code
1e0
\end_layout
\begin_layout LyX-Code
1e0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
0,1,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid Spring
\end_layout
\begin_layout Standard
The rigid spring applies a linear spring that connects two rigid bodies
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $b$
\end_inset
at arbitrary points (not necessarily nodes).
\end_layout
\begin_layout Standard
In addition to the shared parameters above,
it defines the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
k
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
spring constant (in units of force per length)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
insertion_a
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Insertion point of the spring on body a
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
insertion_b
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Insertion point of the spring on body b
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
free_length
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The length of the unloaded spring (1)
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
If the free_length parameter is zero,
then the initial length of the spring,
as defined by the two insertion points,
is taken as the free length.
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
0,0,3
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid Damper
\end_layout
\begin_layout Standard
The rigid damper applies a linear damper that connects two rigid bodies
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $b$
\end_inset
at arbitrary points (not necessarily nodes).
\end_layout
\begin_layout Standard
In addition to the shared parameters above,
it defines the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
c
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Damping constant
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
insertion_a
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Insertion point of the spring on body a
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
insertion_b
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
In section point of the spring on body b
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
0,0,3
\end_layout
\begin_layout LyX-Code
1e-7
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid Angular Damper
\end_layout
\begin_layout Standard
The rigid angular damper applies an angular damper that connects two rigid bodies
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $b$
\end_inset
.
\end_layout
\begin_layout Standard
In addition to the shared parameters above,
it defines the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
c
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Angular damping constant
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
1e-3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Rigid Contractile Force
\end_layout
\begin_layout Standard
The rigid contractile force applies an actuator force between arbitrary points (not necessarily nodes) on two rigid bodies
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $b$
\end_inset
.
\end_layout
\begin_layout Standard
In addition to the shared parameters above,
it defines the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
f0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The applied force (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
insertion_a
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Insertion point of the spring on body a
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
insertion_b
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
In section point of the spring on body b
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
The f0 parameter represents the actuator force (positive for contraction).
Optionally,
it may be associated with a load curve.
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
0,0,3
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Section
Loads Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Loads-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
Loads
\shape default
section defines all nodal,
edge,
surface,
and body loads that can be applied to the model.
\end_layout
\begin_layout Subsection
Nodal Loads
\begin_inset CommandInset label
LatexCommand label
name "subsec:Nodal-Loads"
\end_inset
\end_layout
\begin_layout Standard
Nodal loads are applied by the
\shape italic
nodal_load
\shape default
element.
The nodal load is defined by the
\emph on
type
\emph default
attribute.
The following table lists the available nodal loads.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
nodal_load
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A load that is added to the corresponding dofs in the global force vector.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
nodal_force
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A force applied to each node of a node set
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
nodal_target_force
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A force that ramps the current nodal load to a target value.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsubsection
nodal_load
\end_layout
\begin_layout Standard
The nodal_load adds a value directly to the corresponding degrees of freedom in the global external load vector.
When the loads are applied to displacement degrees of freedom,
the forces always point in the same direction and do not deform with the geometry (i.e.
they are non-follower forces).
For other degrees of freedom they define a constant normal flux.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
x
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\shape italic
dof
\shape default
parameter defines the degree of freedom.
The following values are allowed:
\end_layout
\begin_layout Description
x apply force in
\begin_inset Formula $x$
\end_inset
-direction
\end_layout
\begin_layout Description
y apply force in
\begin_inset Formula $y$
\end_inset
-direction
\end_layout
\begin_layout Description
z apply force in
\begin_inset Formula $z$
\end_inset
-direction
\end_layout
\begin_layout Description
p apply normal volumetric fluid flow rate
\end_layout
\begin_layout Description
c
\begin_inset Formula $n$
\end_inset
apply normal molar solute flow rate
\end_layout
\begin_layout Description
t apply normal heat flux (heat transfer analysis)
\end_layout
\begin_layout Standard
For solutes,
replace
\begin_inset Quotes eld
\end_inset
\begin_inset Formula $n$
\end_inset
\begin_inset Quotes erd
\end_inset
with the solute id from the global solute table (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solutes"
nolink "false"
\end_inset
);
for example,
\begin_inset Quotes eld
\end_inset
c2
\begin_inset Quotes erd
\end_inset
.
\end_layout
\begin_layout Standard
An optional
\shape italic
loadcurve
\shape default
can be specified for the
\shape italic
scale
\shape default
parameter with the
\shape italic
lc
\shape default
attribute.
\end_layout
\begin_layout Subsubsection
nodal_force
\end_layout
\begin_layout Standard
This nodal load defines a force that is applied to each node in the node set.
The
\emph on
value
\emph default
parameter sets the force vector.
An optional load curve can be defined to scale the vector.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
nodal_target_force
\end_layout
\begin_layout Standard
This nodal load defines a force that is applied to each node in the node set.
The force will ramp up from the value at the end of the last time step,
to the desired value defined in the
\emph on
force
\emph default
variable.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Note that,
in order to reach the target load,
the loadcurve assigned to
\emph on
scale
\emph default
must start at 0 and end at 1.
\end_layout
\begin_layout Subsubsection
Nodal Fluidflux
\end_layout
\begin_layout Standard
The
\begin_inset Quotes eld
\end_inset
\emph on
nodal fluidflux
\emph default
\begin_inset Quotes erd
\end_inset
boundary condition implements an equivalent nodal force load.
This load will be applied directly to the load vector of the system.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The applied flux
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Surface Loads
\begin_inset CommandInset label
LatexCommand label
name "subsec:Surface-Loads"
\end_inset
\end_layout
\begin_layout Standard
A surface load can be applied using the
\shape italic
surface_load
\shape default
element.
This element takes two attributes,
namely
\shape italic
type
\shape default
,
which defines the type of surface load that will be applied,
and
\shape italic
surface
\shape default
which defines the surface that this load will be applied to.
\end_layout
\begin_layout Subsubsection
Pressure Load
\begin_inset CommandInset label
LatexCommand label
name "subsec:Pressure-Load"
\end_inset
\end_layout
\begin_layout Standard
Pressure loads are applied to the surface of the geometry and are defined by the
\shape italic
surface_load
\shape default
element with the type attribute set to
\shape italic
pressure
\shape default
.
These pressure forces are also known as
\shape italic
follower forces
\shape default
;
they change direction as the body is deformed and,
in this case,
are always oriented along the local surface normal.
The sign convention is so that a positive pressure will act opposite to the normal,
so it will compress the material.
The surface that the load is applied to is specified with the
\emph on
surface
\emph default
attribute.The surface must be defined in the
\emph on
Mesh
\shape italic
\emph default
\shape default
section.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\series default
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
pressure
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The applied pressure values (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 [
\series bold
P
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
symmetric_stiffness
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
symmetric stiffness flag (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
linear
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
linear flag (3)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
shell_bottom
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
shell bottom flag (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
The
\shape italic
pressure
\shape default
element defines the pressure value [
\series bold
P
\series default
].
The optional parameter
\shape italic
lc
\shape default
defines a loadcurve for the pressure evolution.
If
\shape italic
lc
\shape default
is not defined a constant pressure is applied.
\end_layout
\begin_layout Enumerate
The optional
\emph on
symmetric_stiffness
\emph default
parameter (0 or 1) determines whether to use the exact form of the stiffness matrix for this surface load (0=non-symmetric),
or the symmetric form (1=default).
The non-symmetric form is numerically more robust,
but it may also require using a globally non-symmetric stiffness matrix (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Parameters-Solid-Analysis"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Enumerate
If the optional
\emph on
linear
\emph default
parameter is set to 1,
a constant,
deformation independent pressure load is applied.
This is not recommend for large deformations.
\end_layout
\begin_layout Enumerate
When the
\emph on
shell_bottom
\emph default
flag is set to 1,
the surface is assumed to be a shell surface and the pressure is applied to the bottom part of the shell surface.
\end_layout
\begin_layout Standard
\emph on
Example
\emph default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Traction Load
\begin_inset CommandInset label
LatexCommand label
name "subsec:Traction-Load"
\end_inset
\end_layout
\begin_layout Standard
A traction load applies a traction to a surface.
The direction of the traction remains unchanged as the mesh deforms.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The traction vector is determined by two quantities.
The direction and magnitude is defined by the
\shape italic
traction
\shape default
element.
In addition,
the magnitude can be scaled using the
\shape italic
scale
\shape default
element.
An optional load curve can be defined for the
\shape italic
scale
\shape default
element using the
\shape italic
lc
\shape default
attribute.
This allows the traction load to become time dependent.
If the
\shape italic
lc
\shape default
attribute is omitted a constant traction load is applied.
\end_layout
\begin_layout Subsubsection
Surface Force
\begin_inset CommandInset label
LatexCommand label
name "subsec:Surface-Force"
\end_inset
\end_layout
\begin_layout Standard
A surface force applies an equivalent uniform traction load to a surface.
The direction of the force remains unchanged as the mesh deforms.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The force vector is determined by two quantities.
The direction and magnitude is defined by the
\shape italic
force
\shape default
element.
In addition,
the magnitude can be scaled using the
\shape italic
scale
\shape default
element.
An optional load curve can be defined for the
\shape italic
scale
\shape default
element using the
\shape italic
lc
\shape default
attribute.
This allows the surface force to become time dependent.
If the
\shape italic
lc
\shape default
attribute is omitted a constant force is applied.
\end_layout
\begin_layout Subsubsection
Bearing Load
\begin_inset CommandInset label
LatexCommand label
name "subsec:Bearing-Load"
\end_inset
\end_layout
\begin_layout Standard
A bearing load can be applied on a cylindrical surface that represents a bearing journal,
or the portion of a shaft that is supported by a bearing journal.
This load gets prescribed as a non-uniform compressive pressure distribution on that surface,
representing the radial component of the bearing load.
(The axial component of a bearing load may be prescribed using the surface force presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Surface-Force"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.) The non-uniform pressure distribution may be sinusoidal or parabolic.
It gets distributed over a ±90 degree arc relative to the loading direction,
which is specified as a force vector.
The user is expected to specify the bearing force in a plane perpendicular to the axis of the cylindrical bearing surface.
Otherwise,
only the projection of the bearing force onto that plane will be prescribed as the radial bearing load.
For example,
a bearing load may be specified as
\end_layout
\begin_layout Standard
\end_layout
\begin_layout LyX-Code
1000.0
\end_layout
\begin_layout LyX-Code
0.707107,0.707107,0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
In this example the bearing load is in the xy-plane,
oriented at 45 degrees from the x-axis.
The surface
\emph on
BearingSurface1
\emph default
should be a cylinder with its axis along the z-direction.
The pressure distribution is parabolic (profile=1),
and the alternative option is sinusoidal (profile=0).
In general,
a parabolic distribution produces a higher (often more realistic) central peak pressure on the bearing surface.
An optional loadcurve can be associated with the
\emph on
scale
\emph default
as shown in this example,
to scale the prescribed bearing force as a function of time.
Alternatively,
the user may assign a loadcurve to the
\emph on
force
\emph default
.
\end_layout
\begin_layout Standard
Additional options are available for a bearing load,
including
\emph on
symmetric_stiffness
\emph default
,
\emph on
linear
\emph default
and
\emph on
shell_bottom
\emph default
as outlined in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Pressure-Load"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
When the
\emph on
linear
\emph default
flag is set to false,
the pressure prescribed on the bearing surface is adjusted to account for the change in area and orientation of each face,
caused by the finite deformation of the bearing surface.
However,
the bearing radial force direction remains unchanged with deformation.
It is recommended to set the
\emph on
symmetric_stiffness
\emph default
flag to false when performing a finite deformation analysis.
\end_layout
\begin_layout Standard
The bearing load is always prescribed as a compressive load on the selected bearing surface.
Therefore,
it is recommended to select a complete cylindrical surface on which the bearing load is prescribed;
the solver automatically determines which faces of the selected surface must be loaded in compression and which of those have zero pressure prescribed on them,
based on the vectorial orientation of the bearing
\emph on
force
\emph default
.
If the user selects a semi-cylindrical surface as the bearing surface,
it becomes the user's responsibility to ensure that the prescribed bearing force bisects the 180 degree arc of that surface.
Otherwise,
the analysis may produce unexpected results,
due to unevenness of the pressure distribution about the force's line of action.
If the user selects a surface with a smaller arc than ±90 degrees,
the pressure will not reduce to zero at the straight edges of the surface,
though the pressure will be scaled to produce the prescribed force magnitude along the bearing force direction.
\end_layout
\begin_layout Subsubsection
Pipette Aspiration
\begin_inset CommandInset label
LatexCommand label
name "subsec:Pipette-Aspiration"
\end_inset
\end_layout
\begin_layout Standard
Pipette aspiration is a common tool in biomechanics:
A pipette is pressed against a tissue surface (contact problem) and a known negative pressure is typically applied through the pipette to aspirate the tissue.
Then,
some relevant material property may be extracted from the observed aspirated height of the tissue under the prescribed pressure.
This pressure load is similar to the pressure load described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Pressure-Load"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
however
\emph on
it must be used on a surface which is also the primary surface
\emph default
in a
\emph on
sliding-elastic
\emph default
contact interface (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Sliding-Interfaces"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
The contact interface must be between a
\emph on
circular
\emph default
pipette with inner radius
\emph on
\begin_inset Formula $R$
\end_inset
\emph default
and the tissue.
(In other words,
the pipette has to be modeled explicitly in this contact analysis).
The purpose of this
\emph on
pipette aspiration
\emph default
load is to prescribe the pressure only on the faces of the selected contact surface which happen to be inside the pipette footprint.
Therefore,
the pressure is not applied on the portion of the contact surface which has a non-zero contact pressure,
or on the faces that fall outside of the pipette footprint.
The parameters that need to be defined for this pressure load are:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
pressure
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The applied pressure values (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 [
\series bold
P
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
radius
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The inner radius
\begin_inset Formula $R$
\end_inset
of the pipette
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 [
\series bold
L
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
center
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A vector representing the position of the center of the circular pipette footprint
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0,0,0 [
\series bold
L
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
normal
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A vector represent the normal direction representing the pipette axis
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0,0,1
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This pressure load only works with circular pipettes.
However,
the pipette wall thickness is only modeled via the explicit representation of the pipette,
and the pipette tip need not be flat (e.g.,
it could be semi-circular or beveled,
etc.).
The radius
\begin_inset Formula $R$
\end_inset
represents the circular edge of the contact region in the absence of deformation (in the reference condition).
The model may employ planes of symmetry,
since those do not affect the specification of
\emph on
radius
\emph default
,
\emph on
center
\emph default
,
or
\emph on
normal
\emph default
.
\end_layout
\begin_layout Subsubsection
Mixture Normal Traction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Mixture-Normal-Traction"
\end_inset
\end_layout
\begin_layout Standard
This section applies to biphasic,
biphasic-solute,
triphasic and multiphasic analyses.
In a mixture of intrinsically incompressible solid and fluid constituents,
the formulation adopted in FEBio implies that the total traction is a natural boundary condition (
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://help.febio.org/docs/FEBioTheory-4-5/TM45-Section-3.2.html}{
\backslash
emph{FEBio Theory
\end_layout
\begin_layout Plain Layout
Manual}}
\end_layout
\end_inset
).
If this boundary condition is not explicitly prescribed,
the code automatically assumes that it is equal to zero.
Therefore,
boundaries of mixtures are traction-free by default.
\end_layout
\begin_layout Standard
The
\shape italic
mixture traction
\shape default
\begin_inset Formula $\mathbf{t}$
\end_inset
is the traction vector corresponding to the mixture (or total) stress
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
;
thus
\begin_inset Formula $\mathbf{t}=\boldsymbol{\sigma}\cdot\mathbf{n}$
\end_inset
,
where
\begin_inset Formula $\mathbf{n}$
\end_inset
is the outward unit normal to the boundary surface.
Since
\begin_inset Formula $\boldsymbol{\sigma}=-p\mathbf{I}+\boldsymbol{\sigma}^{e}$
\end_inset
,
where
\begin_inset Formula $p$
\end_inset
is the fluid pressure and
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
is the
\shape italic
effective stress
\shape default
resulting from strains in the solid matrix,
it is also possible to represent the total traction as
\begin_inset Formula $\mathbf{t}=-p\mathbf{n}+\mathbf{t}^{e}$
\end_inset
,
where
\begin_inset Formula $\mathbf{t}^{e}=\boldsymbol{\sigma}^{e}\cdot\mathbf{n}$
\end_inset
is the
\shape italic
effective traction
\shape default
.
Currently,
FEBio allows the user to specify only the normal component of the traction,
either
\begin_inset Formula $t_{n}=\mathbf{t}\cdot\mathbf{n}$
\end_inset
(the normal component of the mixture traction) or
\begin_inset Formula $t_{n}^{e}=\mathbf{t}^{e}\cdot\mathbf{n}$
\end_inset
(the normal component of the effective traction):
\end_layout
\begin_layout Standard
A mixture normal traction is defined by the
\shape italic
surface_load
\shape default
element using
\shape italic
normal_traction
\shape default
for the type attribute.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\shape italic
traction
\shape default
element defines the magnitude of the traction force.
The optional attribute
\shape italic
lc
\shape default
defines a loadcurve that controls the time dependency of the traction force magnitude.
If omitted a constant traction is applied.
\end_layout
\begin_layout Standard
The
\shape italic
effective
\shape default
element defines whether the traction is applied as an effective traction or a total mixture traction.
\end_layout
\begin_layout Standard
The
\shape italic
linear
\shape default
element defines whether the traction remains normal to the deformed surface or the reference surface.
If set to true the traction remains normal to the reference surface.
When false it defines a follower force that remains normal to the deformed surface.
\end_layout
\begin_layout Standard
The
\shape italic
surface
\shape default
element defines the surface to which the traction is applied.
It consists of child elements defining the individual surface facets.
\end_layout
\begin_layout Standard
Unlike the mixture and effective traction,
the fluid pressure
\begin_inset Formula $p$
\end_inset
is a nodal variable (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Zero-Displacement"
nolink "false"
\end_inset
).
There may be common situations where the user must apply a combination of related fluid pressure and traction boundary conditions.
For example,
if a biphasic surface is subjected to a non-zero fluid pressure
\begin_inset Formula $p_{0}$
\end_inset
,
the corresponding boundary conditions are
\begin_inset Formula $p=p_{0}$
\end_inset
and
\begin_inset Formula $t_{n}=-p_{0}$
\end_inset
(or
\begin_inset Formula $t_{n}^{e}=0$
\end_inset
).
In FEBio,
both boundary conditions must be applied.
For example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
-1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0
\end_layout
\begin_layout LyX-Code
1,2.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Fluid Flux
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fluid-Flux"
\end_inset
\end_layout
\begin_layout Standard
In a biphasic mixture of intrinsically incompressible solid and fluid constituents,
the
\begin_inset Formula $\mathbf{u}-p$
\end_inset
formulation adopted in FEBio implies that the normal component of the relative fluid flux is a natural boundary condition.
If this boundary condition is not explicitly prescribed,
the code automatically assumes that it is equal to zero.
Therefore,
biphasic boundaries are impermeable by default.
(To implement a free-draining boundary,
the fluid pressure nodal degrees of freedom should be set to zero.)
\end_layout
\begin_layout Standard
The flux of fluid relative to the solid matrix is given by the vector
\begin_inset Formula $\mathbf{w}$
\end_inset
.
Since viscosity is not explicitly modeled in a biphasic material,
the tangential component of
\begin_inset Formula $\mathbf{w}$
\end_inset
on a boundary surface may not be prescribed.
Only the normal component of the relative fluid flux,
\begin_inset Formula $w_{n}=\mathbf{w}\cdot\mathbf{n}$
\end_inset
,
represents a natural boundary condition.
To prescribe a value for
\begin_inset Formula $w_{n}$
\end_inset
on a surface,
use:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\shape italic
flux
\shape default
parameter defines the flux that will be applied to the surface.
The optional parameter
\shape italic
lc
\shape default
defines a loadcurve for the normal flux evolution.
If omitted a constant fluid flux is applied.
\end_layout
\begin_layout Standard
When
\shape italic
linear
\shape default
is set to zero (default) it means that the flux matches the prescribed value even if the surface on which it is applied changes in area as it deforms.
Therefore,
the net volumetric flow rate across the surface changes with changes in area.
This type of boundary condition is useful if the fluid flux is known in the current configuration.
\end_layout
\begin_layout Standard
When
\shape italic
linear
\shape default
is set to non-zero it means that the prescribed flux produces a volumetric flow rate based on the undeformed surface area in the reference configuration.
Therefore,
the flux in the current configuration does not match the prescribed value.
This type of boundary condition is useful if the net volumetric flow rate across the surface is known.
For example:
Let
\begin_inset Formula $Q$
\end_inset
be the known volumetric flow rate,
let
\begin_inset Formula $A_{\mathrm{0}}$
\end_inset
be the surface area in the reference configuration (a constant).
Using
\shape italic
\begin_inset Quotes eld
\end_inset
linear
\begin_inset Quotes erd
\end_inset
\shape default
means that the user prescribes
\begin_inset Formula $Q$
\end_inset
/
\begin_inset Formula $A_{\mathrm{0}}$
\end_inset
as the flux boundary condition.
(However,
regardless of the
\shape italic
type
\shape default
,
the fluid flux saved in the output file has a normal component equal to
\begin_inset Formula $Q$
\end_inset
/
\begin_inset Formula $A$
\end_inset
,
where
\begin_inset Formula $A=$
\end_inset
area in current configuration.)
\end_layout
\begin_layout Standard
Prescribing
\begin_inset Formula $w_{n}$
\end_inset
on a free surface works only if the nodal displacements of the corresponding faces are also prescribed.
If the nodal displacements are not known a priori,
the proper boundary condition calls for prescribing the normal component of the mixture velocity,
\begin_inset Formula $v_{n}=\left(\mathbf{v}^{s}+\mathbf{w}\right)\cdot\mathbf{n}$
\end_inset
.
To prescribe the value of
\begin_inset Formula $v_{n}$
\end_inset
on a surface,
use
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
For example,
this boundary condition may be used when modeling a permeation problem through a biphasic material,
when the upstream fluid velocity is prescribed,
\begin_inset Formula $v_{n}=v_{0}$
\end_inset
.
If the upstream face is free,
the companion boundary condition would be to let
\begin_inset Formula $t_{n}^{e}=0$
\end_inset
on that face as well.
\end_layout
\begin_layout Subsubsection
Multiphasic Solute Flux
\begin_inset CommandInset label
LatexCommand label
name "subsec:Solute-Flux"
\end_inset
\end_layout
\begin_layout Standard
In biphasic-solute and multiphasic analyses the molar flux of a solute
\begin_inset Formula $\iota$
\end_inset
,
given by the vector
\begin_inset Formula $\mathbf{j}^{\iota}=\varphi^{w}c^{\iota}\left(\mathbf{v}^{\iota}-\mathbf{v}^{s}\right)$
\end_inset
,
is evaluated relative to the solid matrix;
it includes a diffusive component as well as a convective component contributed by the fluid flux
\begin_inset Formula $\mathbf{w}$
\end_inset
relative to the solid,
see eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bs-fluxes-w-j"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
Since solute viscosity is not explicitly modeled,
the tangential component of
\begin_inset Formula $\mathbf{j}^{\iota}$
\end_inset
on a boundary surface may not be prescribed.
Only the normal component of the relative solute flux,
\begin_inset Formula $j_{n}^{\iota}=\mathbf{j}^{\iota}\cdot\mathbf{n}$
\end_inset
,
represents a natural boundary condition.
Since a multiphasic mixture may contain electrically charged solutes,
the solute flux that must be prescribed as a boundary condition is the effective solute flux
\begin_inset Formula $\tilde{j}_{n}^{\iota}=j_{n}^{\iota}+\sum_{\gamma}z^{\gamma}j_{n}^{\gamma}$
\end_inset
,
as explained in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Prescribed-Effective-Solute-Flux"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
To prescribe a value for
\begin_inset Formula $\tilde{j}_{n}^{\iota}$
\end_inset
on a surface,
use:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
solute_name
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The parameter
\shape italic
solute_id
\shape default
specifies to which solute this flux condition applies,
referencing the corresponding list of solute names in the Globals section (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solutes"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Standard
The
\shape italic
flux
\shape default
element defines the flux magnitude.
The optional parameter
\shape italic
lc
\shape default
defines a loadcurve for the normal flux evolution.
If omitted a constant flux is applied.
\end_layout
\begin_layout Standard
When
\shape italic
linear
\shape default
is set to 0 (default) it means that the flux matches the prescribed value even if the surface on which it is applied changes in area as it deforms.
Therefore,
the net molar flow rate across the surface changes with changes in area.
This type of boundary condition is useful if the solute molar flux is known in the current configuration.
\end_layout
\begin_layout Standard
When
\shape italic
linear
\shape default
is set to non-zero it means that the prescribed flux produces a molar flow rate based on the undeformed surface area in the reference configuration.
Therefore,
the flux in the current configuration does not match the prescribed value.
This type of boundary condition is useful if the net molar flow rate across the surface is known.
For example:
Let
\begin_inset Formula $Q$
\end_inset
be the known molar flow rate (in units of moles per time [
\series bold
n
\series default
/
\series bold
t
\series default
]),
let
\begin_inset Formula $A_{\mathrm{0}}$
\end_inset
be the surface area in the reference configuration (a constant).
Using
\shape italic
linear
\shape default
means that the user prescribes
\begin_inset Formula $Q$
\end_inset
/
\begin_inset Formula $A_{\mathrm{0}}$
\end_inset
as the flux boundary condition (in units of moles per area per time [
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}\cdot$
\end_inset
\series bold
t
\series default
]).
However,
regardless of the
\shape italic
type
\shape default
,
the solute molar flux saved in the output file has a normal component equal to
\begin_inset Formula $Q$
\end_inset
/
\begin_inset Formula $A$
\end_inset
,
where
\begin_inset Formula $A=$
\end_inset
area in current configuration.
The
\emph on
shell_bottom
\emph default
tag should be set to 1 (true) when prescribing the flux on the bottom surface of a multiphasic shell.
\end_layout
\begin_layout Subsubsection
Solute Flux
\begin_inset CommandInset label
LatexCommand label
name "subsec:Solute-Flux-1"
\end_inset
\end_layout
\begin_layout Standard
In fluid-solutes analyses the molar flux of solute
\begin_inset Formula $\iota$
\end_inset
,
given by the vector
\begin_inset Formula $\mathbf{j}^{\iota}=c^{\iota}\left(\mathbf{v}^{\iota}-\mathbf{v}^{f}\right)$
\end_inset
,
is evaluated relative to the solvent (fluid);
it only includes a diffusive contribution relative to the solvent.
Since solute viscosity is not explicitly modeled,
the tangential component of
\begin_inset Formula $\mathbf{j}^{\iota}$
\end_inset
on a boundary surface may not be prescribed.
Only the normal component of the relative solute flux,
\begin_inset Formula $j_{n}^{\iota}=\mathbf{j}^{\iota}\cdot\mathbf{n}$
\end_inset
,
represents a natural boundary condition.
Since a fluid-solutes mixture may contain electrically charged solutes,
the solute flux that must be prescribed as a boundary condition is the effective solute flux
\begin_inset Formula $\tilde{j}_{n}^{\iota}=j_{n}^{\iota}+\sum_{\gamma}z^{\gamma}j_{n}^{\gamma}$
\end_inset
,
such as that in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:normal-effective-solute-flux"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
To prescribe a value for
\begin_inset Formula $\tilde{j}_{n}^{\iota}$
\end_inset
on a surface,
use:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
solute_name
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The parameter
\shape italic
solute_id
\shape default
specifies to which solute this flux condition applies,
referencing the corresponding list of solute names in the Globals section (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solutes"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Standard
The
\shape italic
flux
\shape default
element defines the flux magnitude.
The optional parameter
\shape italic
lc
\shape default
defines a loadcurve for the normal flux evolution.
If omitted a constant flux is applied.
\end_layout
\begin_layout Subsubsection
Multiphasic Solute Natural Flux
\begin_inset CommandInset label
LatexCommand label
name "subsec:Solute-Natural-Flux"
\end_inset
\end_layout
\begin_layout Standard
This surface load can be prescribed on a multiphasic boundary where a natural solute flux is desired.
On this boundary,
the solute is convected with the solvent according to
\begin_inset Formula $j_{n}=cw_{n}$
\end_inset
.
The implication of this surface load is that there is no diffusive hindrance to solute transport on the external side of the boundary.
Here,
\begin_inset Formula $c$
\end_inset
is the average solute concentration and
\begin_inset Formula $\mathbf{w}$
\end_inset
is the average solvent volumetric flux in the finite element connected to the boundary face on which this surface load is prescribed.
The normal solvent flux
\begin_inset Formula $w_{n}$
\end_inset
is evaluated as
\begin_inset Formula $\mathbf{w}\cdot\mathbf{n}$
\end_inset
using the normal
\begin_inset Formula $\mathbf{n}$
\end_inset
on the boundary.
There are no user-specified parameters in this surface load (other than specifying the solute for which it applies,
and whether the boundary is the bottom of a shell domain).
To prescribe a solute natural flux on a surface,
use:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
solute_name
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The parameter
\shape italic
solute_id
\shape default
specifies to which solute this flux condition applies,
referencing the corresponding list of solute names in the Globals section (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solutes"
nolink "false"
\end_inset
).
The parameter
\emph on
update
\emph default
is a boolean flag (0=
\emph on
false
\emph default
,
1=
\emph on
true
\emph default
,
default is
\emph on
false
\emph default
) which,
when set to
\emph on
true
\emph default
,
initializes the effective solute concentration of surface nodes to the average value of concentrations within the underlying elements,
at each iteration.
You may set this flag to
\emph on
true
\emph default
when the iterative numerical solution fails to converge.
This surface load is only needed for biphasic-solute and multiphasic analyses,
since
\begin_inset Formula $\tilde{j}_{n}^{\iota}=0$
\end_inset
is the natural boundary condition for fluid-solutes analyses.
\end_layout
\begin_layout Subsubsection
Heat Flux
\begin_inset CommandInset label
LatexCommand label
name "subsec:Heat-Flux"
\end_inset
\end_layout
\begin_layout Standard
A heat flux can be defined for heat transfer analyses using the
\shape italic
surface_load
\shape default
element with type set to
\shape italic
heatflux
\shape default
element.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The heat flux element takes two parameters,
namely
\shape italic
flux
\shape default
which defines the flux that will be applied.
It has an optional
\shape italic
lc
\shape default
attribute which defines the load curve for this parameter.
If omitted,
a constant heat flux will be applied.
The other (optional) parameter is the
\shape italic
value
\shape default
parameter which can be used to define a different flux value for each surface facet.
\end_layout
\begin_layout Subsubsection
Convective Heat Flux
\begin_inset CommandInset label
LatexCommand label
name "subsec:Convective-Heat-Flux"
\end_inset
\end_layout
\begin_layout Standard
A convective heat flux can be defined to a surface that is cooled (or heated) by exposure to an ambient temperature.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\shape italic
hc
\shape default
parameter defines the heat transfer coefficient.
The ambient temperature is defined by the
\shape italic
Ta
\shape default
parameter.
It takes an optional load curve defined through the
\shape italic
lc
\shape default
attribute.
The
\shape italic
value
\shape default
parameter with the
\shape italic
surface_data
\shape default
attribute can be defined to define a different temperature value for each surface facet (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:generator"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Subsubsection
Fluid Traction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fluid-Traction"
\end_inset
\end_layout
\begin_layout Standard
In a fluid or fluid-FSI analysis,
the Cauchy stress is given by
\begin_inset Formula $\boldsymbol{\sigma}=-p\mathbf{I}+\boldsymbol{\tau}$
\end_inset
,
where
\begin_inset Formula $p$
\end_inset
is the elastic pressure and
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
is the viscous stress.
The traction on a fluid surface with outward normal
\begin_inset Formula $\mathbf{n}$
\end_inset
is given by
\begin_inset Formula $\mathbf{t}=\boldsymbol{\sigma}\cdot\mathbf{n}=-p\mathbf{n}+\mathbf{t}^{\tau}$
\end_inset
,
where
\begin_inset Formula $\mathbf{t}^{\tau}=\boldsymbol{\tau}\cdot\mathbf{n}$
\end_inset
is the viscous component of the traction.
The
\emph on
fluid traction
\emph default
surface load prescribes
\begin_inset Formula $\mathbf{t}^{\tau}$
\end_inset
on a boundary surface.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Fluid Pressure
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fluid-Pressure"
\end_inset
\end_layout
\begin_layout Standard
In a fluid or fluid-FSI analysis,
the Cauchy stress is given by
\begin_inset Formula $\boldsymbol{\sigma}=-p\mathbf{I}+\boldsymbol{\tau}$
\end_inset
,
where
\begin_inset Formula $p$
\end_inset
is the elastic pressure and
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
is the viscous stress.
The
\emph on
fluid pressure
\emph default
surface load prescribes
\begin_inset Formula $p$
\end_inset
on a boundary surface.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.05
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
This boundary condition internally solves for the fluid dilatation
\begin_inset Formula $e^{f}$
\end_inset
for the user-prescribed pressure
\begin_inset Formula $p$
\end_inset
,
using the user-selected equation of state from the list given in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:fluid-pressure-state"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
Then
\begin_inset Formula $e^{f}$
\end_inset
is prescribed as an essential boundary condition on the selected surface.
\end_layout
\begin_layout Subsubsection
Fluid Normal Traction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fluid-Normal-Traction"
\end_inset
\end_layout
\begin_layout Standard
In a fluid or fluid-FSI analysis,
the normal component
\begin_inset Formula $t_{n}^{\tau}=\mathbf{t}^{\tau}\cdot\mathbf{n}$
\end_inset
of the viscous traction
\begin_inset Formula $\mathbf{t}^{\tau}$
\end_inset
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Fluid-Traction"
nolink "false"
\end_inset
) may be prescribed on a boundary surface in a fluid analysis.
The
\emph on
fluid normal traction
\emph default
surface load prescribes
\begin_inset Formula $t_{n}^{\tau}$
\end_inset
on a boundary surface.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Fluid Backflow Stabilization
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fluid-Backflow-Stabilization"
\end_inset
\end_layout
\begin_layout Standard
In a fluid or fluid-FSI analysis,
this boundary condition prescribes the normal component of the viscous traction (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Fluid-Traction"
nolink "false"
\end_inset
),
\begin_inset Formula $t_{n}^{\tau}=\mathbf{t}^{\tau}\cdot\mathbf{n}$
\end_inset
,
such that it opposes backflow,
i.e.,
when
\begin_inset Formula $v_{n}=\mathbf{v}\cdot\mathbf{n}$
\end_inset
is negative.
Specifically,
\begin_inset Formula $t_{n}^{\tau}=\beta\rho_{r}v_{n}^{2}$
\end_inset
when
\begin_inset Formula $v_{n}<0$
\end_inset
and
\begin_inset Formula $0$
\end_inset
otherwise,
where
\begin_inset Formula $\beta$
\end_inset
is a unitless user-defined parameter (typical values may range from 0 to 1) and
\begin_inset Formula $\rho_{r}$
\end_inset
is the referential fluid density.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Fluid Tangential Stabilization
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fluid-Tangential-Stabilization"
\end_inset
\end_layout
\begin_layout Standard
In a fluid or fluid-FSI analysis,
this boundary condition prescribes the tangential component of the viscous traction (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Fluid-Traction"
nolink "false"
\end_inset
),
\begin_inset Formula $\mathbf{t}_{t}^{\tau}=\left(\mathbf{I}-\mathbf{n}\otimes\mathbf{n}\right)\cdot\mathbf{t}^{\tau}$
\end_inset
,
such that it opposes the tangential fluid flow
\begin_inset Formula $\mathbf{v}_{t}=\left(\mathbf{I}-\mathbf{n}\otimes\mathbf{n}\right)\cdot\mathbf{v}$
\end_inset
on the selected boundary surface,
with
\begin_inset Formula $\mathbf{n}$
\end_inset
representing the outward normal to this surface.
Specifically,
\begin_inset Formula $\mathbf{t}_{t}^{\tau}=-\beta\rho_{r}\left|\mathbf{v}_{t}\right|\mathbf{v}_{t}$
\end_inset
,
where
\begin_inset Formula $\beta$
\end_inset
is a unitless user-defined parameter (typical values may range from 0 to 1) and
\begin_inset Formula $\rho_{r}$
\end_inset
is the referential fluid density.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Fluid Tangential Damping
\end_layout
\begin_layout Standard
The
\begin_inset Quotes eld
\end_inset
\emph on
fluid tangential damping
\emph default
\begin_inset Quotes erd
\end_inset
prescribes a shear traction that opposes tangential fluid velocity on a boundary surface.
This can help stabilize inflow conditions.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
damping coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Fluid Viscous Traction
\end_layout
\begin_layout Standard
The
\begin_inset Quotes eld
\end_inset
\emph on
fluid viscous traction
\emph default
\begin_inset Quotes erd
\end_inset
is a fluid surface that has a prescribed viscous traction vector on it.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
scale
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Scale factor for the load
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 []
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
traction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The traction vector that will be applied
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0,0,0 [P]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsubsection
Fluid Normal Velocity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fluid-Normal-Velocity"
\end_inset
\end_layout
\begin_layout Standard
In a fluid or fluid-FSI analysis the fluid velocity relative to the mesh,
\begin_inset Formula $\mathbf{w}$
\end_inset
,
on a boundary surface with outward normal
\begin_inset Formula $\mathbf{n}$
\end_inset
may be decomposed into the normal component,
\begin_inset Formula $w_{n}=\mathbf{w}\cdot\mathbf{n}$
\end_inset
,
and tangential component,
\begin_inset Formula $\mathbf{w}_{\tau}=\left(\mathbf{I}-\mathbf{n}\otimes\mathbf{n}\right)\cdot\mathbf{w}=\mathbf{w}-w_{n}\mathbf{n}$
\end_inset
.
The surface load
\emph on
fluid normal velocity
\emph default
may be used to prescribe a desired value of
\begin_inset Formula $w_{n}$
\end_inset
on a boundary surface.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Optionally,
FEBio can generate a parabolic velocity profile over the named surface,
This option can be turned on using the
\emph on
parabolic
\emph default
element (0=default,
1=parabolic).
In this case,
the
\emph on
velocity
\emph default
element provides the average value of this parabolic velocity profile,
while
\emph on
value
\emph default
remains a scale factor optionally tied to a loadcurve.
The parabolic profile is calculated under the assumption of steady Poiseuille flow in an infinite tube whose cross-section has the shape of the named surface.
The parabolic velocity distribution reduces to zero only on portions of the boundary curve of the named surface where the user has fixed all three components of the fluid velocity (no-slip condition).
On remaining portions of this boundary curve,
symmetry conditions are assumed for the three-dimensional parabolic normal velocity profile.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
-1.0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
If an arbitrary distribution with different scalar value needs to be specified for each facet,
use the following syntax,
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
-1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
and provide the facet values in a user-defined
\emph on
SurfaceData
\emph default
map with
\emph on
name="inlet"
\emph default
and
\emph on
data_type="scalar"
\emph default
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:generator"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Standard
By default,
this condition only prescribes the natural boundary condition
\begin_inset Formula $w_{n}$
\end_inset
,
leaving
\begin_inset Formula $\mathbf{w}_{\tau}$
\end_inset
free.
Optionally,
it is possible to also enforce
\begin_inset Formula $\mathbf{w}_{\tau}=\mathbf{0}$
\end_inset
by prescribing essential boundary conditions on the wx,
wy and wz components of
\begin_inset Formula $\mathbf{w}=w_{n}\mathbf{n}$
\end_inset
at the nodes of each facet,
based on the value of
\begin_inset Formula $\mathbf{n}$
\end_inset
at each node (obtained by averaging
\begin_inset Formula $\mathbf{n}$
\end_inset
from adjoining facets).
This option may be turned on using the
\emph on
prescribe_nodal_velocities
\emph default
element (0=default,
1=prescribed),
for example,
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
-1.0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
When the fluid is prescribed on a surface boundary,
better numerical convergence is achieved if the fluid dilatation is also prescribed on the rim (the boundary curve) of that surface boundary.
While this can be done explicitly,
a better option is to set the fluid dilatation on the rim to match the average pressure on the surface boundary,
calculated during the analysis.
To select this option,
use the
\emph on
prescribe_rim_pressure
\emph default
element (0=default,
1=prescribed),
for example,
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
-1.0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Note that this
\emph on
prescribe_rim_pressure
\emph default
option will not work if the mesh of the boundary surface has no internal nodes.
\end_layout
\begin_layout Subsubsection
Fluid Velocity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fluid-Velocity"
\end_inset
\end_layout
\begin_layout Standard
In a fluid or fluid-FSI analysis,
this boundary condition prescribes the fluid velocity vector relative to the mesh,
\begin_inset Formula $\mathbf{w}$
\end_inset
,
on a named surface,
simultaneously satisfying the natural boundary condition for
\begin_inset Formula $w_{n}=\mathbf{w}\cdot\mathbf{n}$
\end_inset
and prescribing essential boundary conditions on the wx,
wy and wz components of
\begin_inset Formula $\mathbf{w}$
\end_inset
at the nodes of each facet,
based on the value of
\begin_inset Formula $\mathbf{n}$
\end_inset
at each node (obtained by averaging
\begin_inset Formula $\mathbf{n}$
\end_inset
from adjoining facets).
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
If a different vector value needs to be specified for each facet,
use the following syntax,
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
and provide the facet values in a user-defined
\emph on
SurfaceData
\emph default
map with
\emph on
name="inlet"
\emph default
and
\emph on
data_type="vec3"
\emph default
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:generator"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Subsubsection
Fluid Rotational Velocity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fluid-Rotational-Velocity"
\end_inset
\end_layout
\begin_layout Standard
This boundary condition prescribes a rotational velocity on an axisymmetric surface.
It is the user's responsibility to ensure that the surface is axisymmetric.
The angular velocity
\begin_inset Formula $\boldsymbol{\omega}=\omega\mathbf{n}$
\end_inset
is prescribed by specifying the angular speed
\begin_inset Formula $\omega$
\end_inset
and the unit vector along the axis of rotation (axis of symmetry)
\begin_inset Formula $\mathbf{n}$
\end_inset
.
The user-defined vector
\begin_inset Formula $\mathbf{n}$
\end_inset
is automatically normalized.
If the axis does not pass through the origin,
the user may specify any point
\begin_inset Formula $\mathbf{p}$
\end_inset
on the axis.
The fluid velocity relative to the mesh,
\begin_inset Formula $\mathbf{w}$
\end_inset
,
for nodes on the selected surface is evaluated from
\begin_inset Formula $\mathbf{w}=\boldsymbol{\omega}\times\mathbf{r}$
\end_inset
,
where
\begin_inset Formula $\mathbf{r}=\left(\mathbf{I}-\mathbf{n}\otimes\mathbf{n}\right)\cdot\left(\mathbf{x}-\mathbf{p}\right)$
\end_inset
is the shortest vector from the axis to the node and
\begin_inset Formula $\mathbf{x}$
\end_inset
is the nodal position.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
//!
\end_layout
\begin_layout Standard
Though this boundary condition may be used in fluid-FSI analyses,
it is most relevant for standard fluid analyses where the mesh is stationary.
\end_layout
\begin_layout Subsubsection
Fluid-FSI Traction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fluid-FSI-Traction"
\end_inset
\end_layout
\begin_layout Standard
In a fluid-FSI analysis,
the fluid traction across an interface between a
\emph on
fluid-FSI
\emph default
material and a solid domain must be prescribed explicitly as a traction boundary condition on the solid domain.
Otherwise,
the solid domain cannot sense the fluid pressure and viscous traction.
Users must identify each surface on which this FSI surface load must be prescribed.
There are no user-defined parameters for this surface load.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
This surface load must also be prescribed on free fluid surfaces (such as the surface of the fluid in open channel flow) to allow those surfaces to deform in response to the fluid stresses (e.g.,
producing surface waves).
(Do not apply this surface load on inlet or outlet boundaries through which fluid flows.)
\end_layout
\begin_layout Subsubsection
Biphasic-FSI Traction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Biphasic-FSI-Traction"
\end_inset
\end_layout
\begin_layout Standard
In a fluid-FSI analysis,
the fluid traction across an interface between a
\emph on
biphasic-FSI
\emph default
material and a solid domain must be prescribed explicitly as a traction boundary condition on the solid domain.
Otherwise,
the solid domain cannot sense the fluid pressure and viscous traction.
Users must identify each surface on which this FSI surface load must be prescribed.
There are no user-defined parameters for this surface load.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
This surface load must also be prescribed on free fluid surfaces (such as the surface of the fluid in open channel flow) to allow those surfaces to deform in response to the fluid stresses (e.g.,
producing surface waves).
(Do not apply this surface load on inlet or outlet boundaries through which fluid flows.)
\end_layout
\begin_layout Subsubsection
Multiphasic-FSI Traction
\begin_inset CommandInset label
LatexCommand label
name "subsec:multiphasic-FSI-Traction"
\end_inset
\end_layout
\begin_layout Standard
In a fluid-FSI analysis,
the fluid traction across an interface between a
\emph on
multiphasic-FSI
\emph default
material and a solid domain must be prescribed explicitly as a traction boundary condition on the solid domain.
Otherwise,
the solid domain cannot sense the fluid pressure and viscous traction.
Users must identify each surface on which this FSI surface load must be prescribed.
There are no user-defined parameters for this surface load.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
This surface load must also be prescribed on free fluid surfaces (such as the surface of the fluid in open channel flow) to allow those surfaces to deform in response to the fluid stresses (e.g.,
producing surface waves).
(Do not apply this surface load on inlet or outlet boundaries through which fluid flows.)
\end_layout
\begin_layout Subsubsection
Solute Backflow Stabilization
\begin_inset CommandInset label
LatexCommand label
name "subsec:Solute-Backflow-Stabilization"
\end_inset
\end_layout
\begin_layout Standard
In a fluid-solutes analysis this surface load checks for the presence of solvent (fluid) backflow,
i.e.,
when
\begin_inset Formula $v_{n}^{f}=\mathbf{v}^{f}\cdot\mathbf{n}$
\end_inset
is negative.
When this condition is encountered,
the effective concentration of the selected solute (
\emph on
solute_id
\emph default
) is set to its converged value from the previous time step.
Otherwise,
the natural boundary condition
\begin_inset Formula $\tilde{j}_{n}=0$
\end_inset
(zero diffusive solute flux relative to the solvent) prevails.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
neutral
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Fluid Mixture Viscous Traction
\end_layout
\begin_layout Standard
The
\begin_inset Quotes eld
\end_inset
\emph on
fluid mixture viscous traction
\emph default
\begin_inset Quotes erd
\end_inset
is a fluid surface that has a prescribed viscous traction vector on it.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
scale
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Scale factor for the load
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 []
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
traction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The traction vector that will be applied
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0,0,0 [P]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsubsection
Pressure Stabilization
\end_layout
\begin_layout Standard
The
\begin_inset Quotes eld
\end_inset
\emph on
pressure_stabilization
\emph default
\begin_inset Quotes erd
\end_inset
surface load is a pseudo-surface load that is used to calculate the pressure stabilization time constant based on the properties of biphasic elements under that surface.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
stabilize
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Turn stabilization on or off (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
on
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments
\emph default
:
\end_layout
\begin_layout Enumerate
The
\emph on
stabilize
\emph default
parameter is currently ignored so adding this feature will always perform the stabilization.
\end_layout
\begin_layout Subsection
Body Loads
\begin_inset CommandInset label
LatexCommand label
name "subsec:Body-Loads"
\end_inset
\end_layout
\begin_layout Standard
A body load can be used to define a source term to the model.
The following sections define the different type of body loads that can be applied.
In the case of body forces,
these body loads represent the body force per mass,
\begin_inset Formula $\mathbf{b}$
\end_inset
,
which appears in the momentum balance as
\begin_inset Formula
\[
\rho\mathbf{a}=\divg\boldsymbol{\sigma}+\rho\mathbf{b}\,,
\]
\end_inset
where
\begin_inset Formula $\rho$
\end_inset
is the mass density,
\begin_inset Formula $\mathbf{a}$
\end_inset
is the acceleration (set to zero in quasi-static analyses),
and
\begin_inset Formula $\boldsymbol{\sigma}$
\end_inset
is the Cauchy stress tensor.
\end_layout
\begin_layout Subsubsection
Constant Body Force
\begin_inset CommandInset label
LatexCommand label
name "subsec:Constant-Body-Force"
\end_inset
\end_layout
\begin_layout Standard
This constant body force per mass
\begin_inset Formula $\mathbf{b}$
\end_inset
is defined as a 3D vector.
Each component can be associated with a load curve to define a time dependent body force.
Only the non-zero components need to be defined.
This type of body force is spatially homogeneous,
though it may vary with time when associated with a load curve:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\shape italic
lc
\shape default
attribute defines the load curve to use for the corresponding component.
The values of the components can be used to define scale factors for the load values.
\end_layout
\begin_layout Subsubsection
Non-Constant Body Force
\begin_inset CommandInset label
LatexCommand label
name "subsec:Non-Constant-Body-Force"
\end_inset
\end_layout
\begin_layout Standard
This body force per mass
\begin_inset Formula $\mathbf{b}$
\end_inset
may be spatially inhomogeneous.
The spatial inhomogeneity may be specified using a formula with variables X,
Y,
Z.
For example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
X+Y+Z
\end_layout
\begin_layout LyX-Code
X-Y-Z
\end_layout
\begin_layout LyX-Code
X*X+Z
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Centrifugal Body Force
\begin_inset CommandInset label
LatexCommand label
name "subsec:Centrifugal-Force"
\end_inset
\end_layout
\begin_layout Standard
A centrifugal body force per mass
\begin_inset Formula $\mathbf{b}=\omega^{2}r\mathbf{e}_{r}$
\end_inset
may be used for bodies undergoing steady-state rotation with angular speed
\begin_inset Formula $\omega$
\end_inset
about a rotation axis directed along
\begin_inset Formula $\mathbf{n}$
\end_inset
and passing through the rotation center
\begin_inset Formula $\mathbf{c}$
\end_inset
.
Here,
\begin_inset Formula $r$
\end_inset
represents the distance of each material point from the axis of rotation,
and
\begin_inset Formula $\mathbf{e}_{r}$
\end_inset
is the radial unit vector from the axis of rotation,
both of which are calculated internally from the knowledge of
\begin_inset Formula $\mathbf{n}$
\end_inset
and
\begin_inset Formula $\mathbf{c}$
\end_inset
.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0.707,0.707,0
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Heat Source
\begin_inset CommandInset label
LatexCommand label
name "subsec:Heat-Source"
\end_inset
\end_layout
\begin_layout Standard
A heat source can be defined using the
\shape italic
heat_source
\shape default
type.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Surface Attraction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Surface-Attraction"
\end_inset
\end_layout
\begin_layout Standard
A surface attraction body force can be used to attract a mesh toward a boundary surface,
for the purpose of creating a mesh bias.
This can be useful for fluid analyses where a finer mesh is needed in the vicinity of a no-slip boundary.
The benefit of this tool over other existing tools for creating a biased mesh is its ability to work with structured and unstructured meshes,
as well as linear and higher-order elements.
\end_layout
\begin_layout Standard
For each element in the mesh,
its shortest distance
\begin_inset Formula $r$
\end_inset
to the selected boundary surface is evaluated using a surface projection algorithm.
Then,
an attractive body force per mass,
\begin_inset Formula
\[
\mathbf{b}=s\exp\left(-\frac{r}{\rho}\right)\mathbf{n}
\]
\end_inset
is evaluated along the unit vector
\begin_inset Formula $\mathbf{n}$
\end_inset
directed along the shortest projection distance.
Here,
\begin_inset Formula $\rho$
\end_inset
is a characteristic boundary layer thickness (
\emph on
blt
\emph default
) and
\begin_inset Formula $s$
\end_inset
is a scale factor for the body force (
\emph on
bsf
\emph default
),
whose value may be adjusted relative to account for the stiffness of the elastic solid material assigned to the mesh.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
20
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
0.01
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Note that this body force requires the specification of an attractive surface;
optionally,
it also accepts the specification of the element set subjected to this attractive body force.
The
\emph on
search_radius
\emph default
and
\emph on
search_tol
\emph default
parameters are used for the projection algorithm.
They have the same meaning as in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Sliding-Interfaces"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Subsubsection
Moving frame
\begin_inset CommandInset label
LatexCommand label
name "subsec:Moving-frame"
\end_inset
\end_layout
\begin_layout Standard
The
\emph on
moving frame
\emph default
load can be used to model the effects of being embedded in an accelerating and rotating coordinate system.
Whereas the
\emph on
centrifugal body force
\emph default
only emulates the effect of a centrifugal force and assumes a static analysis,
the moving frame load includes Coriolis effect and the effects of an accelerating coordinate system and can be used in a dynamic analysis.
\end_layout
\begin_layout Standard
The motion of the moving frame is decomposed into a translation and a rotation.
The position of a material point
\series bold
r
\series default
in the fixed inertial frame can then be related to the position in the rotating frame
\series bold
r'
\series default
via,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\mathbf{r}=\mathbf{Y}+\mathbf{R}\mathbf{r\mathit{'}}
\]
\end_inset
\end_layout
\begin_layout Standard
Here,
\series bold
Y
\series default
is the position of the origin of the moving frame and
\series bold
R
\series default
is the rotation matrix.
\end_layout
\begin_layout Standard
Substituting this into the equations of motion (i.e.
the balance of linear momentum),
results in a modified equation of motion where the effects of the moving frame can be combined into a single body load.
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\mathbf{f}=\varrho\left(\mathbf{R}^{T}\mathbf{A}+\mathbf{\dot{W}}\times\mathbf{r}'+\mathbf{W}\times\left(\mathbf{W}\times\mathbf{r}'\right)+2\mathbf{W}\times\mathbf{v}'\right)
\]
\end_inset
\end_layout
\begin_layout Standard
Here,
\series bold
A
\series default
is the linear acceleration of the moving frame,
\series bold
W
\series default
is the angular velocity of the moving frame,
measured in the moving frame (i.e.
\begin_inset Formula $\mathbf{W}=\mathbf{R}^{T}\mathbf{w},$
\end_inset
where
\series bold
w
\series default
is the angular velocity in the fixed frame),
and
\series bold
v
\series default
' is the velocity of the material point,
measured in the moving frame.
\end_layout
\begin_layout Standard
The moving frame is defined via the two vectors,
the angular velocity of the rotating frame
\series bold
w
\series default
,
and the linear acceleration of the rotating frame's origin
\series bold
A
\series default
.
The components of both vectors may be defined via load curves to make them time-dependent.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
wx
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
x-component of angular velocity
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
wy
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
y-component of angular velocity
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
wz
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
x-component of angular velocity
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
ax
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
x-component of linear acceleration
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
ay
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
y-component of linear acceleration
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
az
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
y-component of linear acceleration
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
Note that if you wish to include the effect of gravity,
do not add a separate body force load.
Instead,
modify the linear acceleration to include gravity:
\begin_inset Formula $\boldsymbol{a=}A-\boldsymbol{g}.$
\end_inset
\end_layout
\begin_layout Standard
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Mass Damping
\end_layout
\begin_layout Standard
The
\emph on
\begin_inset Quotes eld
\end_inset
mass damping
\begin_inset Quotes erd
\end_inset
\emph default
body load applies a body force that is proportional to the linear momentum density
\begin_inset Formula $\mathbf{p}=\rho\mathbf{v}$
\end_inset
,
where
\begin_inset Formula $\rho$
\end_inset
is the material density and
\begin_inset Formula $\mathbf{v}$
\end_inset
the velocity.
An additional scale factor can be used to control the strength of the force,
\begin_inset Formula $\mathbf{f}=C\mathbf{p}$
\end_inset
.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
C
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
damping coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsubsection
Fluid Centrifugal Force
\begin_inset CommandInset label
LatexCommand label
name "subsec:fluid-centrifugal-force"
\end_inset
\end_layout
\begin_layout Standard
A fluid centrifugal body force per mass
\begin_inset Formula $\mathbf{b}=\omega^{2}r\mathbf{e}_{r}$
\end_inset
may be used for bodies undergoing steady-state rotation with angular speed
\begin_inset Formula $\omega$
\end_inset
about a rotation axis directed along
\begin_inset Formula $\mathbf{n}$
\end_inset
and passing through the rotation center
\begin_inset Formula $\mathbf{c}$
\end_inset
.
Here,
\begin_inset Formula $r$
\end_inset
represents the distance of each material point from the axis of rotation,
and
\begin_inset Formula $\mathbf{e}_{r}$
\end_inset
is the radial unit vector from the axis of rotation,
both of which are calculated internally from the knowledge of
\begin_inset Formula $\mathbf{n}$
\end_inset
and
\begin_inset Formula $\mathbf{c}$
\end_inset
.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0.707,0.707,0
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Fluid Moving Frame
\end_layout
\begin_layout Standard
This body load is identical to the moving frame load described in
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Moving-frame"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
but applied to a fluid domain.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
wx
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
x-component of angular velocity
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
wy
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
y-component of angular velocity
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
wz
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
x-component of angular velocity
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
ax
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
x-component of linear acceleration
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
ay
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
y-component of linear acceleration
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
az
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
y-component of linear acceleration
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Contact Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Contact-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
Contact
\shape default
section defines all the contact interfaces.
Contact boundary conditions are defined with the
\shape italic
contact
\shape default
sub-element.
The
\shape italic
type
\shape default
attribute specifies the type of contact interface that is defined.
The
\shape italic
surface_pair
\shape default
attribute defines the surface pair to use for this contact definition.
The surface pair is defined the the
\emph on
Mesh
\shape italic
\emph default
\shape default
section.
For example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\shape italic
type
\shape default
can be one of the following options:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
sliding-node-on-facet,
sliding-facet-on-facet,
sliding-elastic,
sliding-biphasic,
sliding-biphasic-solute,
sliding-multiphasic
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A sliding interface that may separate (with biphasic contact for
\shape italic
sliding
\shape default
-biphasic,
biphasic-solute contact for
\shape italic
sliding-biphasic-s
\shape default
olute,
and multiphasic contact for
\shape italic
sliding-multiphasic
\shape default
)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
rigid_wall
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A sliding interface with rigid wall as secondary surface
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
rigid_joint
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A joint between two rigid bodies
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
tied-elastic,
tied-node-on-facet,
tied-facet-on-facet,
sticky,
tied-biphasic,
tied-multiphasic
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A tied interface (solid-solid,
solid-rigid,
solid-biphasic,
rigid-biphasic) or tied-biphasic interface (biphasic-biphasic).
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
contact potential
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A potential based sliding contact interface
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\series bold
A note on auto-contact
\end_layout
\begin_layout Standard
The two surfaces that participate in the contact are specified via a surface pair.
These surface pairs are defined in the SurfacePair subsection of the Mesh section of the input file.
Typically the surfaces are chosen based on the user's knowledge of where the contact will occur.
However,
for complex geometries it might not be clear where the contact will occur,
or identifying the surfaces may be cumbersome.
For this reason,
FEBio supports an auto-contact option,
where users only need to specify the parts of the primary and secondary surfaces.
From these part lists,
FEBio will extract the surfaces automatically.
To use the auto-contact,
simply specify a part list instead of the surface names when defining the surface pair.
\end_layout
\begin_layout LyX-Code
Part1
\end_layout
\begin_layout LyX-Code
Part2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\series bold
@part_list:SlidingElastic1Primary
\series default
\end_layout
\begin_layout LyX-Code
\series bold
@part_list:SlidingElastic1Secondary
\series default
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Note the
\series bold
@part_list:
\series default
prefix in front of the part list name.
\end_layout
\begin_layout Standard
Although using the auto-contact can greatly simply defining contact between parts,
it is important to keep in mind that there are a few drawbacks.
First and foremost,
the surfaces extracted from parts will likely be much larger than the contact area and this will result in a performance cost.
Second,
for complex geometries the extract surfaces may have a complex topology that may confuse some of the contact detection algorithms.
In those situations it might be beneficial to decrease the search_radius parameter (for contact algorithms that define this parameter).
\end_layout
\begin_layout Subsection
Sliding Interfaces
\begin_inset CommandInset label
LatexCommand label
name "subsec:Sliding-Interfaces"
\end_inset
\end_layout
\begin_layout Standard
A sliding interface can be used to setup a non-penetration constraint between two surfaces.
As of version 1.2,
three different sliding contact algorithms are available.
Although all three are based on the same contact enforcement method,
they all differ slightly in their implementation and have been shown to give different performance for different contact scenarios.
Each sliding contact implementation is identified by a different
\shape italic
type
\shape default
attribute.
\end_layout
\begin_layout Description
\shape italic
\emph on
sliding-node-on-facet
\begin_inset space ~
\end_inset
(N2F)
\shape default
\emph default
This is FEBio's original implementation of sliding contact.
It is based on Laursen's contact formulation
\begin_inset CommandInset citation
LatexCommand citep
key "Laursen95"
literal "true"
\end_inset
which poses the contact problem as a nonlinear constrained optimization problem.
In FEBio,
the Lagrange multipliers that enforce the contact constraints are computed either using a penalty method or the augmented Lagrangian method.
\end_layout
\begin_layout Description
\shape italic
\emph on
sliding-facet-on-facet
\begin_inset space ~
\end_inset
(F2F)
\shape default
\emph default
This implementation is identical to the
\shape italic
sliding-node-on-facet
\shape default
implementation but uses a more accurate integration rule:
where the former method uses nodal integration,
this method uses Gaussian quadrature to integrate the contact equations.
This method has been demonstrated to give additional stability and often converges when the former method does not.
\end_layout
\begin_layout Description
\shape italic
\emph on
sliding-elastic
\begin_inset space ~
\end_inset
(SE)
\shape default
\emph default
This sliding contact interface also uses facet-on-facet contact but differs in the linearization of the contact forces,
which results in a different contact stiffness matrix compared to the previous two methods.
It can be used for frictionless or frictional contact.
It may optionally be set to sustain tension to prevent contact surfaces from separating along the direction normal to the interface,
while still allowing tangential sliding.
This method sometimes performs better than the previous two methods for problems that are dominated by compression.
However,
the formulation is inherently non-symmetric and therefore will require additional memory and running time.
A symmetrized version of this implementation is available (see below),
but the symmetric version does not converge as well as the non-symmetric version.
\end_layout
\begin_layout Description
\shape italic
\emph on
sliding-biphasic
\begin_inset space ~
\end_inset
(SBP)
\shape default
\emph default
This method extends the
\emph on
sliding-elastic
\emph default
algorithm to support frictionless biphasic contact (see the next section).
This method is described in detail in
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10b"
literal "true"
\end_inset
for the frictionless case,
and in
\begin_inset CommandInset citation
LatexCommand citep
key "Zimmerman22"
literal "true"
\end_inset
for the frictional algorithm.
\end_layout
\begin_layout Description
\shape italic
\emph on
sliding-biphasic-solute
\begin_inset space ~
\end_inset
(SBS)
\shape default
\emph default
This method is similar to
\shape italic
sliding-biphasic
\shape default
.
This contact implementation supports biphasic-solute contact (see the next section)
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian12"
literal "true"
\end_inset
.
When using biphasic-solute materials,
the non-symmetric version must be used.
\end_layout
\begin_layout Description
\shape italic
\emph on
sliding-multiphasic
\begin_inset space ~
\end_inset
(SMP)
\shape default
\emph default
This method is similar to
\shape italic
sliding-biphasic-solute
\shape default
.
This contact implementation supports multiphasic contact (see the next section)
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian12"
literal "true"
\end_inset
.
When using multiphasic materials,
the non-symmetric version must be used.
\end_layout
\begin_layout Description
contact
\series bold
potential
\series default
\series bold
(CP)
\series default
The
\begin_inset Quotes eld
\end_inset
contact potential
\begin_inset Quotes erd
\end_inset
contact interface implements the method by
\begin_inset CommandInset citation
LatexCommand citep
key "KAMENSKY2018522"
literal "false"
\end_inset
.
This method defines a contact potential that generates a (repulsing) force that prevents penetration from occurring.
This contact formulation is not based on the augmented Lagrangian formulation and does not have any of the parameters in the table below.
Instead,
please see section
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:contact-potential"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for more details on this method.
\end_layout
\begin_layout Standard
The following table lists the properties that are defined for sliding interfaces (except contact potential).
It is important to note that the three different sliding implementations cannot be used interchangeably:
not all features are available for each method.
The third,
fourth and fifth column indicate if a parameter is available for a particular implementation.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
N2F
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
F2F
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
SE
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
SBP
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
SBS SMP
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
normal penalty scale factor (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
auto_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
auto-penalty calculation flag (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
update_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
updated auto-penalty calculation at each step (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
two_pass
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
two-pass flag (3)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
laugon
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
augmented Lagrangian flag (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
tolerance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
aug.
Lagrangian convergence tolerance (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
gaptol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
tolerance for gap value (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.0 (off)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
minaug
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
minimum number of augmentations (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
maxaug
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
maximum number of augmentations (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
10
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
fric_coeff
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
frictional coefficient (5)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
fric_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
tangential penalty factor (5)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
ktmult
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
tangential stiffness multiplier (5)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
seg_up
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
maximum number of segment updates (6)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
smooth_aug
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
smoothed Lagrangian augmentation (7)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
smooth_fls
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
smoothed fluid load support for friction calculation (7)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
contact_frac
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
solid-on-solid contact area fraction for friction calculation (5)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
symmetric_stiffness
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
symmetric stiffness matrix flag (8)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
search_tol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Projection search tolerance (9)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.01
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
search_radius
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
search radius (10)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
tension
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
tension flag (11)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
flip_primary
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
flip normal on primary surface
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
flip_secondary
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
flip normal on secondary surface
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
shell_bottom_primary
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
contact with bottom of shell on primary surface
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
shell_bottom_secondary
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
contact with bottom of shell on secondary surface
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
offset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
offset distance between contacting surfaces (12)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
$
\backslash
bullet$
\end_layout
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Comments:
\end_layout
\begin_layout Enumerate
If the augmented Lagrangian flag is turned off (see comment 4),
the penalty method is used to enforce the contact constraint.
In this method,
the contact traction is determined by the gap (i.e.
penetration distance) multiplied by the user-defined
\shape italic
penalty
\shape default
factor.
In the augmented Lagrangian method,
the
\shape italic
penalty
\shape default
parameter is also used but has a slightly different meaning.
In this case,
it scales the Lagrange multiplier increment.
Due to the different meanings,
the user might have to adjust the penalty factor when switching between penalty method and augmented Lagrangian method.
In general the penalty method requires a larger penalty factor to reach the same gap than the augmented Lagrangian method.
See comment 4 for more information on when to use which method.
\end_layout
\begin_layout Enumerate
Choosing a good initial penalty parameter can often be a difficult task,
since this parameter depends on material properties as well as on mesh dimensions.
For this reason,
an algorithm has been implemented in FEBio that attempts to calculate a good initial value for the penalty factor
\begin_inset Formula $\varepsilon_{i}$
\end_inset
for a particular node/integration point
\begin_inset Formula $i$
\end_inset
on the contact interface:
\begin_inset Formula
\[
\varepsilon_{i}=\frac{EA}{V}.
\]
\end_inset
Here,
\begin_inset Formula $A$
\end_inset
is the area of the element the integration point belongs to,
\begin_inset Formula $V$
\end_inset
is the element volume and
\begin_inset Formula $E$
\end_inset
is a measure of the elasticity modulus,
which is calculated from the elasticity tensor of the element.
Although the meaning of
\begin_inset Formula $E$
\end_inset
depends on the precise material formulation,
in general one can regard it as a measure of the small strain Young's modulus of the material,
when
\emph on
update_penalty
\emph default
is 0.
If update_penalty is set to 1,
\begin_inset Formula $E$
\end_inset
is recalculated at each iteration to account for the current deformation.
\end_layout
\begin_deeper
\begin_layout Standard
To use this feature,
add the following element to the contact section:
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout Standard
When the auto-penalty flag is on,
the value of the
\shape italic
penalty
\shape default
parameter serves as a scale factor for the automatically-calculated penalty factor.
\end_layout
\end_deeper
\begin_layout Enumerate
Each sliding interface consists of a
\emph on
primary
\emph default
surface and a
\emph on
secondary
\emph default
surface.
The primary surface is the surface over which the contact equations are integrated and on which the contact tractions are calculated.
The secondary surface is used to measure the gap function and to define the necessary kinematic quantities such as surface normals and tangents.
This approach is usually referred to as the
\shape italic
single-pass
\shape default
method.
When using the single-pass algorithm,
the results can be influenced by the choice of primary and secondary surfaces.
It is best to use the most tessellated surface as the primary and the coarsest as the secondary surface.
To resolve the bias issue,
one can also use a
\shape italic
two-pass
\shape default
algorithm for enforcement of the contact constraint.
In this case,
a single pass is performed first,
after which the primary and secondary surfaces are swapped and another pass is performed.
When using the two-pass method,
the definition of primary and secondary surfaces is arbitrary.
In most problems,
the single pass is sufficient to enforce contact;
with a judicious choice of primary-secondary pair and contact parameters,
good results can be obtained.
If however,
the single pass does not give good answers,
for example,
when due to the geometry's curvature the gap cannot be small enough with a single pass,
the two-pass method can be used,
although at the expense of more calculations.
\end_layout
\begin_deeper
\begin_layout Standard
If one of the contacting surfaces is rigid,
a slightly different approach is recommended.
In this case,
it is best to pick the rigid surface as the secondary surface and to use a single pass algorithm.
The reason is that the nodal degrees of freedom on the rigid surface are condensed to the rigid degrees of freedom and if the rigid surface is the primary surface,
the reaction forces may not propagate correctly to the secondary surface.
This is especially true if the rigid degrees of freedom are fixed.
\end_layout
\end_deeper
\begin_layout Enumerate
In the presence of a sliding interface (and other contact interfaces),
FEBio needs to calculate the contact tractions that prevent the two participating surfaces from penetrating.
In general these tractions can be found using the method of Lagrange multipliers.
However,
the direct calculation of these multipliers has several computational disadvantages and therefore FEBio approximates the multipliers using one of two alternative methods:
the penalty method and the augmented Lagrangian method.
In the former method,
the multipliers are approximated by the gap (i.e.
penetration distance) scaled by a suitably chosen penalty factor.
In many cases,
this method is sufficient to get good results.
Since the correctness of a contact solution is directly determined by the amount of penetration at the converged state,
the user has direct control over the quality of the solution.
By increasing the penalty factor,
the penetration is reduced.
However,
in some cases,
especially in large compression problems,
the penalty factor required to achieve an acceptable amount of penetration has to be so large that it causes numerical instabilities in the non-linear solution algorithm due to ill-conditioning of the stiffness matrix.
In these cases,
the augmented Lagrangian method might be a better choice.
In this method,
the multipliers are determined iteratively where,
in each iteration,
the multiplier's increments are determined with a penalty-like method.
The advantage of this method is twofold:
due to the iterative nature,
the method will work with a smaller penalty factor,
and in the limit,
the exact Lagrange multipliers can be recovered.
\end_layout
\begin_deeper
\begin_layout Standard
To turn on the augmented Lagrangian method,
simply add the following line to the contact section:
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout Standard
To turn off the augmented Lagrangian method,
either set the value to 0 or remove the parameter altogether.
The convergence tolerance is set as follows:
\end_layout
\begin_layout LyX-Code
0.01
\end_layout
\begin_layout Standard
With this parameter set,
the augmented Lagrangian method will iterate until the relative increment in the multipliers is less than the tolerance.
For instance,
setting the tolerance parameter to 0.01 implies that the augmented Lagrangian method will converge when there is less than a 1
\begin_inset ERT
status collapsed
\begin_layout Plain Layout
{
\end_layout
\end_inset
%
\begin_inset ERT
status collapsed
\begin_layout Plain Layout
}
\end_layout
\end_inset
change in the L2 norm of the augmented Lagrangian multiplier vector between successive augmentations.
Alternatively,
the user can also specify a tolerance for the gap value.
In this case,
the iterations will terminate when the gap norm,
which is defined as the averaged L2 norm,
(
\begin_inset Formula $\sqrt{\sum\nolimits_{i}^{2}}/N$
\end_inset
,
\begin_inset Formula $<\cdot>$
\end_inset
the Macauley Bracket) is less than the user-specified value:
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout Standard
However,
one must be careful when specifying a gap tolerance.
First note that the gap tolerance is an absolute value (unlike the
\shape italic
tolerance
\shape default
which is a relative value),
so this parameter depends on the dimensions of the model.
Also,
there are cases when a gap tolerance simply cannot be reached due to the geometry of the model in which case the augmentations may never converge.
\end_layout
\begin_layout Standard
Note that both convergence parameters may be defined at once.
In that case,
FEBio will try to satisfy both convergence criteria.
On the other hand,
setting a value of zero will turn off the convergence criteria.
For example,
the default value for
\shape italic
gaptol
\shape default
is zero,
so that FEBio will not check the gap norm by default.
\end_layout
\begin_layout Standard
Finally,
the
\shape italic
minaug
\shape default
and
\shape italic
maxaug
\shape default
can be used to set a minimum and maximum number of augmentations.
When the
\shape italic
maxaug
\shape default
value is reached,
FEBio will move on to the next timestep,
regardless of whether the force and gap tolerances have been met.
When specifying a value for
\shape italic
minaug
\shape default
,
FEBio will perform at least minaug augmentations.
\end_layout
\end_deeper
\begin_layout Enumerate
The
\shape italic
sliding-node-on-facet,
\shape default
\emph on
sliding-elastic
\emph default
,
and
\emph on
sliding-biphasic
\emph default
contact implementations support friction.
For
\emph on
node-on-facet
\emph default
,
three parameters control the frictional response:
\shape italic
fric_coeff
\shape default
is the material's friction coefficient and its value must be in the range from 0.0 to 1.0;
\shape italic
fric_penalty
\shape default
is the penalty factor that regulates the tangential traction forces,
much like the
\shape italic
penalty
\shape default
parameter regulates the normal traction force component;
the parameter
\shape italic
ktmult
\shape default
is a scale factor for the tangential stiffness matrix.
It is default to 1.0,
but it is observed that reducing this value might sometimes improve convergence.
For
\emph on
sliding-elastic
\emph default
and
\emph on
sliding-biphasic
\emph default
only
\emph on
fric_coeff
\emph default
is needed to use frictional contact.
In addition,
for
\emph on
sliding-biphasic
\emph default
,
the friction algorithm requires the specification of the solid-on-solid contact area fraction,
which is a number between 0 and 1 (see
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Theory Manual}}
\end_layout
\end_inset
).
Frictional contact is inherently dissipative and thus history-dependent.
The solution may vary with the size of time increments,
the cycle of loading,
or Lagrangian augmentations (when
\emph on
laugon
\emph default
=1).
\end_layout
\begin_layout Enumerate
In a contact problem,
FEBio calculates the projection of each node of the primary surface onto the secondary surface.
As a node slides across the secondary surface,
the corresponding surface facet can change.
However,
in some cases,
switching facets is undesirable since it might cause instabilities in the solution process or a state in which the node oscillates continuously between two adjacent facets and thus prevents FEBio from meeting the displacement convergence tolerance.
The parameter
\shape italic
seg_up
\shape default
allows the user to control the number of segment updates FEBio will perform during each time step.
For example,
a value of 4 tells FEBio it can do the segment updates during the first four iterations.
After that,
nodes will not be allowed to switch to new segments.
The default value is 0,
which means that FEBio will do a segment update each iteration of each timestep.
\end_layout
\begin_layout Enumerate
The augmented Lagrangian method may produce a non-smooth contact pressure distribution at the contact surface,
even though stresses within the underlying elements may remain relatively smoother.
Turning this flag on changes the method of updating the Lagrange multiplier to use the projection of the element stress to the corresponding contact face.
This feature only works with some element types (HEX8G8,
HEX8G1,
TET4G4,
TET4G1,
PENTA6G6,
TET10G1,
TET10G4,
TET10G8,
TET10GL11,
TET15G4,
TET15G8,
TET15G11,
TET15G15,
PYRA5G8,
PYRA13G8).
\end_layout
\begin_deeper
\begin_layout Standard
In the
\emph on
sliding-biphasic
\emph default
friction algorithm the friction coefficient depends on the fluid pressure and load support.
Smoothing this fluid load support may produce a smoother distribution of the friction coefficient over the contact interface.
\end_layout
\end_deeper
\begin_layout Enumerate
The
\shape italic
sliding-elastic,
sliding-biphasic
\shape default
,
\shape italic
sliding-biphasic-solute
\shape default
and
\shape italic
sliding-multiphasic
\shape default
contact implementations for sliding contact are inherently non-symmetric formulations.
Symmetrized versions of these algorithms do not perform as well as the nonsymmetric version so it is recommended to use the latter.
The following line in the
\emph on
contact
\emph default
element controls which version of the algorithm is used.
\end_layout
\begin_deeper
\begin_layout LyX-Code
0
\end_layout
\begin_layout Standard
A value of 1 uses the symmetric version,
whereas a value of 0 uses the non-symmetric version.
A similar line may be included in the
\emph on
Control
\emph default
element to use a non-symmetric global stiffness matrix.
In some cases,
a non-symmetric contact stiffness may converge well even when the global stiffness matrix is symmetric.
\end_layout
\end_deeper
\begin_layout Enumerate
The
\shape italic
search_tol
\shape default
parameter defines the search tolerance of the algorithm that projects nodes of the primary surface onto facets of the secondary surface.
A node that falls outside an element,
but whose distance to the closest element's edge is less than the search tolerance is still considered inside.
This can alleviate convergence problems when nodes are projected onto edges of elements and due to numerical error may be projected outside the surface.
\end_layout
\begin_layout Enumerate
The
\shape italic
search_radius
\shape default
is a dimensional search radius used by the algorithm that projects points onto facets.
When the distance between the point and the facet exceeds the dimensional search radius,
that projection is ignored.
This can alleviate convergence problems when surfaces have multiple folds and the projection produces multiple solutions,
only one of which (the closest distance) is valid.
\end_layout
\begin_layout Enumerate
The
\shape italic
tension
\shape default
flag determines whether the contact interface can sustain tension and compression (
\shape italic
tension
\shape default
=1) or only compression (
\shape italic
tension
\shape default
=0).
\end_layout
\begin_layout Enumerate
The
\emph on
offset
\emph default
distance makes it possible to maintain the contact surfaces at a distance.
This option is useful,
for example,
in fluid-structure interaction problems,
where solid structures separated by a fluid domain are pushed against each other.
Specifying a contact interface between the (internal) surfaces of the solid structures would prevent them from overlapping,
but adding an offset distance will also prevent the fluid mesh from getting squished too thin or from inverting.
These internal surfaces would also typically have FSI Traction interfaces defined on them (see Sections
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Fluid-FSI-Traction"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Biphasic-FSI-Traction"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Subsection
Biphasic Contact
\begin_inset CommandInset label
LatexCommand label
name "subsec:Biphasic-Contact"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
sliding-biphasic
\shape default
implementation for sliding interfaces can deal with biphasic contact surfaces (including biphasic-on-biphasic,
biphasic-on-elastic,
biphasic-on-rigid)
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10b,Zimmerman22"
literal "true"
\end_inset
.
It allows for the possibility to track fluid flow across the contact interface.
In other words,
fluid can flow from one side of the contact interface to the other when both contact surfaces are biphasic.
To use this feature,
the user must define an additional contact parameter,
namely:
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout Standard
In the same way that the
\shape italic
penalty
\shape default
parameter controls the contact tractions,
this parameter controls the penalty value that is used to calculate the Lagrange multipliers for the pressure constraint.
If the
\shape italic
laugon
\shape default
flag is set,
the augmented Lagrangian method is used to enforce the pressure constraint.
And if the
\shape italic
auto_penalty
\shape default
flag is defined (which is the recommended approach),
an initial guess for the pressure penalty is calculated automatically using the following formula:
\begin_inset Formula
\[
\varepsilon_{p}=\frac{kA}{V},
\]
\end_inset
where
\begin_inset Formula $A$
\end_inset
is the element's area,
\begin_inset Formula $V$
\end_inset
is the element's volume and
\begin_inset Formula $k$
\end_inset
is a measure of the permeability which is defined as one third of the trace of the material's initial permeability tensor.
\end_layout
\begin_layout Standard
When either contact surface is biphasic,
the surface outside the contact area(s) is automatically set to free-draining conditions (equivalent to setting the fluid pressure to zero).
\end_layout
\begin_layout Standard
As detailed in
\begin_inset CommandInset citation
LatexCommand citep
key "Zimmerman22"
literal "true"
\end_inset
and the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Theory Manual}}
\end_layout
\end_inset
,
the
\emph on
sliding-biphasic
\emph default
contact algorithm can include frictional contact.
The effective friction coefficient
\begin_inset Formula $\mu_{\text{eff}}$
\end_inset
in this frictional contact algorithm depends on the temporally evolving local fluid load support (the ratio of fluid pressure
\begin_inset Formula $p$
\end_inset
to the normal component of the mixture contact traction
\begin_inset Formula $t_{n}$
\end_inset
),
according to
\begin_inset Formula
\[
\mu_{\text{eff}}=\mu_{\text{eq}}\left(1+\left(1-\varphi\right)\frac{p}{t_{n}}\right)\,.
\]
\end_inset
Recall that
\begin_inset Formula $t_{n}$
\end_inset
is negative whereas
\begin_inset Formula $p$
\end_inset
is positive in compression.
Here,
\begin_inset Formula $\mu_{\text{eq}}$
\end_inset
(
\emph on
fric_coeff
\emph default
) is the friction coefficient in the limit when the fluid load support has reduced to zero,
and
\begin_inset Formula $\varphi$
\end_inset
(
\emph on
contact_frac
\emph default
) is the fraction of the apparent contact area over which the solid matrix of the primary surface contacts that of the secondary surface.
Thus,
\begin_inset Formula $1-\varphi$
\end_inset
is the fraction of the apparent contact area where fluid contacts fluid or solid.
For perfectly smooth contact surfaces one may assume that
\begin_inset Formula $\varphi=\varphi_{1}^{s}\varphi_{2}^{s}$
\end_inset
,
where
\begin_inset Formula $\varphi_{1}^{s}$
\end_inset
and
\begin_inset Formula $\varphi_{2}^{s}$
\end_inset
are the solid area (or volume) fractions of the primary and secondary contact surfaces,
respectively.
For example,
when both contact surfaces are non-porous (
\begin_inset Formula $\varphi_{1}^{s}=\varphi_{2}^{s}=1$
\end_inset
),
the effective friction coefficient reduces to
\begin_inset Formula $\mu_{\text{eff}}=\mu_{\text{eq}}$
\end_inset
.
\end_layout
\begin_layout Standard
When performing biphasic-on-rigid contact a two-pass analysis should not be used;
the rigid surface should be the secondary surface.
\end_layout
\begin_layout Subsection
Biphasic-Solute and Multiphasic Contact
\begin_inset CommandInset label
LatexCommand label
name "subsec:Biphasic-Solute-Multiphasic-Contact"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
sliding-biphasic-solute
\shape default
implementation for sliding interfaces can deal with biphasic-solute contact surfaces (including biphasic-solute-on-biphasic-solute,
biphasic-solute-on-biphasic,
biphasic-solute-on-elastic,
biphasic-solute-on-rigid) and the
\shape italic
sliding-multiphasic
\shape default
contact interface can similarly deal with multiphasic contact surfaces.
These contact interfaces allow for the possibility to track fluid and solute flow across the contact interface
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian12"
literal "true"
\end_inset
.
In other words,
fluid and solute can flow from one side of the contact interface to the other.
To use this feature,
the user must define additional contact parameters,
namely:
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0 (for sliding-biphasic-solute)
\end_layout
\begin_layout Standard
or
\end_layout
\begin_layout LyX-Code
0 (for sliding-multiphasic)
\end_layout
\begin_layout Standard
In the same way that the
\shape italic
penalty
\shape default
parameter controls the contact tractions,
these penalty parameters control the penalty values that are used to calculate the Lagrange multipliers for the pressure and concentration constraints.
If the
\shape italic
laugon
\shape default
flag is set,
the augmented Lagrangian method is used to enforce the pressure and concentration constraints.
And if the
\shape italic
auto_penalty
\shape default
flag is defined,
an initial guess for the pressure and concentration penalty is calculated automatically using the following formulas:
\begin_inset Formula
\[
\varepsilon_{p}=\frac{k\cdot A}{V}\,,\quad\varepsilon_{c}=\frac{d\cdot A}{V}\,,
\]
\end_inset
where
\begin_inset Formula $A$
\end_inset
is the element's area,
\begin_inset Formula $V$
\end_inset
is the element's volume,
\begin_inset Formula $k$
\end_inset
is a measure of the fluid permeability which is defined as one third of the trace of the material's initial permeability tensor,
and
\begin_inset Formula $d$
\end_inset
is a measure of the solute diffusivity which is defined as one third of the trace of the material's initial diffusivity tensor.
\end_layout
\begin_layout Standard
When either contact surface is biphasic-solute or multiphasic,
the surface outside the contact area(s) is automatically set to ambient conditions (equivalent to setting the effective fluid pressure and effective solute concentration to the and values,
respectively).
Ambient conditions may also be associated with a load curve,
for example:
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout Standard
When performing biphasic-solute-on-rigid or multiphasic-on-rigid contact,
a two-pass analysis should not be used;
the rigid surface should be the secondary surface.
\end_layout
\begin_layout Subsection
Rigid Wall Interfaces
\begin_inset CommandInset label
LatexCommand label
name "subsec:Rigid-Wall-Interfaces"
\end_inset
\end_layout
\begin_layout Standard
A rigid wall interface is similar to a sliding interface,
except that the secondary surface is a rigid wall.
The following properties are defined for rigid wall interfaces:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
laugon
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Augmented Lagrangian flag
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (false)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
tolerance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
augmentation tolerance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.01
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
penalty factor
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
plane
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
the plane equation for the rigid wall
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
N/A
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
offset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
the normal offset of the plane defined by the
\shape italic
plane
\shape default
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.0
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
plane
\shape default
property defines the reference plane for the rigid wall.
Its value is an array of four values:
\begin_inset Formula $a,b,c,d_{0}$
\end_inset
.
The actual plane is defined by specifying the
\shape italic
offset
\shape default
to the reference plane.
The offset parameter takes a loadcurve as an optional attribute to define the motion of the plane as a function of time.
The loadcurve defines the offset
\begin_inset Formula $h$
\end_inset
from the initial position in the direction of the plane normal:
\begin_inset Formula
\[
\begin{array}{cc}
ax+by+cz+d\left(t\right)=0, & d\left(t\right)=d_{0}+h\left(t\right)\end{array}
\]
\end_inset
So,
for example,
a rigid wall that initially lies in the xy-coordinate plane and moves in the z-direction would be specified as follows:
\end_layout
\begin_layout LyX-Code
0,0,1,0
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout Subsection
Tied Interfaces
\begin_inset CommandInset label
LatexCommand label
name "subsec:Tied-Interfaces"
\end_inset
\end_layout
\begin_layout Standard
A tied interface can be used to connect two non-conforming meshes
\begin_inset CommandInset citation
LatexCommand citep
key "Laursen93"
literal "true"
\end_inset
.
A tied interface requires the definition of both a primary and a secondary surface.
It is assumed that the nodes of the primary surface are connected to the faces of the secondary surface.
The following control parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
penalty factor
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
augmentation tolerance
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsection
Tied Elastic Interfaces
\begin_inset CommandInset label
LatexCommand label
name "subsec:Tied-Elastic-Interfaces"
\end_inset
\end_layout
\begin_layout Standard
A tied elastic interface is similar to the tied interface.
It may be used for tying solid materials.
It enforces continuity of the displacement across the interface.
The following control parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
normal penalty scale factor (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
pressure_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
pressure penalty scale factor
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
auto_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
auto-penalty calculation flag (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
update_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
update auto-penalty calculation flag (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
two_pass
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
two-pass flag (3)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
laugon
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
augmented Lagrangian flag (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
tolerance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
aug.
Lagrangian convergence tolerance (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
gaptol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
tolerance for gap value (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.0 (off)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
symmetric_stiffness
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
symmetric stiffness matrix flag (7)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
search_tol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Projection search tolerance (8)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.01
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
search_radius
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
search radius (10)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsection
Tied Biphasic Interfaces
\begin_inset CommandInset label
LatexCommand label
name "subsec:Tied-Biphasic-Interfaces"
\end_inset
\end_layout
\begin_layout Standard
A tied biphasic interface is similar to the tied interface.
It may be used for tying any combination of solid,
biphasic,
and rigid materials.
It enforces continuity of the fluid pressure across the interface when both materials are biphasic.
The following control parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
normal penalty scale factor (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
pressure_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
pressure penalty scale factor
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
auto_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
auto-penalty calculation flag (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
update_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
update auto-penalty calculation flag (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
two_pass
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
two-pass flag (3)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
laugon
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
augmented Lagrangian flag (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
tolerance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
aug.
Lagrangian convergence tolerance (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
gaptol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
tolerance for gap value (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.0 (off)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
symmetric_stiffness
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
symmetric stiffness matrix flag (7)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
search_tol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Projection search tolerance (8)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.01
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
search_radius
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
search radius (10)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsection
Tied Multiphasic Interfaces
\begin_inset CommandInset label
LatexCommand label
name "subsec:Tied-Multiphasic-Interfaces"
\end_inset
\end_layout
\begin_layout Standard
A tied multiphasic interface is similar to the tied biphasic interface.
It may be used for tying any combination of solid,
biphasic,
multiphasic and rigid materials.
It enforces continuity of the effective fluid pressure and effective solute concentrations across the interface when both materials are biphasic or multiphasic.
The following control parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
normal penalty scale factor (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
pressure_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
pressure penalty scale factor
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
concentration_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
concentration penalty scale factor
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
auto_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
auto-penalty calculation flag (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
update_penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
update auto-penalty calculation flag (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
two_pass
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
two-pass flag (3)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
laugon
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
augmented Lagrangian flag (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
tolerance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
aug.
Lagrangian convergence tolerance (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
gaptol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
tolerance for gap value (4)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.0 (off)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
symmetric_stiffness
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
symmetric stiffness matrix flag (7)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
search_tol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Projection search tolerance (8)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.01
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
search_radius
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
search radius (10)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsection
Sticky Interfaces
\begin_inset CommandInset label
LatexCommand label
name "subsec:Sticky-Interfaces"
\end_inset
\end_layout
\begin_layout Standard
A sticky interface is similar to a tied interface except that it allows for initial separation of the tied surfaces and breaking of the tie after a user-defined normal traction is exceeded.
The tie is only applied when the surfaces contact and sustained as long as the normal traction is less than the threshold.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
laugon
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
augmentation flag
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
penalty factor
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
tolerance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
augmentation tolerance
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
minaug
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
minimum number of required augmentations
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
maxaug
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
maximum number of augmentations
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
search_tolerance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
tolerance for nodal projection onto secondary surface facet
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
max_traction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
threshold for normal traction (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
snap_tol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
minimum distance for tie activation (2)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The contact surfaces are defined as in the
\shape italic
tied
\shape default
interface (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Tied-Interfaces"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Standard
\shape italic
Comments:
\end_layout
\begin_layout Enumerate
The
\shape italic
max_traction
\shape default
parameter can be used to break the tied interface after the normal traction exceeds the specified value.
Initially,
this value is set to zero,
in which case FEBio will ignore this value and the tie cannot be broken.
\end_layout
\begin_layout Enumerate
The
\shape italic
snap_tol
\shape default
parameter is used in determining the minimum distance that a primary surface node must have approached the secondary surface facet in order to snap onto the secondary surface.
The initial value is zero,
meaning a node must have penetrated the secondary surface before it will be tied to it.
\end_layout
\begin_layout Subsection
Contact Potential
\begin_inset CommandInset label
LatexCommand label
name "subsec:contact-potential"
\end_inset
\end_layout
\begin_layout Standard
The contact potential method is based on the formulation by
\begin_inset CommandInset citation
LatexCommand citep
key "KAMENSKY2018522"
literal "false"
\end_inset
.
In this formulation,
a repulsive potential is defined between two opposing surfaces.
A force is generated that aims to prevent physical contact between the two surfaces.
As a result,
there will always be a small gap between the contacting surfaces.
Note that this is the opposite of what happens for the other sliding contact interfaces,
which require physical contact (and even a little bit of penetration) before a contact force can be generated.
\end_layout
\begin_layout Standard
The type attribute for this sliding interface is
\begin_inset Quotes eld
\end_inset
\emph on
contact potential
\emph default
\begin_inset Quotes erd
\end_inset
and the following parameters can be defined.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
kc
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
force scale factor (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
p
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
order of polynomial that defines the potential (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
4
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
R_in
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Inner radius (3)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
R_out
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Outer radius (3)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
2.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
R0_min
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Minimum separation in reference frame
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
w_tol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
threshold for angle criterion
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Comments:
\end_layout
\begin_layout Enumerate
The
\emph on
kc
\emph default
parameter defines the scale factor for the force.
This has a similar purpose as the penalty factor in other sliding contact interfaces.
\end_layout
\begin_layout Enumerate
The parameter
\emph on
p
\emph default
defines the order of the potential.
The paper discusses why the value 4 is in a sense an optimal value so it is recommend to use the default value.
\end_layout
\begin_layout Enumerate
The potential is divided in an
\begin_inset Quotes eld
\end_inset
inner
\begin_inset Quotes erd
\end_inset
and
\begin_inset Quotes eld
\end_inset
outer
\begin_inset Quotes erd
\end_inset
region.
If
\emph on
r
\emph default
is the distance from a point on the primary contact surface to the opposing secondary surface,
then the
\begin_inset Quotes eld
\end_inset
inner
\begin_inset Quotes erd
\end_inset
region is defined by the criterion
\begin_inset Formula $0
\end_layout
\begin_layout LyX-Code
1e-6
\end_layout
\begin_layout LyX-Code
4
\end_layout
\begin_layout LyX-Code
0.01
\end_layout
\begin_layout LyX-Code
0.05
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Constraints Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Constraints-Section"
\end_inset
\end_layout
\begin_layout Standard
The Constraints section allows the user to enforce additional constraints to the model.
\end_layout
\begin_layout Subsection
Symmetry Plane
\begin_inset CommandInset label
LatexCommand label
name "subsec:Symmetry-Plane"
\end_inset
\end_layout
\begin_layout Standard
A symmetry plane enforces zero solid displacement normal to a user-selected plane.
This constraint is prescribed on a deformable surface of the model and is enforced for every node on that surface.
It is the user's responsibility to select only planar surfaces.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1e6
\end_layout
\begin_layout LyX-Code
1e-6
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
50
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\emph on
surface
\emph default
(SymmetryPlane01 in this example),
is defined in the
\emph on
Mesh
\emph default
section.
Let
\begin_inset Formula $\mathbf{u}$
\end_inset
denote the nodal displacement vector and let
\begin_inset Formula $\mathbf{n}$
\end_inset
denote the unit normal to the plane;
the symmetry plane constraint enforces
\begin_inset Formula $u_{n}\equiv\mathbf{u}\cdot\mathbf{n}=0$
\end_inset
using a penalty method,
optionally with augmented Lagrangian.
The reaction force needed to enforce this constraint is evaluated as
\begin_inset Formula $\varepsilon u_{n}$
\end_inset
,
where
\begin_inset Formula $\varepsilon$
\end_inset
is the user-specified
\emph on
penalty
\emph default
parameter (with units of force per length).
To use the augmented Lagrangian method,
set
\emph on
laugon
\emph default
to 1,
and the Lagrange multiplier
\begin_inset Formula $\lambda$
\end_inset
will be augmented as
\begin_inset Formula $\lambda\leftarrow\lambda+\varepsilon u_{n}$
\end_inset
.
Augmentations terminate when the relative change in
\begin_inset Formula $\lambda$
\end_inset
is less than the user-specified tolerance
\emph on
tol
\emph default
,
or when the number of augmentations exceeds
\emph on
maxaug
\emph default
.
\end_layout
\begin_layout Subsection
Frictionless Fluid Wall
\begin_inset CommandInset label
LatexCommand label
name "subsec:Frictionless-Fluid-Wall"
\end_inset
\end_layout
\begin_layout Standard
One of the natural boundary conditions for fluid analyses is to enforce zero fluid velocity normal to a boundary,
implying that this boundary is a frictionless fluid wall.
In some analyses however,
this natural boundary condition may not be enforced sufficiently well.
In such cases,
use this frictionless fluid wall linear constraint to produce a more strict enforcement of this condition.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0.2
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
In fluid-structure interaction analyses,
this constraint may be used in conjunction with the
\emph on
symmetry plane
\emph default
described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Symmetry-Plane"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
using a lower value of the
\emph on
penalty
\emph default
parameter,
as may be necessary in practice.
\end_layout
\begin_layout Subsection
Fixed Normal Displacement
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fixed-Normal-Displacement"
\end_inset
\end_layout
\begin_layout Standard
A fixed normal displacement constraint enforces zero solid displacement normal to a user-selected surface.
This constraint is prescribed on a deformable surface of the model and is enforced for every node on that surface.
It uses the local surface normal in the selected surface's reference configuration.
If the selected surface is planar,
the functionality of this constraint is equivalent to the Symmetry Plane constraint described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Symmetry-Plane"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1000
\end_layout
\begin_layout LyX-Code
0.2
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\emph on
surface
\emph default
(FixedNormalDisplacement01 in this example),
is defined in the
\emph on
Mesh
\emph default
section.
Let
\begin_inset Formula $\mathbf{u}$
\end_inset
denote the nodal displacement vector and let
\begin_inset Formula $\mathbf{n}$
\end_inset
denote the unit normal at each node of the surface;
the fixed normal displacement constraint enforces
\begin_inset Formula $u_{n}\equiv\mathbf{u}\cdot\mathbf{n}=0$
\end_inset
using a penalty method,
optionally with augmented Lagrangian.
The reaction force needed to enforce this constraint is evaluated as
\begin_inset Formula $\varepsilon u_{n}$
\end_inset
,
where
\begin_inset Formula $\varepsilon$
\end_inset
is the user-specified
\emph on
penalty
\emph default
parameter (with units of force per length).
To use the augmented Lagrangian method,
set
\emph on
laugon
\emph default
to 1,
and the Lagrange multiplier
\begin_inset Formula $\lambda$
\end_inset
will be augmented as
\begin_inset Formula $\lambda\leftarrow\lambda+\varepsilon u_{n}$
\end_inset
.
Augmentations terminate when the relative change in
\begin_inset Formula $\lambda$
\end_inset
is less than the user-specified tolerance
\emph on
tol
\emph default
,
or when the number of augmentations exceeds
\emph on
maxaug
\emph default
.
\end_layout
\begin_layout Standard
For example,
this constraint may be used on a cylindrical shaft,
over the portion of the shaft which is supported by a bearing journal.
\end_layout
\begin_layout Subsection
Normal Fluid Velocity Constraint
\begin_inset CommandInset label
LatexCommand label
name "subsec:Normal-Fluid-Velocity"
\end_inset
\end_layout
\begin_layout Standard
A normal fluid velocity constraint forces the fluid velocity to remain normal to the selected surface.
It is enforced for every node on that surface.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1e6
\end_layout
\begin_layout LyX-Code
1e-6
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
50
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\emph on
surface
\emph default
(NormalFlowSurface01 in this example),
is defined in the
\emph on
Mesh
\emph default
section.
Let
\begin_inset Formula $\mathbf{v}$
\end_inset
denote the nodal fluid velocity vector and let
\begin_inset Formula $\mathbf{n}$
\end_inset
denote the unit normal at each node;
the normal flow constraint enforces
\begin_inset Formula $\mathbf{v}=\left(\mathbf{v}\cdot\mathbf{n}\right)\mathbf{n}$
\end_inset
,
or equivalently,
\begin_inset Formula $\mathbf{v}_{\tau}=\left(\mathbf{I}-\mathbf{n}\otimes\mathbf{n}\right)\cdot\mathbf{v}=\mathbf{0}$
\end_inset
,
using a penalty method,
optionally with augmented Lagrangian.
The reaction force needed to enforce this constraint is evaluated as
\begin_inset Formula $\varepsilon\mathbf{v}_{\tau}$
\end_inset
,
where
\begin_inset Formula $\varepsilon$
\end_inset
is the user-specified
\emph on
penalty
\emph default
parameter (with units of force per velocity).
To use the augmented Lagrangian method,
set
\emph on
laugon
\emph default
to 1,
and the vectorial Lagrange multiplier
\begin_inset Formula $\boldsymbol{\lambda}$
\end_inset
will be augmented as
\begin_inset Formula $\boldsymbol{\lambda}\leftarrow\boldsymbol{\lambda}+\varepsilon\mathbf{v}_{\tau}$
\end_inset
.
Augmentations terminate when the relative change in
\begin_inset Formula $\boldsymbol{\lambda}$
\end_inset
is less than the user-specified tolerance
\emph on
tol
\emph default
,
or when the number of augmentations exceeds
\emph on
maxaug
\emph default
.
\end_layout
\begin_layout Standard
This constraint should only be used on a surface where the fluid pressure or dilatation has been fixed or prescribed.
It is not compatible with boundary conditions that prescribe the fluid velocity.
To prescribe a fluid velocity that remains normal to the selected surface,
use the surface load
\emph on
fluid normal velocity
\emph default
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Fluid-Normal-Velocity"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Subsection
Uniform Fluid Velocity Constraint
\begin_inset CommandInset label
LatexCommand label
name "subsec:Uniform-Fluid-Velocity"
\end_inset
\end_layout
\begin_layout Standard
When an inlet boundary is subjected to a prescribed fluid pressure,
the profile of the inlet fluid velocity remains unconstrained,
and this lack of constraint often leads to poor numerical performance due to the production of velocity spikes.
To avoid this problem,
use this uniform fluid velocity constraint to help stabilize inlet conditions along the direction normal to the boundary.
This constraint evaluates the average fluid velocity normal to the selected boundary,
\begin_inset Formula $\bar{v}_{n}$
\end_inset
,
then prescribes a linear constraint at every node such that
\begin_inset Formula $\mathbf{v}\cdot\mathbf{n}=\bar{v}_{n}$
\end_inset
is enforced.
For example,
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
10000
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
50
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
If a very strong enforcement of this constraint is desired,
increase the
\emph on
penalty
\emph default
and/or turn Lagrange augmentation on (
\emph on
laugon
\emph default
=1).
This constraint is not compatible with boundary conditions that prescribe the normal component of the fluid velocity on that same boundary.
\end_layout
\begin_layout Subsection
The Prestrain Update Rules
\begin_inset CommandInset label
LatexCommand label
name "subsec:The-Prestrain-Update"
\end_inset
\end_layout
\begin_layout Standard
The prestrain update rules for are implemented via non-linear constraints in FEBio.
This is done because non-linear constraints automatically participate in FEBio’s augmentation mechanism,
which allows the user to update and rerun the time step.
The following section details how to setup the update rules in the FEBio input file and discusses the currently supported rules.
\end_layout
\begin_layout Subsubsection
Using Update rules
\end_layout
\begin_layout Standard
In order to apply an update rule,
a constraint definition must be added to the Constraints section of the input file.
The type attribute is used to specify which update rule to use.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The following table lists the available update rules.
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
prestrain
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Eliminate distortion due to incompatibility
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
in-situ stretch
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Enforce the given in-situ fiber stretches
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
Below,
the supported update rules are presented in more detail.
All of them share parameters for controlling the convergence of the update algorithm and these shared parameters are listed in the following table.
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
initial value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
update
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
update flag (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
tolerance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
convergence tolerance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
min_iters
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
minimum number of iterations
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
max_iters
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
maximum number of iterations
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-1 (i.e.
ignored)
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments
\emph default
:
\end_layout
\begin_layout Enumerate
By specifying a loadcurve for the update flag,
the update can be delayed.
This can be useful if,
for instance,
the prestrain is applied incrementally and the update rule should not be applied until the full prestrain field is applied.
In that case,
specifying a loadcurve for the update flag that is zero while the prestrain is applied,
will delay the update process.
\end_layout
\begin_layout Subsubsection
prestrain update rule
\end_layout
\begin_layout Standard
The idea behind this rule is to eliminate the distortion induced by the incompatibility of the initial prestrain gradient with the reference geometry.
Thus,
we retain the original reference geometry at the cost of an altered effective prestrain field.
The update rule is given by the following equation.
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\mathbf{G^{\mathit{k+1}}}=\mathbf{G^{\mathit{k}}}\cdot\mathbf{F_{\mathit{c}}}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
This update rule does not define any additional parameters aside the ones from above.
\end_layout
\begin_layout Standard
\emph on
Example
\emph default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.01
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
The in-situ stretch update rule
\end_layout
\begin_layout Standard
The idea behind this update rule is to enforce the fiber stretch induced by the initial prestrain gradient.
As with the in-situ stretch generator option,
this rule has an isochoric version and an uniaxial version for the update rule.
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\mathbf{G}_{iso}=\mathbf{Q}\left[\begin{array}{ccc}
\lambda^{-1}\\
& \lambda^{1/2}\\
& & \lambda^{1/2}
\end{array}\right]\mathbf{Q^{\mathrm{\mathit{T}}}},\qquad\mathbf{G}_{uni}=\mathbf{Q}\left[\begin{array}{ccc}
\lambda^{-1}\\
& 1\\
& & 1
\end{array}\right]\mathbf{Q^{\mathit{T}}}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
where
\begin_inset Formula $\lambda^{2}=\mathbf{a}_{0}\cdot\mathbf{C}^{k}\cdot\mathbf{a}_{0}$
\end_inset
,
is the fiber stretch induced by the distortion.
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
initial value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
isochoric
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Choose the isochoric update rule or not
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1(=true)
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\emph on
Example
\emph default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.01
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Node Distance
\end_layout
\begin_layout Standard
A
\begin_inset Quotes eld
\end_inset
node distance
\begin_inset Quotes erd
\end_inset
constraint can be used to enforce a user-defined distance between two nodes.
The target distance can be defined as a distance relative to the initial separation between the two nodes,
or as an absolute distance.
This constraint takes the following parameters.
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
initial value
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
laugon
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Turn on augmented Lagrangian flag
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0(=false)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
augtol
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Augmentation tolerance.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.01
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
penalty
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Penalty factor for constraint enforcement
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
node
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
IDs of the two nodes
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[-1,-1] (invalid)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
minaug
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
minimum nr of augmentations
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
maxaug
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
maximum nr of augmentations
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
10
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
target
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Target distance between two nodes
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
relative
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Use relative or absolute distance
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1 (=true)
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The default configuration of this constraint is such that the initial distance between the two nodes is preserved.
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Example
\emph default
:
\end_layout
\begin_layout Standard
This example illustrates how the
\emph on
node distance
\emph default
constraint can be used to reduce the distance between two nodes to zero:
the target is set to zero and the relative flag is off so that the target is interpreted as an absolute distance.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0.01
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
17,158
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Discrete Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Discrete-Section"
\end_inset
\end_layout
\begin_layout Standard
This section defines the materials used by the discrete elements and assigns these materials to the discrete elements sets defined in the
\emph on
Mesh
\emph default
section.
The materials are defined via the
\shape italic
discrete_material
\shape default
element and the materials are assigned to discrete element sets using the
\shape italic
discrete
\shape default
element.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
2.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\shape italic
discrete_material
\shape default
and the
\shape italic
discrete
\shape default
elements are defined in more detail below.
\end_layout
\begin_layout Subsection
Discrete Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Discrete-Materials"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
discrete_material
\shape default
section defines a material that can be assigned to a discrete element set.
The
\shape italic
id
\shape default
attribute defines the material ID and the
\shape italic
type
\shape default
attribute defines the material type.
\end_layout
\begin_layout Subsubsection
Linear Spring
\end_layout
\begin_layout Standard
The linear spring has a linear force-displacement relation.
It requires the E parameter that defines the spring constant.
\end_layout
\begin_layout Standard
For example,
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
3.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Nonlinear spring
\end_layout
\begin_layout Standard
The nonlinear spring allows users to define a custom relation between a measure of stretch and the spring force.
The following parameters can be defined.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
scale
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Force scale factor.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
measure
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Measure of stretch.
(1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
force
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1D function that defines the stretch-force relationship
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comments:
\end_layout
\begin_layout Enumerate
The
\emph on
measure
\emph default
parameter can be set to one of the following values:
\end_layout
\begin_deeper
\begin_layout Enumerate
\series bold
elongation
\series default
:
Use the spring elongation,
the difference between current and original length,
as the measure of stretch.
\end_layout
\begin_layout Enumerate
\series bold
strain
\series default
:
Use the strain,
i.e.
the ratio of elongation over original length,
as the measure of stretch
\end_layout
\begin_layout Enumerate
\series bold
stretch
\series default
:
Use the ratio of current length over original length as measure of stretch.
\end_layout
\end_deeper
\begin_layout Standard
\emph on
Example
\emph default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
elongation
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
x
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Hill
\end_layout
\begin_layout Standard
The Hill discrete material defines the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
Vmax
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
maximum shortening velocity
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
ac
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
activation level
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
Fmax
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
maximum force
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
Lmax
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
strain (i.e.
stretch - 1) at which Fmax occurs.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
L0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
initial reference length
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
Sv
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
max velocity scale
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
Ftl
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
normalized tension-length curve
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
Ftv
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
normalized tension-velocity curve
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The force in the Hill discrete element is the sum of the passive element and the active element.
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
F=F_{p}+F_{a}
\]
\end_inset
\end_layout
\begin_layout Standard
The passive force is given by,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
F_{p}=\begin{cases}
Fmax\left(\exp\left(Ksh\left(l-1\right)/Lmax-1\right)/\exp\left(Ksh-1\right)\right) & ,l>1\\
0 & ,l\leqslant1
\end{cases}
\]
\end_inset
\end_layout
\begin_layout Standard
where l is the relative stretch defined by,
\begin_inset Formula $l=lm/l0$
\end_inset
and
\begin_inset Formula $lm$
\end_inset
is the discrete element length and
\begin_inset Formula $l0$
\end_inset
is either the L0 parameter,
or the initial discrete element length (if L0 is set to zero).
\end_layout
\begin_layout Standard
The active force is given by,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
Fa=ac*Fmax*Ftl\left(l\right)*Ftv\left(v\right)
\]
\end_inset
\end_layout
\begin_layout Standard
Here,
\begin_inset Formula $v$
\end_inset
,
a measure of the relative discrete element's growth speed,
is defined by,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
v=vm/\left(Vmax*Sv\left(ac\right)\right)
\]
\end_inset
\end_layout
\begin_layout Standard
where
\begin_inset Formula $vm$
\end_inset
is the actual discrete element's growth speed.
\end_layout
\begin_layout Standard
The properties Sv,
Ftl,
and Ftv,
are optional and will evaluate to 1 if omitted.
They can be defined as load curves.
See the example below.
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
50
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
1.5
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
smooth
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.0, 0
\end_layout
\begin_layout LyX-Code
0.1, 0.000258139
\end_layout
\begin_layout LyX-Code
0.2, 0.00161616
\end_layout
\begin_layout LyX-Code
0.3, 0.00740118
\end_layout
\begin_layout LyX-Code
0.4, 0.0272783
\end_layout
\begin_layout LyX-Code
0.5, 0.0820396
\end_layout
\begin_layout LyX-Code
0.6, 0.201851
\end_layout
\begin_layout LyX-Code
0.7, 0.406524
\end_layout
\begin_layout LyX-Code
0.8, 0.670275
\end_layout
\begin_layout LyX-Code
0.9, 0.904792
\end_layout
\begin_layout LyX-Code
1.0, 0.999955
\end_layout
\begin_layout LyX-Code
1.1, 0.904792
\end_layout
\begin_layout LyX-Code
1.2, 0.670275
\end_layout
\begin_layout LyX-Code
1.3, 0.406524
\end_layout
\begin_layout LyX-Code
1.4, 0.201851
\end_layout
\begin_layout LyX-Code
1.5, 0.0820396
\end_layout
\begin_layout LyX-Code
1.6, 0.0272783
\end_layout
\begin_layout LyX-Code
1.7, 0.00740118
\end_layout
\begin_layout LyX-Code
1.8, 0.00161616
\end_layout
\begin_layout LyX-Code
1.9, 0.000258139
\end_layout
\begin_layout LyX-Code
2.0, 0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Discrete Section
\begin_inset CommandInset label
LatexCommand label
name "subsec:Discrete-Section"
\end_inset
\end_layout
\begin_layout Standard
After the discrete materials are defined,
the materials are assigned to the discrete element sets that are defined in the
\emph on
Mesh
\emph default
section using the
\shape italic
discrete
\shape default
element.
This element requires two attributes:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
attribute
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
dmat
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
discrete material ID
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
discrete_set
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
discrete element set defined in the
\emph on
Mesh
\emph default
section.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Example
\emph default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Rigid Cable
\end_layout
\begin_layout Standard
A rigid cable can be used to apply a load to a series of rigid bodies that are connected at fixed points (fixed with respect to the rigid body).
The cable runs through these points and the user can prescribe the force at the end of the cable.
The rigid cable requires the following parameters.
\end_layout
\begin_layout Description
force The magnitude of the force applied at the end of the cable.
\end_layout
\begin_layout Description
force_direction The direction of the force (FEBio will normalize this vector if needed.)
\end_layout
\begin_layout Description
relative If set to 1 the coordinates of the fixed points are relative to the rigid body frame of reference,
otherwise they are in global coordinates.
\end_layout
\begin_layout Description
point For each fixed point,
enter the coordinates of the point.
This tag requires the rb attribute to denote the rigid body it is attached to.
\end_layout
\begin_layout Standard
The following shows an example.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_deeper
\begin_layout LyX-Code
1000
\end_layout
\begin_layout LyX-Code
0,0,-1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\end_deeper
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
This example defines a cable that runs through the centers of mass of two rigid bodies.
The force is applied in the -z direction at the end of the cable (i.e.
point 2).
\end_layout
\begin_layout LyX-Code
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Step Section
\end_layout
\begin_layout Standard
The analysis can be divided into separate steps,
where in each step,
different boundary and loading conditions can be applied.
Each analysis step is defined via a
\emph on
step
\emph default
section.
In each step,
the following sections can be defined:
\end_layout
\begin_layout Itemize
Control
\end_layout
\begin_layout Itemize
Initial
\end_layout
\begin_layout Itemize
Boundary
\end_layout
\begin_layout Itemize
Loads
\end_layout
\begin_layout Itemize
Constraints
\end_layout
\begin_layout Itemize
Contact
\end_layout
\begin_layout Itemize
Rigid
\end_layout
\begin_layout Standard
When a boundary condition,
(load,
constraint,
contact,
etc.,) is applied to a step,
then this boundary condition (load,
constraint,
contact,
etc.) is only active during that step.
Boundary conditions (loads,
constraints,
contacts,
etc.) that are defined in the main body of the file will persist through all the step.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
...
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
…
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
…
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
…
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
LoadData Section
\begin_inset CommandInset label
LatexCommand label
name "sec:LoadData-Section"
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
LoadData
\shape default
section is used to define load controllers.
A load controller allows users to manipulate the value of most model parameters as an explicit or implicit function of time.
A specific load controller is defined using the
\emph on
type
\emph default
attribute.
\end_layout
\begin_layout Standard
In order to make a model parameter time-dependent,
first define a load controller in the LoadData section.
Then,
use the id attribute assigned to the load controller as the value of the
\emph on
lc
\emph default
attribute.
For example,
consider the following load controller was defined in the LoadData section.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
2.0*sin(pi*t)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The id assigned to this load controller is 1.
Then,
this load controller can be used,
for instance,
in a boundary condition.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
x
\end_layout
\begin_layout LyX-Code
3.14
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\emph on
value
\emph default
parameter of this boundary condition is now made time dependent.
Note that the actual value of this parameter will be the value of the load controller at a particular point in time,
multiplied with the value specified by the tag's value (3.14 in the example).
\end_layout
\begin_layout Subsection
The loadcurve controller
\end_layout
\begin_layout Standard
A loadcurve controller is defined by the
\shape italic
loadcurve
\shape default
type.
Each loadcurve is defined by repeating the
\shape italic
point
\shape default
element for all data points:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
LINEAR
\end_layout
\begin_layout LyX-Code
CONSTANT
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,
0
\end_layout
\begin_layout LyX-Code
...
\end_layout
\begin_layout LyX-Code
1,
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
For a loadcurve,
the type is optional,
since it is the default controller if the type attribute is omitted.
\end_layout
\begin_layout Standard
The
\shape italic
id
\shape default
attribute is the loadcurve number and is used in other sections of the input file as a means to reference this curve.
\end_layout
\begin_layout Standard
The optional parameters
\shape italic
interpolate
\shape default
and
\shape italic
extend
\shape default
define how the value of the loadcurve is interpolated from the data points.
The interpolate defines the interpolation function and
\shape italic
extend
\shape default
defines how the values of the loadcurve are determined outside of the interval defined by the first and last data point.
The following tables list the possible values.
The default values are marked with an asterisk (*).
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
interpolate
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
STEP
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Use a step interpolation function
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
LINEAR*
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Use a linear interpolation function
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
SMOOTH
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The values are interpolated using a cubic polynomial.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigLoadCurveTypes.png
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
\series bold
The different values for the
\emph on
interpolate
\emph default
parameter of load curves
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Extend
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
CONSTANT*
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The value of the curve is the value of the closest endpoint
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
EXTRAPOLATE
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The value is extrapolated linearly from the endpoints
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
REPEAT
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The curve is repeated
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
REPEAT OFFSET
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The curve is repeated but offset from the endpoints
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigLoadCurveExtend.png
lyxscale 50
scale 50
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
\series bold
The different values for the
\emph on
extend
\emph default
parameter of the load curve.
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\series bold
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Subsection
The math controller
\end_layout
\begin_layout Standard
Use the
\begin_inset Quotes eld
\end_inset
math
\begin_inset Quotes erd
\end_inset
value for the
\emph on
type
\emph default
attribute to define a math controller.
This controller allows users to use a mathematical expression that defines a function of time.
Use the
\begin_inset Quotes eld
\end_inset
t
\begin_inset Quotes erd
\end_inset
parameter to reference time.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
2.0*sin(pi*t)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
The math-interval controller
\end_layout
\begin_layout Standard
The math-interval controller is similar to the math controller,
but the math expression is defined only over a time interval.
The behavior outside the interval can be specified separately.
The following parameters can be defined.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
interval
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
min and max value of the time interval.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
left_extend
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
How the function is extrapolated before the min value.(1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
right_extend
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
How the function is extrapolated after the max value.
(1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
math
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The mathematical expression.
Use
\begin_inset Quotes eld
\end_inset
t
\begin_inset Quotes erd
\end_inset
to reference time.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Comment
\emph default
:
\end_layout
\begin_layout Enumerate
The values for
\emph on
left_extend
\emph default
and
\emph on
right_extend
\emph default
can be set to one of the following values.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Extend
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
zero
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The value is set to zero.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
constant
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The value is the constant value at the end point
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
repeat
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The curve is repeated
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,1
\end_layout
\begin_layout LyX-Code
constant
\end_layout
\begin_layout LyX-Code
constant
\end_layout
\begin_layout LyX-Code
sin(t)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
The PID controller
\end_layout
\begin_layout Standard
The PID controller allows users to create simple control systems where the value of one model parameter is used to control the output of another model parameter.
The PID controller calculates the output value as a sum of three terms:
a term proportional to the error (i.e.
the difference between a user-defined target value and the measurement),
a derivative term,
and an integral term.
\end_layout
\begin_layout Standard
This controller requires the following parameters:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
var
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specify the model parameter that is used as process variable,
i.e.
the measurement.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
target
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
the target value for the process variable.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
Kp
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
weight factor for the derivative term
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
Kd
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
weight factor for the derivative term
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
Ki
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
weight factor for the integral term.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
fem.rigid_body[1].euler.z
\end_layout
\begin_layout LyX-Code
1.5708
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
4
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Output Section
\begin_inset CommandInset label
LatexCommand label
name "sec:Output-Section"
\end_inset
\end_layout
\begin_layout Standard
FEBio usually splits the output in two files:
the
\shape italic
logfile,
\shape default
which contains the same information that was written to the screen during the analysis,
and the
\shape italic
plotfile,
\shape default
which contains the results.
The contents of these output files can be customized in the
\shape italic
Output
\shape default
section.
\end_layout
\begin_layout Subsection
Logfile
\begin_inset CommandInset label
LatexCommand label
name "subsec:Logfile"
\end_inset
\end_layout
\begin_layout Standard
The logfile records the same output that is printed to the screen.
In addition,
the user can request FEBio to output additional data to the logfile.
This feature is called
\shape italic
data logging
\shape default
.
To use this feature,
simply define the following element in the
\shape italic
Output
\shape default
section of the input file:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
"]>
\end_layout
\begin_layout LyX-Code
item list
\end_layout
\begin_layout LyX-Code
item list
\end_layout
\begin_layout LyX-Code
item list
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The optional attribute
\shape italic
file
\shape default
defines the name of the logfile.
If omitted,
a default name is used that is derived from the FEBio input file.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:FEBio-Output"
nolink "false"
\end_inset
for details on default naming conventions for output files.
\end_layout
\begin_layout Standard
Additional data is stored to the logfile by adding one or more of the following elements:
\end_layout
\begin_layout Description
\shape italic
\emph on
node_data
\shape default
\emph default
request nodal data
\end_layout
\begin_layout Description
face_data request surface data
\end_layout
\begin_layout Description
\shape italic
\emph on
element_data
\shape default
\emph default
request element data
\end_layout
\begin_layout Description
domain_data request domain data (i.e.
element data integrated over a domain)
\end_layout
\begin_layout Description
surface_data request surface data (i.e.
face data evaluated over a surface)
\end_layout
\begin_layout Description
\shape italic
\emph on
rigid_body_data
\shape default
\emph default
request rigid body data
\end_layout
\begin_layout Description
rigid_connector_data request data on a rigid connector
\end_layout
\begin_layout Description
model_data request data on the model
\end_layout
\begin_layout Standard
Each of these data classes takes the following attributes:
\end_layout
\begin_layout Description
\shape italic
\emph on
data
\shape default
\emph default
an expression defining the data that is to be stored
\end_layout
\begin_layout Description
\shape italic
\emph on
name
\shape default
\emph default
a descriptive name for the data (optional;
default = data expression)
\end_layout
\begin_layout Description
\shape italic
\emph on
file
\shape default
\emph default
the name of the output file where the data is stored.
(optional;
default = logfile)
\end_layout
\begin_layout Description
\shape italic
\emph on
delim
\shape default
\emph default
the delimiter used to separate data in multi-column format (optional;
default = space)
\end_layout
\begin_layout Description
\shape italic
\emph on
format
\shape default
\emph default
an optional format string (optional;
default = not used)
\end_layout
\begin_layout Standard
The
\shape italic
data
\shape default
attribute is the most important one and is mandatory.
It contains a list of variable names,
separated by a semi-colon.
The available variable names depend on the data class and are defined below.
For example,
the data expression:
\end_layout
\begin_layout LyX-Code
data="x;y;z"
\end_layout
\begin_layout Standard
will store the variables
\begin_inset Formula $x$
\end_inset
,
\begin_inset Formula $y$
\end_inset
and
\begin_inset Formula $z$
\end_inset
in separate columns.
See below for more examples.
\end_layout
\begin_layout Standard
The optional
\shape italic
name
\shape default
attribute is a descriptive name for the data.
It is used in the logfile to refer to this data and can be used to quickly find the data record in the logfile.
If omitted,
the data expression is used as the name.
\end_layout
\begin_layout Standard
The
\shape italic
file
\shape default
attribute defines the name of the output file where the data is to be stored.
This attribute is optional and when not specified the data will be stored in the logfile.
\end_layout
\begin_layout Standard
The optional
\shape italic
delim
\shape default
attribute defines the delimiter that is used in multi-column format.
As described above,
data can be stored in multiple columns and the delimiter is used to separate the columns.
The default is a single space.
\end_layout
\begin_layout Standard
The optional
\shape italic
format
\shape default
attribute defines a format string that will be used to format the output.
If this attribute is present,
the
\shape italic
delim
\shape default
attribute will be ignored.
The format string is composed of literal characters and special formatting characters.
The special formatting characters are preceded by the percentage character (%).
The following formatting characters are currently defined.
\end_layout
\begin_layout Description
%i replace with the index of the corresponding item (i.e.
node numbers for node data)
\end_layout
\begin_layout Description
%g replace with a data value.
Use a %g for each data item.
\end_layout
\begin_layout Description
%t insert tab character in output.
\end_layout
\begin_layout Description
%n insert newline character in output.
\end_layout
\begin_layout Standard
The following example,
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
will print the following output (e.g.
for node 1).
\end_layout
\begin_layout LyX-Code
0.1,0.2,0.3
\end_layout
\begin_layout Standard
Notice the use of the apostrophe (') in the format string.
This is necessary in order to include the quotation marks as part of the format string.
Also note that each data string will automatically be printed on a new line,
so there is no need to end the format string with a newline character.
\end_layout
\begin_layout Standard
The value of the data elements is a list of items for which the data is to be stored.
For example,
for the
\shape italic
node_data
\shape default
element the value is a list of nodes,
for the
\shape italic
element_data
\shape default
element it is a list of FE elements and for the
\shape italic
rigid_body
\shape default
element it is a list of rigid bodies.
The value may be omitted in which case the data for all items will be stored.
For instance,
omitting the value for the
\shape italic
node_data
\shape default
element will store the data for all nodes.
\end_layout
\begin_layout Standard
As stated above,
the data is either stored in the logfile or in a separate file.
In any case,
a record is made in the logfile.
When storing the data in the logfile,
the following entry will be found in the logfile at the end of each converged timestep for each data element:
\end_layout
\begin_layout LyX-Code
Data Record #
\end_layout
\begin_layout LyX-Code
Step =
\end_layout
\begin_layout LyX-Code
Time =
\end_layout
\begin_layout LyX-Code
Data =
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The record number
\begin_inset Formula $n$
\end_inset
corresponds to the
\begin_inset Formula $n$
\end_inset
th data element in the input file.
The
\shape italic
Step
\shape default
value is the current time step.
The
\shape italic
Time
\shape default
value is the current solution time.
The
\shape italic
Data
\shape default
value is the name of the data element as provided by the
\shape italic
name
\shape default
attribute (or the
\shape italic
data
\shape default
attribute if
\shape italic
name
\shape default
is omitted).
The actual data immediately follows this record.
If multiple column output is used,
the columns are separated by the
\shape italic
delim
\shape default
attribute of the data element.
\end_layout
\begin_layout Standard
When storing the data in a separate file,
the format is slightly different:
\end_layout
\begin_layout LyX-Code
Data Record #
\end_layout
\begin_layout LyX-Code
Step =
\end_layout
\begin_layout LyX-Code
Time =
\end_layout
\begin_layout LyX-Code
Data =
\end_layout
\begin_layout LyX-Code
File =
\end_layout
\begin_layout Standard
The
\shape italic
File
\shape default
value is the name of the physical file.
Note that this is the name to which the time step number is appended.
In addition,
the physical file that stores the data contains the following header:
\end_layout
\begin_layout LyX-Code
*Step =
\end_layout
\begin_layout LyX-Code
*Time =
\end_layout
\begin_layout LyX-Code
*Data =
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
In either case,
the actual data is a multi-column list,
separated by the delimiter specified with the
\shape italic
delim
\shape default
attribute (or a space when omitted).
The first column always contains the item number.
For example,
the following data element:
\end_layout
\begin_layout LyX-Code
1:4:1
\end_layout
\begin_layout Standard
will result in the following record in the logfile:
\end_layout
\begin_layout LyX-Code
Data Record #1
\end_layout
\begin_layout LyX-Code
Step = 1
\end_layout
\begin_layout LyX-Code
Time = 0.1
\end_layout
\begin_layout LyX-Code
Data = "nodal coordinates"
\end_layout
\begin_layout LyX-Code
1,0.000,0.000,0.000
\end_layout
\begin_layout LyX-Code
2,1.000,0.000,0.000
\end_layout
\begin_layout LyX-Code
3,1.000,1.000,0.000
\end_layout
\begin_layout LyX-Code
4,0.000,1.000,0.000
\end_layout
\begin_layout Standard
This data record is repeated for each converged time step.
Please see
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Logfile-Variables"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for a list of available log variables.
\end_layout
\begin_layout Subsection
Plotfile
\begin_inset CommandInset label
LatexCommand label
name "subsec:Plotfile"
\end_inset
\end_layout
\begin_layout Standard
By default,
all the results are stored in a binary database,
referred to as the
\shape italic
plotfile
\shape default
.
The preferred storage format is the FEBio binary database format (referred to as the
\shape italic
xplt
\shape default
format)
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
As of FEBio version 2.0,
the LSDYNA database is no longer supported.
The FEBio database format is the only format that will be supported from now on.
\end_layout
\end_inset
.
This section describes how to customize the data that is stored to the plotfile.
\end_layout
\begin_layout Standard
To define the contents of the plotfile the
\shape italic
plotfile
\shape default
element needs to be added in the
\emph on
Output
\emph default
section of the FEBio input file.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The
\emph on
type
\emph default
attribute defines the output format.
As of version 4.4,
the user can choose between
\begin_inset Quotes eld
\end_inset
febio
\begin_inset Quotes erd
\end_inset
and
\begin_inset Quotes eld
\end_inset
vtk
\begin_inset Quotes erd
\end_inset
.
When choosing
\begin_inset Quotes eld
\end_inset
febio
\begin_inset Quotes erd
\end_inset
,
which is the default,
the results will be stored in the standard binary
\emph on
xplt
\emph default
format.
When choosing
\begin_inset Quotes eld
\end_inset
vtk
\begin_inset Quotes erd
\end_inset
,
the output is stored as individual VTK (legacy format) files,
one for each completed time step.
Note that due to limitations of the vtk format,
not all plot variables can be exported to VTK file.
\end_layout
\begin_layout Standard
The
\shape italic
file
\shape default
attribute is also optional and allows the user to define the file name of the plotfile.
If this attribute is omitted,
FEBio will use a default file name for the plotfile.
\end_layout
\begin_layout Standard
By default,
FEBio will store the most common data variables to the plot file.
However,
it is advised to always specify the specific contents of the plotfile.
This can be done by adding
\shape italic
var
\shape default
elements in the
\shape italic
plotfile
\shape default
section as described below.
\end_layout
\begin_layout Standard
Plotfile variables are defined using the
\shape italic
var
\shape default
keyword.
This tag takes one attribute,
namely the
\shape italic
type
\shape default
of the variable.
The
\emph on
type
\emph default
defines the specific output variable that will be stored to the plot file.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
where
\shape italic
name
\shape default
is the name of the output variable.
(For a complete list of supported output variables,
please see
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Plotfile-Variables"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
)
\end_layout
\begin_layout Standard
As of FEBio 2.4,
additional information can be added in the type attribute of the variable definition.
The general format is as follows.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The filter is defined by appending the name of the plot variable with the filter inside square brackets.
The filter can be either an integer,
or a string.
If the filter is a string,
it must be surrounded by single quotes.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The optional alias can be used to rename the variable.
The alias will be used as the name of the plot variable in the plot file,
and this is the name that will show up in post-processing software such as FEBio Studio.
\end_layout
\begin_layout Standard
Some plot variables use filters to resolve possible ambiguities.
For example,
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
This example will store the solute concentration of a solute named 'solute1' to the plot file.
\end_layout
\begin_layout Standard
In addition,
an alias can be used to define a more descriptive name of the plot variable.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
This variable will store the solute concentration of a solute named 'Na' to the plot file using the name 'Na concentration'.
\end_layout
\begin_layout Standard
The following example shows how to export a particular fiber vector from a solid mixture.
Since solid mixtures can have several fiber distributions associated,
it is necessary to specify which component of the mixture the plot variable refers to.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
Some plot variables require the specification of a named surface (* in table below).
For example,
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The named surface should be described in a
\emph on
Surface
\emph default
element (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Surface-Section"
nolink "false"
\end_inset
) within
\emph on
Mesh
\emph default
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Geometry-Section"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Standard
The following example shows a complete definition of the plotfile section and stores nodal displacements and element stresses.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Chapter
Materials
\begin_inset CommandInset label
LatexCommand label
name "chap:Materials"
\end_inset
\end_layout
\begin_layout Standard
The following sections describe the material parameters for each of the available constitutive models,
along with a short description of each material.
A more detailed theoretical description of the constitutive models can be found in the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Theory Manual}}
\end_layout
\end_inset
.
\end_layout
\begin_layout Section
Elastic Solids
\begin_inset CommandInset label
LatexCommand label
name "sec:Elastic-Solids"
\end_inset
\end_layout
\begin_layout Standard
This section describes the elastic materials,
which are materials defined by a hyperelastic strain-energy function.
A distinction will be made between so-called
\shape italic
unconstrained
\shape default
and
\shape italic
uncoupled
\shape default
materials.
The former describe materials that can undergo volumetric compression.
The latter are used for modeling (nearly-) incompressible materials,
thus their constitutive models are constrained to produce an isochoric deformation,
as long as the user has selected a sufficiently large bulk modulus to enforce that constraint.
\end_layout
\begin_layout Subsection
Specifying Fiber Orientation or Material Axes
\begin_inset CommandInset label
LatexCommand label
name "subsec:Specifying-Fiber-Orientation"
\end_inset
\end_layout
\begin_layout Standard
Some of the materials are transversely isotropic,
requiring the specification of an initial material direction,
which is called a
\shape italic
fiber
\shape default
direction in FEBio.
Other materials are orthotropic,
requiring the specification of initial material axes that define the three planes of symmetry for those materials.
Only one of these specifications should be provided.
By default,
material axes are aligned with the global Cartesian basis
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
and the fiber direction is along
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
.
Local fiber or material axes orientation may be specified in several ways.
FEBio gives the option to automatically generate the orientation,
based on some user-specified parameters.
However,
the user can override this feature and specify the fiber or axes directions for each element manually in the
\shape italic
ElementData
\shape default
section.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:MeshData-Section"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for more details on how to do this.
\end_layout
\begin_layout Subsubsection
Transversely Isotropic Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Transversely-Isotropic-Materials"
\end_inset
\end_layout
\begin_layout Standard
For transversely isotropic materials fiber orientation is specified with the
\shape italic
fiber
\shape default
element.
This element takes one attribute,
namely
\shape italic
type
\shape default
,
which specifies the type of the fiber generator.
The possible values are specified in the following table.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
\shape italic
type
\shape default
Value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
local
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Use local element numbering (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
vector
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Define the fiber orientation as a constant vector (2)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
spherical
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specifies a spherical fiber distribution (3)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
cylindrical
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specifies a cylindrical fiber distribution (4)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
angles
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specifies the fiber direction using spherical angles (5)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
If the
\shape italic
type
\shape default
attribute is omitted,
the fiber distribution will follow the local element nodes 1 and 2.
This would be the same as setting the fiber attribute to
\shape italic
local
\shape default
and setting the value to
\begin_inset Quotes eld
\end_inset
1,2
\begin_inset Quotes erd
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Comments
\shape default
:
\end_layout
\begin_layout Enumerate
In this case,
the fiber direction is determined by local element node numbering.
The value is interpreted as the local node numbers of the nodes that define the direction of the fiber.
The following example defines a local fiber axis by local element nodes 1 and 2.
This option is very useful when the local fiber direction can be interpreted as following one of the mesh edges.
\end_layout
\begin_deeper
\begin_layout LyX-Code
1,2
\end_layout
\begin_layout Standard
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigLocalFiberDirectionOption.png
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
\series bold
\emph on
local
\emph default
fiber direction option
\end_layout
\end_inset
\end_layout
\end_deeper
\begin_layout Enumerate
The fiber orientation is specified by a vector.
The value is the direction of the fiber.
The following defines all element fiber directions in the direction of the vector [1,0,0]:
\end_layout
\begin_deeper
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout Standard
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigVectorFiberDirectionOption.png
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
\series bold
\emph on
vector
\emph default
fiber direction option
\end_layout
\end_inset
\end_layout
\end_deeper
\begin_layout Enumerate
The fiber orientation is determined by a point in space and the global location of each element integration point.
The value is the location of the point.
The following example defines a spherical fiber distribution centered at [0,0,1]:
\end_layout
\begin_deeper
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout Standard
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigSphericalFiberDirectionOption.png
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
\series bold
\emph on
spherical
\emph default
fiber direction option
\end_layout
\end_inset
\end_layout
\end_deeper
\begin_layout Enumerate
\shape italic
cylindrical
\shape default
:
This type generates a fiber distribution that is cylindrical.
The following subparameters must be defined.
\end_layout
\begin_deeper
\begin_layout Description
\shape italic
\emph on
center
\emph default
\shape default
defines the center of the cylinder
\end_layout
\begin_layout Description
\shape italic
\emph on
axis
\shape default
\emph default
defines the axis of the cylinder
\end_layout
\begin_layout Description
\shape italic
\emph on
vector
\shape default
\emph default
defines a vector that will be transported around the cylinder
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
0,1,0
\end_layout
\begin_layout LyX-Code
\end_layout
\end_deeper
\begin_layout Enumerate
\shape italic
angles
\shape default
:
This type generates a fiber orientation via the specification of spherical angles (azimuth and declination) relative to the local material axes (or global coordinate system,
if no local material axes are defined).
The following subparameters must be defined.
\end_layout
\begin_deeper
\begin_layout Description
\shape italic
\emph on
theta
\emph default
\shape default
azimuth angle (in degrees)
\end_layout
\begin_layout Description
\shape italic
\emph on
phi
\shape default
\emph default
declination angle (in degrees)
\end_layout
\begin_layout Standard
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigSCS.png
\end_inset
\end_layout
\begin_layout Plain Layout
\align center
\series bold
Spherical angles
\end_layout
\end_inset
\end_layout
\begin_layout Standard
The fiber is oriented along
\begin_inset Formula
\[
\mathbf{e}_{r}=\cos\theta\sin\phi\,\mathbf{e}_{1}+\sin\theta\sin\phi\,\mathbf{e}_{2}+\cos\phi\,\mathbf{e}_{3},0\leqslant\theta<2\pi,\;0\leqslant\phi\leqslant\pi,
\]
\end_inset
where
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
are orthonormal vectors representing the local element coordinate system (when specified,
Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Orthotropic-Materials"
nolink "false"
\end_inset
),
or global coordinate system.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
20
\end_layout
\begin_layout LyX-Code
90
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
When specifying a fiber direction
\begin_inset Formula $\mathbf{a}$
\end_inset
,
FEBio generates a set of orthogonal material axes as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Orthotropic-Materials"
nolink "false"
\end_inset
.
generated with
\begin_inset Formula $\mathbf{d}=\boldsymbol{j}$
\end_inset
,
or else
\begin_inset Formula $\mathbf{d}=\boldsymbol{k}$
\end_inset
if
\begin_inset Formula $\mathbf{a}$
\end_inset
is collinear with
\begin_inset Formula $\boldsymbol{j}$
\end_inset
(where the triple
\series bold
\begin_inset Formula $\boldsymbol{i,j,k}$
\end_inset
\series default
refers to unit vectors defining the global coordinate system,
i.e.
\begin_inset Formula $\boldsymbol{i}=\left(1,0,0\right)$
\end_inset
,
etc.).
Because of the non-uniqueness of these material axes (only
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
is along a uniquely defined direction in a
\shape italic
fiber
\shape default
element),
caution should be used when material axes are compounded,
as may occur in nested materials such as solid mixtures described in Sections
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Solid-Mixture"
nolink "false"
\end_inset
&
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Mixture"
nolink "false"
\end_inset
.
To enforce uniqueness,
use the
\shape italic
mat_axis
\shape default
element instead of the
\shape italic
fiber
\shape default
element.
\end_layout
\end_deeper
\begin_layout Subsubsection
Orthotropic Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Orthotropic-Materials"
\end_inset
\end_layout
\begin_layout Standard
For orthotropic materials,
the user needs to specify two fiber directions
\series bold
\begin_inset Formula $\mathbf{a}$
\end_inset
\series default
and
\begin_inset Formula $\mathbf{d}$
\end_inset
.
From these FEBio will generate an orthonormal set of material axes vectors as follows:
\begin_inset Formula
\[
\mathbf{e}_{1}=\frac{\mathbf{a}}{\left\Vert \mathbf{a}\right\Vert },\quad\mathbf{e}_{2}=\mathbf{e}_{3}\times\mathbf{e}_{1},\quad\mathbf{e}_{3}=\frac{\mathbf{a}\times\mathbf{d}}{\left\Vert \mathbf{a}\times\mathbf{d}\right\Vert }\,.
\]
\end_inset
The vectors
\series bold
\begin_inset Formula $\mathbf{a}$
\end_inset
\series default
and
\series bold
\begin_inset Formula $\mathbf{d}$
\end_inset
\series default
are defined using the
\shape italic
mat_axis
\shape default
element.
This element takes a
\shape italic
type
\shape default
attribute,
which can take on the following values:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\series default
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
local
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Use local element numbering (1)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
vector
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify the vectors
\series bold
\begin_inset Formula $\mathbf{a}$
\end_inset
\series default
and
\series bold
\begin_inset Formula $\mathbf{d}$
\end_inset
\series default
directly.
(2)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
angles
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify the angles
\begin_inset Formula $\theta$
\end_inset
and
\begin_inset Formula $\varphi$
\end_inset
[deg].
(3)
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Comments
\shape default
:
\end_layout
\begin_layout Enumerate
When specifying
\shape italic
local
\shape default
as the material axis type,
the value is interpreted as a list of three local element node numbers.
When specifying zero for all three,
the default (1,2,4) is used.
\end_layout
\begin_deeper
\begin_layout LyX-Code
0,0,0
\end_layout
\end_deeper
\begin_layout Enumerate
When using the
\shape italic
vector
\shape default
type,
you need to define the two generator vectors
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $d$
\end_inset
.
These are specified as child elements of the
\shape italic
mat_axis
\shape default
element:
\end_layout
\begin_deeper
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
0,1,0
\end_layout
\begin_layout LyX-Code
\end_layout
\end_deeper
\begin_layout Enumerate
When using the
\shape italic
angle
\shape default
type,
you need to define the two angles
\begin_inset Formula $\theta$
\end_inset
and
\begin_inset Formula $\varphi$
\end_inset
in degrees.
These are specified as child elements of the
\shape italic
mat_axis
\shape default
element:
\end_layout
\begin_deeper
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
90
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The material axes
\begin_inset Formula $\left\{ \mathbf{e}_{r},\mathbf{e}_{\theta},\mathbf{e}_{\varphi}\right\} $
\end_inset
are related to the global Cartesian basis (or local element axes)
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
via
\begin_inset Formula
\[
\begin{aligned}\mathbf{e}_{r} & =\cos\theta\sin\phi\,\mathbf{e}_{1}+\sin\theta\sin\phi\,\mathbf{e}_{2}+\cos\phi\,\mathbf{e}_{3}\\
\mathbf{e}_{\theta} & =-\sin\theta\,\mathbf{e}_{1}+\cos\theta\,\mathbf{e}_{2}\\
\mathbf{e}_{\varphi} & =-\cos\theta\cos\phi\,\mathbf{e}_{1}-\sin\theta\cos\phi\,\mathbf{e}_{2}+\sin\phi\,\mathbf{e}_{3}
\end{aligned}
\,.
\]
\end_inset
\end_layout
\end_deeper
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Uncoupled Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Uncoupled-Materials"
\end_inset
\end_layout
\begin_layout Standard
Uncoupled,
nearly-incompressible hyperelastic materials are described by a strain energy function that features an additive decomposition of the hyperelastic strain energy into deviatoric and dilational parts
\begin_inset CommandInset citation
LatexCommand citep
key "Simo91"
literal "true"
\end_inset
:
\begin_inset Formula
\begin{equation}
\Psi\left(\mathbf{C}\right)=\tilde{\Psi}\left(\tilde{\mathbf{C}}\right)+U\left(J\right),\label{eq1}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{\tilde{C}}=\mathbf{\mathbf{\tilde{F}}^{T}\cdot\tilde{F}}$
\end_inset
and
\begin_inset Formula $\mathbf{\tilde{F}}=J^{-1/3}\mathbf{F}$
\end_inset
is the deviatoric part of the deformation gradient.
The resulting 2
\begin_inset Formula $^{\mathrm{nd}}$
\end_inset
Piola-Kirchhoff stress is given by
\begin_inset Formula
\begin{equation}
\mathbf{S}=J^{-2/3}\Dev\left[\mathbf{\tilde{S}}\right]+pJ\mathbf{C}^{-1},\label{eq2}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{\tilde{S}}=2\frac{\partial\tilde{\Psi}}{\partial\mathbf{\tilde{C}}}\quad,\label{eq3}
\end{equation}
\end_inset
and
\begin_inset Formula
\begin{equation}
p:=\frac{dU}{dJ},\label{eq4}
\end{equation}
\end_inset
and
\begin_inset Formula $\Dev\left[\cdot\right]$
\end_inset
is the deviatoric operator in the material frame.
\end_layout
\begin_layout Standard
The corresponding Cauchy stress is given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\dev\left[\tilde{\boldsymbol{\sigma}}\right]+p\mathbf{I},\label{eq5}
\end{equation}
\end_inset
where
\begin_inset Formula $\tilde{\boldsymbol{\sigma}}=J^{-1}\mathbf{\tilde{F}}\cdot\mathbf{\tilde{S}}\cdot\mathbf{\tilde{F}}^{T}$
\end_inset
and
\begin_inset Formula $\dev\left[\cdot\right]$
\end_inset
is the deviatoric operator in the spatial frame.
\end_layout
\begin_layout Standard
For these materials,
the entire bulk (volumetric) behavior is determined by the function
\begin_inset Formula $U\left(J\right)$
\end_inset
,
and
\begin_inset Formula $p$
\end_inset
represents the entire hydrostatic stress.
The function
\begin_inset Formula $U\left(J\right)$
\end_inset
is constructed to have a value of 0 for
\begin_inset Formula $J=$
\end_inset
1 and to have a positive value for all other values of
\begin_inset Formula $J>$
\end_inset
0.
The computational literature has employed different functional forms for
\begin_inset Formula $U\left(J\right)$
\end_inset
.
To compare one's results to literature references that employ a
\begin_inset Formula $U\left(J\right)$
\end_inset
that differs from the default FEBio formulation,
use one of the
\begin_inset Quotes eld
\end_inset
pressure_model
\begin_inset Quotes erd
\end_inset
options listed below.
\end_layout
\begin_layout Standard
By default,
all of these materials make use of three-field elements (when available for a particular element type),
as described by Simo and Taylor
\begin_inset CommandInset citation
LatexCommand citep
key "Simo91"
literal "true"
\end_inset
.
This element uses a trilinear interpolation of the displacement field and piecewise-constant interpolations for the pressure and volume ratio.
\end_layout
\begin_layout Standard
The properties that should be specified for all uncoupled materials are:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\series default
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Bulk modulus
\begin_inset Formula $k$
\end_inset
appearing in
\begin_inset Formula $U\left(J\right)$
\end_inset
(1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 [
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Choose from 0 to 3 for various models (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Comments
\shape default
:
\end_layout
\begin_layout Enumerate
The pressure models are as follows:
\end_layout
\begin_deeper
\begin_layout Enumerate
0:
\begin_inset Formula $U\left(J\right)=\frac{k}{2}\left(\ln J\right)^{2}$
\end_inset
(FEBio default)
\end_layout
\begin_layout Enumerate
1:
\begin_inset Formula $U\left(J\right)=\frac{k}{4}\left(J^{2}-2\ln J-1\right)$
\end_inset
(Nike3D's Ogden material)
\end_layout
\begin_layout Enumerate
2:
\begin_inset Formula $U\left(J\right)=\frac{k}{2}\left(J-1\right)^{2}$
\end_inset
(ABAQUS)
\end_layout
\begin_layout Enumerate
3:
\begin_inset Formula $U\left(J\right)=\frac{k}{2}\left(\frac{1}{2}\left(J^{2}-1\right)-\ln J\right)$
\end_inset
(Gasser-Ogden-Holzapfel material implementation in ABAQUS)
\end_layout
\end_deeper
\begin_layout Standard
The uncoupled materials and the associated three-field element are very effective for representing nearly incompressible material behavior.
Fully incompressible behavior can be obtained (for all uncoupled materials) using an augmented Lagrangian method.
To use the three-field element formulation and augmented Lagrangian method,
please see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:SolidDomain-Section"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
\begin_inset Quotes eld
\end_inset
three-field-solid
\begin_inset Quotes erd
\end_inset
.
For enforcement of the incompressibility constraint to a user-defined tolerance,
the user must define two material parameters for the three-field-solid:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Default
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Turn augmented Lagrangian on for this material or off (1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0 (off)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Augmentation tolerance (2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0.01
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Enumerate
A value of
\shape italic
1
\shape default
(one) turns augmentation on,
where a value of 0 (zero) turns it off.
\end_layout
\begin_layout Enumerate
The augmentation tolerance determines the convergence condition that is used for the augmented Lagrangian method:
convergence is reached when the relative ratio of the Lagrange multiplier norm of the previous augmentation
\begin_inset Formula $\left\Vert \lambda_{k}\right\Vert $
\end_inset
to the current one
\begin_inset Formula $\left\Vert \lambda_{k+1}\right\Vert $
\end_inset
is less than the specified value:
\begin_inset Formula
\[
\left|\frac{\left\Vert \lambda_{k+1}\right\Vert -\left\Vert \lambda_{k}\right\Vert }{\left\Vert \lambda_{k+1}\right\Vert }\right|<\varepsilon
\]
\end_inset
Thus,
a value of 0.01 implies that the change in norm between the previous augmentation loop and the current loop is less than 1%.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
0.4
\end_layout
\begin_layout LyX-Code
10000
\end_layout
\begin_layout LyX-Code
1
\begin_inset Formula $\leftarrow$
\end_inset
turns on augmented Lagrangian iterations
\end_layout
\begin_layout LyX-Code
0.05
\begin_inset Formula $\leftarrow$
\end_inset
sets the augmentation tolerance
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Arruda-Boyce
\begin_inset CommandInset label
LatexCommand label
name "subsec:Arruda-Boyce"
\end_inset
\end_layout
\begin_layout Standard
This material describes an incompressible Arruda-Boyce model
\begin_inset CommandInset citation
LatexCommand citep
key "Arruda93"
literal "true"
\end_inset
.
The following material parameters are required:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
initial modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
number of links in chain
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The uncoupled strain energy function for the Arruda-Boyce material is given by:
\begin_inset Formula
\[
\Psi=\mu\sum\limits_{i=1}^{5}\frac{C_{i}}{N^{i-1}}\left(\tilde{I}_{1}^{i}-3^{i}\right)+U\left(J\right),
\]
\end_inset
where,
\begin_inset Formula $C_{1}=\frac{1}{2},C_{2}=\frac{1}{20},C_{3}=\frac{11}{1050},C_{4}=\frac{19}{7000},C_{5}=\frac{519}{673750}$
\end_inset
and
\begin_inset Formula $I_{1}$
\end_inset
the first invariant of the right Cauchy-Green tensor.
The volumetric strain function
\begin_inset Formula $U$
\end_inset
is defined as follows,
\begin_inset Formula
\[
U\left(J\right)=\frac{1}{2}k\left(\ln J\right)^{2}\,.
\]
\end_inset
This material model was proposed by Arruda and Boyce
\begin_inset CommandInset citation
LatexCommand citep
key "Arruda93"
literal "true"
\end_inset
and is based on an eight-chain representation of the macromolecular network structure of polymer chains.
The strain energy form represents a truncated Taylor series of the inverse Langevin function,
which arises in the statistical treatment of non-Gaussian chains.
The parameter
\begin_inset Formula $N$
\end_inset
is related to the locking stretch
\begin_inset Formula $\lambda_{L}$
\end_inset
,
the stretch at which the chains reach their full extended state,
by
\begin_inset Formula $\lambda_{L}=\sqrt{N}$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.09
\end_layout
\begin_layout LyX-Code
26.5
\end_layout
\begin_layout LyX-Code
100
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Ellipsoidal Fiber Distribution Uncoupled
\begin_inset CommandInset label
LatexCommand label
name "subsec:EFD-Uncoupled"
\end_inset
\end_layout
\begin_layout Standard
The material type for an ellipsoidal continuous fiber distribution in an uncoupled formulation is
\begin_inset Quotes eld
\end_inset
\shape italic
EFD uncoupled
\shape default
\begin_inset Quotes erd
\end_inset
.
Since fibers can only sustain tension,
this material is not stable on its own.
It must be combined with a stable uncoupled material that acts as a ground matrix,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
uncoupled solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Solid-Mixture"
nolink "false"
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameters
\begin_inset Formula $\left(\beta_{1},\beta_{2},\beta_{3}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameters
\begin_inset Formula $\left(\xi_{1},\xi_{2},\xi_{3}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The stress
\begin_inset Formula $\tilde{\boldsymbol{\sigma}}$
\end_inset
for this material is given by
\begin_inset CommandInset citation
LatexCommand citep
key "Lanir83,Ateshian07a,Ateshian09a"
literal "true"
\end_inset
:
\begin_inset Formula
\[
\tilde{\boldsymbol{\sigma}}=\int_{0}^{2\pi}\int_{0}^{\pi}H\left(\tilde{I}_{n}-1\right)\tilde{\sigma}_{n}\left(\mathbf{n}\right)\sin\varphi\,d\varphi\,d\theta.
\]
\end_inset
\begin_inset Formula $\tilde{I}_{n}=\tilde{\lambda}_{n}^{2}=\mathbf{N}\cdot\mathbf{\tilde{C}}\cdot\mathbf{N}$
\end_inset
is the square of the fiber stretch
\begin_inset Formula $\tilde{\lambda}_{n}$
\end_inset
,
\begin_inset Formula $\mathbf{N}$
\end_inset
is the unit vector along the fiber direction (in the reference configuration),
which in spherical angles is directed along
\begin_inset Formula $\left(\theta,\varphi\right)$
\end_inset
,
\begin_inset Formula $\mathbf{n}=\mathbf{\tilde{F}}\cdot\mathbf{N}/\tilde{\lambda}_{n}$
\end_inset
,
and
\begin_inset Formula $H\left(.\right)$
\end_inset
is the unit step function that enforces the tension-only contribution.
The fiber stress is determined from a fiber strain energy function in the usual manner,
\begin_inset Formula
\[
\tilde{\sigma}_{n}=\frac{2\tilde{I}_{n}}{J}\frac{\partial\tilde{\Psi}}{\partial\tilde{I}_{n}}\mathbf{n}\otimes\mathbf{n}\,,
\]
\end_inset
where in this material,
\begin_inset Formula
\[
\tilde{\Psi}\left(\mathbf{n},\tilde{I}_{n}\right)=\xi\left(\mathbf{n}\right)\left(\tilde{I}_{n}-1\right)^{\beta\left(\mathbf{n}\right)}\,.
\]
\end_inset
The materials parameters
\begin_inset Formula $\beta$
\end_inset
and
\begin_inset Formula $\xi$
\end_inset
are determined from:
\begin_inset Formula
\[
\begin{aligned}\xi\left(\mathbf{n}\right) & =\left(\frac{\cos^{2}\theta\sin^{2}\varphi}{\xi_{1}^{2}}+\frac{\sin^{2}\theta\sin^{2}\varphi}{\xi_{2}^{2}}+\frac{\cos^{2}\varphi}{\xi_{3}^{2}}\right)^{-1/2}\\
\beta\left(\mathbf{n}\right) & =\left(\frac{\cos^{2}\theta\sin^{2}\varphi}{\beta_{1}^{2}}+\frac{\sin^{2}\theta\sin^{2}\varphi}{\beta_{2}^{2}}+\frac{\cos^{2}\varphi}{\beta_{3}^{2}}\right)^{-1/2}
\end{aligned}
\,.
\]
\end_inset
The orientation of the material axis can be defined as explained in detail in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
1000
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10,
12,
15
\end_layout
\begin_layout LyX-Code
2.5,
3,
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Ellipsoidal Fiber Distribution Mooney-Rivlin
\begin_inset CommandInset label
LatexCommand label
name "subsec:EFD-Mooney-Rivlin"
\end_inset
\end_layout
\begin_layout Standard
The material type for a Mooney-Rivlin material with an ellipsoidal continuous fiber distribution is
\begin_inset Quotes eld
\end_inset
\shape italic
EFD Mooney-Rivlin
\shape default
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Mooney-Rivlin parameter c1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Mooney-Rivlin parameter c2
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
bulk modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameters
\begin_inset Formula $\left(\beta_{1},\beta_{2},\beta_{3}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameters
\begin_inset Formula $\left(\xi_{1},\xi_{2},\xi_{3}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The stress
\begin_inset Formula $\tilde{\boldsymbol{\sigma}}$
\end_inset
for this material is given by,
\begin_inset Formula
\[
\tilde{\boldsymbol{\sigma}}=\tilde{\boldsymbol{\sigma}}_{MR}+\tilde{\boldsymbol{\sigma}}_{f}\,.
\]
\end_inset
Here,
\begin_inset Formula $\tilde{\boldsymbol{\sigma}}_{MR}$
\end_inset
is the stress from the Mooney-Rivlin basis (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Mooney-Rivlin"
nolink "false"
\end_inset
),
and
\begin_inset Formula $\tilde{\boldsymbol{\sigma}}_{f}$
\end_inset
is the stress contribution from the ellipsoidal fiber distribution (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:EFD-Uncoupled"
nolink "false"
\end_inset
).
The orientation of the material axes can be defined as explained in detail in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
4.5,4.5,4.5
\end_layout
\begin_layout LyX-Code
1,1,1
\end_layout
\begin_layout LyX-Code
20000
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Ellipsoidal Fiber Distribution Veronda-Westmann
\begin_inset CommandInset label
LatexCommand label
name "subsec:EFD-Veronda-Westmann"
\end_inset
\end_layout
\begin_layout Standard
The material type for a Veronda-Westmann material with an ellipsoidal continuous fiber distribution is
\begin_inset Quotes eld
\end_inset
\shape italic
EFD Veronda-Westmann
\shape default
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
First VW coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Second VW coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Bulk modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameters
\begin_inset Formula $\left({\beta_{1},\beta_{2},\beta_{3}}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameters
\begin_inset Formula $\left({\xi_{1},\xi_{2},\xi_{3}}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The stress
\begin_inset Formula $\tilde{\boldsymbol{\sigma}}$
\end_inset
for this material is given by,
\begin_inset Formula
\[
\tilde{\boldsymbol{\sigma}}=\tilde{\boldsymbol{\sigma}}_{VW}+\tilde{\boldsymbol{\sigma}}_{f}\,.
\]
\end_inset
Here,
\begin_inset Formula $\tilde{\boldsymbol{\sigma}}_{VW}$
\end_inset
is the stress from the Veronda-Westmann basis (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Veronda-Westmann"
nolink "false"
\end_inset
),
and
\begin_inset Formula $\tilde{\boldsymbol{\sigma}}_{f}$
\end_inset
is the stress contribution from the ellipsoidal fiber distribution (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:EFD-Uncoupled"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
1000
\end_layout
\begin_layout LyX-Code
4.5,4.5,4.5
\end_layout
\begin_layout LyX-Code
1,1,1
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Fung Orthotropic
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fung-Orthotropic"
\end_inset
\end_layout
\begin_layout Standard
The material type for orthotropic Fung elasticity
\begin_inset CommandInset citation
LatexCommand citep
key "Fung79,Fung93"
literal "true"
\end_inset
is
\begin_inset Quotes eld
\end_inset
\shape italic
Fung orthotropic
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $E_{1}$
\end_inset
Young's modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $E_{2}$
\end_inset
Young's modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $E_{3}$
\end_inset
Young's modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $G_{12}$
\end_inset
shear modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $G_{23}$
\end_inset
shear modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $G_{31}$
\end_inset
shear modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\nu_{12}$
\end_inset
Poisson's ratio
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\nu_{23}$
\end_inset
Poisson's ratio
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\nu_{31}$
\end_inset
Poisson's ratio
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $c$
\end_inset
coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The hyperelastic strain energy function is given by
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian09"
literal "true"
\end_inset
,
\begin_inset Formula
\begin{equation}
\Psi=\frac{1}{2}c\left(e^{\tilde{Q}}-1\right)+U\left(J\right)\,,\label{eq6}
\end{equation}
\end_inset
where,
\begin_inset Formula
\[
\tilde{Q}=c^{-1}\sum\limits_{a=1}^{3}\left[2\mu_{a}\mathbf{M}_{a}:\mathbf{\tilde{E}}^{2}+\sum\limits_{b=1}^{3}\lambda_{ab}\left(\mathbf{M}_{a}:\mathbf{\tilde{E}}\right)\left(\mathbf{M}_{b}:\mathbf{\tilde{E}}\right)\right].
\]
\end_inset
Here,
\begin_inset Formula $\mathbf{\tilde{E}}=\left(\mathbf{\tilde{C}}-\mathbf{I}\right)/2$
\end_inset
and
\begin_inset Formula $\mathbf{M}_{a}=\mathbf{V}_{a}\otimes\mathbf{V}_{a}$
\end_inset
where
\begin_inset Formula $\mathbf{V}_{a}$
\end_inset
defines the initial direction of material axis
\begin_inset Formula $a$
\end_inset
.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Orthotropic-Materials"
nolink "false"
\end_inset
on how to define the material axes for orthotropic materials.
The Lamé constants
\begin_inset Formula $\mu_{a}$
\end_inset
(
\begin_inset Formula $a=1,2,3)$
\end_inset
and
\begin_inset Formula $\lambda_{ab}$
\end_inset
(
\begin_inset Formula $a,b=1,2,3$
\end_inset
,
\begin_inset Formula $\lambda_{ba}=\lambda_{ab})$
\end_inset
are related to Young's moduli
\begin_inset Formula $E_{a}$
\end_inset
,
shear moduli
\begin_inset Formula $G_{ab}$
\end_inset
and Poisson's ratios
\begin_inset Formula $\nu_{ab}$
\end_inset
via
\begin_inset Formula
\[
\begin{aligned} & \left[\begin{array}{cccccc}
\lambda_{11}+2\mu_{1} & \lambda_{12} & \lambda_{13} & 0 & 0 & 0\\
\lambda_{12} & \lambda_{22}+2\mu_{2} & \lambda_{23} & 0 & 0 & 0\\
\lambda_{13} & \lambda_{23} & \lambda_{33}+2\mu_{3} & 0 & 0 & 0\\
0 & 0 & 0 & \frac{1}{2}\left(\mu_{1}+\mu_{2}\right) & 0 & 0\\
0 & 0 & 0 & 0 & \frac{1}{2}\left(\mu_{2}+\mu_{3}\right) & 0\\
0 & 0 & 0 & 0 & 0 & \frac{1}{2}\left(\mu_{1}+\mu_{3}\right)
\end{array}\right]^{-1}\\
& =\left[\begin{array}{cccccc}
\frac{1}{E_{1}} & -\frac{\nu_{12}}{E_{1}} & -\frac{\nu_{13}}{E_{1}} & 0 & 0 & 0\\
-\frac{\nu_{21}}{E_{2}} & \frac{1}{E_{2}} & -\frac{\nu_{23}}{E_{2}} & 0 & 0 & 0\\
-\frac{\nu_{31}}{E_{3}} & -\frac{\nu_{32}}{E_{3}} & \frac{1}{E_{3}} & 0 & 0 & 0\\
0 & 0 & 0 & \frac{1}{G_{12}} & 0 & 0\\
0 & 0 & 0 & 0 & \frac{1}{G_{23}} & 0\\
0 & 0 & 0 & 0 & 0 & \frac{1}{G_{31}}
\end{array}\right]
\end{aligned}
.
\]
\end_inset
The orthotropic Lamé parameters should produce a positive definite stiffness matrix.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
124
\end_layout
\begin_layout LyX-Code
124
\end_layout
\begin_layout LyX-Code
36
\end_layout
\begin_layout LyX-Code
67
\end_layout
\begin_layout LyX-Code
40
\end_layout
\begin_layout LyX-Code
40
\end_layout
\begin_layout LyX-Code
-0.075
\end_layout
\begin_layout LyX-Code
0.87
\end_layout
\begin_layout LyX-Code
0.26
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
120000
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Gent Material
\end_layout
\begin_layout Standard
The uncoupled Gent material is defined using the
\emph on
\begin_inset Quotes eld
\end_inset
Gent
\begin_inset Quotes erd
\end_inset
\emph default
type string.
It defines the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Shear modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $J_{m}=I_{m}-1$
\end_inset
,
with
\begin_inset Formula $I_{m}$
\end_inset
max value for first invariant
\begin_inset Formula $I_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The strain energy of this material is defined via an uncoupled formulation,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\Psi_{r}=\tilde{\Psi}_{r}\left(\tilde{\mathbf{C}}\right)+U\left(J\right)
\]
\end_inset
Here,
the deviatoric strain energy is given by,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\tilde{\Psi}=-\frac{\mu J_{m}}{2}\ln\left(1-\frac{\tilde{I}_{1}-3}{J_{m}}\right)
\]
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
3.14
\end_layout
\begin_layout LyX-Code
1.5
\end_layout
\begin_layout LyX-Code
1e5
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Uncoupled Holmes-Mow
\begin_inset CommandInset label
LatexCommand label
name "subsec:Holmes-Mow-Uncoupled"
\end_inset
\end_layout
\begin_layout Standard
The material type for the uncoupled Holmes-Mow material is
\emph on
uncoupled Holmes-Mow
\emph default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Shear modulus
\begin_inset Formula $\mu$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Exponential stiffening coefficient
\begin_inset Formula $\beta$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This material model uncouples deviatoric and volumetric behaviors,
\begin_inset Formula
\[
\Psi_{r}=\tilde{\Psi}_{r}\left(\tilde{\mathbf{C}}\right)+U\left(J\right)
\]
\end_inset
The deviatoric strain-energy function is given by
\begin_inset Formula
\[
\tilde{\Psi}_{r}=\frac{1}{2}\frac{\mu}{\beta}\left(e^{\tilde{Q}}-1\right)
\]
\end_inset
where
\begin_inset Formula $\mu$
\end_inset
is the shear modulus and
\begin_inset Formula
\[
\tilde{Q}=\beta\left(\tilde{I}_{1}-3\right)
\]
\end_inset
where
\begin_inset Formula $\beta$
\end_inset
is the exponential stiffening coefficient.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
5000
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Holzapfel-Gasser-Ogden
\begin_inset CommandInset label
LatexCommand label
name "subsec:Holzapfel-Gasser-Ogden"
\end_inset
\end_layout
\begin_layout Standard
The material type for the uncoupled Holzapfel-Gasser-Ogden material
\begin_inset CommandInset citation
LatexCommand citep
key "Gasser06"
literal "true"
\end_inset
is
\emph on
Holzapfel-Gasser-Ogden
\emph default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Shear modulus of ground matrix
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber exponential coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber mean orientation angle
\begin_inset Formula $\gamma$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
deg
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber dispersion
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This material model uncouples deviatoric and volumetric behaviors.
The deviatoric strain-energy function is given by:
\begin_inset Formula
\[
\Psi_{r}=\tilde{\Psi}_{r}\left(\tilde{\mathbf{C}}\right)+U\left(J\right)
\]
\end_inset
where
\begin_inset Formula
\[
\tilde{\Psi}_{r}=\frac{c}{2}\left(\tilde{I}_{1}-3\right)+\frac{k_{1}}{2k_{2}}\sum_{\alpha=1}^{2}\left(\exp\left(k_{2}\left\langle \tilde{E}_{\alpha}\right\rangle ^{2}\right)-1\right)
\]
\end_inset
and the default volumetric strain energy function is
\begin_inset Formula
\[
U\left(J\right)=\frac{k}{2}\left(\frac{J^{2}-1}{2}-\ln J\right)
\]
\end_inset
The fiber strain is
\begin_inset Formula
\[
\tilde{E}_{\alpha}=\kappa\left(\tilde{I}_{1}-3\right)+\left(1-3\kappa\right)\left(\tilde{I}_{4\alpha}-1\right)
\]
\end_inset
where
\begin_inset Formula $\tilde{I}_{1}=\tr\tilde{\mathbf{C}}$
\end_inset
and
\begin_inset Formula $\tilde{I}_{4\alpha}=\mathbf{a}_{\alpha r}\cdot\tilde{\mathbf{C}}\cdot\mathbf{a}_{\alpha r}$
\end_inset
.
The Macaulay brackets around
\begin_inset Formula $\left\langle \tilde{E}_{\alpha}\right\rangle $
\end_inset
indicate that this term is zero when
\begin_inset Formula $\tilde{E}_{\alpha}<0$
\end_inset
and equal to
\begin_inset Formula $\tilde{E}_{\alpha}$
\end_inset
when this strain is positive.
\end_layout
\begin_layout Standard
There are two fiber families along the vectors
\begin_inset Formula $\mathbf{a}_{\alpha r}$
\end_inset
(
\begin_inset Formula $\alpha=1,2$
\end_inset
),
lying in the
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2}\right\} $
\end_inset
plane of the local material axes
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
,
making an angle
\begin_inset Formula $\pm\gamma$
\end_inset
with respect to
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
.
Each fiber family has a dispersion
\begin_inset Formula $\kappa$
\end_inset
,
where
\begin_inset Formula $0\le\kappa\le\frac{1}{3}$
\end_inset
.
When
\begin_inset Formula $\kappa=0$
\end_inset
there is no fiber dispersion,
implying that all the fibers in that family act along the angle
\begin_inset Formula $\pm\gamma$
\end_inset
;
the value
\begin_inset Formula $\kappa=\frac{1}{3}$
\end_inset
represents an isotropic fiber dispersion.
All other intermediate values of
\begin_inset Formula $\kappa$
\end_inset
produce a
\begin_inset Formula $\pi-$
\end_inset
periodic von Mises fiber distribution,
as described in
\begin_inset CommandInset citation
LatexCommand citep
key "Gasser06"
literal "true"
\end_inset
.
\begin_inset Formula $c$
\end_inset
is the shear modulus of the ground matrix;
\begin_inset Formula $k_{1}$
\end_inset
is the fiber modulus and
\begin_inset Formula $k_{2}$
\end_inset
is the exponential coefficient.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
7.64
\end_layout
\begin_layout LyX-Code
996.6
\end_layout
\begin_layout LyX-Code
524.6
\end_layout
\begin_layout LyX-Code
49.98
\end_layout
\begin_layout LyX-Code
0.226
\end_layout
\begin_layout LyX-Code
1e5
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Mooney-Rivlin
\begin_inset CommandInset label
LatexCommand label
name "subsec:Mooney-Rivlin"
\end_inset
\end_layout
\begin_layout Standard
The material type for uncoupled Mooney-Rivlin materials is
\shape italic
Mooney-Rivlin
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Coefficient of first invariant term
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Coefficient of second invariant term
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This material model is a hyperelastic Mooney-Rivlin type with uncoupled deviatoric and volumetric behavior.
The strain-energy function is given by:
\begin_inset Formula
\[
\Psi=C_{1}\left(\tilde{I}_{1}-3\right)+C_{2}\left(\tilde{I}_{2}-3\right)+\frac{1}{2}K\left(\ln J\right)^{2}\,.
\]
\end_inset
\begin_inset Formula $C_{1}$
\end_inset
and
\begin_inset Formula $C_{2}$
\end_inset
are the Mooney-Rivlin material coefficients.
The variables
\begin_inset Formula $\tilde{I}_{1}$
\end_inset
and
\begin_inset Formula $\tilde{I}_{2}$
\end_inset
are the first and second invariants of the deviatoric right Cauchy-Green deformation tensor
\begin_inset Formula $\mathbf{\tilde{C}}$
\end_inset
.
The coefficient
\begin_inset Formula $K$
\end_inset
is a bulk modulus-like penalty parameter and
\begin_inset Formula $J$
\end_inset
is the determinant of the deformation gradient tensor.
When
\begin_inset Formula $C_{2}=0$
\end_inset
,
this model reduces to an uncoupled version of the neo-Hookean constitutive model.
\end_layout
\begin_layout Standard
This material model uses a three-field element formulation,
interpolating displacements as linear field variables and pressure and volume ratio as piecewise constant on each element
\begin_inset CommandInset citation
LatexCommand citep
key "Simo91"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
This material model is useful for modeling certain types of isotropic materials that exhibit some limited compressibility,
i.e.
100 < (
\begin_inset Formula $K$
\end_inset
/
\begin_inset Formula $C_{\mathrm{1}})$
\end_inset
< 10000.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10.0
\end_layout
\begin_layout LyX-Code
20.0
\end_layout
\begin_layout LyX-Code
1000
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Muscle Material
\begin_inset CommandInset label
LatexCommand label
name "subsec:Muscle-Material"
\end_inset
\end_layout
\begin_layout Standard
This material model implements the constitutive model developed by Silvia S.
Blemker
\begin_inset CommandInset citation
LatexCommand citep
key "Blemker04"
literal "true"
\end_inset
.
The material type for the muscle material is
\shape italic
muscle material
\shape default
.
The model is designed to simulate the passive and active material behavior of skeletal muscle.
It defines the following parameters:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
along fiber shear modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
cross fiber shear modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
exponential stress coefficients
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fiber uncrimping factor
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
optimal fiber length
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
maximum isometric stress
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fiber stretch for straightened fibers
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
activation level
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The main difference between this material formulation compared to other transversely hyperelastic materials is that it is formulated using a set of new invariants,
originally due to Criscione
\begin_inset CommandInset citation
LatexCommand citep
key "Criscione01"
literal "true"
\end_inset
,
instead of the usual five invariants proposed by A.J.M.
Spencer
\begin_inset CommandInset citation
LatexCommand citep
key "Spencer84"
literal "true"
\end_inset
.
For this particular material,
only two of the five Criscione invariants are used.
The strain energy function is defined as follows:
\begin_inset Formula
\[
\Psi\left(B_{1},B_{2},\lambda\right)=G_{1}\tilde{B}_{1}^{2}+G_{2}\tilde{B}_{2}^{2}+F_{m}\left(\tilde{\lambda}\right)+U\left(J\right).
\]
\end_inset
The function
\begin_inset Formula $F_{m}$
\end_inset
is the strain energy contribution of the muscle fibers.
It is defined as follows:
\begin_inset Formula
\[
\lambda\frac{\partial F_{m}}{\partial\lambda}=\sigma_{\max}\left(f_{m}^{\text{passive}}\left(\lambda\right)+\alpha f_{m}^{\text{active}}\left(\lambda\right)\right)\frac{\lambda}{\lambda_{ofl}},
\]
\end_inset
where,
\begin_inset Formula
\[
f_{m}^{\text{passive}}\left(\lambda\right)=\begin{cases}
0 & \lambda\leqslant\lambda_{ofl}\\
P_{1}\left(e^{P_{2}\left(\lambda/\lambda_{ofl}-1\right)}-1\right) & \lambda_{ofl}<\lambda<\lambda^{\ast}\\
P_{3}\lambda/\lambda_{ofl}+P_{4} & \lambda\geqslant\lambda^{\ast}
\end{cases}\,,
\]
\end_inset
and
\begin_inset Formula
\[
f_{m}^{\text{active}}\left(\lambda\right)=\begin{cases}
9\left(\lambda/\lambda_{ofl}-0.4\right)^{2} & \lambda\leqslant0.6\lambda_{ofl}\\
9\left(\lambda/\lambda_{ofl}-1.6\right)^{2} & \lambda\geqslant1.4\lambda_{ofl}\\
1-4\left(1-\lambda/\lambda_{ofl}\right)^{2} & 0.6\lambda_{ofl}<\lambda<1.4\lambda_{ofl}
\end{cases}\,.
\]
\end_inset
The values
\begin_inset Formula $P_{3}$
\end_inset
and
\begin_inset Formula $P_{4}$
\end_inset
are determined by requiring
\begin_inset Formula $C^{0}$
\end_inset
and
\begin_inset Formula $C^{1}$
\end_inset
continuity at
\begin_inset Formula $\lambda=\lambda^{\ast}$
\end_inset
.
\end_layout
\begin_layout Standard
The parameter
\begin_inset Formula $\alpha$
\end_inset
is the activation level and can be specified using the
\emph on
activation
\shape italic
\emph default
\shape default
element.
You can specify a loadcurve using the
\shape italic
lc
\shape default
attribute.
The value is interpreted as a scale factor when a loadcurve is defined or as the constant activation level when no loadcurve is defined.
\end_layout
\begin_layout Standard
The muscle fiber direction is specified similarly to the transversely isotropic Mooney-Rivlin model.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
500
\end_layout
\begin_layout LyX-Code
500
\end_layout
\begin_layout LyX-Code
0.05
\end_layout
\begin_layout LyX-Code
6.6
\end_layout
\begin_layout LyX-Code
3e5
\end_layout
\begin_layout LyX-Code
1.07
\end_layout
\begin_layout LyX-Code
1.4
\end_layout
\begin_layout LyX-Code
1e6
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Ogden
\begin_inset CommandInset label
LatexCommand label
name "subsec:Ogden"
\end_inset
\end_layout
\begin_layout Standard
This material describes an incompressible hyperelastic Ogden material
\begin_inset CommandInset citation
LatexCommand citep
key "Simo91"
literal "true"
\end_inset
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Coefficient of n
\begin_inset Formula $^{\mathrm{th}}$
\end_inset
term,
where n can range from 1 to 6
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Exponent of n
\begin_inset Formula $^{\mathrm{th}}$
\end_inset
term,
where n can range from 1 to 6
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The uncoupled hyperelastic strain energy function for this material is given in terms of the eigenvalues of the deformation tensor:
\begin_inset Formula
\[
\Psi=\sum\limits_{i=1}^{N}\frac{c_{i}}{m_{i}^{2}}\left(\tilde{\lambda}_{1}^{m_{i}}+\tilde{\lambda}_{2}^{m_{i}}+\tilde{\lambda}_{3}^{m_{i}}-3\right)+U\left(J\right).
\]
\end_inset
Here,
\begin_inset Formula $\tilde{\lambda}_{i}^{2}$
\end_inset
are the eigenvalues of
\begin_inset Formula $\mathbf{\tilde{C}}$
\end_inset
,
\begin_inset Formula $c_{i}$
\end_inset
and
\begin_inset Formula $m_{i}$
\end_inset
are material coefficients and
\begin_inset Formula $N$
\end_inset
ranges from 1 to 6.
Note that you only have to include the material parameters for the terms you intend to use.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
2.4
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
100
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Tendon Material
\begin_inset CommandInset label
LatexCommand label
name "subsec:Tendon-Material"
\end_inset
\end_layout
\begin_layout Standard
The material type for the tendon material is
\shape italic
tendon material
\shape default
.
The tendon material is similar to the muscle material
\begin_inset CommandInset citation
LatexCommand citep
key "Blemker04"
literal "true"
\end_inset
.
The only difference is the fiber function.
For tendon material this is defined as:
\begin_inset Formula
\[
\lambda\frac{\partial F_{t}}{\partial\lambda}=\sigma\left(\lambda\right),
\]
\end_inset
where
\begin_inset Formula
\[
\sigma\left(\lambda\right)=\begin{cases}
0 & \lambda\leqslant1\\
L_{1}\left(e^{L_{2}\left(\lambda-1\right)}-1\right) & 1<\lambda<\lambda^{\ast}\\
L_{3}\lambda+L_{4} & \lambda\geqslant\lambda^{\ast}
\end{cases}\,.
\]
\end_inset
The parameters
\begin_inset Formula $L_{3}$
\end_inset
and
\begin_inset Formula $L_{4}$
\end_inset
are determined by requiring
\begin_inset Formula $C^{0}$
\end_inset
and
\begin_inset Formula $C^{1}$
\end_inset
continuity at
\begin_inset Formula $\lambda^{\ast}$
\end_inset
.
\end_layout
\begin_layout Standard
The material parameters for this material are listed below.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
along fiber shear modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
cross fiber shear modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
exponential stress coefficients
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fiber uncrimping factor
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fiber stretch for straightened fibers
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The tendon fiber direction is specified similarly to the transversely isotropic Mooney-Rivlin model.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5e4
\end_layout
\begin_layout LyX-Code
5e4
\end_layout
\begin_layout LyX-Code
2.7e6/l1>
\end_layout
\begin_layout LyX-Code
46.4
\end_layout
\begin_layout LyX-Code
1.03
\end_layout
\begin_layout LyX-Code
1e7
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Tension-Compression Nonlinear Orthotropic
\begin_inset CommandInset label
LatexCommand label
name "subsec:Tension-Compression-Nonlinear-Ortho"
\end_inset
\end_layout
\begin_layout Standard
The material type for the tension-compression nonlinear orthotropic material is
\begin_inset Quotes eld
\end_inset
\shape italic
TC nonlinear orthotropic
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters are defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
First Mooney-Rivlin material parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Second Mooney-Rivlin material parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
the
\begin_inset Formula $\beta$
\end_inset
parameter (see below)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
the
\begin_inset Formula $\xi$
\end_inset
parameter (see below)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
defines the material axes
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This material is based on the following uncoupled hyperelastic strain energy function
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian07c"
literal "true"
\end_inset
:
\begin_inset Formula
\[
\Psi\left(\mathbf{C},\lambda_{1},\lambda_{2},\lambda_{3}\right)=\tilde{\Psi}_{iso}\left(\mathbf{\tilde{C}}\right)+\sum\limits_{i=1}^{3}\tilde{\Psi}_{i}^{TC}\left(\tilde{\lambda}_{i}\right)+U\left(J\right)\,.
\]
\end_inset
The isotropic strain energy
\begin_inset Formula $\tilde{\Psi}_{iso}$
\end_inset
and the dilatational energy
\begin_inset Formula $U$
\end_inset
are the same as for the Mooney-Rivlin material.
The tension-compression term is defined as follows:
\begin_inset Formula
\[
\tilde{\Psi}_{i}^{TC}\left(\tilde{\lambda}_{i}\right)=\begin{cases}
\xi_{i}\left(\tilde{\lambda}_{i}-1\right)^{\beta_{i}} & \tilde{\lambda}_{i}>1\\
0 & \tilde{\lambda}_{i}\leqslant1
\end{cases}\quad\xi_{i}\geqslant0\quad\left(\text{no sum over }i\right)\,.
\]
\end_inset
The
\begin_inset Formula $\tilde{\lambda}_{i}$
\end_inset
parameters are the deviatoric fiber stretches of the local material fibers:
\begin_inset Formula
\[
\tilde{\lambda}_{i}=\left(\mathbf{a}_{i}^{0}\cdot\mathbf{\tilde{C}}\cdot\mathbf{a}_{i}^{0}\right)^{1/2}\,.
\]
\end_inset
The local material fibers are defined (in the reference frame) as an orthonormal set of vectors
\begin_inset Formula $\mathbf{a}_{i}^{0}$
\end_inset
.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
for more information.
As with all uncoupled materials,
this material uses the three-field element formulation.
\end_layout
\begin_layout Standard
A complete example for this material follows.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0.0
\end_layout
\begin_layout LyX-Code
100
\end_layout
\begin_layout LyX-Code
4.3,4.3,4.3
\end_layout
\begin_layout LyX-Code
4525,
4525,
4525
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Transversely Isotropic Mooney-Rivlin
\begin_inset CommandInset label
LatexCommand label
name "subsec:Transversely-Isotropic-Mooney-Rivlin"
\end_inset
\end_layout
\begin_layout Standard
The material type for transversely isotropic Mooney-Rivlin materials is
\begin_inset Quotes eld
\end_inset
\shape italic
trans iso Mooney-Rivlin
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Mooney-Rivlin coefficient 1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Mooney-Rivlin coefficient 2
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Exponential stress coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber uncrimping coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Modulus of straightened fibers
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber stretch for straightened fibers
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber distribution option
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Optional active contraction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This constitutive model can be used to represent a material that has a single preferred fiber direction and was developed for application to biological soft tissues
\begin_inset CommandInset citation
LatexCommand citep
key "Puso98,Quapp98,Weiss96"
literal "true"
\end_inset
.
It can be used to model tissues such as tendons,
ligaments and muscle.
The elastic response of the tissue is assumed to arise from the resistance of the fiber family and an isotropic matrix.
It is assumed that the uncoupled strain energy function can be written as follows:
\begin_inset Formula
\[
\Psi=F_{1}\left(\tilde{I}_{1},\tilde{I}_{2}\right)+F_{2}\left(\tilde{\lambda}\right)+\frac{K}{2}\left[\ln\left(J\right)\right]^{2}.
\]
\end_inset
Here
\begin_inset Formula $\tilde{I}_{1}$
\end_inset
and
\begin_inset Formula $\tilde{I}_{2}$
\end_inset
are the first and second invariants of the deviatoric version of the right Cauchy Green deformation tensor
\begin_inset Formula $\mathbf{\tilde{C}}$
\end_inset
and
\begin_inset Formula $\tilde{\lambda}$
\end_inset
is the deviatoric part of the stretch along the fiber direction (
\begin_inset Formula $\tilde{\lambda}^{2}=\mathbf{a}_{0}\cdot\mathbf{\tilde{C}}\cdot\mathbf{a}_{0}$
\end_inset
,
where
\begin_inset Formula $\mathbf{a}_{0}$
\end_inset
is the initial fiber direction),
and
\begin_inset Formula $J=\det\left(\mathbf{F}\right)$
\end_inset
is the Jacobian of the deformation (volume ratio).
The function
\begin_inset Formula $F_{1}$
\end_inset
represents the material response of the isotropic ground substance matrix and is the same as the Mooney-Rivlin form specified above,
while
\begin_inset Formula $F_{2}$
\end_inset
represents the contribution from the fiber family.
The strain energy of the fiber family is as follows:
\begin_inset Formula
\[
F_{2}\left(\tilde{\lambda}\right)=\begin{cases}
0 & \tilde{\lambda}\leqslant1\\
C_{3}\left(e^{-C_{4}}\left(\Ei\left(C_{4}\tilde{\lambda}\right)-\Ei\left(C_{4}\right)\right)-\ln\tilde{\lambda}\right) & 1<\tilde{\lambda}<\lambda_{m}\\
C_{5}\left(\tilde{\lambda}-1\right)+C_{6}\ln\tilde{\lambda} & \tilde{\lambda}\geqslant\lambda_{m}
\end{cases}\,
\]
\end_inset
where
\begin_inset Formula $\Ei\left(\cdot\right)$
\end_inset
is the exponential integral function.
The resulting fiber stress is evaluated from
\begin_inset Formula
\[
\tilde{\lambda}\frac{\partial F_{2}}{\partial\tilde{\lambda}}=\begin{cases}
0 & \tilde{\lambda}\leqslant1\\
C_{3}\left(e^{C_{4}\left(\tilde{\lambda}-1\right)}-1\right) & 1<\tilde{\lambda}<\lambda_{m}\\
C_{5}\tilde{\lambda}+C_{6} & \tilde{\lambda}\geqslant\lambda_{m}
\end{cases}\,.
\]
\end_inset
Here,
\begin_inset Formula $C_{1}$
\end_inset
and
\begin_inset Formula $C_{2}$
\end_inset
are the Mooney-Rivlin material coefficients,
\shape italic
lam_max
\shape default
(
\begin_inset Formula $\lambda_{m})$
\end_inset
is the stretch at which the fibers are straightened,
\begin_inset Formula $C_{3}$
\end_inset
scales the exponential stresses,
\begin_inset Formula $C_{4}$
\end_inset
is the rate of uncrimping of the fibers,
and
\begin_inset Formula $C_{5}$
\end_inset
is the modulus of the straightened fibers.
\begin_inset Formula $C_{6}$
\end_inset
is determined from the requirement that the stress is continuous at
\begin_inset Formula $\lambda_{m}$
\end_inset
.
\end_layout
\begin_layout Standard
This material model uses a three-field element formulation,
interpolating displacements as linear field variables and pressure and volume ratio as piecewise constant on each element
\begin_inset CommandInset citation
LatexCommand citep
key "Simo91"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
The fiber orientation can be specified as explained in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
.
An optional active contraction model can also be defined for this material.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Fiber-Active-Contraction"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for more details.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout Standard
This example defines a transversely isotropic material with a Mooney-Rivlin basis.
It defines a homogeneous fiber direction and uses the active fiber contraction feature.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
13.85
\end_layout
\begin_layout LyX-Code
0.0
\end_layout
\begin_layout LyX-Code
2.07
\end_layout
\begin_layout LyX-Code
61.44
\end_layout
\begin_layout LyX-Code
640.7
\end_layout
\begin_layout LyX-Code
100.0
\end_layout
\begin_layout LyX-Code
1.03
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Transversely Isotropic Veronda-Westmann
\begin_inset CommandInset label
LatexCommand label
name "subsec:Transversely-Isotropic-Veronda-Westmann"
\end_inset
\end_layout
\begin_layout Standard
The material type for transversely isotropic Veronda-Westmann materials is
\begin_inset Quotes eld
\end_inset
\shape italic
trans iso Veronda-Westmann
\begin_inset Quotes erd
\end_inset
\shape default
\begin_inset CommandInset citation
LatexCommand citep
key "Weiss2002"
literal "true"
\end_inset
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Veronda-Westmann coefficient 1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Veronda-Westmann coefficient 2
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Exponential stress coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber uncrimping coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Modulus of straightened fibers
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber stretch for straightened fibers
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber distribution option.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Optional active contraction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This uncoupled hyperelastic material differs from the Transversely Isotropic Mooney-Rivlin model in that it uses the Veronda-Westmann model for the isotropic matrix.
The interpretation of the material parameters,
except
\begin_inset Formula $C_{1}$
\end_inset
and
\begin_inset Formula $C_{2}$
\end_inset
is identical to this material model.
\end_layout
\begin_layout Standard
The fiber distribution option is explained in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
.
An optional active contraction model can also be defined for this material.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Fiber-Active-Contraction"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for more details.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout Standard
This example defines a transversely isotropic material model with a Veronda-Westmann basis.
The fiber direction is implicitly implied as
\shape italic
local
\shape default
.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
13.85
\end_layout
\begin_layout LyX-Code
0.0
\end_layout
\begin_layout LyX-Code
2.07
\end_layout
\begin_layout LyX-Code
61.44
\end_layout
\begin_layout LyX-Code
640.7
\end_layout
\begin_layout LyX-Code
1.03
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Uncoupled Solid Mixture
\begin_inset CommandInset label
LatexCommand label
name "subsec:Uncoupled-Solid-Mixture"
\end_inset
\end_layout
\begin_layout Standard
The material type for for a constrained mixture of uncoupled solids is
\begin_inset Quotes eld
\end_inset
\shape italic
uncoupled solid mixture
\begin_inset Quotes erd
\end_inset
\shape default
.
This material describes a mixture of quasi-incompressible elastic solids.
It is a container for any combination of the materials described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Materials"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Container tag for solid material
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The mixture may consist of any number of solids.
The stress tensor for the solid mixture is the sum of the stresses for all the solids.
The bulk modulus of the uncoupled solid mixture is the sum of the bulk moduli of the individual materials.
A bulk modulus specified outside of the materials will be ignored.
\end_layout
\begin_layout Standard
Material axes may be optionally specified within the level,
as well as within each .
Within the level,
these represent the local element axes relative to the global coordinate system.
Within the ,
they represent local material axes relative to the element.
If material axes are specified at both levels,
they are properly compounded to produce local material axes relative to the global coordinate system.
Material axes specified in the section are equivalent to a specification at the level:
they correspond to local element axes relative to the global system.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
30e3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
0,1,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
2.0
\end_layout
\begin_layout LyX-Code
0.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.8660254,0.5,0
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5,
1,
1
\end_layout
\begin_layout LyX-Code
2.5,
3,
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.8660254,-0.5,0
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5,
1,
1
\end_layout
\begin_layout LyX-Code
2.5,
3,
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Veronda-Westmann
\begin_inset CommandInset label
LatexCommand label
name "subsec:Veronda-Westmann"
\end_inset
\end_layout
\begin_layout Standard
The material type for incompressible Veronda-Westmann materials is
\shape italic
Veronda-Westmann
\shape default
\begin_inset CommandInset citation
LatexCommand citep
key "Veronda70"
literal "true"
\end_inset
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
First VW coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Second VW coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This model is similar to the Mooney-Rivlin model in that it also uses an uncoupled deviatoric dilatational strain energy:
\begin_inset Formula
\[
\Psi=C_{1}\left[e^{\left(C_{2}\left(\tilde{I}_{1}-3\right)\right)}-1\right]-\frac{C_{1}C_{2}}{2}\left(\tilde{I}_{2}-3\right)+U\left(J\right)\,.
\]
\end_inset
The dilatational term is identical to the one used in the Mooney-Rivlin model.
This model can be used to describe certain types of biological materials that display exponential stiffening with increasing strain.
It has been used to describe the response of skin tissue
\begin_inset CommandInset citation
LatexCommand citep
key "Veronda70"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1000.0
\end_layout
\begin_layout LyX-Code
2000.0
\end_layout
\begin_layout LyX-Code
1000
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Mooney-Rivlin Von Mises Distributed Fibers
\begin_inset CommandInset label
LatexCommand label
name "subsec:Mooney-Rivlin-Von-Mises"
\end_inset
\end_layout
\begin_layout Standard
\series bold
(Sclera and other thin soft tissues)
\end_layout
\begin_layout Standard
Authors:
Cécile L.M.
Gouget and Michaël J.A.
Girard
\end_layout
\begin_layout Standard
The material type for a thin material where fiber orientation follows a von Mises distribution is
\begin_inset Quotes eld
\end_inset
Mooney-Rivlin von Mises Fibers
\begin_inset Quotes erd
\end_inset
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Mooney-Rivlin coefficient 1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Mooney-Rivlin coefficient 2
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Exponential stress coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber uncrimping coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Modulus of straightened fibers
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber stretch for straightened fibers
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Preferred fiber orientation in radian (angle within the plane of the fibers,
defined with respect to the first direction given in mat_axis)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[rad]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber concentration factor
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Choice of von Mises distribution
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
=1 semi-circular von Mises distribution
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
=2 constrained von Mises mixture distribution
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Exponent (only for vmc=2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Number of integration points (value is a multiple of 10)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Reference frame of the plane of the fibers
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This constitutive model is designed for thin soft tissues.
Fibers are multi-directional:
they are distributed within the plane tangent to the tissue surface and they follow a unimodal distribution.
It is a constitutive model that is suitable for ocular tissues (e.g.
sclera and cornea) but can be used for other thin soft tissues.
The proposed strain energy function is as follows:
\begin_inset Formula
\[
\Psi=F_{1}\left(\tilde{I}_{1},\tilde{I}_{2}\right)+\int\limits_{\theta_{P}-\pi/2}^{\theta_{P}+\pi/2}P\left(\theta\right)F_{2}\left(\tilde{\lambda}\left[\theta\right]\right)d\theta+\frac{K}{2}\left[\ln\left(J\right)\right]^{2},
\]
\end_inset
where
\begin_inset Formula $P$
\end_inset
is the 2D unimodal distribution function of the fibers which satisfies the normalization condition:
\begin_inset Formula
\[
\int\limits_{\theta_{P}-\pi/2}^{\theta_{P}+\pi/2}P\left(\theta\right)d\theta=1.
\]
\end_inset
\begin_inset Formula $\theta_{P}$
\end_inset
is the preferred fiber orientation relative to a local coordinate system (parameter tp).
The functions
\begin_inset Formula $F_{1}$
\end_inset
and
\begin_inset Formula $F_{2}$
\end_inset
are described in the
\begin_inset Quotes eld
\end_inset
Transversely Isotropic Mooney-Rivlin
\begin_inset Quotes erd
\end_inset
model.
The user can choose between 2 distribution functions using the parameter vmc.
\end_layout
\begin_layout Standard
\series bold
1.
Semi-circular von Mises distribution (vmc
\series default
=
\series bold
1)
\begin_inset CommandInset citation
LatexCommand citep
key "Girard09"
literal "true"
\end_inset
\end_layout
\begin_layout Standard
The semi-circular von Mises distribution is one of the simplest unimodal distribution in circular statistics.
It can be expressed as
\begin_inset Formula
\[
P\left(\theta\right)=\frac{1}{\pi I_{0}\left(k_{f}\right)}\exp\left[k_{f}\cos\left(2\left(\theta-\theta_{p}\right)\right)\right],
\]
\end_inset
where
\begin_inset Formula $I_{0}$
\end_inset
is the modified Bessel function of the first kind (order 0),
and
\begin_inset Formula $k_{f}$
\end_inset
is the fiber concentration factor.
\begin_inset Formula $k_{f}$
\end_inset
controls the amount of fibers that are concentrated along the orientation
\begin_inset Formula $\theta_{P}$
\end_inset
as illustrated in the figure below.
\end_layout
\begin_layout Standard
\begin_inset VSpace defskip
\end_inset
\begin_inset Box Frameless
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigMooneyRivlinVonMises.png
\end_inset
\end_layout
\begin_layout Plain Layout
Polar representation of the semi-circular
\series bold
\series default
von-Mises distribution describing in-plane collagen fiber alignment.
In this case,
the preferred fiber orientation
\begin_inset Formula $\theta_{P}$
\end_inset
is equal to zero degrees.
When the fiber concentration factor
\begin_inset Formula $k$
\end_inset
is equal to zero,
the collagen fibers have an isotropic distribution in a plane tangent to the scleral wall.
As
\begin_inset Formula $k$
\end_inset
increases,
the collagen fibers align along the preferred fiber orientation
\begin_inset Formula $\theta_{P}$
\end_inset
.
Note that the distributions were plotted on a circle of unit one to ease visualization.
\end_layout
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\series bold
2.
Constrained von Mises Mixture Distribution (vmc
\series default
=
\series bold
2)
\begin_inset CommandInset citation
LatexCommand citep
key "Gouget12"
literal "true"
\end_inset
\end_layout
\begin_layout Standard
The semi-circular von Mises distribution is ideal for its simplicity but in some instance it fails to accurately describe the isotropic subpopulation of fibers present in thin soft tissues.
An improved mathematical description is proposed here as a weighted mixture of the semi-circular uniform distribution and the semi-circular von Mises distribution.
It can be expressed as:
\begin_inset Formula
\[
P\left(\theta\right)=\frac{1-\beta}{\pi}+\frac{\beta}{\pi I_{0}\left(k_{f}\right)}\exp\left[k_{f}\cos\left(2\left(\theta-\theta_{p}\right)\right)\right],
\]
\end_inset
where
\begin_inset Formula $\beta$
\end_inset
needs to be constrained for uniqueness and stability.
\begin_inset Formula $\beta$
\end_inset
is expressed as:
\begin_inset Formula
\[
\beta=\left(\frac{I_{1}\left(k_{f}\right)}{I_{0}\left(k_{f}\right)}\right)^{n},
\]
\end_inset
where
\begin_inset Formula $I_{1}$
\end_inset
is the modified Bessel function of the first kind (order 1),
and n is an exponent to be determined experimentally (parameter var_n).
n=2 has been found to be suitable for the sclera based on fiber distribution measurements using small angle light scattering.
\end_layout
\begin_layout Standard
\series bold
Note about Numerical Integration
\end_layout
\begin_layout Standard
All numerical integrations are performed using a 10-point Gaussian quadrature rule.
The number of Gaussian integration points can be increased for numerical stability.
This is controlled through the parameter
\emph on
gipt
\emph default
.
We recommend to use at least
\emph on
gipt
\emph default
= 20 (2
\begin_inset Formula $\times$
\end_inset
10 integration points).
Note that the more integration points are used,
the slower the model will run.
By increasing the number of integration points,
one should observe convergence in the numerical accuracy.
The parameter gipt is required to be a multiple of 10.
\end_layout
\begin_layout Standard
\series bold
Definition of the Fiber Plane
\end_layout
\begin_layout Standard
The user must specify two directions to define a local coordinate system of the plane in which the fibers lay.
As explained in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Orthotropic-Materials"
nolink "false"
\end_inset
,
this can be done by defining two directions with the parameter
\emph on
mat_axis
\emph default
.
The first direction (vector
\series bold
\begin_inset Formula $\mathbf{a}$
\end_inset
\series default
of
\emph on
mat_axis
\emph default
) must be the reference direction used to define the angle
\emph on
tp
\emph default
(
\begin_inset Formula $\theta_{P}$
\end_inset
).
The second direction (vector
\series bold
\begin_inset Formula $\mathbf{d}$
\end_inset
\series default
of mat_axis) can be any other direction in the plane of the fibers.
Thus,
a fiber at angle
\begin_inset Formula $\theta_{P}$
\end_inset
will be along the vector
\begin_inset Formula $\mathbf{v}=\cos\theta_{P}\mathbf{e}_{1}+\sin\theta_{P}\mathbf{e}_{2}$
\end_inset
where
\begin_inset Formula $\mathbf{e}_{1}=\mathbf{a}/\left\Vert \mathbf{a}\right\Vert $
\end_inset
,
\begin_inset Formula $\mathbf{e}_{2}=\left(\mathbf{e}_{3}\times\mathbf{a}\right)/\left\Vert \mathbf{e}_{3}\times\mathbf{a}\right\Vert $
\end_inset
,
\begin_inset Formula $\mathbf{e}_{3}=\left(\mathbf{a}\times\mathbf{d}\right)/\left\Vert \mathbf{a}\times\mathbf{d}\right\Vert $
\end_inset
,
as was defined in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Orthotropic-Materials"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\series bold
Note on parameters kf and tp
\end_layout
\begin_layout Standard
The parameters kf and tp can be specified either in the Material section or in the
\shape italic
ElementData
\shape default
section with the tag MRVonMisesParameters.
With this second option the user can define different fiber characteristics for each element separately,
which can be useful if fiber orientations or concentrations vary spatially.
The parameter mat_axis can also be defined either in the Material section or in the
\shape italic
ElementData
\shape default
section.
\end_layout
\begin_layout Standard
\series bold
Example
\end_layout
\begin_layout Standard
This example defines a thin soft tissue material where fibers are distributed according to a constrained von Mises mixture distribution.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10.0
\end_layout
\begin_layout LyX-Code
0.0
\end_layout
\begin_layout LyX-Code
50.0
\end_layout
\begin_layout LyX-Code
5.0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
1000000.0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
2.0
\end_layout
\begin_layout LyX-Code
0.0
\end_layout
\begin_layout LyX-Code
40
\end_layout
\begin_layout LyX-Code
4,1,3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Isotropic Lee-Sacks uncoupled
\begin_inset CommandInset label
LatexCommand label
name "subsec:Kamensky-uncoupled"
\end_inset
\end_layout
\begin_layout Standard
This material implements a Fung-type material,
as presented in Kamensy,
CMAME 2018.
The material formulation is selected by setting the type attribute to "
\family typewriter
uncoupled
\family default
\family typewriter
isotropic Lee-Sacks
\family default
".
It defines the following parameters:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
shear-modulus of neo-Hookean matrix
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
c1 parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
c2 parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
scale factor for c0 when used in tangent (default = 1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The strain-energy density function for this material combines a neo-Hookean matrix with a Fung-type exponential term,
and is defined as follows.
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\Psi=\frac{c_{0}}{2}\left(I_{1}-3\right)+\frac{c_{1}}{2}\left(e^{c_{2}\left(I_{1}-3\right)^{2}}-1\right)
\]
\end_inset
\end_layout
\begin_layout Standard
As reported in Kamensky,
the exponential term may cause convergence difficulties under certain loading conditions.
It was reported that increasing the value of
\begin_inset Formula $c_{0}$
\end_inset
during the stiffness evaluation may improve convergence.
The default value for
\emph on
tangent_scale
\emph default
is 1,
and thus tangent scaling is not applied.
A tangent scale factor of 20 was used in Kamensky.
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1000
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
0.209
\end_layout
\begin_layout LyX-Code
9.046
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Yeoh Material
\begin_inset CommandInset label
LatexCommand label
name "subsec:Yeoh-Material"
\end_inset
\end_layout
\begin_layout Standard
This material implements a Yeoh material,
as presented online (https://en.wikipedia.org/wiki/Yeoh_hyperelastic_model).
The material formulation is selected by setting the type attribute to "Yeoh".
It defines the following parameters:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
...
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Elastic moduli of Yeoh material (up to 6)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The strain-energy density function for this material combines a neo-Hookean matrix with a Fung-type exponential term,
and is defined as follows.
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\Psi=\sum_{i=1}^{6}c_{i}\left(\tilde{I}_{1}-3\right)^{i}
\]
\end_inset
\end_layout
\begin_layout Standard
\emph on
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
100
\end_layout
\begin_layout LyX-Code
0.75
\end_layout
\begin_layout LyX-Code
-0.04
\end_layout
\begin_layout LyX-Code
0.08
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Fiber Active Contraction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fiber-Active-Contraction"
\end_inset
\end_layout
\begin_layout Standard
Some of the material models described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Materials"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
which include a fiber model may provide the option to specify an active contraction along that fiber.
This section lists the types of fiber active contraction models.
\end_layout
\begin_layout Subsubsection
Active Contraction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Active-Contraction"
\end_inset
\end_layout
\begin_layout Standard
The default active contraction model is
\begin_inset Quotes eld
\end_inset
\emph on
active_contraction
\emph default
\begin_inset Quotes erd
\end_inset
.
It is based on the formulation of Guccione et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Guccione93"
literal "false"
\end_inset
and reviewed in the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Theory Manual}}
\end_layout
\end_inset
.
The active stress is evaluated as
\begin_inset Formula $T^{a}\mathbf{a}\otimes\mathbf{a}$
\end_inset
,
where
\begin_inset Formula $\mathbf{a}$
\end_inset
is the unit vector along the fiber in the current configuration,
and
\begin_inset Formula
\[
T^{a}=T_{\max}\frac{Ca_{0}^{2}}{Ca_{0}^{2}+ECa_{50}^{2}}C\left(t\right)
\]
\end_inset
where
\begin_inset Formula
\[
ECa_{50}=\frac{\left(\text{Ca}_{0}\right)_{\max}}{\sqrt{\exp\left[\beta\left(\lambda\left(t\right)l_{r}-l_{0}\right)\right]-1}}
\]
\end_inset
In this expression,
\begin_inset Formula $\lambda\left(t\right)$
\end_inset
is the fiber stretch ratio at the current time.
The activation curve
\begin_inset Formula $C\left(t\right)$
\end_inset
is represented by the
\emph on
ascl
\emph default
property that takes an optional attribute,
\shape italic
lc
\shape default
,
which defines the loadcurve.
The list of parameters required for this model is as follows.
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Activation scale factor
\begin_inset Formula $C\left(t\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Intracellular calcium concentration
\begin_inset Formula $Ca_{0}$
\end_inset
(default=1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Maximum peak intracellular calcium concentration
\begin_inset Formula $\left(\text{Ca}_{0}\right)_{\max}$
\end_inset
(default=ca0)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
tension-sarcomere length relation constant
\begin_inset Formula $\beta$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
No tension sarcomere length
\begin_inset Formula $l_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Unloaded sarcomere length
\begin_inset Formula $l_{r}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Isometric tension under maximal activation at camax
\begin_inset Formula $T_{\max}$
\end_inset
(default=1)
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout Standard
This example defines a transversely isotropic material with a Mooney-Rivlin basis.
It defines a homogeneous fiber direction and uses the active fiber contraction feature.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
13.85
\end_layout
\begin_layout LyX-Code
0.0
\end_layout
\begin_layout LyX-Code
2.07
\end_layout
\begin_layout LyX-Code
61.44
\end_layout
\begin_layout LyX-Code
640.7
\end_layout
\begin_layout LyX-Code
100.0
\end_layout
\begin_layout LyX-Code
1.03
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
4.35
\end_layout
\begin_layout LyX-Code
4.75
\end_layout
\begin_layout LyX-Code
1.58
\end_layout
\begin_layout LyX-Code
2.04
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Force-Velocity Active Contraction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Force-Velocity-Active-Contractio"
\end_inset
\end_layout
\begin_layout Standard
This material model was formulated by Estrada et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Estrada20"
literal "false"
\end_inset
and is called
\begin_inset Quotes eld
\end_inset
\emph on
force-velocity-Estrada
\emph default
\begin_inset Quotes erd
\end_inset
.
It is a modification of the
\begin_inset Quotes eld
\end_inset
\emph on
active_contraction
\emph default
\begin_inset Quotes erd
\end_inset
material based on the formulation of Guccione et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Guccione93"
literal "false"
\end_inset
described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Active-Contraction"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
based on the fading-memory formulation poroposed by Hunter et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Hunter98"
literal "false"
\end_inset
.
The active stress is evaluated as
\begin_inset Formula $T^{a}\mathbf{a}\otimes\mathbf{a}$
\end_inset
,
where
\begin_inset Formula $\mathbf{a}$
\end_inset
is the unit vector along the fiber in the current configuration,
and
\begin_inset Formula
\[
T^{a}=e\left(t\right)\underbrace{T_{\max}\frac{Ca_{0}^{2}}{Ca_{0}^{2}+ECa_{50}^{2}}}_{\begin{array}{c}
\text{instantaneous length}\\
\text{dependence}
\end{array}}\underbrace{\frac{1+aQ\left(t,\lambda\left(t\right)\right)}{1-Q\left(t,\lambda\left(t\right)\right)}}_{\text{force-velocity}}
\]
\end_inset
where
\begin_inset Formula
\[
ECa_{50}=\frac{\left(\text{Ca}_{0}\right)_{\max}}{\sqrt{\exp\left[\beta\left(\lambda\left(t\right)l_{r}-l_{0}\right)\right]-1}}
\]
\end_inset
and
\begin_inset Formula
\[
Q\left(t,\lambda\left(t\right)\right)=\sum_{k=1}^{3}A_{k}\int_{-\infty}^{t}e^{-\alpha_{k}\left(t-\tau\right)}\dot{\lambda}\left(\tau\right)\,d\tau
\]
\end_inset
In these expressions,
\begin_inset Formula $\lambda\left(t\right)$
\end_inset
is the fiber stretch ratio at the current time.
Here,
\begin_inset Formula $T^{a}$
\end_inset
\begin_inset Quotes eld
\end_inset
is the product of three distinct components:
a time-varying normalized activation,
\begin_inset Formula $e\left(t\right)$
\end_inset
,
that defines the time course of force generation throughout the cardiac cycle;
an instantaneous length-dependent term that scales the peak possible isometric tension based on the current fiber stretch;
and a force-velocity term that dampens the instantaneous force generation based on the rate of shortening of the fibers
\begin_inset Quotes erd
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Estrada20"
literal "false"
\end_inset
.
The activation curve
\begin_inset Formula $e\left(t\right)$
\end_inset
is represented by the
\emph on
ascl
\emph default
property that takes an optional attribute,
\shape italic
lc
\shape default
,
which defines the time-dependent loadcurve.
The list of parameters required for this model is as follows.
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Activation scale factor
\begin_inset Formula $e\left(t\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Intracellular calcium concentration
\begin_inset Formula $Ca_{0}$
\end_inset
(default=1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Maximum peak intracellular calcium concentration
\begin_inset Formula $\left(\text{Ca}_{0}\right)_{\max}$
\end_inset
(default=ca0)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
tension-sarcomere length relation constant
\begin_inset Formula $\beta$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
No tension sarcomere length
\begin_inset Formula $l_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Unloaded sarcomere length
\begin_inset Formula $l_{r}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Isometric tension under maximal activation at camax
\begin_inset Formula $T_{\max}$
\end_inset
(default=1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
,
,
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameters
\begin_inset Formula $A_{k}$
\end_inset
for
\begin_inset Formula $k=1,2,3$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
,
,
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameters
\begin_inset Formula $\alpha_{k}$
\end_inset
for
\begin_inset Formula $k=1,2,3$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $a$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Set to true (1) by default.
Set to false (0) to turn off the force-velocity term
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout Standard
This example defines a transversely isotropic material with a Mooney-Rivlin basis.
It defines a homogeneous fiber direction and uses the active fiber contraction feature.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
13.85
\end_layout
\begin_layout LyX-Code
0.0
\end_layout
\begin_layout LyX-Code
2.07
\end_layout
\begin_layout LyX-Code
61.44
\end_layout
\begin_layout LyX-Code
640.7
\end_layout
\begin_layout LyX-Code
100.0
\end_layout
\begin_layout LyX-Code
1.03
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
4.35
\end_layout
\begin_layout LyX-Code
4.75
\end_layout
\begin_layout LyX-Code
1.58
\end_layout
\begin_layout LyX-Code
1.58
\end_layout
\begin_layout LyX-Code
135.7
\end_layout
\begin_layout LyX-Code
30.30303
\end_layout
\begin_layout LyX-Code
50
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Unconstrained Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Unconstrained-Materials"
\end_inset
\end_layout
\begin_layout Standard
Unlike the materials in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Materials"
nolink "false"
\end_inset
,
these materials do not necessarily assume an additive decomposition of the bulk and deviatoric parts of the strain energy or stress.
Further,
these materials can only be used with the standard displacement-based finite element formulation,
rather than the three-field element formulatoin.
They should not be used for nearly-incompressible material behavior due to the potential for element locking.
\end_layout
\begin_layout Subsubsection
Arruda-Boyce Unconstrained
\begin_inset CommandInset label
LatexCommand label
name "subsec:Arruda-Boyce-Unconstrained"
\end_inset
\end_layout
\begin_layout Standard
The material type for an unconstrained Arruda-Boyce material is
\emph on
Arruda-Boyce unconstrained
\emph default
.
This isotropic Arruda-Boyce
\begin_inset CommandInset citation
LatexCommand citep
key "Arruda93"
literal "false"
\end_inset
8-chain model has been used in the field of polymer modeling and in cervical biomechanics
\begin_inset CommandInset citation
LatexCommand citep
key "Shi22"
literal "false"
\end_inset
.
It is based on the simple freely-jointed-chain model and can be derived using the Langevin equation of statistical mechanics.
The strain energy density for this material takes the form
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\Psi(I_{1},J)=\xi\left(\sqrt{\frac{I_{1}}{3N}}\beta+\ln\frac{\beta}{\sinh\beta}\right)-\frac{\xi}{3}\sqrt{N}\beta_{0}\ln J+\frac{1}{2}\kappa(\ln J^{2}-1-2\ln J)\label{eq2-1}
\end{equation}
\end_inset
\end_layout
\begin_layout Standard
\noindent
where
\begin_inset Formula $I_{1}=\tr\mathbf{C}$
\end_inset
is the first invariant of
\begin_inset Formula $\mathbf{C}$
\end_inset
,
\begin_inset Formula ${\displaystyle \beta=\mathcal{L}^{-1}\left[\sqrt{\frac{I_{1}}{3N}}\right]}$
\end_inset
is the inverse Langevin equation,
and
\begin_inset Formula ${\displaystyle \beta_{0}=\mathcal{L}^{-1}\left[\sqrt{\frac{1}{N}}\right]}$
\end_inset
.
Here,
\begin_inset Formula $\xi=nk\Theta$
\end_inset
is the initial fiber modulus with
\begin_inset Formula $n,k,\Theta$
\end_inset
respectively representing the number of chains per unit volume,
Boltzmann's constant,
and the absolute temperature.
The parameter
\begin_inset Formula $N=\zeta^{2}$
\end_inset
is the number of chain segments,
and
\begin_inset Formula $\zeta$
\end_inset
is the locking stretch that represents the extensibility of the material.
\end_layout
\begin_layout Standard
A Taylor series expansion is used to evaluate the inverse Langevin equation.
The parameter
\begin_inset Formula $n_{\mathrm{term}}$
\end_inset
is used to control the number of terms used to evaluate the series;
\begin_inset Formula $n_{\mathrm{term}}$
\end_inset
must be an integer between 3 and 30.
\end_layout
\begin_layout Standard
Langevin mechanics describes a stochastic process with non-Gaussian distribution.
It will reduce to a Gaussian distribution when the system approaches equilibrium.
Thus,
when the material is far from its maximum extensibility,
i.e.,
when
\begin_inset Formula $\zeta=\sqrt{N}$
\end_inset
is much larger than the stretch,
this model will reduce to a neo-Hookean material.
\end_layout
\begin_layout Standard
This material The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Initial fiber modulus
\begin_inset Formula $\xi$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Number of chain segments
\begin_inset Formula $N$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Number of terms in the Taylor series expansion
\begin_inset Formula $n_{\text{term}}$
\end_inset
(
\begin_inset Formula $3\le n_{\text{term}}\le30$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Bulk modulus
\begin_inset Formula $\kappa$
\end_inset
of ground matrix
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
30
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Carter-Hayes
\begin_inset CommandInset label
LatexCommand label
name "subsec:Carter-Hayes"
\end_inset
\end_layout
\begin_layout Standard
The material type for a Carter-Hayes material is
\shape italic
Carter-Hayes
\shape default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Young's modulus at reference density
\begin_inset Formula $E_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
reference density
\begin_inset Formula $\rho_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
M
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
exponent of solid-bound molecule density for calculation of Young's modulus
\begin_inset Formula $\gamma$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Poisson's ratio
\begin_inset Formula $\nu$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
index of solid bound molecule
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This model describes an unconstrained neo-Hookean material
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
whose Young's modulus is a power-law function of the referential apparent density
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
of a solid-bound molecule.
It is derived from the following hyperelastic strain-energy function:
\begin_inset Formula
\[
\Psi_{r}=\frac{E_{Y}}{2\left(1+\nu\right)}\left[\frac{1}{2}\left(\tr\mathbf{C}-3\right)-\ln J+\frac{\nu}{1-2\nu}\left(\ln J\right)^{2}\right].
\]
\end_inset
Here,
\begin_inset Formula $\mathbf{C}$
\end_inset
is the right Cauchy-Green deformation tensor and
\begin_inset Formula $J$
\end_inset
is the determinant of the deformation gradient tensor.
\end_layout
\begin_layout Standard
Young's modulus depends on
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
according to a power law
\begin_inset CommandInset citation
LatexCommand citep
key "Carter76,Carter77"
literal "true"
\end_inset
,
\begin_inset Formula
\[
E_{Y}=E_{0}\left(\frac{\rho_{r}^{\sigma}}{\rho_{0}}\right)^{\gamma}\,.
\]
\end_inset
This type of material references a solid-bound molecule that belongs to a multiphasic mixture.
Therefore this material may only be used as the solid (or a component of the solid) in a multiphasic mixture (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Triphasic-Multiphasic-Materials"
nolink "false"
\end_inset
).
The solid-bound molecule must be defined in the section (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Bound-Molecules"
nolink "false"
\end_inset
) and must be included in the multiphasic mixture using a tag.
The parameter
\shape italic
sbm
\shape default
must refer to the global index of that solid-bound molecule.
The value of
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
is specified within the tag.
If a chemical reaction is defined within that multiphasic mixture that alters the value of
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
,
lower and upper bounds may be specified for this referential density within the tag to prevent
\begin_inset Formula $E_{Y}$
\end_inset
from reducing to zero or achieving excessively elevated values.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
10000
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.01
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Cell Growth
\begin_inset CommandInset label
LatexCommand label
name "subsec:Cell-Growth"
\end_inset
\end_layout
\begin_layout Standard
The material type for cell growth is
\begin_inset Quotes eld
\end_inset
\shape italic
cell growth
\shape default
\begin_inset Quotes erd
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian2012"
literal "true"
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
intracellular solid volume fraction in reference (strain-free) configuration,
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
intracellular molar content of membrane-impermeant solute (moles per volume of the cell in the reference configuration),
\begin_inset Formula $c_{r}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
extracellular osmolarity,
\begin_inset Formula $c_{e}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The Cauchy stress for this material is
\begin_inset Formula
\[
\boldsymbol{\sigma}=-\pi\mathbf{I},
\]
\end_inset
where
\begin_inset Formula $\pi$
\end_inset
is the osmotic pressure,
given by
\begin_inset Formula
\[
\pi=RT\left(\frac{c_{r}}{J-\varphi_{r}^{s}}-c_{e}\right),
\]
\end_inset
where
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
is the relative volume.
The values of the universal gas constant
\begin_inset Formula $R$
\end_inset
and absolute temperature
\begin_inset Formula $T$
\end_inset
must be specified as global constants.
\end_layout
\begin_layout Standard
Cell growth may be modeled by simply increasing the mass of the intracellular solid matrix and membrane-impermeant solute.
This is achieved by allowing the parameters
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
and
\begin_inset Formula $c_{r}$
\end_inset
to increase over time as a result of growth,
by associating them with user-defined load curves.
Since cell growth is often accompanied by cell division,
and since daughter cells typically achieve the same solid and solute content as their parent,
it may be convenient to assume that
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
and
\begin_inset Formula $c_{r}$
\end_inset
increase proportionally,
though this is not an obligatory relationship.
To ensure that the initial configuration is a stress-free reference configuration,
let
\begin_inset Formula $c_{r}=\left(1-\varphi_{r}^{s}\right)c_{e}$
\end_inset
in the initial state prior to growth.
\end_layout
\begin_layout Standard
\shape italic
Example (using units of mm,
N,
s,
nmol,
K)
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
298
\end_layout
\begin_layout LyX-Code
8.314e-06
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
300
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0.3
\end_layout
\begin_layout LyX-Code
1,0.6
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,210
\end_layout
\begin_layout LyX-Code
1,420
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Kinematic Growth
\begin_inset CommandInset label
LatexCommand label
name "subsec:Kinematic-Growth"
\end_inset
\end_layout
\begin_layout Standard
The material type for kinematic growth is
\emph on
kinematic growth
\emph default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the elastic material undergoing kinematic growth
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the growth model (
\emph on
volume growth
\emph default
,
\emph on
area growth
\emph default
,
\emph on
fiber growth
\emph default
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
Kinematic growth,
based on the framework first proposed in
\begin_inset CommandInset citation
LatexCommand citep
key "Rodriguez94"
literal "false"
\end_inset
,
uses the multiplicative decomposition of the deformation gradient into
\begin_inset Formula
\[
\mathbf{F}=\mathbf{F}^{e}\cdot\mathbf{F}^{g}\,,
\]
\end_inset
where
\begin_inset Formula $\mathbf{F}^{e}$
\end_inset
represents the elastic deformation and
\begin_inset Formula $\mathbf{F}^{g}$
\end_inset
represents the growth.
The related Jacobians are
\begin_inset Formula
\[
J^{e}=\det\mathbf{F}^{e}\quad J^{g}=\det\mathbf{F}^{g}\,.
\]
\end_inset
A constitutive model for the growth tensor was provided by
\begin_inset CommandInset citation
LatexCommand citep
key "Menzel12"
literal "false"
\end_inset
,
\begin_inset Formula
\[
\mathbf{F}^{g}=\vartheta^{\text{iso}}\mathbf{I}+\left(\vartheta^{\text{ani}}-1\right)\mathbf{n}_{r}\otimes\mathbf{n}_{r}
\]
\end_inset
where
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
is the referential unit vector for a fiber direction (or normal to an area),
\begin_inset Formula $\vartheta^{\text{iso}}$
\end_inset
represents isotropic growth,
and
\begin_inset Formula $\vartheta^{\text{ani}}$
\end_inset
represents anisotropic growth.
\end_layout
\begin_layout Standard
For
\emph on
volume growth
\emph default
,
let
\begin_inset Formula $\vartheta^{\text{iso}}=\vartheta^{g}$
\end_inset
and
\begin_inset Formula $\vartheta^{\text{ani}}=1$
\end_inset
,
where
\begin_inset Formula $\vartheta^{g}$
\end_inset
is called the growth
\emph on
multiplier
\emph default
in FEBio,
which is typically prescribed using a loadcurve.
For
\emph on
area growth
\emph default
in the plane transverse to the normal direction
\begin_inset Formula $\mathbf{n}$
\end_inset
,
let
\begin_inset Formula $\vartheta^{\text{iso}}=\sqrt{\vartheta^{g}}$
\end_inset
and
\begin_inset Formula $\vartheta^{\text{ani}}=2-\sqrt{\vartheta^{g}}$
\end_inset
.
Finally,
for
\emph on
fiber growth
\emph default
,
let
\begin_inset Formula $\vartheta^{\text{iso}}=1$
\end_inset
and
\begin_inset Formula $\vartheta^{\text{ani}}=\vartheta^{g}$
\end_inset
.
For
\emph on
general growth
\emph default
the user specifies the desired values of
\begin_inset Formula $\vartheta^{\text{iso}}$
\end_inset
and
\begin_inset Formula $\vartheta^{\text{ani}}$
\end_inset
.
\end_layout
\begin_layout Standard
Internally,
the calculations within FEBio require the evaluation of the inverse of
\begin_inset Formula $\mathbf{F}^{g}$
\end_inset
,
which is generall given by
\begin_inset Formula
\[
\left(\mathbf{F}^{g}\right)^{-1}=\frac{1}{\vartheta^{\text{iso}}+\vartheta^{\text{ani}}-1}\left(\left(1+\frac{\vartheta^{\text{ani}}-1}{\vartheta^{\text{iso}}}\right)\mathbf{I}-\frac{\vartheta^{\text{ani}}-1}{\vartheta^{\text{iso}}}\mathbf{n}_{r}\otimes\mathbf{n}_{r}\right)
\]
\end_inset
The mass density of a growing material is evaluated from
\begin_inset Formula $\rho=\rho_{r}/J$
\end_inset
where
\begin_inset Formula $\rho_{r}$
\end_inset
is the (invariant) referential mass density of the growing solid (when there is neither growth nor deformation) and
\begin_inset Formula $J=\det\mathbf{F}=\det\mathbf{F}^{e}\det\mathbf{F}^{g}\equiv J^{e}J^{g}$
\end_inset
.
It follows that the mass density change produced only by the growth is
\begin_inset Formula $\rho J^{e}\equiv\rho_{rg}=\rho_{r}/J^{g}$
\end_inset
,
thus
\begin_inset Formula $J^{g}=\det\mathbf{F}^{g}$
\end_inset
may be used to evaluate the evolving solid mass density
\begin_inset Formula $\rho_{rg}$
\end_inset
due only to growth.
From the general expression for
\begin_inset Formula $\mathbf{F}^{g}$
\end_inset
above it follows that
\begin_inset Formula
\[
J^{g}=\det\mathbf{F}^{g}=\left(\vartheta^{\text{iso}}\right)^{2}\left(\vartheta^{\text{iso}}+\vartheta^{\text{ani}}-1\right)
\]
\end_inset
\end_layout
\begin_layout Subsubsection
Cubic CLE
\begin_inset CommandInset label
LatexCommand label
name "subsec:Cubic-CLE"
\end_inset
\end_layout
\begin_layout Standard
The material type for a conewise linear elastic (CLE) material with cubic symmetry is
\shape italic
cubic CLE
\shape default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Tensile diagonal first Lamé coefficient
\begin_inset Formula $\lambda_{+1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Compressive diagonal first Lamé coefficient
\begin_inset Formula $\lambda_{-1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Off-diagonal first Lamé coefficient
\begin_inset Formula $\lambda_{2}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Second Lamé coefficient
\begin_inset Formula $\mu$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This bimodular elastic material is specialized from the orthotropic conewise linear elastic material described by Curnier et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Curnier94"
literal "true"
\end_inset
,
to the case of cubic symmetry.
It is derived from the following hyperelastic strain-energy function:
\begin_inset Formula
\[
\Psi_{r}=\mu\mathbf{I}:\mathbf{E}^{2}+\sum\limits_{a=1}^{3}\frac{1}{2}\lambda_{1}\left[\mathbf{A}_{a}^{r}:\mathbf{E}\right]\left(\mathbf{A}_{a}^{r}:\mathbf{E}\right)^{2}+\frac{1}{2}\lambda_{2}\sum\limits_{\begin{array}{c}
b=1\\
b\ne a
\end{array}}^{3}\left(\mathbf{A}_{a}^{r}:\mathbf{E}\right)\left(\mathbf{A}_{b}^{r}:\mathbf{E}\right)\,,
\]
\end_inset
where
\begin_inset Formula
\[
\lambda_{1}\left[\mathbf{A}_{a}^{r}:\mathbf{E}\right]=\begin{cases}
\lambda_{+1} & \mathbf{A}_{a}^{r}:\mathbf{E}\geqslant0\\
\lambda_{-1} & \mathbf{A}_{a}^{r}:\mathbf{\,}.E<0
\end{cases}
\]
\end_inset
Here,
\begin_inset Formula $\mathbf{E}$
\end_inset
is the Lagrangian strain tensor and
\begin_inset Formula $\mathbf{A}_{a}^{r}=\mathbf{a}_{a}^{r}\otimes\mathbf{a}_{a}^{r}$
\end_inset
,
where
\begin_inset Formula $\mathbf{a}_{a}^{r}$
\end_inset
(
\begin_inset Formula $a=1,2,3$
\end_inset
) are orthonormal vectors aligned with the material axes.
This material response was originally formulated for infinitesimal strain analyses;
its behavior under finite strains may not be physically realistic.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
13.01
\end_layout
\begin_layout LyX-Code
0.49
\end_layout
\begin_layout LyX-Code
0.66
\end_layout
\begin_layout LyX-Code
0.16
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Donnan Equilibrium Swelling
\begin_inset CommandInset label
LatexCommand label
name "subsec:Donnan-Equilibrium-Swelling"
\end_inset
\end_layout
\begin_layout Standard
The material type for a Donnan equilibrium swelling pressure is
\begin_inset Quotes eld
\end_inset
\shape italic
Donnan equilibrium
\shape default
\begin_inset Quotes erd
\end_inset
.
The swelling pressure is described by the equations for ideal Donnan equilibrium,
assuming that the material is porous,
with a charged solid matrix,
and the external bathing environment consists of a salt solution of monovalent counter-ions
\begin_inset CommandInset citation
LatexCommand citep
key "Overbeek56,Lai91"
literal "true"
\end_inset
.
Since osmotic swelling must be resisted by a solid matrix,
this material is not stable on its own.
It must be combined with an elastic material that resists the swelling,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Mixture"
nolink "false"
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
gel porosity (fluid volume fraction) in reference (strain-free) configuration,
\begin_inset Formula $\varphi_{0}^{w}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fixed-charge density in reference (strain-free) configuration,
\begin_inset Formula $c_{0}^{F}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
external bath osmolarity,
\begin_inset Formula $\bar{c}^{\ast}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
osmotic coefficient,
\begin_inset Formula $\Phi$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The Cauchy stress for this material is the stress from the Donnan equilibrium response
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian09a"
literal "true"
\end_inset
:
\begin_inset Formula
\[
\boldsymbol{\sigma}=-\pi\mathbf{I},
\]
\end_inset
where
\begin_inset Formula $\pi$
\end_inset
is the osmotic pressure,
given by
\begin_inset Formula
\[
\pi=RT\Phi\left(\sqrt{\left(c^{F}\right)^{2}+\left(\bar{c}^{\ast}\right)^{2}}-\bar{c}^{\ast}\right),
\]
\end_inset
and
\begin_inset Formula $c^{F}$
\end_inset
is the fixed-charge density in the current configuration,
related to the reference configuration via
\begin_inset Formula
\[
c^{F}=\frac{\varphi_{0}^{w}}{J-1+\varphi_{0}^{w}}c_{0}^{F},
\]
\end_inset
where
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
is the relative volume.
The values of the universal gas constant
\begin_inset Formula $R$
\end_inset
and absolute temperature
\begin_inset Formula $T$
\end_inset
must be specified as global constants.
For ideal Donnan law,
use
\begin_inset Formula $\Phi=1$
\end_inset
.
\end_layout
\begin_layout Standard
Note that
\begin_inset Formula $c_{0}^{F}$
\end_inset
may be negative or positive;
the gel porosity is unitless and must be in the range
\begin_inset Formula $0<\varphi_{0}^{w}<1$
\end_inset
.
A self-consistent set of units must be used for this model.
For example:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
(m,
N,
s,
mol,
K)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
(mm,
N,
s,
nmol,
K)
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $R$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
8.314 J/mol
\begin_inset Formula $\cdot$
\end_inset
K
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
8.314×10
\begin_inset Formula $^{\mathrm{-6}}$
\end_inset
mJ/nmol
\begin_inset Formula $\cdot$
\end_inset
K
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $T$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
K
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
K
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $c_{0}^{F}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Eq/m
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
= mEq/L
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
nEq/mm
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
= mEq/L
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\bar{c}^{\ast}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
mol/m
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
= mM
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
nmol/mm
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
= mM
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\xi_{i}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Pa
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
MPa
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\pi$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Pa
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
MPa
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
Though this material is porous,
this is not a full-fledged biphasic material as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Biphasic-Materials"
nolink "false"
\end_inset
for example.
The behavior described by this material is strictly valid only after the transient response of interstitial fluid and ion fluxes has subsided (thus Donnan
\shape italic
equilibrium
\shape default
).
\end_layout
\begin_layout Standard
Donnan osmotic swelling reduces to zero when either
\begin_inset Formula $c_{0}^{F}=0$
\end_inset
or
\begin_inset Formula $\bar{c}^{\ast}\to\infty$
\end_inset
.
Therefore,
entering any other values for
\begin_inset Formula $c_{0}^{F}$
\end_inset
and
\begin_inset Formula $\bar{c}^{\ast}$
\end_inset
at the initial time point of an analysis produces an instantaneous,
non-zero swelling pressure.
Depending on the magnitude of this pressure relative to the solid matrix stiffness,
the nonlinear analysis may not converge due to this sudden swelling.
Therefore,
it is recommended to prescribe a load curve for either or ,
to ease into the initial swelling prior to the application of other loading conditions.
\end_layout
\begin_layout Standard
\shape italic
Example (using units of mm,
N,
s,
nmol,
K)
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.8
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
300
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.01,0.01,0.01
\end_layout
\begin_layout LyX-Code
3,3,3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0
\end_layout
\begin_layout LyX-Code
1,150
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
8.314e-6
\end_layout
\begin_layout LyX-Code
310
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Ellipsoidal Fiber Distribution
\begin_inset CommandInset label
LatexCommand label
name "subsec:Ellipsoidal-Fiber-Distribution"
\end_inset
\end_layout
\begin_layout Standard
The material type for an ellipsoidal continuous fiber distribution is
\begin_inset Quotes eld
\end_inset
\shape italic
ellipsoidal fiber distribution
\shape default
\begin_inset Quotes erd
\end_inset
.
Since fibers can only sustain tension,
this material is not stable on its own.
It must be combined with a stable compressible material that acts as a ground matrix,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Mixture"
nolink "false"
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameters
\begin_inset Formula $\left({\beta_{1},\beta_{2},\beta_{3}}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameters
\begin_inset Formula $\left({\xi_{1},\xi_{2},\xi_{3}}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The Cauchy stress for this fibrous material is given by
\begin_inset CommandInset citation
LatexCommand citep
key "Lanir83,Ateshian07a,Ateshian09a"
literal "true"
\end_inset
:
\begin_inset Formula
\[
\boldsymbol{\sigma}=\int_{0}^{2\pi}\int_{0}^{\pi}H\left(I_{n}-1\right)\sigma_{n}\left(\mathbf{n}\right)\sin\varphi\,d\varphi\,d\theta.
\]
\end_inset
Here,
\begin_inset Formula $I_{n}=\lambda_{n}^{2}=\mathbf{N}\cdot\mathbf{C}\cdot\mathbf{N}$
\end_inset
is the square of the fiber stretch
\begin_inset Formula $\lambda_{n}$
\end_inset
,
\begin_inset Formula $\mathbf{N}$
\end_inset
is the unit vector along the fiber direction,
in the reference configuration,
which in spherical angles is directed along
\begin_inset Formula $\left(\theta,\varphi\right)$
\end_inset
,
\begin_inset Formula $\mathbf{n}=\mathbf{F}\cdot\mathbf{N}/\lambda_{n}$
\end_inset
,
and
\begin_inset Formula $H\left(.\right)$
\end_inset
is the unit step function that enforces the tension-only contribution.
\end_layout
\begin_layout Standard
The fiber stress is determined from a fiber strain energy function,
\begin_inset Formula
\[
\sigma_{n}=\frac{2I_{n}}{J}\frac{\partial\Psi}{\partial I_{n}}\mathbf{n}\otimes\mathbf{n},
\]
\end_inset
where in this material,
\begin_inset Formula
\[
\Psi\left(\mathbf{n},I_{n}\right)=\xi\left(\mathbf{n}\right)\left(I_{n}-1\right)^{\beta\left(\mathbf{n}\right)}.
\]
\end_inset
The materials parameters
\begin_inset Formula $\beta$
\end_inset
and
\begin_inset Formula $\xi$
\end_inset
are assumed to vary ellipsoidally with
\begin_inset Formula $\mathbf{n}$
\end_inset
,
according to
\begin_inset Formula
\[
\begin{aligned}\xi\left(\mathbf{n}\right) & =\left(\frac{\cos^{2}\theta\sin^{2}\varphi}{\xi_{1}^{2}}+\frac{\sin^{2}\theta\sin^{2}\varphi}{\xi_{2}^{2}}+\frac{\cos^{2}\varphi}{\xi_{3}^{2}}\right)^{-1/2}\\
\beta\left(\mathbf{n}\right) & =\left(\frac{\cos^{2}\theta\sin^{2}\varphi}{\beta_{1}^{2}}+\frac{\sin^{2}\theta\sin^{2}\varphi}{\beta_{2}^{2}}+\frac{\cos^{2}\varphi}{\beta_{3}^{2}}\right)^{-1/2}
\end{aligned}
\,.
\]
\end_inset
The orientation of the material axis can be defined as explained in detail in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1000.0
\end_layout
\begin_layout LyX-Code
0.45
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10,
12,
15
\end_layout
\begin_layout LyX-Code
2.5,
3,
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Ellipsoidal Fiber Distribution Neo-Hookean
\begin_inset CommandInset label
LatexCommand label
name "subsec:EFD-Neo-Hookean"
\end_inset
\end_layout
\begin_layout Standard
The material type for a Neo-Hookean material with an ellipsoidal continuous fiber distribution is
\begin_inset Quotes eld
\end_inset
\shape italic
EFD neo-Hookean
\shape default
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Young's modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Poisson's ratio
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameters
\begin_inset Formula $\left(\beta_{1},\beta_{2},\beta_{3}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameters
\begin_inset Formula $\left(\xi_{1},\xi_{2},\xi_{3}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The Cauchy stress for this material is given by,
\begin_inset Formula
\[
\boldsymbol{\sigma}=\boldsymbol{\sigma}_{NH}+\boldsymbol{\sigma}_{f}.
\]
\end_inset
Here,
\begin_inset Formula $\boldsymbol{\sigma}_{NH}$
\end_inset
is the stress from the Neo-Hookean basis (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Neo-Hookean"
nolink "false"
\end_inset
),
and
\begin_inset Formula $\boldsymbol{\sigma}_{f}$
\end_inset
is the stress contribution from the fibers (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Ellipsoidal-Fiber-Distribution"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
4.5,4.5,4.5
\end_layout
\begin_layout LyX-Code
1,1,1
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Ellipsoidal Fiber Distribution with Donnan Equilibrium Swelling
\begin_inset CommandInset label
LatexCommand label
name "subsec:EFD-Donnan-Equilibrium"
\end_inset
\end_layout
\begin_layout Standard
The material type for a swelling pressure combined with an ellipsoidal continuous fiber distribution is
\begin_inset Quotes eld
\end_inset
\shape italic
EFD Donnan equilibrium
\shape default
\begin_inset Quotes erd
\end_inset
.
The swelling pressure is described by the equations for ideal Donnan equilibrium,
assuming that the material is porous,
with a charged solid matrix,
and the external bathing environment consists of a salt solution of monovalent counter-ions.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
gel porosity (fluid volume fraction) in reference (strain-free) configuration,
\begin_inset Formula $\varphi_{0}^{w}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fixed-charge density in reference (strain-free) configuration,
\begin_inset Formula $c_{0}^{F}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
external bath osmolarity,
\begin_inset Formula $\bar{c}^{\ast}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameters
\begin_inset Formula $\left(\beta_{1},\beta_{2},\beta_{3}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameters
\begin_inset Formula $\left(\xi_{1},\xi_{2},\xi_{3}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The Cauchy stress for this material is given by,
\begin_inset Formula
\[
\boldsymbol{\sigma}=\boldsymbol{\sigma}_{DE}+\boldsymbol{\sigma}_{f}\,.
\]
\end_inset
\begin_inset Formula $\boldsymbol{\sigma}_{f}$
\end_inset
is the stress contribution from the fibers,
as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
.
\begin_inset Formula $\boldsymbol{\sigma}_{DE}$
\end_inset
is the stress from the Donnan equilibrium response,
as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Donnan-Equilibrium-Swelling"
nolink "false"
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example (using units of mm,
N,
s,
nmol,
K)
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.8
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
300
\end_layout
\begin_layout LyX-Code
3,3,3
\end_layout
\begin_layout LyX-Code
0.01,0.01,0.01
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0
\end_layout
\begin_layout LyX-Code
1,150
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
8.314e-6
\end_layout
\begin_layout LyX-Code
310
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Fung Orthotropic Compressible
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fung-Orthotropic-Compressible"
\end_inset
\end_layout
\begin_layout Standard
The material type for unconstrained orthotropic Fung elasticity
\begin_inset CommandInset citation
LatexCommand citep
key "Fung79,Fung93"
literal "true"
\end_inset
is
\begin_inset Quotes eld
\end_inset
\shape italic
Fung-ortho-compressible
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $E_{1}$
\end_inset
Young's modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $E_{2}$
\end_inset
Young's modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $E_{3}$
\end_inset
Young's modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $G_{12}$
\end_inset
shear modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $G_{23}$
\end_inset
shear modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $G_{31}$
\end_inset
shear modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\nu_{12}$
\end_inset
Poisson's ratio
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\nu_{23}$
\end_inset
Poisson's ratio
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\nu_{31}$
\end_inset
Poisson's ratio
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $c$
\end_inset
coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\kappa$
\end_inset
bulk modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The hyperelastic strain energy function is given by
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian09"
literal "true"
\end_inset
,
\begin_inset Formula
\[
\Psi=\frac{1}{2}c\left(e^{Q}-1\right)+U\left(J\right),
\]
\end_inset
where,
\begin_inset Formula
\[
Q=c^{-1}\sum\limits_{a=1}^{3}\left[2\mu_{a}\mathbf{M}_{a}:\mathbf{E}^{2}+\sum\limits_{b=1}^{3}\lambda_{ab}\left(\mathbf{M}_{a}:\mathbf{E}\right)\left(\mathbf{M}_{b}:\mathbf{E}\right)\right],
\]
\end_inset
and
\begin_inset Formula
\[
U\left(J\right)=\frac{\kappa}{2}\left(\ln J\right)^{2}\,.
\]
\end_inset
Here,
\begin_inset Formula $\mathbf{E}=\left(\mathbf{C}-\mathbf{I}\right)/2$
\end_inset
and
\begin_inset Formula $\mathbf{M}_{a}=\mathbf{V}_{a}\otimes\mathbf{V}_{a}$
\end_inset
where
\begin_inset Formula $\mathbf{V}_{a}$
\end_inset
defines the initial direction of material axis
\begin_inset Formula $a$
\end_inset
.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Orthotropic-Materials"
nolink "false"
\end_inset
on how to define the material axes for orthotropic materials.
The Lamé constants
\begin_inset Formula $\mu_{a}$
\end_inset
(
\begin_inset Formula $a=1,2,3)$
\end_inset
and
\begin_inset Formula $\lambda_{ab}$
\end_inset
(
\begin_inset Formula $a,b=1,2,3$
\end_inset
,
\begin_inset Formula $\lambda_{ba}=\lambda_{ab})$
\end_inset
are related to Young's moduli
\begin_inset Formula $E_{a}$
\end_inset
,
shear moduli
\begin_inset Formula $G_{ab}$
\end_inset
and Poisson's ratios
\begin_inset Formula $\nu_{ab}$
\end_inset
via
\begin_inset Formula
\[
\begin{aligned} & \left[\begin{array}{cccccc}
\lambda_{11}+2\mu_{1} & \lambda_{12} & \lambda_{13} & 0 & 0 & 0\\
\lambda_{12} & \lambda_{22}+2\mu_{2} & \lambda_{23} & 0 & 0 & 0\\
\lambda_{13} & \lambda_{23} & \lambda_{33}+2\mu_{3} & 0 & 0 & 0\\
0 & 0 & 0 & \frac{1}{2}\left(\mu_{1}+\mu_{2}\right) & 0 & 0\\
0 & 0 & 0 & 0 & \frac{1}{2}\left(\mu_{2}+\mu_{3}\right) & 0\\
0 & 0 & 0 & 0 & 0 & \frac{1}{2}\left(\mu_{1}+\mu_{3}\right)
\end{array}\right]^{-1}\\
& =\left[\begin{array}{cccccc}
\frac{1}{E_{1}} & -\frac{\nu_{12}}{E_{1}} & -\frac{\nu_{13}}{E_{1}} & 0 & 0 & 0\\
-\frac{\nu_{21}}{E_{2}} & \frac{1}{E_{2}} & -\frac{\nu_{23}}{E_{2}} & 0 & 0 & 0\\
-\frac{\nu_{31}}{E_{3}} & -\frac{\nu_{32}}{E_{3}} & \frac{1}{E_{3}} & 0 & 0 & 0\\
0 & 0 & 0 & \frac{1}{G_{12}} & 0 & 0\\
0 & 0 & 0 & 0 & \frac{1}{G_{23}} & 0\\
0 & 0 & 0 & 0 & 0 & \frac{1}{G_{31}}
\end{array}\right]
\end{aligned}
\]
\end_inset
The orthotropic Lamé parameters should produce a positive definite stiffness matrix.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
124
\end_layout
\begin_layout LyX-Code
124
\end_layout
\begin_layout LyX-Code
36
\end_layout
\begin_layout LyX-Code
67
\end_layout
\begin_layout LyX-Code
40
\end_layout
\begin_layout LyX-Code
40
\end_layout
\begin_layout LyX-Code
-0.075
\end_layout
\begin_layout LyX-Code
0.87
\end_layout
\begin_layout LyX-Code
0.26
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
120
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Gent Compressible
\end_layout
\begin_layout Standard
The compressible Gent material is defined using the
\emph on
\begin_inset Quotes eld
\end_inset
compressible Gent
\begin_inset Quotes erd
\end_inset
\emph default
type string.
It defines the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Shear modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $J_{m}=I_{m}-1$
\end_inset
,
with
\begin_inset Formula $I_{m}$
\end_inset
max value for first invariant
\begin_inset Formula $I_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Bulk modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The strain energy of this material is defined as follows,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\Psi_{r}=-\frac{\mu J_{m}}{2}\ln\left(1-\frac{I_{1}-3}{J_{m}}\right)+\frac{\kappa}{2}\left(\frac{J^{2}-1}{2}-\ln J\right)^{4}
\]
\end_inset
\end_layout
\begin_layout Standard
Here,
\begin_inset Formula $\mu$
\end_inset
is the shear modulus.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
3.14
\end_layout
\begin_layout LyX-Code
1.5
\end_layout
\begin_layout LyX-Code
1e5
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Isotropic Hencky
\end_layout
\begin_layout Standard
The material type for isotropic Hencky hyperelasticity
\begin_inset CommandInset citation
LatexCommand citep
key "Xiao02"
literal "false"
\end_inset
is
\shape italic
isotropic
\emph on
\shape default
Hencky
\emph default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Young's modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Poisson's ratio
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This material is an implementation of a hyperelastic constitutive material that reduces to the classical linear elastic material for small strains,
but is objective for large deformations and rotations.
The hyperelastic strain-energy function is given by:
\begin_inset Formula
\[
W=\frac{1}{2}\lambda\left(\tr\mathbf{H}\right)^{2}+\mu\mathbf{H}:\mathbf{H}
\]
\end_inset
Here,
\series bold
\begin_inset Formula $\mathbf{H}$
\end_inset
\series default
is the right Hencky strain tensor and
\begin_inset Formula $\lambda$
\end_inset
and
\begin_inset Formula $\mu$
\end_inset
are the Lamé parameters,
which are related to the more familiar Young's modulus
\begin_inset Formula $E$
\end_inset
and Poisson's ratio
\begin_inset Formula $\nu$
\end_inset
as follows:
\begin_inset Formula
\[
\lambda=\frac{\nu E}{\left(1+\nu\right)\left(1-2\nu\right)},\mu=\frac{E}{2\left(1+\nu\right)}\,.
\]
\end_inset
The Cauchy stress for this material takes the form
\begin_inset Formula
\[
\boldsymbol{\sigma}=\frac{\lambda}{J}\left(\mathbf{I}:\mathbf{h}\right)\mathbf{I}+\frac{2\mu}{J}\mathbf{h}
\]
\end_inset
where
\begin_inset Formula $\mathbf{h}$
\end_inset
is the left Hencky strain tensor.
In the limit of infinitesimal strains and rotations,
\begin_inset Formula $J\to1$
\end_inset
and
\begin_inset Formula $\mathbf{h}\to\boldsymbol{\varepsilon}$
\end_inset
where
\begin_inset Formula $\boldsymbol{\varepsilon}$
\end_inset
is the infinitesimal strain tensor.
\end_layout
\begin_layout Standard
It is often convenient to express the material properties using the bulk modulus
\begin_inset Formula $K$
\end_inset
and shear modulus
\begin_inset Formula $G$
\end_inset
.
To convert to Young's modulus and Poisson's ratio,
use the following formulas:
\begin_inset Formula
\[
E=\frac{9KG}{3K+G},\quad\nu=\frac{3K-2G}{6K+2G}\,.
\]
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1000.0
\end_layout
\begin_layout LyX-Code
0.45
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Holmes-Mow
\begin_inset CommandInset label
LatexCommand label
name "subsec:Holmes-Mow"
\end_inset
\end_layout
\begin_layout Standard
The material type for the Holmes-Mow material
\begin_inset CommandInset citation
LatexCommand citep
key "Holmes90"
literal "true"
\end_inset
is
\shape italic
Holmes-Mow
\shape default
.
This isotropic hyperelastic material has been used to represent the solid matrix of articular cartilage
\begin_inset CommandInset citation
LatexCommand citep
key "Holmes90,Ateshian97"
literal "true"
\end_inset
and intervertebral disc
\begin_inset CommandInset citation
LatexCommand citep
key "Iatridis98"
literal "true"
\end_inset
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Young's modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Poisson's ratio
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Exponential stiffening coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The coupled hyperelastic strain-energy function for this material is given by
\begin_inset CommandInset citation
LatexCommand citep
key "Holmes90"
literal "true"
\end_inset
:
\begin_inset Formula
\[
W\left(I_{1},I_{2},J\right)=\frac{1}{2}c\left(e^{Q}-1\right),
\]
\end_inset
where
\begin_inset Formula $I_{1}$
\end_inset
and
\begin_inset Formula $I_{2}$
\end_inset
are the first and second invariants of the right Cauchy-Green tensor and
\begin_inset Formula $J$
\end_inset
is the jacobian of the deformation gradient.
Furthermore,
\begin_inset Formula
\[
\begin{aligned}Q & =\frac{\beta}{\lambda+2\mu}\left[\left(2\mu-\lambda\right)\left(I_{1}-3\right)+\lambda\left(I_{2}-3\right)-\left(\lambda+2\mu\right)\ln J^{2}\right]\\
c & =\frac{\lambda+2\mu}{2\beta}
\end{aligned}
\,,
\]
\end_inset
and
\begin_inset Formula $\lambda$
\end_inset
and
\begin_inset Formula $\mu$
\end_inset
are the Lamé parameters which are related to the more familiar Young's modulus and Poisson's ratio in the usual manner:
\begin_inset Formula
\[
\begin{aligned}\lambda & =\frac{E\nu}{\left(1+\nu\right)\left(1-2\nu\right)}\\
\mu & =\frac{E}{2\left(1+\nu\right)}
\end{aligned}
\,.
\]
\end_inset
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.35
\end_layout
\begin_layout LyX-Code
0.25
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Holzapfel-Gasser-Ogden Unconstrained
\begin_inset CommandInset label
LatexCommand label
name "subsec:HGO-Unconstrained"
\end_inset
\end_layout
\begin_layout Standard
The material type for the unconstrained Holzapfel-Gasser-Ogden material
\begin_inset CommandInset citation
LatexCommand citep
key "Gasser06"
literal "true"
\end_inset
is
\emph on
HGO unconstrained
\emph default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Shear modulus of ground matrix
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber exponential coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber mean orientation angle
\begin_inset Formula $\gamma$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
deg
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber dispersion
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Bulk modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The strain-energy function is given by:
\begin_inset Formula
\[
\begin{aligned}\Psi_{r} & =\frac{c}{2}\left(I_{1}-3\right)-c\ln J+\frac{k_{1}}{2k_{2}}\sum_{\alpha}\left(\exp\left(k_{2}\left\langle E_{\alpha}\right\rangle ^{2}\right)-1\right)\\
& +\frac{K_{0}}{2}\left(\frac{J^{2}-1}{2}-\ln J\right)
\end{aligned}
\]
\end_inset
The fiber strain is
\begin_inset Formula
\[
E_{\alpha}=\kappa\left(I_{1}-3\right)+\left(1-3\kappa\right)\left(I_{4\alpha}-1\right)
\]
\end_inset
where
\begin_inset Formula $I_{1}=\tr\mathbf{C}$
\end_inset
and
\begin_inset Formula $I_{4\alpha}=\mathbf{a}_{\alpha r}\cdot\mathbf{C}\cdot\mathbf{a}_{\alpha r}$
\end_inset
.
The Macaulay brackets around
\begin_inset Formula $\left\langle \tilde{E}_{\alpha}\right\rangle $
\end_inset
indicate that this term is zero when
\begin_inset Formula $E_{\alpha}<0$
\end_inset
and equal to
\begin_inset Formula $E_{\alpha}$
\end_inset
when this strain is positive.
\end_layout
\begin_layout Standard
There are two fiber families along the vectors
\begin_inset Formula $\mathbf{a}_{\alpha r}$
\end_inset
(
\begin_inset Formula $\alpha=1,2$
\end_inset
),
lying in the
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2}\right\} $
\end_inset
plane of the local material axes
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
,
making an angle
\begin_inset Formula $\pm\gamma$
\end_inset
with respect to
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
.
Each fiber family has a dispersion
\begin_inset Formula $\kappa$
\end_inset
,
where
\begin_inset Formula $0\le\kappa\le\frac{1}{3}$
\end_inset
.
When
\begin_inset Formula $\kappa=0$
\end_inset
there is no fiber dispersion,
implying that all the fibers in that family act along the angle
\begin_inset Formula $\pm\gamma$
\end_inset
;
the value
\begin_inset Formula $\kappa=\frac{1}{3}$
\end_inset
represents an isotropic fiber dispersion.
All other intermediate values of
\begin_inset Formula $\kappa$
\end_inset
produce a
\begin_inset Formula $\pi-$
\end_inset
periodic von Mises fiber distribution,
as described in
\begin_inset CommandInset citation
LatexCommand citep
key "Gasser06"
literal "true"
\end_inset
.
\begin_inset Formula $c$
\end_inset
is the shear modulus of the ground matrix;
\begin_inset Formula $k_{1}$
\end_inset
is the fiber modulus and
\begin_inset Formula $k_{2}$
\end_inset
is the exponential coefficient.
\end_layout
\begin_layout Standard
Unlike the uncoupled Holzapfel-Gasser-Ogden material presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Holzapfel-Gasser-Ogden"
nolink "false"
\end_inset
,
this unconstrained version does not enforce isochoric deformation.
This unconstrained model may be used to describe the porous solid matrix of a biphasic or multiphasic tissue model,
where pore volume may change in response to influx or efflux of interstitial fluid.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
7.64
\end_layout
\begin_layout LyX-Code
996.6
\end_layout
\begin_layout LyX-Code
524.6
\end_layout
\begin_layout LyX-Code
49.98
\end_layout
\begin_layout LyX-Code
0.226
\end_layout
\begin_layout LyX-Code
7.64e3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Isotropic Elastic
\begin_inset CommandInset label
LatexCommand label
name "subsec:Isotropic-Elastic"
\end_inset
\end_layout
\begin_layout Standard
The material type for isotropic elasticity is
\shape italic
isotropic elastic
\shape default
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
This material replaces the now-obsolete
\shape italic
linear elastic
\shape default
and
\shape italic
St.Venant-Kirchhoff
\shape default
materials.
These materials are still available for backward compatibility although it is recommended to use the
\shape italic
isotropic elastic
\shape default
material instead.
\end_layout
\end_inset
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Young's modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Poisson's ratio
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This material is an implementation of a hyperelastic constitutive material that reduces to the classical linear elastic material for small strains,
but is objective for large deformations and rotations.
The hyperelastic strain-energy function is given by:
\begin_inset Formula
\[
W=\frac{1}{2}\lambda\left(\tr\mathbf{E}\right)^{2}+\mu\mathbf{E}:\mathbf{E}.
\]
\end_inset
Here,
\series bold
\begin_inset Formula $\mathbf{E}$
\end_inset
\series default
is the Euler-Lagrange strain tensor and
\begin_inset Formula $\lambda$
\end_inset
and
\begin_inset Formula $\mu$
\end_inset
are the Lamé parameters,
which are related to the more familiar Young's modulus
\begin_inset Formula $E$
\end_inset
and Poisson's ratio
\begin_inset Formula $\nu$
\end_inset
as follows:
\begin_inset Formula
\[
\lambda=\frac{\nu E}{\left(1+\nu\right)\left(1-2\nu\right)},\mu=\frac{E}{2\left(1+\nu\right)}\,.
\]
\end_inset
It is often convenient to express the material properties using the bulk modulus
\begin_inset Formula $K$
\end_inset
and shear modulus
\begin_inset Formula $G$
\end_inset
.
To convert to Young's modulus and Poisson's ratio,
use the following formulas:
\begin_inset Formula
\[
E=\frac{9KG}{3K+G},\quad\nu=\frac{3K-2G}{6K+2G}\,.
\]
\end_inset
\shape italic
Remark:
\shape default
Note that although this material is objective,
it is not advised to use this model for large strains since the behavior may be unphysical.
For example,
it can be shown that for a uniaxial tension the stress grows unbounded and the volume tends to zero for finite strains.
Also for large strains,
the Young's modulus and Poisson's ratio input values have little relationship to the actual material parameters.
Therefore it is advisable to use this material only for small strains and/or large rotations.
To represent isotropic elastic materials under large strain and rotation,
it is best to use some of the other available nonlinear material models described in this chapter,
such as the Holmes-Mow material in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Holmes-Mow"
nolink "false"
\end_inset
,
the neo-Hookean material in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Neo-Hookean"
nolink "false"
\end_inset
,
or the unconstrained Ogden material in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Ogden-Unconstrained"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1000.0
\end_layout
\begin_layout LyX-Code
0.45
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Orthotropic Elastic
\begin_inset CommandInset label
LatexCommand label
name "subsec:Orthotropic-Elastic"
\end_inset
\end_layout
\begin_layout Standard
The material type for orthotropic elasticity is
\begin_inset Quotes eld
\end_inset
\shape italic
orthotropic elastic
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Young's modulus in the x-direction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Young's modulus in the y-direction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Young's modulus in the z-direction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Shear modulus in the xy-plane
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Shear modulus in the yz-plane
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Shear modulus in the xz-plane
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Poisson's ratio between x- and y-direction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Poisson's ratio between y- and z-direction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Poisson's ratio between z- and x-direction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The stress-strain relation for this material is given by
\begin_inset Formula
\[
\left[\begin{array}{c}
E_{11}\\
E_{22}\\
E_{33}\\
2E_{23}\\
2E_{31}\\
2E_{12}
\end{array}\right]=\left[\begin{array}{cccccc}
1/E_{1} & -\nu_{21}/E_{2} & -\nu_{31}/E_{3} & 0 & 0 & 0\\
-\nu_{12}/E_{1} & 1/E_{2} & -\nu_{32}/E_{3} & 0 & 0 & 0\\
-\nu_{13}/E_{1} & -\nu_{23}/E_{2} & 1/E_{3} & 0 & 0 & 0\\
0 & 0 & 0 & 1/G_{23} & 0 & 0\\
0 & 0 & 0 & 0 & 1/G_{31} & 0\\
0 & 0 & 0 & 0 & 0 & 1/G_{12}
\end{array}\right]\left[\begin{array}{c}
T_{11}\\
T_{22}\\
T_{33}\\
T_{23}\\
T_{31}\\
T_{12}
\end{array}\right]
\]
\end_inset
Material axes may be specified as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Orthotropic-Materials"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.866,0.5,0
\end_layout
\begin_layout LyX-Code
-0.5,0.866,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Orthotropic CLE
\begin_inset CommandInset label
LatexCommand label
name "subsec:Orthotropic-CLE"
\end_inset
\end_layout
\begin_layout Standard
The material type for a conewise linear elastic (CLE) material with orthtropic symmetry is
\shape italic
orthotropic CLE
\shape default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Tensile diagonal first Lamé coefficient along direction 1
\begin_inset Formula $\lambda_{+11}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Tensile diagonal first Lamé coefficient along direction 2
\begin_inset Formula $\lambda_{+22}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Tensile diagonal first Lamé coefficient along direction 3
\begin_inset Formula $\lambda_{+33}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Compressive diagonal first Lamé coefficient along direction 1
\begin_inset Formula $\lambda_{-11}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Compressive diagonal first Lamé coefficient along direction 2
\begin_inset Formula $\lambda_{-22}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Compressive diagonal first Lamé coefficient along direction 3
\begin_inset Formula $\lambda_{-33}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Off-diagonal first Lamé coefficient in 1-2 plane
\begin_inset Formula $\lambda_{12}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Off-diagonal first Lamé coefficient in 2-3 plane
\begin_inset Formula $\lambda_{23}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Off-diagonal first Lamé coefficient in 3-1 plane
\begin_inset Formula $\lambda_{31}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Second Lamé coefficient along direction 1
\begin_inset Formula $\mu_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Second Lamé coefficient along direction 2
\begin_inset Formula $\mu_{2}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Second Lamé coefficient along direction 3
\begin_inset Formula $\mu_{3}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This bimodular elastic material is the orthotropic conewise linear elastic material described by Curnier et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Curnier94"
literal "true"
\end_inset
.
It is derived from the following hyperelastic strain-energy function:
\begin_inset Formula
\[
\Psi_{r}=\sum\limits_{a=1}^{3}\mu_{a}\mathbf{A}_{a}^{r}:\mathbf{E}^{2}+\frac{1}{2}\lambda_{aa}\left[\mathbf{A}_{a}^{r}:\mathbf{E}\right]\left(\mathbf{A}_{a}^{r}:\mathbf{E}\right)^{2}+\sum\limits_{\begin{array}{c}
b=1\\
b\ne a
\end{array}}^{3}\frac{1}{2}\lambda_{ab}\left(\mathbf{A}_{a}^{r}:\mathbf{E}\right)\left(\mathbf{A}_{b}^{r}:\mathbf{E}\right)
\]
\end_inset
where
\begin_inset Formula $\lambda_{ba}=\lambda_{ab}$
\end_inset
and
\begin_inset Formula
\[
\lambda_{aa}\left[\mathbf{A}_{a}^{r}:\mathbf{E}\right]=\begin{cases}
\lambda_{+aa} & \mathbf{A}_{a}^{r}:\mathbf{E}\geqslant0\\
\lambda_{-aa} & \mathbf{A}_{a}^{r}:\mathbf{E}<0
\end{cases},\quad a=1,2,3
\]
\end_inset
Here,
\begin_inset Formula $\mathbf{E}$
\end_inset
is the Lagrangian strain tensor and
\begin_inset Formula $\mathbf{A}_{a}^{r}=\mathbf{a}_{a}^{r}\otimes\mathbf{a}_{a}^{r}$
\end_inset
,
where
\begin_inset Formula $\mathbf{a}_{a}^{r}$
\end_inset
(
\begin_inset Formula $a=1,2,3)$
\end_inset
are orthonormal vectors aligned with the material axes.
This material response was originally formulated for infinitesimal strain analyses;
its behavior under finite strains may not be physically realistic.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
13.01
\end_layout
\begin_layout LyX-Code
13.01
\end_layout
\begin_layout LyX-Code
13.01
\end_layout
\begin_layout LyX-Code
0.49
\end_layout
\begin_layout LyX-Code
0.49
\end_layout
\begin_layout LyX-Code
0.49
\end_layout
\begin_layout LyX-Code
0.66
\end_layout
\begin_layout LyX-Code
0.66
\end_layout
\begin_layout LyX-Code
0.66
\end_layout
\begin_layout LyX-Code
0.16
\end_layout
\begin_layout LyX-Code
0.16
\end_layout
\begin_layout LyX-Code
0.16
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Osmotic Pressure from Virial Expansion
\begin_inset CommandInset label
LatexCommand label
name "subsec:Osmotic-Pressure-Virial"
\end_inset
\end_layout
\begin_layout Standard
The material type for osmotic pressure from virial expansion is
\begin_inset Quotes eld
\end_inset
\shape italic
osmotic virial expansion
\shape default
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fluid volume fraction in reference (strain-free) configuration,
\begin_inset Formula $\varphi_{r}^{w}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Concentration of interstitial solute causing the osmotic pressure (moles per volume of the mixture in the reference configuration),
\begin_inset Formula $c_{r}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
First virial coefficient
\begin_inset Formula $c_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
L
\series default
/
\series bold
n
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Second virial coefficient
\begin_inset Formula $c_{2}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/
\series bold
n
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Third virial coefficient
\begin_inset Formula $c_{3}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{7}}$
\end_inset
/
\series bold
n
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The Cauchy stress for this material is
\begin_inset Formula
\[
\boldsymbol{\sigma}=-\pi\mathbf{I},
\]
\end_inset
where
\begin_inset Formula $\pi$
\end_inset
is the osmotic pressure,
given by
\begin_inset Formula
\[
\pi=c_{1}c+c_{2}c^{2}+c_{3}c^{3},\quad c=\frac{\varphi_{r}^{w}c_{r}}{J-1+\varphi_{r}^{w}}\,,
\]
\end_inset
\begin_inset Formula $c$
\end_inset
is the solute concentration in the current configuration,
and
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
is the relative volume.
\end_layout
\begin_layout Standard
This osmotic swelling pressure in the interstitial fluid of a porous material represents an entropic mechanism whose magnitude is independent of the external bath osmolarity.
Typically,
this material should be used in a solid mixture where the swelling pressure is resisted by a solid matrix in tension.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.8
\end_layout
\begin_layout LyX-Code
100
\end_layout
\begin_layout LyX-Code
2.436e-6
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0
\end_layout
\begin_layout LyX-Code
1,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Natural Neo-Hookean
\begin_inset CommandInset label
LatexCommand label
name "subsec:Natural-Neo-Hookean"
\end_inset
\end_layout
\begin_layout Standard
The material type for a natural Neo-Hookean material is
\shape italic
natural neo-Hookean
\shape default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Young's modulus
\begin_inset Formula $E$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Poisson's ratio
\begin_inset Formula $\nu$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This model describes an unconstrained Neo-Hookean material using the natural strain tensor
\begin_inset CommandInset citation
LatexCommand citep
key "Criscione00"
literal "true"
\end_inset
.
It has a non-linear stress-strain behavior,
but reduces to the classical linear elasticity model for small strains
\shape italic
and
\shape default
small rotations.
It is derived from the following hyperelastic strain-energy function:
\begin_inset Formula
\[
W=\frac{\kappa}{2}K_{1}^{2}+\mu K_{2}^{2},
\]
\end_inset
where
\begin_inset Formula $\kappa$
\end_inset
is the bulk modulus and
\begin_inset Formula $\mu$
\end_inset
is the shear modulus,
\begin_inset Formula
\[
\kappa=\frac{E}{3\left(1-2\nu\right)}\,,\quad\mu=\frac{E}{2\left(1+\nu\right)}
\]
\end_inset
Here,
\begin_inset Formula $K_{1}$
\end_inset
and
\begin_inset Formula $K_{2}$
\end_inset
are the first and second invariants of the left natural (Hencky) strain tensor
\series bold
\begin_inset Formula $\boldsymbol{\eta}=\ln\mathbf{V}$
\end_inset
\series default
where
\begin_inset Formula $\mathbf{V}$
\end_inset
is the left stretch tensor in the polar decomposition
\begin_inset Formula $\mathbf{F}=\mathbf{V}\cdot\mathbf{R}$
\end_inset
.
\end_layout
\begin_layout Standard
This material model uses a standard displacement-based element formulation,
so care must be taken when modeling materials with nearly-incompressible material behavior to avoid element locking.
For this case,
use the
\shape italic
Mooney-Rivlin
\shape default
material described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Mooney-Rivlin"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
200e3
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Neo-Hookean
\begin_inset CommandInset label
LatexCommand label
name "subsec:Neo-Hookean"
\end_inset
\end_layout
\begin_layout Standard
The material type for a Neo-Hookean material is
\shape italic
neo-Hookean
\shape default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Young's modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Poisson's ratio
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This model describes an unconstrained Neo-Hookean material
\begin_inset CommandInset citation
LatexCommand citep
key "Bonet97"
literal "true"
\end_inset
.
It has a non-linear stress-strain behavior,
but reduces to the classical linear elasticity model for small strains
\shape italic
and
\shape default
small rotations.
It is derived from the following hyperelastic strain-energy function:
\begin_inset Formula
\[
W=\frac{\mu}{2}\left(I_{1}-3\right)-\mu\ln J+\frac{\lambda}{2}\left(\ln J\right)^{2}.
\]
\end_inset
Here,
\begin_inset Formula $I_{1}$
\end_inset
and
\begin_inset Formula $I_{2}$
\end_inset
are the first and second invariants of the right Cauchy-Green deformation tensor
\series bold
\begin_inset Formula $\mathbf{C}$
\end_inset
\series default
and
\begin_inset Formula $J$
\end_inset
is the determinant of the deformation gradient tensor.
The relationship between the material parameters,
E,
and v,
and the parameters used in the strain-energy function,
is as follows.
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\mu=\dfrac{E}{2(1+\nu)}
\]
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\lambda=\dfrac{\nu E}{(1+\nu)(1-2\nu)}
\]
\end_inset
\end_layout
\begin_layout Standard
This material model uses a standard displacement-based element formulation,
so care must be taken when modeling materials with nearly-incompressible material behavior to avoid element locking.
For this case,
use the
\shape italic
Mooney-Rivlin
\shape default
material described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Mooney-Rivlin"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1000.0
\end_layout
\begin_layout LyX-Code
0.45
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Coupled Mooney-Rivlin
\begin_inset CommandInset label
LatexCommand label
name "subsec:Coupled-Mooney-Rivlin"
\end_inset
\end_layout
\begin_layout Standard
The coupled Mooney-Rivlin material describes an unconstrained formulation of the Mooney-Rivlin material.
The material type for this material is
\shape italic
coupled Mooney-Rivlin
\shape default
.
The following material parameters can be defined.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Mooney-Rivlin c1 parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Mooney-Rivlin c2 parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
k
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Quotes eld
\end_inset
Bulk-modulus
\begin_inset Quotes erd
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The strain-energy function is given by the following expression.
\begin_inset Formula
\[
W=c_{1}\left(I_{1}-3\right)+c_{2}\left(I_{2}-3\right)-2\left(c_{1}+2c_{2}\right)\ln J+\frac{k}{2}\left(\ln J\right)^{2}
\]
\end_inset
Here,
\begin_inset Formula $I_{1}$
\end_inset
and
\begin_inset Formula $I_{2}$
\end_inset
are the first and second invariants of the right Cauchy-Green deformation tensor
\series bold
\begin_inset Formula $\mathbf{C}$
\end_inset
\series default
and
\begin_inset Formula $J$
\end_inset
is the determinant of the deformation gradient tensor.
\end_layout
\begin_layout Standard
This material model uses a standard displacement-based element formulation,
so care must be taken when modeling materials with nearly-incompressible material behavior to avoid element locking.
For (nearly-) incompressible materials,
use the
\shape italic
Mooney-Rivlin
\shape default
material described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Mooney-Rivlin"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10.0
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
100.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Coupled Veronda-Westmann
\begin_inset CommandInset label
LatexCommand label
name "subsec:Coupled-Veronda-Westmann"
\end_inset
\end_layout
\begin_layout Standard
The material type for the coupled Veronda-Westmann material is
\shape italic
coupled Veronda-Westmann
\shape default
.
The following material parameters can be defined.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Veronda-Westmann c1 parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Veronda-Westmann c2 parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
k
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Quotes eld
\end_inset
Bulk-modulus
\begin_inset Quotes erd
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The coupled Veronda-Westmann material is an unconstrained formulation of the Veronda-Westmann material and is defined by the following strain-energy function.
\begin_inset Formula
\[
W=c_{1}\left(e^{c_{2}\left(I_{1}-3\right)}-1\right)-\frac{c_{1}c_{2}}{2}\left(I_{2}-3\right)+\frac{\lambda}{2}\left(\ln J\right)^{2}
\]
\end_inset
Here,
\begin_inset Formula $I_{1}$
\end_inset
and
\begin_inset Formula $I_{2}$
\end_inset
are the first and second invariants of the right Cauchy-Green deformation tensor
\series bold
C
\series default
and
\begin_inset Formula $J$
\end_inset
is the determinant of the deformation gradient tensor.
\end_layout
\begin_layout Standard
This material model uses a standard displacement-based element formulation,
so care must be taken when modeling materials with nearly-incompressible material behavior to avoid element locking.
For (nearly-) incompressible materials,
use the
\shape italic
Veronda-Westmann
\shape default
material described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Veronda-Westmann"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10.0
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
100.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Ogden Unconstrained
\begin_inset CommandInset label
LatexCommand label
name "subsec:Ogden-Unconstrained"
\end_inset
\end_layout
\begin_layout Standard
This material describes an unconstrained hyperelastic Ogden material
\size small
\begin_inset CommandInset citation
LatexCommand citep
key "Simo91"
literal "true"
\end_inset
\size default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Coefficient of n
\begin_inset Formula $^{\mathrm{th}}$
\end_inset
term,
where n can range from 1 to 6
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Exponent of n
\begin_inset Formula $^{\mathrm{th\thinspace}}$
\end_inset
term,
where n can range from 1 to 6
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Bulk-like modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The hyperelastic strain energy function for this material is given in terms of the eigenvalues of the right or left stretch tensor:
\begin_inset Formula
\[
W\left(\lambda_{1},\lambda_{2},\lambda_{3}\right)=\frac{1}{2}c_{p}\left(J-1\right)^{2}+\sum\limits_{i=1}^{N}\frac{c_{i}}{m_{i}^{2}}\left(\lambda_{1}^{m_{i}}+\lambda_{2}^{m_{i}}+\lambda_{3}^{m_{i}}-3-m_{i}\ln J\right).
\]
\end_inset
Here,
\begin_inset Formula $\lambda_{i}^{2}$
\end_inset
are the eigenvalues of the right or left Cauchy deformation tensor,
\begin_inset Formula $c_{p}$
\end_inset
,
\begin_inset Formula $c_{i}$
\end_inset
and
\begin_inset Formula $m_{i}$
\end_inset
are material coefficients and
\begin_inset Formula $N$
\end_inset
ranges from 1 to 6.
Any material parameters that are not specified by the user are assumed to be zero.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
2.4
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Perfect Osmometer Equilibrium Osmotic Pressure
\begin_inset CommandInset label
LatexCommand label
name "subsec:Perfect-Osmometer-Equilibrium"
\end_inset
\end_layout
\begin_layout Standard
The material type for a perfect osmometer equilibrium swelling pressure is
\begin_inset Quotes eld
\end_inset
\shape italic
perfect osmometer
\shape default
\begin_inset Quotes erd
\end_inset
.
The swelling pressure is described by the equations for a perfect osmometer,
assuming that the material is porous,
containing an interstitial solution whose solutes cannot be exchanged with the external bathing environment;
similarly,
solutes in the external bathing solution cannot be exchanged with the interstitial fluid of the porous material.
Therefore,
osmotic pressurization occurs when there is an imbalance between the interstitial and bathing solution osmolarities.
Since osmotic swelling must be resisted by a solid matrix,
this material is not stable on its own.
It must be combined with an elastic material that resists the swelling,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Mixture"
nolink "false"
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
gel porosity (fluid volume fraction) in reference (strain-free) configuration,
\begin_inset Formula $\varphi_{0}^{w}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
interstitial fluid osmolarity in reference configuration,
\begin_inset Formula $\bar{c}_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
external bath osmolarity,
\begin_inset Formula $\bar{c}^{\ast}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The Cauchy stress for this material is the stress from the perfect osmometer equilibrium response:
\begin_inset Formula
\[
\boldsymbol{\sigma}=-\pi\mathbf{I},
\]
\end_inset
where
\begin_inset Formula $\pi$
\end_inset
is the osmotic pressure,
given by
\begin_inset Formula
\[
\pi=RT\left(\bar{c}-\bar{c}^{\ast}\right)\,.
\]
\end_inset
\begin_inset Formula $\bar{c}$
\end_inset
is the interstitial fluid in the current configuration,
related to the reference configuration via
\begin_inset Formula
\[
\bar{c}=\frac{\varphi_{0}^{w}}{J-1+\varphi_{0}^{w}}\bar{c}_{0}\,,
\]
\end_inset
where
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
is the relative volume.
The values of the universal gas constant
\begin_inset Formula $R$
\end_inset
and absolute temperature
\begin_inset Formula $T$
\end_inset
must be specified as global constants.
\end_layout
\begin_layout Standard
Though this material is porous,
this is not a full-fledged biphasic material as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Biphasic-Materials"
nolink "false"
\end_inset
for example.
The behavior described by this material is strictly valid only after the transient response of interstitial fluid and solute fluxes has subsided.
\end_layout
\begin_layout Standard
\shape italic
Example (using units of mm,
N,
s,
nmol,
K)
\shape default
:
\end_layout
\begin_layout Standard
Hyperosmotic loading of a cell with a membrane-impermeant solute,
starting from isotonic conditions.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.8 phiw0>
\end_layout
\begin_layout LyX-Code
300
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,300
\end_layout
\begin_layout LyX-Code
1,1500
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
8.314e-6
\end_layout
\begin_layout LyX-Code
310
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Porous Neo-Hookean
\begin_inset CommandInset label
LatexCommand label
name "subsec:Porous-Neo-Hookean"
\end_inset
\end_layout
\begin_layout Standard
The material type for a porous neo-Hookean solid is
\begin_inset Quotes eld
\end_inset
\emph on
porous neo-Hookean
\emph default
\begin_inset Quotes erd
\end_inset
.
This material describes a porous neo-Hookean material with referential solid volume fraction
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
(i.e.,
porosity
\begin_inset Formula $\varphi_{r}^{w}=1-\varphi_{r}^{s}$
\end_inset
).
The pores are compressible but the skeleton is intrinsically incompressible.
Thus,
upon pore closure,
the material behavior needs to switch from compressible to incompressible.
This material may be used to model the porous solid matrix of a biphasic or multiphasic material,
in which case it inherits the value of
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
from that parent material.
\end_layout
\begin_layout Standard
The material type for a porous Neo-Hookean material is
\shape italic
porous neo-Hookean
\shape default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Young's modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
(
\begin_inset Formula $0\le\varphi_{r}^{s}<1$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This model is derived from the following hyperelastic strain-energy function:
\begin_inset Formula
\[
W=\frac{\mu}{2}\left(\bar{I}_{1}-3\right)-\mu\ln\bar{J}\,,
\]
\end_inset
where
\begin_inset Formula $\bar{J}$
\end_inset
represents the pore volume ratio,
evaluated from
\begin_inset Formula
\[
\bar{J}=\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\,,
\]
\end_inset
and
\begin_inset Formula $\bar{I}_{1}=\text{tr}\bar{\mathbf{C}}$
\end_inset
,
with
\begin_inset Formula
\[
\bar{\mathbf{F}}=\left(\frac{\bar{J}}{J}\right)^{1/3}\mathbf{F}\,,\quad\bar{\mathbf{C}}=\bar{\mathbf{F}}^{T}\cdot\bar{\mathbf{F}}=\left(\frac{\bar{J}}{J}\right)^{2/3}\mathbf{C}\,,
\]
\end_inset
and
\begin_inset Formula $\bar{J}=\det\bar{\mathbf{F}}$
\end_inset
.
The porosity
\begin_inset Formula $\varphi^{w}$
\end_inset
in the current configuration evolves with the volume ratio
\begin_inset Formula $J$
\end_inset
according to
\begin_inset Formula
\[
\varphi^{w}=\frac{J-1+\varphi_{r}^{w}}{J}=\frac{J-\varphi_{r}^{s}}{J}=\bar{J}\left(1-\varphi_{r}^{s}\right)\,.
\]
\end_inset
Thus,
pore closure occurs when
\begin_inset Formula $J=\varphi_{r}^{s}$
\end_inset
and
\begin_inset Formula $\bar{J}=0$
\end_inset
.
\end_layout
\begin_layout Standard
By comparison to a standard neo-Hookean material,
this porous neo-Hookean material has an effective Young's modulus equal to
\begin_inset Formula
\[
E=\frac{3\mu}{1+\frac{1}{2}\left(\varphi_{r}^{w}\right)^{2}}\,,
\]
\end_inset
and an effective Poisson's ratio equal to
\begin_inset Formula
\[
\nu=\frac{1-\left(\varphi_{r}^{w}\right)^{2}}{2+\left(\varphi_{r}^{w}\right)^{2}}\,.
\]
\end_inset
Therefore,
the two material properties that need to be provided are
\begin_inset Formula $E$
\end_inset
and the referential porosity
\begin_inset Formula $\varphi_{r}^{s}=1-\varphi_{r}^{w}$
\end_inset
.
Poisson's ratio in the limit of infinitesimal strains is dictated by the porosity according to the above formula.
In particular,
a highly porous material (
\begin_inset Formula $\varphi_{r}^{w}\to1$
\end_inset
) has an effective Poisson ratio that approaches zero (
\begin_inset Formula $\nu\to0$
\end_inset
) and
\begin_inset Formula $E\to2\mu$
\end_inset
in the range of infinitesimal strains.
A low porosity material (
\begin_inset Formula $\varphi_{r}^{w}\to0$
\end_inset
) has
\begin_inset Formula $\nu\to\frac{1}{2}$
\end_inset
and
\begin_inset Formula $E\to3\mu$
\end_inset
,
which is the expected behavior of an incompressible neo-Hookean solid.
Note that setting
\begin_inset Formula $\varphi_{r}^{w}=0$
\end_inset
(
\begin_inset Formula $\varphi_{r}^{s}=1$
\end_inset
) would not produce good numerical behavior,
since the Cauchy stress in an incompressible material would need to be supplemented by a hydrostatic pressure term (a Lagrange multiplier that enforces the incompressibility constraint).
Nevertheless,
this compressible porous neo-Hookean material behaves well even for values of
\begin_inset Formula $\varphi^{w}$
\end_inset
as low as
\begin_inset Formula $\sim0.015$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0.2
\end_layout
\begin_layout LyX-Code
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Lung Material
\begin_inset CommandInset label
LatexCommand label
name "subsec:LungMaterial"
\end_inset
\end_layout
\begin_layout Standard
This is a material used for modeling human lung tissue as described by Birzle
\begin_inset CommandInset citation
LatexCommand citep
key "Birzle2019"
literal "false"
\end_inset
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Young's modulus,
\begin_inset Formula $E$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Poisson's ratio,
\begin_inset Formula $\nu$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Birzle-Wall c1 parameter,
\begin_inset Formula $c_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Birzle-Wall c3 parameter,
\begin_inset Formula $c_{3}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Birzle-Wall exponential d1 parameter,
\begin_inset Formula $d_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Birzle-Wall exponential d3 parameter,
\begin_inset Formula $d_{3}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This model is derived from the following hyperelastic strain-energy function:
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
W=c\left(I_{1}-3\right)+\frac{c}{\beta}\left(I_{3}^{-\beta}-1\right)+c_{1}\left(I_{3}^{-\frac{1}{3}}I_{1}-3\right)^{d_{1}}+c_{3}\left(I_{3}^{\frac{1}{3}}-1\right)^{d_{3}},
\]
\end_inset
\end_layout
\begin_layout Standard
where
\begin_inset Formula $I_{1}$
\end_inset
and
\begin_inset Formula $I_{2}$
\end_inset
are the first and second invariants of the right Cauchy-Green deformation tensor
\series bold
\begin_inset Formula $\mathbf{C}$
\end_inset
\series default
,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
c=\frac{E}{4\left(1+\nu\right)},
\]
\end_inset
\end_layout
\begin_layout Standard
and
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\beta=\frac{\nu}{1-2\nu}.
\]
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1913.7
\end_layout
\begin_layout LyX-Code
0.3413
\end_layout
\begin_layout LyX-Code
278.2
\end_layout
\begin_layout LyX-Code
5.766
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
6
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Solid Mixture
\begin_inset CommandInset label
LatexCommand label
name "subsec:Solid-Mixture"
\end_inset
\end_layout
\begin_layout Standard
The material type for a constrained mixture of solids is
\begin_inset Quotes eld
\end_inset
\emph on
solid mixture
\emph default
\begin_inset Quotes erd
\end_inset
.
This material describes a mixture of elastic solids that share the same reference configuration and same deformation gradient.
It is a container for any combination of the unconstrained elastic materials described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Container tag for unconstrained solid material
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The mixture may consist of any number of solids.
The stress tensor for the solid mixture is the sum of the stresses for all the solids.
\end_layout
\begin_layout Standard
Material axes may be optionally specified within the level,
as well as within each .
Within the level,
these represent the local element axes relative to the global coordinate system.
Within the ,
they represent local material axes relative to the element.
If material axes are specified at both levels,
they are properly compounded to produce local material axes relative to the global coordinate system.
Material axes specified in the section are equivalent to a specification at the level:
they correspond to local element axes relative to the global system.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1000.0
\end_layout
\begin_layout LyX-Code
0.45
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.8660254,
0.5,
0
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5,
1,
1
\end_layout
\begin_layout LyX-Code
2.5,
3,
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.8660254,-0.5,
0
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5,
1,
1
\end_layout
\begin_layout LyX-Code
2.5,
3,
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Spherical Fiber Distribution
\begin_inset CommandInset label
LatexCommand label
name "subsec:Spherical-Fiber-Distribution"
\end_inset
\end_layout
\begin_layout Standard
The material type for a spherical (isotropic) continuous fiber distribution is
\begin_inset Quotes eld
\end_inset
\shape italic
spherical fiber distribution
\shape default
\begin_inset Quotes erd
\end_inset
.
Since fibers can only sustain tension,
this material is not stable on its own.
It must be combined with a stable compressible material that acts as a ground matrix,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Mixture"
nolink "false"
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameter
\begin_inset Formula $\alpha$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameter
\begin_inset Formula $\beta$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameters
\begin_inset Formula $\xi$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The Cauchy stress for this fibrous material is given by
\begin_inset CommandInset citation
LatexCommand citep
key "Lanir83,Ateshian07a,Ateshian09a"
literal "true"
\end_inset
:
\begin_inset Formula
\[
\boldsymbol{\sigma}=\int_{0}^{2\pi}\int_{0}^{\pi}H\left(I_{n}-1\right)\sigma_{n}\left(\mathbf{n}\right)\sin\varphi\,d\varphi\,d\theta\,.
\]
\end_inset
Here,
\begin_inset Formula $I_{n}=\lambda_{n}^{2}=\mathbf{N}\cdot\mathbf{C}\cdot\mathbf{N}$
\end_inset
is the square of the fiber stretch
\begin_inset Formula $\lambda_{n}$
\end_inset
,
\begin_inset Formula $\mathbf{N}$
\end_inset
is the unit vector along the fiber direction,
in the reference configuration,
which in spherical angles is directed along
\begin_inset Formula $\left(\theta,\varphi\right)$
\end_inset
,
\begin_inset Formula $\mathbf{n}=\mathbf{F}\cdot\mathbf{N}/\lambda_{n}$
\end_inset
,
and
\begin_inset Formula $H\left(.\right)$
\end_inset
is the unit step function that enforces the tension-only contribution.
\end_layout
\begin_layout Standard
The fiber stress is determined from a fiber strain energy function,
\begin_inset Formula
\[
\sigma_{n}=\frac{2I_{n}}{J}\frac{\partial\Psi}{\partial I_{n}}\mathbf{n}\otimes\mathbf{n}\,,
\]
\end_inset
where in this material,
the fiber strain energy density is given by
\begin_inset Formula
\[
\Psi=\frac{\xi}{\alpha}\left(\exp\left[\alpha\left(I_{n}-1\right)^{\beta}\right]-1\right)\,,
\]
\end_inset
where
\begin_inset Formula $\xi>0$
\end_inset
,
\begin_inset Formula $\alpha\geqslant0$
\end_inset
,
and
\begin_inset Formula $\beta\geqslant2$
\end_inset
.
\end_layout
\begin_layout Standard
Note:
In the limit when
\begin_inset Formula $\alpha\to0$
\end_inset
,
this expressions produces a power law,
\begin_inset Formula
\[
\lim\limits_{\alpha\to0}\Psi=\xi\left(I_{n}-1\right)^{\beta}
\]
\end_inset
Note:
When
\begin_inset Formula $\beta>2$
\end_inset
,
the fiber modulus is zero at the strain origin (
\begin_inset Formula $I_{n}=1)$
\end_inset
.
Therefore,
use
\begin_inset Formula $\beta>2$
\end_inset
when a smooth transition in the stress is desired from compression to tension.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1000.0
\end_layout
\begin_layout LyX-Code
0.45
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
2.5
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Spherical Fiber Distribution from Solid-Bound Molecule
\begin_inset CommandInset label
LatexCommand label
name "subsec:Spherical-Fiber-Distribution-SBM"
\end_inset
\end_layout
\begin_layout Standard
The material type for a spherical (isotropic) continuous fiber distribution with fiber modulus dependent on solid-bound molecule content is
\begin_inset Quotes eld
\end_inset
\shape italic
spherical fiber distribution sbm
\shape default
\begin_inset Quotes erd
\end_inset
.
Since fibers can only sustain tension,
this material is not stable on its own.
It must be combined with a stable compressible material that acts as a ground matrix,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Mixture"
nolink "false"
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameter
\begin_inset Formula $\alpha$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
parameter
\begin_inset Formula $\beta$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fiber modulus
\begin_inset Formula $\xi_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fiber modulus exponent
\begin_inset Formula $\gamma$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fiber mass density
\begin_inset Formula $\rho_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
M
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
sbm
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
index of solid-bound molecule
\begin_inset Formula $\sigma$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The Cauchy stress for this fibrous material is given by
\begin_inset CommandInset citation
LatexCommand citep
key "Lanir83,Ateshian07a,Ateshian09a"
literal "true"
\end_inset
:
\begin_inset Formula
\[
\boldsymbol{\sigma}=\int_{0}^{2\pi}\int_{0}^{\pi}H\left(I_{n}-1\right)\sigma_{n}\left(\mathbf{n}\right)\sin\varphi\,d\varphi\,d\theta\,.
\]
\end_inset
Here,
\begin_inset Formula $I_{n}=\lambda_{n}^{2}=\mathbf{N}\cdot\mathbf{C}\cdot\mathbf{N}$
\end_inset
is the square of the fiber stretch
\begin_inset Formula $\lambda_{n}$
\end_inset
,
\begin_inset Formula $\mathbf{N}$
\end_inset
is the unit vector along the fiber direction,
in the reference configuration,
which in spherical angles is directed along
\begin_inset Formula $\left(\theta,\varphi\right)$
\end_inset
,
\begin_inset Formula $\mathbf{n}=\mathbf{F}\cdot\mathbf{N}/\lambda_{n}$
\end_inset
,
and
\begin_inset Formula $H\left(.\right)$
\end_inset
is the unit step function that enforces the tension-only contribution.
\end_layout
\begin_layout Standard
The fiber stress is determined from a fiber strain energy function,
\begin_inset Formula
\[
\sigma_{n}=\frac{2I_{n}}{J}\frac{\partial\Psi}{\partial I_{n}}\mathbf{n}\otimes\mathbf{n}\,,
\]
\end_inset
where in this material,
the fiber strain energy density is given by
\begin_inset Formula
\[
\Psi=\frac{\xi}{\alpha}\left(\exp\left[\alpha\left(I_{n}-1\right)^{\beta}\right]-1\right)\,,
\]
\end_inset
where
\begin_inset Formula $\xi>0$
\end_inset
,
\begin_inset Formula $\alpha\geqslant0$
\end_inset
,
and
\begin_inset Formula $\beta\geqslant2$
\end_inset
.
The fiber modulus is dependent on the solid-bound molecule referential density
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
according to the power law relation
\begin_inset Formula
\[
\xi=\xi_{0}\left(\frac{\rho_{r}^{\sigma}}{\rho_{0}}\right)^{\gamma}\,,
\]
\end_inset
where
\begin_inset Formula $\rho_{0}$
\end_inset
is the density at which
\begin_inset Formula $\xi=\xi_{0}$
\end_inset
.
\end_layout
\begin_layout Standard
This type of material references a solid-bound molecule that belongs to a multiphasic mixture.
Therefore this material may only be used as the solid (or a component of the solid) in a multiphasic mixture (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Triphasic-Multiphasic-Materials"
nolink "false"
\end_inset
).
The solid-bound molecule must be defined in the section (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Bound-Molecules"
nolink "false"
\end_inset
) and must be included in the multiphasic mixture using a tag.
The parameter
\shape italic
sbm
\shape default
must refer to the global index of that solid-bound molecule.
The value of
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
is specified within the tag.
If a chemical reaction is defined within that multiphasic mixture that alters the value of
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
,
lower and upper bounds may be specified for this referential density within the tag to prevent
\begin_inset Formula $\xi$
\end_inset
from reducing to zero or achieving excessively elevated values.
\end_layout
\begin_layout Standard
Note:
In the limit when
\begin_inset Formula $\alpha\to0$
\end_inset
,
the expression for
\begin_inset Formula $\Psi$
\end_inset
produces a power law,
\begin_inset Formula
\[
\lim\limits_{\alpha\to0}\Psi=\xi\left(I_{n}-1\right)^{\beta}
\]
\end_inset
Note:
When
\begin_inset Formula $\beta>2$
\end_inset
,
the fiber modulus is zero at the strain origin (
\begin_inset Formula $I_{n}=1)$
\end_inset
.
Therefore,
use
\begin_inset Formula $\beta>2$
\end_inset
when a smooth transition in the stress is desired from compression to tension.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1000.0
\end_layout
\begin_layout LyX-Code
0.45
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
2.5
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Coupled Transversely Isotropic Mooney-Rivlin
\begin_inset CommandInset label
LatexCommand label
name "subsec:Coupled-Transversely-Isotropic-MR"
\end_inset
\end_layout
\begin_layout Standard
This material describes a transversely isotropic Mooney-Rivlin material using a fully-coupled formulation.
It is define through the
\shape italic
coupled trans-iso Mooney-Rivlin
\shape default
material type.
The following material parameters must be defined.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
c1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Mooney-Rivlin
\begin_inset Formula $c_{1}$
\end_inset
parameter.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
c2
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Mooney-Rivlin
\begin_inset Formula $c_{2}$
\end_inset
parameter.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
c3
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
exponential multiplier
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
c4
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fiber scale factor
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
c5
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fiber modulus in linear region
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
lam_max
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
maximum fiber straightening stretch
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
k
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
bulk-like modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The strain-energy function for this constitutive model is defined by
\begin_inset Formula
\[
W=c_{1}\left(I_{1}-3\right)+c_{2}\left(I_{2}-3\right)-2\left(c_{1}+2c_{2}\right)\ln J+F\left(\lambda\right)+U\left(J\right)
\]
\end_inset
The first three terms define the coupled Mooney-Rivlin matrix response.
The third term is the fiber response which is a function of the fiber stretch
\begin_inset Formula $\lambda$
\end_inset
and is defined as in
\begin_inset CommandInset citation
LatexCommand citep
key "Weiss96"
literal "true"
\end_inset
.
For
\begin_inset Formula $U$
\end_inset
,
the following form is chosen in FEBio.
\begin_inset Formula
\[
U\left(J\right)=\frac{1}{2}k\left(\ln J\right)^{2}
\]
\end_inset
where
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
is the Jacobian of the deformation.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1.34
\end_layout
\begin_layout LyX-Code
1.3
\end_layout
\begin_layout LyX-Code
100
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Coupled Transversely Isotropic Veronda-Westmann
\begin_inset CommandInset label
LatexCommand label
name "subsec:Coupled-Transversely-Isotropic-VW"
\end_inset
\end_layout
\begin_layout Standard
This material describes a transversely isotropic Veronda-Westmann material using a fully-coupled formulation.
It is define through the
\shape italic
coupled trans-iso Veronda-Westmann
\shape default
material type.
The following material parameters must be defined.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
c1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Veronda-Westmann
\begin_inset Formula $c_{1}$
\end_inset
parameter.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
c2
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Veronda-Westmann
\begin_inset Formula $c_{2}$
\end_inset
parameter.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
c3
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
exponential multiplier
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
c4
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fiber scale factor
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
c5
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fiber modulus in linear region
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
lam_max
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
maximum fiber straightening stretch
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
k
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
bulk-like modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The strain-energy function for this constitutive model is defined by
\begin_inset Formula
\[
W=c_{1}\left(e^{c_{2}\left(I_{1}-3\right)}-1\right)-\frac{1}{2}c_{1}c_{2}\left(I_{2}-3\right)+F\left(\lambda\right)+U\left(J\right)\,.
\]
\end_inset
The first two terms define the coupled Veronda-Westmann matrix response.
The third term is the fiber response which is a function of the fiber stretch
\begin_inset Formula $\lambda$
\end_inset
and is defined as in
\begin_inset CommandInset citation
LatexCommand citep
key "Weiss96"
literal "true"
\end_inset
.
For
\begin_inset Formula $U$
\end_inset
,
the following form is chosen in FEBio.
\begin_inset Formula
\[
U\left(J\right)=\frac{1}{2}k\left(\ln J\right)^{2}
\]
\end_inset
where
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
is the Jacobian of the deformation.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1.34
\end_layout
\begin_layout LyX-Code
1.3
\end_layout
\begin_layout LyX-Code
100
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Large Poisson's Ratio Ligament
\begin_inset CommandInset label
LatexCommand label
name "subsec:Large-Poisson's-Ratio"
\end_inset
\end_layout
\begin_layout Standard
This material describes a coupled,
transversely isotropic material that will conform to a particular Poisson's ratio when stretched along the fiber direction
\begin_inset CommandInset citation
LatexCommand citep
key "Swedberg2014"
literal "true"
\end_inset
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
c1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber coefficient
\begin_inset Formula $c_{\mathrm{1}}$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
c2
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber coefficient
\begin_inset Formula $c_{\mathrm{2}}$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
mu
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Matrix coefficient
\begin_inset Formula $\mu$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
v0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Poisson's ratio parameter
\begin_inset Formula $v_{\mathrm{0}}$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
m
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Poisson's ratio parameter
\begin_inset Formula $m$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
k
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Volumetric penalty coefficient
\begin_inset Formula $\kappa$
\end_inset
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The strain energy function for this constitutive model is a three part expression:
\begin_inset Formula
\[
W=W_{\text{fiber}}+W_{\text{matrix}}+W_{\text{vol}},
\]
\end_inset
where:
\begin_inset Formula
\[
\begin{aligned}W_{\text{fiber}} & =\frac{1}{2}\frac{c_{1}}{c_{2}}\left(e^{c_{2}\left({\lambda-1}\right)^{2}-1}\right),\\
W_{\text{matrix}} & =\frac{\mu}{2}\left(I_{1}-3\right)-\mu\ln\left(\sqrt{I_{3}}\right),\\
W_{\text{vol}} & =\frac{\kappa}{2}\left(\ln\left(\frac{I_{5}-I_{1}I_{4}+I_{2}}{I_{4}^{2(m-v_{0})}e^{-4m\left(\lambda-1\right)}}\right)\right)^{2}.
\end{aligned}
\]
\end_inset
In the equations above,
\begin_inset Formula $\lambda$
\end_inset
is the stretch ratio of the material along the fiber direction.
The desired Poisson's ratio must first be selected based on available data for uniaxial tension along the fiber direction.
The function with which to fit the Poisson's ratio data is:
\begin_inset Formula
\[
v=-\frac{\lambda^{m-v_{0}}e^{-m\left(\lambda-1\right)}-1}{\lambda-1}\,.
\]
\end_inset
The volumetric penalty coefficient
\begin_inset Formula $\kappa$
\end_inset
must be selected to be large enough to enforce the Poisson's function above.
If this material is to be used in a biphasic representation,
\begin_inset Formula $\kappa$
\end_inset
must be selected based on experimental stress-relaxation data,
since
\begin_inset Formula $\kappa$
\end_inset
has an effect on the biphasic behavior of the material.
Once
\begin_inset Formula $\kappa$
\end_inset
,
\begin_inset Formula $v_{0}$
\end_inset
,
and
\begin_inset Formula $m$
\end_inset
are chosen,
\begin_inset Formula $c_{\mathrm{1}}$
\end_inset
,
\begin_inset Formula $c_{\mathrm{2}}$
\end_inset
and
\begin_inset Formula $\mu$
\end_inset
should be selected by fitting the stress-strain behavior of the material to experimental data.
The Cauchy stress of the material is given by:
\begin_inset Formula
\[
\boldsymbol{\sigma}=\frac{2}{J}\left(\left(W_{1}+I_{1}W_{2}\right)\mathbf{B}-W_{2}\mathbf{B}^{2}+W_{3}\left(I_{3}\mathbf{1}\right)+W_{4}I_{4}\left(\mathbf{a}\otimes\mathbf{a}\right)+W_{5}I_{4}\left(\mathbf{a}\otimes\mathbf{a}\cdot\mathbf{B}+\mathbf{B}\cdot\mathbf{a}\otimes\mathbf{a}\right)\right)
\]
\end_inset
where
\begin_inset Formula $J$
\end_inset
is the jacobian of the deformation gradient
\begin_inset Formula $\mathbf{F}$
\end_inset
,
\series bold
\begin_inset Formula $\mathbf{B}=\mathbf{F}\cdot\mathbf{F}^{T}$
\end_inset
\series default
is the left Cauchy-Green deformation tensor,
\series bold
\begin_inset Formula $\mathbf{1}$
\end_inset
\series default
is the
\begin_inset Formula $3\times3$
\end_inset
identity tensor
\series bold
,
\begin_inset Formula $\mathbf{a}$
\end_inset
\series default
is the fiber orientation vector in the deformed configuration.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
90
\end_layout
\begin_layout LyX-Code
160
\end_layout
\begin_layout LyX-Code
0.025
\end_layout
\begin_layout LyX-Code
5.85
\end_layout
\begin_layout LyX-Code
-100
\end_layout
\begin_layout LyX-Code
1.55
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Shenoy-Wang material
\end_layout
\begin_layout Standard
This material implements the constitutive model by Wang et al.
(Biophysical Journal,
107,
2014,
pp:2592 - 2603),
which proposes a mechanism for long-range force transmission in fibrous matrices enabled by tension-driven alignment of fibers.
\end_layout
\begin_layout Standard
It defines the following parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
mu
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
matrix shear modulus
\begin_inset Formula $\mu$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
k
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
matrix bulk modulus
\begin_inset Formula $k$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
Ef
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber stiffness modulus
\begin_inset Formula $E_{f}$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
lam_c
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
transition point
\begin_inset Formula $\lambda_{c}$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
lam_t
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
transition interval size
\begin_inset Formula $\lambda_{t}$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
n
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
strain hardening exponent
\emph on
n
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
m
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
strain hardening exponent
\emph on
m
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The strain-energy density function is given by,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
W=W_{\text{b}}+W_{\text{f}},
\]
\end_inset
where:
\begin_inset Formula
\[
\begin{aligned}W_{\text{b}} & =\frac{\mu}{2}\left(\overline{I}_{1}-3\right)+\frac{\kappa}{2}\left(J-1\right)^{2},\\
W_{\text{f}} & =\stackrel[a=1]{3}{\sum}f\left(\lambda_{a}\right),
\end{aligned}
\]
\end_inset
\end_layout
\begin_layout Standard
and
\begin_inset Formula $f$
\end_inset
is defined via its derivative,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\frac{\partial f}{\partial\lambda_{a}}\left(\lambda_{a}\right)=\begin{cases}
0, & \lambda_{a}<\lambda_{1}\\
\frac{E_{f}\left(\frac{\lambda_{a}-\lambda_{1}}{\lambda_{2}-\lambda_{1}}\right)^{n}\left(\lambda_{a}-\lambda_{1}\right)}{n+1}, & \lambda_{1}\leq\lambda_{a}<\lambda_{2}\\
E_{f}\left[\frac{\lambda_{2}-\lambda_{1}}{n+1}+\frac{\left(1+\lambda_{a}-\lambda_{2}\right)^{m+1}-1}{m+1}\right], & \lambda_{a}\geq\lambda_{2}
\end{cases}
\]
\end_inset
\end_layout
\begin_layout Standard
Finally,
the parameters
\begin_inset Formula $\lambda_{1}$
\end_inset
and
\begin_inset Formula $\lambda_{2}$
\end_inset
are given as follows.
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{align*}
\lambda_{1} & =\lambda_{c}-\lambda_{t}/2\\
\lambda_{2} & =\lambda_{c}+\lambda_{t}/2
\end{align*}
\end_inset
\end_layout
\begin_layout Standard
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.7692
\end_layout
\begin_layout LyX-Code
1.667
\end_layout
\begin_layout LyX-Code
134.6
\end_layout
\begin_layout LyX-Code
1.02
\end_layout
\begin_layout LyX-Code
0.255
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
30
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Fibers
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fibers"
\end_inset
\end_layout
\begin_layout Standard
Fiber materials are used to model one-dimensional structures oriented along a unit vector.
The associated strain energy density is a function of the normal strain along that vector.
These fiber models are constructed such that the strain energy is non-zero only when the fiber is in tension,
under the idealized assumption that fibers do not sustain any load in compression.
This assumption produces an inherent instability in the material response of fibers,
therefore such models must be combined with elastic materials that can sustain compression and tension,
thus serving as models of a ground matrix.
\end_layout
\begin_layout Standard
FEBio accommodates fiber models that can be combined with unconstrained or uncoupled models of the ground matrix.
Historically,
unconstrained models of a ground matrix have been combined with unconstrained fiber models,
whereas uncoupled models of a ground matrix have been combined with uncoupled fiber models.
The manual sections presented below follow this conventional approach.
\end_layout
\begin_layout Standard
However,
it should be noted that some authors have expressed concerns about using uncoupled fiber formulations in fiber-matrix material models
\begin_inset CommandInset citation
LatexCommand citep
key "Sansour08,Helfenstein10,Gultekin19"
literal "true"
\end_inset
,
due to two fundamental concerns:
When highly nonlinear fibers become much stiffer than the ground matrix upon loading,
it may become difficult to enforce an isochoric deformation,
as would be expected in an uncoupled formulation.
Furthermore,
in an uncoupled formulation,
the strain is split into its deviatoric (isochoric) and volumetric parts and the fiber strain is evaluated only from the deviatoric part.
This deviatoric fiber strain is not the true fiber strain,
yet it is used to determine whether the fiber is in tension.
These factors may result in non-physical deformations,
as described by Helfenstein et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Helfenstein10"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
The solution advocated by these investigators has been to use an uncoupled formulation for the ground matrix only,
while the fiber models should remain unconstrained
\begin_inset CommandInset citation
LatexCommand citep
key "Sansour08,Helfenstein10,Gultekin19"
literal "true"
\end_inset
.
This can be done in FEBio by using a
\begin_inset Quotes eld
\end_inset
\shape italic
uncoupled solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Solid-Mixture"
nolink "false"
\end_inset
,
where the material representing the ground matrix is taken from the list of uncoupled materials in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Materials"
nolink "false"
\end_inset
,
whereas fiber models are taken from the list of unconstrained models in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Fiber-Models"
nolink "false"
\end_inset
or Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Continuous-Fiber"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Unconstrained Fiber Models
\begin_inset CommandInset label
LatexCommand label
name "subsec:Unconstrained-Fiber-Models"
\end_inset
\end_layout
\begin_layout Standard
Since fibers can only sustain tension,
the materials listed here are not stable on their own.
They must be combined with a stable material that acts as a ground matrix,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Mixture"
nolink "false"
\end_inset
,
within a tag.
These fiber models may also be used in continuous fiber distribution models as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Continuous-Fiber"
nolink "false"
\end_inset
,
within a tag.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Fiber with Exponential-Power Law
\begin_inset CommandInset label
LatexCommand label
name "subsec:fiber-exp-pow"
\end_inset
\end_layout
\begin_layout Standard
The material type for a single fiber with an exponential-power law is
\begin_inset Quotes eld
\end_inset
\shape italic
fiber-exp-pow
\shape default
\begin_inset Quotes erd
\end_inset
.
Since fibers can only sustain tension,
this material is not stable on its own.
It must be combined with a stable compressible material that acts as a ground matrix,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Mixture"
nolink "false"
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\xi,$
\end_inset
representing a measure of the fiber modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\alpha,$
\end_inset
coefficient of exponential argument
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\beta,$
\end_inset
power of exponential argument
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\lambda_{0},$
\end_inset
stretch threshold for tensile response
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The fiber is oriented along the unit vector
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
,
where
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
are orthonormal basis vectors representing the local element coordinate system when specified (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
),
or else the global Cartesian coordinate system.
The Cauchy stress for this fibrous material is given by
\begin_inset Formula
\[
\boldsymbol{\sigma}=H\left(I_{n}-I_{0}\right)\frac{2I_{n}}{J}\frac{\partial\Psi}{\partial I_{n}}\mathbf{n}\otimes\mathbf{n},
\]
\end_inset
where
\begin_inset Formula $I_{n}=\lambda_{n}^{2}=\mathbf{n}_{r}\cdot\mathbf{C}\cdot\mathbf{n}_{r}$
\end_inset
is the square of the fiber stretch,
\begin_inset Formula $\mathbf{n}=\mathbf{F}\cdot\mathbf{n}_{r}/\lambda_{n}$
\end_inset
,
\begin_inset Formula $I_{0}=\lambda_{0}^{2}$
\end_inset
is the square of the stretch threshold for the tensile response (
\begin_inset Formula $\lambda_{0}=1$
\end_inset
by default) and
\begin_inset Formula $H\left(.\right)$
\end_inset
is the unit step function that enforces the tension-only contribution.
The fiber strain energy density is given by
\begin_inset Formula
\[
\Psi=\frac{\xi}{\alpha\beta}\left(\exp\left[\alpha\left(I_{n}-I_{0}\right)^{\beta}\right]-1\right)\,,
\]
\end_inset
where
\begin_inset Formula $\xi>0$
\end_inset
,
\begin_inset Formula $\alpha\geqslant0$
\end_inset
,
and
\begin_inset Formula $\beta\geqslant2$
\end_inset
.
\end_layout
\begin_layout Standard
Note:
In the limit when
\begin_inset Formula $\alpha\to0$
\end_inset
,
this expressions produces a power law,
\begin_inset Formula
\[
\lim\limits_{\alpha\to0}\,\Psi=\frac{\xi}{\beta}\left(I_{n}-I_{0}\right)^{\beta}
\]
\end_inset
Note:
When
\begin_inset Formula $\beta>2$
\end_inset
,
the fiber modulus is zero at the strain origin (
\begin_inset Formula $I_{n}=I_{0})$
\end_inset
.
Therefore,
use
\begin_inset Formula $\beta>2$
\end_inset
when a smooth transition in the stress is desired from compression to tension.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
Single fiber oriented along
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
,
embedded in a neo-Hookean ground matrix.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1000.0
\end_layout
\begin_layout LyX-Code
0.45
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
20
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
90
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
Two fibers in the plane orthogonal to
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
,
oriented at ±25 degrees relative to
\begin_inset Formula $\mathbf{e}_{3}$
\end_inset
,
embedded in a neo-Hookean ground matrix.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1000.0
\end_layout
\begin_layout LyX-Code
0.45
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
20
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
90
\end_layout
\begin_layout LyX-Code
25
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
20
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
-90
\end_layout
\begin_layout LyX-Code
25
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Fiber with Neo-Hookean Law
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fiber-with-Neo-Hookean"
\end_inset
\end_layout
\begin_layout Standard
This material type is
\begin_inset Quotes eld
\end_inset
\shape italic
fiber-NH
\shape default
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\mu,$
\end_inset
representing a measure of the fiber modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The fiber strain energy density is given by
\begin_inset Formula
\[
\Psi_{n}\left(I_{n}\right)=\frac{\mu}{4}\left(I_{n}-1\right)^{2}\,,
\]
\end_inset
where
\begin_inset Formula $\mu>0$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
Fiber model as specified in a continuous fiber distribution (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Continuous-Fiber"
nolink "false"
\end_inset
)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Fiber with Natural Neo-Hookean Law
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fiber-with-Neo-Hookean-1"
\end_inset
\end_layout
\begin_layout Standard
This material type is
\begin_inset Quotes eld
\end_inset
\shape italic
fiber-natural-NH
\shape default
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\xi,$
\end_inset
fiber modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\lambda_{0},$
\end_inset
stretch threshold for tensile response
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The fiber strain energy density is given by
\begin_inset Formula
\[
\Psi_{n}\left(\lambda_{n}\right)=\frac{\xi}{2}H\left(\ln\frac{\lambda_{n}}{\lambda_{0}}\right)\left(\ln\frac{\lambda_{n}}{\lambda_{0}}\right)^{2}\,,
\]
\end_inset
where
\begin_inset Formula $\xi>0$
\end_inset
and
\begin_inset Formula $\lambda_{0}\ge1$
\end_inset
.
The tensile response engages at the tensile stretch ratio
\begin_inset Formula $\lambda_{0}$
\end_inset
(
\begin_inset Formula $\lambda_{0}=1$
\end_inset
by default).The natural (logarithmic or Hencky) strain along the fiber is
\begin_inset Formula $\ln\lambda_{n}$
\end_inset
,
whereas
\begin_inset Formula $\ln\frac{\lambda_{n}}{\lambda_{0}}=\ln\lambda_{n}-\ln\lambda_{0}$
\end_inset
is the natural strain relative to the tensile stretch threshold.
This model produces a stress response which varies linearly with the natural strain.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
Fiber model as specified in a solid mixture (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Mixture"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.13
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1.25
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Fiber with Toe-Linear Response
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fiber-Pow-Linear"
\end_inset
\end_layout
\begin_layout Standard
This material type is
\begin_inset Quotes eld
\end_inset
\shape italic
fiber-pow-linear
\shape default
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $E,$
\end_inset
the fiber modulus in the linear range (
\begin_inset Formula $E\geqslant0)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\beta,$
\end_inset
the power-law exponent in the toe region (
\begin_inset Formula $\beta\geqslant2)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\lambda_{0},$
\end_inset
the stretch ratio when the toe region transitions to the linear region (
\begin_inset Formula $\lambda_{0}>1)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The fiber strain energy density is given by
\begin_inset Formula
\[
\Psi_{n}\left(I_{n}\right)=\begin{cases}
0 & I_{n}<1\\
\frac{\xi}{\beta}\left(I_{n}-1\right)^{\beta} & 1\leqslant I_{n}\leqslant I_{0}\\
B\left(I_{n}-I_{0}\right)-E\left(I_{n}^{1/2}-I_{0}^{1/2}\right)+\frac{\xi}{\beta}\left(I_{0}-1\right)^{\beta} & I_{0}
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
20
\end_layout
\begin_layout LyX-Code
90
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2.5
\end_layout
\begin_layout LyX-Code
1.06
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Fiber with Exp-Pow-Linear Response
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fiber-Exp-Pow-Linear"
\end_inset
\end_layout
\begin_layout Standard
This material type is
\begin_inset Quotes eld
\end_inset
\shape italic
fiber-exp-pow-linear
\shape default
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $E,$
\end_inset
the fiber modulus in the linear range (
\begin_inset Formula $E\geqslant0)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\alpha,$
\end_inset
coefficient of exponential argument
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\beta,$
\end_inset
the power-law exponent in the toe region (
\begin_inset Formula $\beta\geqslant2)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\lambda_{0},$
\end_inset
the stretch ratio when the toe region transitions to the linear region (
\begin_inset Formula $\lambda_{0}>1)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The fiber strain energy density is given by
\begin_inset Formula
\[
\Psi_{n}=\begin{cases}
0 & I_{n}<1\\
\frac{\xi}{\alpha\beta}\left(\exp\left[\alpha\left(I_{n}-1\right)^{\beta}\right]-1\right) & 1\le I_{n}\le I_{0}\\
B\left(I_{n}-I_{0}\right)-E\left(I_{n}^{1/2}-I_{0}^{1/2}\right)+\frac{\xi}{\alpha\beta}\left(\exp\left[\alpha\left(I_{0}-1\right)^{\beta}\right]-1\right) & I_{n}>I_{0}
\end{cases}
\]
\end_inset
where
\begin_inset Formula $I_{0}=\lambda_{0}^{2}$
\end_inset
,
\begin_inset Formula
\[
\xi=\frac{E\left(I_{0}-1\right)^{2-\beta}\exp\left[-\alpha\left(I_{0}-1\right)^{\beta}\right]}{4I_{0}^{3/2}\left(\beta-1+\alpha\beta\left(I_{0}-1\right)^{\beta}\right)}
\]
\end_inset
and
\begin_inset Formula
\[
B=E\frac{2I_{0}\left(\beta-\frac{1}{2}+\alpha\beta\left(I_{0}-1\right)^{\beta}\right)-1}{4I_{0}^{3/2}\left(\beta-1+\alpha\beta\left(I_{0}-1\right)^{\beta}\right)}
\]
\end_inset
\end_layout
\begin_layout Standard
For this material type,
the fiber elasticity at the strain origin reduces to zero unless
\begin_inset Formula $\beta=2$
\end_inset
.
This model reduces to
\begin_inset Quotes eld
\end_inset
\emph on
fiber-pow-linear
\emph default
\begin_inset Quotes erd
\end_inset
when
\begin_inset Formula $\alpha=0$
\end_inset
.
Alternatively,
in the limit when
\begin_inset Formula $I_{0}=1$
\end_inset
,
the above parameters reduce to
\begin_inset Formula $\xi=0$
\end_inset
and
\begin_inset Formula $B=E/2$
\end_inset
and the strain energy density takes the quadratic form
\begin_inset Formula
\[
\Psi_{n}=\begin{cases}
0 & I_{n}<1\\
\frac{E}{2}\left(I_{n}^{1/2}-1\right)^{2} & I_{n}>1
\end{cases}
\]
\end_inset
where
\begin_inset Formula $I_{n}^{1/2}=\lambda_{n}$
\end_inset
is the stretch ratio along the fiber.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
Fiber model as specified in a solid mixture (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Mixture"
nolink "false"
\end_inset
)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1080
\end_layout
\begin_layout LyX-Code
1400
\end_layout
\begin_layout LyX-Code
2.73
\end_layout
\begin_layout LyX-Code
1.012
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Fiber Exp-Linear
\end_layout
\begin_layout Standard
This material type is
\begin_inset Quotes eld
\end_inset
\shape italic
fiber-exp-linear
\shape default
\begin_inset Quotes erd
\end_inset
.
This constitutive fiber model has an initial exponential rise and then grows linearly after a user-specified stretch transition point.
This fiber material is based on the trans-iso Mooney-Rivlin model introduced in
\begin_inset CommandInset citation
LatexCommand citep
key "Weiss96"
literal "false"
\end_inset
.
This material by itself is not stable,
so it is recommend to use it as part of a solid mixture.
\end_layout
\begin_layout Standard
The strain energy is as follows:
\begin_inset Formula
\[
F_{2}\left(\lambda\right)=\begin{cases}
0 & \lambda<1\\
C_{3}\left(e^{-C_{4}}\left(\Ei\left(C_{4}\lambda\right)-\Ei\left(C_{4}\right)\right)-\ln\lambda\right) & 1\le\lambda<\lambda_{m}\\
C_{5}\left(\lambda-\lambda_{m}\right)+C_{6}\ln\frac{\lambda}{\lambda_{m}}+C_{3}\left(e^{-C_{4}}\Ei\left(C_{4}\lambda_{m}\right)-\Ei\left(C_{4}\right)-\ln\lambda_{m}\right) & \lambda_{m}\le\lambda
\end{cases}\,
\]
\end_inset
where
\begin_inset Formula $\Ei\left(\cdot\right)$
\end_inset
is the exponential integral function.
The resulting fiber stress is evaluated from
\begin_inset Formula
\[
\lambda\frac{\partial F_{2}}{\partial\lambda}=\begin{cases}
0 & \tilde{\lambda}\leqslant1\\
C_{3}\left(e^{C_{4}\left(\lambda-1\right)}-1\right) & 1<\tilde{\lambda}<\lambda_{m}\\
C_{5}\lambda+C_{6} & \tilde{\lambda}\geqslant\lambda_{m}
\end{cases}\,.
\]
\end_inset
Here,
\begin_inset Formula $\lambda_{m}$
\end_inset
is the stretch at which the fibers are straightened,
\begin_inset Formula $C_{3}$
\end_inset
scales the exponential stresses,
\begin_inset Formula $C_{4}$
\end_inset
is the rate of uncrimping of the fibers,
and
\begin_inset Formula $C_{5}$
\end_inset
is the modulus of the straightened fibers.
\begin_inset Formula $C_{6}$
\end_inset
is determined from the requirement that the stress is continuous at
\begin_inset Formula $\lambda_{m}$
\end_inset
(see below).
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Exponential stress coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber uncrimping coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Modulus of straightened fibers
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber stretch for straightened fibers
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
While this material enforces continuity of the strain energy density and stress at
\begin_inset Formula $\lambda_{m}$
\end_inset
,
it does not guarantee continuity of the elasticity.
The continuity of the elasticity is only satisfied if the parameter
\begin_inset Formula $C_{3}$
\end_inset
satisfies
\begin_inset Formula
\[
C_{3}=\frac{C_{5}}{C_{4}}e^{-C_{4}\left(\lambda_{m}-1\right)}
\]
\end_inset
The parameter
\begin_inset Formula $C_{6}$
\end_inset
is chosen so that the stress defined above is continuous
\begin_inset Formula $\lambda_{m}$
\end_inset
and is determined by,
\begin_inset Formula
\[
C_{6}=C_{3}\left(e^{C_{4}\left(\lambda_{m}-1\right)}-1\right)-C_{5}\lambda_{m}
\]
\end_inset
To use the form of
\begin_inset Formula $F_{2}$
\end_inset
that satisfies continuity of the elasticity at
\begin_inset Formula $\lambda_{m}$
\end_inset
the user may set
\begin_inset Formula $C_{3}=0$
\end_inset
in the input file,
and specify
\begin_inset Formula $C_{4}$
\end_inset
and
\begin_inset Formula $C_{5}$
\end_inset
as explained above.
When
\begin_inset Formula $C_{3}=0$
\end_inset
the code will automatically recalculate
\begin_inset Formula $C_{3}$
\end_inset
internally using the formula above.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1e-6
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.0023
\end_layout
\begin_layout LyX-Code
43
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
1.05
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Fiber as Entropy Chain
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fiber-Entropy-Chain"
\end_inset
\end_layout
\begin_layout Standard
This material type is
\begin_inset Quotes eld
\end_inset
\emph on
fiber-entropy-chain
\emph default
\begin_inset Quotes erd
\end_inset
.
It was proposed by
\begin_inset CommandInset citation
LatexCommand citep
key "Shi22"
literal "false"
\end_inset
.
This fiber model is based on statistical mechanics to reflect the entropy-driven nature of a biological fiber.
The model is derived from the freely-jointed-chain mechanism.
Its strain energy is directly related to the entropic change of the chains in the material,
given by
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\Psi_{n}\left(I_{n}\right)=\xi N\left(\sqrt{\frac{I_{n}}{N}}\beta+\ln\frac{\beta}{\sinh\beta}\right)-\frac{\xi\sqrt{N}}{2}\beta_{0}I_{n}-\alpha_{00}
\]
\end_inset
\end_layout
\begin_layout Standard
\noindent
where
\begin_inset Formula $I_{n}=\mathbf{n}_{r}\cdot\mathbf{C}\cdot\mathbf{n}_{r}$
\end_inset
is the square of the stretch ratio along the referential fiber direction
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
.
The inverse Langevin equation relates the parameter
\begin_inset Formula $\beta$
\end_inset
to
\begin_inset Formula $I_{n}$
\end_inset
and
\begin_inset Formula $N$
\end_inset
according to
\begin_inset Formula ${\displaystyle \beta=\mathcal{L}^{-1}\left[\sqrt{\frac{I_{n}}{N}}\right]}$
\end_inset
.
Here,
\begin_inset Formula $\beta_{0}$
\end_inset
is the value of
\begin_inset Formula $\beta$
\end_inset
when
\begin_inset Formula $I_{n}=1$
\end_inset
,
and
\begin_inset Formula $\alpha_{00}$
\end_inset
is needed to produce a state of zero energy at
\begin_inset Formula $I_{n}=1$
\end_inset
.
The parameter
\begin_inset Formula $\xi=nk\Theta$
\end_inset
is the initial fiber stiffness,
with
\begin_inset Formula $n$
\end_inset
,
\begin_inset Formula $k$
\end_inset
,
and
\begin_inset Formula $\Theta$
\end_inset
respectively representing the number of chains per unit volume,
Boltzmann's constant,
and the absolute temperature.
The parameter
\begin_inset Formula $N=\zeta^{2}$
\end_inset
is the number of chain segments,
and
\begin_inset Formula $\zeta$
\end_inset
is the locking stretch,
representing the extensibility of the fiber.
The Langevin function is given by
\begin_inset Formula $\mathcal{L}\left(x\right)=\coth x-\frac{1}{x}$
\end_inset
.
\end_layout
\begin_layout Standard
When evaluating the inverse Langevin equation,
a Taylor series expansion is applied for computational stability.
The parameter
\begin_inset Formula $n_{\mathrm{term}}$
\end_inset
is used to control the number of terms used to evaluate the equation;
it must be an integer between 3 and 30.
\end_layout
\begin_layout Standard
\noindent
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Initial modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Square of locking stretch
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Number of Taylor series terms
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Shear modulus for fiber-matrix interaction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
30
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
30
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
196
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Uncoupled Fiber Models
\begin_inset CommandInset label
LatexCommand label
name "subsec:Uncoupled-Fiber-Models"
\end_inset
\end_layout
\begin_layout Standard
Since fibers can only sustain tension,
the materials listed here are not stable on their own.
They must be combined with a stable material that acts as a ground matrix,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
uncoupled solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Solid-Mixture"
nolink "false"
\end_inset
,
within a tag.
These fiber models may also be used in continuous fiber distribution models as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Continuous-Fiber"
nolink "false"
\end_inset
,
using a tag.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Fiber with Exponential-Power Law,
Uncoupled Formulation
\begin_inset CommandInset label
LatexCommand label
name "subsec:fiber-exp-pow-uncoupled"
\end_inset
\end_layout
\begin_layout Standard
The material type for a single fiber with an exponential-power law,
in an uncoupled strain energy formulation,
is
\begin_inset Quotes eld
\end_inset
\shape italic
fiber-exp-pow-uncoupled
\shape default
\begin_inset Quotes erd
\end_inset
.
Since fibers can only sustain tension,
this material is not stable on its own.
It must be combined with a stable uncoupled material that acts as a ground matrix,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
uncoupled solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Solid-Mixture"
nolink "false"
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\xi,$
\end_inset
representing a measure of the fiber modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\alpha,$
\end_inset
coefficient of exponential argument
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\beta,$
\end_inset
power of exponential argument
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The fiber is oriented along the unit vector
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
,
where
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
are orthonormal basis vectors representing the local element coordinate system when specified (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
),
or else the global Cartesian coordinate system.
The stress
\begin_inset Formula $\tilde{\boldsymbol{\sigma}}$
\end_inset
for this fibrous material is given by
\begin_inset Formula
\[
\tilde{\boldsymbol{\sigma}}=H\left(\tilde{I}_{n}-1\right)\frac{2\tilde{I}_{n}}{J}\frac{\partial\tilde{\Psi}}{\partial\tilde{I}_{n}}\mathbf{n}\otimes\mathbf{n},
\]
\end_inset
where
\begin_inset Formula $\tilde{I}_{n}=\tilde{\lambda}_{n}^{2}=\mathbf{n}_{r}\cdot\mathbf{\tilde{C}}\cdot\mathbf{n}_{r}$
\end_inset
is the square of the fiber stretch,
\begin_inset Formula $\mathbf{n}=\mathbf{\tilde{F}}\cdot\mathbf{n}_{r}/\tilde{\lambda}_{n}$
\end_inset
,
and
\begin_inset Formula $H\left(.\right)$
\end_inset
is the unit step function that enforces the tension-only contribution..
The fiber strain energy density is given by
\begin_inset Formula
\[
\tilde{\Psi}=\frac{\xi}{\alpha\beta}\left(\exp\left[\alpha\left(\tilde{I}_{n}-1\right)^{\beta}\right]-1\right)\,,
\]
\end_inset
where
\begin_inset Formula $\xi>0$
\end_inset
,
\begin_inset Formula $\alpha\geqslant0$
\end_inset
,
and
\begin_inset Formula $\beta\geqslant2$
\end_inset
.
\end_layout
\begin_layout Standard
Note:
In the limit when
\begin_inset Formula $\alpha\to0$
\end_inset
,
this expressions produces a power law,
\begin_inset Formula
\[
\lim\limits_{\alpha\to0}\tilde{\Psi}=\frac{\xi}{\beta}\left(\tilde{I}_{n}-1\right)^{\beta}.
\]
\end_inset
Note:
When
\begin_inset Formula $\beta>2$
\end_inset
,
the fiber modulus is zero at the strain origin (
\begin_inset Formula $\tilde{I}_{n}=1)$
\end_inset
.
Therefore,
use
\begin_inset Formula $\beta>2$
\end_inset
when a smooth transition in the stress is desired from compression to tension.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
Single fiber oriented along
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
,
embedded in a Mooney-Rivlin ground matrix.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
10e3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
20
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
90
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
Two fibers in the plane orthogonal to
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
,
oriented at ±25 degrees relative to
\begin_inset Formula $\mathbf{e}_{3}$
\end_inset
,
embedded in a Mooney-Rivlin ground matrix.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
10e3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
20
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
90
\end_layout
\begin_layout LyX-Code
25
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
20
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
-90
\end_layout
\begin_layout LyX-Code
25
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Fiber Kiousis Uncoupled
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fiber-Kiousus-Uncoupled"
\end_inset
\end_layout
\begin_layout Standard
This material type is
\begin_inset Quotes eld
\end_inset
\shape italic
fiber-Kiousis-uncoupled
\shape default
\begin_inset Quotes erd
\end_inset
.
It is based on the material model proposed by Kiousis et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Kiousis08,Kiousis09"
literal "true"
\end_inset
for modeling the balloon in a balloon-stent
\end_layout
\begin_layout Standard
+system.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $d_{1},$
\end_inset
represents a measure of the fiber modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $d_{2},$
\end_inset
square of the stretch ratio when the fiber engages
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $n,$
\end_inset
power exponent
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The fiber strain energy density is given by
\begin_inset Formula
\[
\tilde{\Psi}_{n}\left(I_{n}\right)=\begin{cases}
\frac{d_{1}}{n}\left(\tilde{I}_{n}-d_{2}\right)^{n} & \tilde{I}_{n}\ge d_{2}\\
0 & \tilde{I}_{n}
\end_layout
\begin_layout LyX-Code
500
\end_layout
\begin_layout LyX-Code
2.25
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Fiber with Toe-Linear Response,
Uncoupled Formulation
\begin_inset CommandInset label
LatexCommand label
name "subsec:fiber-toe-linear-uncoupled"
\end_inset
\end_layout
\begin_layout Standard
This material type is
\begin_inset Quotes eld
\end_inset
\shape italic
fiber-pow-linear-uncoupled
\shape default
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $E,$
\end_inset
the fiber modulus in the linear range (
\begin_inset Formula $E\geqslant0)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\beta,$
\end_inset
the power-law exponent in the toe region (
\begin_inset Formula $\beta\geqslant2)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\lambda_{0},$
\end_inset
the stretch ratio when the toe region transitions to the linear region (
\begin_inset Formula $\lambda_{0}>1)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The fiber strain energy density is given by
\begin_inset Formula
\[
\tilde{\Psi}_{n}\left(\tilde{I}_{n}\right)=\begin{cases}
0 & \tilde{I}_{n}<1\\
\frac{\xi}{\beta}\left(\tilde{I}_{n}-1\right)^{\beta} & 1\leqslant\tilde{I}_{n}\leqslant I_{0}\\
B\left(\tilde{I}_{n}-I_{0}\right)-E\left(\tilde{I}_{n}^{1/2}-I_{0}^{1/2}\right)+\frac{\xi}{\beta}\left(I_{0}-1\right)^{\beta} & I_{0}<\tilde{I}_{n}
\end{cases}\,,
\]
\end_inset
where
\begin_inset Formula $I_{0}=\lambda_{0}^{2}$
\end_inset
,
\begin_inset Formula
\[
\xi=\frac{E}{4\left(\beta-1\right)}I_{0}^{-3/2}\left(I_{0}-1\right)^{2-\beta},\,B=\xi\left(I_{0}-1\right)^{\beta-1}+\frac{E}{2}I_{0}^{-1/2}\,.
\]
\end_inset
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
Fiber model as specified in a solid mixture (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Solid-Mixture"
nolink "false"
\end_inset
)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
20
\end_layout
\begin_layout LyX-Code
90
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2.5
\end_layout
\begin_layout LyX-Code
1.06
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Uncoupled Fiber Exp-Linear
\end_layout
\begin_layout Standard
This constitutive fiber model has an initial exponential rise and then grows linearly after a user-specified stretch transition point.
This fiber material is based on the trans-iso Mooney-Rivlin model introduced in
\begin_inset CommandInset citation
LatexCommand citep
key "Weiss96"
literal "false"
\end_inset
.
This material by itself is not stable,
so it is recommend to use it as part of a solid mixture.
\end_layout
\begin_layout Standard
The strain energy is as follows:
\begin_inset Formula
\[
F_{2}\left(\tilde{\lambda}\right)=\begin{cases}
0 & \tilde{\lambda}<1\\
C_{3}\left(e^{-C_{4}}\left(\Ei\left(C_{4}\tilde{\lambda}\right)-\Ei\left(C_{4}\right)\right)-\ln\tilde{\lambda}\right) & 1\le\tilde{\lambda}<\lambda_{m}\\
C_{5}\left(\tilde{\lambda}-\lambda_{m}\right)+C_{6}\ln\frac{\tilde{\lambda}}{\lambda_{m}}+C_{3}\left(e^{-C_{4}}\Ei\left(C_{4}\lambda_{m}\right)-\Ei\left(C_{4}\right)-\ln\lambda_{m}\right) & \lambda_{m}\le\tilde{\lambda}
\end{cases}\,
\]
\end_inset
where
\begin_inset Formula $\Ei\left(\cdot\right)$
\end_inset
is the exponential integral function.
The resulting fiber stress is evaluated from
\begin_inset Formula
\[
\tilde{\lambda}\frac{\partial F_{2}}{\partial\tilde{\lambda}}=\begin{cases}
0 & \tilde{\lambda}\leqslant1\\
C_{3}\left(e^{C_{4}\left(\tilde{\lambda}-1\right)}-1\right) & 1<\tilde{\lambda}<\lambda_{m}\\
C_{5}\tilde{\lambda}+C_{6} & \tilde{\lambda}\geqslant\lambda_{m}
\end{cases}\,.
\]
\end_inset
Here,
\begin_inset Formula $\lambda_{m}$
\end_inset
is the stretch at which the fibers are straightened,
\begin_inset Formula $C_{3}$
\end_inset
scales the exponential stresses,
\begin_inset Formula $C_{4}$
\end_inset
is the rate of uncrimping of the fibers,
and
\begin_inset Formula $C_{5}$
\end_inset
is the modulus of the straightened fibers.
\begin_inset Formula $C_{6}$
\end_inset
is determined from the requirement that the stress is continuous at
\begin_inset Formula $\lambda_{m}$
\end_inset
(see below).
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Exponential stress coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber uncrimping coefficient
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Modulus of straightened fibers
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Bulk modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber stretch for straightened fibers
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fiber distribution option
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
While this material enforces continuity of the strain energy density and stress at
\begin_inset Formula $\lambda_{m}$
\end_inset
,
it does not enforce continuity of the elasticity.
To enforce continuity of all three parameters,
we need to let
\begin_inset Formula
\[
C_{3}=\frac{C_{5}}{C_{4}}e^{-C_{4}\left(\lambda_{m}-1\right)}
\]
\end_inset
The parameter
\begin_inset Formula $C_{6}$
\end_inset
is chosen so that the stress defined above is continuous
\begin_inset Formula $\lambda_{m}$
\end_inset
and is determined by,
\begin_inset Formula
\[
C_{6}=C_{3}\left(e^{C_{4}\left(\lambda_{m}-1\right)}-1\right)-C_{5}\lambda_{m}
\]
\end_inset
To enforce contintuity of the elasticity at
\begin_inset Formula $\lambda_{m}$
\end_inset
the user may also set
\begin_inset Formula $C_{3}=0$
\end_inset
in the input file,
and specify
\begin_inset Formula $C_{4}$
\end_inset
and
\begin_inset Formula $C_{5}$
\end_inset
as explained above.
When
\begin_inset Formula $C_{3}=0$
\end_inset
the code will automatically recalculate
\begin_inset Formula $C_{3}$
\end_inset
internally.
Using the above formula to calculate
\begin_inset Formula $C_{3}$
\end_inset
manually for use in the first form can also enforce continuity of the elastic modulus at
\begin_inset Formula $\lambda_{m}$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
2.5e-07
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.00234
\end_layout
\begin_layout LyX-Code
43
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
1.05
\end_layout
\begin_layout LyX-Code
1,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Uncoupled Fiber as Entropy Chain
\begin_inset CommandInset label
LatexCommand label
name "subsec:UC-Fiber-Entropy-Chain"
\end_inset
\end_layout
\begin_layout Standard
This material type is
\begin_inset Quotes eld
\end_inset
\emph on
uncoupled fiber-entropy-chain
\emph default
\begin_inset Quotes erd
\end_inset
.
It was proposed by
\begin_inset CommandInset citation
LatexCommand citep
key "Shi22"
literal "false"
\end_inset
.
This fiber model is based on statistical mechanics to reflect the entropy-driven nature of a biological fiber.
The model is derived from the freely-jointed-chain mechanism.
Its strain energy is directly related to the entropic change of the chains in the material,
given by
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\Psi_{n}(\tilde{I}_{n})=\xi N\left(\sqrt{\frac{\tilde{I}_{n}}{N}}\beta+\text{ln}\frac{\beta}{\sinh\beta}\right)-\frac{\xi\sqrt{N}}{2}\beta_{0}\tilde{I}_{n}-\alpha_{00}
\]
\end_inset
\end_layout
\begin_layout Standard
\noindent
where
\begin_inset Formula $\tilde{I}_{n}=\mathbf{n}_{r}\cdot\tilde{\mathbf{C}}\cdot\mathbf{n}_{r}$
\end_inset
is the deviatoric measure of the stretch ratio along the referential fiber direction
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
.
The inverse Langevin equation relates the parameter
\begin_inset Formula $\beta$
\end_inset
to
\begin_inset Formula $I_{n}$
\end_inset
and
\begin_inset Formula $N$
\end_inset
according to
\begin_inset Formula ${\displaystyle \beta=\mathcal{L}^{-1}\left(\sqrt{\frac{I_{n}}{N}}\right)}$
\end_inset
.
Here,
\begin_inset Formula $\beta_{0}$
\end_inset
is the value of
\begin_inset Formula $\beta$
\end_inset
when
\begin_inset Formula $I_{n}=1$
\end_inset
,
and
\begin_inset Formula $\alpha_{00}$
\end_inset
is needed to produce a state of zero energy at
\begin_inset Formula $I_{n}=1$
\end_inset
.
The parameter
\begin_inset Formula $\xi=nk\Theta$
\end_inset
is the initial fiber stiffness,
with
\begin_inset Formula $n$
\end_inset
,
\begin_inset Formula $k$
\end_inset
,
and
\begin_inset Formula $\Theta$
\end_inset
respectively representing the number of chains per unit volume,
Boltzmann's constant,
and the absolute temperature.
The parameter
\begin_inset Formula $N=\zeta^{2}$
\end_inset
is the number of chain segments,
and
\begin_inset Formula $\zeta$
\end_inset
is the locking stretch,
representing the extensibility of the fiber.
The Langevin function is given by
\begin_inset Formula $\mathcal{L}\left(x\right)=\coth x-\frac{1}{x}$
\end_inset
.
\end_layout
\begin_layout Standard
When evaluating the inverse Langevin equation,
a Taylor series expansion is applied for computational stability.
The parameter
\begin_inset Formula $n_{\mathrm{term}}$
\end_inset
is used to control the number of terms used to evaluate the equation;
it must be an integer between 3 and 30.
\end_layout
\begin_layout Standard
\noindent
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Initial modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Square of locking stretch
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Number of Taylor series terms
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1e4
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
2.3
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
25
\end_layout
\begin_layout LyX-Code
0,0,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Continuous Fiber Distribution
\begin_inset CommandInset label
LatexCommand label
name "sec:Continuous-Fiber-Distribution"
\end_inset
\end_layout
\begin_layout Standard
A continuous fiber distribution has a strain energy density that integrates the contributions from fiber bundles oriented along all directions emanating from a point in the continuum,
\begin_inset Formula
\[
\Psi_{r}\left(\mathbf{C}\right)=\int_{A}H\left(I_{n}-1\right)R\left(\mathbf{n}_{r}\right)\Psi_{n}\left(I_{n}\right)\,dA\,,
\]
\end_inset
where
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
is the unit vector along the fiber orientation in the reference configuration,
\begin_inset Formula $I_{n}=\mathbf{n}_{r}\cdot\mathbf{C}\cdot\mathbf{n}_{r}$
\end_inset
is the normal component of
\begin_inset Formula $\mathbf{C}$
\end_inset
along
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
(also the square of the stretch ratio along that direction),
and
\begin_inset Formula $A$
\end_inset
represents the unit sphere (for 3D fiber distributions) or unit circle (for 2D fiber distributions) over which the integration is performed
\begin_inset CommandInset citation
LatexCommand citep
key "Hou16"
literal "true"
\end_inset
.
Thus,
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
spans all directions from the origin to points on the unit sphere or unit circle.
In the integrand,
\begin_inset Formula $\Psi_{n}$
\end_inset
represents the strain energy density of the fiber bundle oriented along
\begin_inset Formula $\mathbf{n}_{r}$
\end_inset
;
\begin_inset Formula $H\left(\cdot\right)$
\end_inset
is the Heaviside unit step function that includes only fibers that are in tension;
and
\begin_inset Formula $R\left(\mathbf{n}_{r}\right)$
\end_inset
is the fiber density distribution function that specifies the spatial fractional distribution of fibers.
This function satisfies the constraint
\begin_inset Formula
\[
\int_{A}R\left(\mathbf{n}_{r}\right)\,dA=1\,.
\]
\end_inset
Fiber constitutive models may be taken from the list given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Fiber-Models"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
For a material with an uncoupled strain energy density the corresponding expression is
\begin_inset Formula
\[
\tilde{\Psi}_{r}\left(\tilde{\mathbf{C}}\right)=\int_{A}H\left(\tilde{I}_{n}-1\right)R\left(\mathbf{n}_{r}\right)\tilde{\Psi}_{n}\left(\tilde{I}_{n}\right)\,dA\,,
\]
\end_inset
where
\begin_inset Formula $\tilde{I}_{n}=\mathbf{n}_{r}\cdot\tilde{\mathbf{C}}\cdot\mathbf{n}_{r}$
\end_inset
.
In this case,
fiber constitutive models may be taken from the list given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Fiber-Models"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Unconstrained Continuous Fiber Distribution
\begin_inset CommandInset label
LatexCommand label
name "subsec:Unconstrained-Continuous-Fiber"
\end_inset
\end_layout
\begin_layout Standard
The material type for an unconstrained continuous fiber distribution material is
\shape italic
\begin_inset Quotes eld
\end_inset
continuous fiber distribution
\begin_inset Quotes erd
\end_inset
\shape default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the fiber material response
\begin_inset Formula $\Psi_{n}\left(I_{n}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the fiber density distribution
\begin_inset Formula $R\left(\mathbf{n}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Numerical integration scheme
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The tag encloses a description of the fiber constitutive relation and associated material properties,
as may be selected from the list provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Fiber-Models"
nolink "false"
\end_inset
.
The tag encloses a description of the fiber density distribution function,
as may be selected from the list presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Distribution"
nolink "false"
\end_inset
.
The tag specifies the numerical integration scheme,
as may be selected from the list presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Scheme"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
7
\end_layout
\begin_layout LyX-Code
11
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Uncoupled Continuous Fiber Distribution
\begin_inset CommandInset label
LatexCommand label
name "subsec:Uncoupled-Continuous-Fiber"
\end_inset
\end_layout
\begin_layout Standard
The material type for an uncoupled continuous fiber distribution material is
\shape italic
\begin_inset Quotes eld
\end_inset
continuous fiber distribution uncoupled
\begin_inset Quotes erd
\end_inset
\shape default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the fiber material response
\begin_inset Formula $\tilde{\Psi}_{n}\left(\tilde{I}_{n}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the fiber density distribution
\begin_inset Formula $R\left(\mathbf{n}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Numerical integration scheme
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The tag encloses a description of the fiber constitutive relation and associated material properties,
as may be selected from the list provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Fiber-Models"
nolink "false"
\end_inset
.
The tag encloses a description of the fiber density distribution function,
as may be selected from the list presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Distribution"
nolink "false"
\end_inset
.
The tag specifies the numerical integration scheme,
as may be selected from the list presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Scheme"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
7
\end_layout
\begin_layout LyX-Code
11
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Fiber ODF Constitutive Model
\end_layout
\begin_layout Standard
The
\emph on
Fiber ODF
\emph default
constitutive model is a special version of the
\emph on
Continuous Fiber Distribution
\emph default
constitutive model,
with its own distribution type,
and a unique integration scheme.
It utilizes a set of non-parametric orientation distribution functions which are each defined by a position in space,
and a series of spherical harmonic coefficients.
This allows for the definition of extremely detailed ODFs of any shape.
\end_layout
\begin_layout Standard
This constitutive model is intended to be used in conjunction with the
\emph on
Fiber ODF Analysis
\emph default
tool in FEBio Studio,
which directly analyzes 3D image data and generates ODFs based on fibers in the image.
For more information on this tool and the algorithms involved please see the Fiber ODF Analysis section in the FEBio Studio User Manual,
and the manuscripts associated with this tool
\begin_inset CommandInset citation
LatexCommand citep
key "rauff_algorithmic_2024,rauff_nonparametric_2022"
literal "false"
\end_inset
.
\end_layout
\begin_layout Standard
When an FE simulation is run using this material,
some preprocessing is done on the ODFs in order to reduce the computational load during the simulation.
The following is a description of these preprocessing steps.
For a more detailed description,
please see the associated manuscript
\begin_inset CommandInset citation
LatexCommand cite
key "rauff_algorithmic_2024"
literal "false"
\end_inset
.
\end_layout
\begin_layout Standard
In order to prevent sharp changes in the fiber direction between elements,
a unique ODF is interpolated for each element in the mesh based on the element’s physical distance from the nearby ODFs in the discrete ODF field.
This interpolation is done using a weighted-mean approach utilizing the objective distance metric afforded by the Fisher-Rao inner product space
\begin_inset CommandInset citation
LatexCommand cite
key "rauff_algorithmic_2024"
literal "false"
\end_inset
.
This results in a unique ODF for each FE element in the domain of the constitutive model which smoothly transition between ODFs defined in each of the original image's subdivisions.
If only a single ODF is defined for the domain (in other words,
if the image was not subdivided before the analysis) then this step is skipped and the original ODF is used for all elements in the domain.
\end_layout
\begin_layout Standard
Constitutive models using continuous fiber distributions require an efficient integration scheme over the unit sphere to compute stress contributions from the fiber family.
Because there is no analytical representation of these non-parametric ODFs,
this integration is performed by sampling the values of the ODFs at its defined points.
To ensure faithful representation of the ODF,
all ODF calculations up to this point in the process use a high resolution,
pre-defined set evenly-spaced points on the unit sphere.
Integrating the stress contributions across the ODFs at their full resolution proved to be prohibitively computationally expensive,
as this integration must occur at every integration point in the FE mesh for each stress calculation in the analysis.
\end_layout
\begin_layout Standard
To address this issue,
we developed a mechanism to reduce the number of sampling points on the ODF using an approach based on finite element remeshing technology.
The gradient of each ODF is calculated,
and a triangulated mesh of the ODF probability surface and its gradient is passed to the mmg remeshing library.
The mmg algorithm remeshes a surface of triangular elements,
adjusting the relative nodal density of the ODF mesh based on the magnitude of the gradient,
resulting in a higher sampling density in areas of high curvature while reducing the overall number of sample points,
thereby preserving sharp changes in orientation (Figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:fiberODFRmesh"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\begin_inset Graphics
filename Figures/fiberODFRemesh.png
width 100text%
\end_inset
\begin_inset Caption Standard
\begin_layout Plain Layout
Spherical representations of an ODF showing the results of the remeshing algorithm.
(A) A full-resolution,
spherical representation of an ODF.
(B) An enlarged portion of the same ODF showing the area inside the black square in panel A.
In this panel,
the ODF’s mesh has been made visible to show the density of sampling points at the full-resolution of 40,962 points.
(C) The remeshed surface of the same ODF showing the area inside the black square in panel A.
The density of the ODF’s sampling points has been greatly reduced in the regions of the ODF where there is little variation in the ODF’s value,
while maintaining high density in regions where there are sharp changes in value.
This preserves the general shape of the ODF while significantly reducing the number of sampling points.
\begin_inset CommandInset label
LatexCommand label
name "fig:fiberODFRmesh"
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset
The number of integration points in the remeshed ODFs varies depending on the ODF topology,
but the number points is generally reduced by about two orders of magnitude.
Since the resampling of the ODFs only takes place once,
at the beginning of the FE analysis,
the time required for the remeshing step is small relative to the overall time involved in a FE analysis.
The reduction in points dramatically increases the speed of stress computations without significantly altering the results.
After the interpolation and remeshing steps,
the material initialization is complete,
and the FE analysis continues normally.
\end_layout
\begin_layout Standard
The material type for a fiber ODF distribution material is
\shape italic
\begin_inset Quotes eld
\end_inset
fiberODF
\begin_inset Quotes erd
\end_inset
\shape default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the fiber material response
\begin_inset Formula $\tilde{\Psi}_{n}\left(\tilde{I}_{n}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A fiber-odf object specifying the position and spherical harmonic coefficients
\end_layout
\begin_layout Plain Layout
defining an ODF.
This material may have any number of these objects defined.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The tag encloses a description of the fiber constitutive relation and associated material properties,
as may be selected from the list provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Fiber-Models"
nolink "false"
\end_inset
.
The Fiber ODF material takes any number of
\emph on
<
\emph default
fiber-odf
\emph on
>
\emph default
tags as parameters,
each with a position in space,
and a list of spherical harmonic coefficients.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
8.61001e-05,6.31376e-05,
etc...
\end_layout
\begin_layout LyX-Code
340,300,224
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
-3.28478e-05,3.90659e-06,
etc...
\end_layout
\begin_layout LyX-Code
400,300,224
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Distribution
\begin_inset CommandInset label
LatexCommand label
name "subsec:Distribution"
\end_inset
\end_layout
\begin_layout Standard
A fiber density distribution function is needed in the specification of a continuous fiber distribution.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Spherical
\begin_inset CommandInset label
LatexCommand label
name "subsec:Spherical"
\end_inset
\end_layout
\begin_layout Standard
The fiber density distribution type
\begin_inset Quotes eld
\end_inset
\shape italic
spherical
\shape default
\begin_inset Quotes erd
\end_inset
models an isotropic 3D distribution.
This distribution corresponds to
\begin_inset Formula
\[
R\left(\mathbf{n}\right)=\frac{1}{4\pi}\,.
\]
\end_inset
It requires no additional parameters.
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename Figures/FigSphericalDistribution.png
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Ellipsoidal
\begin_inset CommandInset label
LatexCommand label
name "subsec:Ellipsoidal"
\end_inset
\end_layout
\begin_layout Standard
The fiber density distribution type
\begin_inset Quotes eld
\end_inset
\shape italic
ellipsoidal
\shape default
\begin_inset Quotes erd
\end_inset
models a generally orthotropic 3D distribution.
It corresponds to
\begin_inset Formula
\[
R\left(\mathbf{n}\right)=C^{-1}\left[\left(\frac{n_{1}}{a}\right)^{2}+\left(\frac{n_{2}}{b}\right)^{2}+\left(\frac{n_{3}}{c}\right)^{2}\right]^{-1/2}\,,
\]
\end_inset
where
\begin_inset Formula $\left(n_{1},n_{2},n_{3}\right)$
\end_inset
are the components of
\begin_inset Formula $\mathbf{n}$
\end_inset
in the local Cartesian basis
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
of each element,
when specified (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
) or the global basis by default;
and
\begin_inset Formula $C$
\end_inset
is calculated to satisfy the integration constraint on
\begin_inset Formula $R\left(\mathbf{n}\right)$
\end_inset
.
The parameters
\begin_inset Formula $\left(a,b,c\right)$
\end_inset
represents the semi-principal axes of the ellipsoid and must be positive.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The semi-principal axes
\begin_inset Formula $\left(a,b,c\right)$
\end_inset
of the ellipsoid
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The value of
\begin_inset Formula $C$
\end_inset
is automatically adjusted to account for the values of the semi-principal axes
\begin_inset Formula $\left(a,b,c\right)$
\end_inset
.
Therefore,
only the relative ratios of these parameters matter.
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename Figures/FigEllipsoidalDistribution.png
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
3,2,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
\begin_inset Formula $\pi-$
\end_inset
Periodic von Mises Distribution
\begin_inset CommandInset label
LatexCommand label
name "subsec:Periodic-von-Mises"
\end_inset
\end_layout
\begin_layout Standard
The fiber density distribution type
\begin_inset Quotes eld
\end_inset
\shape italic
von-Mises-3d
\shape default
\begin_inset Quotes erd
\end_inset
models a transversely isotropic 3D distribution
\begin_inset CommandInset citation
LatexCommand citep
key "Gasser06"
literal "true"
\end_inset
.
It corresponds to
\begin_inset Formula
\[
R\left(\mathbf{n}\right)=\frac{1}{\pi}\sqrt{\frac{b}{2\pi}}\frac{\exp\left(2bn_{1}^{2}\right)}{\mbox{erfi}\left(\sqrt{2b}\right)}\,,
\]
\end_inset
where
\begin_inset Formula $\left(n_{1},n_{2},n_{3}\right)$
\end_inset
are the components of
\begin_inset Formula $\mathbf{n}$
\end_inset
in the local Cartesian basis
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
of each element,
when specified (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
) or the global basis by default;
and
\begin_inset Formula $b$
\end_inset
is the concentration parameter (
\begin_inset Formula $b>0)$
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The concentration parameter
\begin_inset Formula $b$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename Figures/FigPiPeriodicVonMisesDistribution.png
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Circular
\begin_inset CommandInset label
LatexCommand label
name "subsec:Circular"
\end_inset
\end_layout
\begin_layout Standard
The fiber density distribution type
\begin_inset Quotes eld
\end_inset
\shape italic
circular
\shape default
\begin_inset Quotes erd
\end_inset
models a transversely isotropic 2D distribution.
This distribution corresponds to
\begin_inset Formula
\[
R\left(\mathbf{n}\right)=\frac{1}{2\pi}\,.
\]
\end_inset
It requires no additional parameters.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Elliptical
\begin_inset CommandInset label
LatexCommand label
name "subsec:Elliptical"
\end_inset
\end_layout
\begin_layout Standard
The fiber density distribution type
\begin_inset Quotes eld
\end_inset
\shape italic
elliptical
\shape default
\begin_inset Quotes erd
\end_inset
models an orthotropic 2D distribution.
This distribution corresponds to
\begin_inset Formula
\[
R\left(\mathbf{n}\right)=C^{-1}\left[\left(\frac{n_{1}}{a}\right)^{2}+\left(\frac{n_{2}}{b}\right)^{2}\right]^{-1/2}
\]
\end_inset
where
\begin_inset Formula $\left(n_{1},n_{2},n_{3}\right)$
\end_inset
are the components of
\begin_inset Formula $\mathbf{n}$
\end_inset
in the local Cartesian basis
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
of each element,
when specified (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
) or the global basis by default,
implying that the elliptical distribution lies in the
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2}\right\} $
\end_inset
plane;
and
\begin_inset Formula $\left(a,b\right)$
\end_inset
are the semi-principal axes of the ellipse.
Here,
\begin_inset Formula $C=4bK\left(e\right)$
\end_inset
where
\begin_inset Formula $K$
\end_inset
is the complete elliptic integral of the first kind and
\begin_inset Formula
\[
e=\sqrt{1-\frac{b^{2}}{a^{2}}}
\]
\end_inset
is the ellipse eccentricity.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The semi-principal axis
\begin_inset Formula $a$
\end_inset
of the ellipse
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The semi-principal axis
\begin_inset Formula $b$
\end_inset
of the ellipse
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename Figures/FigEllipticalDistribution.png
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
8
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
von Mises Distribution
\begin_inset CommandInset label
LatexCommand label
name "subsec:von-Mises-Distribution"
\end_inset
\end_layout
\begin_layout Standard
The fiber density distribution type
\begin_inset Quotes eld
\end_inset
\shape italic
von-Mises-2d
\shape default
\begin_inset Quotes erd
\end_inset
models an orthotropic 2D distribution.
This distribution corresponds to
\begin_inset Formula
\[
R\left(\mathbf{n}\right)=\frac{\exp\left[b\left(2n_{1}^{2}-1\right)\right]}{2\pi I_{0}\left(b\right)}
\]
\end_inset
where
\begin_inset Formula $\left(n_{1},n_{2},n_{3}\right)$
\end_inset
are the components of
\begin_inset Formula $\mathbf{n}$
\end_inset
in the local Cartesian basis
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
of each element,
when specified (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
) or the global basis by default,
with the distribution lying in the
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2}\right\} $
\end_inset
plane;
and
\begin_inset Formula $b$
\end_inset
is the concentration parameter (
\begin_inset Formula $b>0)$
\end_inset
.
\begin_inset Formula $I_{0}$
\end_inset
is the modified Bessel function of the first kind of order 0.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The concentration parameter
\begin_inset Formula $b$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename Figures/FigVonMisesDistribution.png
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Scheme
\begin_inset CommandInset label
LatexCommand label
name "subsec:Scheme"
\end_inset
\end_layout
\begin_layout Standard
A numerical integration scheme is needed in the specification of a continuous fiber distribution to perform the integration over the unit sphere (3D) or the unit circle (2D).
Use the uncoupled version of the scheme when modeling an uncoupled continuous fiber distribution.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Gauss-Kronrod Trapezoidal Rule
\begin_inset CommandInset label
LatexCommand label
name "subsec:Gauss-Kronrod-Trapezoidal-Rule"
\end_inset
\end_layout
\begin_layout Standard
The scheme type for the Gauss-Kronrod trapezoidal rule is
\shape italic
\begin_inset Quotes eld
\end_inset
fibers-3d-gkt
\begin_inset Quotes erd
\end_inset
\shape default
for unconstrained and uncoupled continuous fiber distributions.
This integration rule should only be used with 3D fiber density distributions.
This scheme automatically limits the range of integration to fibers that are in tension
\begin_inset CommandInset citation
LatexCommand citep
key "Hou16"
literal "true"
\end_inset
.
A Gauss-Kronrod quadrature rule is employed for integration across latitudes of the unit sphere.
A trapezoidal rule is used for integration across longitudes.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Number of integration points across latitudes
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Number of integration points across longitudes
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The parameter must be one of the values 7,
11,
15,
19,
23 and 27.
The parameter may be any number greater than 0.
Odd values for produce more accurate results than even values.
A recommended combination is nph=7 and nth=31.
The total number of integration points is
\begin_inset Formula $N=$
\end_inset
nph ×nth.
Increasing values of
\begin_inset Formula $N$
\end_inset
require increasing computational time.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
7
\end_layout
\begin_layout LyX-Code
31
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Finite Element Integration Rule
\begin_inset CommandInset label
LatexCommand label
name "subsec:Finite-Element-Integration"
\end_inset
\end_layout
\begin_layout Standard
The scheme type for the finite element integration rule is
\shape italic
\begin_inset Quotes eld
\end_inset
fibers-3d-fei
\begin_inset Quotes erd
\end_inset
\shape default
for unconstrained and uncoupled continuous fiber distributions.
This integration rule should only be used with 3D fiber density distributions.
This scheme discretizes the unit sphere into a set of
\begin_inset Formula $N$
\end_inset
spherical triangles of nearly identical surface areas.
The unit normal
\begin_inset Formula $\mathbf{n}$
\end_inset
passes through the centroid of each surface element.
The integration is performed as a summation over
\begin_inset Formula $N$
\end_inset
.
For each direction
\begin_inset Formula $\mathbf{n}$
\end_inset
the stress is evaluated only if the fiber bundle is in tension along that direction.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
the number of integration points
\begin_inset Formula $N$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The parameter must be one of the values 20,
34,
60,
74,
196,
210,
396,
410,
596,
610,
796,
810,
996,
1010,
1196,
1210,
1396,
1410,
1596,
1610,
and 1796.
A conservative choice for producing accurate results under general loading conditions is
\begin_inset Formula $N=$
\end_inset
1610.
Increasing values of
\begin_inset Formula $N$
\end_inset
require increasing computational time.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Graphics
filename Figures/FigFiniteElementIntegration.png
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1610
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Trapezoidal Rule
\begin_inset CommandInset label
LatexCommand label
name "subsec:Trapezoidal-Rule"
\end_inset
\end_layout
\begin_layout Standard
The scheme type for the trapezoidal integration rule is
\shape italic
\begin_inset Quotes eld
\end_inset
fibers-2d-trapezoidal
\begin_inset Quotes erd
\end_inset
\shape default
for unconstrained and uncoupled continuous fiber distributions.
This integration rule should only be used with 2D fiber density distributions.
This scheme discretizes the unit circle into a set of
\begin_inset Formula $N$
\end_inset
circular arcs of identical lengths.
The unit normal
\begin_inset Formula $\mathbf{n}$
\end_inset
passes through the centroid of each arc element.
The integration is performed as a summation over
\begin_inset Formula $N$
\end_inset
.
For each direction
\begin_inset Formula $\mathbf{n}$
\end_inset
the stress is evaluated only if the fiber bundle is in tension along that direction.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Number of integration points
\begin_inset Formula $N$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The parameter may be any number greater than 0.
Odd values for produce more accurate results than even values.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
31
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Viscoelastic Solids
\begin_inset CommandInset label
LatexCommand label
name "sec:Viscoelastic-Solids"
\end_inset
\end_layout
\begin_layout Subsection
Uncoupled Viscoelastic Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Uncoupled-Viscoelastic-Materials"
\end_inset
\end_layout
\begin_layout Standard
These materials produce a viscoelastic response only for the deviatoric stress response.
They must be used whenever the elastic response is uncoupled,
as in the materials described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Materials"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
The material type for these materials is
\begin_inset Quotes eld
\end_inset
uncoupled viscoelastic
\begin_inset Quotes erd
\end_inset
.
The following parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
default value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
units
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
viscoelastic coefficient
\begin_inset Formula $\gamma_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
relaxation times
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
viscoelastic coefficients
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
elastic component (must be an uncoupled elastic solid)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\mathbf{S}\left(t\right)=\int\limits_{-\infty}^{t}G\left(t-s\right)\frac{d\mathbf{S}^{e}}{ds}\,ds
\]
\end_inset
For a uncoupled viscoelastic material,
the second Piola Kirchhoff stress can be written as follows
\begin_inset CommandInset citation
LatexCommand citep
key "Puso98"
literal "true"
\end_inset
:
\begin_inset Formula
\[
\mathbf{S}\left(t\right)=pJ\,\mathbf{C}^{-1}+J^{-2/3}\int\limits_{-\infty}^{t}G\left(t-s\right)\frac{d\left(\Dev\left[\mathbf{\tilde{S}}^{e}\right]\right)}{ds}\,ds\,,
\]
\end_inset
where
\begin_inset Formula $\mathbf{\tilde{S}}^{e}$
\end_inset
is the elastic stress derived from
\begin_inset Formula $\tilde{W}\left(\mathbf{\tilde{C}}\right)$
\end_inset
(see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Materials"
nolink "false"
\end_inset
) and
\begin_inset Formula $G$
\end_inset
is the relaxation function.
It is assumed that the relaxation function is given by the following discrete relaxation spectrum:
\begin_inset Formula
\[
G\left(t\right)=\gamma_{0}+\sum\limits_{i=1}^{N}\gamma_{i}\exp\left(-t/\tau_{i}\right),
\]
\end_inset
Note that the user does not have to enter all the
\begin_inset Formula $\tau_{i}$
\end_inset
and
\begin_inset Formula $\gamma_{i}$
\end_inset
coefficients.
Instead,
only the values that are used need to be entered.
So,
if
\begin_inset Formula $N$
\end_inset
is 2,
only
\begin_inset Formula $\tau_{1}$
\end_inset
,
\begin_inset Formula $\tau_{2}$
\end_inset
,
\begin_inset Formula $\gamma_{1}$
\end_inset
and
\begin_inset Formula $\gamma_{2}$
\end_inset
have to be entered.
\end_layout
\begin_layout Standard
The
\shape italic
elastic
\shape default
parameter describes the elastic material as given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Materials"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.95
\end_layout
\begin_layout LyX-Code
0.01
\end_layout
\begin_layout LyX-Code
100
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Unconstrained Viscoelastic Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Unconstrained-Viscoelastic-Materi"
\end_inset
\end_layout
\begin_layout Standard
The material type for viscoelastic materials is
\begin_inset Quotes eld
\end_inset
\shape italic
viscoelastic
\begin_inset Quotes erd
\end_inset
\shape default
.
The following parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
parameter
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
description
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
default value
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
units
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
viscoelastic coefficient
\begin_inset Formula $\gamma_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
relaxation times
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
-
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
viscoelastic coefficients
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
elastic component (must be an unconstrained elastic solid)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For a viscoelastic material,
the second Piola Kirchhoff stress can be written as follows
\begin_inset CommandInset citation
LatexCommand citep
key "Puso98"
literal "true"
\end_inset
:
\begin_inset Formula
\[
\mathbf{S}\left(t\right)=\int\limits_{-\infty}^{t}G\left(t-s\right)\frac{d\mathbf{S}^{e}}{ds}\,ds\,,
\]
\end_inset
where
\begin_inset Formula $\mathbf{S}^{e}$
\end_inset
is the elastic stress and
\begin_inset Formula $G$
\end_inset
is the relaxation function.
It is assumed that the relaxation function is given by the following discrete relaxation spectrum:
\begin_inset Formula
\[
G\left(t\right)=\gamma_{0}+\sum\limits_{i=1}^{N}\gamma_{i}\exp\left(-t/\tau_{i}\right)\,,
\]
\end_inset
Note that the user does not have to enter all the
\begin_inset Formula $\tau_{i}$
\end_inset
and
\begin_inset Formula $\gamma_{i}$
\end_inset
coefficients.
Instead,
only the values that are used need to be entered.
So,
if
\begin_inset Formula $N$
\end_inset
is 2,
only
\begin_inset Formula $\tau_{1}$
\end_inset
,
\begin_inset Formula $\tau_{2}$
\end_inset
,
\begin_inset Formula $\gamma_{1}$
\end_inset
and
\begin_inset Formula $\gamma_{2}$
\end_inset
have to be entered.
\end_layout
\begin_layout Standard
The
\shape italic
elastic
\shape default
parameter describes the elastic material as given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.95
\end_layout
\begin_layout LyX-Code
0.01
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Reactive Viscoelastic Solid
\begin_inset CommandInset label
LatexCommand label
name "sec:Reactive-Viscoelastic-Solid"
\end_inset
\end_layout
\begin_layout Standard
Reactive viscoelasticity models a material as a mixture of strong bonds,
which are permanent,
and weak bonds,
which break and reform in response to loading
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian15"
literal "true"
\end_inset
.
Strong bonds produce the equilibrium elastic response,
whereas weak bonds produce the transient viscous response.
For a compressive reactive viscoelastic solid,
the strain energy density is given by
\begin_inset Formula
\begin{equation}
\Psi_{r}\left(\mathbf{F}\right)=\Psi_{r}^{e}\left(\mathbf{F}\right)+\sum\limits_{u}w^{u}\Psi_{0}^{b}\left(\mathbf{F}^{u}\right)\label{eq:rvs-sed}
\end{equation}
\end_inset
where
\begin_inset Formula $\Psi_{r}^{e}$
\end_inset
is the strain energy density of strong bonds and
\begin_inset Formula $\Psi_{0}^{b}$
\end_inset
is the strain energy density of weak bonds,
when they all belong to the same generation.
\begin_inset Formula $\mathbf{F}$
\end_inset
is the deformation gradient of the strong bonds and the initial weak bond generation,
wherease
\begin_inset Formula $\mathbf{F}^{u}$
\end_inset
is the relative deformation gradient for the
\begin_inset Formula $u-$
\end_inset
generation weak bonds,
such that
\begin_inset Formula $\mathbf{F}^{u}\left(u\right)=\mathbf{R}\left(u\right)$
\end_inset
(the rotation tensor in the polar decomposition of
\begin_inset Formula $\mathbf{F}$
\end_inset
) at time
\begin_inset Formula $u$
\end_inset
,
thus
\begin_inset Formula $\mathbf{F}^{u}\left(t\right)=\mathbf{F}\left(t\right)\cdot\mathbf{U}^{-1}\left(u\right)$
\end_inset
,
where
\begin_inset Formula $\mathbf{U}$
\end_inset
is the right-stretch tensor of
\begin_inset Formula $\mathbf{F}=\mathbf{R}\cdot\mathbf{U}$
\end_inset
.
In this expression,
\begin_inset Formula $w^{u}\left(\mathbf{X},t\right)$
\end_inset
is the mass fraction of
\begin_inset Formula $u-$
\end_inset
generation weak bonds,
which evolves over time as described next.
The summation is taken over all generations
\begin_inset Formula $u$
\end_inset
that were created prior to the current time
\begin_inset Formula $t$
\end_inset
.
\end_layout
\begin_layout Standard
Any number of valid solutions may exist for
\begin_inset Formula $w^{u}$
\end_inset
,
based on constitutive assumptions for the weak bond mass fraction supply
\begin_inset Formula $\hat{w}^{u}$
\end_inset
.
In particular,
for
\begin_inset Formula $u-$
\end_inset
generation bonds reforming in an unloaded state during the time interval
\begin_inset Formula $u\leqslant t
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Bond kinetics type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Strain invariants that trigger weak bond breakage and reformation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Bond mass fraction threshold
\begin_inset Formula $w_{\min}$
\end_inset
for triggering new generation or merging and culling oldest generation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Strain threshold
\begin_inset Formula $e_{\min}$
\end_inset
for triggering new generation (
\begin_inset Formula $e_{\min}\ge0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Elastic (strong bond) material
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Weak bond material
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Reduced relaxation function
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Weak bond recruitment function
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The parameter should be set to 1 for Type I bond kinetics or 2 for Type II bond kinetics.
The parameter should be set 0 when weak bonds break and reform in response to any form of the strain;
it should be set to 1 when the trigger is distortional strain;
and it should be set to 2 when the trigger is dilatational strain,
\begin_inset Formula
\begin{equation}
\text{trigger}=\begin{cases}
0\text{ for any strain} & \left\Vert \Delta\mathbf{E}\right\Vert \\
1\text{ for distortional strain} & \left\Vert \dev\Delta\boldsymbol{\eta}\right\Vert \\
2\text{ for dilatational strain} & \left|\ln\left(\det\Delta\mathbf{F}\right)\right|
\end{cases}\label{eq:rvs-trigger}
\end{equation}
\end_inset
where
\begin_inset Formula $\Delta\mathbf{E}=\frac{1}{2}\left(\Delta\mathbf{F}^{T}\cdot\Delta\mathbf{F}-\mathbf{I}\right)$
\end_inset
is the incremental Lagrange strain,
\begin_inset Formula $\Delta\boldsymbol{\eta}=\ln\Delta\mathbf{V}$
\end_inset
is the incremental natural strain,
where
\begin_inset Formula $\Delta\mathbf{V}$
\end_inset
is the left stretch tensor of
\begin_inset Formula $\Delta\mathbf{F}$
\end_inset
,
and
\begin_inset Formula $\Delta\mathbf{F}=\mathbf{F}\left(t_{n+1}\right)\cdot\mathbf{F}^{-1}\left(t^{m}\right)$
\end_inset
,
where
\begin_inset Formula $t_{n+1}$
\end_inset
is the current time and
\begin_inset Formula $t^{m}$
\end_inset
is the birth time of the most recent weak bond generation.
\end_layout
\begin_layout Standard
The and materials may be selected from the list of unconstrained elastic materials given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
nolink "false"
\end_inset
(for
\begin_inset Quotes eld
\end_inset
reactive viscoelastic
\begin_inset Quotes erd
\end_inset
) or from the list of uncoupled elastic materials in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Materials"
nolink "false"
\end_inset
(for
\begin_inset Quotes eld
\end_inset
uncoupled reactive viscoelastic
\begin_inset Quotes erd
\end_inset
).
The material may be selected from the list of reduced relaxation functions provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Relaxation-Functions"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
The material may be selected from the list of weak bond recruitment functions
\begin_inset Formula $F\left(\Xi\right)$
\end_inset
provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Cumulative-Distribution-Function"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
This optional material specification can be used to model nonlinear viscoelasticity where the weak bond response becomes more significant with increasing strain,
substituting eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rvs-sed"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
with
\begin_inset Formula
\begin{equation}
\Psi_{r}\left(\mathbf{F}\right)=\Psi_{r}^{e}\left(\mathbf{F}\right)+\sum\limits_{u}w^{u}F\left(\Xi\left(u\right)\right)\Psi_{0}^{b}\left(\mathbf{F}^{u}\right)\,.\label{eq:rvs-reformed-with-recruitment}
\end{equation}
\end_inset
Here,
\begin_inset Formula $\Xi$
\end_inset
is a measure of the current state of strain,
similar to the measures shown in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rvs-trigger"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
Thus,
\begin_inset Formula $\Xi=\left\Vert \mathbf{E}\right\Vert $
\end_inset
,
or
\begin_inset Formula $\Xi=\left\Vert \dev\boldsymbol{\eta}\right\Vert $
\end_inset
,
or
\begin_inset Formula $\Xi=\left|\ln\left(\det\mathbf{F}\right)\right|$
\end_inset
,
based on the choice of the parameter.
In effect,
\begin_inset Formula $F\left(\Xi\left(u\right)\right)$
\end_inset
enhances the weak bond response of generation
\begin_inset Formula $u$
\end_inset
.
\end_layout
\begin_layout Standard
The parameters and can be adjusted to improve computational efficiency by reducing the number of generations
\begin_inset Formula $u$
\end_inset
in an analysis.
In practice,
the value of should be no greater than one-hundredth of the equilibrium strain in a loading configuration.
The parameter must be in the range
\begin_inset Formula $0\le w_{\min}\le1$
\end_inset
.
In practice,
a good balance between accuracy and efficiency is achieved by using
\begin_inset Formula $w_{\min}\le0.05$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0.05
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
4
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
30
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsection
Relaxation Functions
\begin_inset CommandInset label
LatexCommand label
name "subsec:Relaxation-Functions"
\end_inset
\end_layout
\begin_layout Subsubsection
Exponential
\begin_inset CommandInset label
LatexCommand label
name "subsec:Exponential"
\end_inset
\end_layout
\begin_layout Standard
The material type for this relaxation function is
\begin_inset Quotes eld
\end_inset
relaxation-exponential
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The reduced relaxation function for this material type is given by
\begin_inset Formula
\[
g\left(t\right)=e^{-t/\tau}
\]
\end_inset
\end_layout
\begin_layout Subsubsection
Exponential Distortional
\begin_inset CommandInset label
LatexCommand label
name "subsec:Exp-Distortional"
\end_inset
\end_layout
\begin_layout Standard
The material type for this relaxation function is
\begin_inset Quotes eld
\end_inset
relaxation-exp-distortion
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic time
\begin_inset Formula $\tau_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Power exponent
\begin_inset Formula $\alpha$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The reduced relaxation function for this material type is given by
\begin_inset Formula
\[
g\left(\mathbf{F}\left(v\right);t-v\right)=e^{-\left(t-v\right)/\tau\left[K_{2}\left(v\right)\right]}
\]
\end_inset
where
\begin_inset Formula
\[
\tau\left(K_{2}\left(v\right)\right)=\tau_{0}+\tau_{1}\cdot\left(K_{2}\left(v\right)\right)^{\alpha}
\]
\end_inset
In general,
\begin_inset Formula $K_{2}=\left|\dev\boldsymbol{\eta}\right|$
\end_inset
where
\begin_inset Formula $\boldsymbol{\eta}=\ln\mathbf{V}$
\end_inset
is the spatial natural (left Hencky) strain tensor and
\begin_inset Formula $\mathbf{V}$
\end_inset
is the left stretch tensor.
\begin_inset Formula $K_{2}$
\end_inset
is evaluated at the time
\begin_inset Formula $v$
\end_inset
when weak bonds from the
\begin_inset Formula $u-$
\end_inset
generation start breaking.
\end_layout
\begin_layout Subsubsection
Exponential Distortional User-Specified
\begin_inset CommandInset label
LatexCommand label
name "subsec:Exp-Dist-User"
\end_inset
\end_layout
\begin_layout Standard
The material type for this relaxation function is
\begin_inset Quotes eld
\end_inset
relaxation-exp-dist-user
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The reduced relaxation function for this material type is given by
\begin_inset Formula
\[
g\left(\mathbf{F}\left(v\right);t-v\right)=e^{-\left(t-v\right)/\tau\left[K_{2}\left(v\right)\right]}
\]
\end_inset
where
\begin_inset Formula $\tau\left(K_{2}\left(v\right)\right)$
\end_inset
is given as a mathematical expression (type=
\begin_inset Quotes qrd
\end_inset
math
\begin_inset Quotes qrd
\end_inset
),
or as a loadcurve (type=
\begin_inset Quotes qrd
\end_inset
point
\begin_inset Quotes qrd
\end_inset
).
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.13
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.52
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0+2.0*(K2^0.5)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
25
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.025
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.025
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
SMOOTH
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.00,
1.00
\end_layout
\begin_layout LyX-Code
0.25,
2.00
\end_layout
\begin_layout LyX-Code
0.50,
2.41
\end_layout
\begin_layout LyX-Code
0.75,
2.73
\end_layout
\begin_layout LyX-Code
1.00,
3.00
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Exponential Continuous Spectrum
\begin_inset CommandInset label
LatexCommand label
name "subsec:CSexp"
\end_inset
\end_layout
\begin_layout Standard
This relaxation function is derived from a continuous exponential relaxation spectrum,
see
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Theory Manual}}
\end_layout
\end_inset
.
The material type for this relaxation function is
\begin_inset Quotes eld
\end_inset
relaxation-CSexp
\begin_inset Quotes erd
\end_inset
.
The following material parameter needs to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This parameter must satisfy
\begin_inset Formula $\tau>0$
\end_inset
.
The reduced relaxation function for this material type is given by
\begin_inset Formula
\[
g\left(t\right)=2\sqrt{\frac{t}{\tau}}K_{1}\left(2\sqrt{\frac{t}{\tau}}\right)
\]
\end_inset
where
\begin_inset Formula $K_{1}\left(z\right)$
\end_inset
is the modified Bessel function of the second kind,
of order 1.
\end_layout
\begin_layout Subsubsection
Exponential Continuous Spectrum Distortional User-Specified
\begin_inset CommandInset label
LatexCommand label
name "subsec:CSexp-dist-user"
\end_inset
\end_layout
\begin_layout Standard
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:CSexp"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for the description of this relaxation function.
When the material parameters vary with the distortional strain
\begin_inset Formula $K_{2}$
\end_inset
,
the material type is
\begin_inset Quotes eld
\end_inset
relaxation-CSexp-dist-user
\begin_inset Quotes erd
\end_inset
.
The following material parameter needs to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The definition of
\begin_inset Formula $K_{2}$
\end_inset
is given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Exp-Dist-User"
nolink "false"
\end_inset
.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Exp-Dist-User"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for examples of how to specify these functions.
\end_layout
\begin_layout Subsubsection
Fung
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fung"
\end_inset
\end_layout
\begin_layout Standard
This relaxation function,
which is derived from a continuous relaxation spectrum,
was introduced by Fung
\begin_inset CommandInset citation
LatexCommand citep
key "Fung81"
literal "false"
\end_inset
.
The material type for this relaxation function is
\begin_inset Quotes eld
\end_inset
relaxation-Fung
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau_{2}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
These parameters must satisfy
\begin_inset Formula $\tau_{2}>\tau_{1}$
\end_inset
.
The reduced relaxation function for this material type is given by
\begin_inset Formula
\[
g\left(t\right)=\frac{\tau_{2}e^{-t/\tau_{2}}-\tau_{1}e^{-t/\tau_{1}}+t\left[\Ei\left(-\frac{t}{\tau_{2}}\right)-\Ei\left(-\frac{t}{\tau_{1}}\right)\right]}{\tau_{2}-\tau_{1}}
\]
\end_inset
where
\begin_inset Formula $\Ei\left(\cdot\right)$
\end_inset
is the exponential integral function.
\end_layout
\begin_layout Subsubsection
Malkin
\begin_inset CommandInset label
LatexCommand label
name "subsec:Malkin"
\end_inset
\end_layout
\begin_layout Standard
This relaxation function is derived from the continuous relaxation spectrum given in
\begin_inset CommandInset citation
LatexCommand citep
key "Malkin06"
literal "false"
\end_inset
.
The material type for this relaxation function is
\begin_inset Quotes eld
\end_inset
relaxation-Malkin
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau_{2}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Power exponent
\begin_inset Formula $\beta$
\end_inset
(
\begin_inset Formula $\ge1$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
These parameters must satisfy
\begin_inset Formula $\tau_{2}>\tau_{1}>0$
\end_inset
.
When
\begin_inset Formula $\beta>1$
\end_inset
,
the reduced relaxation function for this material type is given by
\begin_inset Formula
\[
g\left(t\right)=\frac{\left(\beta-1\right)t^{1-\beta}}{\tau_{1}^{1-\beta}-\tau_{2}^{1-\beta}}\left[\Gamma\left(\beta-1,\frac{t}{\tau_{2}}\right)-\Gamma\left(\beta-1,\frac{t}{\tau_{1}}\right)\right]
\]
\end_inset
where
\begin_inset Formula $\Gamma\left(a,z\right)$
\end_inset
is the incomplete gamma function.
In the limit as
\begin_inset Formula $\beta\to1$
\end_inset
this function reduces to the form given by
\begin_inset CommandInset citation
LatexCommand citep
key "Fung72"
literal "false"
\end_inset
,
\begin_inset Formula
\[
g\left(t\right)=\frac{\Gamma\left(0,\frac{t}{\tau_{2}}\right)-\Gamma\left(0,\frac{t}{\tau_{1}}\right)}{\ln\frac{\tau_{2}}{\tau_{1}}}=\frac{\Ei\left(-\frac{t}{\tau_{2}}\right)-\Ei\left(-\frac{t}{\tau_{1}}\right)}{\ln\frac{\tau_{1}}{\tau_{2}}}
\]
\end_inset
where
\begin_inset Formula $\Ei\left(z\right)$
\end_inset
is the exponential integral function.
\end_layout
\begin_layout Subsubsection
Malkin Distortional
\begin_inset CommandInset label
LatexCommand label
name "subsec:Malkin-distortional"
\end_inset
\end_layout
\begin_layout Standard
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Malkin"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for the description of this relaxation function.
When the material parameters vary with the distortional strain
\begin_inset Formula $K_{2}$
\end_inset
according to
\begin_inset Formula
\[
\begin{aligned}\tau_{1}\left(K_{2}\right) & =\tau_{10}+\tau_{11}\exp\left(-\frac{K_{2}}{s_{1}}\right)\\
\tau_{2}\left(K_{2}\right) & =\tau_{20}+\tau_{21}\exp\left(-\frac{K_{2}}{s_{2}}\right)
\end{aligned}
\]
\end_inset
the material type is
\begin_inset Quotes eld
\end_inset
relaxation-Malkin-distortion
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\tau_{10}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\tau_{11}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $s_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\tau_{20}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\tau_{21}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $s_{2}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Poiwer exponent
\begin_inset Formula $\beta$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The definition of
\begin_inset Formula $K_{2}$
\end_inset
is given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Exp-Dist-User"
nolink "false"
\end_inset
.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Exp-Dist-User"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for examples of how to specify these functions.
\end_layout
\begin_layout Subsubsection
Malkin Distortional User-Specified
\begin_inset CommandInset label
LatexCommand label
name "subsec:Malkin-dist-user"
\end_inset
\end_layout
\begin_layout Standard
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Malkin"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for the description of this relaxation function.
When the material parameters vary with the distortional strain
\begin_inset Formula $K_{2}$
\end_inset
,
the material type is
\begin_inset Quotes eld
\end_inset
relaxation-Malkin-dist-user
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau_{2}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Power exponent
\begin_inset Formula $\beta$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The definition of
\begin_inset Formula $K_{2}$
\end_inset
is given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Exp-Dist-User"
nolink "false"
\end_inset
.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Exp-Dist-User"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for examples of how to specify these functions.
\end_layout
\begin_layout Subsubsection
Park
\begin_inset CommandInset label
LatexCommand label
name "subsec:Park"
\end_inset
\end_layout
\begin_layout Standard
The material type for this relaxation function is
\begin_inset Quotes eld
\end_inset
relaxation-Park
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Power exponent
\begin_inset Formula $\beta$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The reduced relaxation function for this material type is given by
\begin_inset Formula
\[
g\left(t\right)=\frac{1}{1+\left(\frac{t}{\tau}\right)^{\beta}}
\]
\end_inset
\end_layout
\begin_layout Subsubsection
Park Distortional
\begin_inset CommandInset label
LatexCommand label
name "subsec:Park-Distortional"
\end_inset
\end_layout
\begin_layout Standard
The material type for this relaxation function is
\begin_inset Quotes eld
\end_inset
relaxation-Park-distortion
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Power exponent at zero strain
\begin_inset Formula $\beta_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Power exponent at zero strain
\begin_inset Formula $\beta_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Power exponent
\begin_inset Formula $\alpha$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The reduced relaxation function for this material type is given by
\begin_inset Formula
\[
g\left(\mathbf{F}\left(v\right);t-v\right)=\frac{1}{1+\left(\frac{t-v}{\tau}\right)^{\beta}}
\]
\end_inset
where
\begin_inset Formula
\[
\tau=\tau_{0}+\tau_{1}\cdot\left(K_{2}\left(v\right)\right)^{\alpha}
\]
\end_inset
and
\begin_inset Formula
\[
\beta=\beta_{0}+\beta_{1}\cdot\left(K_{2}\left(v\right)\right)^{\alpha}
\]
\end_inset
The definition of
\begin_inset Formula $K_{2}\left(v\right)$
\end_inset
is given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Exp-Dist-User"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Subsubsection
Park Distortional User-Specified
\begin_inset CommandInset label
LatexCommand label
name "subsec:Park-Dist-User"
\end_inset
\end_layout
\begin_layout Standard
The material type for this relaxation function is
\begin_inset Quotes eld
\end_inset
relaxation-Park-dist-user
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Power exponent
\begin_inset Formula $\beta$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The reduced relaxation function for this material type is given by
\begin_inset Formula
\[
g\left(\mathbf{F}\left(v\right);t-v\right)=\frac{1}{1+\left(\frac{t-v}{\tau}\right)^{\beta}}
\]
\end_inset
where
\begin_inset Formula $\tau\left(K_{2}\left(v\right)\right)$
\end_inset
and
\begin_inset Formula $\beta\left(K_{2}\left(v\right)\right)$
\end_inset
are user-specified functions,
given either as mathematical expressions or loadcurves.
The definition of
\begin_inset Formula $K_{2}\left(v\right)$
\end_inset
is given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Exp-Dist-User"
nolink "false"
\end_inset
.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Exp-Dist-User"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for examples of how to specify these functions.
\end_layout
\begin_layout Subsubsection
Power
\begin_inset CommandInset label
LatexCommand label
name "subsec:Power"
\end_inset
\end_layout
\begin_layout Standard
The material type for this relaxation function is
\begin_inset Quotes eld
\end_inset
relaxation-power
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Power exponent
\begin_inset Formula $\beta$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The reduced relaxation function for this material type is given by
\begin_inset Formula
\[
g\left(t\right)=\frac{1}{\left(1+\frac{t}{\tau}\right)^{\beta}}
\]
\end_inset
\end_layout
\begin_layout Subsubsection
Power Distortional
\begin_inset CommandInset label
LatexCommand label
name "subsec:Power-Distortional"
\end_inset
\end_layout
\begin_layout Standard
The material type for this relaxation function is
\begin_inset Quotes eld
\end_inset
relaxation-power-distortion
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Power exponent at zero strain
\begin_inset Formula $\beta_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Power exponent at zero strain
\begin_inset Formula $\beta_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Power exponent
\begin_inset Formula $\alpha$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The reduced relaxation function for this material type is given by
\begin_inset Formula
\[
g\left(\mathbf{F}\left(v\right);t-v\right)=\frac{1}{\left(1+\frac{t-v}{\tau}\right)^{\beta}}
\]
\end_inset
where
\begin_inset Formula
\[
\tau=\tau_{0}+\tau_{1}\cdot\left(K_{2}\left(v\right)\right)^{\alpha}
\]
\end_inset
and
\begin_inset Formula
\[
\beta=\beta_{0}+\beta_{1}\cdot\left(K_{2}\left(v\right)\right)^{\alpha}
\]
\end_inset
The definition of
\begin_inset Formula $K_{2}\left(v\right)$
\end_inset
is given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Exp-Dist-User"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Subsubsection
Power
\begin_inset CommandInset label
LatexCommand label
name "subsec:Power-dist-user"
\end_inset
\end_layout
\begin_layout Standard
The material type for this relaxation function is
\begin_inset Quotes eld
\end_inset
relaxation-power-dist-user
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Power exponent
\begin_inset Formula $\beta$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The reduced relaxation function for this material type is given by
\begin_inset Formula
\[
g\left(\mathbf{F}\left(v\right);t-v\right)=\frac{1}{\left(1+\frac{t-v}{\tau}\right)^{\beta}}
\]
\end_inset
where
\begin_inset Formula $\tau\left(K_{2}\left(v\right)\right)$
\end_inset
and
\begin_inset Formula $\beta\left(K_{2}\left(v\right)\right)$
\end_inset
are user-specified functions,
given either as mathematical expressions or loadcurves.
The definition of
\begin_inset Formula $K_{2}\left(v\right)$
\end_inset
is given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Exp-Dist-User"
nolink "false"
\end_inset
.
See Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Exp-Dist-User"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
for examples of how to specify these functions.
\end_layout
\begin_layout Subsubsection
Prony
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prony"
\end_inset
\end_layout
\begin_layout Standard
The material type for this relaxation function is
\begin_inset Quotes eld
\end_inset
relaxation-Prony
\begin_inset Quotes erd
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Weight factor
\begin_inset Formula $\gamma_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\vdots$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\vdots$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\vdots$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Weight factor
\begin_inset Formula $\gamma_{6}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\vdots$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\vdots$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $\vdots$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Characteristic relaxation time
\begin_inset Formula $\tau_{6}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The reduced relaxation function for this material type is given by
\begin_inset Formula
\[
g\left(t\right)=\frac{\sum_{i=1}^{6}\gamma_{i}e^{-t/\tau_{i}}}{\sum_{i=1}^{6}\gamma_{i}}
\]
\end_inset
The coefficients
\begin_inset Formula $\gamma_{i}$
\end_inset
are normalized by
\begin_inset Formula $\sum_{i}\gamma_{i}$
\end_inset
to enforce
\begin_inset Formula $g\left(0\right)=1$
\end_inset
.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Weak Bond Recruitment Functions
\begin_inset CommandInset label
LatexCommand label
name "subsec:Weak-Bond-Recruitment"
\end_inset
\end_layout
\begin_layout Standard
Weak bond recruitment functions make it possible to model highly nonlinear viscoelastic responses,
where the viscous part of the response increases with increasing strain.
\end_layout
\begin_layout Subsubsection
Power
\begin_inset CommandInset label
LatexCommand label
name "subsec:recruitment-power"
\end_inset
\end_layout
\begin_layout Standard
The material type for a power weak bond recruitment function is
\begin_inset Quotes eld
\end_inset
\shape italic
recruitment power
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu_{0}$
\end_inset
(default=1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu_{1}$
\end_inset
(default=0)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Power exponent
\begin_inset Formula $\alpha$
\end_inset
(default=2)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Scale factor
\begin_inset Formula $s$
\end_inset
(default=1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material the recruitment function is given by
\begin_inset Formula
\[
F\left(\Xi\right)=\mu_{0}+\mu_{1}\left(\frac{\Xi}{s}\right)^{\alpha},
\]
\end_inset
where
\begin_inset Formula $\Xi$
\end_inset
is the measure of strain that triggers a new reactive weak bond generation.
This function is unbounded with increasing
\begin_inset Formula $\Xi$
\end_inset
.
Users should typically employ
\begin_inset Formula $\mu_{0}=1$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
0.06
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Exponential
\begin_inset CommandInset label
LatexCommand label
name "subsec:recruitment-exponential"
\end_inset
\end_layout
\begin_layout Standard
The material type for an exponential weak bond recruitment function is
\begin_inset Quotes eld
\end_inset
\shape italic
recruitment exponential
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu_{0}$
\end_inset
(default=1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu_{1}$
\end_inset
(default=0)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Power exponent
\begin_inset Formula $\alpha$
\end_inset
(default=1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Scale factor
\begin_inset Formula $s$
\end_inset
(default=1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material the recruitment function is given by
\begin_inset Formula
\[
F\left(\Xi\right)=\mu_{0}\exp\left(\mu_{1}\left(\frac{\Xi}{s}\right)^{\alpha}\right)
\]
\end_inset
where
\begin_inset Formula $\Xi$
\end_inset
is the measure of strain that triggers a new reactive weak bond generation.
This function is unbounded with increasing
\begin_inset Formula $\Xi$
\end_inset
.
Users should typically employ
\begin_inset Formula $\mu_{0}=1$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
0.06
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Polynomial
\begin_inset CommandInset label
LatexCommand label
name "subsec:recruitment-poly"
\end_inset
\end_layout
\begin_layout Standard
The material type for a polynomial weak bond recruitment function is
\begin_inset Quotes eld
\end_inset
\shape italic
recruitment polynomial
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu_{0}$
\end_inset
(default=1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu_{1}$
\end_inset
(default=0)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu_{2}$
\end_inset
(default=0)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material the recruitment function is given by
\begin_inset Formula
\[
F\left(\Xi\right)=\mu_{0}+\mu_{1}\Xi+\mu_{2}\Xi^{2}
\]
\end_inset
where
\begin_inset Formula $\Xi$
\end_inset
is the measure of strain that triggers a new reactive weak bond generation.
This function is unbounded with increasing
\begin_inset Formula $\Xi$
\end_inset
.
Users should typically employ
\begin_inset Formula $\mu_{0}=1$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
50
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
User
\begin_inset CommandInset label
LatexCommand label
name "subsec:recruitment-user"
\end_inset
\end_layout
\begin_layout Standard
The material type for a user-defined bond recruitment function is
\begin_inset Quotes eld
\end_inset
\shape italic
recruitment user
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify a user function type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material the recruitment function
\begin_inset Formula $F\left(\Xi\right)$
\end_inset
is specified by the user.
It can be a constant,
linear ramp,
mathematical expression,
a series of points,
or a step function.
It is the user's responsibility to ensure that the function starts at 1 and rises monotonically.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
linear
\end_layout
\begin_layout LyX-Code
constant
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,1
\end_layout
\begin_layout LyX-Code
0.063,1
\end_layout
\begin_layout LyX-Code
0.13,1.8
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Log-Normal
\begin_inset CommandInset label
LatexCommand label
name "subsec:recruitment-log-normal"
\end_inset
\end_layout
\begin_layout Standard
The material type for a log-normal recruitment function is
\begin_inset Quotes eld
\end_inset
\shape italic
recruitment log-normal
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu$
\end_inset
(same units as
\begin_inset Formula $\Xi$
\end_inset
,
\begin_inset Formula $\mu>0)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\begin_inset Formula $\Xi$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\sigma$
\end_inset
(
\begin_inset Formula $\sigma>0)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Maximum increase
\begin_inset Formula $r$
\end_inset
in bond recruitment from 1 (default is 0)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material the recruitment function is given by
\begin_inset Formula
\[
F\left(\Xi\right)=1+\frac{r}{2}\text{erfc}\left[-\frac{\ln\left(\Xi/\mu\right)}{\sigma\sqrt{2}}\right]\,.
\]
\end_inset
Its minimum value is
\begin_inset Formula $1$
\end_inset
and its maximum value is
\begin_inset Formula $1+r$
\end_inset
as
\begin_inset Formula $\Xi/\mu\to\infty$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
0.25
\end_layout
\begin_layout LyX-Code
4
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Weibull
\begin_inset CommandInset label
LatexCommand label
name "subsec:recruitment-Weibull"
\end_inset
\end_layout
\begin_layout Standard
The material type for a Weibull recruitment function is
\begin_inset Quotes eld
\end_inset
\shape italic
recruitment Weibull
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu$
\end_inset
(same units as
\begin_inset Formula $\Xi$
\end_inset
,
\begin_inset Formula $\mu>0)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\begin_inset Formula $\Xi$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\alpha$
\end_inset
(
\begin_inset Formula $\alpha>0)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Maximum increase
\begin_inset Formula $r$
\end_inset
in bond recruitment from 1 (default is 0)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material the recruitment functions is given by
\begin_inset Formula
\[
F\left(\Xi\right)=1+r\left(1-\exp\left[-\left(\Xi/\mu\right)^{\alpha}\right]\right)\,.
\]
\end_inset
Its minimum value is
\begin_inset Formula $1$
\end_inset
and its maximum value is
\begin_inset Formula $1+r$
\end_inset
as
\begin_inset Formula $\Xi/\mu\to\infty$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
2.0
\end_layout
\begin_layout LyX-Code
4
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Quintic Polynomial
\begin_inset CommandInset label
LatexCommand label
name "subsec:recruitment-quintic"
\end_inset
\end_layout
\begin_layout Standard
The material type for a quintic polynomial bond recruitment function is
\begin_inset Quotes eld
\end_inset
\shape italic
recruitment quintic
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu_{\min}$
\end_inset
(same units as
\begin_inset Formula $\Xi$
\end_inset
,
\begin_inset Formula $\mu_{\min}>0)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\begin_inset Formula $\Xi$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu_{\max}$
\end_inset
(same units as
\begin_inset Formula $\Xi$
\end_inset
,
\begin_inset Formula $\mu_{\max}>\mu_{\min})$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Maximum increase
\begin_inset Formula $r$
\end_inset
in bond recruitment from 1 (default is 0)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material the bond recruitment function is given by
\begin_inset Formula
\[
F\left(\Xi\right)=\begin{cases}
1 & \Xi\leqslant\mu_{\min}\\
1+rx^{3}\left(10-15x+6x^{2}\right) & \mu_{\min}<\Xi\leqslant\mu_{\max}\\
1+r & \mu_{\max}<\Xi
\end{cases}\,,\quad x=\frac{\Xi-\mu_{\min}}{\mu_{\max}-\mu_{\min}}\,.
\]
\end_inset
Its minimum value is
\begin_inset Formula $1$
\end_inset
and its maximum value is
\begin_inset Formula $1+r$
\end_inset
when
\begin_inset Formula $\Xi\ge\mu_{\text{max}}$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.2
\end_layout
\begin_layout LyX-Code
0.4
\end_layout
\begin_layout LyX-Code
4
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Gamma
\begin_inset CommandInset label
LatexCommand label
name "subsec:recruitment-gamma"
\end_inset
\end_layout
\begin_layout Standard
The material type for a gamma recruitment function is
\begin_inset Quotes eld
\end_inset
\shape italic
recruitment gamma
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\alpha$
\end_inset
(
\begin_inset Formula $\alpha>0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu$
\end_inset
(same units as
\begin_inset Formula $\Xi$
\end_inset
,
\begin_inset Formula $\mu>0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\begin_inset Formula $\Xi$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Maximum increase
\begin_inset Formula $r$
\end_inset
in bond recruitment from 1 (default is 0)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material the bond recruitment functions is given by
\begin_inset Formula
\[
F\left(\Xi\right)=1+r\frac{\gamma\left(\alpha,\Xi/\mu\right)}{\Gamma\left(\alpha,0\right)}\,,
\]
\end_inset
where
\begin_inset Formula $\gamma\left(\alpha,z\right)$
\end_inset
and
\begin_inset Formula $\Gamma\left(\alpha,z\right)$
\end_inset
are the lower and upper incomplete gamma functions,
respectively.
The normalization by
\begin_inset Formula $\Gamma\left(\alpha,0\right)$
\end_inset
ensures that this function is bounded by
\begin_inset Formula $1\le F\left(\Xi\right)\le1+r$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
0.4
\end_layout
\begin_layout LyX-Code
4
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Reactive Damage Mechanics
\begin_inset CommandInset label
LatexCommand label
name "sec:Reactive-Damage-Mechanics"
\end_inset
\end_layout
\begin_layout Standard
A material may accumulate damage over a single cycle or multiple cycles of loading which alters its properties.
In the classical framework of damage mechanics this attenuation of the material properties is described by a single scalar damage variable
\begin_inset Formula $D$
\end_inset
when the material is isotropic (
\begin_inset Formula $0\leqslant D\leqslant1)$
\end_inset
.
For anisotropic materials however,
classical frameworks require that we introduce a function of the fourth-order damage tensor
\begin_inset Formula $\mathcal{D}$
\end_inset
to account for anisotropic damage.
In FEBio,
we use a reactive damage mechanics framework where the elastic response is proportional to the total number of intact bonds in the material and where,
at any given time in the loading history,
\begin_inset Formula $D$
\end_inset
represents the mass fraction of bonds that have broken.
In this reactive framework,
it is possible to also model damage in anisotropic materials by assuming that multiple bond types exist in the material,
each of which may get damaged under different circumstances.
Each bond type
\begin_inset Formula $b$
\end_inset
may be described by a distinct solid constituent within a solid mixture (see Sections
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Solid-Mixture"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Mixture"
nolink "false"
\end_inset
),
each having its own scalar damage variable
\begin_inset Formula $D^{b}$
\end_inset
.
\end_layout
\begin_layout Standard
For a given bond type,
the strain energy density
\begin_inset Formula $\Psi_{r}\left(D,\mathbf{F}\right)$
\end_inset
of a damaged material is given by
\begin_inset Formula
\[
\Psi_{r}=\left(1-D\right)\Psi_{0}\,,
\]
\end_inset
where
\begin_inset Formula $\Psi_{0}\left(\mathbf{F}\right)$
\end_inset
is the strain energy density when all bonds of that type are intact.
Here,
\begin_inset Formula $1-D$
\end_inset
represents the mass fraction of bonds that remains intact.
Similarly,
the Cauchy stress
\begin_inset Formula $\boldsymbol{\sigma}\left(D,\mathbf{F}\right)$
\end_inset
of the damaged material is given by
\begin_inset Formula
\[
\boldsymbol{\sigma}=\left(1-D\right)\boldsymbol{\sigma}_{0}\,,
\]
\end_inset
where
\begin_inset Formula $\boldsymbol{\sigma}_{0}\left(\mathbf{F}\right)$
\end_inset
is the stress in the intact material,
at a given strain,
as derived from
\begin_inset Formula $\Psi_{0}\left(\mathbf{F}\right)$
\end_inset
.
The intact material may be based on any of the elastic materials described in Sections
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Materials"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
The evolution of the damage variable
\begin_inset Formula $D$
\end_inset
is determined by a user-selected scalar damage criterion measure
\begin_inset Formula $\Xi\left(\mathbf{F}\right)$
\end_inset
(
\begin_inset Formula $\Xi$
\end_inset
is the capital form of
\begin_inset Formula $\xi)$
\end_inset
.
For example,
\begin_inset Formula $\Xi\left(\mathbf{F}\right)$
\end_inset
may represent the strain energy density,
or von Mises stress,
or maximum principal normal strain,
etc.
If
\begin_inset Formula $\Xi\left(\mathbf{F}\right)$
\end_inset
exceeds a given threshold at some state of deformation
\begin_inset Formula $\mathbf{F}$
\end_inset
,
then damage may initiate or progress further.
If all bonds fail at a single threshold value
\begin_inset Formula $\Xi_{m}$
\end_inset
,
the material undergoes fracture.
More commonly,
bonds may fail with increasing probability as
\begin_inset Formula $\Xi$
\end_inset
increases over a given range.
Consequently,
the evolution of damage may be based on a user-selected cumulative distribution function (c.d.f.)
\begin_inset Formula $F\left(\Xi\right)$
\end_inset
,
such that
\begin_inset Formula $D\left(t\right)=F\left(\Xi_{m}\right)$
\end_inset
where
\begin_inset Formula $\Xi_{m}$
\end_inset
is the maximum value of
\begin_inset Formula $\Xi$
\end_inset
achieved over the loading history up until the current time
\begin_inset Formula $t$
\end_inset
.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
General Specification of Damage Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:General-Specification-Damage"
\end_inset
\end_layout
\begin_layout Standard
The material types for damage materials are
\shape italic
\begin_inset Quotes eld
\end_inset
elastic damage
\begin_inset Quotes erd
\end_inset
\shape default
and
\shape italic
\begin_inset Quotes eld
\end_inset
uncoupled elastic damage
\begin_inset Quotes erd
\end_inset
\shape default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the elastic material
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the cumulative distribution function
\begin_inset Formula $F\left(\Xi\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the damage criterion
\begin_inset Formula $\Xi$
\end_inset
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The tag encloses a description of the constitutive relation of the intact elastic material and associated material properties,
as may be selected from the list provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
nolink "false"
\end_inset
for unconstrained materials (used with
\shape italic
\begin_inset Quotes eld
\end_inset
elastic damage
\begin_inset Quotes erd
\end_inset
\shape default
) and Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Materials"
nolink "false"
\end_inset
for uncoupled materials (used with
\shape italic
\begin_inset Quotes eld
\end_inset
uncoupled elastic damage
\begin_inset Quotes erd
\end_inset
\shape default
).
The tag encloses a description of the cumulative distribution function and associated material properties,
as may be selected from the list presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Cumulative-Distribution-Function"
nolink "false"
\end_inset
.
The tag encloses a description of the damage criterion,
as may be selected from the list presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Damage-Yield-Criterion"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.13
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
8
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Cumulative Distribution Functions
\begin_inset CommandInset label
LatexCommand label
name "subsec:Cumulative-Distribution-Function"
\end_inset
\end_layout
\begin_layout Standard
Cumulative distribution functions provide the function
\begin_inset Formula $F\left(\Xi\right)$
\end_inset
that determines the evolution of the damage variable
\begin_inset Formula $D$
\end_inset
based on the maximum value of the failure criterion
\begin_inset Formula $\Xi$
\end_inset
up until the current time.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Simo
\begin_inset CommandInset label
LatexCommand label
name "subsec:CDF-Simo"
\end_inset
\end_layout
\begin_layout Standard
\begin_inset CommandInset label
LatexCommand label
name "para:mylabel47"
\end_inset
The material type for Simo's c.d.f.
\begin_inset CommandInset citation
LatexCommand citep
key "Simo87"
literal "true"
\end_inset
is
\begin_inset Quotes eld
\end_inset
\shape italic
CDF Simo
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\alpha$
\end_inset
(same units as
\begin_inset Formula $\Xi$
\end_inset
,
\begin_inset Formula $\alpha>0)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\begin_inset Formula $\Xi$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\beta$
\end_inset
(
\begin_inset Formula $0\leqslant\beta\leqslant1)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material the c.d.f.
is given by
\begin_inset Formula
\[
F\left(\Xi\right)=1-\beta-\left(1-\beta\right)\frac{\alpha}{\Xi}\left(1-e^{-\Xi/\alpha}\right)\,.
\]
\end_inset
Note that
\begin_inset Formula
\[
\lim\limits_{\Xi\to\infty}F\left(\Xi\right)=1-\beta
\]
\end_inset
represents the maximum allowable damage.
Therefore,
\begin_inset Formula $\beta$
\end_inset
regulates the maximum allowable damage,
whereas
\begin_inset Formula $\alpha$
\end_inset
controls the rate at which
\begin_inset Formula $F\left(\Xi\right)$
\end_inset
increases with increasing
\begin_inset Formula $\Xi$
\end_inset
.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Graphics
filename Figures/FigDamageCDFSimo.png
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Log-Normal
\begin_inset CommandInset label
LatexCommand label
name "subsec:CDF-log-normal"
\end_inset
\end_layout
\begin_layout Standard
The material type for a log-normal c.d.f.
is
\begin_inset Quotes eld
\end_inset
\shape italic
CDF log-normal
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu$
\end_inset
(same units as
\begin_inset Formula $\Xi$
\end_inset
,
\begin_inset Formula $\mu>0)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\begin_inset Formula $\Xi$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\sigma$
\end_inset
(
\begin_inset Formula $\sigma>0)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Maximum allowable damage (optional,
default is 1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material the c.d.f.
is given by
\begin_inset Formula
\[
F\left(\Xi\right)=\frac{1}{2}\text{erfc}\left[-\frac{\ln\left(\Xi/\mu\right)}{\sigma\sqrt{2}}\right]\,.
\]
\end_inset
Note that
\begin_inset Formula
\[
F\left(\mu\right)=1/2,
\]
\end_inset
which shows that
\begin_inset Formula $\mu$
\end_inset
is the value of
\begin_inset Formula $\Xi$
\end_inset
at which half of the bonds break.
Here,
\begin_inset Formula $\sigma$
\end_inset
regulates the rate at which damage increases with increasing
\begin_inset Formula $\Xi$
\end_inset
,
with smaller values of
\begin_inset Formula $\sigma$
\end_inset
producing a more rapid increase.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Graphics
filename Figures/FigDamageCDFLogNormal.png
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Weibull
\begin_inset CommandInset label
LatexCommand label
name "subsec:CDF-Weibull"
\end_inset
\end_layout
\begin_layout Standard
The material type for a Weibull c.d.f.
is
\begin_inset Quotes eld
\end_inset
\shape italic
CDF Weibull
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu$
\end_inset
(same units as
\begin_inset Formula $\Xi$
\end_inset
,
\begin_inset Formula $\mu>0)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\begin_inset Formula $\Xi$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\alpha$
\end_inset
(
\begin_inset Formula $\alpha>0)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Maximum allowable damage (optional,
default is 1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material the c.d.f.
is given by
\begin_inset Formula
\[
F\left(\Xi\right)=1-\exp\left[-\left(\Xi/\mu\right)^{\alpha}\right]\,.
\]
\end_inset
Note that
\begin_inset Formula
\[
F\left(\mu\right)=1-e^{-1}\approx0.63\,,
\]
\end_inset
which shows that
\begin_inset Formula $\mu$
\end_inset
is the value of
\begin_inset Formula $\Xi$
\end_inset
at which the fraction
\begin_inset Formula $1-e^{-1}$
\end_inset
of bonds break.
Here,
\begin_inset Formula $\alpha$
\end_inset
regulates the rate at which damage increases with increasing
\begin_inset Formula $\Xi$
\end_inset
,
with higher values of
\begin_inset Formula $\alpha$
\end_inset
producing a more rapid increase.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Graphics
filename Figures/FigDamageCDFWeibull.png
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
5.0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Quintic Polynomial
\begin_inset CommandInset label
LatexCommand label
name "subsec:CDF-quintic"
\end_inset
\end_layout
\begin_layout Standard
The material type for a quintic polynomial c.d.f.
is
\begin_inset Quotes eld
\end_inset
\shape italic
CDF quintic
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu_{\min}$
\end_inset
(same units as
\begin_inset Formula $\Xi$
\end_inset
,
\begin_inset Formula $\mu_{\min}>0)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\begin_inset Formula $\Xi$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu_{\max}$
\end_inset
(same units as
\begin_inset Formula $\Xi$
\end_inset
,
\begin_inset Formula $\mu_{\max}>\mu_{\min})$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Maximum allowable damage (optional,
default is 1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material the c.d.f.
is given by
\begin_inset Formula
\[
F\left(\Xi\right)=\begin{cases}
0 & \Xi\leqslant\mu_{\min}\\
x^{3}\left(10-15x+6x^{2}\right) & \mu_{\min}<\Xi\leqslant\mu_{\max}\\
1 & \mu_{\max}<\Xi
\end{cases}\,,\quad x=\frac{\Xi-\mu_{\min}}{\mu_{\max}-\mu_{\min}}\,.
\]
\end_inset
Note that
\begin_inset Formula
\[
F\left(\frac{1}{2}\left(\mu_{\min}+\mu_{\max}\right)\right)=\frac{1}{2}\,,
\]
\end_inset
which shows that
\begin_inset Formula $\left(\mu_{\min}+\mu_{\max}\right)/2$
\end_inset
is the value of
\begin_inset Formula $\Xi$
\end_inset
at which half of the bonds break.
The range
\begin_inset Formula $\mu_{\max}-\mu_{\min}$
\end_inset
regulates the rate at which damage increases with increasing
\begin_inset Formula $\Xi$
\end_inset
,
with a narrower range producing a more rapid increase.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Graphics
filename Figures/FigDamageCDFQuintic.png
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
1.7
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Gamma
\begin_inset CommandInset label
LatexCommand label
name "subsec:CDF-gamma"
\end_inset
\end_layout
\begin_layout Standard
The material type for a gamma c.d.f.
is
\begin_inset Quotes eld
\end_inset
\shape italic
CDF gamma
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\alpha$
\end_inset
(
\begin_inset Formula $\alpha>0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu$
\end_inset
(same units as
\begin_inset Formula $\Xi$
\end_inset
,
\begin_inset Formula $\mu>0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\begin_inset Formula $\Xi$
\end_inset
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material the c.d.f.
is given by
\begin_inset Formula
\[
F\left(\Xi\right)=\frac{\gamma\left(\alpha,\Xi/\mu\right)}{\Gamma\left(\alpha,0\right)}\,,
\]
\end_inset
where
\begin_inset Formula $\gamma\left(\alpha,z\right)$
\end_inset
and
\begin_inset Formula $\Gamma\left(\alpha,z\right)$
\end_inset
are the lower and upper incomplete gamma functions,
respectively.
The normalization by
\begin_inset Formula $\Gamma\left(\alpha,0\right)$
\end_inset
ensures that this function is bounded by
\begin_inset Formula $0\le F\left(\Xi\right)\le1$
\end_inset
.
The figure below uses
\begin_inset Formula $\mu=0.15$
\end_inset
.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Graphics
filename Figures/FigDamageCDFgamma.png
lyxscale 50
width 4in
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
0.15
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Step
\begin_inset CommandInset label
LatexCommand label
name "subsec:CDF-Step"
\end_inset
\end_layout
\begin_layout Standard
The material type for a step c.d.f.
is
\begin_inset Quotes eld
\end_inset
\shape italic
CDF step
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parameter
\begin_inset Formula $\mu$
\end_inset
(same units as
\begin_inset Formula $\Xi)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\begin_inset Formula $\Xi$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Maximum allowable damage (optional,
default is 1)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material the c.d.f.
is given by
\begin_inset Formula
\[
F\left(\Xi\right)=H\left(\Xi\right)\quad,
\]
\end_inset
where
\begin_inset Formula $H\left(\cdot\right)$
\end_inset
is the Heaviside unit step function.
The step c.d.f.
may be used to model fracture.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Graphics
filename Figures/FigDamageCDFStep.png
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
User
\begin_inset CommandInset label
LatexCommand label
name "subsec:CDF-user"
\end_inset
\end_layout
\begin_layout Standard
The material type for a user-defined CDF is
\begin_inset Quotes eld
\end_inset
\shape italic
CDF user
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specify a user function type
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material the CDF
\begin_inset Formula $F\left(\Xi\right)$
\end_inset
is specified by the user.
It can be a constant,
linear ramp,
mathematical expression,
a series of points,
or a step function.
It is the user's responsibility to ensure that the function rises monotonically from 0 to 1 and does not exceed unity.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
control points
\end_layout
\begin_layout LyX-Code
constant
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0
\end_layout
\begin_layout LyX-Code
0.49,0
\end_layout
\begin_layout LyX-Code
0.5,0
\end_layout
\begin_layout LyX-Code
0.99,0
\end_layout
\begin_layout LyX-Code
1.01,1
\end_layout
\begin_layout LyX-Code
1.49,1
\end_layout
\begin_layout LyX-Code
1.5,1
\end_layout
\begin_layout LyX-Code
2.5,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Damage or Yield Criterion
\begin_inset CommandInset label
LatexCommand label
name "subsec:Damage-Yield-Criterion"
\end_inset
\end_layout
\begin_layout Standard
The damage criterion provides the functional form of
\begin_inset Formula $\Xi\left(\mathbf{F}\right)$
\end_inset
that determines the evolution of damage.
It can also be used to define the yield criterion in the reactive plasticity framework.
All the functions currently modeled in FEBio are defined over the range
\begin_inset Formula $\Xi\in\left[0,\infty\right[$
\end_inset
.
\end_layout
\begin_layout Subsubsection
Simo
\begin_inset CommandInset label
LatexCommand label
name "subsec:DC-Simo"
\end_inset
\end_layout
\begin_layout Standard
The material type for Simo's damage criterion
\begin_inset CommandInset citation
LatexCommand citep
key "Simo87"
literal "true"
\end_inset
is
\begin_inset Quotes eld
\end_inset
\shape italic
DC Simo
\begin_inset Quotes erd
\end_inset
\shape default
.
For this criterion,
\begin_inset Formula
\[
\Xi\left(\mathbf{F}\right)=\sqrt{2\Psi_{0}\left(\mathbf{F}\right)}
\]
\end_inset
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Strain Energy Density
\begin_inset CommandInset label
LatexCommand label
name "subsec:Strain-Energy-Density"
\end_inset
\end_layout
\begin_layout Standard
The material type for strain energy density damage criterion is
\begin_inset Quotes eld
\end_inset
\shape italic
DC strain energy density
\begin_inset Quotes erd
\end_inset
\shape default
.
For this criterion,
\begin_inset Formula
\[
\Xi\left(\mathbf{F}\right)=\Psi_{0}\left(\mathbf{F}\right)
\]
\end_inset
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Specific Strain Energy
\begin_inset CommandInset label
LatexCommand label
name "subsec:Specific-Strain-Energy"
\end_inset
\end_layout
\begin_layout Standard
The material type for specific strain energy damage criterion is
\shape italic
\begin_inset Quotes eld
\end_inset
DC specific strain energy
\begin_inset Quotes erd
\end_inset
\shape default
.
For this criterion,
\begin_inset Formula
\[
\Xi\left(\mathbf{F}\right)=\Psi_{0}\left(\mathbf{F}\right)/\rho
\]
\end_inset
where
\begin_inset Formula $\rho$
\end_inset
is the elastic material's density.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Von Mises Stress
\begin_inset CommandInset label
LatexCommand label
name "subsec:Von-Mises-Stress"
\end_inset
\end_layout
\begin_layout Standard
The material type for von Mises stress damage or yield criterion is
\shape italic
\begin_inset Quotes eld
\end_inset
DC von Mises stress
\begin_inset Quotes erd
\end_inset
\shape default
.
For this criterion,
\begin_inset Formula
\[
\Xi\left(\mathbf{F}\right)=\sqrt{\frac{3}{2}\dev\boldsymbol{\sigma}:\dev\boldsymbol{\sigma}}=\sqrt{\frac{1}{2}\left[\left(\sigma_{1}-\sigma_{2}\right)^{2}+\left(\sigma_{2}-\sigma_{3}\right)^{2}+\left(\sigma_{3}-\sigma_{1}\right)^{2}\right]}
\]
\end_inset
where
\begin_inset Formula $\sigma_{1},\sigma_{2},\sigma_{3}$
\end_inset
are the principal values of
\begin_inset Formula $\boldsymbol{\sigma}_{0}\left(\mathbf{F}\right)$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Maximum Shear Stress
\begin_inset CommandInset label
LatexCommand label
name "subsec:Maximum-Shear-Stress"
\end_inset
\end_layout
\begin_layout Standard
The material type for maximum shear stress damage or yield criterion is
\shape italic
\begin_inset Quotes eld
\end_inset
DC max shear stress
\begin_inset Quotes erd
\end_inset
\shape default
.
For this criterion,
\begin_inset Formula
\[
\Xi\left(\mathbf{F}\right)=\max\left(\frac{\left|\sigma_{1}-\sigma_{2}\right|}{2},\frac{\left|\sigma_{2}-\sigma_{3}\right|}{2},\frac{\left|\sigma_{3}-\sigma_{1}\right|}{2}\right)
\]
\end_inset
where
\begin_inset Formula $\sigma_{1},\sigma_{2},\sigma_{3}$
\end_inset
are the principal values of
\begin_inset Formula $\boldsymbol{\sigma}_{0}\left(\mathbf{F}\right)$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Maximum Normal Stress
\begin_inset CommandInset label
LatexCommand label
name "subsec:Maximum-Normal-Stress"
\end_inset
\end_layout
\begin_layout Standard
The material type for maximum normal stress damage or yield criterion is
\shape italic
\begin_inset Quotes eld
\end_inset
DC max normal stress
\begin_inset Quotes erd
\end_inset
\shape default
.
For this criterion,
\begin_inset Formula
\[
\Xi\left(\mathbf{F}\right)=\max\left(\sigma_{1},\sigma_{2},\sigma_{3}\right)
\]
\end_inset
where
\begin_inset Formula $\sigma_{1},\sigma_{2},\sigma_{3}$
\end_inset
are the principal values of
\begin_inset Formula $\boldsymbol{\sigma}_{0}\left(\mathbf{F}\right)$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Drucker Shear Stress
\begin_inset CommandInset label
LatexCommand label
name "subsec:Drucker-Shear-Stress"
\end_inset
\end_layout
\begin_layout Standard
The material type for the Drucker shear stress criterion is
\emph on
\begin_inset Quotes eld
\end_inset
DC Drucker shear stress
\begin_inset Quotes erd
\end_inset
\emph default
.
It is based on the yield criterion for plasticity introduced in
\begin_inset CommandInset citation
LatexCommand citep
key "Drucker49"
literal "true"
\end_inset
.
For this criterion,
\begin_inset Formula
\[
\Xi\left(\mathbf{F}\right)=k=\left(J_{2}^{3}-cJ_{3}^{2}\right)^{1/6}
\]
\end_inset
where
\begin_inset Formula $J_{2}=\frac{1}{2}\dev\boldsymbol{\sigma}_{0}:\dev\boldsymbol{\sigma}_{0}$
\end_inset
,
\begin_inset Formula $J_{3}=\det\left(\dev\boldsymbol{\sigma}_{0}\right)$
\end_inset
,
\begin_inset Formula $k$
\end_inset
is the yield limit in simple shear and
\begin_inset Formula $c$
\end_inset
is a user-specified non-dimensional material constant which must lie in the range
\begin_inset Formula $-\frac{27}{8}\le c\le\frac{9}{4}$
\end_inset
.
To better understand the meaning of
\begin_inset Formula $k$
\end_inset
,
consider uniaxial loading of a bar which yields at the normal stress value of
\begin_inset Formula $\sigma_{y}$
\end_inset
.
In this case,
\begin_inset Formula
\[
k=\frac{\sigma_{y}}{\sqrt{3}}\left(1-\frac{4}{27}c\right)^{1/6}\quad\frac{\sigma_{y}}{\sqrt{3}}\left(\frac{2}{3}\right)^{1/6}\le k\le\frac{\sigma_{y}}{\sqrt{3}}\left(\frac{3}{2}\right)^{1/6}
\]
\end_inset
In the special case when
\begin_inset Formula $c=0$
\end_inset
the Drucker criterion reduces to the von Mises criterion,
with
\begin_inset Formula $k=\sigma_{y}/\sqrt{3}$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
2.25
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Drucker-Prager Criterion
\begin_inset CommandInset label
LatexCommand label
name "subsec:Drucker-Prager-criterion"
\end_inset
\end_layout
\begin_layout Standard
The material type for the Drucker-Prager criterion is
\emph on
\begin_inset Quotes eld
\end_inset
DC Drucker-Prager
\begin_inset Quotes erd
\end_inset
\emph default
.
It is based on the yield criterion for plasticity introduced in
\begin_inset CommandInset citation
LatexCommand citep
key "Drucker52"
literal "true"
\end_inset
.
For this criterion,
\begin_inset Formula
\[
\Xi\left(\mathbf{F}\right)=\sigma_{e}-b\sigma_{m}
\]
\end_inset
where
\begin_inset Formula $\sigma_{e}$
\end_inset
is the von Mises stress,
\begin_inset Formula $\sigma_{m}=\frac{1}{3}\tr\boldsymbol{\sigma}_{0}$
\end_inset
is the hydrostatic stress,
\begin_inset Formula $b$
\end_inset
is a parameter that depends on the yield (or failure) stress
\begin_inset Formula $\sigma_{t}$
\end_inset
in tension,
and
\begin_inset Formula $\sigma_{c}$
\end_inset
in compression (
\begin_inset Formula $\sigma_{c}\ge0$
\end_inset
),
\begin_inset Formula
\[
b=3\frac{\sigma_{t}-\sigma_{c}}{\sigma_{c}+\sigma_{t}}
\]
\end_inset
This parameter
\begin_inset Formula $b$
\end_inset
is negative when
\begin_inset Formula $\sigma_{c}>\sigma_{t}$
\end_inset
.
In the special case when
\begin_inset Formula $b=0$
\end_inset
the Drucker-Prager criterion reduces to the von Mises criterion.
When used as a plastic yield criterion (see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Plasticity"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
),
the yield stress
\begin_inset Formula $\sigma_{y}$
\end_inset
for this type of material is given by
\begin_inset Formula
\[
\sigma_{y}=2\frac{\sigma_{c}\sigma_{t}}{\sigma_{c}+\sigma_{t}}
\]
\end_inset
which reduces to
\begin_inset Formula $\sigma_{y}=\sigma_{t}$
\end_inset
for uniaxial tension,
\begin_inset Formula $\sigma_{y}=-\sigma_{c}$
\end_inset
in uniaxial compression,
and more generally,
\begin_inset Formula $\sigma_{y}=\sigma_{c}=\sigma_{t}$
\end_inset
when
\begin_inset Formula $\sigma_{t}=\sigma_{c}$
\end_inset
.
The parameter
\begin_inset Formula $a$
\end_inset
and
\begin_inset Formula $b$
\end_inset
are related to the parameters
\begin_inset Formula $A$
\end_inset
and
\begin_inset Formula $B$
\end_inset
appearing on Wikipedia's description of the
\begin_inset CommandInset href
LatexCommand href
name "Drucker-Prager yield criterion"
target "https://en.wikipedia.org/wiki/Drucker–Prager_yield_criterion"
literal "false"
\end_inset
via
\begin_inset Formula
\[
\begin{aligned}a & =\sqrt{3}A & b & =3\sqrt{3}B\end{aligned}
\]
\end_inset
Given these relationships,
users may consult that web page for finding the relation between these parameters and cohesion
\begin_inset Formula $c$
\end_inset
and angle of internal friction
\begin_inset Formula $\phi$
\end_inset
(as well as the
\begin_inset CommandInset href
LatexCommand href
name "Mohr-Coulomb yield surface"
target "https://en.wikipedia.org/wiki/Mohr–Coulomb_theory#Typical_values_of_cohesion_and_angle_of_internal_friction"
literal "false"
\end_inset
).
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
-1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Deshpande-Fleck Criterion
\begin_inset CommandInset label
LatexCommand label
name "subsec:Deshpande-Fleck-criterion"
\end_inset
\end_layout
\begin_layout Standard
The material type for the Deshpande-Fleck criterion is
\emph on
\begin_inset Quotes eld
\end_inset
DC Deshpande-Fleck
\begin_inset Quotes erd
\end_inset
\emph default
.
It is based on the yield criterion for plasticity introduced in
\begin_inset CommandInset citation
LatexCommand citep
key "Deshpande01"
literal "true"
\end_inset
.
For this criterion,
we let
\begin_inset Formula
\[
\Xi\left(\mathbf{F}\right)=\sqrt{\frac{\sigma_{e}^{2}+\left(3\beta\sigma_{m}\right)^{2}}{1+\beta^{2}}}
\]
\end_inset
where
\begin_inset Formula $\sigma_{e}$
\end_inset
is the von Mises stress,
\begin_inset Formula $\sigma_{m}=\frac{1}{3}\tr\boldsymbol{\sigma}_{0}$
\end_inset
is the hydrostatic stress,
\begin_inset Formula $\beta$
\end_inset
is a material parameter that controls the contribution of the hydrostatic stress to this criterion (
\begin_inset Formula $\beta=0$
\end_inset
recovers the von Mises yield criterion).
This criterion was introducted to model yielding of polymer foams,
for which Deshpande and Fleck recommended using
\begin_inset Formula $\beta=\nicefrac{1}{3}$
\end_inset
.
On
\begin_inset CommandInset href
LatexCommand href
name "Wikipedia"
target "https://en.wikipedia.org/wiki/Drucker–Prager_yield_criterion#Deshpande–Fleck_yield_criterion_or_isotropic_foam_yield_criterion"
literal "false"
\end_inset
,
this criterion is described as a modification of the Drucker-Prager criterion,
but note that Deshpande and Fleck describe this material model as
\begin_inset Quotes eld
\end_inset
phenomenological
\begin_inset Quotes erd
\end_inset
,
i.e.,
intended to fit experimental data well,
though they do suggest that
\begin_inset Formula $3\beta$
\end_inset
represents the ratio of hydrostatic strength to shear strength.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.3333
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Maximum Normal Lagrange Strain
\begin_inset CommandInset label
LatexCommand label
name "subsec:Maximum-Normal-Lagrange"
\end_inset
\end_layout
\begin_layout Standard
The material type for maximum normal Lagrange strain damage criterion is
\shape italic
\begin_inset Quotes eld
\end_inset
DC max normal Lagrange strain
\begin_inset Quotes erd
\end_inset
\shape default
.
For this criterion,
\begin_inset Formula
\[
\Xi\left(\mathbf{F}\right)=\max\left(E_{1},E_{2},E_{3}\right)
\]
\end_inset
where
\begin_inset Formula $E_{1},E_{2},E_{3}$
\end_inset
are the principal values of
\begin_inset Formula $\mathbf{E}=\left(\mathbf{F}^{T}\cdot\mathbf{F}-\mathbf{I}\right)/2$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Octahedral Shear Strain
\begin_inset CommandInset label
LatexCommand label
name "subsec:Octahedral-Shear-Strain"
\end_inset
\end_layout
\begin_layout Standard
The material type for octahedral strain damage criterion is
\shape italic
\begin_inset Quotes eld
\end_inset
DC octahedral shear strain
\begin_inset Quotes erd
\end_inset
\shape default
.
For this criterion,
\begin_inset Formula
\[
\Xi\left(\mathbf{F}\right)=\sqrt{\frac{2}{3}\dev\mathbf{E}:\dev\mathbf{E}}
\]
\end_inset
where
\begin_inset Formula $\mathbf{E}$
\end_inset
is the Lagrange strain tensor.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Reactive Fatigue
\begin_inset CommandInset label
LatexCommand label
name "sec:Reactive-Fatigue"
\end_inset
\end_layout
\begin_layout Standard
Reactive fatigue is a framework that leverages the reactive damage framework described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Damage-Mechanics"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
In reactive damage,
the intact bonds of an elastic material may break upon loading,
causing damage.
This single reactive process governs reactive damage.
In reactive fatigue we assume that three reactions may take place simultaneously:
(1) Intact bonds of an elastic material may break in response to loading (
\emph on
elastic damage
\emph default
),
(2) Intact bonds of an elastic material may fatigue in response to repetitive loading,
thereby reducing their damage threshold but maintaining their elasticity,
and (3) Fatigued bonds of elastic material may break in response to loading (
\emph on
fatigue damage
\emph default
).
The two damage reactions (1 and 3 in this list) behave identically with reactive damage materials described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Damage-Mechanics"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
Thus,
each of these reactions requires a cumulative distribution function (CDF,
Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Cumulative-Distribution-Function"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
) which provides the probability that bonds will break at a given threshold of the damage criterion
\begin_inset Formula $\Xi$
\end_inset
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Damage-Yield-Criterion"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
It is the user's responsibility to ensure that the CDF of fatigued bonds produces failure at a lesser threshold than the CDF of elastic bonds.
\end_layout
\begin_layout Standard
The fatigue reaction (2 in the list given above) progresses with a reaction rate
\begin_inset Formula
\[
k^{if}=k_{0}^{if}\left(\left|\dot{\Xi}^{i}\right|w^{b}\right)^{\beta}
\]
\end_inset
where
\begin_inset Formula $k_{0}^{if}$
\end_inset
and
\begin_inset Formula $\beta$
\end_inset
are user-specified parameters.
\begin_inset Formula $\dot{\Xi}^{i}$
\end_inset
is the time rate of change of the damage criterion
\begin_inset Formula $\Xi^{i}$
\end_inset
of intact bonds of the elastic solid,
whereas
\begin_inset Formula $w^{b}$
\end_inset
is the mass fraction of broken bonds in the elastic solid (also known as the
\emph on
damage
\emph default
\begin_inset Formula $D$
\end_inset
).
\end_layout
\begin_layout Standard
\emph on
Remarks:
\emph default
The parameter
\begin_inset Formula $k_{0}^{if}$
\end_inset
determines the rate at which the fatigue reaction proceeds,
for a given
\begin_inset Formula $\beta$
\end_inset
.
Decreasing
\begin_inset Formula $k_{0}^{if}$
\end_inset
shifts the
\begin_inset Formula $S-N$
\end_inset
curve (failure stress versus number of cycles) to the right.
The parameter
\begin_inset Formula $\beta$
\end_inset
affects the shape of the
\begin_inset Formula $S-N$
\end_inset
curve,
for a given
\begin_inset Formula $k_{0}^{if}$
\end_inset
.
Increasing
\begin_inset Formula $\beta$
\end_inset
causes the
\begin_inset Formula $S-N$
\end_inset
curve to become more sigmoidal.
It is acceptable to use the same criterion for elastic and fatigue damage.
To model fatigue failure,
the CDF for fatigue damage should be to the left of the CDF for elastic damage on a CDF vs
\begin_inset Formula $\Xi$
\end_inset
graph (i.e.,
amount of damage at a given
\begin_inset Formula $\Xi$
\end_inset
should be lower for elastic damage than for fatigue damage,
\begin_inset Formula $F^{i}\left(\Xi\right)
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the reaction rate constant
\begin_inset Formula $k_{0}^{if}$
\end_inset
for the fatigue reaction (units vary)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the power exponent
\begin_inset Formula $\beta$
\end_inset
for the fatigue reaction (
\begin_inset Formula $\beta>0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the elastic material
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the cumulative distribution function
\begin_inset Formula $F^{i}\left(\Xi^{i}\right)$
\end_inset
for damage of intact bonds
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the cumulative distribution function
\begin_inset Formula $F^{f}\left(\Xi^{f}\right)$
\end_inset
for damage of fatigue bonds
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the elastic damage criterion
\begin_inset Formula $\Xi^{i}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the fatigue damage criterion
\begin_inset Formula $\Xi^{f}$
\end_inset
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The tag encloses a description of the constitutive relation of the intact elastic material and associated material properties,
as may be selected from the list provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
nolink "false"
\end_inset
for unconstrained materials (used with
\shape italic
\begin_inset Quotes eld
\end_inset
elastic damage
\begin_inset Quotes erd
\end_inset
\shape default
) and Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Materials"
nolink "false"
\end_inset
for uncoupled materials (used with
\shape italic
\begin_inset Quotes eld
\end_inset
uncoupled elastic damage
\begin_inset Quotes erd
\end_inset
\shape default
).
The or tags enclose a description of the cumulative distribution function and associated material properties for elastic or fatigue damage,
as may be selected from the list presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Cumulative-Distribution-Function"
nolink "false"
\end_inset
.
The and tags enclose a description of the damage criterion for intact and fatigued bonds of the elastic solid,
as may be selected from the list presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Damage-Yield-Criterion"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
200000
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
20
\end_layout
\begin_layout LyX-Code
200
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
100
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Reactive Plasticity
\begin_inset CommandInset label
LatexCommand label
name "sec:Reactive-Plasticity"
\end_inset
\end_layout
\begin_layout Subsection
Kinematic
\begin_inset Quotes eld
\end_inset
Hardening
\begin_inset Quotes erd
\end_inset
Response
\begin_inset CommandInset label
LatexCommand label
name "subsec:Kinematic-Hardening-Response"
\end_inset
\end_layout
\begin_layout Standard
Reactive plasticity models a material as a mixture of bonds that break in response to loading and reform in a stressed state
\begin_inset CommandInset citation
LatexCommand citep
key "Zimmerman21"
literal "true"
\end_inset
.
This framework is based on constrained reactive mixtures of solids
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10a"
literal "true"
\end_inset
.
A reactively plastic solid consists of a mixture of
\begin_inset Formula $n_{f}$
\end_inset
bond families,
all of which share the same elastic response characterized by the user-defined strain energy density
\begin_inset Formula $\Psi_{0}$
\end_inset
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
),
each of which yields at a different threshold
\begin_inset Formula $\Phi_{m\beta}$
\end_inset
of a user-defined yield measure
\begin_inset Formula $\Phi$
\end_inset
(such as the von Mises stress,
see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Damage-Yield-Criterion"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
When all
\begin_inset Formula $n_{f}$
\end_inset
bond families have yielded,
the response becomes perfectly plastic,
implying that the yield measure no longer increases with increasing strain.
When
\begin_inset Formula $n^{f}>1$
\end_inset
the stress-strain response exhibits the characteristic kinematic
\begin_inset Quotes eld
\end_inset
hardening
\begin_inset Quotes erd
\end_inset
response consistent with the Bauschinger effect of classical plasticity theory
\begin_inset CommandInset citation
LatexCommand citep
key "Skelton97"
literal "true"
\end_inset
.
Optionally,
an additional bond family may be included that never yields,
remaining elastic over the entire loading history and imparting a linear
\begin_inset Quotes eld
\end_inset
hardening
\begin_inset Quotes erd
\end_inset
regime.
\end_layout
\begin_layout Standard
The deformation gradient of a reactive plasticity material is
\begin_inset Formula $\mathbf{F}^{s}$
\end_inset
and its associated mixture stress
\begin_inset Formula $\boldsymbol{\sigma}\left(\mathbf{F}^{s}\right)$
\end_inset
is evaluated as
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}\left(\mathbf{F}^{s}\right)=\sum_{\beta}w_{\beta}\left(w_{\beta}^{s}\boldsymbol{\sigma}_{0}\left(\mathbf{F}^{s}\right)+w_{\beta}^{y}\boldsymbol{\sigma}_{0}\left(\mathbf{F}_{\beta}^{y}\right)\right)\,,\label{eq:rp-mixture-stress}
\end{equation}
\end_inset
where
\begin_inset Formula $w_{\beta}$
\end_inset
is the user-defined mass fraction of each bond family
\begin_inset Formula $\beta$
\end_inset
in the mixture,
\begin_inset Formula $w_{\beta}^{s}$
\end_inset
is the evolving mass fraction of intact bonds in family
\begin_inset Formula $\beta$
\end_inset
which still exhibit an elastic response,
and
\begin_inset Formula $w_{\beta}^{y}$
\end_inset
is the evolving mass fraction of bonds in family
\begin_inset Formula $\beta$
\end_inset
which have yielded (broken and reformed in a new reference configuration).
These mass fractions satisfy
\begin_inset Formula $\sum_{\beta}w_{\beta}=1$
\end_inset
and
\begin_inset Formula $w_{\beta}^{s}+w_{\beta}^{y}=1$
\end_inset
.
The bond breaking-and-reforming reaction is denoted by
\begin_inset Formula $\mathcal{E}_{\beta}^{s}\to\mathcal{E}_{\beta}^{y}$
\end_inset
,
where
\begin_inset Formula $\mathcal{E}_{\beta}^{s}$
\end_inset
is the species associated with intact bonds while
\begin_inset Formula $\mathcal{E}_{\beta}^{y}$
\end_inset
is associated with yielded bonds,
in bond family
\begin_inset Formula $\beta$
\end_inset
.
The mass fractions of bond family
\begin_inset Formula $\beta$
\end_inset
satisfy
\begin_inset Formula $w_{\beta}^{s}=1$
\end_inset
and
\begin_inset Formula $w_{\beta}^{y}=0$
\end_inset
prior to yielding,
and
\begin_inset Formula $w_{\beta}^{s}=0$
\end_inset
and
\begin_inset Formula $w_{\beta}^{y}=1$
\end_inset
after yielding.
Here,
\begin_inset Formula $\mathbf{F}_{\beta}^{y}$
\end_inset
is the deformation gradient of yielded bonds
\begin_inset Formula $\beta$
\end_inset
relative to the deformation when the yield threshold
\begin_inset Formula $\Phi_{m\beta}$
\end_inset
was first reached;
it is calculated from the relation
\begin_inset Formula $\mathbf{F}^{s}=\mathbf{F}_{\beta}^{y}\cdot\mathbf{F}_{\beta}^{ys}$
\end_inset
,
where
\begin_inset Formula $\mathbf{F}_{\beta}^{ys}$
\end_inset
is a function of state that maps the yielded configuration
\begin_inset Formula $\mathbf{X}^{y}$
\end_inset
relative to the global reference configuration
\begin_inset Formula $\mathbf{X}^{s}$
\end_inset
.
The specific form of the constitutive model for
\begin_inset Formula $\mathbf{F}_{\beta}^{ys}$
\end_inset
used in FEBio can be found in
\begin_inset CommandInset citation
LatexCommand citep
key "Zimmerman21"
literal "true"
\end_inset
and the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Theory Manual}}
\end_layout
\end_inset
.
Currently that constitutive model is not user-definable,
though the user has the option to enforce isochoric plastic flow,
implying that
\begin_inset Formula $\det\mathbf{F}_{\beta}^{ys}=1$
\end_inset
.
The stress
\begin_inset Formula $\boldsymbol{\sigma}_{0}$
\end_inset
in the above relation for
\begin_inset Formula $\boldsymbol{\sigma}\left(\mathbf{F}^{s}\right)$
\end_inset
may be evaluated for any argument
\begin_inset Formula $\mathbf{F}$
\end_inset
as
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}_{0}\left(\mathbf{F}\right)=\frac{1}{J}\frac{\partial\Psi_{0}}{\partial\mathbf{F}}\cdot\mathbf{F}^{T}\,,\label{eq:rp-hyperelasticity}
\end{equation}
\end_inset
where
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
.
\end_layout
\begin_layout Subsection
Plastic Yield Surface
\begin_inset CommandInset label
LatexCommand label
name "subsec:Plastic-Yield-Surface"
\end_inset
\end_layout
\begin_layout Standard
The plastic yield surface is defined as
\begin_inset Formula
\[
\varphi\left(\mathbf{F}\right)=\Phi\left(\mathbf{F}\right)-\Phi_{m}\le0
\]
\end_inset
where
\begin_inset Formula $\Phi\left(\mathbf{F}\right)$
\end_inset
represents the yield measure (e.g.,
the von Mises stress),
as given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Damage-Yield-Criterion"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
The value of
\begin_inset Formula $\Phi_{m}$
\end_inset
may be a constant (for elastic-perfectly-plastic behavior),
or it may evolve along a plastic flow curve,
as described in the next section (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Plastic-Flow-Curve"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
(In a strict theoretical sense,
\begin_inset Formula $\Phi_{m}$
\end_inset
is a constant in the framework of constrained reactive mixtures,
however FEBio uses an implementation where multiple plastically-yielding bond families
\begin_inset Formula $\beta$
\end_inset
may coexist,
each having its own value
\begin_inset Formula $\Phi_{m\beta}$
\end_inset
.)
\end_layout
\begin_layout Subsection
Plastic Flow Curve
\begin_inset CommandInset label
LatexCommand label
name "subsec:Plastic-Flow-Curve"
\end_inset
\end_layout
\begin_layout Standard
Since each bond family behaves elastically until it yields,
a family's yield threshold
\begin_inset Formula $\Phi_{m\beta}$
\end_inset
is generally not the value recorded on a stress-strain curve when the slope changes.
That value may be called the
\shape italic
apparent yield threshold
\shape default
\begin_inset Formula $\Upsilon_{\beta}$
\end_inset
,
which can be related to the true yield threshold
\begin_inset Formula $\Phi_{m\beta}=\Phi\left(\varepsilon_{\beta}\right)$
\end_inset
,
where
\begin_inset Formula $\varepsilon_{\beta}$
\end_inset
is the true (logarithmic or Hencky) strain at which bond family
\begin_inset Formula $\beta$
\end_inset
yields,
by assuming a linear elastic stress-strain relationship prior to yielding,
\begin_inset Formula $\Phi\left(\varepsilon\right)=E\varepsilon$
\end_inset
,
where
\begin_inset Formula $E$
\end_inset
is the elastic material's Young's modulus.
This assumption makes it possible to relate the bond family mass fractions
\begin_inset Formula $w_{\beta}$
\end_inset
to the values of
\begin_inset Formula $\Phi_{m\beta}$
\end_inset
and
\begin_inset Formula $\Upsilon_{\beta}$
\end_inset
via
\begin_inset Formula
\[
\begin{aligned}\Phi_{m\beta} & =\Phi_{m,\beta-1}+\frac{\Upsilon_{\beta}-\Upsilon_{\beta-1}}{1-\sum_{b=0}^{\beta-1}w_{b}}\,, & \Phi_{m0} & =\Upsilon_{0}\,.\end{aligned}
\]
\end_inset
More details can be found in
\begin_inset CommandInset citation
LatexCommand citep
key "Zimmerman21"
literal "true"
\end_inset
.
FEBio offers several different methods for specifying the plastic flow curve parameters
\begin_inset Formula $\Upsilon_{\beta}$
\end_inset
,
which are used internally to evaluate
\begin_inset Formula $\Phi_{m\beta}$
\end_inset
and
\begin_inset Formula $w_{\beta}$
\end_inset
:
\end_layout
\begin_layout Subsubsection
User-Specified Flow Curve
\end_layout
\begin_layout Standard
A user-specified flow curve may be provided using the plastic flow curve material type
\begin_inset Quotes eld
\end_inset
\emph on
PFC user
\emph default
\begin_inset Quotes erd
\end_inset
.
The user enters a list of points representing
\begin_inset Formula $\left(\varepsilon_{\beta},\Upsilon_{\beta}\right)$
\end_inset
,
where
\begin_inset Formula $\varepsilon_{\beta}$
\end_inset
is the true strain corresponding to the apparent yield threshold
\begin_inset Formula $\Upsilon_{\beta}$
\end_inset
.
Here,
\begin_inset Formula $\varepsilon_{\beta}$
\end_inset
represents the total strain,
not the plastic strain.
The first point provided in this list,
\begin_inset Formula $\left(\varepsilon_{0},\Upsilon_{0}\right)$
\end_inset
,
corresponds to the yield strain
\begin_inset Formula $\varepsilon_{0}$
\end_inset
and yield stress
\begin_inset Formula $\Upsilon_{0}$
\end_inset
for this material,
such that the ratio
\begin_inset Formula $\Upsilon_{0}/\varepsilon_{0}$
\end_inset
is used internally to calculate Young's modulus
\begin_inset Formula $E$
\end_inset
for the selected material used in this plasticity analysis.
It is the user's responsibility to ensure this consistency.
The number of bond families,
\begin_inset Formula $n_{f}$
\end_inset
,
is automatically set to the number of user-specified points on this flow curve.
To maintain computational efficiency it is recommended to keep this number small,
e.g.,
no greater than 30 points.
Specifying only one point produces an elastic-perfectly plastic material response.
\end_layout
\begin_layout Standard
The response produced by the reactive plasticity material will agree nearly exactly with the user-specified points as long as the strain
\begin_inset Formula $\varepsilon$
\end_inset
remains in the infinitesimal range.
However,
as the strain
\begin_inset Formula $\varepsilon$
\end_inset
becomes finite,
the reactive plasticity response may deviate non-negligibly from the user-specified flow curve,
due to the nonlinearity of the hyperelastic relation describing the elastic response of the material.
In practice,
for isotropic elastic responses,
using a
\begin_inset Quotes eld
\end_inset
\emph on
natural neo-Hookean
\emph default
\begin_inset Quotes erd
\end_inset
material (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Natural-Neo-Hookean"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
) will produce the least amount of deviation when using large strains,
since its uniaxial stress-strain response is nearly linear with
\begin_inset Formula $\varepsilon$
\end_inset
,
\begin_inset Formula $\Phi\left(\varepsilon\right)=E\varepsilon\,e^{-\left(1-2\nu\right)\varepsilon}$
\end_inset
,
where
\begin_inset Formula $E$
\end_inset
is Young's modulus and
\begin_inset Formula $\nu$
\end_inset
is Poisson's ratio.
As
\begin_inset Formula $\nu$
\end_inset
approaches
\begin_inset Formula $\frac{1}{2}$
\end_inset
this expression produces an exact linear response under uniaxial loading,
\begin_inset Formula $\Phi\left(\varepsilon\right)=E\varepsilon$
\end_inset
,
even under finite deformation.
When using
\begin_inset Formula $\nu<\frac{1}{2}$
\end_inset
,
care must be taken not to exceed
\begin_inset Formula $\varepsilon_{\text{max}}=\left(1-2\nu\right)^{-1}$
\end_inset
,
since the slope of
\begin_inset Formula $\Phi\left(\varepsilon\right)$
\end_inset
becomes zero at that value and negative beyond it.
\end_layout
\begin_layout Subsubsection
Mathematical Expression for Flow Curve
\end_layout
\begin_layout Standard
Alternatively,
a mathematical expression may be supplied to describe
\begin_inset Formula $\Upsilon\left(\varepsilon\right)$
\end_inset
,
using the plastic flow curve material type
\begin_inset Quotes eld
\end_inset
\emph on
PFC math
\emph default
\begin_inset Quotes erd
\end_inset
.
The following parameters must also be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Number of bond families
\begin_inset Formula $n_{f}$
\end_inset
(
\begin_inset Formula $n_{f}>0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The value of
\begin_inset Formula $\varepsilon_{0}$
\end_inset
that produces
\begin_inset Formula $\Upsilon\left(\varepsilon_{0}\right)=\Upsilon_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
The highest value of
\begin_inset Formula $\varepsilon$
\end_inset
expected in this analysis
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
It is the user's responsibility to ensure that the supplied mathematical function produces
\begin_inset Formula $\Upsilon_{0}/\varepsilon_{0}$
\end_inset
equal to Young's modulus for the elastic material model being used.
The actual response produced by the reactive plasticity material will agree nearly exactly with the mathematical expression for
\begin_inset Formula $\Upsilon\left(\varepsilon\right)$
\end_inset
as long as the strain
\begin_inset Formula $\varepsilon$
\end_inset
remains in the infinitesimal range.
However,
as the strain
\begin_inset Formula $\varepsilon$
\end_inset
becomes finite,
the reactive plasticity response may deviate non-negligibly from the user-specified flow curve,
due to the nonlinearity of the hyperelastic relation describing the elastic response of the material.
In practice,
for isotropic elastic responses,
using a
\begin_inset Quotes eld
\end_inset
\emph on
natural neo-Hookean
\emph default
\begin_inset Quotes erd
\end_inset
material (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Natural-Neo-Hookean"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
) will produce the least amount of deviation when using large strains,
since its uniaxial stress-strain response is nearly linear with
\begin_inset Formula $\varepsilon$
\end_inset
,
\begin_inset Formula $\Phi\left(\varepsilon\right)=E\varepsilon\,e^{-\left(1-2\nu\right)\varepsilon}$
\end_inset
,
where
\begin_inset Formula $E$
\end_inset
is Young's modulus and
\begin_inset Formula $\nu$
\end_inset
is Poisson's ratio.
As
\begin_inset Formula $\nu$
\end_inset
approaches
\begin_inset Formula $\frac{1}{2}$
\end_inset
this expression produces an exact linear response under uniaxial loading,
\begin_inset Formula $\Phi\left(\varepsilon\right)=E\varepsilon$
\end_inset
,
even under finite deformation.
When using
\begin_inset Formula $\nu<\frac{1}{2}$
\end_inset
,
care must be taken not to exceed
\begin_inset Formula $\varepsilon_{\text{max}}=\left(1-2\nu\right)^{-1}$
\end_inset
,
since the slope of
\begin_inset Formula $\Phi\left(\varepsilon\right)$
\end_inset
becomes zero at that value and negative beyond it.
\end_layout
\begin_layout Subsubsection
Custom Flow Curve
\end_layout
\begin_layout Standard
This custom method for specifying the flow curve was provided in the paper that introduced reactive plasticity
\begin_inset CommandInset citation
LatexCommand citep
key "Zimmerman21"
literal "true"
\end_inset
,
therefore it is called
\begin_inset Quotes eld
\end_inset
\emph on
PFC paper
\emph default
\begin_inset Quotes erd
\end_inset
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Number of bond families
\begin_inset Formula $n_{f}$
\end_inset
(
\begin_inset Formula $n_{f}>0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Lowest yield threshold
\begin_inset Formula $\Upsilon_{0}$
\end_inset
(Figure
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:hardening-family-parametric-curves"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
a-b)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\begin_inset Formula $\Phi$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Highest yield threshold
\begin_inset Formula $\Upsilon_{\text{max}}$
\end_inset
(Figure
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:hardening-family-parametric-curves"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
a-b)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\begin_inset Formula $\Phi$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fraction
\begin_inset Formula $w_{0}$
\end_inset
of bonds that yield at
\begin_inset Formula $\Upsilon_{0}$
\end_inset
(
\begin_inset Formula $0\le w_{0}\le1$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fraction
\begin_inset Formula $w_{e}$
\end_inset
of bonds than never yield (
\begin_inset Formula $0\le w_{e}\le1$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Bias factor
\begin_inset Formula $r$
\end_inset
for consecutive increments of
\begin_inset Formula $\Upsilon_{\beta}$
\end_inset
over the range
\begin_inset Formula $\left[\Upsilon_{0},\Upsilon_{\text{max}}\right]$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This method assumes that
\begin_inset Formula $\Upsilon_{\beta}$
\end_inset
values are evenly distributed between the
\shape italic
initial yield threshold
\shape default
\begin_inset Formula $\Upsilon_{\text{0}}$
\end_inset
(e.g.,
the yield stress) and a
\shape italic
final yield threshold
\shape default
\begin_inset Formula $\Upsilon_{\text{max}}$
\end_inset
,
parameters which may be identified from a stress strain curve (Figure
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:hardening-family-parametric-curves"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
a-b).
Beyond
\begin_inset Formula $\Upsilon_{\text{max}}$
\end_inset
,
the material either behaves as if it is perfectly plastic (a scenario which may be valid around the ultimate strength,
for example),
or it transitions to a linear hardening regime.
\end_layout
\begin_layout Standard
The family mass fractions
\begin_inset Formula $w_{\beta}$
\end_inset
govern the influence of each family on the overall material response.
The simplest model for
\begin_inset Formula $w_{\beta}$
\end_inset
involves specifying the mass fraction of the first yielding family
\begin_inset Formula $w_{0}$
\end_inset
,
which controls the slope of the initial post-yield response (Figure
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:hardening-family-parametric-curves"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
a),
and then evenly weighting the rest of the bond families.
In cases where the material transitions to a linear hardening regime,
we can recover this behavior by adding one more bond family,
\begin_inset Formula $\beta=n_{f}$
\end_inset
,
that never yields,
thus remaining elastic.
The associated mass fraction
\begin_inset Formula $w_{\beta}$
\end_inset
\shape italic
\emph on
for
\begin_inset Formula $\beta=n_{f}$
\end_inset
is called the
\emph default
elastic mass fraction
\shape default
and denoted
\begin_inset Formula $w_{e}$
\end_inset
;
a non-zero value for this parameter may be specified whenever we wish to include linear hardening behavior (Figure
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:hardening-family-parametric-curves"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
b).
The effect of the mass fraction parameters
\begin_inset Formula $w_{0}$
\end_inset
and
\begin_inset Formula $w_{e}$
\end_inset
is explored parametrically in Figure
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:hardening-family-parametric-curves"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
c and Figure
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:hardening-family-parametric-curves"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
d,
respectively.
In general,
most ductile materials have
\begin_inset Formula $w_{0}$
\end_inset
very close to unity,
which provides hardening behavior over a finite strain range.
As
\begin_inset Formula $w_{0}\to1$
\end_inset
the stress-strain behavior approaches perfect plasticity.
In contrast,
when
\begin_inset Formula $w_{e}=0$
\end_inset
,
the material response becomes perfectly plastic once the final yield threshold
\begin_inset Formula $\Upsilon_{\text{max}}$
\end_inset
has been exceeded.
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\align center
\begin_inset Graphics
filename Figures/FigReactivePlasticityYieldModel.png
lyxscale 20
width 6in
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Modeling uniaxial stress-strain curves using the parameters given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Kinematic-Hardening-Response"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
Identification of parameters on idealized stress-strain curves showing (a) a plateau in the stress,
or (b) exhibiting a region of linear hardening.
The yielding behavior is fully described by the set of parameters
\begin_inset Formula $\left\{ n_{f},\Upsilon_{0},\Upsilon_{\text{max}},w_{0},w_{e},r\right\} $
\end_inset
.
Parametric variations of (c)
\begin_inset Formula $w_{0}$
\end_inset
and (d)
\begin_inset Formula $w_{e}$
\end_inset
illustrate their influence on the stress-strain response;
other parameters are held fixed.
In (c-d)
\begin_inset Formula $n_{f}=10$
\end_inset
,
\begin_inset Formula $\Upsilon_{0}=600$
\end_inset
MPa,
\begin_inset Formula $\Upsilon_{\text{max}}=1000$
\end_inset
MPa,
and
\begin_inset Formula $r=1$
\end_inset
.
In (c),
\begin_inset Formula $w_{e}=0$
\end_inset
and in (d)
\begin_inset Formula $w_{0}=0.75$
\end_inset
.
\color black
\begin_inset CommandInset label
LatexCommand label
name "fig:hardening-family-parametric-curves"
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset
As
\begin_inset Formula $w_{e}$
\end_inset
increases,
a region of linear hardening is seen on a plot of the true stress against strain.
For most ductile materials,
\begin_inset Formula $w_{e}$
\end_inset
is usually
\begin_inset Formula $0$
\end_inset
or on the order of
\begin_inset Formula $0.001$
\end_inset
.
\end_layout
\begin_layout Standard
It is also possible to introduce a
\shape italic
bias factor
\shape default
\begin_inset Formula $r$
\end_inset
,
which allows a geometric progression rather than uniform spacing of the apparent yield thresholds and family mass fractions.
The bias factor
\begin_inset Formula $r$
\end_inset
has the effect of modifying the shape of the hardening region between
\begin_inset Formula $\Upsilon_{0}$
\end_inset
and
\begin_inset Formula $\Upsilon_{\text{max }}$
\end_inset
(Figure
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:hardening-family-parametric-curves"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
b).
The full set of material parameters is then given by
\begin_inset Formula $\left\{ n_{f},\Upsilon_{0},\Upsilon_{\text{max}},w_{0},w_{e},r\right\} $
\end_inset
.
Setting
\begin_inset Formula $r=1$
\end_inset
recovers the uniform distribution.
Figure
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:hardening-family-parametric-curves"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
a-b graphically describes the influence of each parameter on simplified stress-strain curves,
showing how these parameters may be extracted from experimental data.
\end_layout
\begin_layout Standard
Default values in FEBio are
\begin_inset Formula $n_{f}=1$
\end_inset
,
\begin_inset Formula $w_{0}=1$
\end_inset
,
\begin_inset Formula $w_{e}=0$
\end_inset
,
\begin_inset Formula $\Upsilon_{0}=\Upsilon_{\text{max}}=0$
\end_inset
,
\begin_inset Formula $r=0.9$
\end_inset
.
\end_layout
\begin_layout Subsection
Specification of Reactive Elasto-Plastic Solid
\begin_inset CommandInset label
LatexCommand label
name "subsec:Reactive-Elastoplastic-Solid"
\end_inset
\end_layout
\begin_layout Standard
The material type of a reactive elasto-plastic solid with kinematic hardening is
\begin_inset Quotes eld
\end_inset
\emph on
reactive plasticity
\emph default
\begin_inset Quotes erd
\end_inset
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Flag (0 or 1) for enforcing isochoric plastic flow (1 implies
\begin_inset Formula $\det\mathbf{F}_{\beta}^{ys}=1,\,\forall\beta$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the elastic material (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the yield criterion
\begin_inset Formula $\Phi$
\end_inset
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Damage-Yield-Criterion"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the plastic flow curve (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Plastic-Flow-Curve"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The tag encloses a description of the constitutive relation of the intact elastic material and associated material properties,
as may be selected from the list provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
nolink "false"
\end_inset
for unconstrained materials.
The tag encloses a description of the yield criterion
\begin_inset Formula $\Phi$
\end_inset
,
as may be selected from the list presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Damage-Yield-Criterion"
nolink "false"
\end_inset
.
The tag encloses a description of the relation between bond mass fractions
\begin_inset Formula $w_{\beta}$
\end_inset
and apparent yield stresses
\begin_inset Formula $\Upsilon_{\beta}$
\end_inset
for the bond family
\begin_inset Formula $\beta$
\end_inset
as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Plastic-Flow-Curve"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.The default value in FEBio is isochoric=1.
\end_layout
\begin_layout Standard
\shape italic
Example:
Idealized elastic-perfectly plastic response of steel (mm-N-s units)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
8.05e-9
\end_layout
\begin_layout LyX-Code
200e3
\end_layout
\begin_layout LyX-Code
0.30
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
450
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\shape italic
Example:
Annealed mild steel (mm-N-s units)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
7.85e-9
\end_layout
\begin_layout LyX-Code
205e3
\end_layout
\begin_layout LyX-Code
0.29
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
15
\end_layout
\begin_layout LyX-Code
220
\end_layout
\begin_layout LyX-Code
490
\end_layout
\begin_layout LyX-Code
0.973
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\shape italic
Example:
Annealed copper (mm-N-s units)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
7.764e-9
\end_layout
\begin_layout LyX-Code
120e3
\end_layout
\begin_layout LyX-Code
0.34
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
15
\end_layout
\begin_layout LyX-Code
60
\end_layout
\begin_layout LyX-Code
288
\end_layout
\begin_layout LyX-Code
0.988
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\shape italic
Example:
Unaged maraging steel (mm-N-s units)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
8.00e-9
\end_layout
\begin_layout LyX-Code
165e3
\end_layout
\begin_layout LyX-Code
0.33
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
22
\end_layout
\begin_layout LyX-Code
398
\end_layout
\begin_layout LyX-Code
1010
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0.9
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\shape italic
Example:
Annealed aluminum 1100 (mm-N-s units)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
2.71e-9
\end_layout
\begin_layout LyX-Code
68e3
\end_layout
\begin_layout LyX-Code
0.33
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
18
\end_layout
\begin_layout LyX-Code
63
\end_layout
\begin_layout LyX-Code
112
\end_layout
\begin_layout LyX-Code
0.994
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0.6
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\shape italic
Example:
Mild steel (mm-N-s units)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
2.71e-9
\end_layout
\begin_layout LyX-Code
206e3
\end_layout
\begin_layout LyX-Code
0.30
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
15
\end_layout
\begin_layout LyX-Code
0.0008403
\end_layout
\begin_layout LyX-Code
1.3
\end_layout
\begin_layout LyX-Code
545.46*(0.011024+eps)^0.2589
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\shape italic
Example:
Steel (in-lbf-s units)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
29911000
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
SMOOTH
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.002,
59822
\end_layout
\begin_layout LyX-Code
0.002841,
64450
\end_layout
\begin_layout LyX-Code
0.00469,
68500
\end_layout
\begin_layout LyX-Code
0.00953,
72000
\end_layout
\begin_layout LyX-Code
0.0193,
75000
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\shape italic
Example:
elastic-perfectly plastic response,
using PFC math flow curve
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
200000
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
200
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Reactive Elasto-Plastic Damage Mechanics
\begin_inset CommandInset label
LatexCommand label
name "sec:Plasticity-with-damage"
\end_inset
\end_layout
\begin_layout Standard
Plastic deformation (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Plasticity"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
) is often coupled with damage,
as the finite deformation and plastic flow of a loaded material typically induces some amount of failure.
Within the constrained reactive mixture framework adopted in FEBio,
damage is produced by bonds breaking permanently (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Damage-Mechanics"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
),
which reduces the generation mass fractions
\begin_inset Formula $w_{\beta}^{s}$
\end_inset
or
\begin_inset Formula $w_{\beta}^{y}$
\end_inset
\begin_inset CommandInset citation
LatexCommand citep
key "Zimmerman21"
literal "true"
\end_inset
.
In our treatment of elastoplastic damage we assume that both intact and yielded bonds may become damaged.
Intact bonds belong to the
\begin_inset Formula $s-$
\end_inset
generation which is present at
\begin_inset Formula $t=-\infty$
\end_inset
.
Once yielding occurs,
all successive generations of that family are labeled as yielded bonds
\begin_inset Formula $y$
\end_inset
.
This distinction is necessary so we can then distinguish between damage to intact bonds (elastic damage) and damage to yielded bonds (plastic damage),
since intact bonds which get damaged never have the ability to yield.
Damage to intact bonds is represented by the reaction
\begin_inset Formula $\mathcal{E}_{\beta}^{s}\to\mathcal{E}_{\beta}^{b}$
\end_inset
,
where
\begin_inset Formula $\mathcal{E}_{\beta}^{b}$
\end_inset
is the species associated with broken bonds in bond family
\begin_inset Formula $\beta$
\end_inset
.
It may represent some initial damage value for a material with defects,
or damage due to intermolecular failure of bonds that never yielded;
this damage alters the value of
\begin_inset Formula $w_{\beta}^{s}$
\end_inset
and we refer to it as
\emph on
elastic damage
\emph default
.
Damage to yielded bonds represents
\emph on
plastic damage
\emph default
;
it is represented by the reaction
\begin_inset Formula $\mathcal{E}_{\beta}^{y}\to\mathcal{E}_{\beta}^{b}$
\end_inset
and it alters the value of
\begin_inset Formula $w_{\beta}^{y}$
\end_inset
.
The mechanism of damage and the failure measure may be different for these two types of bonds,
particularly since a stress- or energy-based failure measure may not be appropriate for plastic damage.
It is important to note that the nature of the plastic deformation described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Plasticity"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
remains unchanged.
Damage modifies the material behavior by reducing the fraction of bonds in various generations,
which scales the response accordingly.
\end_layout
\begin_layout Standard
In a reactive constrained mixture framework the insertion of damage into the reactive plasticity formulation is straightforward.
Since bonds break permanently in a damage reaction,
there is no need to define a function of state
\begin_inset Formula $\mathbf{F}_{\beta}^{ys}$
\end_inset
to describe a (non-existing) reformed configuration.
Furthermore,
the specific free energy of broken bonds is zero.
The scalar
\shape italic
elastic damage criterion
\shape default
\begin_inset Formula $\Xi^{e}\left(\mathbf{F}^{s}\right)$
\end_inset
,
which is taken to have the same functional form for all bond families
\begin_inset Formula $\beta$
\end_inset
,
is the analog to the yield criterion
\begin_inset Formula $\Phi$
\end_inset
for plasticity.
As shown in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Damage-Mechanics"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
the main contrast with reactive plasticity is that not all bonds in the family
\begin_inset Formula $\beta$
\end_inset
break simultaneously at a single
\shape italic
elastic damage threshold
\shape default
\begin_inset Formula $\Xi_{m\beta}^{e}$
\end_inset
.
Instead,
the fraction of broken bonds varies as a function of
\begin_inset Formula $\Xi^{e}\left(\mathbf{F}^{s}\right)$
\end_inset
,
denoted by
\begin_inset Formula $F^{e}\left(\Xi_{\beta}^{e}\right)$
\end_inset
,
such that
\begin_inset Formula $0\le F^{e}\left(\Xi_{\beta}^{e}\right)\le1$
\end_inset
.
Here,
\begin_inset Formula $F^{e}\left(\Xi_{\beta}^{e}\right)$
\end_inset
is a function of state;
it must be a monotonically increasing function of its argument to satisfy the Clausius-Duhem inequality
\begin_inset CommandInset citation
LatexCommand citep
key "Nims16"
literal "true"
\end_inset
.
We may view
\begin_inset Formula $F^{e}$
\end_inset
as a cumulative distribution function (CDF),
whose corresponding probability distribution function (PDF) represents the probability of damage at a particular value of
\begin_inset Formula $\Xi_{\beta}^{e}$
\end_inset
.
\end_layout
\begin_layout Subsection
Theoretical Formulation
\end_layout
\begin_layout Standard
Here,
we sketch the structure of the elastoplastic damage theory in FEBio.
Since each bond family in reactive plasticity yields all at once,
we can easily split an elastoplastic damage theory into two parts to represent elastic and plastic damage regimes.
Assume that the first yielding reaction for bond family
\begin_inset Formula $\beta$
\end_inset
occurs at time
\begin_inset Formula $t=u_{\beta}$
\end_inset
.
Prior to this initial yielding,
the damage behavior described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Damage-Mechanics"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
applies,
and the material composition is generally a mixture of intact (
\begin_inset Formula $\text{\ensuremath{\mathcal{E}_{\beta}^{s}}}$
\end_inset
) and broken (
\begin_inset Formula $\mathcal{E}_{\beta}^{b}$
\end_inset
) bonds satisfying the reaction
\begin_inset Formula $\mathcal{E}_{\beta}^{s}\to\mathcal{E}_{\beta}^{b}$
\end_inset
.
The corresponding bond mass fractions satisfy
\begin_inset Formula $1=w_{\beta}^{s}+w_{\beta}^{b}$
\end_inset
and
\begin_inset Formula $w_{\beta}^{y}=0$
\end_inset
,
where
\begin_inset Formula $w_{\beta}^{b}=F^{e}\left(\Xi_{\beta}^{e}\right)$
\end_inset
is the elastic damage in bond family
\begin_inset Formula $\beta$
\end_inset
.
At
\begin_inset Formula $t=u_{\beta}$
\end_inset
,
the remaining intact bonds
\begin_inset Formula $w_{\beta}^{s}=1-w_{\beta}^{b}$
\end_inset
all yield,
following the reaction
\begin_inset Formula $\mathcal{E}_{\beta}^{s}\to\mathcal{E}_{\beta}^{y}$
\end_inset
.
The family mass balance is then given as
\begin_inset Formula $1=w_{\beta}^{y}+w_{\beta}^{b}$
\end_inset
,
since
\begin_inset Formula $w_{\beta}^{s}=0$
\end_inset
after yielding.
\end_layout
\begin_layout Standard
For time
\begin_inset Formula $t>u_{\beta}$
\end_inset
,
yielded bonds may continue to yield,
but they may also sustain damage according to the reaction
\begin_inset Formula $\mathcal{E}_{\beta}^{y}\to\mathcal{E}_{\beta}^{b}$
\end_inset
,
which reduces their mass fraction
\begin_inset Formula $w_{\beta}^{y}$
\end_inset
.
Damage to yielded bonds may occur based on a function of state (often described as a plastic strain,
though it is not an observable kinematic variable),
which is distinct from the measure of elastic damage.
Therefore,
we denote the
\shape italic
plastic damage measure
\shape default
as
\begin_inset Formula $\Xi^{p}\left(\mathbf{F}_{\beta}^{ys}\right)$
\end_inset
and its cumulative distribution function by
\begin_inset Formula $F^{p}\left(\Xi_{\beta}^{p}\right)$
\end_inset
,
under the assumption that all bond families
\begin_inset Formula $\beta$
\end_inset
share the same functional forms for
\begin_inset Formula $\Xi^{p}$
\end_inset
and
\begin_inset Formula $F^{p}$
\end_inset
.
For each bond family
\begin_inset Formula $\beta$
\end_inset
,
only the remaining undamaged fraction
\begin_inset Formula $1-F^{p}\left(\Xi_{\beta}^{p}\right)$
\end_inset
of yielded bonds may break and reform as the next yielded generation.
\end_layout
\begin_layout Standard
It must be recognized that,
just as
\begin_inset Formula $\mathbf{F}_{\beta}^{ys}$
\end_inset
is a constitutively-prescribed function of state and does not carry the meaning of a plastic deformation gradient,
the plastic damage measure
\begin_inset Formula $\Xi^{p}\left(\mathbf{F}_{\beta}^{ys}\right)$
\end_inset
is also a function of state.
This quantity is called a plastic strain for convenience only.
\end_layout
\begin_layout Subsubsection
Stress and Damage
\end_layout
\begin_layout Standard
Recognizing that damaged (broken) bonds do not store free energy,
the mixture stress is given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=\sum_{\beta}w_{\beta}\left(w_{\beta}^{s}\boldsymbol{\sigma}_{0}\left(\mathbf{F}^{s}\right)+w_{\beta}^{y}\boldsymbol{\sigma}_{0}\left(\mathbf{F}_{\beta}^{y}\right)\right)\,,\label{eq:plasticdmg-mixture-stress}
\end{equation}
\end_inset
where the stresses
\begin_inset Formula $\boldsymbol{\sigma}_{0}$
\end_inset
are given by the standard hyperelasticity relation in Eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:rp-hyperelasticity"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
The reactive mixture equivalent of the damage variable
\begin_inset Formula $D$
\end_inset
may be evaluated for elastoplastic damage as the fraction of all bonds that are broken,
\begin_inset Formula
\begin{equation}
D=w^{b}=\sum_{\beta}w_{\beta}w_{\beta}^{b}\,.\label{eq:plasticdmg-damage-variable}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsubsection
Damage Measures
\begin_inset CommandInset label
LatexCommand label
name "subsec:Yielded-damage-reaction"
\end_inset
\end_layout
\begin_layout Standard
For elastic damage,
we may use the same functional measure as proposed for plastic yielding (e.g.,
the von Mises stress);
this implies that the functions
\begin_inset Formula $\Xi^{e}$
\end_inset
and
\begin_inset Formula $\Phi$
\end_inset
have the same form.
For plastic damage of bonds in family
\begin_inset Formula $\beta$
\end_inset
,
we use the constitutively-determined mapping
\begin_inset Formula $\mathbf{F}_{\beta}^{ys}$
\end_inset
to define plastic right Cauchy-Green and Lagrange strain tensors through
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{C}_{\beta}^{ys} & =\left(\mathbf{F}_{\beta}^{ys}\right)^{T}\cdot\mathbf{F}_{\beta}^{ys}\\
\mathbf{E}_{\beta}^{ys} & =\frac{1}{2}\left(\mathbf{C}_{\beta}^{ys}-\mathbf{I}\right)
\end{aligned}
\,.
\end{equation}
\end_inset
One possible constitutive relation for
\begin_inset Formula $\Xi^{p}$
\end_inset
,
which remains valid for general deformations,
is to set it equal to the
\shape italic
effective plastic strain
\shape default
\begin_inset Formula $e_{\beta}^{p}$
\end_inset
for the various bond families
\begin_inset Formula $\beta$
\end_inset
,
\begin_inset Formula
\begin{equation}
e_{\beta}^{p}=\sqrt{\frac{2}{3}\dev\mathbf{E}_{\beta}^{ys}:\dev\mathbf{E}_{\beta}^{ys}}\,.\label{eq:plasticdmg-effective-plastic-strain}
\end{equation}
\end_inset
In a numerical implementation,
the effective plastic strain
\begin_inset Formula $e_{0}^{p}$
\end_inset
of the first bond family to yield may be reported as the effective plastic strain in the entire material,
for consistency with plastic strain measures in classical models of plasticity.
\end_layout
\begin_layout Standard
Quantities in this section do not represent plastic strains or plastic strain tensors,
though we adopt the terminology due to similarities.
Recall that the non-observable function of state
\begin_inset Formula $\mathbf{F}_{\beta}^{ys}=\mathbf{F}_{\beta}^{ys}\left(\mathbf{F}^{s},\rho_{r\beta}^{\alpha}\right)$
\end_inset
is a time-invariant mapping providing the reference configuration of a yielded bond
\begin_inset Formula $y$
\end_inset
with respect to the reference configuration of the master constituent
\begin_inset Formula $s$
\end_inset
,
for family
\begin_inset Formula $\beta$
\end_inset
.
The quantities
\begin_inset Formula $\mathbf{C}_{\beta}^{ys}$
\end_inset
and
\begin_inset Formula $\mathbf{E}_{\beta}^{ys}$
\end_inset
then also represent non-observable functions of state calculated as strain tensors.
Consequently,
\begin_inset Formula $e_{\beta}^{p}$
\end_inset
is a measure of the relative motion of the reference configuration of bond family
\begin_inset Formula $\beta$
\end_inset
,
expressed as a scalar
\begin_inset Quotes eld
\end_inset
strain
\begin_inset Quotes erd
\end_inset
.
Physically,
this amounts to the modeling assumption that once the breaking-and-reforming process takes a bond family out of a local neighborhood centered about its original position,
the bond begins to degrade with further breaking-and-reforming processes.
That each of these quantities exists for every bond family
\begin_inset Formula $\beta$
\end_inset
emphasizes the lack of any true or unique plastic strain measure in this framework.
\end_layout
\begin_layout Subsection
Specification of Reactive Elasto-Plastic Damage Solid
\begin_inset CommandInset label
LatexCommand label
name "subsec:Reactive-Elastoplastic-Damage"
\end_inset
\end_layout
\begin_layout Standard
The material type of a reactive elasto-plastic damage solid with kinematic hardening is
\begin_inset Quotes eld
\end_inset
\emph on
reactive plastic damage
\emph default
\begin_inset Quotes erd
\end_inset
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Flag (0 or 1) for enforcing isochoric plastic flow (1 implies
\begin_inset Formula $\det\mathbf{F}_{\beta}^{ys}=1,\,\forall\beta$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the elastic material (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the yield criterion
\begin_inset Formula $\Phi$
\end_inset
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Damage-Yield-Criterion"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the plastic flow curve (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Plastic-Flow-Curve"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the plastic damage CDF
\begin_inset Formula $F^{p}\left(\Xi_{\beta}^{p}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the plastic damage criterion
\begin_inset Formula $\Xi^{p}\left(\mathbf{F}_{\beta}^{ys}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the elastic damage CDF
\begin_inset Formula $F^{e}\left(\Xi_{\beta}^{e}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the elastic damage criterion
\begin_inset Formula $\Xi^{e}\left(\mathbf{F}^{s}\right)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The tag encloses a description of the constitutive relation of the intact elastic material and associated material properties,
as may be selected from the list provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
nolink "false"
\end_inset
for unconstrained materials.
The tag encloses a description of the yield criterion
\begin_inset Formula $\Phi$
\end_inset
,
as may be selected from the list presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Damage-Yield-Criterion"
nolink "false"
\end_inset
.
The tag encloses a description of the relation between bond mass fractions
\begin_inset Formula $w_{\beta}$
\end_inset
and apparent yield stresses
\begin_inset Formula $\Upsilon_{\beta}$
\end_inset
for the bond family
\begin_inset Formula $\beta$
\end_inset
as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Plastic-Flow-Curve"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
The plastic and elastic damage CDFs,
in the and tags respectively,
may be selected from Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Cumulative-Distribution-Function"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
whereas the corresponding damage criteria and may be selected from Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Damage-Yield-Criterion"
nolink "false"
\end_inset
.
Default values are
\begin_inset Formula $n_{f}=1$
\end_inset
,
\begin_inset Formula $w_{0}=1$
\end_inset
,
\begin_inset Formula $w_{e}=0$
\end_inset
,
\begin_inset Formula $\Upsilon_{0}=\Upsilon_{\text{max}}=0$
\end_inset
,
\begin_inset Formula $r=0.9$
\end_inset
,
and isochoric=1.
If only plastic damage needs to be modeled,
the tags and may be omitted.
If and are also omitted the material response becomes identical to the
\begin_inset Quotes eld
\end_inset
\emph on
reactive plasticity
\emph default
\begin_inset Quotes erd
\end_inset
material described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Reactive-Elastoplastic-Solid"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\shape default
\emph on
A-533 Grade B class 1 nuclear pressure vessel steel
\shape italic
\emph default
(mm-N-s units)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
8.00e-9
\end_layout
\begin_layout LyX-Code
206.9e3
\end_layout
\begin_layout LyX-Code
0.29
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
10
\end_layout
\begin_layout LyX-Code
458
\end_layout
\begin_layout LyX-Code
730
\end_layout
\begin_layout LyX-Code
0.985
\end_layout
\begin_layout LyX-Code
0.00072
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
3.3
\end_layout
\begin_layout LyX-Code
3
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Reactive Viscoplasticity
\begin_inset CommandInset label
LatexCommand label
name "sec:Reactive-Viscoplasticity"
\end_inset
\end_layout
\begin_layout Standard
A reactive viscoelastic material (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Viscoelastic-Solid"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
) consists of an
\begin_inset Quotes eld
\end_inset
\emph on
elastic
\emph default
\begin_inset Quotes erd
\end_inset
material,
which imparts the equilibrium elastic response,
and a
\begin_inset Quotes eld
\end_inset
\emph on
bond
\emph default
\begin_inset Quotes erd
\end_inset
material,
which imparts the viscous response.
The
\begin_inset Quotes eld
\end_inset
\emph on
elastic
\emph default
\begin_inset Quotes erd
\end_inset
response may be attributed to strong molecular bonds (e.g.,
covalent bonds) in a material region,
that don't break in the absence of damage,
whereas the
\begin_inset Quotes eld
\end_inset
\emph on
bond
\emph default
\begin_inset Quotes erd
\end_inset
response is attributed to weak molecular bonds (e.g.,
hydrogen bonds) in the material region,
that break under loading,
and reform in a stress-free state.
\end_layout
\begin_layout Standard
To model viscoplasticity in a reactive framework,
one may use a
\begin_inset Quotes eld
\end_inset
\emph on
reactive plasticity
\emph default
\begin_inset Quotes erd
\end_inset
material (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Plasticity"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
) as the type of
\begin_inset Quotes eld
\end_inset
\emph on
elastic
\begin_inset Quotes erd
\end_inset
\emph default
material appearing in a
\begin_inset Quotes eld
\end_inset
\emph on
reactive viscoelastic
\emph default
\begin_inset Quotes erd
\end_inset
material.
The
\begin_inset Quotes eld
\end_inset
\emph on
bond
\emph default
\begin_inset Quotes erd
\end_inset
material may be modeled as recommended previously (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Viscoelastic-Solid"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
\end_layout
\begin_layout LyX-Code
\emph on
Example:
Reactive visoelasticity with reactive plasticity
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.0001
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
73000
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
330
\end_layout
\begin_layout LyX-Code
489
\end_layout
\begin_layout LyX-Code
0.967
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
15
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
7300
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.5
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Reactive Viscoelasticity and Viscoplasticity with Damage
\begin_inset CommandInset label
LatexCommand label
name "sec:Reactive-Viscoelasticity-Damage"
\end_inset
\end_layout
\begin_layout Standard
A reactive viscoelastic material may undergo damage as detailed in
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian23b"
literal "false"
\end_inset
.
Reactive viscoelastic materials (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Viscoelastic-Solid"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
) consist of an
\begin_inset Quotes eld
\end_inset
\emph on
elastic
\emph default
\begin_inset Quotes erd
\end_inset
material,
which imparts the equilibrium elastic response,
and a
\begin_inset Quotes eld
\end_inset
\emph on
bond
\emph default
\begin_inset Quotes erd
\end_inset
material,
which imparts the viscous response.
The
\begin_inset Quotes eld
\end_inset
\emph on
elastic
\emph default
\begin_inset Quotes erd
\end_inset
response may be attributed to strong molecular bonds (e.g.,
covalent bonds) in a material region,
that don't break in the absence of damage,
whereas the
\begin_inset Quotes eld
\end_inset
\emph on
bond
\emph default
\begin_inset Quotes erd
\end_inset
response is attributed to weak molecular bonds (e.g.,
hydrogen bonds) in the material region,
that break under loading,
and reform in a stress-free state.
\end_layout
\begin_layout Standard
It follows from this definition that the
\begin_inset Quotes eld
\end_inset
elastic
\begin_inset Quotes erd
\end_inset
material of a
\begin_inset Quotes eld
\end_inset
reactive viscoelastic
\begin_inset Quotes erd
\end_inset
material may undergo damage,
as described for example in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Damage-Mechanics"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
This damage is cause by the breaking of strong molecular bonds in the material region,
and the associated damage variable
\begin_inset Formula $D$
\end_inset
represents the mass fraction of the material region whose strong bonds have broken.
However,
when strong molecular bonds break,
the gap between molecular constituents of that material region may increase,
also preventing the formation of weak moleculer bonds (e.g.,
since hydrogen bonds may only form when there is sufficient proximity between moeities associated with these bonds).
Based on the work of Simo
\begin_inset CommandInset citation
LatexCommand citep
key "Simo87"
literal "false"
\end_inset
,
we can adopt the constitutive assumption that the fraction of weak bonds that fails is the same as the fraction
\begin_inset Formula $D$
\end_inset
of strong bonds that fail
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian23b"
literal "false"
\end_inset
.
Therefore,
the stress
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
produced by strong bonds in a material region may be attenuated as
\begin_inset Formula $\left(1-D\right)\boldsymbol{\sigma}^{e}$
\end_inset
,
just like the stress
\begin_inset Formula $\boldsymbol{\sigma}^{b}$
\end_inset
produced by weak bonds may be reduced to
\begin_inset Formula $\left(1-D\right)\boldsymbol{\sigma}^{b}$
\end_inset
.
\end_layout
\begin_layout Standard
The
\begin_inset Quotes eld
\end_inset
reactive viscoelastic
\begin_inset Quotes erd
\end_inset
material in FEBio automatically recognizes if its
\begin_inset Quotes eld
\end_inset
\emph on
elastic
\emph default
\begin_inset Quotes erd
\end_inset
component happens to be a
\begin_inset Quotes eld
\end_inset
\emph on
elastic damage
\emph default
\begin_inset Quotes erd
\end_inset
material,
or a
\begin_inset Quotes eld
\end_inset
\emph on
reactive plastic damage
\emph default
\begin_inset Quotes erd
\end_inset
material.
In either of these cases,
it will prescribe the damage
\begin_inset Formula $D$
\end_inset
calculated from the
\begin_inset Quotes eld
\end_inset
\emph on
elastic
\emph default
\begin_inset Quotes erd
\end_inset
response to the
\begin_inset Quotes eld
\end_inset
\emph on
bond
\emph default
\begin_inset Quotes erd
\end_inset
response.
In other words,
it is possible to model viscoelastic damage and viscoplastic damage in FEBio.
\end_layout
\begin_layout LyX-Code
\emph on
Example:
Reactive viscoelasticity with elastic damage
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0.0001
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1000
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2.5
\end_layout
\begin_layout LyX-Code
125
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
2000
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\emph on
Example:
Reactive viscoelasticity with reactive plastic damage
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.0001
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
73000
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
330
\end_layout
\begin_layout LyX-Code
489
\end_layout
\begin_layout LyX-Code
0.967
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
15
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.65
\end_layout
\begin_layout LyX-Code
7.95
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
7300
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.5
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Viscoelastic Damage
\begin_inset CommandInset label
LatexCommand label
name "sec:Viscoelastic-Damage"
\end_inset
\end_layout
\begin_layout Standard
A viscoelastic material (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Viscoelastic-Solids"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
) is fundamentally a continuum representation of the Standard Solid in classical viscoelasticity,
valid under finite deformation in the context of quasilinear viscoelasticity.
The standard solid consists of a spring
\begin_inset Formula $e$
\end_inset
in parallel with a Maxwell element (a spring
\begin_inset Formula $s$
\end_inset
and dashpot
\begin_inset Formula $d$
\end_inset
in series).
The spring stiffness in the Maxwell element is assumed to be equal to
\begin_inset Formula $\gamma$
\end_inset
times the stiffness of the parallel spring.
The elastic spring response may be a nonlinear function of the strain but the viscoelastic response must be linear (i.e.,
it must obey Boltzmann's superposition principle,
equivalent to stating that the Maxwell element response is governed by a linear ordinary differential equation,
or ODE).
In general,
a viscoelastic material of this type may undergo damage,
using the framework provided by Simo
\begin_inset CommandInset citation
LatexCommand citep
key "Simo87"
literal "false"
\end_inset
.
In FEBio we model this framework by adopting additional constitutive assumptions not provided by Simo,
but outlined in
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian23b"
literal "false"
\end_inset
and in the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Theory Manual}}
\end_layout
\end_inset
.
The FEBio formulation for viscoelastic damage relies on a proper formulation of the strain energy density of the Standard Solid,
which is then employed in the analysis of viscoelastic damage.
The strain energy density
\begin_inset Formula $\Psi_{r}\left(\mathbf{F}\right)$
\end_inset
of the viscoelastic solid is given by
\begin_inset Formula
\[
\Psi_{r}\left(\mathbf{F}\right)=\Psi_{r}^{e}\left(\mathbf{F}\right)+\gamma\Psi_{r}^{e}\left(\mathbf{F}_{s}\right)
\]
\end_inset
where
\begin_inset Formula $\mathbf{F}$
\end_inset
is the (observable) deformation gradient of the material (also of the elastic spring
\begin_inset Formula $e$
\end_inset
),
\begin_inset Formula $\mathbf{F}_{s}$
\end_inset
is the deformation gradient associated with the Maxwell spring
\begin_inset Formula $s$
\end_inset
(an internal variable which evolves based on a first-order ODE),
and
\begin_inset Formula $\Psi_{r}^{e}$
\end_inset
is the strain energy density of the elastic spring.
Let
\begin_inset Formula $\mathbf{S}^{e}$
\end_inset
denote the second Piola-Kirchhoff stress in the elastic spring,
obtained from the standard hyperelasticity relation
\begin_inset Formula $\mathbf{S}^{e}=\partial\Psi_{r}\left(\mathbf{F}\right)/\partial\mathbf{E}$
\end_inset
,
where
\begin_inset Formula $\mathbf{E}$
\end_inset
is the Lagrange strain tensor evaluated from
\begin_inset Formula $\mathbf{F}$
\end_inset
.
It follows from the above relation for the strain energy density that
\begin_inset Formula $\mathbf{S}\left(\mathbf{F}\right)=\mathbf{S}^{e}\left(\mathbf{F}\right)+\gamma\mathbf{S}^{e}\left(\mathbf{F}_{s}\right)$
\end_inset
.
\end_layout
\begin_layout Standard
Damage
\begin_inset Formula $D^{e}$
\end_inset
is produced in the elastic spring
\begin_inset Formula $e$
\end_inset
according to the framework described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Damage-Mechanics"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
based on a user-defined damage criterion
\begin_inset Formula $\Xi^{e}\left(\mathbf{F}\right)$
\end_inset
(such as von Mises stress or maximum principal normal stress),
such that
\begin_inset Formula $0\le D^{e}\le1$
\end_inset
represents the range from zero to complete damage.
The resulting stress in the elastic spring is now given by the attenuated value
\begin_inset Formula $\left(1-D^{e}\right)\mathbf{S}^{e}$
\end_inset
\begin_inset Formula $\left(\mathbf{F}\right)$
\end_inset
.
Based on Simo
\begin_inset CommandInset citation
LatexCommand citep
key "Simo87"
literal "false"
\end_inset
,
FEBio assumes that the damage in the Maxwell element is similarly given by
\begin_inset Formula $\left(1-D^{e}\right)\gamma\mathbf{S}^{e}\left(\mathbf{F}_{s}\right)$
\end_inset
.
Thus,
the stress in a damaged viscoelastic material in FEBio is evaluated from
\begin_inset Formula $\left(1-D^{e}\right)\mathbf{S}\left(\mathbf{F}\right)$
\end_inset
.
\end_layout
\begin_layout Standard
The specification of a material with
\begin_inset Quotes eld
\end_inset
\emph on
viscoelastic damage
\emph default
\begin_inset Quotes erd
\end_inset
takes the same form as that of a viscoelastic material (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Viscoelastic-Solids"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
),
except that the
\begin_inset Quotes eld
\end_inset
\emph on
elastic
\emph default
\begin_inset Quotes erd
\end_inset
component should now consist of an
\begin_inset Quotes eld
\end_inset
\emph on
elastic damage
\emph default
\begin_inset Quotes erd
\end_inset
material type,
whose specification is outlined in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Reactive-Damage-Mechanics"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
Viscoelastic damage
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
5
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1000
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2.5
\end_layout
\begin_layout LyX-Code
125
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Multigeneration Solids
\begin_inset CommandInset label
LatexCommand label
name "sec:Multigeneration-Solids"
\end_inset
\end_layout
\begin_layout Standard
This type of material
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian10a"
literal "true"
\end_inset
implements a mechanism for multigenerational interstitial growth of solids whereby each growth generation
\begin_inset Formula $\gamma$
\end_inset
has a distinct reference configuration
\begin_inset Formula $\mathbf{X}^{\gamma}$
\end_inset
determined at the time
\begin_inset Formula $t^{\gamma}$
\end_inset
of its deposition.
Therefore,
the solid matrix of a growing material consists of a multiplicity of intermingled porous bodies,
each representing a generation
\begin_inset Formula $\gamma$
\end_inset
,
all of which are constrained to move together in the current configuration
\begin_inset Formula $\mathbf{x}$
\end_inset
.
The deformation gradient of each generation is
\begin_inset Formula $\mathbf{F}^{\gamma}=\partial\mathbf{x}/\partial\mathbf{X}^{\gamma}$
\end_inset
.
The first generation (
\begin_inset Formula $\gamma=1)$
\end_inset
is assumed to be present at time
\begin_inset Formula $t^{1}=0$
\end_inset
,
therefore its reference configuration is
\begin_inset Formula $\mathbf{X}^{1}\equiv\mathbf{X}$
\end_inset
and its deformation gradient
\begin_inset Formula $\mathbf{F}^{1}=\partial\mathbf{x}/\partial\mathbf{X}^{1}$
\end_inset
is equivalent to
\begin_inset Formula $\mathbf{F}=\partial\mathbf{x}/\partial\mathbf{X}$
\end_inset
.
Each generation's reference configuration
\begin_inset Formula $\mathbf{X}^{\gamma}$
\end_inset
has a one-to-one mapping
\begin_inset Formula $\mathbf{F}^{\gamma1}=\partial\mathbf{X}^{\gamma}/\partial\mathbf{X}^{1}$
\end_inset
with the master reference configuration
\begin_inset Formula $\mathbf{X}^{1}$
\end_inset
,
which is that of the first generation.
This mapping is postulated based on a constitutive assumption with regard to that generation's state of stress at the time of its deposition.
In the current implementation,
the newly deposited generation is assumed to be in a stress-free state,
even though the underlying material is in a loaded configuration.
Therefore,
the mapping between generation
\begin_inset Formula $\gamma$
\end_inset
and the first generation is simply
\begin_inset Formula $\mathbf{F}^{\gamma1}=\mathbf{F}^{1}\left(\mathbf{X}^{1},t^{\gamma}\right)\equiv\mathbf{F}\left(\mathbf{X},t^{\gamma}\right)$
\end_inset
.
In other words,
when generation
\begin_inset Formula $\gamma$
\end_inset
first comes into existence,
its reference configuration is the current configuration at time
\begin_inset Formula $t^{\gamma}$
\end_inset
.
Note that
\begin_inset Formula $\mathbf{F}^{\gamma1}$
\end_inset
is a time-invariant (though not necessarily homogeneous) quantity that is determined uniquely at the birth of a generation.
\end_layout
\begin_layout Standard
The state of stress in a multigeneration solid is given by
\begin_inset Formula
\[
\boldsymbol{\sigma}=\sum\limits_{\gamma}\frac{1}{J^{\gamma1}}\boldsymbol{\sigma}^{\gamma}\left(\mathbf{F}^{\gamma}\right)
\]
\end_inset
where
\begin_inset Formula $\boldsymbol{\sigma}^{\gamma}\left(\mathbf{F}^{\gamma}\right)$
\end_inset
is the state of stress in the generation
\begin_inset Formula $\gamma$
\end_inset
,
as would be evaluated from a strain energy density function whose reference configuration is
\begin_inset Formula $\mathbf{X}^{\gamma}$
\end_inset
.
In the above equation,
\begin_inset Formula $J^{\gamma1}=\det\mathbf{F}^{\gamma1}$
\end_inset
and the factor
\begin_inset Formula $1/J^{\gamma1}$
\end_inset
ensures that the strain energy density of each generation is properly normalized the volume of the material in the master reference configuration
\begin_inset Formula $\mathbf{X}^{1}$
\end_inset
,
when summing up the stresses in all the generations.
\end_layout
\begin_layout Standard
Multigeneration solids typically exhibit residual stresses when
\begin_inset Formula $\mathbf{F}^{\gamma1}$
\end_inset
is inhomogeneous.
\end_layout
\begin_layout Subsection
General Specification of Multigeneration Solids
\begin_inset CommandInset label
LatexCommand label
name "subsec:General-Specification-Multigen"
\end_inset
\end_layout
\begin_layout Standard
The material type for a multigeneration solid is
\shape italic
\begin_inset Quotes eld
\end_inset
multigeneration
\begin_inset Quotes erd
\end_inset
\shape default
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
As of FEBio version 2.0,
the format for definining multi-generation materials has changed.
The previous format where the generations are defined in the
\shape italic
Globals
\shape default
section is no longer supported.
\end_layout
\end_inset
.
This material describes a mixture of elastic solids,
each created in a specific generation.
It is a container for any combination of the elastic materials described.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Definition of a generation.
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The tag defines a new generation.
It takes the following child elements.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Quotes eld
\end_inset
birth
\begin_inset Quotes erd
\end_inset
-time for this generation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the constitutive model for this generation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The
\shape italic
solid
\shape default
element defins the solid matrix constitutive relation and associated material properties.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The corresponding value of
\begin_inset Formula $t^{\gamma}$
\end_inset
for each of the generations is provided in the section.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.0
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Biphasic Materials
\begin_inset CommandInset label
LatexCommand label
name "sec:Biphasic-Materials"
\end_inset
\end_layout
\begin_layout Standard
Biphasic materials may be used to model a porous medium consisting of a mixture of a porous-permeable solid matrix and an interstitial fluid.
Each of these mixture constituents is assumed to be intrinsically incompressible.
This means that the true densities of the solid and fluid are invariant in space and time;
this assumption further implies that a biphasic mixture will undergo zero volume change when subjected to a hydrostatic fluid pressure.
Yet the mixture is compressible because the pores of the solid matrix may gain or lose fluid under general loading conditions.
The Cauchy stress
\begin_inset Formula ${\rm \boldsymbol{\sigma}}$
\end_inset
in a biphasic material is given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}=-p\mathbf{I}+{\rm \boldsymbol{\sigma}}^{e}\,,\label{eq:bp-stress}
\end{equation}
\end_inset
where
\begin_inset Formula $p$
\end_inset
is the interstitial fluid pressure and
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
is the stress resulting from the deformation of the porous solid matrix.
Therefore,
the constitutive relation of the solid matrix should be chosen from the list of unconstrained materials provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
nolink "false"
\end_inset
.
The user is referred to the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Theory Manual}}
\end_layout
\end_inset
for a general description of the biphasic theory.
\end_layout
\begin_layout Standard
In addition to selecting a constitutive relation for the solid matrix,
a constitutive relation must also be selected for the hydraulic permeability of the interstitial fluid flowing within the porous deformable solid matrix.
The hydraulic permeability relates the volumetric flux of the fluid relative to the solid,
\begin_inset Formula $\mathbf{w}$
\end_inset
,
to the interstitial fluid pressure gradient,
\begin_inset Formula $\nabla p$
\end_inset
,
according to
\begin_inset Formula
\begin{equation}
\mathbf{w}=-\mathbf{k}\cdot\grad p\,,\label{eq:bp-flux}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{k}$
\end_inset
is the hydraulic permeability tensor.
(Note that this expression does not account for the contribution of external body forces on the fluid.)
\end_layout
\begin_layout Standard
The governing equations for biphasic materials are the mixture momentum balance under quasi-static conditions,
in the absence of external body force,
\begin_inset Formula
\begin{equation}
\divg{\rm \boldsymbol{\sigma}}=-\grad p+\divg\boldsymbol{\sigma}^{e}=\mathbf{0}\,,\label{eq:bp-momentum-balance}
\end{equation}
\end_inset
and the mixture mass balance,
\begin_inset Formula
\begin{equation}
\divg\left(\mathbf{v}^{s}+\mathbf{w}\right)=0\,,\label{eq:bp-mixture-mass-balance}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{v}^{s}$
\end_inset
is the solid velocity.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
General Specification of Biphasic Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:General-Specification-Biphasic"
\end_inset
\end_layout
\begin_layout Standard
The material type for a biphasic material is
\shape italic
\begin_inset Quotes eld
\end_inset
biphasic
\begin_inset Quotes erd
\end_inset
\shape default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the solid matrix
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
solid volume fraction
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
in the reference configuration (
\begin_inset Formula $0<\varphi_{r}^{s}<1)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fluid density
\begin_inset Formula $\rho_{T}^{w}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the hydraulic permeability
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of the fluid supply
\begin_inset Formula $\hat{\varphi}^{w}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Stabilization parameter
\begin_inset Formula $\tau$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The tag encloses a description of the solid matrix constitutive relation and associated material properties,
as may be selected from the list provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
nolink "false"
\end_inset
.
The tag encloses a description of the permeability constitutive relation and associated material properties,
as may be selected from the list presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Permeability-Materials"
nolink "false"
\end_inset
.
The parameter must be greater than 0 (no solid) and less than 1 (no porosity).
The volume fraction of fluid (also known as the porosity) in the reference configuration is given by
\begin_inset Formula $1-\varphi_{r}^{s}$
\end_inset
.
The fluid density
\begin_inset Formula $\rho_{T}^{w}$
\end_inset
specified in and the solid density
\begin_inset Formula $\rho_{T}^{s}$
\end_inset
specified in within the tag are needed only when body forces are prescribed.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
...
(description of permeability material)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The stabilization parameter
\begin_inset Formula $\tau$
\end_inset
can be used to reduced oscillations in the fluid pressure field produced under certain loading conditions,
when the finite element mesh is relatively coarse in the vicinity of a free-draining boundary (a boundary on which the fluid pressure is set to zero).
When this occurs it is best to refine the mesh (create thinner elements in the direction normal to the boundary) to overcome these oscillations.
When mesh refinement is not feasible or practical,
one may use a non-zero stabilization parameter
\begin_inset Formula $\tau$
\end_inset
.
FEBio uses an implementation based on the formulation of Aguilar et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Aguilar08"
literal "false"
\end_inset
.
In our adaptation of this formulation the parameter
\begin_inset Formula $\tau$
\end_inset
has units of time.
Its value is best estimated by identifying the thickness
\begin_inset Formula $h$
\end_inset
of elements on the free-draining boundary,
the characteristic modulus
\begin_inset Formula $E$
\end_inset
of the solid matrix and hydraulic permeability
\begin_inset Formula $k$
\end_inset
in these elements.
Then
\begin_inset Formula $\tau$
\end_inset
may be set approximately to
\begin_inset Formula $h^{2}/\left(E\cdot k\right)$
\end_inset
.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Permeability Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Permeability-Materials"
\end_inset
\end_layout
\begin_layout Standard
Permeability materials provide a constitutive relation for the hydraulic permeability of a biphasic material.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Constant Isotropic Permeability
\begin_inset CommandInset label
LatexCommand label
name "subsec:Constant-Isotropic-Permeability"
\end_inset
\end_layout
\begin_layout Standard
The material type for constant isotropic permeability is
\begin_inset Quotes eld
\end_inset
\shape italic
perm-const-iso
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
hydraulic permeability
\begin_inset Formula $k$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This isotropic material model uses the biphasic theory for describing the time-dependent material behavior of materials that consist of both a solid and fluid phase
\begin_inset CommandInset citation
LatexCommand citep
key "Mow80"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
When the permeability is isotropic,
\begin_inset Formula
\[
\mathbf{k}=k\,\mathbf{I}
\]
\end_inset
For this material model,
\begin_inset Formula $k$
\end_inset
is constant.
Generally,
this assumption is only reasonable when strains are small.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Exponential Isotropic Permeability
\begin_inset CommandInset label
LatexCommand label
name "subsec:Exponential-Isotropic-Permeability"
\end_inset
\end_layout
\begin_layout Standard
The material type for exponential isotropic permeability is
\begin_inset Quotes eld
\end_inset
\shape italic
perm-exp-iso
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
isotropic hydraulic permeability
\begin_inset Formula $k_{0}$
\end_inset
in the reference state
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
exponential strain-dependence coefficient
\begin_inset Formula $M$
\end_inset
(
\begin_inset Formula $M\ge0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This isotropic material model has the general form
\begin_inset Formula
\[
\mathbf{k}=k\left(J\right)\,\mathbf{I}
\]
\end_inset
where
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
is the determinant of the deformation gradient.
For this material model,
\begin_inset Formula
\[
k\left(J\right)=k_{0}\exp\left(M\frac{J-1}{J-\varphi_{0}}\right)\,,
\]
\end_inset
where
\begin_inset Formula $\varphi_{0}$
\end_inset
is the referential solid volume fraction of the porous solid matrix.
Pore closure occurs as
\begin_inset Formula $J$
\end_inset
approaches
\begin_inset Formula $\varphi_{0}$
\end_inset
from above,
in which case the permeability reduces to zero,
\begin_inset Formula
\[
\lim_{J\to\varphi_{0}}k\left(J\right)=0\,.
\]
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open
\begin_layout Plain Layout
\begin_inset Graphics
filename Figures/FigPermExpIso.png
lyxscale 50
scale 50
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Exponential isotropic permeability,
showing dependence of
\begin_inset Formula $k\left(J\right)/k_{0}$
\end_inset
on material parameter
\begin_inset Formula $M$
\end_inset
,
when
\begin_inset Formula $\varphi_{0}=0.2$
\end_inset
and
\begin_inset Formula $\varphi_{0}
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
1.5
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Holmes-Mow
\begin_inset CommandInset label
LatexCommand label
name "subsec:perm-Holmes-Mow"
\end_inset
\end_layout
\begin_layout Standard
The material type for Holmes-Mow permeability is
\shape italic
\begin_inset Quotes eld
\end_inset
perm-Holmes-Mow
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
isotropic hydraulic permeability
\begin_inset Formula $k_{0}$
\end_inset
in the reference state
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
exponential strain-dependence coefficient
\begin_inset Formula $M$
\end_inset
(
\begin_inset Formula $M\ge0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
power-law exponent
\begin_inset Formula $\alpha$
\end_inset
(
\begin_inset Formula $\alpha\ge0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This isotropic material is similar to the constant isotropic permeability material described above,
except that it uses a strain-dependent permeability tensor
\begin_inset CommandInset citation
LatexCommand citep
key "Holmes90"
literal "true"
\end_inset
:
\begin_inset Formula
\[
\mathbf{k}=k\left(J\right)\mathbf{I},
\]
\end_inset
where,
\begin_inset Formula
\[
k\left(J\right)=k_{0}\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{0}}\right)^{\alpha}e^{\frac{1}{2}M\left(J^{2}-1\right)}\,,
\]
\end_inset
and
\begin_inset Formula $J$
\end_inset
is the Jacobian of the deformation,
i.e.
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
where
\series bold
\begin_inset Formula $\mathbf{F}$
\end_inset
\series default
is the deformation gradient.
Here,
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
is the referential solid volume fraction in the current configuration and
\begin_inset Formula $\varphi_{0}=\varphi_{r}^{s}\left(0\right)$
\end_inset
is its value in the reference configuration.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout Standard
This example defines a permeability material of the Holmes-Mow type.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
1.5
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Referentially Isotropic Permeability
\begin_inset CommandInset label
LatexCommand label
name "subsec:Referentially-Isotropic-Permeabi"
\end_inset
\end_layout
\begin_layout Standard
The material type for a biphasic material with strain-dependent permeability which is isotropic in the reference configuration is
\shape italic
\begin_inset Quotes eld
\end_inset
perm-ref-iso
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
hydraulic permeability
\begin_inset Formula $k_{0r}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
hydraulic permeability
\begin_inset Formula $k_{1r}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
hydraulic permeability
\begin_inset Formula $k_{2r}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
exponential strain-dependence coefficient
\begin_inset Formula $M$
\end_inset
(
\begin_inset Formula $M\geqslant0)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
power-law exponent
\begin_inset Formula $\alpha$
\end_inset
(
\begin_inset Formula $\alpha\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This material uses a strain-dependent permeability tensor that accommodates strain-induced anisotropy:
\begin_inset Formula
\[
\mathbf{k}=\left(k_{0r}\mathbf{I}+\frac{k_{1r}}{J^{2}}\mathbf{b}+\frac{k_{2r}}{J^{4}}\mathbf{b}^{2}\right)\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{0}}\right)^{\alpha}e^{M\left(J^{2}-1\right)/2},
\]
\end_inset
where
\begin_inset Formula $J$
\end_inset
is the Jacobian of the deformation,
i.e.
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
where
\begin_inset Formula $\mathbf{F}$
\end_inset
is the deformation gradient,
and
\begin_inset Formula $\mathbf{b}=\mathbf{F}\cdot\mathbf{F}^{T}$
\end_inset
is the left Cauchy-Green tensor.
Here,
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
is the referential solid volume fraction in the current configuration and
\begin_inset Formula $\varphi_{0}=\varphi_{r}^{s}\left(0\right)$
\end_inset
is its value in the reference configuration.Note that the permeability in the reference state (
\begin_inset Formula $\mathbf{F}=\mathbf{I})$
\end_inset
is isotropic and given by
\begin_inset Formula $\mathbf{k}=\left(k_{0r}+k_{1r}+k_{2r}\right)\mathbf{I}$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
0.005
\end_layout
\begin_layout LyX-Code
0.002
\end_layout
\begin_layout LyX-Code
1.5
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Referentially Orthotropic Permeability
\begin_inset CommandInset label
LatexCommand label
name "subsec:Referentially-Orthotropic-Permea"
\end_inset
\end_layout
\begin_layout Standard
The material type for a poroelastic material with strain-dependent permeability which is orthotropic in the reference configuration is
\shape italic
\begin_inset Quotes eld
\end_inset
perm-ref-ortho
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
isotropic hydraulic permeability
\begin_inset Formula $k_{0r}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
hydraulic permeabilities
\begin_inset Formula $k_{1r}^{a}$
\end_inset
along orthogonal directions (
\begin_inset Formula $a=1,2,3$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
hydraulic permeabilities
\begin_inset Formula $k_{2r}^{a}$
\end_inset
along orthogonal directions (
\begin_inset Formula $a=1,2,3$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
isotropic exponential strain-dependence coefficient
\begin_inset Formula $M_{0}$
\end_inset
(
\begin_inset Formula $M_{0}\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
orthotropic exponential strain-dependence coefficient
\begin_inset Formula $M_{a}$
\end_inset
(
\begin_inset Formula $a=1,2,3$
\end_inset
,
\begin_inset Formula $M_{a}\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
isotropic power-law exponent
\begin_inset Formula $\alpha_{0}$
\end_inset
(
\begin_inset Formula $\alpha_{0}\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
power-law exponent
\begin_inset Formula $\alpha_{a}$
\end_inset
(
\begin_inset Formula $a=1,2,3$
\end_inset
,
\begin_inset Formula $\alpha_{a}\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This material uses a strain-dependent permeability tensor that accommodates strain-induced anisotropy:
\begin_inset Formula
\[
\mathbf{k}=k_{0}\mathbf{I}+\sum\limits_{a=1}^{3}k_{1}^{a}\mathbf{m}_{a}+k_{2}^{a}\left(\mathbf{m}_{a}\cdot\mathbf{b}+\mathbf{b}\cdot\mathbf{m}_{a}\right)\,,
\]
\end_inset
where,
\begin_inset Formula
\[
\begin{aligned}k_{0} & =k_{0r}\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{0}}\right)^{\alpha_{^{0}}}e^{M_{^{0}}\left(J^{2}-1\right)/2}\\
k_{1}^{a} & =\frac{k_{1r}^{a}}{J^{2}}\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{0}}\right)^{\alpha_{^{a}}}e^{M_{^{a}}\left(J^{2}-1\right)/2}\\
k_{2}^{a} & =\frac{k_{2r}^{a}}{2J^{4}}\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{0}}\right)^{\alpha_{^{a}}}e^{M_{a}\left(J^{2}-1\right)/2}
\end{aligned}
,\quad a=1,2,3\,.
\]
\end_inset
\begin_inset Formula $J$
\end_inset
is the Jacobian of the deformation,
i.e.
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
where
\begin_inset Formula $\mathbf{F}$
\end_inset
is the deformation gradient.
\begin_inset Formula $\mathbf{m}_{a}$
\end_inset
are second order tensors representing the spatial structural tensors describing the orthogonal planes of symmetry,
given by
\begin_inset Formula
\[
\mathbf{m}_{a}=\mathbf{F}\cdot\left(\mathbf{V}_{a}\otimes\mathbf{V}_{a}\right)\cdot\mathbf{F}^{T},\quad a=1-3,
\]
\end_inset
where
\begin_inset Formula $\mathbf{V}_{a}$
\end_inset
are orthonormal vectors normal to the planes of symmetry (defined as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Orthotropic-Materials"
nolink "false"
\end_inset
).
Here,
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
is the referential solid volume fraction in the current configuration and
\begin_inset Formula $\varphi_{0}=\varphi_{r}^{s}\left(0\right)$
\end_inset
is its value in the reference configuration.
Note that the permeability in the reference state (
\begin_inset Formula $\mathbf{F}=\mathbf{I})$
\end_inset
is given by
\begin_inset Formula $\mathbf{k}=k_{0r}\mathbf{I}+\sum\limits_{a=1}^{3}\left(k_{1r}^{a}+k_{2r}^{a}\right)\mathbf{V}_{a}\otimes\mathbf{V}_{a}$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
0.01,
0.02,
0.03
\end_layout
\begin_layout LyX-Code
0.001,
0.002,
0.003
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
1.5,
2.0,
2.5
\end_layout
\begin_layout LyX-Code
1.5
\end_layout
\begin_layout LyX-Code
2,
2.5,
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Referentially Transversely Isotropic Permeability
\begin_inset CommandInset label
LatexCommand label
name "subsec:Referentially-Trans-Iso-Perm"
\end_inset
\end_layout
\begin_layout Standard
The material type for a biphasic material with strain-dependent permeability which is transversely isotropic in the reference configuration is
\shape italic
\begin_inset Quotes eld
\end_inset
perm-ref-trans-iso
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
isotropic hydraulic permeability
\begin_inset Formula $k_{0r}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
axial hydraulic permeability
\begin_inset Formula $k_{1r}^{A}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
axial hydraulic permeability
\begin_inset Formula $k_{2r}^{A}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
transverse hydraulic permeability
\begin_inset Formula $k_{1r}^{T}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
transverse hydraulic permeability
\begin_inset Formula $k_{2r}^{T}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
isotropic exponential strain-dependence coefficient
\begin_inset Formula $M_{0}$
\end_inset
(
\begin_inset Formula $M_{0}\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
axial exponential strain-dependence coefficient
\begin_inset Formula $M_{A}$
\end_inset
(
\begin_inset Formula $M_{A}\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
transverse exponential strain-dependence coefficient
\begin_inset Formula $M_{T}$
\end_inset
(
\begin_inset Formula $M_{T}\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
isotropic power-law exponent
\begin_inset Formula $\alpha_{0}$
\end_inset
(
\begin_inset Formula $\alpha_{0}\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
axial power-law exponent
\begin_inset Formula $\alpha_{A}$
\end_inset
(
\begin_inset Formula $\alpha_{A}\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
transverse power-law exponent
\begin_inset Formula $\alpha_{T}$
\end_inset
(
\begin_inset Formula $\alpha_{T}\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This material uses a strain-dependent permeability tensor that accommodates strain-induced anisotropy:
\begin_inset Formula
\[
\begin{aligned}\mathbf{k} & =k_{0r}\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{0}}\right)^{\alpha_{0}}e^{M_{^{0}}\left(J^{2}-1\right)/2}\mathbf{I}\\
& +\left(\frac{k_{1r}^{T}}{J^{2}}\left(\mathbf{b}-\mathbf{m}\right)+\frac{k_{2r}^{T}}{2J^{4}}\left[2\mathbf{b}^{2}-\left(\mathbf{m}\cdot\mathbf{b}+\mathbf{b}\cdot\mathbf{m}\right)\right]\right)\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{0}}\right)^{\alpha_{T}}e^{M_{T}\left(J^{2}-1\right)/2}\\
& +\left(\frac{1}{J^{2}}k_{1r}^{A}\mathbf{m}+\frac{1}{2J^{4}}k_{2r}^{A}\left(\mathbf{m}\cdot\mathbf{b}+\mathbf{b}\cdot\mathbf{m}\right)\right)\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{0}}\right)^{\alpha_{A}}e^{M_{A}\left(J^{2}-1\right)/2}
\end{aligned}
,
\]
\end_inset
where
\begin_inset Formula $J$
\end_inset
is the Jacobian of the deformation,
i.e.
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
where
\begin_inset Formula $\mathbf{F}$
\end_inset
is the deformation gradient,
and
\begin_inset Formula $\mathbf{b}=\mathbf{F}\cdot\mathbf{F}^{T}$
\end_inset
is the left Cauchy-Green tensor.
\begin_inset Formula $\mathbf{m}$
\end_inset
is a second order tensor representing the spatial structural tensor describing the axial direction,
given by
\begin_inset Formula
\[
\mathbf{m}=\mathbf{F}\cdot\left(\mathbf{V}\otimes\mathbf{V}\right)\cdot\mathbf{F}^{T}\,,
\]
\end_inset
where
\begin_inset Formula $\mathbf{V}$
\end_inset
is a unit vector along the axial direction (defined as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
).
Here,
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
is the referential solid volume fraction in the current configuration and
\begin_inset Formula $\varphi_{0}=\varphi_{r}^{s}\left(0\right)$
\end_inset
is its value in the reference configuration.
Note that the permeability in the reference state (
\begin_inset Formula $\mathbf{F}=\mathbf{I})$
\end_inset
is given by,
\end_layout
\begin_layout Standard
\begin_inset Formula
\[
\mathbf{k_{|F=I}}=\left(k_{0r}+k_{1r}^{T}+k_{2r}^{T}\right)\mathbf{I}+\left(k_{1r}^{A}-k_{1r}^{T}+k_{2r}^{A}-k_{2r}^{T}\right)\left(\mathbf{V}\otimes\mathbf{V}\right)
\]
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.002
\end_layout
\begin_layout LyX-Code
0.01
\end_layout
\begin_layout LyX-Code
0.01
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
0.05
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
1.5
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
2.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Fluid Supply Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Fluid-Supply-Materials"
\end_inset
\end_layout
\begin_layout Standard
Fluid supply materials may be used to simulate an external source of fluid,
such as supply from microvasculature that is not modeled explicitly.
The fluid supply term,
\begin_inset Formula $\hat{\varphi}^{w}$
\end_inset
,
appears in the mass balance relation for the mixture,
\begin_inset Formula
\[
\divg\left(\mathbf{v}^{s}+\mathbf{w}\right)=\hat{\varphi}^{w}\,.
\]
\end_inset
\begin_inset Formula $\hat{\varphi}^{w}$
\end_inset
has units of reciprocal time [
\series bold
t
\series default
\begin_inset Formula $^{\mathrm{-1}}$
\end_inset
];
it represents the rate at which the volume fraction of fluid changes with time.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Starling Equation
\begin_inset CommandInset label
LatexCommand label
name "subsec:Starling-Equation"
\end_inset
\end_layout
\begin_layout Standard
The material type for Starling's equation for fluid supply is
\shape italic
\begin_inset Quotes eld
\end_inset
Starling
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
hydraulic filtration coefficient,
\begin_inset Formula $k_{p}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fluid pressure in external source,
\begin_inset Formula $p_{v}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The fluid supply is given by Starling's equation,
\begin_inset Formula
\[
\hat{\varphi}^{w}=k_{p}\left(p_{v}-p\right)\,,
\]
\end_inset
where
\begin_inset Formula $p$
\end_inset
is the fluid pressure in the biphasic material.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout Standard
This example defines a fluid supply material of the Starling type.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Biphasic-Solute Materials
\begin_inset CommandInset label
LatexCommand label
name "sec:Biphasic-Solute-Materials"
\end_inset
\end_layout
\begin_layout Standard
Biphasic-solute materials may be used to model the transport of a solvent and a solute in a neutral porous solid matrix,
under isothermal conditions.
Each of these mixture constituents is assumed to be intrinsically incompressible.
This means that their true densities are invariant in space and time;
this assumption further implies that a biphasic-solute mixture will undergo zero volume change when subjected to a hydrostatic fluid pressure.
Yet the mixture is compressible because the pores of the solid matrix may gain or lose fluid under general loading conditions.
Therefore,
the constitutive relation of the solid matrix should be chosen from the list of unconstrained materials provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
nolink "false"
\end_inset
.
The volume fraction of the solute is assumed to be negligible relative to the volume fractions of the solid or solvent.
This means that the mixture will not change in volume as the solute concentration changes.
As the solute transports through the mixture,
it may experience frictional interactions with the solvent and the solid.
This friction may act as a hindrance to the solute transport,
or may help convect the solute through the mixture.
The distinction between frictional exchanges with the solvent and solid is embodied in the specification of two diffusivities for the solute:
The free diffusivity,
which represents diffusivity in the absence of a solid matrix (frictional exchange only with the solvent) and the mixture diffusivity,
which represents the combined frictional interactions with the solvent and solid matrix.
The user is referred to the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Theory Manual}}
\end_layout
\end_inset
for a more detailed description of the biphasic-solute theory.
\end_layout
\begin_layout Standard
Due to steric volume exclusion and short-range electrostatic interactions,
the solute may not have access to all of the pores of the solid matrix.
In other words,
only a fraction
\begin_inset Formula $\kappa$
\end_inset
of the pores is able to accommodate a solute of a particular size (
\begin_inset Formula $0<\kappa\leqslant1)$
\end_inset
.
Furthermore,
the activity
\begin_inset Formula $\gamma$
\end_inset
of the solute (the extent by which the solute concentration influences its chemical potential) may be similarly altered by the surrounding porous solid matrix.
Therefore,
the combined effects of volume exclusion and attenuation of activity may be represented by the effective solubility
\begin_inset Formula $\tilde{\kappa}=\kappa/\gamma$
\end_inset
,
such that the chemical potential
\begin_inset Formula $\mu$
\end_inset
of the solute is given by
\begin_inset Formula
\begin{equation}
\mu=\mu_{0}\left(\theta\right)+\frac{R\theta}{M}\ln\frac{c}{\tilde{\kappa}}\,.\label{eq:bs-solute-chemical-potential}
\end{equation}
\end_inset
In this expression,
\begin_inset Formula $\mu_{0}$
\end_inset
is the solute chemical potential at some reference temperature
\begin_inset Formula $\theta$
\end_inset
;
\begin_inset Formula $c$
\end_inset
is the solute concentration on a solution-volume basis (number of moles of solute per volume of interstitial fluid in the mixture);
\begin_inset Formula $M$
\end_inset
is the solute molecular weight (an invariant quantity);
and
\begin_inset Formula $R$
\end_inset
is the universal gas constant.
In a biphasic-solute material,
a constitutive relation is needed for
\begin_inset Formula $\tilde{\kappa}$
\end_inset
;
in general,
\begin_inset Formula $\tilde{\kappa}$
\end_inset
may be a function of the solid matrix strain and the solute concentration.
In FEBio,
the dependence of the effective solubility on the solid matrix strain is currently constrained to a dependence on
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
.
\end_layout
\begin_layout Standard
In a biphasic-solute material,
the interstitial fluid pressure
\begin_inset Formula $p$
\end_inset
is influenced by both mechanical and chemical environments.
In other words,
this pressure includes both mechanical and osmotic contributions,
the latter arising from the presence of the solute.
The solvent mechano-chemical potential
\begin_inset Formula $\tilde{\mu}^{w}$
\end_inset
is given by
\begin_inset Formula
\begin{equation}
\tilde{\mu}^{w}=\mu_{0}^{w}\left(\theta\right)+\frac{1}{\rho_{T}^{w}}\left(p-R\theta\Phi c\right)\,,\label{eq:bs-solvent-chemical-potential}
\end{equation}
\end_inset
where
\begin_inset Formula $\mu_{0}^{w}$
\end_inset
is the solvent chemical potential at some reference temperature
\begin_inset Formula $\theta$
\end_inset
;
\begin_inset Formula $\rho_{T}^{w}$
\end_inset
is the true density of the solvent (an invariant property for an intrinsically incompressible fluid);
and
\begin_inset Formula $\Phi$
\end_inset
is the osmotic coefficient which represents the extent by which the solute concentration influences the solvent chemical potential.
In a biphasic-solute material,
a constitutive relation is needed for
\begin_inset Formula $\Phi$
\end_inset
;
in general,
\begin_inset Formula $\Phi$
\end_inset
may be a function of the solid matrix strain and the solute concentration.
In FEBio,
the dependence of the osmotic coefficient on the solid matrix strain is currently constrained to a dependence on
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
.
\end_layout
\begin_layout Standard
The solute mechano-chemical potential is nearly equal to its chemical potential because the solute volume fraction is assumed to be negligible.
In general,
momentum and energy balances evaluated across a boundary surface in a biphasic-solute mixture require that the mechano-chemical potentials of solvent and solute be continuous across that surface.
These continuity requirements are enforced automatically in FEBio by defining the effective fluid pressure
\begin_inset Formula $\tilde{p}$
\end_inset
and solute concentration
\begin_inset Formula $\tilde{c}$
\end_inset
as
\begin_inset Formula
\begin{equation}
\begin{aligned}\tilde{p} & =p-R\theta\Phi c\\
\tilde{c} & =\frac{c}{\tilde{\kappa}}
\end{aligned}
\,.\label{eq:bs-effective-p-c}
\end{equation}
\end_inset
Therefore,
nodal variables in FEBio consist of the solid matrix displacement
\begin_inset Formula $\mathbf{u}$
\end_inset
,
the effective fluid pressure
\begin_inset Formula $\tilde{p}$
\end_inset
,
and the effective solute concentration
\begin_inset Formula $\tilde{c}$
\end_inset
.
Essential boundary conditions must be imposed on these variables,
and not on the actual pressure
\begin_inset Formula $p$
\end_inset
or concentration
\begin_inset Formula $c$
\end_inset
.
(In a biphasic material however,
since
\begin_inset Formula $c=0$
\end_inset
,
the effective and actual fluid pressures are the same,
\begin_inset Formula $p=\tilde{p}$
\end_inset
.)
\end_layout
\begin_layout Standard
The mixture stress in a biphasic-solute material is given by
\begin_inset Formula $\boldsymbol{\sigma}=-p\mathbf{I}+\boldsymbol{\sigma}^{e}$
\end_inset
,
where
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
is the stress arising from the solid matrix strain.
The mixture traction on a surface with unit outward normal
\begin_inset Formula $\mathbf{n}$
\end_inset
is
\begin_inset Formula $\mathbf{t}=\boldsymbol{\sigma}\cdot\mathbf{n}$
\end_inset
.
This traction is continuous across the boundary surface.
Therefore,
the corresponding natural boundary condition for a biphasic-solute mixture is
\begin_inset Formula $\mathbf{t}=\mathbf{0}$
\end_inset
.
(In other words,
if no boundary condition is imposed on the solid matrix displacement or mixture traction,
the natural boundary condition is in effect.)
\end_layout
\begin_layout Standard
The natural boundary conditions for the solvent and solute are similarly
\begin_inset Formula $\mathbf{w}\cdot\mathbf{n}=0$
\end_inset
and
\begin_inset Formula $\mathbf{j}\cdot\mathbf{n}=0$
\end_inset
,
where
\begin_inset Formula $\mathbf{w}$
\end_inset
is the volumetric flux of solvent relative to the solid and
\begin_inset Formula $\mathbf{j}$
\end_inset
is the molar flux of solute relative to the solid.
In general,
\begin_inset Formula $\mathbf{w}$
\end_inset
and
\begin_inset Formula $\mathbf{j}$
\end_inset
are given by
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{w} & =-\mathbf{\tilde{k}}\cdot\left(\nabla\tilde{p}+R\theta\frac{\tilde{\kappa}}{d_{0}}\mathbf{d}\cdot\nabla\tilde{c}\right)\\
\mathbf{j} & =\tilde{\kappa}\mathbf{d}\cdot\left(-\varphi^{w}\nabla\tilde{c}+\frac{\tilde{c}}{d_{0}}\mathbf{w}\right)
\end{aligned}
\,,\label{eq:bs-fluxes-w-j}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\tilde{\mathbf{k}}=\left[\mathbf{k}^{-1}+\frac{R\theta}{\varphi^{w}}\frac{\tilde{\kappa}c}{d_{0}}\left(\mathbf{I}-\frac{\mathbf{d}}{d_{0}}\right)\right]^{-1}\label{eq:bs-effective-perm}
\end{equation}
\end_inset
is the effective hydraulic permeability of the interstitial fluid solution (solvent and solute) through the porous solid matrix;
\begin_inset Formula $\mathbf{k}$
\end_inset
is the hydraulic permeability of the solvent through the porous solid matrix;
\begin_inset Formula $\mathbf{d}$
\end_inset
is the solute diffusivity through the mixture (frictional interactions with solvent and solid);
and
\begin_inset Formula $d_{0}$
\end_inset
is the solute free diffusivity (frictional interactions with solvent only).
\begin_inset Formula $\varphi^{w}\approx1-\varphi^{s}$
\end_inset
is the solid matrix porosity in the current configuration.
The above expressions for the solvent and solute flux do not account for external body forces.
\end_layout
\begin_layout Standard
The governing equations for a biphasic-solute material are the momentum balance for the mixture,
Eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bp-momentum-balance"
nolink "false"
\end_inset
,
the mass balance for the mixture,
which reduces to Eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:bp-mixture-mass-balance"
nolink "false"
\end_inset
under the assumption of dilute solutions,
and the mass balance for the solute,
\begin_inset Formula
\begin{equation}
\frac{\partial\left(\varphi^{w}c\right)}{\partial t}+\divg\left(\mathbf{j}+\varphi^{w}c\mathbf{v}^{s}\right)=0\,.\label{eq:bs-solute-mass-balance}
\end{equation}
\end_inset
\end_layout
\begin_layout Subsection
Guidelines for Biphasic-Solute Analyses
\begin_inset CommandInset label
LatexCommand label
name "subsec:Guidelines-for-Biphasic-Solute"
\end_inset
\end_layout
\begin_layout Subsubsection
Prescribed Boundary Conditions
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-Boundary-Conditions"
\end_inset
\end_layout
\begin_layout Standard
In most analyses,
it may be assumed that the ambient fluid pressure in the external environment is zero,
thus
\begin_inset Formula $p_{\ast}=0$
\end_inset
,
where the subscripted asterisk is used to denote environmental conditions.
The ambient solute concentration may be represented by
\begin_inset Formula $c_{\ast}$
\end_inset
.
It follows that the effective fluid pressure in the external environment is
\begin_inset Formula $\tilde{p}_{\ast}=-R\theta\Phi_{\ast}c_{\ast}$
\end_inset
and the effective concentration is
\begin_inset Formula $\tilde{c}_{\ast}=c_{\ast}/\tilde{\kappa}_{\ast}$
\end_inset
.
Therefore,
in biphasic-solute analyses,
whenever the external environment contains a solute at a concentration of
\begin_inset Formula $c_{\ast}$
\end_inset
,
the user must remember to prescribe non-zero boundary conditions for the effective solute concentration
\shape italic
and
\shape default
the effective fluid pressure.
\end_layout
\begin_layout Standard
Letting
\begin_inset Formula $p_{\ast}=0$
\end_inset
also implies that prescribed mixture normal tractions (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Mixture-Normal-Traction"
nolink "false"
\end_inset
) represent only the traction above ambient conditions.
Note that users are not obligated to assume that
\begin_inset Formula $p_{\ast}=0$
\end_inset
.
However,
if a non-zero value is assumed for the ambient pressure,
then users must remember to incorporate this non-zero value whenever prescribing mixture normal tractions.
\end_layout
\begin_layout Subsubsection
Prescribed Initial Conditions
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-Initial-Conditions"
\end_inset
\end_layout
\begin_layout Standard
When a biphasic-solute material is initially exposed to a given external environment with effective pressure
\begin_inset Formula $\tilde{p}_{\ast}$
\end_inset
and effective concentration
\begin_inset Formula $\tilde{c}_{\ast}$
\end_inset
,
the initial conditions inside the material should be set to
\begin_inset Formula $\tilde{p}=\tilde{p}_{\ast}$
\end_inset
and
\begin_inset Formula $\tilde{c}=\tilde{c}_{\ast}$
\end_inset
in order to produce the correct initial state.
The values of
\begin_inset Formula $\tilde{p}_{\ast}$
\end_inset
and
\begin_inset Formula $\tilde{c}_{\ast}$
\end_inset
should be evaluated as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Prescribed-Boundary-Conditions-1"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
General Specification of Biphasic-Solute Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:General-Specification-BS-Materials"
\end_inset
\end_layout
\begin_layout Standard
The material type for a biphasic-solute material is
\shape italic
\begin_inset Quotes eld
\end_inset
biphasic-solute
\begin_inset Quotes erd
\end_inset
\shape default
.
Constitutive relations must be provided for the solid matrix,
the hydraulic permeability
\begin_inset Formula $\mathbf{k}$
\end_inset
,
the solute diffusivities
\begin_inset Formula $\mathbf{d}$
\end_inset
and
\begin_inset Formula $d_{0}$
\end_inset
,
the effective solubility
\begin_inset Formula $\tilde{\kappa}$
\end_inset
and the osmotic coefficient
\begin_inset Formula $\Phi$
\end_inset
.
Therefore,
the following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specification of the solid matrix
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
solid volume fraction
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
in the reference configuration
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specification of the hydraulic permeability
\begin_inset Formula $\mathbf{k}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specification of the osmotic coefficient
\begin_inset Formula $\Phi\quad\mathbf{d}d_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specification of the solute properties
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The tag encloses a description of the solid matrix constitutive relation and associated material properties,
as may be selected from the list provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
nolink "false"
\end_inset
.
The solid volume fraction in the reference configuration,
,
must be greater than 0 (no solid) and less than 1 (only solid).
The volume fraction of fluid (also known as the porosity) in the reference configuration is given by
\begin_inset Formula $1-\varphi_{0}$
\end_inset
.
The tag encloses a description of the permeability constitutive relation and associated material properties,
as may be selected from the list presented in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Permeability-Materials"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
The tag provides a description of the solute in the biphasic-solute mixture.
This tag includes the required
\shape italic
sol
\shape default
attribute,
which should reference a solute
\shape italic
id
\shape default
from the description in the section (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solutes"
nolink "false"
\end_inset
).
The following parameters must be defined in this description:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specification of the solute diffusivities
\begin_inset Formula $\mathbf{d}$
\end_inset
and
\begin_inset Formula $d_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specification of the solute effective solubility
\begin_inset Formula $\tilde{\kappa}$
\end_inset
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The and tags enclose descriptions of materials that may be selected from the lists presented in Sections
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Diffusivity-Materials"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solubility-Materials"
nolink "false"
\end_inset
,
respectively.
Each solute tag must include a
\begin_inset Quotes eld
\end_inset
sol
\begin_inset Quotes erd
\end_inset
attribute.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
...
(description of permeability material)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
...
(description of osmotic coefficient material)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
...
(description of diffusivity material)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
...
(description of solubility material)
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
When a biphasic-solute material is employed in an analysis,
it is also necessary to specify the values of the universal gas constant
\begin_inset Formula $R$
\end_inset
[
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
L
\series default
/
\series bold
n
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
T
\series default
] and absolute temperature
\begin_inset Formula $\theta$
\end_inset
[
\series bold
T
\series default
] under in the section,
using a self-consistent set of units.
A solute must also be defined in the section,
whose id should be associated with the
\begin_inset Quotes eld
\end_inset
sol
\begin_inset Quotes erd
\end_inset
attribute in the solute material description.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
8.314
\end_layout
\begin_layout LyX-Code
298
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
It is also possible to create models with biphasic-solute materials that use different solutes in different regions.
In that case,
introduce additional solute entries in the section and refer to those solute ids in the biphasic-solute material descriptions.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Diffusivity Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Diffusivity-Materials"
\end_inset
\end_layout
\begin_layout Standard
Diffusivity materials provide a constitutive relation for the solute diffusivity in a biphasic-solute material.
In general,
the diffusivity tensor
\begin_inset Formula $\mathbf{d}$
\end_inset
may be a function of strain and solute concentration.
\end_layout
\begin_layout Subsubsection
Constant Isotropic Diffusivity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Constant-Isotropic-Diffusivity"
\end_inset
\end_layout
\begin_layout Standard
The material type for constant isotropic diffusivity materials is
\begin_inset Quotes eld
\end_inset
\shape italic
diff-const-iso
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
free diffusivity
\begin_inset Formula $d_{0}$
\end_inset
of solute (diffusivity in solution)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
constant isotropic diffusivity
\begin_inset Formula $d$
\end_inset
of solute in biphasic-solute mixture
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/
\series bold
t
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
When the permeability is isotropic,
\begin_inset Formula
\[
\mathbf{d}=d\,\mathbf{I}
\]
\end_inset
For this material model,
\begin_inset Formula $d$
\end_inset
is constant.
This assumption is only true when strains are small.
Note that the user must specify
\begin_inset Formula $d\leqslant d_{0}$
\end_inset
,
since a solute cannot diffuse through the biphasic-solute mixture faster than in free solution.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1e-9 free_diff >
\end_layout
\begin_layout LyX-Code
0.5e-9
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Constant Orthotropic Diffusivity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Constant-Orthotropic-Diffusivity"
\end_inset
\end_layout
\begin_layout Standard
The material type for constant orthotropic diffusivity materials is
\begin_inset Quotes eld
\end_inset
\shape italic
diff-const-ortho
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
free diffusivity
\begin_inset Formula $d_{0}$
\end_inset
of solute (diffusivity in solution)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
diffusivities
\begin_inset Formula $d^{a}$
\end_inset
along orthogonal directions (
\begin_inset Formula $a=1,2,3)$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/
\series bold
t
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
When the permeability is orhotropic,
\begin_inset Formula
\[
\mathbf{d}=\sum\limits_{a=1}^{3}d^{a}\mathbf{V}_{a}\otimes\mathbf{V}_{a}
\]
\end_inset
where
\begin_inset Formula $\mathbf{V}_{a}$
\end_inset
are orthonormal vectors normal to the planes of symmetry (defined as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
).
For this material model,
\begin_inset Formula $d^{a}$
\end_inset
's are constant.
Therefore this model should be used only when strains are small.
Note that the user must specify
\begin_inset Formula $d^{a}\leqslant d_{0}$
\end_inset
,
since a solute cannot diffuse through the biphasic-solute mixture faster than in free solution.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.005
\end_layout
\begin_layout LyX-Code
0.002,0.001,0.003
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Referentially Isotropic Diffusivity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Referentially-Isotropic-Diffusiv"
\end_inset
\end_layout
\begin_layout Standard
The material type for a strain-dependent diffusivity tensor which is isotropic in the reference configuration is
\shape italic
\begin_inset Quotes eld
\end_inset
diff-ref-iso
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
free diffusivity
\begin_inset Formula $d_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
diffusivity
\begin_inset Formula $d_{0r}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
diffusivity
\begin_inset Formula $d_{1r}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
diffusivity
\begin_inset Formula $d_{2r}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
exponential strain-dependence coefficient
\begin_inset Formula $M$
\end_inset
(
\begin_inset Formula $M\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
power-law exponent
\begin_inset Formula $\alpha$
\end_inset
(
\begin_inset Formula $\alpha\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This material uses a strain-dependent diffusivity tensor that accommodates strain-induced anisotropy:
\begin_inset Formula
\[
\mathbf{d}=\left(d_{0r}\mathbf{I}+\frac{d_{1r}}{J^{2}}\mathbf{b}+\frac{d_{2r}}{J^{4}}\mathbf{b}^{2}\right)\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\right)e^{M\left(J^{2}-1\right)/2},
\]
\end_inset
where
\begin_inset Formula $J$
\end_inset
is the jacobian of the deformation,
i.e.
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
where
\begin_inset Formula $\mathbf{F}$
\end_inset
is the deformation gradient,
and
\begin_inset Formula $\mathbf{b}=\mathbf{F}\cdot\mathbf{F}^{T}$
\end_inset
is the left Cauchy-Green tensor.
Note that the diffusivity in the reference state (
\begin_inset Formula $\mathbf{F}=\mathbf{I})$
\end_inset
is isotropic and given by
\begin_inset Formula $\mathbf{d}=\left(d_{0r}+d_{1r}+d_{2r}\right)\mathbf{I}$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.2
\end_layout
\begin_layout LyX-Code
0.005
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
0.005
\end_layout
\begin_layout LyX-Code
0.002
\end_layout
\begin_layout LyX-Code
1.5
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Referentially Orthotropic Diffusivity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Referentially-Orthotropic-Diffus"
\end_inset
\end_layout
\begin_layout Standard
The material type for a strain-dependent diffusivity which is orthotropic in the reference configuration is
\shape italic
\begin_inset Quotes eld
\end_inset
diff-ref-ortho
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
free diffusivity
\begin_inset Formula $d_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
isotropic diffusivity
\begin_inset Formula $d_{0r}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
diffusivities
\begin_inset Formula $d_{1r}^{a}$
\end_inset
along orthogonal directions (
\begin_inset Formula $a=1,2,3$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
diffusivities
\begin_inset Formula $d_{2r}^{a}$
\end_inset
along orthogonal directions (
\begin_inset Formula $a=1,2,3$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
isotropic exponential strain-dependence coefficient
\begin_inset Formula $M_{0}$
\end_inset
(
\begin_inset Formula $M_{0}\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
orthotropic exponential strain-dependence coefficient
\begin_inset Formula $M_{a}$
\end_inset
(
\begin_inset Formula $a=1,2,3$
\end_inset
,
\begin_inset Formula $M_{a}\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
isotropic power-law exponent
\begin_inset Formula $\alpha_{0}$
\end_inset
(
\begin_inset Formula $\alpha_{0}\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
power-law exponent
\begin_inset Formula $\alpha_{a}$
\end_inset
(
\begin_inset Formula $a=1,2,3$
\end_inset
,
\begin_inset Formula $\alpha_{a}\geqslant0$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This material uses a strain-dependent diffusivity tensor that accommodates strain-induced anisotropy:
\begin_inset Formula
\[
\mathbf{d}=d_{0}\mathbf{I}+\sum\limits_{a=1}^{3}d_{1}^{a}\mathbf{m}_{a}+d_{2}^{a}\left(\mathbf{m}_{a}\cdot\mathbf{b}+\mathbf{b}\cdot\mathbf{m}_{a}\right),
\]
\end_inset
where,
\begin_inset Formula
\[
\begin{aligned}d_{0} & =d_{0r}\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\right)^{\alpha_{^{0}}}e^{M_{^{0}}\left(J^{2}-1\right)/2}\\
d_{1}^{a} & =\frac{d_{1r}^{a}}{J^{2}}\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\right)^{\alpha_{^{a}}}e^{M_{^{a}}\left(J^{2}-1\right)/2}\\
d_{2}^{a} & =\frac{d_{2r}^{a}}{2J^{4}}\left(\frac{J-\varphi_{r}^{s}}{1-\varphi_{r}^{s}}\right)^{\alpha_{^{a}}}e^{M_{a}\left(J^{2}-1\right)/2}
\end{aligned}
,\quad a=1,2,3
\]
\end_inset
\begin_inset Formula $J$
\end_inset
is the Jacobian of the deformation,
i.e.
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
where
\begin_inset Formula $\mathbf{F}$
\end_inset
is the deformation gradient.
\begin_inset Formula $\mathbf{m}_{a}$
\end_inset
are second order tensors representing the spatial structural tensors describing the orthogonal planes of symmetry,
given by
\begin_inset Formula
\[
\mathbf{m}_{a}=\mathbf{F}\cdot\left(\mathbf{V}_{a}\otimes\mathbf{V}_{a}\right)\cdot\mathbf{F}^{T},\quad a=1-3,
\]
\end_inset
where
\begin_inset Formula $\mathbf{V}_{a}$
\end_inset
are orthonormal vectors normal to the planes of symmetry (defined as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
).
Note that the diffusivity in the reference state (
\begin_inset Formula $\mathbf{F}=\mathbf{I})$
\end_inset
is given by
\begin_inset Formula $\mathbf{d}=d_{0r}\mathbf{I}+\sum\limits_{a=1}^{3}\left(d_{1r}^{a}+d_{2r}^{a}\right)\mathbf{V}_{a}\otimes\mathbf{V}_{a}$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.2
\end_layout
\begin_layout LyX-Code
0.005
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
0.01,
0.02,
0.03
\end_layout
\begin_layout LyX-Code
0.001,
0.002,
0.003
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
1.5,
2.0,
2.5
\end_layout
\begin_layout LyX-Code
1.5
\end_layout
\begin_layout LyX-Code
2,
2.5,
3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Albro Isotropic Diffusivity
\begin_inset CommandInset label
LatexCommand label
name "subsec:Albro-Isotropic-Diffusivity"
\end_inset
\end_layout
\begin_layout Standard
The material type for a porosity and concentration-dependent diffusivity which is isotropic is
\shape italic
\begin_inset Quotes eld
\end_inset
diff-Albro-iso
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
free diffusivity
\begin_inset Formula $d_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
inverse of characteristic concentration for concentration-dependence
\begin_inset Formula $c_{D}^{-1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
/
\series bold
n
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
coefficient of porosity-dependence
\begin_inset Formula $\alpha_{D}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
This material uses a porosity and concentration-dependent diffusivity tensor that remains isotropic with deformation:
\begin_inset Formula
\[
\mathbf{d}=d_{0}\exp\left(-\alpha_{D}\frac{1-\varphi^{w}}{\varphi^{w}}-\frac{c}{c_{D}}\right)\mathbf{I},
\]
\end_inset
where
\begin_inset Formula $c_{D}^{-1}=1/c_{D}$
\end_inset
and the porosity
\begin_inset Formula $\varphi^{w}$
\end_inset
varies with deformation according to the kinematic constraint
\begin_inset Formula
\[
\varphi^{w}=1-\frac{\varphi_{r}^{s}}{J}\,.
\]
\end_inset
\begin_inset Formula $J$
\end_inset
is the Jacobian of the deformation,
i.e.
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
where
\begin_inset Formula $\mathbf{F}$
\end_inset
is the deformation gradient and
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
is the referential solid volume fraction.
Here,
\begin_inset Formula $c$
\end_inset
represents the actual concentration of the solute whose diffusivity is given by
\begin_inset Formula $\mathbf{d}$
\end_inset
.
This constitutive relation is based on the experimental findings reported by Albro et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Albro09"
literal "true"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
123e-6
\end_layout
\begin_layout LyX-Code
18
\end_layout
\begin_layout LyX-Code
0.0625
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Solubility Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Solubility-Materials"
\end_inset
\end_layout
\begin_layout Subsubsection
Constant Solubility
\begin_inset CommandInset label
LatexCommand label
name "subsec:Constant-Solubility"
\end_inset
\end_layout
\begin_layout Standard
The material type for constant solubility materials is
\begin_inset Quotes eld
\end_inset
\shape italic
solub-const
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
solubility
\begin_inset Formula $\tilde{\kappa}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material model,
\begin_inset Formula $\tilde{\kappa}$
\end_inset
is constant.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Osmotic Coefficient Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Osmotic-Coefficient-Materials"
\end_inset
\end_layout
\begin_layout Subsubsection
Constant Osmotic Coefficient
\begin_inset CommandInset label
LatexCommand label
name "subsec:Constant-Osmotic-Coefficient"
\end_inset
\end_layout
\begin_layout Standard
The material type for constant osmotic coefficient materials is
\begin_inset Quotes eld
\end_inset
\shape italic
osm-coef-const
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Osmotic coefficient
\begin_inset Formula $\Phi$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this material model,
\begin_inset Formula $\Phi$
\end_inset
is constant.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Triphasic and Multiphasic Materials
\begin_inset CommandInset label
LatexCommand label
name "sec:Triphasic-Multiphasic-Materials"
\end_inset
\end_layout
\begin_layout Standard
Triphasic materials may be used to model the transport of a solvent and a pair of monovalent salt counter-ions (two solutes with charge numbers
\begin_inset Formula $+$
\end_inset
1 and -1) in a charged porous solid matrix,
under isothermal conditions.
Multiphasic materials may be used to model the transport of a solvent and any number of neutral or charged solutes;
a triphasic mixture is a special case of a multiphasic mixture.
Each of the mixture constituents is assumed to be intrinsically incompressible.
This means that their true densities are invariant in space and time;
this assumption further implies that a multiphasic mixture will undergo zero volume change when subjected to a hydrostatic fluid pressure.
Yet the mixture is compressible because the pores of the solid matrix may gain or lose fluid under general loading conditions.
Therefore,
the constitutive relation of the solid matrix should be chosen from the list of unconstrained materials provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
nolink "false"
\end_inset
.
The volume fraction of the solutes is assumed to be negligible relative to the volume fractions of the solid or solvent.
This means that the mixture will not change in volume as the solute concentrations change.
As the solutes transport through the mixture,
they may experience frictional interactions with the solvent and the solid.
This friction may act as a hindrance to the solute transport,
or may help convect the solutes through the mixture.
The distinction between frictional exchanges with the solvent and solid is embodied in the specification of two diffusivities for each solute:
The free diffusivity,
which represents diffusivity in the absence of a solid matrix (frictional exchange only with the solvent) and the mixture diffusivity,
which represents the combined frictional interactions with the solvent and solid matrix.
The user is referred to the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Theory Manual}}
\end_layout
\end_inset
for a more detailed description of triphasic and multiphasic theory.
\end_layout
\begin_layout Standard
Due to steric volume exclusion and short-range electrostatic interactions,
a solute
\begin_inset Formula $\alpha$
\end_inset
may not have access to all of the pores of the solid matrix.
In other words,
only a fraction
\begin_inset Formula $\kappa^{\alpha}$
\end_inset
of the pores is able to accommodate solute
\begin_inset Formula $\alpha$
\end_inset
(
\begin_inset Formula $0<\kappa^{\alpha}\leqslant1)$
\end_inset
.
Furthermore,
the activity
\begin_inset Formula $\gamma^{\alpha}$
\end_inset
of solute
\begin_inset Formula $\alpha$
\end_inset
(the extent by which the solute concentration influences its chemical potential) may be similarly altered by the surrounding porous solid matrix.
Therefore,
the combined effects of volume exclusion and attenuation of activity may be represented by the effective solubility
\begin_inset Formula $\hat{\kappa}^{\alpha}=\kappa^{\alpha}/\gamma^{\alpha}$
\end_inset
,
such that the chemical potential
\begin_inset Formula $\mu$
\end_inset
of the solute is given by
\begin_inset Formula
\begin{equation}
\mu^{\alpha}=\mu_{0}^{\alpha}\left(\theta\right)+\frac{R\theta}{M^{\alpha}}\ln\frac{c^{\alpha}}{\hat{\kappa}^{\alpha}}\,.\label{eq:mp-solute-chemical-potential}
\end{equation}
\end_inset
In this expression,
\begin_inset Formula $\mu_{0}^{\alpha}$
\end_inset
is the solute chemical potential at some reference temperature
\begin_inset Formula $\theta$
\end_inset
;
\begin_inset Formula $c^{\alpha}$
\end_inset
is the solute concentration on a solution-volume basis (number of moles of solute per volume of interstitial fluid in the mixture);
\begin_inset Formula $M^{\alpha}$
\end_inset
is the solute molecular weight (an invariant quantity);
and
\begin_inset Formula $R$
\end_inset
is the universal gas constant.
In a triphasic material,
a constitutive relation is needed for
\begin_inset Formula $\hat{\kappa}^{\alpha}$
\end_inset
;
in general,
\begin_inset Formula $\hat{\kappa}^{\alpha}$
\end_inset
may be a function of the solid matrix strain and the solute concentration.
In FEBio,
the dependence of the effective solubility on the solid matrix strain is currently constrained to a dependence on
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
.
\end_layout
\begin_layout Standard
The solid matrix of a multiphasic material may be charged and its charge density is given by
\begin_inset Formula $c^{F}$
\end_inset
.
This charge density may be either negative or positive.
The charge density varies with the deformation,
increasing when the pore volume decreases.
Based on the balance of mass for the solid,
\begin_inset Formula
\begin{equation}
c^{F}=\frac{1-\varphi_{r}^{s}}{J-\varphi_{r}^{s}}c_{r}^{F},\label{eq:mp-CFD-mass-balance}
\end{equation}
\end_inset
where
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
is the solid volume fraction and
\begin_inset Formula $c_{r}^{F}$
\end_inset
is the fixed charge density in the reference configuration.
\end_layout
\begin_layout Standard
In the multiphasic theory it is assumed that electroneutrality is satisfied at all times.
In other words,
the net charge of the mixture is always zero (neutral).
This electroneutrality condition is represented by a constraint equation on the ion concentrations,
\begin_inset Formula
\begin{equation}
c^{F}+\sum\limits_{\alpha}z^{\alpha}c^{\alpha}=0\,,\label{eq:mp-electroneutrality}
\end{equation}
\end_inset
where
\begin_inset Formula $z^{\alpha}$
\end_inset
is the charge number of solute
\begin_inset Formula $\alpha z^{-}=-1$
\end_inset
.
Since the concentrations of the cation and anion inside the triphasic material are not the same,
an electrical potential difference is produced between the interstitial and external environments.
The electric potential in the triphasic mixture is denoted by
\begin_inset Formula $\psi$
\end_inset
and its effect combines with the chemical potential of each solute to produce the electrochemical potential
\begin_inset Formula $\tilde{\mu}^{\alpha}$
\end_inset
,
where
\begin_inset Formula
\begin{equation}
\tilde{\mu}^{\alpha}=\mu_{0}^{\alpha}\left(\theta\right)+\frac{R\theta}{M^{\alpha}}\ln\frac{c^{\alpha}}{\hat{\kappa}^{\alpha}}+\frac{z^{\alpha}}{M^{\alpha}}F_{c}\psi\,.\label{eq:mp-solute-ecp}
\end{equation}
\end_inset
In this expression,
\begin_inset Formula $F_{c}$
\end_inset
represents Faraday's constant.
It is also possible to rearrange this expression as
\begin_inset Formula
\begin{equation}
\tilde{\mu}^{\alpha}=\mu_{0}^{\alpha}\left(\theta\right)+\frac{R\theta}{M^{\alpha}}\ln\left[\exp\left(z^{\alpha}\frac{F_{c}\psi}{R\theta}\right)\frac{c^{\alpha}}{\hat{\kappa}^{\alpha}}\right]\,.\label{eq:mp-solute-ecp-redux}
\end{equation}
\end_inset
In a multiphasic material,
the interstitial fluid pressure
\begin_inset Formula $p$
\end_inset
is influenced by both mechanical and chemical environments.
In other words,
this pressure includes both mechanical and osmotic contributions,
the latter arising from the presence of the solutes.
The solvent mechano-chemical potential
\begin_inset Formula $\tilde{\mu}^{w}$
\end_inset
is given by
\begin_inset Formula
\begin{equation}
\tilde{\mu}^{w}=\mu_{0}^{w}\left(\theta\right)+\frac{1}{\rho_{T}^{w}}\left(p-R\theta\Phi\sum\limits_{\alpha}c^{\alpha}\right)\,,\label{eq:mp-solven-mcp}
\end{equation}
\end_inset
where
\begin_inset Formula $\mu_{0}^{w}$
\end_inset
is the solvent chemical potential at some reference temperature
\begin_inset Formula $\theta$
\end_inset
;
\begin_inset Formula $\rho_{T}^{w}$
\end_inset
is the true density of the solvent (an invariant property for an intrinsically incompressible fluid);
and
\begin_inset Formula $\Phi$
\end_inset
is the osmotic coefficient which represents the extent by which the solute concentrations influence the solvent chemical potential.
In a multiphasic material,
a constitutive relation is needed for
\begin_inset Formula $\Phi$
\end_inset
;
in general,
\begin_inset Formula $\Phi$
\end_inset
may be a function of the solid matrix strain and the solute concentrations.
In FEBio,
the dependence of the osmotic coefficient on the solid matrix strain is currently constrained to a dependence on
\begin_inset Formula $J=\det\mathbf{F}$
\end_inset
.
\end_layout
\begin_layout Standard
The solute mechano-electrochemical potential is nearly equal to its electrochemical potential because the solute volume fraction is assumed to be negligible.
The solvent mechano-electrochemical potential is the same as its mechano-chemical potential,
since the solvent is neutral in a multiphasic mixture.
In general,
momentum and energy balances evaluated across a boundary surface in a multiphasic mixture require that the mechano-electrochemical potentials of solvent and solutes be continuous across that surface.
These continuity requirements are enforced automatically in FEBio by defining the effective fluid pressure
\begin_inset Formula $\tilde{p}$
\end_inset
and solute concentration
\begin_inset Formula $\tilde{c}^{\alpha}$
\end_inset
as
\begin_inset Formula
\begin{equation}
\begin{aligned}\tilde{p} & =p-R\theta\Phi\sum\nolimits_{\alpha}c^{\alpha}\\
\tilde{c}^{\alpha} & =c^{\alpha}/\tilde{\kappa}^{\alpha}
\end{aligned}
\,,\label{eq:mp-effective-p-c}
\end{equation}
\end_inset
where
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\tilde{\kappa}^{\alpha}=\hat{\kappa}^{\alpha}\exp\left(-z^{\alpha}\frac{F_{c}\psi}{R\theta}\right)\label{eq:mp-partition-coeff}
\end{equation}
\end_inset
is the partition coefficient for solute
\begin_inset Formula $\alpha$
\end_inset
.
The partition coefficient incorporates the combined effects of solubility and long-range electrostatic interactions to determine the ratio of interstitial to external concentration for that solute.
Therefore,
the effective concentration represents a measure of the
\shape italic
activity
\shape default
of the solute,
as understood in chemistry.
The effective fluid pressure represents that part of the pressure which is over and above osmotic effects.
\end_layout
\begin_layout Standard
In FEBio,
nodal variables consist of the solid matrix displacement
\begin_inset Formula $\mathbf{u}$
\end_inset
,
the effective fluid pressure
\begin_inset Formula $\tilde{p}$
\end_inset
,
and the effective solute concentrations
\begin_inset Formula $\tilde{c}^{\alpha}$
\end_inset
.
Essential boundary conditions must be imposed on these variables,
and not on the actual pressure
\begin_inset Formula $p$
\end_inset
or concentrations
\begin_inset Formula $c^{\alpha}$
\end_inset
.
(In a biphasic material however,
since
\begin_inset Formula $c^{\alpha}=0$
\end_inset
,
the effective and actual fluid pressures are the same,
\begin_inset Formula $p=\tilde{p}$
\end_inset
.)
\end_layout
\begin_layout Standard
The mixture stress in a triphasic material is given by
\begin_inset Formula $\boldsymbol{\sigma}=-p\mathbf{I}+\boldsymbol{\sigma}^{e}$
\end_inset
,
where
\begin_inset Formula $\boldsymbol{\sigma}^{e}$
\end_inset
is the stress arising from the solid matrix strain.
The mixture traction on a surface with unit outward normal
\begin_inset Formula $\mathbf{n}$
\end_inset
is
\begin_inset Formula $\mathbf{t}=\boldsymbol{\sigma}\cdot\mathbf{n}$
\end_inset
.
This traction is continuous across the boundary surface.
Therefore,
the corresponding natural boundary condition for a multiphasic mixture is
\begin_inset Formula $\mathbf{t}=\mathbf{0}$
\end_inset
.
(In other words,
if no boundary condition is imposed on the solid matrix displacement or mixture traction,
the natural boundary condition is in effect.)
\end_layout
\begin_layout Standard
The natural boundary conditions for the solvent and solutes are similarly
\begin_inset Formula $\mathbf{w}\cdot\mathbf{n}=0$
\end_inset
and
\begin_inset Formula $\mathbf{j}^{\alpha}\cdot\mathbf{n}=0$
\end_inset
,
where
\begin_inset Formula $\mathbf{w}$
\end_inset
is the volumetric flux of solvent relative to the solid and
\begin_inset Formula $\mathbf{j}^{\alpha}$
\end_inset
is the molar flux of solute
\begin_inset Formula $\alpha$
\end_inset
relative to the solid.
In general,
\begin_inset Formula $\mathbf{w}$
\end_inset
and
\begin_inset Formula $\mathbf{j}^{\alpha}$
\end_inset
are given by
\end_layout
\begin_layout Standard
\begin_inset Formula
\begin{equation}
\begin{aligned}\mathbf{w} & =-\mathbf{\tilde{k}}\cdot\left(\nabla\tilde{p}+R\theta\sum\limits_{\alpha}\frac{\tilde{\kappa}^{\alpha}}{d_{0}^{\alpha}}\mathbf{d}^{\alpha}\cdot\nabla\tilde{c}^{\alpha}\right),\\
\mathbf{j}^{\alpha} & =\tilde{\kappa}^{\alpha}\,\mathbf{d}^{\alpha}\cdot\left(-\varphi^{w}\nabla\tilde{c}^{\alpha}+\frac{\tilde{c}^{\alpha}}{d_{0}^{\alpha}}\mathbf{w}\right),
\end{aligned}
\label{eq:mp-fluxes-w-j}
\end{equation}
\end_inset
where
\begin_inset Formula
\begin{equation}
\mathbf{\tilde{k}}=\left[\mathbf{k}^{-1}+\frac{R\theta}{\varphi^{w}}\sum\limits_{\alpha}\frac{\tilde{\kappa}^{\alpha}c^{\alpha}}{d_{0}^{\alpha}}\left(\mathbf{I}-\frac{\mathbf{d}^{\alpha}}{d_{0}^{\alpha}}\right)\right]^{-1}\label{eq:mp-effective-perm}
\end{equation}
\end_inset
is the effective hydraulic permeability of the interstitial fluid solution (solvent and solutes) through the porous solid matrix;
\begin_inset Formula $\mathbf{k}$
\end_inset
is the hydraulic permeability of the solvent through the porous solid matrix;
\begin_inset Formula $\mathbf{d}^{\alpha}$
\end_inset
is the diffusivity of solute
\begin_inset Formula $\alpha$
\end_inset
through the mixture (frictional interactions with solvent and solid);
and
\begin_inset Formula $d_{0}^{\alpha}$
\end_inset
is its free diffusivity (frictional interactions with solvent only).
\begin_inset Formula $\varphi^{w}\approx1-\varphi^{s}$
\end_inset
is the solid matrix porosity in the current configuration.
The above expressions for the solvent and solute flux do not account for external body forces.
\end_layout
\begin_layout Standard
Also see Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Guidelines-for-Multiphasic"
nolink "false"
\end_inset
for additional guidelines for running multiphasic materials.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Guidelines for Multiphasic Analyses
\begin_inset CommandInset label
LatexCommand label
name "subsec:Guidelines-Multiphasic-Analyses"
\end_inset
\end_layout
\begin_layout Subsubsection
Initial State of Swelling
\begin_inset CommandInset label
LatexCommand label
name "subsec:Initial-State-Swelling"
\end_inset
\end_layout
\begin_layout Standard
Under traction-free conditions,
a multiphasic material is usually in a state of swelling due to the osmotic pressure difference between the interstitial fluid and the external environment.
This osmotic pressure arises from the difference in interstitial versus external concentrations of cations and anions,
caused by the charged solid matrix and the requirement to satisfy electroneutrality.
An osmotic pressure difference arising from such electrostatic interactions is known as the
\shape italic
Donnan osmotic pressure
\shape default
.
When the Donnan pressure is non-zero,
traction-free conditions do not produce stress-free conditions for the solid matrix,
since the matrix must expand until its stressed state resists the swelling pressure.
\end_layout
\begin_layout Standard
The Donnan pressure reduces to zero when the fixed charged density is zero,
or when the external environment is infinitely hypertonic (having ion concentrations infinitely greater than the interstitial fixed charge density).
Since these two conditions represent special cases,
it is generally necessary to devise methods for achieving the desired initial state of swelling,
in an analysis where loads or displacements need to be prescribed over and above this swollen state.
Swelling occurs as a result of the influx of solvent into the porous solid matrix.
This influx is a time-dependent process that could require extensive analysis time.
Therefore,
it is computationally efficacious to achieve the initial state of swelling by using a multi-step analysis (Chapter
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "chap:Multi-step-Analysis"
nolink "false"
\end_inset
) where the first step is a steady-state analysis (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Control-Parameters"
nolink "false"
\end_inset
).
In this steady-state step,
the fixed charge density may be ramped up from zero to the desired value using a load curve for that property or,
alternatively,
the external environmental conditions may be reduced from a very high hypertonic state down to the desired level.
In the second step,
prescribed displacement boundary conditions (when needed) may be specified to be of type
\shape italic
relative
\shape default
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Zero-Displacement"
nolink "false"
\end_inset
),
so that they become superposed over and above the initial swelling state.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
STEADY-STATE
\end_layout
\begin_layout LyX-Code
...
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
...
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
z
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Prescribed Boundary Conditions
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-BC-Multiphasic"
\end_inset
\end_layout
\begin_layout Standard
In most analyses,
it may be assumed that the ambient fluid pressure and electric potential in the external environment are zero,
thus
\begin_inset Formula $p_{\ast}=0$
\end_inset
and
\begin_inset Formula $\psi_{\ast}=0$
\end_inset
,
where the subscripted asterisk is used to denote environmental conditions.
Since the external environment does not include a solid matrix,
the fixed charge density there is zero.
For example,
in a triphasic analysis,
\begin_inset Formula $c_{\ast}^{+}=c_{\ast}^{-}\equiv c_{\ast}$
\end_inset
.
It follows that the effective fluid pressure in the external environment is
\begin_inset Formula $\tilde{p}_{\ast}=-R\theta\Phi_{\ast}\sum\nolimits_{\alpha}c_{\ast}^{\alpha}$
\end_inset
and the effective concentrations are
\begin_inset Formula $\tilde{c}_{\ast}^{\alpha}=c_{\ast}^{\alpha}/\hat{\kappa}_{\ast}^{\alpha}\tilde{c}_{\ast}^{\alpha}$
\end_inset
.
Therefore,
in multiphasic analyses,
whenever the external environment contains solutes with non-zero concentrations
\begin_inset Formula $c_{\ast}^{\alpha}$
\end_inset
,
the user must remember to prescribe non-zero boundary conditions for the effective solute concentrations
\shape italic
and
\shape default
the effective fluid pressure.
\end_layout
\begin_layout Standard
Letting
\begin_inset Formula $p_{\ast}=0$
\end_inset
also implies that prescribed mixture normal tractions (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Mixture-Normal-Traction"
nolink "false"
\end_inset
) represent only the traction above ambient conditions.
Note that users are not obligated to assume that
\begin_inset Formula $p_{\ast}=0$
\end_inset
.
However,
if a non-zero value is assumed for the ambient pressure,
then users must remember to incorporate this non-zero value whenever prescribing mixture normal tractions.
Similarly,
users are not required to assume that
\begin_inset Formula $\psi_{\ast}=0$
\end_inset
;
when a non-zero value is assumed for the electric potential of the external environment,
the prescribed boundary conditions for the effective concentrations should be evaluated using the corresponding partition coefficient,
\begin_inset Formula $\tilde{c}_{\ast}^{\alpha}=c_{\ast}^{\alpha}/\tilde{\kappa}_{\ast}^{\alpha}\tilde{c}_{\ast}^{\alpha}$
\end_inset
.
\end_layout
\begin_layout Subsubsection
Prescribed Initial Conditions
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-IC-Multiphasic"
\end_inset
\end_layout
\begin_layout Standard
When a multiphasic material is initially exposed to a given external environment with effective pressure
\begin_inset Formula $\tilde{p}_{\ast}$
\end_inset
and effective concentrations
\begin_inset Formula $\tilde{c}_{\ast}^{\alpha}$
\end_inset
,
the initial conditions inside the material should be set to
\begin_inset Formula $\tilde{p}=\tilde{p}_{\ast}$
\end_inset
and
\begin_inset Formula $\tilde{c}^{\alpha}=\tilde{c}_{\ast}^{\alpha}$
\end_inset
in order to expedite the evaluation of the initial state of swelling.
The values of
\begin_inset Formula $\tilde{p}_{\ast}$
\end_inset
and
\begin_inset Formula $\tilde{c}_{\ast}^{\alpha}$
\end_inset
should be evaluated as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Prescribed-Boundary-Conditions-1"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Subsubsection
Prescribed Effective Solute Flux
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-Effective-Solute-Flux"
\end_inset
\end_layout
\begin_layout Standard
The finite element formulation for multiphasic materials in FEBio requires that the natural boundary condition for solute
\begin_inset Formula $\alpha$
\end_inset
be prescribed as
\begin_inset Formula $\tilde{j}_{n}^{\alpha}\equiv j_{n}^{\alpha}+\sum\nolimits_{\beta}z^{\beta}j_{n}^{\beta}$
\end_inset
,
where
\begin_inset Formula $\tilde{j}_{n}^{\alpha}$
\end_inset
is the effective solute flux.
For a mixture containing only neutral solutes (
\begin_inset Formula $z^{\beta}=0,\,\forall\beta$
\end_inset
),
it follows that
\begin_inset Formula $\tilde{j}_{n}^{\alpha}=j_{n}^{\alpha}$
\end_inset
.
\end_layout
\begin_layout Subsubsection
Prescribed Electric Current Density
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-Electric-Current"
\end_inset
\end_layout
\begin_layout Standard
The electric current density in a mixture is a linear superposition of the ion fluxes,
\begin_inset Formula
\begin{equation}
\mathbf{I}_{e}=F_{c}\sum\limits_{\alpha}z^{\alpha}\mathbf{j}^{\alpha}\,.\label{eq:mp-electric-current-density}
\end{equation}
\end_inset
Since only the normal component
\begin_inset Formula $j_{n}^{\alpha}=\mathbf{j}^{\alpha}\cdot\mathbf{n}$
\end_inset
of ion fluxes may be prescribed at a boundary,
it follows that only the normal component
\begin_inset Formula $I_{n}=\mathbf{I}_{e}\cdot\mathbf{n}$
\end_inset
of the current density may be prescribed.
To prescribe
\begin_inset Formula $I_{n}$
\end_inset
,
it is necessary to know the nature of the ion species in the mixture,
and how the current is being applied.
For example,
if the ions in the triphasic mixture consist of Na
\begin_inset Formula $^{\mathrm{+}}$
\end_inset
and Cl
\begin_inset Formula $^{\mathrm{-}}$
\end_inset
,
and if the current is being applied using silver/silver chloride (Ag/AgCl) electrodes,
a chemical reaction occurs at the anode where Ag combines with Cl
\begin_inset Formula $^{\mathrm{-}}$
\end_inset
to produce AgCl,
donating an electron to the electrode to transport the current.
At the cathode,
the reverse process takes place.
Therefore,
in this system,
there is only flux of Cl
\begin_inset Formula $^{\mathrm{-}}$
\end_inset
and no flux of Na
\begin_inset Formula $^{\mathrm{+}}$
\end_inset
(
\begin_inset Formula $j_{n}^{+}=0$
\end_inset
) at the electrode-mixture interface,
so that the prescribed boundary condition should be
\begin_inset Formula $j_{n}^{-}=-I_{n}/F_{c}$
\end_inset
.
Since
\begin_inset Formula $z^{+}=+1$
\end_inset
and
\begin_inset Formula $z^{-}=-1$
\end_inset
in a triphasic mixture,
the corresponding effective fluxes are given by
\begin_inset Formula $\tilde{j}_{n}^{+}=2j_{n}^{+}-j_{n}^{-}=I_{n}/F_{c}$
\end_inset
and
\begin_inset Formula $\tilde{j}_{n}^{-}=j_{n}^{+}=0$
\end_inset
.
\end_layout
\begin_layout Subsubsection
Electrical Grounding
\begin_inset CommandInset label
LatexCommand label
name "subsec:Electrical-Grounding"
\end_inset
\end_layout
\begin_layout Standard
If a multiphasic mixture containing ions is completely surrounded by ion-impermeant boundaries it is necessary to ground the mixture to prevent unconstrained fluctuations of the electric potential.
Grounding is performed by prescribing the effective concentration of one or more ions,
at a location inside the mixture or on one of its boundaries corresponding to the location of the grounding electrode.
The choice of ion(s) to constrain may be guided by the type of grounding electrode and the reference electrolyte bath in which it is inserted.
\end_layout
\begin_layout Subsubsection
Neglecting Osmotic Effects
\begin_inset CommandInset label
LatexCommand label
name "subsec:Ignoring-Osmotic-Effects"
\end_inset
\end_layout
\begin_layout Standard
Osmotic effects can be neglected in a multiphasic analysis by setting the osmotic coefficient to zero,
\begin_inset Formula $\Phi=0$
\end_inset
.
In that case,
the effective fluid pressure and the actual fluid pressure become equivalent measures,
\begin_inset Formula $\tilde{p}=p$
\end_inset
,
as for the case of a biphasic mixture.
\end_layout
\begin_layout Subsubsection
Solutes as 'Solid-Bound Molecules'
\begin_inset CommandInset label
LatexCommand label
name "subsec:Solutes-as-SBMs"
\end_inset
\end_layout
\begin_layout Standard
In multiphasic analyses,
FEBio solves for the solid displacement
\begin_inset Formula $\mathbf{u}$
\end_inset
,
the effective fluid pressure
\begin_inset Formula $\tilde{p}$
\end_inset
,
and the effective solute concentrations
\begin_inset Formula $\tilde{c}^{\alpha}$
\end_inset
,
at all the nodes,
representing all the degrees of freedom in an analysis.
Once the solution has converged at each time point,
FEBio solves for the referential mass densities
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
of solid-bound molecules by solving the corresponding mass balance equation in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:cr-sbm-mass-balance"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
at integration points,
in a single numerical integration step.
This approach reduces the number of degrees of freedom that need to be solved simultaneously by the FEBio solver.
However,
occasionally,
the numerical solution for
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
may produce numerical round-off errors that may get amplified as the analysis time progresses.
\end_layout
\begin_layout Standard
An alternative to using solid-bound molecules is to define solutes
\begin_inset Formula $\sigma$
\end_inset
whose diffusivity
\begin_inset Formula $\mathbf{d}^{\sigma}$
\end_inset
in the mixture is set to
\begin_inset Formula $\mathbf{0}$
\end_inset
(however,
the free diffusivity
\begin_inset Formula $d_{0}^{\sigma}$
\end_inset
should not be set to zero,
to prevent a division by zero;
its exact value is not important,
thus let
\begin_inset Formula $d_{0}^{\sigma}=1$
\end_inset
).
Then,
FEBio treats these solutes as equivalent to solid-bound molecules:
(1) Their concentration does not contribute to the osmolarity of the interstitial fluid;
(2) their concentration contributes to the fixed charge density
\begin_inset Formula $c^{F}$
\end_inset
in the current configuration;
(3) these solutes do not contribute to the effective hydraulic permeability
\begin_inset Formula $\tilde{\mathbf{k}}$
\end_inset
of the porous multiphasic mixture;
(4) these solutes can be involved in chemical reactions;
(5) while their initial effective concentration may be prescribed,
it must not contribute to the prescribed initial effective fluid pressure,
and the user should not prescribe any boundary conditions on the effective concentration of these solutes.
Using these 'solid-bound' solutes increases the number of degrees of freedom in an FEBio analysis;
however,
unlike solid-bound molecules,
the solution for the effective concentration of these solutes remains as accurate as all other degrees of freedom in an analysis.
\end_layout
\begin_layout Standard
To evaluate the contribution of these solutes to the referential solid volume fraction
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
and to chemical reactions,
it should be recalled that the concentration
\begin_inset Formula $c^{\sigma}$
\end_inset
is related to the referential mass density
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
via eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:concentration-density-relations"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
Using the expression for
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:cr-referential-solid-vol-frac"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
we find that
\begin_inset Formula
\[
\varphi_{r}^{s}=\varphi_{0}^{s}+\left(J-\varphi_{r}^{s}\right)\sum\limits_{\sigma}\frac{M^{\sigma}c^{\sigma}}{\rho_{T}^{\sigma}}
\]
\end_inset
which can be solved for
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
using the concentrations
\begin_inset Formula $c^{\sigma}$
\end_inset
,
\begin_inset Formula
\[
\varphi_{r}^{s}=\frac{\varphi_{0}^{s}+J\sum\limits_{\sigma}\frac{M^{\sigma}c^{\sigma}}{\rho_{T}^{\sigma}}}{1+\sum\limits_{\sigma}\frac{M^{\sigma}c^{\sigma}}{\rho_{T}^{\sigma}}}\,.
\]
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
General Specification of Multiphasic Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:General-Specification-Multiphasic-Mat"
\end_inset
\end_layout
\begin_layout Standard
The material type for a multiphasic material is
\begin_inset Quotes eld
\end_inset
\shape italic
multiphasic
\shape default
\begin_inset Quotes erd
\end_inset
.
Constitutive relations must be provided for the solid matrix,
the mixture fixed charge density,
the hydraulic permeability
\begin_inset Formula $\mathbf{k}$
\end_inset
,
the osmotic coefficient
\begin_inset Formula $\Phi$
\end_inset
,
and the properties of each solute:
the solute diffusivity in the mixture
\begin_inset Formula $\mathbf{d}^{\alpha}$
\end_inset
,
the solute free diffusivity
\begin_inset Formula $d_{0}^{\alpha}$
\end_inset
,
and the solute effective solubility
\begin_inset Formula $\hat{\kappa}^{\alpha}$
\end_inset
.
Therefore,
the following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specification of the solid matrix
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
solid volume fraction
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
in the reference configuration
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
fixed charge density
\begin_inset Formula $c_{r}^{F}$
\end_inset
in the reference configuration
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specification of the hydraulic permeability
\begin_inset Formula $\mathbf{k}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specification of the solvent supply
\begin_inset Formula $\hat{\varphi}^{w}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specification of the osmotic coefficient
\begin_inset Formula $\Phi$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specification of the solute properties
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specification of solid-bound molecule
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The tag encloses a description of the solid matrix constitutive relation and associated material properties,
as may be selected from the list provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
nolink "false"
\end_inset
.
The solid volume fraction in the reference configuration,
,
must be greater than 0 (no solid) and less than 1 (only solid).
The volume fraction of fluid (also known as the porosity) in the reference configuration is given by
\begin_inset Formula $1-\varphi_{0}$
\end_inset
.
The may be negative,
positive,
or zero.
The and tags enclose descriptions of the permeability and osmotic coefficient constitutive relations and their associated material properties,
as may be selected from the list presented in Sections
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Permeability-Materials"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Osmotic-Coefficient-Materials"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
The optional tag provides a description of each solute in the multiphasic mixture.
Multiple solutes may be defined.
Each tag includes the required
\shape italic
sol
\shape default
attribute,
which should reference a solute
\shape italic
id
\shape default
from the description in the section (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solutes"
nolink "false"
\end_inset
).
The following parameters must be defined in this description:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specification of the solute diffusivities
\begin_inset Formula $\mathbf{d}^{\alpha}$
\end_inset
and
\begin_inset Formula $d_{0}^{\alpha}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specification of the solute effective solubility
\begin_inset Formula $\hat{\kappa}^{\alpha}$
\end_inset
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The and tags enclose descriptions of materials that may be selected from the lists presented in Sections
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Diffusivity-Materials"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solubility-Materials"
nolink "false"
\end_inset
,
respectively.
Each solute tag must include a
\begin_inset Quotes eld
\end_inset
sol
\begin_inset Quotes erd
\end_inset
attribute
\end_layout
\begin_layout Standard
The optional tag specifies which solid-bound molecule should be included in the multiphasic mixture.
Multiple solid-bound molecules may be specified.
Each tag should include the required
\shape italic
sbm
\shape default
attribute,
which references an
\shape italic
id
\shape default
from the description in the section (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Bound-Molecules"
nolink "false"
\end_inset
).
The following parameter must be defined in this description:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
initial value of the referential apparent density of the solid-bound molecule
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
M
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
optional minimum allowable value of
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
(zero by default)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
M
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
optional maximum allowable value of
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
(none by default)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
M
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
If a chemical reaction involves this solid-bound molecule its referential apparent density may evolve over time.
The user may place lower and upper bounds on the allowable range of an evolving
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.2
\end_layout
\begin_layout LyX-Code
-40
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
0.28
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1e-3
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1e-3
\end_layout
\begin_layout LyX-Code
1e-3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1e-3
\end_layout
\begin_layout LyX-Code
1e-3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
When a multiphasic material is employed in an analysis,
it is also necessary to specify the values of the universal gas constant
\begin_inset Formula $R$
\end_inset
[
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
L
\series default
/
\series bold
n
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
T
\series default
],
absolute temperature
\begin_inset Formula $\theta$
\end_inset
[
\series bold
T
\series default
],
and Faraday's constant
\begin_inset Formula $F_{c}$
\end_inset
[
\series bold
Q
\series default
/
\series bold
n
\series default
] in the section,
using a self-consistent set of units.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
8.314e-6
\end_layout
\begin_layout LyX-Code
298
\end_layout
\begin_layout LyX-Code
96500e-9
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
-1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
Self-consistent units for a triphasic analysis
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Primary Units
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
time
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
s
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
length
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
mm
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
force
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
N
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
mole
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
nmol
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
charge
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
C
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
temperature
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
K
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Derived Units
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
stress
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
N/mm
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
,
MPa
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
permeability
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
mm
\begin_inset Formula $^{\mathrm{4}}$
\end_inset
/N
\begin_inset Formula $\cdot$
\end_inset
s,
mm
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/MPa
\begin_inset Formula $\cdot$
\end_inset
s
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
diffusivity
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
mm
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/s
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
concentration
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
nmol/mm
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
,
mM
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
charge density
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
nEq/mm
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
,
mEq/L
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
voltage
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
mV
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
current density
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A/mm
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
current
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
It is also possible to create models with multiphasic materials that use different solutes in different regions.
In that case,
introduce additional solute entries in the section and refer to those solute ids in the multiphasic material descriptions.
Generally,
two adjoining multiphasic regions may share the same solute (e.g.,
Na in both regions),
in which case that solute may transport freely across the interface separating these regions;
or they may share no solute,
in which case the interface is impermeable to all solutes.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Solvent Supply Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Solvent-Supply-Materials"
\end_inset
\end_layout
\begin_layout Standard
Solvent supply materials may be used to simulate an external source of solvent,
such as supply from microvasculature that is not modeled explicitly.
The solvent supply term,
\begin_inset Formula $\hat{\varphi}^{w}$
\end_inset
,
appears in the mass balance relation for the mixture,
\begin_inset Formula
\begin{equation}
\divg\left(\mathbf{v}^{s}+\mathbf{w}\right)=\hat{\varphi}^{w}\,.\label{eq:solvent-supply-mass-balance}
\end{equation}
\end_inset
\begin_inset Formula $\hat{\varphi}^{w}$
\end_inset
has units of reciprocal time [
\series bold
t
\series default
\begin_inset Formula $^{\mathrm{-1}}$
\end_inset
];
it represents the rate at which the volume fraction of solvent changes with time.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Starling Equation
\begin_inset CommandInset label
LatexCommand label
name "subsec:Starling-Equation-MP"
\end_inset
\end_layout
\begin_layout Standard
The material type for Starling's equation for fluid supply is
\shape italic
\begin_inset Quotes eld
\end_inset
Starling
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
hydraulic filtration coefficient,
\begin_inset Formula $k_{p}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{2}}$
\end_inset
/
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
effective fluid pressure in external source,
\begin_inset Formula $\tilde{p}_{v}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
osmotic filtration coefficient,
\begin_inset Formula $q_{c}^{\alpha}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
/
\series bold
n
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
effective solute concentration in external source,
\begin_inset Formula $\tilde{c}_{v}^{\alpha}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The fluid supply is given by Starling's equation,
\begin_inset Formula
\[
\hat{\varphi}^{w}=k_{p}\left(\tilde{p}_{v}-\tilde{p}\right)+\sum\limits_{\alpha}q_{c}^{\alpha}\left(\tilde{c}_{v}^{\alpha}-\tilde{c}^{\alpha}\right)\,,
\]
\end_inset
where
\begin_inset Formula $\tilde{p}$
\end_inset
is the effective fluid pressure in the multiphasic material.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout Standard
This example defines a solvent supply material of the Starling type for a multiphasic mixture containing one solute.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
1e-5
\end_layout
\begin_layout LyX-Code
150
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Chemical Reactions
\begin_inset CommandInset label
LatexCommand label
name "sec:Chemical-Reactions"
\end_inset
\end_layout
\begin_layout Standard
The following sections describe FEBio's formulation for analyzing mechanochemical events in neutral or charged deformable porous media under finite deformation.
The formulation allows full coupling of mechanical and chemical effects,
providing a framework where material properties and response functions may depend on solid matrix strain as well as solute concentration.
\end_layout
\begin_layout Standard
If you use these capabilities in your published research,
we request that you cite the following publication describing its development
\begin_inset CommandInset citation
LatexCommand citep
key "Ateshian2011"
literal "true"
\end_inset
.
\end_layout
\begin_layout Subsection
Guidelines for Chemical Reaction Analyses
\begin_inset CommandInset label
LatexCommand label
name "subsec:Guidelines-Chemical-Reactions"
\end_inset
\end_layout
\begin_layout Standard
Chemical reactions may be modeled within a multiphasic mixture.
The reaction may involve solutes (
\begin_inset Formula $\alpha=\iota)$
\end_inset
and solid-bound molecules (
\begin_inset Formula $\alpha=\sigma)$
\end_inset
that move with the solid matrix (
\begin_inset Formula $\mathbf{v}^{\sigma}=\mathbf{v}^{s},\,\forall\sigma)$
\end_inset
.
Consider a general chemical reaction,
\begin_inset Formula
\begin{equation}
\sum\limits_{\alpha}\nu_{R}^{\alpha}\mathcal{E}^{\alpha}\to\sum\limits_{\alpha}\nu_{P}^{\alpha}\mathcal{E}^{\alpha},\label{eq:cr-forward-reaction}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathcal{E}^{\alpha}$
\end_inset
is the chemical species representing constituent
\begin_inset Formula $\alpha$
\end_inset
in the mixture;
\begin_inset Formula $\nu_{R}^{\alpha}$
\end_inset
and
\begin_inset Formula $\nu_{P}^{\alpha}$
\end_inset
represent stoichiometric coefficients of the reactants and products,
respectively.
To maintain consistency with classical chemical kinetics,
the analysis of chemical reactions employs molar concentrations
\begin_inset Formula $c^{\alpha}$
\end_inset
and molar supplies
\begin_inset Formula $\hat{c}^{\alpha}$
\end_inset
on a solution-volume basis for all reactants and products,
whether they are solutes or solid-bound molecular species.
\end_layout
\begin_layout Standard
Since the molar supply of reactants and products is constrained by stoichiometry,
it follows that all molar supplies
\begin_inset Formula $\hat{c}^{\alpha}$
\end_inset
in a specific chemical reaction may be related to a
\shape italic
molar production rate
\shape default
\begin_inset Formula $\hat{\zeta}$
\end_inset
according to
\begin_inset Formula
\begin{equation}
\hat{c}^{\alpha}=\nu^{\alpha}\hat{\zeta}\,,\label{eq:cr-concentration-supply}
\end{equation}
\end_inset
where
\begin_inset Formula $\nu^{\alpha}$
\end_inset
represents the net stoichiometric coefficient for
\begin_inset Formula $\mathcal{E}^{\alpha}$
\end_inset
,
\begin_inset Formula
\begin{equation}
\nu^{\alpha}=\nu_{P}^{\alpha}-\nu_{R}^{\alpha}.\label{eq:cr-net-stoich-coeff}
\end{equation}
\end_inset
Thus,
formulating constitutive relations for
\begin_inset Formula $\hat{c}^{\alpha}$
\end_inset
is equivalent to providing a single relation for
\begin_inset Formula $\hat{\zeta}\left(\theta,\mathbf{F},c^{\alpha}\right)$
\end_inset
.
When the chemical reaction is reversible,
\begin_inset Formula
\begin{equation}
\sum\limits_{\alpha}\nu_{R}^{\alpha}\mathcal{E}^{\alpha}\rightleftharpoons\sum\limits_{\alpha}\nu_{P}^{\alpha}\mathcal{E}^{\alpha},\label{eq:cr-reversible-reaction}
\end{equation}
\end_inset
the relations of
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:cr-concentration-supply"
nolink "false"
\end_inset
-
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:cr-net-stoich-coeff"
nolink "false"
\end_inset
still apply but the constitutive relation for
\begin_inset Formula $\hat{\zeta}$
\end_inset
would be different.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout Standard
Consider the dissociation of CaCl
\begin_inset Formula $_{\mathrm{2}}$
\end_inset
into ions Ca
\begin_inset Formula $^{\mathrm{2+}}$
\end_inset
and Cl
\begin_inset Formula $^{\mathrm{-}}$
\end_inset
,
\begin_inset Formula
\[
\mbox{CaCl}_{2}\rightleftharpoons\mbox{Ca}^{2+}+2\mbox{Cl}^{-}.
\]
\end_inset
The mixture contains three constituents.
The stoichiometric coefficients of the reactants are
\begin_inset Formula $\nu_{R}^{\mbox{CaCl}_{2}}=1$
\end_inset
,
\begin_inset Formula $\nu_{R}^{\mbox{Ca}^{2+}}=0$
\end_inset
,
\begin_inset Formula $\nu_{R}^{\mbox{Cl}^{-}}=0$
\end_inset
,
and those of the products are
\begin_inset Formula $\nu_{P}^{\mbox{CaCl}_{2}}=0$
\end_inset
,
\begin_inset Formula $\nu_{P}^{\mbox{Ca}^{2+}}=1$
\end_inset
,
\begin_inset Formula $\nu_{P}^{\mbox{Cl}^{-}}=2$
\end_inset
.
\end_layout
\begin_layout Standard
The reaction production rate
\begin_inset Formula $\hat{\zeta}$
\end_inset
enters into the governing equations of multiphasic mixtures via the mass balance relation for each solute,
\begin_inset Formula
\begin{equation}
\frac{1}{J}\frac{D^{s}\left[J\left(1-\varphi^{s}\right)c^{\iota}\right]}{Dt}+\divg\mathbf{j}^{\iota}=\left(1-\varphi^{s}\right)\nu^{\iota}\hat{\zeta}\,,\label{eq:cr-solute-mass-balance}
\end{equation}
\end_inset
the mass balance for the mixture,
\begin_inset Formula
\begin{equation}
\divg\left(\mathbf{v}^{s}+\mathbf{w}\right)=\left(1-\varphi^{s}\right)\hat{\zeta}\overline{\mathcal{V}}\,,\label{eq:cr-mixture-mass-balance}
\end{equation}
\end_inset
where
\begin_inset Formula $\overline{\mathcal{V}}=\sum\limits_{\alpha}\nu^{\alpha}\mathcal{V}^{\alpha}$
\end_inset
and
\begin_inset Formula $\mathcal{V}^{\alpha}=M^{\alpha}/\rho_{T}^{\alpha}$
\end_inset
is the molar volume of
\begin_inset Formula $\alpha$
\end_inset
,
and the mass balance for solid-bound constituents,
\begin_inset Formula
\begin{equation}
D^{s}\rho_{r}^{\sigma}/Dt=\hat{\rho}_{r}^{\sigma}\,,\label{eq:cr-sbm-mass-balance}
\end{equation}
\end_inset
where
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
is the referential apparent mass density (mass of
\begin_inset Formula $\sigma$
\end_inset
per mixture volume in the reference configuration),
and
\begin_inset Formula $\hat{\rho}_{r}^{\sigma}$
\end_inset
is the referential apparent mass supply of solid constituent
\begin_inset Formula $\sigma$
\end_inset
,
related to molar concentrations and supplies via
\begin_inset Formula
\begin{equation}
c^{\sigma}=\frac{\rho_{r}^{\sigma}}{\left(J-\varphi_{r}^{s}\right)M^{\sigma}},\quad\hat{c}^{\sigma}=\frac{\hat{\rho}_{r}^{\sigma}}{\left(J-\varphi_{r}^{s}\right)M^{\sigma}}\,.\label{eq:concentration-density-relations}
\end{equation}
\end_inset
Internally,
the content of solid-bound species is stored in
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:concentration-density-relations"
nolink "false"
\end_inset
is used to evaluate
\begin_inset Formula $c^{\sigma}$
\end_inset
when needed for the calculation of
\begin_inset Formula $\hat{\zeta}$
\end_inset
.
If a solid-bound molecule is involved in a chemical reaction,
equation
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:cr-sbm-mass-balance"
nolink "false"
\end_inset
is integrated to produce an updated value of
\begin_inset Formula $\rho_{r}^{\sigma}$
\end_inset
,
using
\begin_inset Formula $\hat{\rho}_{r}^{\sigma}=\left(J-\varphi_{r}^{s}\right)M^{\sigma}\nu^{\sigma}\hat{\zeta}$
\end_inset
based on
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:cr-concentration-supply"
nolink "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:concentration-density-relations"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
Evolving solid content due to chemical reactions implies that the referential solid volume fraction
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
may not remain constant.
This value is updated at every time point using
\begin_inset Formula
\begin{equation}
\varphi_{r}^{s}=\varphi_{0}^{s}+\sum\limits_{\sigma}\frac{\rho_{r}^{\sigma}}{\rho_{T}^{\sigma}}\,,\label{eq:cr-referential-solid-vol-frac}
\end{equation}
\end_inset
where
\begin_inset Formula $\varphi_{0}^{s}$
\end_inset
is the solid volume fraction specified by the multiphasic material parameter
\shape italic
phi0
\shape default
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:General-Specification-Multiphasic-Mat"
nolink "false"
\end_inset
).
Thus,
\begin_inset Formula $\varphi_{0}^{s}$
\end_inset
may be used to account for the solid volume fraction not contributed explicitly by solid-bound molecules.
Based on kinematics,
the solid volume fraction in the current configuration is given by
\begin_inset Formula $\varphi^{s}=\varphi_{r}^{s}/J$
\end_inset
.
Therefore,
since
\begin_inset Formula $0\leqslant\varphi^{s}\leqslant1$
\end_inset
by definition,
it follows that
\begin_inset Formula $0\leqslant\varphi_{r}^{s}\leqslant J$
\end_inset
,
implying that the referential solid volume fraction may evolve to values greater than unity when growth leads to swelling of the multiphasic mixture.
\end_layout
\begin_layout Standard
Similarly,
if solid-bound molecules are charged and their content evolves over time,
the referential fixed charge density may also evolve with chemical reactions according to
\begin_inset Formula
\begin{equation}
c_{r}^{F}=c_{0}^{F}+\frac{1}{1-\varphi_{r}^{s}}\sum\limits_{\sigma}\frac{z^{\sigma}\rho_{r}^{\sigma}}{M^{\sigma}}\,,\label{eq:cr-referential-FCD}
\end{equation}
\end_inset
where
\begin_inset Formula $c_{0}^{F}$
\end_inset
is the referential fixed charge density specified by the multiphasic material parameter
\shape italic
fixed_charge_density
\shape default
(Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:General-Specification-Multiphasic-Mat"
nolink "false"
\end_inset
).
Thus,
\begin_inset Formula $c_{0}^{F}$
\end_inset
may be used to account for the fixed charge density not contributed explicitly by solid-bound molecules.
\end_layout
\begin_layout Standard
A chemical reaction is properly balanced when
\begin_inset Formula
\begin{equation}
\sum\limits_{\alpha}\nu^{\alpha}M^{\alpha}=0\,,\label{eq:cr-balanced-reaction}
\end{equation}
\end_inset
where
\begin_inset Formula $M^{\alpha}$
\end_inset
is the molar mass of
\begin_inset Formula $\alpha$
\end_inset
.
This constraint implies that the net gain in mass of products must be the same as the net loss in mass of reactants.
However,
this constraint is not verified in the code,
allowing users to model chemical reactions with implicit constituents (constituents that are neither explicitly modeled as solutes nor as solid-bound molecules,
for which
\begin_inset Formula $\nu^{\alpha}$
\end_inset
and
\begin_inset Formula $M^{\alpha}$
\end_inset
are not given).
For example,
a chemical reaction where cells consume glucose to form a protein from amino-acids building blocks may have the form
\begin_inset Formula
\[
\mbox{cells}+\mbox{glucose}+\mbox{amino\thinspace acids}\to\mbox{cells}+\mbox{protein}+\mbox{waste\thinspace products}\,.
\]
\end_inset
The user may opt to model only the glucose reactant and the protein product explicitly,
while the presence of all other species in this reaction is implicit.
In these types of analyses the user must beware of potential inconsistencies in the evolving mass of reactants and products since only some of those constituents are modeled explicitly.
In particular,
the evolution of
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
as given in
\series bold
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:cr-referential-solid-vol-frac"
nolink "false"
\end_inset
\series default
can only account for the explicitly modeled solid-bound molecules.
Furthermore,
when some reactants and products are implicit,
the value of the reaction molar volume
\begin_inset Formula $\overline{\mathcal{V}}$
\end_inset
calculated in the code becomes inaccurate and may produce unexpected results in the evaluation of the mixture mass balance relation in
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:cr-mixture-mass-balance"
nolink "false"
\end_inset
.
Therefore,
the user is given the option to override the value of
\begin_inset Formula $\overline{\mathcal{V}}$
\end_inset
calculated in the code.
In particular,
if the precise molar volumes of all the species in a reaction are not known,
assuming that
\begin_inset Formula $\overline{\mathcal{V}}\approx0$
\end_inset
is a reasonable choice equivalent to assuming that all the constituents have approximately the same density
\begin_inset Formula $\rho_{T}^{\alpha}$
\end_inset
,
as may be deduced from
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:cr-balanced-reaction"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
Since the electroneutrality condition is enforced in multiphasic mixtures in FEBio,
it follows that chemical reactions must not violate this condition.
Enforcing electroneutrality in a chemical reaction is equivalent to satisfying
\begin_inset Formula
\begin{equation}
\sum\limits_{\alpha}z^{\alpha}\nu^{\alpha}=0\,.\label{eq:cr-electroneutrality}
\end{equation}
\end_inset
This constraint is checked within the code and an error is generated when it is violated.
\end_layout
\begin_layout Standard
A constitutive relation must be provided for the molar production rate
\begin_inset Formula $\hat{\zeta}\left(\theta,\mathbf{F},c^{\alpha}\right)$
\end_inset
of each chemical reaction.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
General Specification for Chemical Reactions
\begin_inset CommandInset label
LatexCommand label
name "subsec:General-Specification-Chem-React"
\end_inset
\end_layout
\begin_layout Standard
The material type for a chemical reaction is
\begin_inset Quotes eld
\end_inset
\shape italic
reaction
\shape default
\begin_inset Quotes erd
\end_inset
.
The tag must appear inside the definition of a multiphasic mixture and the reaction is defined only for that mixture.
Multiple chemical reactions may be defined in a given mixture.
Each tag must include a
\shape italic
type
\shape default
attribute that identifies the constitutive relation for
\begin_inset Formula $\hat{\zeta}$
\end_inset
.
\end_layout
\begin_layout Standard
The stoichiometric coefficients
\begin_inset Formula $\nu_{R}^{\alpha}$
\end_inset
of the reactants and
\begin_inset Formula $\nu_{P}^{\alpha}$
\end_inset
for the products must be specified in every reaction.
Optionally,
the net reaction molar volume
\begin_inset Formula $\overline{\mathcal{V}}$
\end_inset
may be specified explicitly to override the internal value calculated in the code.
Therefore,
the following parameters need to be defined in a chemical reaction:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
reactant stoichiometric coefficient
\begin_inset Formula $\nu_{R}^{\alpha}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
product stoichiometric coefficient
\begin_inset Formula $\nu_{P}^{\alpha}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
optional override value for
\begin_inset Formula $\overline{\mathcal{V}}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
/
\series bold
n
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
Each and tag must include either the
\shape italic
sol
\shape default
attribute,
which should reference a solute
\shape italic
id
\shape default
from the description in the section (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solutes"
nolink "false"
\end_inset
),
or the
\shape italic
sbm
\shape default
attribute,
which should reference a solid-bound molecule
\shape italic
id
\shape default
from the description in the section (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Bound-Molecules"
nolink "false"
\end_inset
).
Only solutes and solid-bound molecules that have been included in the parent multiphasic mixture may be specified as reactants or products of a chemical reaction.
\end_layout
\begin_layout Standard
Additional parameters may be needed in the definition of a chemical reaction,
depending on the specific form of the constitutive relation for the production rate.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Chemical Reaction Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Chemical-Reaction-Materials"
\end_inset
\end_layout
\begin_layout Subsubsection
Law of Mass Action for Forward Reactions
\begin_inset CommandInset label
LatexCommand label
name "subsec:Mass-Action-Forward"
\end_inset
\end_layout
\begin_layout Standard
The material type for the Law of Mass Action for a forward reaction is
\shape italic
mass-action-forward
\shape default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specific forward reaction rate
\begin_inset Formula $k$
\end_inset
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this type of reaction the constitutive relation for the molar production rate is given by
\begin_inset Formula
\[
\hat{\zeta}=k\prod\limits_{\alpha}\left(c^{\alpha}\right)^{\nu_{R}^{\alpha}}\,.
\]
\end_inset
The constitutive form of the specific forward reaction rate must be selected from the list of materials given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specific-Reaction-Rate"
nolink "false"
\end_inset
.
The units of
\begin_inset Formula $\hat{\zeta}$
\end_inset
are [
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}\cdot$
\end_inset
\series bold
t
\series default
] and those of
\begin_inset Formula $c^{\alpha}$
\end_inset
are [
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
].
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout Standard
Consider the forward reaction that produces solid copper sulfide from solid copper and solid sulfur,
\begin_inset Formula
\[
\mbox{Cu}+\mbox{S}\to\mbox{CuS}
\]
\end_inset
All three species are modeled explicitly in the mixture as solid-bound molecules,
with id's 1 (Cu),
2 (for S) and 3 (for CuS).
The chemical reaction material is given by:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1e-3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Law of Mass Action for Reversible Reactions
\begin_inset CommandInset label
LatexCommand label
name "subsec:Mass-Action-Reversible"
\end_inset
\end_layout
\begin_layout Standard
The material type for the Law of Mass Action for a reversible reaction is
\shape italic
mass-action-reversible
\shape default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specific forward reaction rate
\begin_inset Formula $k_{F}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specific reverse reaction rate
\begin_inset Formula $k_{R}$
\end_inset
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
For this type of reaction the constitutive relation for the molar production rate is given by
\begin_inset Formula
\[
\hat{\zeta}=\hat{\zeta}_{F}-\hat{\zeta}_{R}\,,
\]
\end_inset
where
\begin_inset Formula
\[
\begin{aligned}\hat{\zeta}_{F} & =k_{F}\prod\limits_{\alpha}\left(c^{\alpha}\right)^{\nu_{R}^{\alpha}}\\
\hat{\zeta}_{R} & =k_{R}\prod\limits_{\alpha}\left(c^{\alpha}\right)^{\nu_{P}^{\alpha}}
\end{aligned}
\,.
\]
\end_inset
The constitutive form of the specific forward and reverse reaction rates must be selected from the list of materials given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specific-Reaction-Rate"
nolink "false"
\end_inset
.
The units of
\begin_inset Formula $\hat{\zeta}_{F}$
\end_inset
and
\begin_inset Formula $\hat{\zeta}_{R}$
\end_inset
are [
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}\cdot$
\end_inset
\series bold
t
\series default
] and those of
\begin_inset Formula $c^{\alpha}$
\end_inset
are [
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
].
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout Standard
Consider the reversible dissociation of CaCl salt into Ca
\begin_inset Formula $^{\mathrm{2+}}$
\end_inset
and Cl
\begin_inset Formula $^{\mathrm{-}}$
\end_inset
in water,
\begin_inset Formula
\[
\mbox{CaCl}_{2}\rightleftharpoons\mbox{Ca}^{2+}+2\mbox{Cl}^{-}
\]
\end_inset
All three species are modeled explicitly in the mixture as solutes,
with id's 1 (for CaCl
\begin_inset Formula $_{\mathrm{2}})$
\end_inset
,
2 (for Ca
\begin_inset Formula $^{\mathrm{2+}})$
\end_inset
and 3 (for Cl
\begin_inset Formula $^{\mathrm{-}})$
\end_inset
.
The chemical reaction material is given by:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Michaelis-Menten Reaction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Michaelis-Menten-Reaction"
\end_inset
\end_layout
\begin_layout Standard
The material type for the Michaelis-Menten reaction is
\shape italic
Michaelis-Menten
\shape default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
maximum rate at saturating substrate concentration
\begin_inset Formula $V_{\max}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
substrate concentration when reaction rate is half of
\begin_inset Formula $V_{\max}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
optional minimum substrate concentration to trigger reaction
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
n
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The Michaelis-Menten reaction may be used to model enzyme kinetics where the enzyme
\begin_inset Formula $\mathcal{E}^{e}$
\end_inset
triggers the conversion of the substrate
\begin_inset Formula $\mathcal{E}^{s}$
\end_inset
into the product
\begin_inset Formula $\mathcal{E}^{p}$
\end_inset
.
The product molar supply is given by
\begin_inset Formula
\[
\hat{c}^{p}=\begin{cases}
\frac{V_{\max}c^{s}}{K_{m}+c^{s}} & c^{s}\geqslant c_{0}\\
0 & c^{s} and one product tag .
For consistency with the formulation of this reaction,
the stoichiometric coefficients should be set to
\begin_inset Formula $\nu_{R}^{s}=\nu_{P}^{p}=1$
\end_inset
,
so that
\begin_inset Formula $\hat{c}^{p}=\hat{\zeta}$
\end_inset
.
\end_layout
\begin_layout Standard
The constitutive form of the specific forward reaction rate
\begin_inset Formula $V_{\max}$
\end_inset
must be selected from the list of materials given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specific-Reaction-Rate"
nolink "false"
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
5.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Specific Reaction Rate Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Specific-Reaction-Rate"
\end_inset
\end_layout
\begin_layout Standard
The following sections define specific materials that can be used to define the reaction rate of a chemical reaction.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Constant Reaction Rate
\begin_inset CommandInset label
LatexCommand label
name "subsec:Constant-Reaction-Rate"
\end_inset
\end_layout
\begin_layout Standard
The material type for a constant specific reaction rate is
\shape italic
constant reaction rate
\shape default
.
The following parameter must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
constant specific reaction rate
\begin_inset Formula $k$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\shape italic
units vary
\shape default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Huiskes Reaction Rate
\begin_inset CommandInset label
LatexCommand label
name "subsec:Huiskes-Reaction-Rate"
\end_inset
\end_layout
\begin_layout Standard
The material type for the Huiskes reaction rate is
\shape italic
Huiskes reaction rate
\shape default
.
This material model employs the bone remodeling framework proposed by Weinans et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Weinans92"
literal "false"
\end_inset
and extended by Mullender et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Mullender94"
literal "false"
\end_inset
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
reaction rate per specific strain energy
\begin_inset Formula $B$
\end_inset
(default=0)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\shape italic
units vary
\shape default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
specific strain energy at homeostasis
\begin_inset Formula $\psi_{0}$
\end_inset
(default=0)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
F
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
L
\series default
/
\series bold
M
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
characteristic distance from sensors (default=0)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The Huiskes specific reaction rate has the form
\begin_inset Formula
\[
k=\frac{1}{\left(J-\varphi_{r}^{s}\right)M^{s}}\left(B\left(\frac{\Psi_{r}}{\rho_{r}^{s}}-\psi_{0}\right)+\sum_{i=1}^{N}e^{-d_{i}/D}B_{i}\left(\frac{\Psi_{ri}}{\rho_{ri}^{s}}-\psi_{0}\right)\right)\,,
\]
\end_inset
where
\begin_inset Formula $\Psi_{r}$
\end_inset
is the strain energy density of the solid (strain energy in current configuration per mixture volume in the reference configuration) and
\begin_inset Formula $\rho_{r}^{s}=\sum\nolimits_{\sigma}\rho_{r}^{\sigma}$
\end_inset
is the referential apparent solid density (mass of solid in current configuration per mixture volume in reference configuration).
The ratio
\begin_inset Formula $\Psi_{r}/\rho_{r}^{s}$
\end_inset
is the specific strain energy (strain energy per mass of solid in the current configuration).
The Huiskes specific reaction rate may assume positive and negative values;
it reduces to zero at homeostasis,
when
\begin_inset Formula $\Psi_{r}/\rho_{r}^{s}=\psi_{0}$
\end_inset
.
\end_layout
\begin_layout Standard
Per Mullender et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Mullender94"
literal "false"
\end_inset
,
the remodeling rate
\begin_inset Formula $k$
\end_inset
at the current material point may depend not only on the specific strain energy at the current point,
but also on its value in the neighborhood of the current point (e.g.,
due to the presence of neihboring sensing cells that provide some form of feedback at the current location).
Here,
\begin_inset Formula $N$
\end_inset
represents the number of elements in the neighborhood of the current material point element,
which fall within a characteristic sensing distance
\begin_inset Formula $D$
\end_inset
,
and
\begin_inset Formula $d_{i}$
\end_inset
represents the distance between these neighboring points and the current material point.
\end_layout
\begin_layout Standard
When
\begin_inset Formula $D=0$
\end_inset
it follows that
\begin_inset Formula $N=0$
\end_inset
and the model uses the original formulation of Weinans et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Weinans92"
literal "false"
\end_inset
.
When
\begin_inset Formula $D>0$
\end_inset
,
as per Mullender et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Mullender94"
literal "false"
\end_inset
,
the finite element code first searches for all the neighboring elements
\begin_inset Formula $N$
\end_inset
which fall within a distance of
\begin_inset Formula $d_{i}\le4\times D$
\end_inset
of the element at which
\begin_inset Formula $k$
\end_inset
needs to be evaluated (here,
using
\begin_inset Formula $d_{i}\le4\times D$
\end_inset
implies that the exponential term becomes negligible beyond this distance,
since
\begin_inset Formula $e^{-4}=0.0183156$
\end_inset
).
This search is conducted once,
at the start of the analysis,
implying that it is not updated at subsequent time points when the deformation may alter distances.
With increasing values of
\begin_inset Formula $D$
\end_inset
,
the number
\begin_inset Formula $N$
\end_inset
of neighboring elements may increase considerably,
especially in three-dimensional models,
which will considerably slow down the computation of
\begin_inset Formula $k$
\end_inset
,
therefore users must be careful with choosing an appropriate value for
\begin_inset Formula $D$
\end_inset
.
\end_layout
\begin_layout Standard
Since the referential solid volume fraction
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
of a multiphasic mixture evolves with its composition as per eq.
\begin_inset CommandInset ref
LatexCommand pageref
reference "eq:cr-referential-solid-vol-frac"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
users must be careful not to allow
\begin_inset Formula $J-\varphi_{r}^{s}\to0$
\end_inset
as Huikes remodeling takes place,
or else the computation of
\begin_inset Formula $k$
\end_inset
from the above formula becomes nearly singular.
Typically this can be done by specifying the true density of the solid,
\begin_inset Formula $\rho_{T}^{s}$
\end_inset
( in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Bound-Molecules"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
),
to be much greater than the maximum apparent density
\begin_inset Formula $\rho_{r}^{s}$
\end_inset
allowed in the solid remodeling reaction ( in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:General-Specification-Multiphasic-Mat"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
Then,
the contribution of the evolving
\begin_inset Formula $\rho_{r}^{s}$
\end_inset
to
\begin_inset Formula $\varphi_{r}^{s}$
\end_inset
in eq.
\begin_inset CommandInset ref
LatexCommand pageref
reference "eq:cr-referential-solid-vol-frac"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
will remain negligible.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout Standard
To reproduce the interstitial solid remodeling theory proposed by Weinans et al.
\begin_inset CommandInset citation
LatexCommand citep
key "Weinans92"
literal "true"
\end_inset
,
consider the forward reaction
\begin_inset Formula
\[
\mbox{cells}+\mbox{solutes}\to\mbox{cells}+\mbox{solid}\,,
\]
\end_inset
where cells convert solutes (e.g.,
nutrients) into synthesized solid when the specific strain energy exceeds the homeostatic value.
If the cells and solutes are implicit in this reaction (e.g.,
if it is assumed that their concentrations change negligibly),
the production rate of the solid may be given by
\begin_inset Formula $\hat{\zeta}=k$
\end_inset
using the law of mass action for a forward rection,
where
\begin_inset Formula $k$
\end_inset
has the form given above.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0.01
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Rigid Body
\begin_inset CommandInset label
LatexCommand label
name "sec:Rigid-Body"
\end_inset
\end_layout
\begin_layout Standard
A rigid body can be defined using the rigid material model.
The material type for a rigid body is
\begin_inset Quotes eld
\end_inset
\shape italic
rigid body
\begin_inset Quotes erd
\end_inset
\shape default
.
The following parameters are defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Density of rigid body
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
M
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Position of the center of mass
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
L
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Young's modulus
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Poisson's ratio
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
If the
\shape italic
center_of_mass
\shape default
parameter is omitted,
FEBio will calculate the center of mass automatically.
In this case,
a density
\shape italic
must
\shape default
be specified.
If the
\shape italic
center_of_mass
\shape default
is defined the
\shape italic
density
\shape default
parameter may be omitted.
Omitting both will generate an error message.
\end_layout
\begin_layout Standard
The Young's modulus
\begin_inset Formula $E$
\end_inset
and Poisson ratio
\begin_inset Formula $v$
\end_inset
currently have no effect on the results.
The only place where they are used is in the calculation of a material stiffness for some auto-penalty contact formulation.
If you are using contact it is advised to enter sensible values.
Otherwise these parameters may be omitted.
\end_layout
\begin_layout Standard
The degrees of freedom of a rigid body are initially unconstrained
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
This is different from previous versions of FEBio where rigid bodies were initially fully constrained.
\end_layout
\end_inset
.
This implies that a rigid body is free to move in all three directions and rotate about any of the coordinate axes.
To constrain a rigid body degree of freedom you may use the
\emph on
Constraints
\emph default
sections (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Rigid-Constraints"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Active Contraction
\begin_inset CommandInset label
LatexCommand label
name "sec:Active-Contraction"
\end_inset
\end_layout
\begin_layout Standard
Active contraction materials may be used to impose a (typically) contractile stress within a solid material,
by incorporating the contraction material within a solid mixture.
The total stress in the solid mixture is simply
\begin_inset Formula $\boldsymbol{\sigma}=\boldsymbol{\sigma}^{s}+\boldsymbol{\sigma}^{a}$
\end_inset
,
where
\begin_inset Formula $\boldsymbol{\sigma}^{s}$
\end_inset
is the solid stress (due to strain and strain history),
and
\begin_inset Formula $\boldsymbol{\sigma}^{a}$
\end_inset
is the active contractile stress.
The calculation of the contractile stress is the same,
wether the solid mixture consists of uncoupled or unconstrained materials.
\end_layout
\begin_layout Subsection
Contraction in Mixtures of Uncoupled Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Contraction-Mixtures-Uncoupled"
\end_inset
\end_layout
\begin_layout Standard
When the solid mixture consists of uncoupled materials,
the active contraction material should be selected from the list below.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Uncoupled Prescribed Uniaxial Active Contraction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Uncoupled-Uniaxial-Contraction"
\end_inset
\end_layout
\begin_layout Standard
The material type for prescribed active contraction along a single direction (or fiber) in an uncoupled solid mixture is
\begin_inset Quotes eld
\end_inset
\shape italic
uncoupled
\shape default
\shape italic
prescribed uniaxial active contraction
\shape default
\begin_inset Quotes erd
\end_inset
.
This material must be combined with a stable uncoupled material that acts as a passive matrix,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
uncoupled solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Solid-Mixture"
nolink "false"
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $T_{0},$
\end_inset
representing the prescribed stress
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
In the reference configuration,
the fiber is oriented along the unit vector
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
,
where
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
are orthonormal basis vectors representing the local element coordinate system when specified (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
),
or else the global Cartesian coordinate system.
The active stress
\begin_inset Formula $\boldsymbol{\sigma}^{a}$
\end_inset
for this material is given by
\begin_inset Formula
\[
\boldsymbol{\sigma}^{a}=J^{-1}T_{0}\mathbf{n}\otimes\mathbf{n}\,,
\]
\end_inset
where
\begin_inset Formula $\mathbf{n}=\mathbf{F}\cdot\mathbf{n}_{r}$
\end_inset
is the stretched fiber orientation in the current (deformed) configuration.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
Uniaxial contraction along
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
,
in a mixture containing a Mooney-Rivlin solid.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
1000
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
90
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Uncoupled Prescribed Transversely Isotropic Active Contraction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Uncoupled-TISO-Contraction"
\end_inset
\end_layout
\begin_layout Standard
The material type for prescribed isotropic active contraction in a plane transverse to a given direction (or fiber),
in an uncoupled solid mixture,
is
\begin_inset Quotes eld
\end_inset
\shape italic
prescribed trans iso active contraction uncoupled
\shape default
\begin_inset Quotes erd
\end_inset
.
This material must be combined with a stable uncoupled material that acts as a passive matrix,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
uncoupled solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Solid-Mixture"
nolink "false"
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $T_{0},$
\end_inset
representing the prescribed stress
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
In the reference configuration,
the fiber is oriented along the unit vector
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
,
where
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
are orthonormal basis vectors representing the local element coordinate system when specified (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
),
or else the global Cartesian coordinate system.
The active stress
\begin_inset Formula $\boldsymbol{\sigma}^{a}$
\end_inset
for this material is given by
\begin_inset Formula
\[
\boldsymbol{\sigma}^{a}=J^{-1}T_{0}\left(\mathbf{B}-\mathbf{n}\otimes\mathbf{n}\right)\,,
\]
\end_inset
where
\begin_inset Formula $\mathbf{n}=\mathbf{F}\cdot\mathbf{e}_{1}$
\end_inset
is the stretched fiber orientation in the current (deformed) configuration and
\begin_inset Formula $\mathbf{B}=\mathbf{F}\cdot\mathbf{F}^{T}$
\end_inset
is the left Cauchy-Green tensor.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
Isotropic contraction in plane transverse to
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
,
in a mixture containing a Mooney-Rivlin solid.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1000
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
90
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Uncoupled Prescribed Isotropic Active Contraction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Uncoupled-Isotropic-Contraction"
\end_inset
\end_layout
\begin_layout Standard
The material type for prescribed isotropic active contraction,
in an uncoupled solid mixture,
is
\begin_inset Quotes eld
\end_inset
\shape italic
prescribed isotropic active contraction uncoupled
\shape default
\begin_inset Quotes erd
\end_inset
.
This material must be combined with a stable uncoupled material that acts as a passive matrix,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
uncoupled solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Solid-Mixture"
nolink "false"
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $T_{0},$
\end_inset
representing the prescribed stress
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The active stress
\begin_inset Formula $\boldsymbol{\sigma}^{a}$
\end_inset
for this material is given by
\begin_inset Formula
\[
\boldsymbol{\sigma}^{a}=J^{-1}T_{0}\mathbf{B}\,.
\]
\end_inset
Note:
If the solid material in the mixture is (nearly) incompressible,
this isotropic contraction will cause no change in the deformation.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
Isotropic contraction in a mixture containing a Mooney-Rivlin solid.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
5.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Prescribed Fiber Stress
\end_layout
\begin_layout Standard
An active fiber stress,
based on a Hill formulation,
can be added via the material
\begin_inset Quotes eld
\end_inset
\emph on
uncoupled active fiber stress
\emph default
\begin_inset Quotes erd
\end_inset
.
This material must be combined with a stable compressible material that acts as a passive matrix,
using a
\begin_inset Quotes eld
\end_inset
\emph on
uncoupled solid mixture
\emph default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Uncoupled-Solid-Mixture"
nolink "false"
\end_inset
.
The stress is given by,
\begin_inset Formula
\[
\boldsymbol{\sigma}^{a}=J^{-1}T\left(\tilde{\lambda}\right)\mathbf{\mathrm{dev}A}.
\]
\end_inset
\end_layout
\begin_layout Standard
Here,
\begin_inset Formula $\mathbf{A=a\otimes a},$
\end_inset
with
\series bold
a
\series default
the unit vector describing the fiber direction in the spatial frame,
\emph on
\begin_inset Formula $\tilde{\lambda}$
\end_inset
\emph default
is the deviatoric fiber stretch,
\emph on
J
\emph default
is the jacobian of the deformation,
and
\begin_inset Formula
\[
T\left(\tilde{\lambda}\right)=s_{max}a\left(t\right)s_{TL}\left(\tilde{\lambda}\right)s_{TV}\left(\dot{\tilde{\lambda}}\right)
\]
\end_inset
\end_layout
\begin_layout Standard
The parameters are defined below.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
smax
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
scale factor for defining maximum stress
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
a
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
activation level
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
stl
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Function defining the stress-stretch relatioship for the material
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
stv
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Function defining the stress-stretch rate relatioship for the material.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The parameters
\begin_inset Formula $s_{TL}$
\end_inset
and
\begin_inset Formula $s_{TV}$
\end_inset
are functions that need to be defined in place.
There are currently two ways of defining these functions,
either via a mathematical expression or a list of sample points.
An example is given below.
If these parametes are omitted,
they are replaced by the constant 1 in the equation for the stress above.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
An example defining the stl parameter via a mathematical expression.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
100.0
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.5
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
(l-1)^2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
An example defining the stl parameter via a point list.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
100.0
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.5
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
linear
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0
\end_layout
\begin_layout LyX-Code
1,0
\end_layout
\begin_layout LyX-Code
2,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Contraction in Mixtures of Unconstrained Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Contraction-Mixtures-Unconstrained"
\end_inset
\end_layout
\begin_layout Standard
\begin_inset CommandInset label
LatexCommand label
name "subsubsec:mylabel27"
\end_inset
When the solid mixture consists of unconstrained materials,
the active contraction material should be selected from the list below.
\end_layout
\begin_layout Subsubsection
Prescribed Uniaxial Active Contraction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-Uniaxial-Contraction"
\end_inset
\end_layout
\begin_layout Standard
The material type for prescribed active contraction along a single direction (or fiber) in a solid mixture of unconstrained materials is
\begin_inset Quotes eld
\end_inset
\shape italic
prescribed uniaxial active contraction
\shape default
\begin_inset Quotes erd
\end_inset
.
This material must be combined with a stable compressible material that acts as a passive matrix,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Mixture"
nolink "false"
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $T_{0},$
\end_inset
representing the prescribed stress
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
In the reference configuration,
the fiber is oriented along the unit vector
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
,
where
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
are orthonormal basis vectors representing the local element coordinate system when specified (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
),
or else the global Cartesian coordinate system.
The active stress
\begin_inset Formula $\boldsymbol{\sigma}^{a}$
\end_inset
for this material is given by
\begin_inset Formula
\[
\boldsymbol{\sigma}^{a}=J^{-1}T_{0}\mathbf{n}\otimes\mathbf{n}\,,
\]
\end_inset
where
\begin_inset Formula $\mathbf{n}=\mathbf{F}\cdot\mathbf{e}_{1}$
\end_inset
is the stretched fiber orientation in the current (deformed) configuration.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
Uniaxial contraction along
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
,
in a mixture containing a neo-Hookean solid.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
90
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Prescribed Transversely Isotropic Active Contraction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-TISO-Contraction"
\end_inset
\end_layout
\begin_layout Standard
The material type for prescribed isotropic active contraction in a plane transverse to a given direction (or fiber),
in a solid mixture of unconstrained materials,
is
\begin_inset Quotes eld
\end_inset
\shape italic
prescribed trans iso active contraction
\shape default
\begin_inset Quotes erd
\end_inset
.
This material must be combined with a stable compressible material that acts as a passive matrix,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Mixture"
nolink "false"
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $T_{0},$
\end_inset
representing the prescribed stress
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
In the reference configuration,
the fiber is oriented along the unit vector
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
,
where
\begin_inset Formula $\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\} $
\end_inset
are orthonormal basis vectors representing the local element coordinate system when specified (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Specifying-Fiber-Orientation"
nolink "false"
\end_inset
),
or else the global Cartesian coordinate system.
The active stress
\begin_inset Formula $\boldsymbol{\sigma}^{a}$
\end_inset
for this material is given by
\begin_inset Formula
\[
\boldsymbol{\sigma}^{a}=J^{-1}T_{0}\left(\mathbf{B}-\mathbf{n}\otimes\mathbf{n}\right)\,,
\]
\end_inset
where
\begin_inset Formula $\mathbf{n}=\mathbf{F}\cdot\mathbf{e}_{1}$
\end_inset
is the stretched fiber orientation in the current (deformed) configuration and
\begin_inset Formula $\mathbf{B}=\mathbf{F}\cdot\mathbf{F}^{T}$
\end_inset
is the left Cauchy-Green tensor.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
Isotropic contraction in plane transverse to
\begin_inset Formula $\mathbf{e}_{1}$
\end_inset
,
in a mixture containing a neo-Hookean solid.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0.3
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
90
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Prescribed Isotropic Active Contraction
\begin_inset CommandInset label
LatexCommand label
name "subsec:Prescribed-Isotropic-Contraction"
\end_inset
\end_layout
\begin_layout Standard
The material type for prescribed isotropic active contraction,
in a solid mixture of unconstrained materials,
is
\begin_inset Quotes eld
\end_inset
\shape italic
prescribed isotropic active contraction
\shape default
\begin_inset Quotes erd
\end_inset
.
This material must be combined with a stable compressible material that acts as a passive matrix,
using a
\begin_inset Quotes eld
\end_inset
\shape italic
solid mixture
\shape default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Mixture"
nolink "false"
\end_inset
.
The following material parameters need to be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $T_{0},$
\end_inset
representing the prescribed stress
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The active stress
\begin_inset Formula $\boldsymbol{\sigma}^{a}$
\end_inset
for this material is given by
\begin_inset Formula
\[
\boldsymbol{\sigma}^{a}=J^{-1}T_{0}\mathbf{B}\,.
\]
\end_inset
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
Isotropic contraction in a mixture containing a neo-Hookean solid.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Subsubsection
Prescribed Fiber Stress
\end_layout
\begin_layout Standard
An active fiber stress,
based on a Hill formulation,
can be added via the material
\begin_inset Quotes eld
\end_inset
\emph on
active fiber stress
\emph default
\begin_inset Quotes erd
\end_inset
.
This material must be combined with a stable compressible material that acts as a passive matrix,
using a
\begin_inset Quotes eld
\end_inset
\emph on
solid mixture
\emph default
\begin_inset Quotes erd
\end_inset
container as described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Solid-Mixture"
nolink "false"
\end_inset
.
The stress is given by,
\begin_inset Formula
\[
\boldsymbol{\sigma}^{a}=J^{-1}T\left(\lambda\right)\mathbf{A}.
\]
\end_inset
\end_layout
\begin_layout Standard
Here,
\begin_inset Formula $\mathbf{A=a\otimes a},$
\end_inset
with
\series bold
a
\series default
the unit vector describing the fiber direction in the spatial frame,
\emph on
\begin_inset Formula $\lambda$
\end_inset
\emph default
is the fiber stretch,
\emph on
J
\emph default
is the jacobian of the deformation,
and
\begin_inset Formula
\[
T\left(\lambda\right)=s_{max}a\left(t\right)s_{TL}\left(\lambda\right)s_{TV}\left(\dot{\lambda}\right)
\]
\end_inset
\end_layout
\begin_layout Standard
The parameters are defined below.
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
smax
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
scale factor for defining maximum stress
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
a
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
activation level
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
stl
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Function defining the stress-stretch relatioship for the material
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
stv
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Function defining the stress-stretch rate relatioship for the material.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The parameters
\begin_inset Formula $s_{TL}$
\end_inset
and
\begin_inset Formula $s_{TV}$
\end_inset
are functions that need to be defined in place.
There are currently two ways of defining these functions,
either via a mathematical expression or a list of sample points.
An example is given below.
If these parametes are omitted,
they are replaced by the constant 1 in the equation for the stress above.
\end_layout
\begin_layout Standard
\shape italic
Example
\shape default
:
\end_layout
\begin_layout Standard
An example defining the stl parameter via a mathematical expression.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
150
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
(l-1)^2
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
An example defining the stl parameter via a point list.
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0,0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
150
\end_layout
\begin_layout LyX-Code
0.1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
linear
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0,0
\end_layout
\begin_layout LyX-Code
1,0
\end_layout
\begin_layout LyX-Code
2,1
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Section
Viscous Fluids
\begin_inset CommandInset label
LatexCommand label
name "sec:Fluids"
\end_inset
\end_layout
\begin_layout Standard
Fluid mechanics analyses may be used to examine fluid flow over fixed domains.
Fluid-structure interactions (FSI) may be used to examine fluid flow over deforming domains.
It is also possible to perform solute (mass) transport analyses in fluid mixtures using the fluid-solutes module.
FEBio's fluid,
fluid-FSI and fluid-solutes modules treat the fluid as isothermal (constant and uniform temperature) and compressible;
incompressible flow is simulated by prescribing a physically realistic bulk modulus
\begin_inset Formula $K$
\end_inset
to model the fluid's elastic compressibility (for example,
\begin_inset Formula $K=2.2\,\text{GPa}$
\end_inset
for water at room temperature).
The Cauchy stress
\begin_inset Formula ${\rm \boldsymbol{\sigma}}^{f}$
\end_inset
in a fluid is given by
\begin_inset Formula
\begin{equation}
\boldsymbol{\sigma}^{f}=-p\mathbf{I}+\boldsymbol{\tau}\,,\label{eq:cfd-stress}
\end{equation}
\end_inset
where
\begin_inset Formula $p$
\end_inset
is the fluid pressure arising from the elastic and osmotic responses and
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
is the viscous stress resulting from the fluid viscosity and its rate of deformation.
FEBio's fluid solver uses the fluid dilatation
\begin_inset Formula $e^{f}$
\end_inset
,
instead of the
\emph on
effective fluid pressure
\emph default
\begin_inset Formula $\tilde{p}$
\end_inset
,
as a nodal degree of freedom.
The effective fluid pressure
\begin_inset Formula $\tilde{p}$
\end_inset
may differ from the actual fluid pressure
\begin_inset Formula $p$
\end_inset
if solutes are present in the fluid mixture,
as per eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:mp-effective-p-c"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
In fluid analyses the effective fluid pressure
\begin_inset Formula $\tilde{p}$
\end_inset
is also the elastic contribution to the fluid pressure,
resulting from changes in
\begin_inset Formula $e^{f}$
\end_inset
.
FEBio provides several alternative constitutive models for the elastic response
\begin_inset Formula $\tilde{p}\left(e^{f}\right)$
\end_inset
,
including
\begin_inset Formula
\begin{equation}
\begin{aligned}\tilde{p}\left(e^{f}\right) & =-Ke^{f} & \text{linear}\\
\tilde{p}\left(e^{f}\right) & =K\left(\frac{1}{1+e^{f}}-1\right) & \text{nonlinear}\\
\tilde{p}\left(e^{f}\right) & =-K\frac{\ln\left(1+e^{f}\right)}{1+e^{f}} & \text{log nonlinear}
\end{aligned}
\label{eq:fluid-pressure-state}
\end{equation}
\end_inset
where
\begin_inset Formula $K$
\end_inset
is the fluid's bulk modulus (a physical property that may be looked up or measured).
The reason for selecting
\begin_inset Formula $e^{f}$
\end_inset
instead of
\begin_inset Formula $\tilde{p}$
\end_inset
is that the dilatation (volumetric strain) is a kinematic measure,
just like the fluid velocity
\begin_inset Formula $\mathbf{v}^{f}$
\end_inset
(the other nodal degree of freedom) and its associated rate of deformation tensor,
whereas
\begin_inset Formula $\tilde{p}$
\end_inset
is a function of state (it needs to be formulated as a function of the deformation,
just like the viscous fluid stress
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
).
Here,
\begin_inset Formula $\tilde{p}$
\end_inset
is called the
\emph on
elastic pressure
\emph default
because it represents the elastic response (equivalent to the stress-strain response in hyperelasticity for solid mechanics) of the fluid under isothermal conditions.
The
\emph on
linear
\emph default
model in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:fluid-pressure-state"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
is useful for nearly-incompressible flow,
typically used for liquids.
However,
if one expects high volumetric strains in the flow (e.g.,
at a stagnation point in a high-velocity fluid flow problem),
it may be better to employ one of the two
\emph on
nonlinear
\emph default
formulations in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:fluid-pressure-state"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
In particular,
for an ideal gas,
the gauge pressure
\begin_inset Formula $\tilde{p}$
\end_inset
is given by
\begin_inset Formula
\begin{equation}
\tilde{p}=P_{r}\left(\frac{\theta}{J^{f}\theta_{r}}-1\right)\quad J^{f}=1+e^{f}\label{eq:ideal-gas-pressure}
\end{equation}
\end_inset
where
\begin_inset Formula $\theta_{r}$
\end_inset
is the (arbitrarily selected) reference temperature and
\begin_inset Formula $P_{r}$
\end_inset
is the corresponding referential absolute pressure (at
\begin_inset Formula $\theta=\theta_{r}$
\end_inset
and
\begin_inset Formula $J^{f}=1$
\end_inset
).
When an ideal gas undergoes an isothermal process (
\begin_inset Formula $\theta=\theta_{r}$
\end_inset
),
eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:ideal-gas-pressure"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
reduces to the
\emph on
nonlinear
\emph default
model in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:fluid-pressure-state"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
with bulk modulus
\begin_inset Formula $K=P_{r}$
\end_inset
.
Thus,
the
\emph on
nonlinear
\emph default
model is consistent with ideal gas law under isothermal processes.
Isothermal processes produce zero heat flux,
\begin_inset Formula $\mathbf{q}=\mathbf{0}$
\end_inset
,
however heat is generated by the fluid viscosity at the rate
\begin_inset Formula $\boldsymbol{\tau}:\mathbf{D}^{f}$
\end_inset
where
\begin_inset Formula $\mathbf{D}^{f}$
\end_inset
is the rate of deformation tensor for the fluid (see below).
Therefore,
to maintain isothermal conditions,
we must assume that this heat is implicitly radiated into or out of the fluid domain.
For isentropic processes it can be shown that the temperature variation in an ideal gas obeys
\begin_inset Formula $\theta/\theta_{r}=\left(J^{f}\right)^{1-\gamma}$
\end_inset
,
where
\begin_inset Formula $\gamma$
\end_inset
is the ratio of isobaric to isochoric specific heat capacities,
\begin_inset Formula $\gamma=c_{p0}/c_{v0}$
\end_inset
.
In that case,
the pressure in an ideal gas evolves according to
\begin_inset Formula $\tilde{p}=P_{r}\left(\left(1+e^{f}\right)^{-\gamma}-1\right)$
\end_inset
,
which represents a fourth alternative to the three models presented in eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:fluid-pressure-state"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
,
with
\begin_inset Formula $K=P_{r}$
\end_inset
.
Contrary to the simplifying assumptions found in thermodynamic textbooks,
an isentropic process is not automatically adiabatic (although the reverse is true).
Therefore,
when modeling ideal gases undergoing isentropic processes,
it is also assumed that the equation of energy balance is implicitly satisfied by suitably radiating heat into or out of the fluid domain.
\end_layout
\begin_layout Standard
The fluid pressure
\begin_inset Formula $\tilde{p}$
\end_inset
is evaluated from the dilatation
\begin_inset Formula $e^{f}$
\end_inset
(the relative change in volume,
or volumetric strain) using the user-specified model from eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:fluid-pressure-state"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
(the default is
\emph on
linear
\emph default
),
where
\begin_inset Formula $e^{f}=J^{f}-1$
\end_inset
and
\begin_inset Formula $J^{f}$
\end_inset
is the fluid volume ratio.
The fluid density
\begin_inset Formula $\rho^{f}$
\end_inset
varies with
\begin_inset Formula $J^{f}$
\end_inset
according to
\begin_inset Formula
\begin{equation}
\rho^{f}=\frac{\rho_{r}^{f}}{J^{f}}\,,\label{eq:cfd-density}
\end{equation}
\end_inset
where
\begin_inset Formula $\rho_{r}^{f}$
\end_inset
is the fluid density in the reference configuration (when the pressure
\begin_inset Formula $p$
\end_inset
is zero).
The dependence of
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
on the fluid rate of deformation tensor
\begin_inset Formula $\mathbf{D}^{f}=\frac{1}{2}\left(\grad\mathbf{v}^{f}+\grad^{T}\mathbf{v}^{f}\right)$
\end_inset
,
where
\begin_inset Formula $\mathbf{v}^{f}=$
\end_inset
fluid velocity,
is given by a constitutive model which may be chosen from the list provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Viscous-Fluid-Materials"
nolink "false"
\end_inset
.
Though Newtonian and non-Newtonian fluids may be analyzed in this framework,
all fluids are purely viscous (no viscoelasticity is included in this formulation).
Setting the viscosity to zero is allowable,
for the purpose of analyzing inviscid flow.
The user is referred to the
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
href{https://febio.org/knowledgebase/}{
\backslash
emph{FEBio Theory Manual}}
\end_layout
\end_inset
for a general description of this isothermal compressible viscous flow framework.
\end_layout
\begin_layout Standard
For fluid analyses,
which are performed over a fixed mesh,
FEBio solves for the components of the fluid velocity
\begin_inset Formula $\mathbf{v}^{f}$
\end_inset
and fluid dilatation
\begin_inset Formula $e^{f}$
\end_inset
at each node.
In contrast,
fluid-FSI analyses are performed over deforming meshes and FEBio treats fluid-FSI domains as a mixture of a viscous fluid
\begin_inset Formula $f$
\end_inset
and a massless,
frictionless porous solid
\begin_inset Formula $s$
\end_inset
.
Thus,
the fluid encounters zero resistance as it flows through the deforming mesh (porous solid).
The solid constituent of a fluid-FSI domain regularizes the mesh deformation;
it is a hyperelastic solid whose constitutive relation is selected by the user;
the recommended choice is the unconstrained neo-Hookean solid defined in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Neo-Hookean"
nolink "false"
\end_inset
,
with
\begin_inset Formula $\nu=0$
\end_inset
and
\begin_inset Formula $E$
\end_inset
set to a very small (but non-zero) value.
For fluid-FSI analyses,
FEBio solves for the solid displacement
\begin_inset Formula $\mathbf{u}$
\end_inset
,
the fluid velocity
\begin_inset Formula $\mathbf{w}$
\end_inset
relative to the mesh,
and the fluid dilatation
\begin_inset Formula $e^{f}$
\end_inset
.
The fluid velocity is then calculated as
\begin_inset Formula
\begin{equation}
\mathbf{v}^{f}=\mathbf{v}^{s}+\mathbf{w}\,,\label{eq:FSI-fluid-velocity}
\end{equation}
\end_inset
where
\begin_inset Formula $\mathbf{v}^{s}$
\end_inset
is the mesh velocity (the material time derivative of the solid displacement
\begin_inset Formula $\mathbf{u}$
\end_inset
).
Since the mesh is fixed in a standard fluid analysis,
\begin_inset Formula $\mathbf{v}^{s}=\mathbf{0}$
\end_inset
and
\begin_inset Formula $\mathbf{v}^{f}=\mathbf{w}$
\end_inset
in that case.
Therefore,
we use
\begin_inset Formula $\mathbf{w}$
\end_inset
to refer to the fluid velocity degrees of freedom for fluid and fluid-FSI analyses.
For both types of analyses,
the no-slip condition for viscous fluids flowing along a boundary is satisfied by setting
\begin_inset Formula $\mathbf{w}=\mathbf{0}$
\end_inset
on that boundary.
\end_layout
\begin_layout Standard
On any fluid boundary,
the outward surface normal may be denoted by
\begin_inset Formula $\mathbf{n}$
\end_inset
and the traction vector on the fluid is given by
\begin_inset Formula $\mathbf{t}^{f}=\boldsymbol{\sigma}^{f}\cdot\mathbf{n}=-p\,\mathbf{n}+\mathbf{t}^{\tau}$
\end_inset
,
where
\begin_inset Formula $\mathbf{t}^{\tau}=\boldsymbol{\tau}\cdot\mathbf{n}$
\end_inset
is the viscous traction.
Essential (Dirichlet) boundary conditions may be prescribed on
\begin_inset Formula $\mathbf{w}$
\end_inset
and
\begin_inset Formula $e^{f}$
\end_inset
,
while natural (Neumann) boundary conditions may be prescribed on
\begin_inset Formula $\mathbf{t}^{\tau}$
\end_inset
and
\begin_inset Formula $w_{n}$
\end_inset
.
The appearance of velocity in both essential and natural boundary conditions may seem surprising at first.
To better understand the nature of these boundary conditions,
it is convenient to separate the velocity into its normal and tangential components,
\begin_inset Formula $\mathbf{w}=w_{n}\mathbf{n}+\mathbf{w}_{t}$
\end_inset
,
where
\begin_inset Formula $\mathbf{w}_{t}=\left(\mathbf{I}-\mathbf{n}\otimes\mathbf{n}\right)\cdot\mathbf{w}$
\end_inset
.
In particular,
for inviscid flow,
the viscous stress
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
and its corresponding traction
\begin_inset Formula $\mathbf{t}^{\tau}$
\end_inset
are both zero,
leaving
\begin_inset Formula $w_{n}$
\end_inset
as the sole natural boundary condition;
similarly,
\begin_inset Formula $e^{f}$
\end_inset
becomes the only essential boundary condition in such flows,
since
\begin_inset Formula $\mathbf{w}_{t}$
\end_inset
is unknown
\emph on
a priori
\emph default
on a frictionless boundary and must be obtained from the solution of the analysis.
\end_layout
\begin_layout Standard
In general,
prescribing
\begin_inset Formula $e^{f}$
\end_inset
is equivalent to prescribing the elastic fluid pressure,
since
\begin_inset Formula $p$
\end_inset
is only a function of
\begin_inset Formula $e^{f}$
\end_inset
according to eq.
\begin_inset CommandInset ref
LatexCommand eqref
reference "eq:fluid-pressure-state"
plural "false"
caps "false"
noprefix "false"
nolink "false"
\end_inset
.
On a boundary where no conditions are prescribed explicitly,
we conclude that
\begin_inset Formula $w_{n}=0$
\end_inset
and
\begin_inset Formula $\mathbf{t}^{\tau}=\mathbf{0}$
\end_inset
,
which represents a frictionless wall.
Conversely,
it is possible to prescribe
\begin_inset Formula $w_{n}$
\end_inset
and
\begin_inset Formula $\mathbf{t}^{\tau}$
\end_inset
on a boundary to produce a desired inflow or outflow while simultaneously stabilizing the flow conditions by prescribing a suitable viscous traction.
Prescribing essential boundary conditions
\begin_inset Formula $\mathbf{w}_{t}$
\end_inset
and
\begin_inset Formula $e^{f}$
\end_inset
determines the tangential velocity on a boundary as well as the elastic fluid pressure
\begin_inset Formula $p$
\end_inset
,
leaving the option to also prescribe the normal component of the viscous traction,
\begin_inset Formula $t_{n}^{\tau}=\mathbf{t}^{\tau}\cdot\mathbf{n}$
\end_inset
,
to completely determine the normal traction
\begin_inset Formula $t_{n}^{f}=\mathbf{t}^{f}\cdot\mathbf{n}$
\end_inset
(or else
\begin_inset Formula $t_{n}^{\tau}$
\end_inset
naturally equals zero).
Mixed boundary conditions represent common physical features:
Prescribing
\begin_inset Formula $w_{n}$
\end_inset
and
\begin_inset Formula $\mathbf{w}_{t}$
\end_inset
completely determines the velocity
\begin_inset Formula $\mathbf{w}$
\end_inset
on a boundary;
prescribing
\begin_inset Formula $\mathbf{t}^{\tau}$
\end_inset
and
\begin_inset Formula $e$
\end_inset
completely determines the traction
\begin_inset Formula $\mathbf{t}^{f}=\boldsymbol{\sigma}^{f}\cdot\mathbf{n}$
\end_inset
on a boundary.
Note that
\begin_inset Formula $w_{n}$
\end_inset
and
\begin_inset Formula $e^{f}$
\end_inset
are mutually exclusive boundary conditions,
and the same holds for
\begin_inset Formula $\mathbf{w}_{t}$
\end_inset
and the tangential component of the viscous traction,
\begin_inset Formula $\mathbf{t}_{t}^{\tau}=\left(\mathbf{I}-\mathbf{n}\otimes\mathbf{n}\right)\cdot\mathbf{t}^{\tau}$
\end_inset
.
\end_layout
\begin_layout Standard
For viscous fluids,
the no-slip boundary condition at an impermeable wall is enforced by setting
\begin_inset Formula $\mathbf{w}_{t}=\mathbf{0}$
\end_inset
,
whereas the wall impermeability condition implies
\begin_inset Formula $w_{n}=0$
\end_inset
.
Therefore,
these conditions may be combined by prescribing wx,
wy and wz components of
\begin_inset Formula $\mathbf{w}$
\end_inset
to zero.
FEBio offers a range of options for conveniently prescribing natural and mixed conditions on boundary surfaces in fluid analyses (Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Surface-Loads"
nolink "false"
\end_inset
).
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
General Specification of Fluid Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:General-Specification-Fluid"
\end_inset
\end_layout
\begin_layout Standard
The material type for a fluid material is
\shape italic
\begin_inset Quotes eld
\end_inset
fluid
\begin_inset Quotes erd
\end_inset
\shape default
.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Fluid referential density
\begin_inset Formula $\rho_{r}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
M
\series default
/
\series bold
L
\series default
\begin_inset Formula $^{\mathrm{3}}$
\end_inset
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Bulk modulus
\begin_inset Formula $K$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of viscous model for
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The tag encloses a description of the viscous stress constitutive relation and associated material properties,
as may be selected from the list provided in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Viscous-Fluid-Materials"
nolink "false"
\end_inset
.
The parameters and must be greater than 0.
These parameters are always required.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
2.2e+09
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Viscous Fluid Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:Viscous-Fluid-Materials"
\end_inset
\end_layout
\begin_layout Standard
Viscous fluid materials provide a constitutive relation for the dependence of the viscous stress
\begin_inset Formula $\boldsymbol{\tau}$
\end_inset
on the rate of deformation tensor
\begin_inset Formula $\mathbf{D}^{f}$
\end_inset
of a fluid.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Newtonian Fluid
\begin_inset CommandInset label
LatexCommand label
name "subsec:Newtonian-Fluid"
\end_inset
\end_layout
\begin_layout Standard
The material type for a Newtonian fluid is
\begin_inset Quotes eld
\end_inset
\shape italic
Newtonian fluid
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
shear viscosity
\begin_inset Formula $\mu$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
bulk viscosity
\begin_inset Formula $\kappa$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The viscous shear stress for this material model is
\begin_inset Formula
\[
\boldsymbol{\tau}=\left(\kappa-\frac{2}{3}\mu\right)\left(\tr\mathbf{D}\right)\mathbf{I}+2\mu\mathbf{D}
\]
\end_inset
Stokes' condition is a constitutive assumption that sets
\begin_inset Formula $\tr\boldsymbol{\tau}=0$
\end_inset
,
implying that
\begin_inset Formula $\kappa=0$
\end_inset
.
This assumption is only valid for some fluids (e.g.,
monoatomic gas
\begin_inset CommandInset citation
LatexCommand citep
key "Panton06"
literal "true"
\end_inset
).
Users may use or ignore this assumption by selecting an appropriate value for
\begin_inset Formula $\kappa$
\end_inset
.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Bingham Fluid
\begin_inset CommandInset label
LatexCommand label
name "subsec:Bingham-Fluid"
\end_inset
\end_layout
\begin_layout Standard
The material type for a Bingham fluid
\begin_inset CommandInset citation
LatexCommand citep
key "Papanastasiou87"
literal "true"
\end_inset
is
\begin_inset Quotes eld
\end_inset
\shape italic
Bingham
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
shear viscosity at infinite shear rate,
\begin_inset Formula $\mu_{\infty}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
yield stress,
\begin_inset Formula $\tau_{y}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
exponent
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The viscous shear stress for this material model is
\begin_inset Formula
\[
\boldsymbol{\tau}=2\mu\mathbf{D}
\]
\end_inset
where
\begin_inset Formula
\[
\mu=\mu_{\infty}+\frac{\tau_{y}}{\dot{\gamma}}\left(1-e^{-n\dot{\gamma}}\right)
\]
\end_inset
Here,
\begin_inset Formula $\dot{\gamma}=\sqrt{2\mathbf{D}:\mathbf{D}}$
\end_inset
is the engineering shear rate.
In the limit as
\begin_inset Formula $\dot{\gamma}\to0$
\end_inset
the viscosity is given by
\begin_inset Formula $\mu=\mu_{\infty}+n\tau_{y}$
\end_inset
.
If we define the scalar shear stress
\begin_inset Formula $\tau=\sqrt{\boldsymbol{\tau}:\boldsymbol{\tau}/2}$
\end_inset
,
if follows that
\begin_inset Formula $\tau=\mu_{\infty}\dot{\gamma}+\tau_{y}\left(1-e^{-n\dot{\gamma}}\right)$
\end_inset
.
Effectively,
this constitutive model represents a bilinear response for
\begin_inset Formula $\tau$
\end_inset
versus
\begin_inset Formula $\dot{\gamma}$
\end_inset
,
with a slope of
\begin_inset Formula $\mu_{\infty}+n\tau_{y}$
\end_inset
when
\begin_inset Formula $\tau<\tau_{y}$
\end_inset
and
\begin_inset Formula $\mu=\mu_{\infty}$
\end_inset
when
\begin_inset Formula $\tau>\tau_{y}$
\end_inset
.
The exponential function rounds the corner at the intersection of these two lines.
For an ideal Bingham fluid one would need to let
\begin_inset Formula $n\to\infty$
\end_inset
.
In practice,
values of
\begin_inset Formula $n$
\end_inset
between 5 and 50 work well,
with the lower end of this range producing faster convergence of the finite element solution.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1
\end_layout
\begin_layout LyX-Code
40
\end_layout
\begin_layout LyX-Code
40
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Carreau Model
\begin_inset CommandInset label
LatexCommand label
name "subsec:Carreau-Fluid"
\end_inset
\end_layout
\begin_layout Standard
The material type for a Carreau model
\begin_inset CommandInset citation
LatexCommand citep
key "Cho91"
literal "true"
\end_inset
is
\begin_inset Quotes eld
\end_inset
\shape italic
Carreau
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
shear viscosity at zero shear rate,
\begin_inset Formula $\mu_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
shear viscosity at infinite shear rate,
\begin_inset Formula $\mu_{\infty}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
time constant
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
power-law exponent
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The viscous shear stress for this material model is
\begin_inset Formula
\[
\boldsymbol{\tau}=2\mu\mathbf{D}
\]
\end_inset
where
\begin_inset Formula
\[
\mu=\mu_{\infty}+\left(\mu_{0}-\mu_{\infty}\right)\left(1+\left(\lambda\dot{\gamma}\right)^{2}\right)^{\left(n-1\right)/2}
\]
\end_inset
Here,
\begin_inset Formula $\dot{\gamma}=\sqrt{2\mathbf{D}:\mathbf{D}}$
\end_inset
is the engineering shear rate.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.056
\end_layout
\begin_layout LyX-Code
0.0035
\end_layout
\begin_layout LyX-Code
3.3
\end_layout
\begin_layout LyX-Code
0.36
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Carreau-Yasuda Model
\begin_inset CommandInset label
LatexCommand label
name "subsec:Carreau-Yasuda-Model"
\end_inset
\end_layout
\begin_layout Standard
The material type for a Carreau-Yasuda model
\begin_inset CommandInset citation
LatexCommand citep
key "Cho91"
literal "true"
\end_inset
is
\begin_inset Quotes eld
\end_inset
\shape italic
Carreau-Yasuda
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
shear viscosity at zero shear rate,
\begin_inset Formula $\mu_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
shear viscosity at infinite shear rate,
\begin_inset Formula $\mu_{\infty}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
time constant
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
power-law exponent
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
power-law exponent divider
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The viscous shear stress for this material model is
\begin_inset Formula
\[
\boldsymbol{\tau}=2\mu\mathbf{D}
\]
\end_inset
where
\begin_inset Formula
\[
\mu=\mu_{\infty}+\left(\mu_{0}-\mu_{\infty}\right)\left(1+\left(\lambda\dot{\gamma}\right)^{a}\right)^{\left(n-1\right)/a}
\]
\end_inset
Here,
\begin_inset Formula $\dot{\gamma}=\sqrt{2\mathbf{D}:\mathbf{D}}$
\end_inset
is the engineering shear rate.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.056
\end_layout
\begin_layout LyX-Code
0.0035
\end_layout
\begin_layout LyX-Code
1.9
\end_layout
\begin_layout LyX-Code
0.22
\end_layout
\begin_layout LyX-Code
1.25
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Powell-Eyring Model
\begin_inset CommandInset label
LatexCommand label
name "subsec:Powell-Eyring-Model"
\end_inset
\end_layout
\begin_layout Standard
The material type for a Powell-Eyring model
\begin_inset CommandInset citation
LatexCommand citep
key "Cho91"
literal "true"
\end_inset
is
\begin_inset Quotes eld
\end_inset
\emph on
Powell-Eyring
\shape italic
\emph default
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
shear viscosity at zero shear rate,
\begin_inset Formula $\mu_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
shear viscosity at infinite shear rate,
\begin_inset Formula $\mu_{\infty}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
time constant
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The viscous shear stress for this material model is
\begin_inset Formula
\[
\boldsymbol{\tau}=2\mu\mathbf{D}
\]
\end_inset
where
\begin_inset Formula
\[
\mu=\mu_{\infty}+\left(\mu_{0}-\mu_{\infty}\right)\frac{\sinh^{-1}\lambda\dot{\gamma}}{\lambda\dot{\gamma}}
\]
\end_inset
Here,
\begin_inset Formula $\dot{\gamma}=\sqrt{2\mathbf{D}:\mathbf{D}}$
\end_inset
is the engineering shear rate.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.056
\end_layout
\begin_layout LyX-Code
0.0035
\end_layout
\begin_layout LyX-Code
5.4
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Cross Model
\begin_inset CommandInset label
LatexCommand label
name "subsec:Cross-Model"
\end_inset
\end_layout
\begin_layout Standard
The material type for a Cross model
\begin_inset CommandInset citation
LatexCommand citep
key "Cho91"
literal "true"
\end_inset
is
\begin_inset Quotes eld
\end_inset
\shape italic
Cross
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
shear viscosity at zero shear rate,
\begin_inset Formula $\mu_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
shear viscosity at infinite shear rate,
\begin_inset Formula $\mu_{\infty}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
time constant
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
exponent
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The viscous shear stress for this material model is
\begin_inset Formula
\[
\boldsymbol{\tau}=2\mu\mathbf{D}
\]
\end_inset
where
\begin_inset Formula
\[
\mu=\mu_{\infty}+\left(\mu_{0}-\mu_{\infty}\right)\frac{1}{1+\left(\lambda\dot{\gamma}\right)^{m}}
\]
\end_inset
Here,
\begin_inset Formula $\dot{\gamma}=\sqrt{2\mathbf{D}:\mathbf{D}}$
\end_inset
is the engineering shear rate.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.056
\end_layout
\begin_layout LyX-Code
0.0035
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
1.0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Quemada Model
\begin_inset CommandInset label
LatexCommand label
name "subsec:Quemada-Fluid"
\end_inset
\end_layout
\begin_layout Standard
The material type for a Quemada model
\begin_inset CommandInset citation
LatexCommand citep
key "Quemada78"
literal "true"
\end_inset
is
\begin_inset Quotes eld
\end_inset
\shape italic
Quemada
\begin_inset Quotes erd
\end_inset
\shape default
.
The following material parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
shear viscosity at zero shear rate suspension volume fraction,
\begin_inset Formula $\mu_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
P
\series default
\begin_inset Formula $\cdot$
\end_inset
\series bold
t
\series default
]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
suspension volume fraction,
\begin_inset Formula $H$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
intrinsic relative viscosity at zero shear rate,
\begin_inset Formula $k_{0}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
intrinsic relative viscosity at infinite shear rate,
\begin_inset Formula $k_{\infty}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[ ]
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
critical shear rate,
\begin_inset Formula $\dot{\gamma}_{c}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
[
\series bold
t
\series default
\begin_inset Formula $^{-1}$
\end_inset
]
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The viscous shear stress for this material model is
\begin_inset Formula
\[
\boldsymbol{\tau}=2\mu\mathbf{D}
\]
\end_inset
where
\begin_inset Formula
\[
\mu=\frac{\mu_{0}}{\left(1-k\frac{H}{2}\right)^{2}}
\]
\end_inset
and
\begin_inset Formula
\[
k=\frac{k_{0}+k_{\infty}\sqrt{\dot{\gamma}_{r}}}{1+\sqrt{\dot{\gamma}_{r}}}\,,\quad\dot{\gamma}_{r}=\frac{\dot{\gamma}}{\dot{\gamma}_{c}}
\]
\end_inset
Here,
\begin_inset Formula $\dot{\gamma}=\sqrt{2\mathbf{D}:\mathbf{D}}$
\end_inset
is the engineering shear rate.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.03
\end_layout
\begin_layout LyX-Code
0.5
\end_layout
\begin_layout LyX-Code
3.691
\end_layout
\begin_layout LyX-Code
1.778
\end_layout
\begin_layout LyX-Code
2.30
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
General Specification of Fluid-FSI Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:General-Fluid-FSI-Materials"
\end_inset
\end_layout
\begin_layout Standard
The material type for a fluid-FSI material is
\shape italic
\begin_inset Quotes eld
\end_inset
fluid-FSI
\begin_inset Quotes erd
\end_inset
\shape default
.
This type of material is used for fluid flow through a deforming mesh.
The material is treated as a special case of fluid-solid mixture,
with the solid material used to regularize the mesh deformation.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of fluid model
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Specification of elastic solid model for mesh deformation
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\end_inset
\begin_inset VSpace defskip
\end_inset
\end_layout
\begin_layout Standard
The tag encloses a description of the fluid,
as given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:General-Specification-Fluid"
nolink "false"
\end_inset
.
The tag encloses a description of the solid,
which should be modeled as an unconstrained elastic solid,
as given in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Unconstrained-Materials"
nolink "false"
\end_inset
.
The recommended choice is the unconstrained neo-Hookean solid defined in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "subsec:Neo-Hookean"
nolink "false"
\end_inset
,
with
\begin_inset Formula $\nu=0$
\end_inset
and
\begin_inset Formula $E$
\end_inset
set to a very small (but non-zero) value.
\end_layout
\begin_layout Standard
\shape italic
Example:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
1000
\end_layout
\begin_layout LyX-Code
2.2e9
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0.001
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
1e-9
\end_layout
\begin_layout LyX-Code
0
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
The value of in the material is internally set to zero regardless of the user-defined value,
since the deforming mesh should not be subjected to inertial forces.
\end_layout
\begin_layout Subsection
General Specification of Biphasic-FSI Materials
\begin_inset CommandInset label
LatexCommand label
name "subsec:General-Fluid-BFSI-Materials"
\end_inset
\end_layout
\begin_layout Standard
The material type for a biphasic-FSI material is
\shape italic
\begin_inset Quotes eld
\end_inset
biphasic-FSI
\begin_inset Quotes erd
\end_inset
\shape default
.
This is a hybrid biphasic material used for modeling dynamic viscous fluid flow and frictional filtration through a porous-deformable solid.
In contrast to the standard biphasic material described in Section
\begin_inset space ~
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Biphasic-Materials"
nolink "false"
\end_inset
,
this material accommodates fluid viscosity and fluid dynamics;
therefore it can be interfaced seamlessly with a fluid-FSI material to allow viscous fluid transport across that interface.
The following parameters must be defined:
\end_layout
\begin_layout Standard
\align center
\begin_inset VSpace defskip
\end_inset
\begin_inset Tabular