Nonlinear elasticity theory plays a fundamental role in modelling the mechanical response of many polymeric and biological materials. Such materials are capable of undergoing finite deformation, and their material response is often characterised by complex, nonlinear constitutive relationships. Because of these difficulties, predicting the response of such materials to arbitrary loads requires numerical computation (usually based on the finite element method). The steps involved in the construction of the required finite element algorithms are classical and straightforward in principle, but their application to non-trivial material models are typically tedious and error-prone. Our recent work on an automated computational framework for nonlinear elasticity, CBC.Twist, is an attempt to alleviate this problem. The framework is based on the FEniCS project, a collaborative project for the automation of computational mathematical modelling based on the finite element method.
The focus of this talk will be to describe the design and implementation of the automated framework for nonlinear elasticity, as well as providing examples of its use. The goal is to allow researchers to easily pose their problems in a straightforward manner, so that they may focus on higher-level modelling questions and not be hindered by specific implementation issues. What follows is the proposed outline for the talk.
After a brief summary of some key results from classical continuum mechanics, the discourse will turn to the first non-trivial equation of interest: the balance of momentum of a body posed in the reference configuration. We will proceed to show how this classical equation (which is not yet closed, since it does not distinguish one material from another) can be posed generally in weak form using an elegant syntax (in Python) that closely resembles how it is written down on paper. Then, leveraging the automatic linearisation capabilities of the underlying software framework, we will see how one can easily pose sophisticated material models purely at the level of specifying a strain energy function, also using high-level Python syntax. The underlying framework performs the linearisation and generates efficient (C++) code for the finite element computation. Subsequently, information about the computational domain, (Dirichlet and Neumann) boundary conditions, and time-stepping details are each introduced using a few lines of high-level code, completing the specification of the initial- boundary-value problem for nonlinear elasticity. The talk will close with increasingly complex applications of the computational framework.