« SunワークステーションのNVRAMが電池切れになったので | トップページ | 慢性的な腰痛が針灸で軽くなった話  »

2011年7月20日 (水)

Fresnel(フレネル)の式で表面プラズモン共鳴角を求める -複素数の入った計算

以下は、フレネルの式を使って、各層の複素屈折率(複素誘電率)から、各入射角における反射率を計算する方法のノート。下に示した条件では表面プラズモン共鳴(SPR)により、反射率が極小になるSPR角が観察される。ここではFortranのプログラムを用いた。

金属膜を蒸着したプリズムに、プリズム側から(空気側からでないことが重要)、レーザー光を入射して、反射光を観察することを考える。入射角を変えていくと、ある角度で反射率が急峻な極小値を示し、反射光の中に暗い線が観察される。この角度が表面プラスモン共鳴(SPR)角である。このとき、入射光と薄膜中の電子とが共鳴を起こし、入射光のエネルギーが吸収されて、電子のエネルギーに変化している。プリズム側の光と、薄膜中の電子との分散関係(ωとkの関係)が一致し、光によって、電子の集団的波動(プラズモン)が生じているのである。

表面プラズモン共鳴を起こすのはp偏光である。

Kreottoc_2   

表面プラズモン共鳴を起こさせるには、上図のようにクレッチマン配置とオット配置がある。膜には通常、金薄膜が用いられる。

表面プラズモン共鳴角を求めるには、フレネル(Fresnel)の式を使って、各媒質の屈折率(二乗して、誘電率)から、各入射角における反射率を計算し、吸収を示す角度を算出する。屈折率は空気、プリズムの場合は実数であるが、金属膜の屈折率は複素数になる。複素数を用いるところがポイント。例えば、仮に下式のkの虚数成分を無視して計算すると、反射率の極小値は出現しない。

Kretchmann配置のときの振幅反射率(複素数)rSPは次式で計算される。(振幅反射率の絶対値の二乗が通常の反射率Rである。振幅反射率(複素数)に、共役の複素数を乗じたものが通常の反射率Rだと言うこともできる。)
Eq1_2 
Otto配置のときの振幅反射率rLRSPは次式である。
Eq2

ここで、r234

Eq3

r12, r23, r34 およびk1z, k2z, k3z, k4zは、p偏光に関しては

Eq4
Eq5

εi はi層目の媒質の誘電率(屈折率(複素数)の二乗)、diはi番目の層の厚み、θは入射角、cは光速、ωは角振動数(入射光の波長から計算)。

Otto配置のときに、プリズムの屈折率1.4607、層2と4が空気で屈折率1、層3が金薄膜で複素屈折率0.166+3.15i、レーザーの波長532nm、層2、層4の厚さがそれぞれ10nm、40nmのときに、入射角10°~80°の範囲の反射率を0.5°ステップで計算するFortran90のプログラムは以下の通り(該当する数値を変更すれば他の条件でも簡単に計算できる)

COMPLEX R,R12,R23,R34,R234
COMPLEX N1,N2,N3,N4
COMPLEX E1,E2,E3,E4
COMPLEX I,K1,K2,K3,K4
REAL C,ABSR12,ABSR23,ABSR34,ABSR234,ANGLE,PAI,THETA
N1=CMPLX(1.4607,0)
N2=CMPLX(1,0)
N3=CMPLX(0.166,3.15)
N4=CMPLX(1,0)
I=CMPLX(0,1)
E1=N1*N1
E2=N2*N2
E3=N3*N3
E4=N4*N4
D2=10E-9
D3=40E-9
C=3.00E+8
PAI=3.14159
DO 200 J=0,140
ANGLE=10+J*0.5
THETA=ANGLE*PAI/180
OMEGA=2*PAI*C/532E-9
K1=OMEGA/C*SQRT(E1-E1*SIN(THETA)*SIN(THETA))
K2=OMEGA/C*SQRT(E2-E1*SIN(THETA)*SIN(THETA))
K3=OMEGA/C*SQRT(E3-E1*SIN(THETA)*SIN(THETA))
K4=OMEGA/C*SQRT(E4-E1*SIN(THETA)*SIN(THETA))
R12=-(E1*K2-E2*K1)/(E1*K2+E2*K1)
ABSR12=ABS(R12)
R23=-(E2*K3-E3*K2)/(E2*K3+E3*K2)
ABSR23=ABS(R23)
R34=-(E3*K4-E4*K3)/(E3*K4+E4*K3)
ABSR34=ABS(R34)
R234=(R23+R34*EXP(2*I*K3*D3))/(1+R23*R34*EXP(2*I*K3*D3))
ABSR234=ABS(R234)
R=(R12+R234*EXP(2*I*K2*D2))/(1+R12*R234*EXP(2*I*K2*D2))
PRINT *,ANGLE,REAL(R),AIMAG(R),ABS(R)*ABS(R)
200 CONTINUE
END

下から3行目のPRINT文で、角度、振幅反射率の実数成分、振幅反射率の虚数成分、反射率(振幅反射率の絶対値の二乗)の4データを、順に画面表示する。表示されたデータを右クリックで全て選択などして、コピペするとよい。(Windows XP上、Microsoft Fortran Power Station Ver. 4 for Professional Editionで動作確認。)

Fortran初見の人にわかりにくいのは、DO 200 J=0,140 と 200 CONTINUE のみと思う。この二つの間を、Jについて0から140まで1ずつ増やしながら、ループしなさいという意味。

環境に依存するので書かなかったが、ファイル入出力の命令を書けば、ファイルに出力できる。

Excel VBAで書こうかとも考えたが、複素数はFortranで書く方が実にシンプルである。

上述の計算結果をグラフ(R vs θ)にすると下のようになる。46.5°付近にSPR角がある。媒質の屈折率が微小変化すると、SPR角が移動するので、この角度ではRが大きく変化することになる。なので、表面プラズモン共鳴(SPR)は、微小な屈折率(誘電率)変化を反射率変化として増感する方法として知られる。

Spr

参考 R. V. Andaloro et al., Applied Optics 33 [27], 6340-6347 (1994). (文献中の式6aは誤植あり、マイナスが抜けている)

|

« SunワークステーションのNVRAMが電池切れになったので | トップページ | 慢性的な腰痛が針灸で軽くなった話  »

コメント

精度をあまり問わないのでしたら,このプログラムで計算できるとおもいます。ただ,πは,手入力するよりも,可能な限り計算精度に合わせてくれるATAN(1.0)*4.0 で定義する方が誤差が少のうてええと思います。あるいは,せめて3.14159よりも精度のいい有理数である,355/113で。

投稿: 中川義行 | 2011年7月21日 (木) 00時38分

早速のコメントありがとうございます。指摘の通りと思います。一応、初心者がコード見て、意味が取れないと、困るので手入力してます。VBAならPI()で済むんですけどね。

ATAN(1.0)*4.0 は、ちょっとしたノウハウですな。覚えておきます。

投稿: つゆもと | 2011年7月21日 (木) 00時48分

Don't have money to buy a building? You not have to worry, because that is available to take the business loans to work out all the problems. Therefore take a secured loan to buy everything you want.

投稿: MaryTillman34 | 2012年11月11日 (日) 01時18分


電磁波の入射角がもし複素数だったら、どういうことになるんでしょうか?

投稿: かず | 2013年6月25日 (火) 09時49分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/187788/52262853

この記事へのトラックバック一覧です: Fresnel(フレネル)の式で表面プラズモン共鳴角を求める -複素数の入った計算:

« SunワークステーションのNVRAMが電池切れになったので | トップページ | 慢性的な腰痛が針灸で軽くなった話  »