MEPLS (Mesoscale Elasto-Plasticity Simulator) is an open-source object-oriented framework for simulating the plastic deformation of materials based on the combination of stochastic processes and solid mechanics. I’ve developed it over my years of research in the statistical modeling of materials, although it’s still a work in progress. Its goal is to provide modular, efficient, and easy-to-use tools to build simulations for a broad range of physical scenarios. MEPLS abstracts away unnecessary complexity, allowing the user to focus on the physics of the model. Whenever possible, it uses existing well-established software, such as the deal.II library for the Finite Element Method. To achieve these goals, MEPLS is developed around three pillars:

EFFICIENT

MEPLS is fully implemented in C++, with a back-end based on well-established efficient libraries such as deal.II and UMFPACK.

USER FRIENDLY

It is easy to build and has minimal dependencies. It is well-documented and has a gallery of examples. It produces detailed output data.

EXTENSIBLE

It is object-oriented and template-based. Its modularity and simplicity facilitate the task of extending it according to the user’s needs.

Motivation

At a range of scales between the micro and the macroscale, a material’s plastic deformation can be described with great independence of microscopic details at the so-called mesocale. Models operating at the mesoscale are an excellent tool for establishing links between micro and macroscale plastic deformation. Mesoscale models divide a material into mesoscale subdomains, known as elements. The state of the elements is defined by internal variables in terms of continuum mechanics. Their behavior is defined according to a set of simple local rules, representing only the most relevant characteristics of the plastic deformation mechanisms and neglecting fine details. Such a simplified description means a loss of information and imperfect knowledge about the elements’ state. To represent this uncertainty, the rules governing the behavior of the elements are stochastic processes. Finally, elements influence each other’s behavior due to elastic fields. This interaction leads to a highly correlated system that exhibits complex non-linear behavior. In these situations, analytical solutions are not available, so we must resort to numerical methods.

 

Stochastic simulation of a material undergoing plastic deformation. Left: the stress-strain curve; Right: the plastic strain spatial map.

 

Why MEPLS?

MEPLS is a framework that provides easy-to-use numerical tools to build mesoscale models of the plastic deformation of materials under a broad range of physical scenarios. An alternative description is that MEPLS allows the statistical sampling of a mesoscale model’s configuration space with Markov chain Monte Carlo methods. MEPLS enables the user to study the impact that microstructural properties have on the macroscale elasto-plastic behavior of a material. This question is especially challenging to answer when those properties are spatially heterogeneous and statistically distributed, which is, in turn, the most common situation. The built-in MEPLS tools abstract away unnecessary complexity associated with model specification, allowing the user to focus on the physics of the problem. Thus, the user can easily study the influence of: the local statistics of elastic constants, yield criteria, plastic deformation, structural evolution, etc.; the driving protocol: strain-controlled tests, creep, cyclic loading, etc.; the loading mode: simple shear, compression, bending, etc. Moreover, suppose a feature is not readily available. In that case, chances are that the user can seamlessly implement it thanks to MEPLS extensibility, availability of examples, and thorough documentation.

 

The structure of MEPLS
NamespaceResponsibility of the members
 element represent the material’s mesoscale subdomains, a.k.a elements
 slip implement the physics of slip activation within the elements
 elasticity_solver compute the elastic fields, i.e., how the elements influence each other
 system manage the elements, the solver, and the history
 dynamics algorithms for the dynamical evolution of the system
 event events representing changes in the system
 history record, continuously in time, the evolution and changes in the system
 snapshot take snapshots of the elements’ state at certain discrete time steps
 patches sample the local elasto-plastic response of the system at different length scales
 utils contains utilities that come in handy in different situations

 

Get MEPLS

You can find a more detailed description of the project, its documentation, tutorial, and other resources on the project’s website. You can find the source code in the project’s repository on GitHub.