2000/11/15

電子材料 - 2000.11.15


参考文献


MATLABで,少数キャリア連続の式を体感する

Matlabプログラム "少数キャリア連続の式を体感する" を使って学習するには, 右の枠線内のソースリストを自分のパソコンにセーブして動かしてみよう。 操作手順は以下の通り。 (内容を良く理解しているのであれば,この通り操作しなくてもかまいません)

手順
  1. Matlab を立ち上げる
  2. Matlabの"ファイル"メニューから,→ 新規作成 → M-File と操作する。 これにより,エディタが立ち上がる
  3. 右のプログラムをマウスでなぞり,エクスプローラの"編集"メニューから, → コピー と操作する。
  4. Matlab のエディタ上で,"編集"メニューから,→ 貼付け(ペースト)と操作する。
  5. Matlab のエディタを終了させる。
    その際,保存するか問われたら,ファイル名"carrier"を指定して保存する。
    ("carrier"という名前は,以降と対応が取れれば何でも良い。)
  6. Matlab 上で,
    >> carrier
    と打ち込み,プログラムを実行させる。
    すると,

    という出力が得られる(はずである)。
  7. プログラム(インターネット上のページの右側)を参照しながら, 図形の見方と,プログラムの解説をしよう。
    図形は,横軸が変位(メートル),縦軸がキャリア濃度(個/m3)である。
    時間と共にグラフが変化したのは,キャリアの分布が時間と共に変わることを意味する。
    初期状態は緑色の線で,中間状態は青色の線で,計算した最後の状態は赤色の線で示す。
    グラフの下部に現れる紫色の線は,電界の大きさを表わす。

    プログラム中の最初の12行を見て欲しい。
    ここに現れる変数により,このプログラムがシミュレートする系を指定する。
    z1 により,拡散現象の有る/無しを指定する。
    以下,プログラムのコメントに書いてある通りである。
    これらの変数を設定することにより, 様々な系におけるキャリアの振る舞いをシミュレートできる。

  8. プログラムを編集し直したいときは,
    >> edit carrier
    と打ち込んで,エディタを再起動する。それ以降の手順は,前述のとおり。
  9. プログラムの中身を見ると,物理現象の取り扱いがよく理解できる。
  10. MATLAB 関連のリンク:
プログラム:"少数キャリア連続の式を体感する"

% carrier (望月 00/11月)
% 少数キャリア連続の式を体感する

z1=1; % 拡散現象が       ... 0=無い 1=ある
 d0=10; % 拡散定数
 d0L=0; % 左の窓が,0=密封 1=開放
 d0R=1; % 右の窓 同上
z2=0; % ドリフトが       ... 0=無い 1=ある
z3=0; % キャリアの発生が ... 0=無い 1=ある
z4=0; % キャリアの消滅が ... 0=無い 1=ある
 p00=1; %熱平衡状態でのキャリア濃度
iend=200; % シミュレーションを行なう最終時刻
 
%
 
p0=[	linspace(0,0,5) ...
	linspace(2,2,45) ...
	linspace(0.5,0.5,50) ...
	linspace(1,1,110) ...
	linspace(1,1.2,10) ...
	linspace(1.2,1.2,5) ...
	linspace(1.2,1,10) ...
    linspace(1,1,150) ]; % 濃度
p=p0;
len=length(p);
x0=[(0:0.01:5)];
x=x0(1:len);
% pt00=[ linspace(0,0,20) linspace(1,1,10) linspace(0,0,20)]
% pt0=[pt00 pt00 pt00 pt00 pt00]

e=[	linspace(0,0,150) ...
	linspace(0,1,30) ...
	linspace(1,1,90) ...
	linspace(1,0,30)];
e=[e linspace(0,0,len-length(e)) ];

ea=abs(e);
eplus=(e+ea)/2;
eminus=(e-ea)/2;

g=[	linspace(0,0,330) ...
	linspace(1,1,10) ];
g=[g linspace(0,0,len-length(g)) ];

%

plot(x,p,'g',x,e*0.1-0.2,'m')
pold=p;
hold on

fi=1;
i=0;
for ii=20:20:iend
   for i=i+1:ii
      dx=diff(x); % 区間の間隔
      
      if z1==1, % 拡散現象
         for j=1:d0
            p(1)=p(1)*d0L;
            p(len)=p(len-1)*d0R;
            dp=diff(p)./dx./dx;
            ddp=diff(dp)/200000;
            p=p+[0 ddp 0];
         
            % 強制的にキャリア濃度設定{
            %p(2)=1+sin(i/200);
            % }
         end      
      end

      if z2==1, % 電界
         x=x+e/5000;
         dx2=diff(x);
         p(1:len-1)=p(1:len-1).*dx./dx2;
      end

      if z3==1, % キャリアの発生
         p=p+g*1/2000; 
      end

      if z4==1, % キャリアの消滅
         p=p-(p-p00)/1000;
      end
   end

   plot(x,p)
   title(['loop ' num2str(i)])
   pold=p;
   pause(0)
end

plot(x0(1:len),p0,'g','LineWidth',2)
plot(x,p,'r')
title(['loop ' num2str(i)])
hold off