An algorithm for modelling microstructural development in weld heat-affected zones (part a) reaction kinetics