Discussion Closed This discussion was created more than 6 months ago and has been closed. To start a new discussion with a link back to this one, click here.

Coupling Semiconductor and Heat Transfer

Please login with a confirmed email address before reporting spam

Greetings!

First some information on my model. I have a model of 1D PN diode. I want to measure 3 features:

  1. Lattice temperature increasement due to forward current.

  2. Impact Ionization Generation Rate

  3. SRH Recombination Rate

To simulate this I've included Semiconductor and Heat Transfer in Solids modules. I've attached 3 snapshots of all included models and boundries. So here is what I mean by two physics coupling:

Cases 1 - One way couplying semi--->ht

In Semiconductor Material Model, Model Input Temperature is set to constant - 300[K] Heat Source is set to General source: semi/smm1

Time Study Result: Success Simulation completed.

Cases 2 - Two way couplying semi<--->ht

In Semiconductor Material Model, Model Input Temperature is set to - Temperature (ht) Heat Source is set to General source: semi/smm1 (No other change is introduced to the model)

Time Study Result: ERROR - Division by zero. failed to evaluate variable comp1. semi.iig1.alpha p

When I try to debugg this error, I trace the cause to Impact Ionization Generation model, where iig1.Epn and iig1.Epp parallel electric field variables are calculated in the following manner: Epn = 0 if Epn<1E5, max(Epn)=1E6 ; Epp = 0 if Epp<1E5, max(Epp)=1E6

So my question would be, why am I seeing this error when I try a two-way coupling? Is there a initial condition that should be altered in Case 2 ? Alternatively, is there a way to alter the value of iig1.Epn and iig1.Epp parallel electric field variables? Any wisdom on this would be much appreaciated. Thanks!



1 Reply Last Post 2019年4月2日 GMT-4 15:30

Please login with a confirmed email address before reporting spam

Posted: 6 years ago 2019年4月2日 GMT-4 15:30
Updated: 6 years ago 2019年4月2日 GMT-4 15:32

FYI

Hi all,

I continue my investigation of the above topic. At least it might help other fellas with similar issue. Here is what I was able to dig out trying to debug the "division by zero" error that I come across in IIG model when using setup described in Case 2 of the above post:


~ERROR:

Failed to find consistent initial values. Division by zero. Function: / Failed to evaluate variable. Variable: comp1.semi.iig1.alpha p, Defined as: ((((1+(comp1.semi.cpii(comp1.semi.Tl-comp1.semi.iig1.Tref)))comp1.semi.ap)comp1.semi.iig1.Epp)exp((-(((comp1.semi.bp(1+((comp1.semi.Tl-comp1.semi.iig1.Tref)comp1.semi.iig1.dp)))/comp1.semi.iig1.Epp)^2)))) Failed to evaluate expression. Expression: nojac(comp1.semi.iig1.alpha p) Failed to evaluate variable. Variable: comp1.semi.Gii, Defined as: ((-((nojac(comp1.semi.iig1.alpha p)comp1.semi.normJp)+(nojac(comp1.semi.iig1.alpha n)comp1.semi.normJn)))/e const) Failed to evaluate expression. Expression: d((e constcomp1.semi.Giitest(comp1.Ne))*(dvol),{test0}) Last time step is not converged.


~EQUATIONS:

Ionization coefficient of electrons/holes: semi.iig1.alpha_n=semi.an(1+semi.cnii(semi.Tl-semi.iig1.Tref))semi.iig1.Epnexp(-(semi.bn(1+semi.iig1.dn(semi.Tl-semi.iig1.Tref))/semi.iig1.Epn)^2) semi.iig1.alpha_p=semi.ap(1+semi.cpii(semi.Tl-semi.iig1.Tref))semi.iig1.Eppexp(-(semi.bp(1+semi.iig1.dp(semi.Tl-semi.iig1.Tref))/semi.iig1.Epp)^2)


Component of electric field parallel to electron/hole current density: semi.iig1.Epn=max(abs(semi.Exsemi.Jnx+semi.Eysemi.Jny+semi.Ezsemi.Jnz)/semi.normJn,0) semi.iig1.Epp=max(abs(semi.Exsemi.Jpx+semi.Eysemi.Jpy+semi.Ezsemi.Jpz)/semi.normJp,0)


