Skip to main content

Verification tests in solid mechanics


Code verification against analytical solutions is a prerequisite to code validation against experimental data. Though solid-mechanics codes have established basic verification standards such as patch tests and convergence tests, few (if any) similar standards exist for testing solid-mechanics constitutive models under nontrivial massive deformations. Increasingly complicated verification tests for solid mechanics are presented, starting with simple patch tests of frame-indifference and traction boundary conditions under affine deformations, followed by two large-deformation problems that might serve as standardized verification tests suitable to quantify accuracy, robustness, and convergence of momentum solvers used in solid-mechanics codes. These problems use an accepted standard of verification testing, the method of manufactured solutions (MMS), which is rarely applied in solid mechanics. Body forces inducing a specified deformation are found analytically by treating the constitutive model abstractly, with a specific model introduced only at the last step in examples. One nonaffine MMS problem subjects the momentum solver and constitutive model to large shears comparable to those in penetration, while ensuring natural boundary conditions to accommodate codes lacking support for applied tractions. Two additional MMS problems, one affine and one nonaffine, include nontrivial traction boundary conditions.

This is a preview of subscription content, access via your institution.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13
Fig. 14
Fig. 15
Fig. 16
Fig. 17
Fig. 18
Fig. 19
Fig. 20
Fig. 21
Fig. 22
Fig. 23
Fig. 24
Fig. 25
Fig. 26


  1. While we here consider the superimposed rotation to be applied after the stretching, it is equally important to test for appropriate predictions when the stretching and rotation are applied simultaneously, including at various accelerations.

  2. To help with code debugging, the table also lists the components N ij of the unit normal to the linear Drucker-Prager cone in stress space, while P ij is the correct projection direction to use in a return algorithm, given by the elastic stiffness acting on N ij .

  3. \( \text {Namely, }\frac{E\nu}{(1+\nu)(1-2\nu)} \text { and } \mu=\frac{E}{2(1+\nu)} \)


  1. Appelo D, Anders PN (2009) A stable finite difference method for the elastic wave equation on complex geometries with free surfaces. Commun Comput Phys 5:84–107

    MathSciNet  Google Scholar 

  2. Babuska I, Tinsley OJ (2004) Verification and validation in computational engineering and science: basic concepts. Comput Methods Appl Mech Eng 193:(10)4057–4066

    Article  MATH  Google Scholar 

  3. Banerjee B (2006) Method of manufactured solutions.

  4. Bardenhagen SG, Kober EM (2004) The generalized interpolation material point method. CMES Comput Model Eng Sci 5:477–495

    Google Scholar 

  5. Batra RC, Liang XQ (1997) Finite dynamic deformations of smart structures. Comput Mech 20:427–438

    Article  MATH  Google Scholar 

  6. Benes M, Matous K (2010) Asynchronous multi-domain variational integrators for nonlinear hyperelastic solids. Comput Methods Appl Mech Eng 199:1992–2013

    Article  MATH  MathSciNet  Google Scholar 

  7. Brannon RM, Leelavanichkul S (2010) A multi-stage return algorithm for solving the classical damage component of constitutive models for rocks, ceramics, and other rock-like media. Int J Fract 163:133–149

    Article  MATH  Google Scholar 

  8. Brannon RM, Kamojjala K, Sadeghirad A (2011) Establishing credibility of particle methods through verification testing. In: II international conference on particle-based methods—fundamentals and applications

  9. Brannon RM, Fossum AF, Strack OE (2009) Kayenta: theory and user’s guide. Technical Report SAND2009-2282, USDOE

  10. Brunner TA (2006) Development of a grey nonlinear thermal radiation diffusion verification problem. Trans Am Nuclear Soc 95:876–878

    Google Scholar 

  11. Foster CD, Regueiro RA, Fossum AF, Borja RI (2005) Implicit numerical integration of a three-invariant, isotropic/kinematic hardening cap plasticity model for geomaterials. Comput Methods Appl Mech Eng 194:5109–5138

    Article  MATH  Google Scholar 

  12. Guilkey J, Harman T, Luitjens J, Schmidt J, Thornock J, de St Germain JD, Shankar S, Peterson J, Brownlee C (2009) Uintah User guide. SCI Institute Technical Report

  13. Johnson GR, Cook WH (1983) A constitutive model and data for metals subjected to large strains, high strain rates and high temperatures. In: Proceedings of the 7th international symposium on ballistics, The Netherlands, pp 541–547

  14. Kamojjala K, Brannon RM (2011) Verification of frame indifference for complicated numerical constitutive models. In: ASME early career technical conference

  15. Knupp P, Salari K (2003) Verification of computer codes in computational science and engineering. Chapman and Hall/CRC, London

    MATH  Google Scholar 

  16. Kossa A, Szabó L (2009) Exact integration of the von Mises elastoplasticity model with combined linear isotropic-kinematic hardening. Int J Plasticity 25:1083–1106

    Article  MATH  Google Scholar 

  17. Kozdon JE, Dunham EM, Nordstrom J (2013) Simulation of dynamic earthquake ruptures in complex geometries using high-order finite difference method. J Sci Comput 55:92–124

    Article  MATH  MathSciNet  Google Scholar 

  18. Krieg RD, Krieg DB (1977) Accuracies of numerical solution methods for the elastic-perfectly plastic model. J Pressure Vessel Technol 99:510–515

    Article  Google Scholar 

  19. Kuo C-S, Hu H-T, Lin R-M, Huang K-Y, Lin P-C, Zhong Z-C, Hseih M-L (2010) Biomechanical analysis of the lumbar spine on facet joint force and intradiscal pressure—a finite element study. BMC Musculoskelet Disord 151:11

    Google Scholar 

  20. Love E, Sulsky DL (2006) An unconditionally stable, energy-momentum consistent implementation of the material-point method. Comput Methods Appl Mech Eng 195:33–36

    Article  MathSciNet  Google Scholar 

  21. Malverin LE (1969) Introduction to the mechanics of a continuous medium. Prentice-Hall Inc., New Jersey

    Google Scholar 

  22. Monaghan JJ (1988) Introduction to sph. Comput Phys Commun 48:89–96

    Article  MATH  Google Scholar 

  23. Oberkampf WL, Roy CJ (2010) Verification and validation in scientific computing. Cambridge University Press, Cambridge

    Book  MATH  Google Scholar 

  24. Oberkampf WL, Trucano TG, Hirsh C (2002) Verification and validation of modeling and simulation in computer ccience and engineering applications. In: Foundations of verification and validation in 21st century workshop

  25. Oberkampf WL, Trucano TG (2002) Verification and validation in computational fluid dynamics. Progress Aerospace Sci 38:209–272

    Article  Google Scholar 

  26. Pautz SD (2001) Verification of transport codes by the method of manufactured solutions: the attila experience. In: Proceedings of ANS international meeting on mathematical methods for nuclear applications, Salt Lake City

  27. Rashid MM (1993) Incremental kinematics for finite element applications. Int J Numer Methods Eng 36:(23)3937–3956

    Article  MATH  MathSciNet  Google Scholar 

  28. Rieben R, White DA (2005) Verification of high-order mixed fem solution of transient magnetic diffusion problems. Technical report, Lawrence Livermore National Laboratory

  29. Roache Patrick J (1999) Fundamentals of Verification and Validation, volume 41. SIAM, Editor: Mark Anisworth

  30. Roache Patrick J (2009) Fundamentals of verification and validation. Hermosa Publishers, Socorro

    Google Scholar 

  31. Roy CJ, Nelson CC, Smith TM, Ober CC (2004) Verification of euler/navier stokes codes using the method of manufactured solutions. Int J Numer Methods Fluids 44:599–620

    Article  MATH  Google Scholar 

  32. Roy CJ, Oberkampf WL (2011) A comprehensive framework for verification, validation, and uncertainty quantification in scientific computing. Comput Methods Appl Mech Eng 200:2131–2144

    Article  MATH  MathSciNet  Google Scholar 

  33. Sadeghirad A, Brannon RM, Burghardt J (2011) A convected particle domain interpolation technique to extend applicability of the material point method for problems involving massive deformations. Int J Numer Methods Eng 86(22):1435–1456

    Article  MATH  MathSciNet  Google Scholar 

  34. Sadeghirad A, Brannon RM, Guilkey JE (2013) Second-order convected particle domain interpolation (CPDI2) with enrichment for weak discontinuities at material interfaces. Int J Numer Methods Eng 95:928–952

    Article  MathSciNet  Google Scholar 

  35. Schwer LE (2006) Guide for verification and validation in computational solid mechanics. In: The American Society of Mechanical Engineers

  36. Simo JC, Hughes TJR (1998) Computational inelasticity. Interdisciplinary applied mathematics: mechanics and materials. Springer, New York

    Google Scholar 

  37. Steffen M, Wallstedt PC, Guilkey JE, Kirby RM, Berzins M (2008) Examination and analysis of implementation choices within the material point method (mpm). Comput Model Eng Sci 2:107–127

    Google Scholar 

  38. Tremblay D, Etienne S, Pelletier D (2006) Code verification and the method of manufactured solutions for fluid-structure interaction problems. In: 36th AIAA fluid dynamics conference, vol 2, pp 882–892

  39. Wallstedt PC, Guilkey JE (2008) An evaluation of explicit time integration schemes for use with the generalized interpolation material point method. J Comput Phys 227:9628–9642

    Article  MATH  MathSciNet  Google Scholar 

