Modeling optothermal forces

The CHARGE solver is DEVICE requires semiconductor materials since the electrical transport is only calculated in semiconductors. However, this is not the case for the HEAT solver which calculates heat transport in solids. You may want to create a solid material (say an insulator) for your water and place the nanorods in it (instead of using air which is fluid and do not get included in the simulation region) if you want to model the heat flow and temperature distribution in water.

Regarding the simulation issue you mentioned in the previous post, let me do some testing and get back to you.

The issue could be related to the nanorod structures. Can you tell me how you created these structures?

I created them using Solidworks, and imported the .STL files into DEVICE.

By the way, DEVICE does not contain a “water” material right? I suppose I need to define the parameters myself?


Thanks. My testing tells me that it is the imported object that is creating the issue in DEVICE. The solver is having problem creating the geometry. One workaround could be to re-create the nanorods using the built-in geometries and see if that solves the problem.

To use water in the simulation, you will need to create a new material and set the thermal properties appropriately.

1 Like

A post was split to a new topic: Copying structures from FDTD to DEVICE

Okay, I’ve tried your suggestion of recreating the structure within FDTD and DEVICE. I obtained this Engine Error:

PLC Build: Mismatch between number of faces when searching for duplicates

What sort of error could this be caused by?

So I am testing out a single gold nanorod’s heating effect for simplicity. I built the nanorod using FDTD/DEVICE. I added water as a material surrounding the nanorod, and imported the power absorbed obtained from FDTD solutions.

I am now trying to look at how the temperature of the Nanorod (and a small volume of water surrounding the nanorod) changes over some time from room temperature. However, I am still getting stuck on the “building geometry” part after I run the simulation.

Could it be possible I defined some of the boundary conditions wrongly? In this case I think I am supposed to create a water-Au material interface right? But after associating them they don’t seem to register.

Also, am I missing a thermal boundary? I would think that adding a fixed temperature heat boundary at the solver is the correct thing to do to simulate room temperature at the start of the heating.

I attached the power absorption .mat file separately from the DEVICE file because of the file size constraint here

heattest.ldev (6.0 MB)

single heat test 2.mat (54.0 KB)

In both cases, I am afraid the problem is still arising from the geometry building in DEVICE. When it comes to building geometries with spherical surfaces, it is much harder in DEVICE than in FDTD. I have shared your file with the development team and hopefully they will have some answer to this problem soon. In the mean time, one simplification you could try is to use a rectangular prism for the nanorod. I believe that for the thermal simulation, the exact shape is less important whereas in the optical simulation you will have to use the exact shape. If you use a rectangular prism in the thermal simulation, I believe the simulation can be easily run.

I have modified your file and emailed it to you (because it is too large) to show how this might work. Note that I have made the simulation volume a lot larger to include temperature boundary conditions and have assumed that the air temperature is at 300 K far away from the nanorod. I have also defined air as a solid so that the solver includes it in the simulation volume. The 2D temperature monitor can be used to see the temperature profile easily.

1 Like

I see! I was wondering why even after running there is an error arising even after I replaced your cylindrical shape with a rounded cylinder. Thanks explaining it to me!


Okay, so I adapted your model to try and look at a cluster of nanorods (this time the rods were changed to a rectangular prism) in DEVICE.

The simulation doesn’t seem to run and is stuck at 10%, at the step Refining(sources) even after 4 hours.

Is it possible that DEVICE cannot process my configuration of nanorods? Is it possible that I did not align the Heat Source perfectly with the rods?


It is possible that the refinement of the sources are taking up too much memory space and the system is running out of memory. To check this, calculate the mesh only and while the solver is calculating the mesh, open the task manager and look at the memory usage of the system.


I have been tinkering around with my model of a cluster of nanorods excited by a gaussian beam. I am trying to look at how Power absorbed varies with Gaussian beam power. I changed the input gaussian beam power by changing the gaussian beam amplitude.

I have tried running a parameter sweep using FDTD, to look at P_abs values for different values of gaussian beam amplitude. The P_abs value I observed seems to be the same for all values of gaussian beam amplitude. Is there a reason why this might be the case?

Hi Nicholas,

The Pabs analysis group calculates the normalized absorbed power. It basically normalizes the absorbed power with the source power. So, when you run multiple simulations with different amplitudes, it is still giving you the normalized power which is independent of the value of the input power and hence identical.

If you want Pabs to be a function of input power, you can just disable line 139 and you should see the effect of input power. Now, the better way to solve this issue would be to use the fact that the system is linear. In a linear system, you can run one simulation, get the normalized power and then scale Pabs with the desired input power value. This way, you can just run one single simulation and get the Pabs value for any input power values.

The screenshot above shows that you can simply define a new variable named Pin which will take the input power (Watt) as input and then add an extra line in the script (line 141) to scale the value of Pabs.

You mentioned that the Pabs analysis group calculates the normalized absorbed power, does this mean in DEVICE, when I use a scale factor of 1, I am assuming the corresponding Pin value device would use is 1W/m^3?

That is correct. So you can simply change the input power by changing the scaling factor.

Dear Aalam,

I was wondering if there has been a development regarding the error that DEVICE generates while dealing with rounded objects. In you last post you mentioned that the development team are looking into it. Has there been any resolution?


Hi Hossein, we have plans to make some relevant changes in the upcoming release next November. In the meantime, I will be happy to take a look at any project file where you are facing similar issues and try to solve them.

Dear Aalam,

This is an ongoing problem about which i have had correspondence with Federico. I would appreciate if you could have a look at it, though. It is a standard heating problem under CW illumination. The ultimate goal is to study the heating of a dimer, but first we saw it fit to study a monomer. When the spherical particle is set in the thermal solver the simulation stops responding with the following error: PLC Build: Mismatch between number of faces when searching for duplicates. So i have to change the shape of the particle to a cube and rerun the simulation. This is a sharp deviation from the desired set up for us. when i change the algorithm from to 2 the software gets stuck in building the geometry and apparently this is not a reliable solution either. I am uploading the file for your reference. Any help is appreciated.


Sorry for the late reply. I did look at your files when Federico was working on them. Unfortunately we were unable to make the capsules work. The problem gets worse when you add rotation to them. One possible workaround could be to create a capsule using a planar solid so that the whole structure is a single geometry. To see how you can create a structure using planar solid please take a look at this page:

Some additional examples of planar solid objects:

Hi Aalam,

Thanks for the detailed reply. Using planar solids seems to be a versatile method of generating custom shapes. I suspect in my case though, which is a sphere, it is challenging to implement. I hope this issue gets the attention it deserves from the development team in the upcoming versions.