METech 版 (精华区)
发信人: zhangmeng (罗文中尉), 信区: METech
标 题: 器件模拟题目和我的源代码
发信站: BBS 哈工大紫丁香站 (Thu Sep 23 21:32:24 2004)
跑出结果来了,不过迭代次数少了点,大家一起探讨一下。
一个pn节,其杂志分布为线性对称分布,则平衡态的泊松方程为:
d2ψ/dx2=-q(m x + ni e-θψ-ni eθψ)/ε
泊松方程中各量如下:
m=1021cm-4, ni=1.5×1010cm-3, θ=q/kT=38.6V-1
q=1.6×10-19C, ε=12ε0=1.064×10-12F/cm
求x≥0一侧的电势分布情况。设pn结厚度为W=0.5μm,在[0,W]的区域内沿x方向等距离网
格化,网格距为
h=0.01μm,从x=0到x= 0.5μm 共有51个网格点,迭代终止标准为
max/δψ(N)/≤εR , εR =10-4
#include<stdio.h>
#include<math.h>
extern float cita=38.6;
extern float q=1.6E-19;
extern float m=1E21;
extern float h=1E-6;
extern float ep=1.064E-12;
extern float Ni=1.5E10;
extern float epr=1E-4;
float X(int N)
{
return(N*h);
}
double fi0(int N)
{
return(log(m*X(N)/(2*Ni)+sqrt(pow((m*X(N)/(2*Ni)),2)+1))/cita);
}
double b(double y)
{
return(-2-(q/ep)*Ni*cita*h*h*(exp(-cita*y)+exp(cita*y)));
}
double f(int N,double fi[])
{
return((-q/ep)*h*h*(m*X(N)+Ni*exp(-cita*fi[N])-Ni*exp(cita*fi[N]))-fi[N-1]
+2*fi[N]-fi[N+1]);
}
FILE *ti;
main()
{
int i,j,k,p;
double temp,max,fi[51],arfa[50],beta[50],y[50],detafi[50];
printf("input iteration times:\n");
scanf("%d",&p);
fi[0]=0;
for(i=1;i<=50;i++)
fi[i]=fi0(i);
for(k=1;k<p;k++)
{
beta[1]=b(fi[1]);
y[1]=f(1,fi);
for(i=2;i<=49;i++)
{
arfa[i-1]=1/beta[i-1];
beta[i]=b(fi[i])-arfa[i];
y[i]=f(i,fi)-arfa[i-1]*y[i-1];
}
detafi[49]=y[49]/beta[49];
for(i=48;i>=1;i--)
{
detafi[i]=(y[i]-detafi[i+1])/beta[i];
}
for(i=1;i<=49;i++) /*update the fi[]"*/
{
temp=fi[i]+detafi[i];
fi[i]=temp;
}
max=fabs(detafi[1]); /*the max of
detafi"*/
for(i=2;i<=49;i++)
{
if(fabs(detafi[i])>max) max=detafi[i];
}
if(fabs(max)>epr) continue;
else break;
}
for(i=0;i<=50;i++)
printf("fi[%d]=%e V,x[%d]=%e cm\n",i,fi[i],i,X(i));
printf("%d",k);
}
--
※ 来源:·哈工大紫丁香 http://bbs.hit.edu.cn·[FROM: 218.9.122.239]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:8.110毫秒