Modeling optothermal forces



Hello, I would like to check how it is possible to solve for the forces arising from thermophoresis using DEVICE?

I was looking at this paper, from Nature,

and apparently, they used Lumerical to solve for optothermal forces acting on gold nanorods suspended in water. Basically what they did was to produce a plasmonic resonance effect on the gold nanorods by shining a laser on the rods, and observe the Temperature gradients and resultant optothermal forces.

Is there a specific analysis function that enables users to perform such force analysis (similar to the analysis functions in FDTD solutions)? Or is there a way to introduce the Green’s function approach to obtain the optothermal forces?

Thank you for your help!


Hi. Thanks for sharing the paper. I am not really familiar with simulations of optothermal forces. The article looks very interesting and I will take a look at it and share my comments with you.


Thank you for your help!


Hello again. I have gone through the paper and the supporting materials. As I mentioned earlier, I am not familiar with this particular field so I may be wrong in interpreting the paper. However, my understanding is that you would want to calculate the electric filed from the optical simulation (using FDTD Solutions) for different locations of the focal point. This data can be used in the thermal solver to calculate the temperature profile. However, the problem that you will face is that you will probably need to calculate the temperature profile in fluid and calculate the fluid movement to properly model the optothermal force. The thermal solver in DEVICE currently only solves heat flow in solids and uses fluids (water) as (convective) boundary conditions. As a result, you will not be able to model the temperature distribution in the water. Also, the thermal solver does not solve for fluid dynamics so the force exerted by the flow of water due to thermal gradient can not be modeled.


Yes aalaam, I am looking to first solve for the electric fields of the nanorods in water (factoring in the effects of plasmon coupling) , and subsequently look at the optical forces and heating effect.

Just to check, to simulate a water “domain” surrounding the nanorods, I should change the background index in the FDTD node to the refractive index of water?

Also, when solving optical forces and power absorbance using the appropriate analysis groups, do they solve for the optical forces/power absorbed per unit mesh in the enclosed volume? Or do the analysis groups give a average of the values in the volume?

I am not sure how the analysis groups work; they solve for the enclosed volume right? But do these analysis groups also factor in the contributing power/force effects from outside the enclosed volume?

Suppose I want to look at the power absorbance/optical force profile for a small cluster of nanorods, out of a larger pool of nanorods, should I just stick to enclosing the small cluster with the analysis groups? Or do I need to enclose the entire pool of nanorods, and specifically look at the region which I am interested in later?

It’s a lot of questions… Sorry and thank you!


Yes. I believe that should be sufficient to make your simulation in water

If you look at the example on our knowledge base (optical tweezers), you will see that there are two analysis groups. One uses Maxwell’s stress tensor (MST) technique another uses volumetric technique. The MST analysis group only gives you a net force for the enclosed region. The volumetric analysis group gives you two results, force per unit volume at each grid point and total force.

Both the analysis groups take the electric and magnetic field along with index information in the enclosed region to calculate the force. If the simulation volume contains more particles than those inside the analysis group, then the electric and magnetic fields are calculated while considering their presence so I would imagine that the force will include the effect of particles outside the analysis group as well.

I am not exactly sure what needs to be done here. Like I said, the simulation results (E and H field) will include the presence of all particles inside the simulation region. However, the force calculation by the analysis group will only include the E and H fields inside the boundary of the group. At this point, it may seem that placing an analysis group over a cluster should give you the force acting on the cluster while considering the effect of the other clusters. However, the problem is how to define the extent of the analysis group. The amount of force will depend on the volume of the analysis group so the result may be sensitive to the volume you define for the analysis group.


Thank you for your time and your assistance!


Okay aalam, thanks for all your help so far!

I have one last inquiry regarding heating. I have attached a file I am working on.

Suppose I want to look at the the temperature profile of a given XY plane (i.e. XY plane at a single value of z) for the attached file.

From my understanding of the workflow given in this example of photothermal heating:

I am first supposed to solve the absorbed power by the system, then input the absorbed power as a heat source in the same model, using Lumerical’s DEVICE program. Is this workflow correct?

If I merely want to look at the temperature profile of a given XY plane (say for example at z=0), for the “power absorbed” step, could I just enclose the XY plane around z=0 using the “power absorbed” analysis function? Then input the values for power absorbed into DEVICE?

However, from my intuition, I think that DEVICE might treat that plane as the heat source which transfers heat to the entire system. (correct?) In order to properly model the temperature profile of the desired plane, I should be enclosing a larger volume of space using the “power absorbed” analysis function in FDTD solutions right? However, I am currently using a rather fine mesh, so I am trying to keep the “power absorbed” domain small if possible. Thank you!

nanorod trapping.fsp (3.5 MB)


You are correct. You should use the “pabs_adv” analysis group to save the optical absorption data and import it into DEVICE using “import” heat source.

The simulation setup in the thermal solver for your system should be 3D. You need to copy the same structure into DEVICE from FDTD. Place a background material (water) and use the import heat source to import Pabs data for all possible heat sources from the optical simulation.

The DEVICE simulation volume should include the necessary boundary conditions to properly define the thermal simulation. For example, if your water is at room temperature at a distance of 10 micron from your nanoronds, you will need to make the simulation volume extend 10 micron in all direction and place appropriate temperature boundary conditions. The thermal simulation should be designed so the temperature reference to the system is included as well as all sources to heat generation and loss.

Finally, please note that you will need to define water as a solid (not Fluid) if you want to get a temperature profile in it.


Another thing I noticed is that the Gaussian beam in your file is clipped at the simulation boundaries (screenshot below).

If you need to use a Gaussian beam then you will have to use a much larger simulation region to the light intensity goes to zero at the boundary. Or, since the optical intensity is almost uniform over the simulation volume, you may want to use a TFSF source instead. However, given the paper you have shared earlier I am assuming you want to use a focused Gaussian beam in which case unfortunately you will have to use a much larger simulation area.


Also, I just tried to run a simulation of the heating effect using the cluster of gold nanorods. However, I’m not sure if I had some incorrect configurations in DEVICE because after pressing run simulation, the program is stuck at “building geometry”, even after 6 hrs.

Is there something I missed out in the building of the heating model? I basically imported the same nanorod structure I used in FDTD, then placed a rectangular “air” domain (I worked with air first because I couldn’t find the water material) surrounding the nanorods, then placed a heat transport solver surrounding the nanorods. I then imported the power absorbance data I obtained from FDTD and surrounded it around the nanorod structure. When I pressed run simulation though, the simulation is just stuck at “building geometry”. Funny thing was the program wasn’t hanged; I could terminate the simulation. It just didn’t progress.

Also, it is very strange that I cannot reopen my DEVICE files after closing DEVICE (DEVICE just hangs). Is there a bug or something involved?



Also, I read from some other posts that DEVICE deals with the simulation of semiconductor materials. In this case, my nanorods are made of Gold, and there are no semiconductor structures present. Is that why my simulations do not seem to want to proceed?


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.


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.

Simulating temperature profile around spherical nanoparticles with Device