# Hansel-Spittel equation parameter determination

I am currently learning how to determine the Hansel-Spittel equation parameters. The equation has following form:

$$\sigma= A \cdot e^{m_1\cdot T}\cdot(\epsilon^{m_2})\cdot \exp\left(\frac{m_4}{\epsilon}\right)\cdot \dot{\epsilon}^{m_3}$$

Where: $$A$$, $$m_1$$, $$m_2$$, $$m_3$$, and $$m_4$$ are coefficients to be determined, $$T$$ is temperature, $$\sigma$$ is the true stress during the deformation, $$\epsilon$$ is the true strain during the deformation, and $$\dot{\epsilon}$$ is the true strain rate during the deformation.

My data consists of 3 curves of different strain rates for 3 different temperatures. My curves are true stress versus true strain.

Normally, I would start fitting of the curves by determining $$A$$ and $$m_1$$ with Python or MATLAB/Octave at the strain rate and strain equal 1 so independently on the actual values of other parameters, the stress is the same. In this case, my data does not reach there and I am stuck.

I have tried Python code to determine all parameters but did not succeed. The code did not result in any reasonable values that can be actually used as the resulting curves have been way off.

Can you provide me with advice on how to fit the curves to the equation?

• How many data points do you have for strain versus time? Will you accept an approach that is independent of the computer tool, or must you have an answer for MatLab or python? – Jeffrey J Weimer Jun 15 '20 at 20:19
• The data I have is currently in form of graphic curve so I can extract 5 points per curve or go for 100 points. I think the data points count is ok here. The solution I am looking for is a generic algorithm, I do not need it being in any particular language but working example in Python or MATLAB would be ok for my purpose too. – mismichael Jun 17 '20 at 7:33

# Methods

This is a multivariate problem. In general, you will need arrays of $$\sigma$$, $$\epsilon$$, $$\dot{\epsilon}$$, and $$t$$ for the three values of $$T$$.

## Method 1 - Fully Multivariate

The approach may depend on the code base, as the guidelines are likely different in each. You will likely need to create a function that accepts three arrays ($$\epsilon$$, $$\dot{\epsilon}$$, $$t$$) along with $$T$$ as inputs and returns the value of $$\sigma$$. You will need to run that function through the multivariate routine in the code base that you are using.

The advantage of this approach is that you fit all parameters globally. The disadvantage is only in your ability to construct and use the multivariate methods for the code base at hand.

## Method 2 - Stepwise Regression

In this case, start by collapsing the temperature dependence.

$$\sigma= B(T)\cdot(\epsilon^{m_2})\cdot \exp\left(\frac{m_4}{\epsilon}\right)\cdot \dot{\epsilon}^{m_3}$$

Fit each of the three temperature curves separately to obtain the four fitting parameters $$B(T), m_2 - m_4$$. Then, fit the three values of $$B(T)$$ versus $$T$$ to obtain $$m_1$$.

The advantage of this approach is that it lends itself to an easier coding algorithm than Method 1. The disadvantage is that you treat the $$m_2 - m_4$$ parameters as though they are also temperature dependent when they may not be.

## Method 3 - Attempt at First Guess

Take three points of $$\sigma$$ versus $$\dot{\epsilon}$$ (one pair each from each curves for $$T$$) where $$\epsilon = 1$$ to write

$$\sigma= A \cdot e^{m_1\cdot T}\cdot \exp\left(m_4\right)\cdot \dot{\epsilon}^{m_3}$$

With only three data points and four unknowns, this cannot be solved.

Take three points of $$\sigma$$ versus $$\epsilon$$ where $$\dot{\epsilon} = 1$$ to write

$$\sigma= A \cdot e^{m_1\cdot T}\cdot(\epsilon^{m_2})\cdot \exp\left(\frac{m_4}{\epsilon}\right)$$

Again, with only three data points and four unknowns, this cannot be solved.

The combination of the two equations with six data points has five unknowns. The set can be solved. The approach goes back to Method 1. So, just do Method 1 on the entire data.

# Caveats

As with any regression fitting of a theoretical expression to discreet data, the consistency (precision/repeatability) and accuracy will depend on having two things: an appropriate span of data points and a robust regression algorithm.

For this case, the theoretical curve is non-linear in the values. Given the exponential nature of all fitting parameters (except $$A$$), data should likely be measured over at least two if not three orders of magnitude of the parameters ($$\sigma$$, $$\epsilon$$) and over at least four values of $$T$$ across a range where the exponential dependence is anticipated to be well-resolved over just a mildly linear variation. An additional complexity in this situation is that $$\dot{\epsilon}$$ is not measured directly, it is obtained by derivation (differentiation) from $$\epsilon$$ versus $$t$$. Some benefit may be obtained by generating an analytical expression for $$\dot{\epsilon}$$ versus $$\epsilon$$ rather than a data array that is obtained from numerical differentiation.

The robustness of the algorithm may be limited by the application used. The common chi-squared minimization used in a Levenberg-Marquardt method may not be the fastest or most reliable compared to an entropy minimization method for example. In any case, until the span of data is appropriate, even the best algorithm is bound to fail more often than it succeeds.

• Dear Jeffrey, Thank you for the answer and pointing me towards these solutions. There is few things I would like to elaborate on. 1. Would it change anything if I have more curves e.g. 4 temperatures and 4 strain rates? What if more? 2. I have used Method 1 which did not give me good results at all. – mismichael Jun 18 '20 at 13:09
• 3. In Method 1 you are mentioning strain equal 1. I do not have so long curves. What can be done to mitigate this? – mismichael Jun 18 '20 at 13:14
• I have addressed you first comment in a revision. As to not having values at $\epsilon = 1$, that basically means, you cannot apply Method 3. You cannot ever hope to obtain four fitting parameters with only three data points (using results for $\dot{\epsilon} = 1$). – Jeffrey J Weimer Jun 18 '20 at 13:55