UniaxialExtension and LayeredUniaxialExtension
We consider a tissue sample with reference length \(L_0\) and cross-sectional area \(A_0\). For uniaxial extension, we stretch along the first coordinate direction. Furthermore, we assume that the material is incompressible and transversely isotropic (i.e., the directions perpendicular to the stretch direction are indistinguishable). Thus, the deformation gradient is:
The resulting (normal) stress is non-zero along the first axis but zero
along the other two. Thus, we can calculate the Lagrange multiplier
\(p\) by equating
\(\sigma_{22}=\sigma_{33}=0\). From the calculated stress, the force
can be calculated as \(P_{11}A_0\). From stretch, other deformation
metrics can be calculated. Deformed length \(l=\lambda L_0\), change
in length \(\Delta l = (\lambda-1)L_0\), and strain
\(\epsilon = (\lambda-1)\). Given deformation (in terms of
stretch/change in length, strain, or deformed length), the stress or
force can be calculated using SampleExperiment.disp_controlled()
function. Conversely, given stress or force, any of the deformation metric are solved
iteratively via SampleExperiment.force_controlled() function.
UniaxialExtension samples can be “layered” via LayeredUniaxialExtension.
Such a setup can be used for representing, for example, tissues that
have multiple layers with different material models and possibly even
different reference lengths. The result would be that there is no zero
stress state for the layered sample. One has to be careful with the
inputs and outputs of the layered samples though. It is required to use
lengths (rather than stretches or strains) as the deformation metric.
Similarly, the force measure should not be stresses since the stresses
would not simply add up (instead they would be weighted by each layer’s
cross-sectional area).