Download references


The support of Schlumberger Technology Corporation, SURVICE Engineering and Sandia National Laboratories is gratefully acknowledged. The authors would also like to acknowledge the constructive feedback given by the reviewers which helped to improve the manuscript.

Author information

Authors and Affiliations


Corresponding author

Correspondence to R. Brannon.


Appendix 1: Derivation of analytical forcing functions for the generalized vortex problem

Though the derivation of the analytical forcing functions for generalized vortex and bending bar are documented separately [8, 14], but because of the relevance, these derivation are repeated here.

The dynamic equation of motion is:

$$ \hbox{DIV}({{\bf P}}) + \rho_{\rm o} {\bf b} = \rho_{\rm o} {\bf a}, $$

where a is the acceleration, b is the body force, P is the first-Piola Kirchhoff (PK1) stress, ρ o is the initial density, and DIV(P) is the backwards reference divergence of T, defined with respect to the Cartesian basis (E 1E 2E 3) by

$$ \hbox{DIV}({{{\bf P}}}) = \frac{\partial{P_{ij}}}{\partial X_j}{\bf E}_{i}=\frac{\partial{\bf P}}{\partial {\bf X}}:{\bf I}, $$

where “: ” is the second-order tensor inner product, and I is the second-order identity tensor. The problem domain is a ring of inner radius a and outer radius b, as shown in Fig. 27. The upcoming manufactured solution will have zero displacements and (to achieve traction-free boundaries) zero displacement gradients at the inner and outer radii. Thus, since material motion will occur only in the interior of the ring, this problem may be also regarded to apply on a square domain for which material outside the ring is prescribed to be stationary. This problem involves pure circular motion of all particles. The angular displacement varies with the radial coordinate, thus inducing simple shear with superimposed rotation at all times and at all spatial locations. For plane strain circular particle motion, the mapping from the initial position X to the current position x is given by

