#### Introduction

This post shows how simple optimization techniques can be adopted to identify and tune the mechanical properties of materials to be used within FEM models in order to fit experimental data in the best possible way. The exemple discussed in the following is quite simple, but general concept and approach can be extended to more complex real world cases.

The basic idea to formalize an optimization process aiming at minimizing the error between an experimental test and its relevant FEM simulation. Variables of the optimization process are the material properties (or more in general the parameters) to be tuned whilst the objective of the optimization is to reduce the error between the experimental data and the numerical model.

Limiting to this example, we will consider a simple coupon test of an aluminum alloy subjected to axial loading. The objective is to identify the plasticity law of the material, i.e. its stress-strain curve, to be used in FEM simulations. We will measure the quality of each identified solution by computing the square error between the force-displacement curve obtained in the experiment an the one obtained via a relevant FEM simulation.

#### Contents

This post is organized as it follows:

#### The Experimental Test

The experimental test considered in this example is quite simple: an uniaxial traction test (displacement controlled) of a standard plate. The coupon is pull in traction until a given elongation (of 3 mm) is reached.

The traction force and the specimen elongation between the ends of the coupon is measured. The force vs. elongation curve is reported on the right up to an elongation of 1.5 (i.e. 4%). Limiting to this specific example, we will neglect coupon failure.

#### The Numerical Model

The FEM model used in this example is quite simple. Basically we model the coupon as a simple shell plate. We are interested to model only the free length of the test coupon, i.e. that part to which the elongation in the experimental test refer to.

We are aware that in a real world application a more detailed modelling would be required, in this example however we are not very interested in the detail of the FEM model but more to show how optimization methodologies can be applied to identify the plasticity curve of the coupon. The boundary conditions are quite simple as well. Basically we will constrain the free ends not translate in the Y direction of a predefined displacement, so to mirror a displacement controlled uni-axial traction test. Within the identification procedure we will keep the mesh frozen and we will play with the stress-strain curve defining the material. In this specific case, we will use Calculix (if we go for an open-source solution) or Abaqus as an example.

We will use the ***MATERIAL** card defined below:

** MATERIAL DEFINITION ** ** *MATERIAL, NAME=alloy *DENSITY 2.8100E-09 *ELASTIC, TYPE = ISOTROPIC 70000.0,0.33 *PLASTIC <STRESS_1>,0.000 <STRESS_2>,0.001 <STRESS_3>,0.010 <STRESS_4>,0.040 50.0,<STRAIN_1> **

where

**STRESS_1,…,STRESS_4**are the stress values that we want to search for via the inverse identification procedure. We will also use

**STRAIN_1**value as a strain cut-off value to simulate failure via a drop in the stress-strain relation. This will likely cause the FEM simulation to not converge properly. Again we know this is a rude approach but for the purpose of this exercise is enough as having the FEM analysis not converging will turn out in having a shorter force vs. elongation curve and hence a large error with respect of the experimental curve.

#### The Optimization Process

To solve this optimization process we will use Nexus but similar approach can be implemented in Matlab or any other scripting language as well as within any other Process Automation and Optimisation framework available on the market.

The optimization process in this specific case is relatively simple to formulate.

- Design Variables:
**STRESS_1,…,STRESS_4**ranging from 400MPa to 600MPa and**STRAIN_1**as ultimate elongation, ranging between 0.04 and 0.08 - Objective: minimum error between numerical FEM model and experimental test data.
- Constraint: hardening plastic behavior, i.e.
**STRESS_4 >= STRESS_3 >= STRESS_2 >= STRESS_1**

**Objective Function**

The Objective function of an inverse identification process is typically the error between the current system status and the experimental evidence. On this specific case, the error between the numerical and experimental force vs. elongation curves. Computing this error however is not always trivial. In this specific case the difficulty comes from the fact that the experimental and numerical curves does not have points at the same elongation values, furthermore there are no guarantees that FEM simulation will provide results at exactly the same elongation steps (as iterative convergence is different from run to run if we change the plastic curve of the material in the model).

The solution is thus to use interpolated curves. Basically, we read the experimental curve, we read the FEM curve and we linearly interpolate this latter.

Within Nexus, this is quite simple as we have a

