I apologize for the incredibly late response here. I had this post up as a tab in my browser for over a week as I wanted to get take the time to answer it correctly (sorry again it took so long). This type of reflection-heavy solar adjusted MRT calculation in the old file that you reference has gotten a lot easier, more powerful, and more accurate in the [+] plugins. This is not only because @mostapha and @sarith designed the Honeybee[+] Annual recipe to be able to return separate values for direct and diffuse radiation but also because I recently re-designed the SolarCal methods to be able to estimate solar-adjusted MRT using horizontal components of direct and diffuse radiation.
Here you can find a Grasshopper definition that uses these most-recent capabilities:
HBPlus_SolarAdjusteMRTExample.gh (514.6 KB)
Note that you must have the latest version of the Honeybee[+] libraries on your system to be able to run it and, for most users, this involves re-running the HoneybeePlus Installer component and restarting Grasshopper a couple of times.
Here, you can see that we can even produce time-lapse images of the MRT over the course of a day using the new components:
With all of this said, I want to point out that THE NAME OF THIS POST IS MIS-LABELED. This is because mean radiant temperature is NOT surface temperature. Radiant temperature is a theoretical concept and you can think of solar-adjusted radiant temperature as an answer to the question “what would happen if I took a thermal camera and pointed it directly at the sun?” The reading that you get from your camera isn’t the temperature of the camera lens and this is analogous to the fact I stated earlier: that Mean Radiant Temperature is not surface temperature. However, solar-adjusted MRT gives you an idea of the sun’s contribution to the someone’s overall thermal sensation, which is probably closer to an average between the air temperature and radiant temperature (though it ultimately depends on a wide range of factors including the time someone is in the sun, the air speed, etc.).
If you need actual surface temperature, there is probably a way to do it with the E+ object that I mentioned in this discussion but that is an advanced topic for another discussion.