SiC上GaN層の臨界膜厚(C言語)

 固体発光素子(LED)には、窒化物半導体が使われています。LED用の窒化ガリウム(GaN)用基板には、可視光を透過するサファイヤがよく用いられますが、CREE社のLEDでは、炭化珪素(SiC)基板が使われているそうです。
 SiC基板はまだ価格が安いとは言えませんが、GaNとの格子定数差が小さく(3.5%)、大面積の高品質結晶成長に適しています。ただ、臨界膜厚を超えると結晶性が劣化するため、SiC基板上GaN層(およびAlN層)の臨界膜厚を知っておく必要があります(実際には緩衝層を用いて緩和させるので関係ないが)。
【補足】
 練習目的:数値計算、データの入出力
 懸念事項:パラメータやミスフィット転位の設定値
【参考文献】
 J. M. Matthews et al, JCG 27, 118 (1974).
 A. Fischer et al, PRL. 73, 2712(1994).
 R. People et al, APL. 47, 322 (1985).


#include stdio.h
#include string.h
#include math.h

//関数の定義
double mb(double amb, double hmb, double bmb, double fmb, double vmb, double dmb);
double F(double af, double hf, double bf, double ff, double vf, double df);
double pb(double apb, double hpb, double bpb, double fpb, double vpb, double dpb);


int main()
{
char m[256];
double a, b, f, v, d, h, x;

// SiC基板上の材料の選択
printf("epi(0001) on SiC : aln? gan? else? \n");
scanf("%s", m);

// GaNとAlNと他の材料の物性値
if(strcmp(m, "aln")==0)
v=0.2, b=0.3112*pow(10,-9), f=0.00996, a=60, d=0;
else if(strcmp(m,"gan")==0)
v=0.2, b=0.3189*pow(10,-9), f=0.03387, a=60, d=0;
else{
printf("Poisson ratio: v=");
scanf(" %lf",&v);
printf("size of Burgers vector: b=");
scanf(" %lf",&b);
printf("lattice mismatch factor: f=");
scanf(" %lf",&f);
printf("angle between dislocation line and Burgers vector: a=");
scanf(" %lf", &a);
printf("angle between slip plane and interface: d=");
scanf(" %lf",&d);
}

// 計算精度
double dh=pow(10,-13);

// Matthews-Blakesleeモデル
h= 100*pow(10,-9);
x=mb(a,h,b,f,v,d);
while (h>x)
{
h=h-dh;
x=mb(a,h,b,f,v,d);
}
printf("Matthews-Balkeslee model: %lf nm\n", h*pow(10,9));

// Fischerモデル
h=100*pow(10,-9);
x=F(a,h,b,f,v,d);
while (h>x)
{
h=h-dh;
x=F(a,h,b,f,v,d);
}
printf("Fischer model: %lf nm\n", h*pow(10,9));

// People-Beanモデル
h=1000*pow(10,-9);
x=pb(a,h,b,f,v,d);
while (h>x)
{
h=h-dh;
x=pb(a,h,b,f,v,d);
}
printf("People-Bean model: %lf nm\n", h*pow(10,9));

return 0;
}

// Matthews-Blakesleeモデルの関数
double mb(double amb, double hmb, double bmb, double fmb, double vmb, double dmb)
{
double c;
c=bmb*(1-vmb*cos(amb*PI_M/180)*cos(amb*PI_M/180))*(log(hmb/bmb)+1)/(8*PI_M*fmb*(1+vmb)*cos(dmb*PI_M/180));
return c;
}

// Fischerモデルの関数
double F(double af, double hf, double bf, double ff, double vf, double df)
{
double c;
c=bf*(1-vf*cos(af*PI_M/180)*cos(af*PI_M/180))*(log(hf/bf)+1)/(8*PI_M*ff*(1+vf)*cos(df*PI_M/180))+bf*cos(df*PI_M/180)/(2*ff);
return c;
}

// People-Beanモデルの関数
double pb(double apb, double hpb, double bpb, double fpb, double vpb, double dpb)
{
double c;
c=bpb/(16*PI_M*sqrt(2))*(1-vpb)/(1+vpb)/(fpb*fpb)*log(hpb/bpb);
return c;
}

0 件のコメント:

コメントを投稿