**linInterp**function among the predefined Expression operations. Hence computing the error between experiment and FEM curves simply translates in the expression below:

1000 * norm( linInterp( ‘D_exp’, ‘F_exp’, ‘D_fem’ ) – ‘F_fem’ )

which can be directly encapsulated into an Expression Evaluation node having as input the numerical and experimental curves, defined by two vector with force and elongation values respectively: **F_exp**, **D_exp**, **F_fem** and **D_fem**.

This expression well represent the squared error between the numerical (FEM) and experimental force vs. elongation curves.

**Constraint**

The optimization process as formulated so far may lead to non-monophonic stress-strain plastic curves. In fact values **STRESS_1,…,STRESS_4** can be chose independently. As we we wish to restrict physical solution to pure hardening plastic behavior. To do this, we add an inequality constraint to the optimization process. Basically we require that:

min(‘S_4’-‘S_3’, ‘S_3’-‘S_2’, ‘S_2’-‘S_1’) > 0

Again this is straight forward in Nexus simply requiring to add a second expression to the flowchart.

**The FEM Evaluation Node**

To close the design process automation, we need to include the FEM analysis within the design flow. In Nexus, this can be done either using the so called **CAE Direct Integration Nodes** either via simple script from within an ASCII Navigator Evaluation node. In this example we opt for this second way.

To keep it simple, the ASCII Navigator node will use a first simple script to parameterize the plastic curve in the input file of the FEM model and a second script to read both the FEM load vs. displacement curve and the experimental ones.

The evaluation node will thus receive as input all the design variables (

**STRESS_1,…,STRESS_4**and

**STRAIN_1**) and will return four vectors representing displacements and forces for the experimental test and FEM simulation.

The FEM model writer and result reader script are reported below. We won’t analyze these too in details as the scope here is to show how optimization can be used in inverse identification process. We just wish to make the user know that Nexus provide visual instruments (besides the Direct Integration Nodes) to prepare these script without requiring users to be scripting experts or IT guru!!

The Paremeterization Script:

open("fem_model.inp", "W"); offset(15,1); setField(S_1,"%13f"); offset(1,1); setField(S_2,"%13f"); offset(1,1); setField(S_3,"%13f"); offset(1,1); setField(S_4,"%13f"); offset(1,15); setField(E,"%18f");

The Result Loader Script:

open("experiment.txt"); while( !eof() ) { offset(1,0); f = getField(30,48); u = getField(50,66); if( isFinite(f) && isFinite(u) ) { F_exp.push(f); D_exp.push(u); } } open("fem_model.rpt"); while( !eof() ) { offset(1,0); f = getField(30,48); u = getField(50,66); if( isFinite(f) && isFinite(u) ) { F_fem.push(f); D_fem.push(u); } }

#### Results

Limiting to this simple example, and considering the simulation time for each analyzed configuration is in the order of seconds, we will use a *brutal force* optimization approach and we will use a Single Objective Genetic Algorithm to solve the problem.

More effective approaches my consist in running an initial DoE followed by one or more Gradient Based Optimisation searches to avoid remaining trapped in local minima. As in Nexus Optimisation procedures can be chained as well as evaluation nodes, this second more refined approach is feasible as well.

The picture below shows the final results of the Nexus GA optimization. As you can see on the solution explorer on the left, the identified solution satisfy the hardening constraint, has an overall error of 7.5 (against solution having error > 55).

Finally we wish to compare the force vs. displacement curves. Achieved correlation is reported on the right where the final solution (Run_4) is compared with the experimental tests and other 3 non-optimal solutions.

The final solution has:

**STRESS_1**=420**STRESS_2**=449**STRESS_3**=464**STRESS_4**=520**STRAIN_1**=0.054**ERROR_1**=7.4901

#### Conclusive Remarks

We hope you found this post useful.

Our intention was to provide you a simplified and easy-to-understand example of how optimization techniques can be used to solve inverse identification problems, where the goal is to identify a set of numerical parameters to reproduce the physical behavior of a system, in this specific case to identify the stress-strain plastic curve of the material of which a coupon is made of.

We used Nexus to formalize and solve the optimization process but the methodology remain valid and can applied via other tools available on the market.

There’s definately a great deal to find out about

this issue. I really like all the points you’ve made.