$$ {\bf x} = {\bf Q}\cdot {\bf X}. $$

Here, Q is the orthogonal tensor with components

Fig. 27
figure 27

The problem domain of the generalized vortex example

$$ {\bf Q} =\left[\begin{array} {lll} \cos\alpha &-\sin\alpha & 0 \\ \sin\alpha & \cos\alpha & 0 \\ 0 & 0 & 1 \\ \end{array} \right], $$

where α is the rotation angle, which varies with time and radial coordinate R but not with angular coordinate \(\Uptheta\). Specifically,

$$ \alpha(R,t)=g(t)h(R) $$

where, g(t) controls the amplitude of the deformation, and h(R) is a function (having a peak amplitude of unity) that defines the relative radial variation of the rotation angle. The h(R) function is selected in a way to ensure that material motion occurs only between the inner and outer radii, a and b. Thus, h(R) = 0 for R < a and R > b. For continuous displacements, this implies that h(a) = h(b) = 0. Moreover, choosing h′(a) = h′(b) = 0 ensures zero strain (and hence zero traction) at the boundaries, which is termed a “natural” boundary condition because it is the default boundary condition in most momentum solvers (requiring no special handling in the algorithm). The goal of the ensuing analysis is to find the spatially varying body force field \({\bf b}(R,\Uptheta)\) necessary to produce this motion.

To begin the analysis, the following lemmas are useful: for any scalar s,

$$ \frac{{\rm d}{\bf Q}}{{\rm d}s} = \frac{{\rm d}{\bf Q}}{{\rm d}\alpha}\frac{{\rm d}{\alpha}}{{\rm d}s} = {\bf A}\cdot{\bf Q}\frac{{\rm d}{\alpha}}{{\rm d}s}, $$

where A is the axial tensor associated with the rotation axis. Namely,

$$ {\bf A} =\left[\begin{array} {lll} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 0 \\ \end{array} \right]. $$

The axial tensor has the property that, for any vector w,

$$ {\bf A} \cdot {\bf w} = {\bf E}_z \times \bf w , $$

where E z is the unit cylindrical base vector along the axis of rotation. Thus, for example, noting that the position vector is X = R E R ,