So, I'd speculate that in equation for either "semi.iig1.Epn" & "semi.iig1.Epp" the syntax is as follow:

Epx = max(abs(total_sum)/valX,0)

So, for Epx to be equal to zero 0, the only way I see is valX to be a negative number. E.g. "semi.normJn" and "semi.normJp" must be negative, which to me does not make sense. I've tried putting abs() around "semi.normJn" and "semi.normJp" but the error remains. Also, in equation view table in the IIG model, there is an a threshold value for E=1E5, which I couldn't find where it is specified or why (picture attached*). If anyone has any suggestions regarding the nature of this error or information about where and why is E threshold value defind, it would be much appreciated!

Regards, John

FYI Hi all, I continue my investigation of the above topic. At least it might help other fellas with similar issue. Here is what I was able to dig out trying to debug the "division by zero" error that I come across in IIG model when using setup described in **Case 2** of the above post: -------------------------------------------------------------------------------------------------------------- **~ERROR:** Failed to find consistent initial values. Division by zero. Function: / Failed to evaluate variable. Variable: comp1.semi.iig1.alpha p, Defined as: ((((1+(comp1.semi.cpii*(comp1.semi.Tl-comp1.semi.iig1.Tref)))*comp1.semi.ap)*comp1.semi.iig1.Epp)*exp((-(((comp1.semi.bp*(1+((comp1.semi.Tl-comp1.semi.iig1.Tref)*comp1.semi.iig1.dp)))/comp1.semi.iig1.Epp)^2)))) Failed to evaluate expression. Expression: nojac(comp1.semi.iig1.alpha p) Failed to evaluate variable. Variable: comp1.semi.Gii, Defined as: ((-((nojac(comp1.semi.iig1.alpha p)*comp1.semi.normJp)+(nojac(comp1.semi.iig1.alpha n)*comp1.semi.normJn)))/e const) Failed to evaluate expression. Expression: d((e const*comp1.semi.Gii*test(comp1.Ne))*(dvol),{test0}) Last time step is not converged. --------------------------------------------------------------------------------------------------------------- **~EQUATIONS:** Ionization coefficient of electrons/holes: semi.iig1.alpha_n=semi.an*(1+semi.cnii*(semi.Tl-semi.iig1.Tref))*semi.iig1.Epn*exp(-(semi.bn*(1+semi.iig1.dn*(semi.Tl-semi.iig1.Tref))/semi.iig1.Epn)^2) semi.iig1.alpha_p=semi.ap*(1+semi.cpii*(semi.Tl-semi.iig1.Tref))*semi.iig1.Epp*exp(-(semi.bp*(1+semi.iig1.dp*(semi.Tl-semi.iig1.Tref))/semi.iig1.Epp)^2) --------------------------------------------------------------------------------------------------------------- Component of electric field parallel to electron/hole current density: semi.iig1.Epn=max(abs(semi.Ex*semi.Jnx+semi.Ey*semi.Jny+semi.Ez*semi.Jnz)/semi.normJn,0) semi.iig1.Epp=max(abs(semi.Ex*semi.Jpx+semi.Ey*semi.Jpy+semi.Ez*semi.Jpz)/semi.normJp,0) --------------------------------------------------------------------------------------------------------------- So, I'd speculate that in equation for either "semi.iig1.Epn" & "semi.iig1.Epp" the syntax is as follow: Epx = max(abs(total_sum)/valX,0) So, for Epx to be equal to zero 0, the only way I see is valX to be a negative number. E.g. "semi.normJn" and "semi.normJp" must be negative, which to me does not make sense. I've tried putting abs() around "semi.normJn" and "semi.normJp" but the error remains. Also, in equation view table in the IIG model, there is an a threshold value for E=1E5, which I couldn't find where it is specified or why (picture attached*). If anyone has any suggestions regarding the nature of this error or information about where and why is E threshold value defind, it would be much appreciated! Regards, John

Note that while COMSOL employees may participate in the discussion forum, COMSOL® software users who are on-subscription should submit their questions via the Support Center for a more comprehensive response from the Technical Support team.