I have developed a spreadsheet to calculate equilibrium temperatures, time to target temp, etc based on my particular setup. Everything depends on volume of water, volume of milk, and the BTU values of your heat source. I have 35 gallons of heated water and 35 gallons of milk in a 70 gallon tank. Since the volumes are the same, quick math is easy for equilibrium temperatures. If the milk starts at 40F and the the water is 140F, then both will reach equilibrium at the average temperature of 90F. Put another way - 40+140=180 divided by 2 = 90F. Of course there is some heat loss, and the heat source keeps generating BTUs so that's why I start with 150F water in my vat. After the water hits 150F, I reset my digital controller to 90F or whatever my target temp is. It is MUCH better to overheat than underheat in the beginning. As the milk heats up, I can always drop the volume of water to slow down heat transfer and avoid overshooting the target temperature. And by the way, these calculations can be used even if you are making cheese in your kitchen sink. You just have to know volumes and temperatures.
Interesting physics and math. Not difficult, but it does take some head scratching. Here are some basic concepts:
It takes one BTU of energy to raise one pound of water, one degree F. Assuming water & milk are both 8.6 lb/gal means 70 gallons (combined water & milk in my vat) x 8.6 = 553 pounds. It will take 602 BTUs to increase that 70 gallons by one degree. Substitute your own volumes to calculate your needs.
By definition, a 1000w (1kw) electric water heating element running for one hour generates 3413 BTUs.
A 1500w element produces 5119 BTUs/hr. So 5119/602 = 8.5 degree rise per hour.
A 4500w would give 25.5 degrees per hour. A 6000w would give 34 degrees per hour.
So now you have everything you need to calculate temperature and times for your own setup.
Hey, If I gave you the spreadsheet, you'd miss out on all of the fun. Enjoy.