$$ {\bf A} \cdot {\bf X} = {\bf E}_{z} \times (R {\bf E}_{R}) = R {\bf E}_{\Uptheta}. $$

The following sections provide steps for determining the deformation gradient F, divergence of the PK1 stress DIV(T), and acceleration a required to ultimately solve (23) for the body force.

1.1 Deformation gradient and divergence of PK1 stress

Differentiating (27), the gradient of the rotation angle is given by

$$ \frac{{\rm d}{\alpha}}{{\rm d}{\bf X}} = g(t)\frac{{\rm d}h}{{\rm d}R}\frac{{\rm d}R}{{\rm d}{\bf X}} = g(t)h'(R){{\bf E}_R}. $$

The deformation gradient is found by taking the derivative of (25)

$$ {\bf F} = \frac{{\rm d}{\bf x}}{{\rm d}{\bf X}} = {\bf Q} + {\bf X}\cdot\frac{{\rm d}{{\bf Q}^{\rm T}}}{{\rm d}{\alpha}}\frac{{\rm d}{\alpha}}{{\rm d}{\bf X}}. $$

Using (28), (31), (32), and the fact that \({{\bf Q}^{\rm T}}\cdot{\bf A}\cdot{\bf Q} = {\bf A}\), we have

$$ {\bf F} = {\bf Q}\cdot\left[{{\bf I} + R g(t)h'(R) {{\bf E}_{\Uptheta}}{{\bf E}_{R}}}\right]. $$

The terms in the brackets represent a state of simple shear in the \(\Uptheta\) direction with the shear plane tangent to the circumference. The multiplication by Q represents additional superimposed rotation into the current configuration. Let

$$ 2 \xi(R) = R h'(R). $$

Then the shear strain is given by

$$ \epsilon(t,R) = g(t) \xi(R). $$

The deformation gradient in (34) may be written as

$$ {\bf F} = {\bf Q}\cdot{\bf q}\cdot{{\fancyscript{F}}}\cdot{{\bf q}^{\rm T}}, $$


$$ {{\fancyscript{F}}} = {\bf I} + 2 \epsilon(t,R){{\bf E}_{2}}{{\bf E}_{1}}\quad\quad\hbox{and}\quad\quad {\bf q} =\left[\begin{array} {lll} \cos\Uptheta &-\sin\Uptheta & 0 \\ \sin\Uptheta & \cos\Uptheta & 0 \\ 0 & 0 & 1 \\ \end{array} \right]. $$

Note that \({\bf F} = {\bf r}\cdot{{\fancyscript{F}}}\cdot{{\bf q}^{\rm T}}\), where

$${\bf r} =\left[\begin{array} {lll} \cos\theta &-\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \\ \end{array} \right]. $$

Here, \(\theta = \Uptheta + \alpha = \Uptheta + g(t)h(R)\), which is the angular coordinate of the particle in the deformed configuration. Note that \({{\fancyscript{F}}}\) is an angle-independent “baseline” deformation representing simple shear without superimposed rotation. Further note that \({\frac{{\rm d}{\fancyscript{F}}}{{\rm d}{R}} = 2g(t)\xi'(R){{\bf E}_{2}}{{\bf E}_{1}}}\). Also, q is independent of R, and \(\frac{{\rm d}{\bf q}}{{\rm d}{\Uptheta}} = {\bf A}\cdot{\bf q}\). The tensor r depends only on the deformed angular coordinate, but (since the deformed angle varies with radial coordinate), this tensor implicitly depends on both angular and radial coordinates. Thus, applying the chain rule,

$$ \frac{{\rm d}{\bf r}}{{\rm d}{\theta}}={\bf A}\cdot{\bf r};\quad \left(\frac{\partial{\bf r}}{\partial{\Uptheta}}\right)_R={\bf A}\cdot{\bf r};\quad \left(\frac{\partial{\bf r}}{\partial{R}}\right)_\Uptheta=g(t)h'(R){\bf A}\cdot{\bf r}, $$

where subscripts are used to indicate what is held constant in partial derivatives. Let S denote the second-Piola Kirchhoff (PK2) stress associated with the deformation \({{\fancyscript{F}}}\). Then, for an isotropic material, it follows that the PK2 stress S associated with F must be

$$ {\bf S} = {\bf q}\cdot{{\it S}}\cdot{{\bf q}^{\rm T}}. $$

The first Piola-Kirchhoff (PK1) stress associated with deformation F is then

$$ {\bf P} = {\bf F}\cdot{{\bf S}} = {\bf Q}\cdot{\bf q}\cdot{\varvec{\tau}}\cdot{{\bf q}^{\rm T}} = {\bf r}\cdot{\varvec{\tau}}\cdot{{\bf q}^{\rm T}}, $$

where \({{\varvec{\tau}} = {\fancyscript{F}}\cdot S}\) is the PK1 stress associated with the baseline deformation \({{\fancyscript{F}}}\), which depends on R indirectly through dependence of the shear strain on R, but this baseline PK1 stress is not dependent on the angular coordinate. Thus

$$ \left(\frac{\partial{\varvec{\tau}}}{\partial{R}}\right)_t = \frac{{\rm d}{\varvec{\tau}}}{{\rm d}{\epsilon}} \left(\frac{\partial{\epsilon}}{\partial{R}}\right)_t = \frac{{\rm d}{\varvec{\tau}}}{{\rm d}{\epsilon}}g(t)\xi'(R). $$

The reference gradient of PK1 stress is a third-order tensor given by

$$ \left(\frac{\partial{\bf P}}{\partial{\bf X}}\right)_t = \left(\frac{\partial{\bf P}}{\partial{R}}\right)_{\Uptheta,t}{{\bf E}_{R}} + \frac{{1}}{{R}}\left(\frac{\partial{\bf P}}{\partial{\Uptheta}}\right)_{R,t}{{\bf E}_{\Uptheta}}, $$

where the terms on the right-hand side are multiplied dyadically. Using (40), (42), and the chain rule, this equation becomes

$$ \left(\frac{\partial{\bf P}}{\partial{\bf X}}\right)_t = \left(g(t)h'(R) {\bf A}\cdot{\bf P} + g(t)\xi'(R) {\bf r}\cdot\frac{{{\rm d}\varvec{\tau}}}{{\rm d}{\epsilon}}\cdot{{\bf q}^{\rm T}}\right){{\bf E}_{R}} + \frac{{1}}{{R}}({\bf A}\cdot{\bf P} + {\bf P}\cdot{{\bf {A}}^{\rm T}}){{\bf E}_{\Uptheta}}. $$

Referring to (24), recognizing that \({{\bf q}^{\rm T}}\cdot{{\bf E}_{R}}={\bf E}_{1}\), and using (30) to note that \({\bf A}^{\rm T}\cdot{\bf E}_{\Uptheta}={\bf E}_{R}\), the reference divergence of PK1 stress is given by

$$ \begin{aligned} \hbox{DIV}({{\bf P}}) &= \rho_{\rm o} ({\bf a} -{\bf b}) = g(t) h'(R){\bf A}\cdot{\bf P}\cdot{{\bf E}_{R}} + g(t) \xi'(R) {\bf r}\cdot\frac{{{\rm d}\varvec{\tau}}}{{\rm d}{\epsilon}}\cdot{{\bf E}_{1}} \\ &\quad + \frac{{1}}{{R}}({\bf A}\cdot{\bf P}\cdot{{\bf E}_{\Uptheta}} + {\bf P}\cdot{{\bf E}_{R}}). \end{aligned} $$

In terms of the deformed angular coordinate θ, the spatial cylindrical base vectors are

$$ {\bf e}_{r} = \cos(\theta){\bf E}_{1} + \sin(\theta){\bf E}_{2},\qquad {\bf e}_{\theta} = -\sin(\theta){\bf E}_{1} + \cos(\theta){\bf E}_{2}. $$

Dotting (46) by these spatial cylindrical base vectors, the spatial cylindrical components of the divergence of PK1 stress are given by

$$ \rho_{\rm o} ({a_{r}} -{b_{r}}) = (\xi'(R) \frac{{{\rm d}\tau_{11}}}{{\rm d}{\epsilon}} - h'(R) \tau_{21}) g(t) + \frac{{1}}{{R}}(\tau_{11} - \tau_{22}), $$
$$ \rho_{\rm o} ({a_{\theta}} -{b_{\theta}}) = (\xi'(R) \frac{{{\rm d}\tau_{21}}}{{\rm d}{\epsilon}} + h'(R) \tau_{11}) g(t) + \frac{{1}}{{R}}(\tau_{12} + \tau_{21}). $$

The key advantage of the above result is that it is expressed in terms of Cartesian components of the PK1 stress corresponding to a baseline homogeneous simple shear, thus requiring the constitutive model to be evaluated only for that special case. The introduction of a specific constitutive model is avoided (for now) so that this result applies to any elastic model or for an inelastic model if no unloading is applied.

1.2 Velocity and acceleration

Using (25), (27) and (28), the velocity and acceleration of any given material particle are

$$ {\bf v} = \dot{\bf Q}\cdot{\bf X} = g'(t)h(R) {\bf A}\cdot{\bf x}=R \omega {\bf e_{\theta}}, $$
$$ {\bf a} = g''(t)h(R) {\bf A}\cdot{\bf x} - (g'(t)h(R))^2{\bf x}=R \dot{\omega} {{\bf e}_{\theta}} - R \omega^2 {\bf e}_{r}, $$


$$ \omega = g'(t)h(R)\qquad \hbox{and}\qquad \dot{\omega} = g''(t)h(R). $$

1.3 Body force

The body force vector is given by

$$ {\bf b} = b_{r} {\bf e}_{r} +b_\theta {\bf e}_{\theta}. $$

Using (48), (49), (51), and (52), the spatial cylindrical components of the body force are

$$ {b_{r}} = -R (g'(t)h(R))^2 -\frac{{1}}{{\rho_{\rm o}}}\left[(\xi'[R] \frac{{{\rm d}\tau_{11}}}{{\rm d}{\epsilon}} - h'[R] \tau_{21})g(t) + \frac{{1}}{{R}}(\tau_{11} - \tau_{22})\right], $$
$$ b_{\theta} = -R (g''(t)h(R)) -\frac{{1}}{{\rho_{\rm o}}}\left[(\xi'[R] \frac{{{\rm d}\tau_{21}}}{{\rm d}{\epsilon}} + h'[R] \tau_{11})g(t) + \frac{{1}}{{R}}(\tau_{12} + \tau_{21})\right]. $$

The Cartesian components are obtained by substituting (47) into (53).

Appendix 2: Derivation of analytical forcing functions for the bending bar problem

The equation of motion is

$$ \hbox{div}{(\varvec{\sigma})} + \rho {\bf b} = \rho {\bf a}, $$

where a is the acceleration, b is the body force, \({\varvec{\sigma}}\) is the Cauchy stress, ρ o is the initial density, and \(\hbox{div}{(\varvec{\sigma})}\) is the backward spatial divergence of \({\varvec\sigma}\), having its i th component given by ∂σ ij / x j .

From Fig. 28, the corresponding mapping from an initial position X to deformed position x is

$$ \left( \begin{array}{c} x_1\\ x_2\\ \end{array} \right) = \left( \begin{array}{c} {\frac{-H}{\beta}} + \left({\frac{-H}{\beta}} + {X_1}\right)\cos\left(\frac{{\beta} {X_2}}{H}\right)\\ \left({\frac{H}{\beta}} + {X_1}\right)\sin\left(\frac{\beta X_2}{H}\right)\\ \end{array} \right). $$

As can be confirmed by direct substitution, the following sequence of calculations decomposes the deformation gradient into rotation and stretch \(\bf F = {\bf R} \cdot {\bf U}\), where R is the rotation tensor and U is the stretch tensor:

$$ \alpha =\frac{\beta[t] X_{2}}{ H}, \qquad \lambda =\frac{ \beta[t] X_{1}}{H} + 1, $$
$$ {\bf R} =\left(\begin{array} {lll} \cos\alpha & -\sin\alpha & 0 \\ \sin\alpha & \cos\alpha & 0 \\ 0 & 0 & 1 \\ \end{array} \right), \qquad {\bf U} =\left(\begin{array} {lll} 1 & 0 & 0 \\ 0 & \lambda & 0 \\ 0 & 0 & 1 \\ \end{array} \right). $$
Fig. 28
figure 28

Snapshot of deformation in time for the bending bar problem

Here, α is the angle of rotation at the material point of interest, λ is the amount of stretch in the 2-direction. For uniaxial strain in the 2-direction, the rotation is R = I, and therefore the deformation gradient is F = U, and the Jacobian is λ.

In the MMS, we assume that we have all the information in (56) except the body force. It is possible (e.g. by running a single-element model driver) to obtain all stress components as a function of uniaxial strain in the 2-direction without rotation. To apply this manufactured solution to an arbitrary, potentially anisotropic and even more nonlinear, elastic constitutive model, the upcoming analysis presumes only that the response functions for all components of stress under uniaxial strain in the 2-direction are known; i.e.,

$$ {[\bar{\varvec{\sigma}}]} =\left[\begin{array} {lll} \sigma_{11}[\lambda] & \sigma_{12}[\lambda] & \sigma_{13}[\lambda] \\ \sigma_{21}[\lambda] & \sigma_{22}[\lambda] & \sigma_{23}[\lambda] \\ \sigma_{31}[\lambda] & \sigma_{32}[\lambda] & \sigma_{33}[\lambda] \\ \end{array} \right]. $$

Then the Cauchy stress \(\varvec{\sigma}\) is computed using

$$ {\varvec{\sigma}} ={\bf R}\cdot{\bar{\varvec{\sigma}}}\cdot{\bf R}^{\rm T}, $$

where R is the rotation tensor. The indicial form for (60) is given by

$$ \frac{\partial { \sigma_{ij}}}{\partial { x_{j}}} = \frac{\partial {}}{\partial {x_{j}}}({R_{im}}\cdot{ {\bar \sigma_{mn}}}\cdot{R_{jn}}). $$

By the product rule,

$$ \frac{\partial { \sigma_{ij}}}{\partial { x_{j}}} = \frac{\partial {({ R_{im}})}}{\partial { x_{j}}} { {\bar \sigma_{mn}}}{R_{jn}} + {R_{im}}{ {\bar \sigma_{mn}}} \frac{\partial {({ R_{jn}})}}{\partial { x_{j}}} + {R_{im}} \frac{\partial { {\bar \sigma_{mn}}}}{\partial { x_{j}}} { R_{jn}}. $$

Recalling from (59) that \({\bar{\varvec{\sigma}}}\) depends only on λ, and noting that (58a, 58b) shows that the polar rotation R depends only on the rotation angle α, using the chain rule

$$ \frac{\partial {({ R_{im}})}}{\partial { x_{j}}} = \frac{d {({ R_{im}})}}{d {\alpha}} \frac{\partial {\alpha}}{\partial { x_{j}}} , \quad\quad \frac{\partial { {\bar \sigma_{mn}}}}{\partial { x_{j}}} = \frac{d { {\bar \sigma_{mn}}}}{d {\lambda}} \frac{\partial {\lambda}}{\partial { x_{j}}}, $$
$$ \frac{{\rm d} {\bf R}}{{\rm d} {\alpha}} = {\bf A}\cdot{\bf R} ,\quad \hbox{where} \quad {\bf A} =\left(\begin{array} {lll} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 0 \\ \end{array} \right), $$
$$ \frac{\partial {\alpha}}{\partial { x_{j}}} = \frac{{\rm d} {\alpha}}{{\rm d} { X_{s}}} \frac{\partial { X_{s}}}{\partial { x_{j}}} = \frac{{\rm d} {\alpha}}{{\rm d} { X_{s}}} { F^{-1}_{sj}}=\frac{{\rm d} {\alpha}}{{\rm d} { X_{s}}} { U^{-1}_{sa}} { R_{ja}}. $$

Using (63b), (63c) and substituting in (63a),

$$ \frac{\partial {{ R_{im}}}}{\partial { x_{j}}} = { A_{ip}} { R_{pm}} \frac{{\rm d} {\alpha}}{{\rm d} { X_{s}}} { U^{-1}_{sa}} { R_{ja}}. $$

This implies that

$$ \frac{\partial {{ R_{jn}}}}{\partial { x_{j}}} = { A_{jp}} { R_{pn}} \frac{{\rm d} {\alpha}}{{\rm d} { X_{s}}} { U^{-1}_{sa}} { R_{ja}}. $$

Using (64) and (65) , (62) can be reduced to

$$ \begin{aligned} f_{i} =& \frac{\partial { \sigma_{ij}}}{\partial { x_{j}}} = { A_{ip}} { R_{pm}} \frac{{\rm d} {\alpha}}{{\rm d} { X_{s}}} { U^{-1}_{sa}} { R_{ja}} { {\bar \sigma_{mn}}} {R_{jn}} + {R_{im}} \frac{\partial { {\bar \sigma_{mn}}}}{\partial { x_{j}}} { R_{jn}}\\ &\quad + {R_{im}} { {\bar \sigma_{mn}}} { A_{jp}} { R_{pn}} \frac{{\rm d} {\alpha}}{{\rm d} { X_{s}}} { U^{-1}_{sa}} { R_{ja}}. \end{aligned} $$

Multiplying both sides of (66) using R iq and simplifying using the fact that R is orthogonal

$$ \bar{ f_{q}}={ R_{iq}} \frac{\partial { \sigma_{ij}}}{\partial { x_{j}}} = { A_{qm}} \frac{{\rm d} {\alpha}}{{\rm d} { X_{s}}} { U^{-1}_{sn}} { {\bar \sigma_{mn}}}+ \frac{\partial { {\bar \sigma_{qn}}}}{\partial { x_{j}}} { R_{jn}} + { {\bar \sigma_{qn}}} { A_{qn}} \frac{{\rm d} {\alpha}}{{\rm d} { X_{s}}} { U^{-1}_{sa}}. $$

Recalling from (59) that \(\varvec{\sigma}\) depends only on λ, and from (58a, 58b) that λ depends only on \({\user2{X}}\)

$$ \frac{\partial { {\bar \sigma_{qn}}}}{\partial { x_{j}}}=\frac{\partial { {\bar \sigma_{qn}}}}{\partial {\lambda}} \frac{\partial {\lambda}}{\partial { x_{j}}} = \frac{\partial { {\bar \sigma_{qn}}}}{\partial {\lambda}} \frac{\partial {\lambda}}{\partial { X_{p}}} \frac{\partial { X_{p}}}{\partial { x_{j}}} = \frac{\partial { {\bar \sigma_{qn}}}}{\partial {\lambda}} \frac{\partial {\lambda}}{\partial { X_{p}}} { U^{-1}_{pt}} { R_{jt}}. $$

Using the definitions of λU and A and substituting (68) in (67), we have

$$ \bar{ f_{q}}={ R_{iq}} \frac{\partial { \sigma_{ij}}}{\partial { x_{j}}} = {{ \frac{\beta} {H \lambda}}}\left({ A_{q1}} { {\bar \sigma_{12}}} +{ A_{q2}} { {\bar \sigma_{22}}} + \lambda \frac{\partial { {\bar \sigma_{q1}}}}{\partial {\lambda}} + { {\bar \sigma_{q1}}}\right). $$

Thus, the unrotated force components are

$$ \bar{ f_{1}} = {{ \frac{\beta} {H \lambda}}}\left(-{ {\bar \sigma_{22}}} + \lambda \frac{\partial { {\bar \sigma_{11}}}}{\partial {\lambda}} + { {\bar \sigma_{11}}}\right), $$
$$ \bar{ f_{2}} = {{ \frac{\beta} {H \lambda}}}\left({ {\bar \sigma_{12}}} + \lambda \frac{\partial { {\bar \sigma_{21}}}}{\partial {\lambda}} + { {\bar \sigma_{21}}}\right), $$
$$ \bar{ f_{1}} = {{ \frac{\beta} {H \lambda}}}\left(\lambda \frac{\partial { {\bar \sigma_{31}}}}{\partial {\lambda}} + { {\bar \sigma_{31}}}\right). $$

These are the unrotated force components. To apply these in a calculation of the body force for the manufactured solution, the actual force vector can be computed by recalling that \({\user2{f}} = {\bf R}\cdot{\bar{\varvec{f}}}\). In general, this comes out to be in the form

$$ {\user2{f}} = f_{r} {\user2{e}}_{r} + f_{\theta} {\user2{e}}_{\theta}. $$

The force contribution from the material acceleration is relatively easy because we already have the relation between \({\user2{x}}\) and \({\user2{X}}\). Acceleration is simply

$$ {\user2{a}} = \left(\frac{\partial^2 {{\user2{x}}}}{\partial t^2}\right)_{\user2{X}} = \frac{\partial^2 {\user2{x}}}{\partial \beta^2} \left(\frac{{\rm d} \beta}{{\rm d} t}\right)^2 + \frac{\partial {\user2{x}}}{\partial \beta}\frac{\partial^2 \beta}{\partial t^2}, $$

where the derivatives with respect to β are found by differentiating (58a, 58b). The result gives the cartesian components of acceleration which must be converted to polar components to give a final acceleration of the form

$$ {\user2{a}} = a_{r} {\user2{e}}_{r} + a_{\theta} {\user2{e}}_{\theta}. $$

Density is

$$ \rho = \frac{\rho_{0}}{\lambda}. $$

Substituting (71), (74), and (73) in (56) after choosing the material model and material constants, the total body force required for this deformation is:

$$ {\user2{b}} = b_{r} {\user2{e}}_{r} + b_{\theta} {\user2{e}}_{\theta}, $$


$$ b_{r} = a_{r} - \frac{ f_{r}}{\rho}, \quad b_{\theta} = a_{\theta} - \frac{ f_{\theta}}{\rho}. $$

Rights and permissions

Reprints and Permissions

About this article

Cite this article

Kamojjala, K., Brannon, R., Sadeghirad, A. et al. Verification tests in solid mechanics. Engineering with Computers 31, 193–213 (2015).

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI:


  • Verification testing
  • Solid mechanics
  • Method of manufactured solutions
  • MMS
  • Generalized vortex
  • Bending bar
  • Frame indifference