Thermal simulation of heating a platinum element




I am working on a thermo optic phase modulator where I am using a platinum as a heating element. I want to do thermal simulations in DEVICE so that I can apply a voltage across or pass a current through the platinum element and get the temperature plot of my device in the end. I have been so far unable to carry out these simulations in DEVICE as I could not find the right feature. It would be great if you can help me in solving this problem.



Hi @ydgupta

If I understood correctly, you are looking for ohmic heating the platinum element. We have an application example similar to what you have described:

In this application example, we have used voltage BCs to sweep the voltage across the wire element:

Hope this was helpful.


Hey @bkhanaliloo

Thanks for your help regarding the heating element. Next, I have tried to implement the temperature dependent conductivity by using the model available in the DEVICE materials. I defined the alpha-coefficient to be 9e-5/K for a conductivity of 9.43e6. And when I run the simulation it kept diverging and the temperature of the heating element was blowing up. The temperature change without the temperature dependence of conductivity was around 5 K. It would be great if you could help me in solving this problem.



Hi @ydgupta

I downloaded the file for the Ohmic Heating application example and modified the electrical conductivity for both Aluminium and Copper as you mentioned. The simulation finished running with no problem.

Can you please provide your simulation file and explain that changes you have made to the original file?



Hey @bkhanaliloo

PFA the file I am using for the simulation.
wire_trial.ldev (6.0 MB)

I made some changes so that it resembles our working model. I have changed the Thermal and Conducting properties of the wire element(Conductivity values, Work function etc.). I also changed the geometries of the electrodes and the wire element. In my case, the length of the wire element is 400 micron. And the material surrounding the wire has been changed from ‘Glass’ to ‘Air’. Also, the wire is placed on a block of material which is a conductor of heat.

Now, if I run the simulation it is okay for the case where there is no dependence of conductivity on temperature. But when I implement the temperature dependence of conductivity(as per the model in the file, only for the wire) the simulation diverges.

The simulation does not diverge if I decrease the ‘alpha’ value(for eg.,9e-7) or decrease the voltage applied across the wire. But there seems to be a point where the simulation diverges for the cases with temperature dependence of conductivity even if it is okay for the constant conductivity case(same voltage applied across the wire). I believe changing some simulation parameters should take care of this but I could not exactly figure out which. It would be great if you could help me in getting this solved.

Also, when the simulation runs okay, I do not understand why the wire and the block on which it is placed, all have the same temperature and there is no gradient.
There is one more case where the simulation diverges even if the conductivity is constant. The boundaries of the simulation region in the attached file coincide with the electrode(named ‘right’) along the x-axis. The simulation runs okay for this.
If I increase the size of the simulation region(or decrease the size of the electrode) the simulation diverges.
This does not happen if the surrounding material is ‘Glass’ instead of ‘Air’.

Thanks in advance!

Durvasa Gupta


Hi @ydgupta

Thanks for a detailed clarification and sharing the simulation files with me.

I ran the simulations with electrical conductivity model enabled for Al material. Since the simulation will diverge if I choose a single value for left bias, I instead use a range from 0-2 V with increments of 0.1 V and could run the simulations with no divergence problem:

It is possible that there will be a point where the temperature dependent conductivity model can result in diverged simulations, but it was safe up to 2V (where temperature was increasing few orders of magnitude).

I think the results make sense. The top and bottom BCs are set to a fixed same temperature and you are looking at steady state results. You can probably see this gradient behavior if you were running transient simulations similar to the application example in the link below:

When you extend the simulation boundaries, the heat has to be conducted through air before reaching the bath. However, in the original case heat can be conducted to the bath (simulation boundaries) through metals. Once you change air with glass material, the heat can be dissipated easier through glass and thus simulation will not diverge. As a result wire temperature will increase and will cause the simulation to diverge.

Hope this was helpful.


Dear @bkhanaliloo,

Thanks a lot for your reply. It is surprising that the simulation doesn’t diverge for upto 2V. When I try to simulate it with the conductivity model for ‘Al’, the simulation diverges even for a voltage value 0.1 V. Are there any parameters for the simulation I should be changing? Right now, I am just using the system defaults in the ‘Advanced Settings’ section of the ‘HEAT’ Solver.

Also, When I have the voltage set to 2V the simulation diverges even if the conductivity model for the ‘Al’ material is turned off. So are there any settings I am overlooking which might be causing the problems for me?

Durvasa Gupta


Hi @ydgupta

I downloaded the attached simulation file in your post and only modified the Left voltage Boundary condition as is shown below:


What version are you using? I am using the latest version and simulations run with no error.


Hey @bkhanaliloo,

Thanks for the support. I have one more problem regarding the simulations. If I have a very low voltage across the heating element and run the simulation the wire is getting cooled. Please find attached the simulation result. The boundaries were defined to be at 300 K. cooling_1
It can be seen that there is a temperature drop across the wire element. But when no (or very low) voltage is applied shouldn’t the wire be at room temperature?

Thanks in advance!



Hi @ydgupta

Can you please share your simulation file with me? If the bath temperature is kept at 300K, the results that you are seeing is strange.


Hi @bkhanaliloo,

PFA the simulation file.
heating_element.ldev (6.3 MB)

There are a couple of issues I would like to mention:

  1. Once I run the simulation, the temperature of the heating element drops and it is cooler than the boundaries. I figured out that this is due to the presence of a ‘uniform heat’ source, which was disabled. I wonder how it still affected the simulation, but once it is deleted the simulation seems to run fine.

  2. I have some parameters to be swept for the simulation, for example, the current through the heating element. So, I used the ‘sweep’ feature to do this and tried to save the temperature data(T) from the ‘thermal’ results of the ‘HEAT’ simulation. But, I keep getting an error, as T is not a 1D array. Is there any way I can fix this issue.


  1. As I couldn’t save the data using the sweep option I tried to write a script command for saving the temperature array into a variable(struct seemed to be the best) using a ‘for loop’. But I couldn’t do it even that way as I couldn’t assign temperature data for different currents to a single struct variable (but in different branches of the struct variable).

  2. So, next I tried using temperature monitors so I can read out the data from the monitors while I sweep over the parameters. There are two temperature monitors in the file. Both have different sizes and monitor the temperature of different regions. The monitor ‘whole’ monitors the whole simulation region, whereas the monitor ‘waveguide monitor’ monitors only a specific region of the simulation region. So, the temperature data contained in the two monitors must be different. This is correct for the case of the image displayed in the ‘visualizer’ but when I try to export the temperature data both monitors give me the same data with same size. The smaller monitor should contain less data points and hence should be smaller, but I see that both have the same temperature data which does not help while I am trying to get the data only for the specific region. The issue remains even if I delete the ‘whole’ monitor and just keep the ‘waveguide monitor’.

To summarize I have an issue with saving the temperature data while I sweep over some parameters and I have tried several things but each of those had their own issues.

  1. The problem of the simulation diverging when I use a conductivity model for the heating element still persists. For the file attached, I have tried setting the voltage of the boundary condition ‘positive’ to 0.85 V which corresponds to a current of 20 mA through the wire. But the simulation diverges even for such a low current value.

It would be great if you could help me out with these.