I think I have the algorithm figured out.  1) All contact points calculate how much heat to send based on starting conditions. 2) In succession, each contact point modifies the temperatures of the tiles involved based on step 1. 3) after each modification, if heat was transferred, the tiles are check for phase changes.   3a) If the tile is 3C above it's phase up point the tile is flagged to phase up (change material) and 1.5C is subtracted from it's current temp   3b) if