MUCG73 is a program available from map, which is written in FORTRAN. The program was originally written by HKDH (Harry) Bhadeshia and using the methods described in the 1982 paper, “Thermodynamic analysis of Isothermal transformation diagrams”. PDF available here: Thermodynamics analysis of isothermal transformation diagrams from phase transformations group.

I’ve been making some changes to the program since I at first wanted to increase the range of the calculation to lower temperatures, and also wanted to decrease the temperature step size from 20 degrees to 1 degree. This was to allow me to calculate the kinetics below 200 degrees Celcius which is the temperature range I am interested in for the ‘low temperature’ bainite. Calculating with a temperature step of 1 degree allows me to more easily calculate a CCT diagram using Scheil’s Additive law, otherwise it is necessary to interpolate between each 20 degrees step.

The most useful change I made so far was to replace the regression routine used for calculating the intersection of the free energy and the stored energy for bainite and for martensite. This was necessary after changing either the range or the step size used in the calculation because the regression previously was calculated by using the energy calculated for each temperature except the last 10 points. This corresponds to the range, range 200-480, which you can see in the figure graph of T vs FTO below contains a change in gradient. Finding the intersection can be made more robust/general by replacing this with a comparison of the free energy at each temperature, when the energy reaches the level for bainite or martensite I then interpolate to find the critical temperature. Since the energy in the program varies almost linearly with temperature this means the solution no longer depends upon the temperature step, it should always work find the same answer as long as the lines intersect within the temperature range calculated.

[Download gnuplot script to reproduce this graph here: gnuplot gallery.

Professor Bhadeshia recommended replacing the ENERGY subroutine with the original routine from MUCG46 for the time being, since the constants determined in the rest of the program where calculated using the original version of this function, therefore any fitting was to these values. The ENERGY2 routine written by Suresh Babu should be more correct, but to use it various parameters need to be recalculated to reproduce the TTT diagram. The next step in this project is to compare these two functions, and also I also to take a look at the calculation of the Widmanstatten start temperature, which does also change slightly with the step size. I think the functions should be extended to work below 0 degrees Celcius if possible to allow calculation of the martensite start temperature in steels with higher alloy contents.

hmmm… also I have to work out a way to avoid getting NaN for a result at low temperatures.

Here are some snipets of FORTRAN code.

The changes in the main part of the program (it’s also necessary to declare the existance of subroutines).

C CALL MAP_UTIL_ANALY(J8,10,CONST,SLOPE,CORR,DT4,DDFTO)

C

C BS=(-400.0-CONST)/SLOPE

C MS=(-1120.0D+00-10568.0D+00*X1+94.1D+00-CONST)/SLOPE

BS=MAT_BS(J8,DT4,DDFTO)

MS=MAT_MS(J8,DT4,DDFTO,X1)

C

The subroutine for calculating the martensite start temperature.

C***************************************************************************

C MATHEW JAMES PEET, 21 APRIL 2006

C UNIVERSITY OF CAMBRIDGE

C

DOUBLE PRECISION FUNCTION MAT_MS(IMAX,T,G,X1)

IMPLICIT NONE

INTEGER I,IMAX,IMS

DOUBLE PRECISION T(1000),G(1000)

DOUBLE PRECISION MCOND

DOUBLE PRECISION X1

MCOND=-1120.0D+00-10568.0D+00*X1+94.1D+00

C

C WRITE(*,*) "MCOND, X1"

C WRITE(*,*) MCOND,X1

C

DO 1 I=1,IMAX

IF(G(I) .LT. MCOND) THEN

MAT_MS = T(I)

IMS = I

C WRITE (*,*) MAT_MS,I

C

ENDIF

C

1 CONTINUE

C WRITE (*,*) MAT_MS

C MAT_MS = 0.5*(T(IMS)+T(IMS-1))

MAT_MS = T(IMS-1)+(T(IMS)-T(IMS-1))*

& ((G(IMS-1)-MCOND)/(G(IMS-1)-G(IMS)))

RETURN

END

C******************************************************************

It would be nice to get hold of the data used to train the models. A similar problem exists in calculating TTT diagrams with the MAP program MTTTDATA, which uses MTDATA, which as far as I understand is also incomplete for calculating TTT diagrams.

Of course most of this wont be necessary when we can solve the Shrodinger Equation.

Filed under: Bainite, gnuplot, Martensite, Modeling, Modelling, Steel | 4 Comments »