일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Linux
- Photolithography
- 초록빛논문
- 리눅스
- 자연
- 학술지
- 겨울떨개
- 광자학
- 그래프
- metasurface
- 자연 광자학
- 토막잭슨
- 메타표면
- octopus
- Jackson Electrodynamics
- 전자기학
- 3분논문
- 나노포토닉스
- 논문
- nature photonics
- impact factor
- 양자 플라즈몬
- gnuplot
- 과학
- TDDFT
- 자연 나노기술
- 우분투
- 메타물질
- 플라즈몬
- 물리학
- Today
- Total
과꾸로
[MNPBEM] Eigenvalues 구하기. Boundary-Element Method. Matlab code. 본문
0. 소개
MNPBEM은 오스트리아의 Graz 대학교에서 만든 Matlab 코드로 금속나노입자의 전자기적 특성을 시뮬레이션 하는 도구이다.
"MNPBEM is a toolbox for the simulation of metallic nanoparticles (MNP), using a boundary element method (BEM) approach developed by F. J. Garcia de Abajo and A. Howie, Phys. Rev. B 65, 115418 (2002)."
나노입자에 여기되는 Localized Surface Plasmon (LSP) Modes를 보는 데 유용하게 사용된다.
1. 경로설정
설치 과정을 다 따라간 뒤에는 경로 설정을 해줘야 한다.
addpath(genpath('C:\ ... \MNPBEM17'));
addpath('C:\ ... \MNPBEM17\Mesh2d');
위의 두 줄을 matlab 코드 맨 앞에 넣어주거나 simulation 시작 전에 한 번 실행해주어야 한다.
2. BEM Solver
LSP mode를 계산한다는 뜻은 eigenvectors와 eigenvalues를 구한다는 뜻이다. 방법은 여기에 나와있다.
bemsolver를 써서 구하라는 뜻인데 여기서 중요한 건 bemstateig 라는 함수이다. bem + stat + eig 를 붙인 이름인데, BEM, Static, Eigenfucntions (or eigenvalues)를 뜻한다.
사용법은
bem = bemstateig( p )
라고 쓰면 된다. p라는 구조에 생기는 eigenmodes를 40 개 구한다음에 bem에 저장한다. 구하는 eigenmodes의 갯수를 정하고 싶으면 다음과 같이 하면 된다.
bem = bemstateig( p, 'nev', 20 )
위 처럼 써주면 20개의 eigenmodes를 구한다.
bemstateig.m 함수를 직접 찾아가서 좀 더 살펴보면
(경로: ~\MNPBEM17\BEM\@bemstateig\bemstateig.m)
properties
p % composite particle (see comparticle)
nev % number of eigenmodes
ur % right eigenvectors of surface derivative of Green function
ul % left eigenvectors
ene % eigenvalues
unit % inner product of right and left eigenvectors
enei % light wavelength in vacuum
% to determine whether new computation of matrices
end
라고 되어있다. 저 properties로 설정된 변수들은 점을 찍어서 각각 address할 수 있는데 예를 들면 bem.nev 라고 하면 number of eigenmodes를 볼 수 있는 식이다. struct 라고 보면 된다.
bemstateig의 결과로 얻은 bem 이라는 구조체에는 위 그림처럼 하위변수들이 들어있다.
그 중 eigenvalues를 모아 둔 bem.ene를 들어가서 보면 이렇게 되어있다. 대각방향의 값만 있다.
3. Eigenvalues 구하기
Eigenvalues 구하기는 간단하게 다음과 같이 할 수 있다. pp라는 구조체의 eigenvalues를 구한다면
bem = bemstateig( pp );
l = diag(bem.ene);
diag 는 원래 매트랩에 있는 함수로 행렬의 대각성분만 뽑아주는 함수이다. 여기서 구한 l 이 eigenvalues 이다. 이 값은 (dimensionless 이지만) 에너지 차원으로 되어 있어서 파장 차원으로 바꾸려면 다음과 같이 해 주어야 한다.
[ l, ind ] = sort( real( l ) );
sur = bem.ur( :, ind );
sul = bem.ul( ind, : );
sl=-(2*pi)./l %lambda
이 때 sl 이 파장 차원의 eigenvalues 이다 (역시 dimensionless). bem.ur과 bem.ul은 eigenvectors 이다.
참고논문: Davis, T. J., and D. E. Gómez. "Colloquium: An algebraic model of localized surface plasmons and their interactions." Reviews of Modern Physics 89.1 (2017): 011003. [link]
에너지 차원의 eigenvalues는 위 논문의 (5)번 식의 gamma 이고, 파장 차원의 eigenvalues는 그 역수인 lambda 이다.
(Note: 차원과 단위 확인 필요. 수정 예정) => (수정 완료. 아래 글 참고)
4. 결론
MNPBEM 이라는 매트랩 toolbox는 정말 잘 만들었다. 좋다. 이론적 배경도 탄탄하다. Good! 만든 Ulrich Hohenester와 그 동료 분들께 박수를!!!
MNPBEM 논문 목록:
- U. Hohenester and A. Trügler, Comp. Phys. Commun. 183, 370 (2012).
- U. Hohenester, Comp. Phys. Commun. 185, 1177 (2014).
- J. Waxenegger, A. Trügler, and U. Hohenester, Comp. Phys. Commun. 193, 138 (2015).
2018년 4월 12일
과꾸로
'연구자료' 카테고리의 다른 글
[Matlab] spline: 매트랩으로 데이터 interpolation 하기. ppval (0) | 2018.04.27 |
---|---|
[MNPBEM] bemstateig.m 으로 얻은 eigenvalues의 차원과 단위는? (0) | 2018.04.16 |
[Octopus] Tutorial 따라하기. Time-dependent run. TDDFT (0) | 2018.04.06 |
[latexdiff] LaTeX 문서 수정내용 비교해서 보여주는 도구 (0) | 2018.01.09 |
[Jmol] 분자구조 그려주는 프로그램 (0) | 2017.10.09 |