# What would be a simple approach to validate a wave propagation code?

I have a linear elastic wave propagation code and an elastoplastic wave propagation code based on FEniCS.

For now, I keep the 2D mesh (100, 100) fineness unit square and give a source wave of $\sin(40 \pi t)$ in form of Dirichlet BC on one edge of square. For Newmark time discretization method, using $\beta = 0.25$ gives a constant acceleration method. For the linear code, in Paraview, I observe a fast propagating symmetrically distributed wave while for the elastoplastic code, I see much slower propagation and not a symmetrical propagation. It looks like its going more in 1 direction than equally spreading out.

The Young's modulus for both the simulations is 1 and so is the mass density. The Poisson's ratio is similar as well. The elastoplastic wave propagation has another parameter introduced from plasticity theory called 'the yield stress', i.e., after which the material experiences plastic deformation.

My question is: - What would be a good way to verify the results of both the codes?

Would it be a good idea to keep the yield stress abnormally high? If the yield stress is never exceeded, then the result should be similar to elastic wave propagation, right? Would the value of Young's modulus matter?

Note: The purpose is to simulate seismic waves.

• I suppose that you are talking about verification, instead of validation. You probably can use the Method of Manufactured Solutions. But you should start with your linear problem, and don't move to the plasticity case until you know that you are doing it right. I would also suggest that you work in the formulation of your questions, since they can be more clear. – nicoguaro Jul 2 '16 at 17:59
• Thanks for your advice! I am looking into it. I' ll also pay more attention to my question formulation in future. – CRG Jul 2 '16 at 23:58

I agree with the suggestion of starting with a simple problem and with the elastic solution.

Probably the simplest wave problem is the 1D, infinite bar/string. The analytical solution to this problem is well-known, e.g. http://mathworld.wolfram.com/dAlembertsSolution.html You can model this with a strip of elements in the x-direction. You want zero-stress boundary conditions on all edges/faces. If you define an initial condition (displacement) as a "pulse" of some shape in the center of the bar, one wave will move to the right and one to the left as time increases (as you can see from the analytical solution). Obviously you can't create an infinitely-long FE model. Rather, you want stop the FE solution at a time before the two waves reach the ends of your model and reflect back toward the center. The FE solution before this time can be compared with the analytical one.

For the linear, elastic case, the modulus you use doesn't really matter. For the plastic case, as you suggest, you should get the elastic solution if you define a high yield stress.

I've found the Aldridge-Blake solution for spherical wave propagation quite useful for verification. You can find the code in Prof. Brannon's repository at https://csmbrannon.net/2012/03/13/aldridge-spherical-source-verification-test-for-dynamic-continuum-codes/. Unfortunately, the solution is too complex (no pun intended) to post on this forum.