Data handling and transient simulation divergence


Q1:I have got the E field data in steady simulation,but the data only have one column.

you can see picture A ,How can I know the corresponding position of data?

for the same structure,the transient simulation din’t work ,always occurred the same error: Error in function boost::math::expm1(long double): Overflow Erro . please help me the solution


The data you get from the CHARGE solver is a finite element data where the values are defined at each grid point. This is why the data you see is 1D (1 data at each vertex). Take a look at this post that talks about the data format: Data format for 2D temperature monitor.

It looks like that the simulation is diverging. If you are using the shutter function and are turning on the optical source at a certain time, the solver may have trouble converging at that time point. You can try using a slew to make the rise of the pulse a bit slow so that it is easier for the solver to converge. If you believe the error is coming from something else then feel free to share the file and I will take a look.


following your guidance,the solver still has trouble converging. The file is 17MB too big to upload.I share this file though Google driver


Hi @zhoude, I made a mistake in my earlier post and have deleted it. My apologies. Here are my comments about your file:

  1. For your simulation you would definitely need a small time step to capture the transient behavior properly. However, the min time step in the CHARGE solver should not be set below 1 ps or at least 500 fs. At time steps lower than this the results from the solver may not be accurate.

  2. In your boundary condition, the end time for the anode contact bias was set to 1e-6. Please note that the unit is fs so you need to make this value much larger (say 10000 fs).

  3. The transport of the photogenerated carriers in your device is different than the UTC PD example in KB. In the UTC example photogenerated carriers are generated at a location far away from the contact and then travael towards the contacts under a large electric field. By placing current flux monitors along the way we could monitor the travel time of the carriers there. In your device the photogenerated carriers are generated all over the photodiode and I am not sure if you can measure the transit time in a similar way.

  4. You have placed the metal contacts at one end of the detector and not throughout the entire length. Does this mimic the setup in your fabricated device?


Sir, thank you for your comment
The structure do take my fabricated device into account,Both we know the PD bandwidth is depended on the charge transport time and the electrical response. So this is why I want to get the travel time .
I really want your suggestion about how to get it in approximate way.
In order to get the travel time ,I had tried the 2D-x normal steady simulation. but there is another error.
Here is my simulation log.
Error (divergence): Drift-diffusion/Poisson solver failed to converge after 10000 iterations, 0.376543(1e-007) remains. Residual (ratio/last) 1.81525e+006/35547.3.
Warning: the charge transport solver failed to converge. A partial result will be saved.
The program terminated due to an error: The simulated result is incomplete. Please review the log files for details.
Error: there was an unknown parallel error. The error code is 9002, the process number is 0

How do I make this right? Thank you very much!


Hi @zhoude, sorry for the long wait. Can you share a screenshot of the simulated structure on the 2D x-normal plane? I am asking for this because looking at your old file I do not see a way to simulate on the x-normal plane (YZ plane) and still include both the contacts in the simulation volume (since they are on different YZ planes). Do you think this could be the problem (i.e. you only have one contact in the simulation volume)?

Also, can you please elaborate on how you are planning to get the travel time from a 2D-x normal steady simulation as you have mentioned above?


Hi,@aalam Now , What make me confused is that multiple electrodes in 3D simulation would get divergence。 error message is“Non-finite result detected in update N”
The same structure in 2D simulation is work fine , but the frequency response is too smaller than experiment result. my screenshot is below 。

So,could you give me some advice? looking for your write back soon


Is it the same file that you shared in an earlier post? Let me know and I can take a look. The thing is that I would have expected the 2D simulation to give you a larger cutoff frequency since the response will not be limited by transit time of the carriers (in the 3D case the bandwidth should get further limited by the time it will take for the carrier far away from the contacts to reach them).


Hi @aalam !
I can share it again, in case of mistakes

Q1: the 2D simulation bandwidth result is too smaller than experiment result.

Q2: the 3D simulation can’t move on .


I’ve taken a look at the 3D simulation file and it looks like that the solver had an issue with building the geometry properly. This was probably due to the large length of the structure so I enabled the “split plc edges” option in the advanced setting of the mesh tab. Screenshot below. I also adjusted the edges of the simulation region so that they are not terminated right at the surface of the Ge pyramid (this can sometime create issues with geometry building as well). With these changes the simulation ran fine with me in 3D (note that I made the length of the simulation region half and reduced the applied voltage to run the simulation with the limited memory of my PC (the full simulation requires a lot more memory). Please take a look at the attached file and let me know if it works for you now.

Regarding the 2D simulation I do not think the result will be of use at all since the effect of the transit time can only be captured from the 3D simulation and hence we should focus on the 3D simulation. In order to capture the effect of transit time on the bandwidth you should perform a transient simulation similar to this KB example: Vertical photodetector. Note that in order to capture the velocity saturation effect of the carriers at large bias you should turn on the high field mobility model in Ge.


Hi @aalam !
Your method has two step:1 mesh setup;2, simulation region adjustment.
I have tried many times .Sorry to tell you that it doesn’t work for me. It’s so frustrated.
the error message always is “Error in function boost::math::expm1(long double): Overflow Erro”


Hi @zhoude, Please take a look at the attached (modified) file and let me know if it works for you.

vpd_20_normal_transient_MOD.ldev (2.9 MB)


Hi,@aalam . In the end ,it is working well. But still the solver need to be treated carefully ,any little change may make it diverged.I hope in the next edition, this can be improved. Anyway ,Thank you for your long-term support.!
And I will post another question about Multiple boundary conditions in charge simulation. Keep in touch!