Hi. In some cases, both the uniform heat source and the thermal boundary condition will give identical results. However there is a fundamental difference between the two methods can become very important in a lot of cases. Generally speaking the uniform heat source is a better option if you want to introduce some heat input in your simulation. The reason is as follows:
When you use the thermal boundary condition on a solid to create a heat source in the simulation volume, the solver injects that amount of heat energy into the simulated structure from the surface of the solid. However, the solid itself does not get included in the simulation volume in this case. The following screenshot will clarify this.
On the left you can see the wire (heater) where the thermal boundary condition is applied. On the right is the temperature profile given by the solver. You can notice the vacant region in the plot. You can also see that the vacant region is preventing heat to go though the heater (solid) which is unphysical.
In this other screenshot we have now used a uniform heat source to apply the same amount of power to the solid heater. In the temperature plot on the right we can see that there is not empty region and heat from the top surface of the heater can go through the solid. This results in a higher temperature at the heater and this result would be the more accurate one.
Now in cases where the heater is at one edge of the simulation volume and removing the solid from the simulation volume does not matter, both option would give the same result. However in all other cases the uniform heat source is the better choice.
Following @nlui’s comment about the uniform heat source being restricted to rectangular shape; a solution to this limitation would be to use the import heat source instead. You can use the script environment to create a matrix for the heat input as a function of x,y,z and then load it into the import heat source to create a heat input of any arbitrary shape.