c3d / db48x

RPL runtime for the DM42 calculator, in the spirit of HP48/49/50
http://48calc.org
GNU Lesser General Public License v3.0
113 stars 13 forks source link

4 eqns in "Solid State Device" require the silicon density function SIDENS(T_K) (Low priority) #1141

Open Wiljea opened 2 months ago

Wiljea commented 2 months ago

Four equations in four sections of the "Solid State Device" section require the silicon density parameter (ni_cm^-3) which is calculated by the function SIDENS(T_K). The function exist in the HP50G and is documented at (3-222) of HP50G_AUR.pdf.

NOTE this parameter "ni" seems to be implicit: What surprises me, however, is that unlike the function F0λ(T_K, λ_nm) which is explicitly invoked, here it is rather through the single parameter "ni" that the SIDENS function seems to be calculated implicitly. At first I thought it was a constant (no!), a somehow reserved variable (it doesn't seem to be the case) or even an error due to lack of information on this famous “ni”. But nevertheless it works and I get the result of the example where "ni" seems secretly calculated (its numerical value appears nowhere even if the symbol "ni" is clearly present in the formulas). This is strange!

QUESTION about a conditional expression This is unrelated but it may become useful for further development (like correlation formulas in engineering with specific domain of validity). Suppose that I have a function which invokes a condition like if x < 1 f(x)=x else f(x)=sin(x) end how can this be written in an expression 'xyz' since it seems to me that we cannot include a program «» in an expression '«»' ? POSSIBLE SOLUTION If there is no alternative, one can use multiplication by binary unit fonctions.

Wiljea commented 2 months ago

COMPLETE SOLUTION of this issue

I was able to reconstruct the SIDENS function from p. 33 and fig. 18 of the downloaded ref: Sze, S. Physics of Semiconductors, 2d ed. John Wiley & Sons, 1 Knowing that the solution has the form (being a straight line in a log-linear graph of ni versus 1/T): (ni_cm^-3)=(C1_cm^-3)·exp(-(C2_K)/(T_K)) and using two points (one in the text and the other from the fig): (ni1; T1) = (9.65e9; 300) and (ni2; T2) = (1e16;1000/1.5) I obtain the two constants C1_cm^3 = 8.35123e20_cm^3 and C2_K = 7555.17_K

Therefore to close completely the issue either we create the SIDENS function in the db48x or we calculate directly the ni value with the previous equation in the sections of the chapter "Solid State Device". I vote for the former to remain as close as possible to the HP50G:

SIDENS(T_K) = (C1_cm^-3)·exp(-(C2_K)/(T_K)) C1_cm^3 = 8.35123e20_cm^3 C2_K = 7555.17_K

In either case we need in the db48x to describe explicitly the variable ni and add lines for the calls of the function SIDENS. I will provide a modified version of the eqns of this chapter. In a close form this gives:

SIDENS(T_K) = ( 8.35123e20_cm^-3)·exp(-( 7555.17_K)/(T_K))

Wiljea commented 1 week ago

As of 24-10-11, I am starting to work on the "Solid State Devices" where there are 3 sub-sections requiring this SIDENS function. Because we don't have this function, the corresponding simulations fail. I will in the interim calculated the unknowns with the function as is. And I am wondering if I should eventually include the explicit calculation of SIDENS in "equations.cc" (as I did for Zfactor) OR if we intend to add this function as it is done in the HP50G ?