Catalog
  1. 1. Dipole’s Emission Near Sphere
    1. 1.1. Introduction
    2. 1.2. Theoretical Description
      1. 1.2.1. MATLAB Implementation
        1. 1.2.1.1. Function Program
        2. 1.2.1.2. Main Program (Convergence Test)
      2. 1.2.2. Python Implementation
      3. 1.2.3. Simulation Methods
    3. 1.3. COMSOL Simulation
    4. 1.4. MEEP Simulation
    5. 1.5. Lumerical FDTD Simulations
Dipole's Emission Near Sphere

Dipole’s Emission Near Sphere

Introduction

As is shown in above figure, In this project I will simulate the dipole’s emission near a sphere. The sphere could be dielectric or metalic. The theoretic description could be found in this paper ref1.

We will analyze two different types of dipole orientations.

  • Radial dipole orientation which means dipole is orthogonal to the radial direction. $\mathrm{d}_{ort}$
  • Tangential dipole orientation which means dipole is parallel to the radial direction. $\mathrm{d}_{para}$

    We will try to numerically and theoretically calculate the emission enhancement.

Theoretical Description

Theoretically, the total decay rate $\Gamma_{t}$ and radiative decay rate $\Gamma_{r}$ could be expressed as

  • Radial Dipole
  • Tangential Dipole

In above expressions, $j_{n},h^{(1)}_{n}$ are ordinary spherical Bessel and Hankel functions.

$a_{n}$ and $b_{n}$ are the Mie scattering coefficients of the sphere. $r=R+d$, $k=\sqrt{\varepsilon}\omega/c$. $\varepsilon$ is the dielectric constant of the embedding medium, $\omega$ the optical frequency, $c$ the speed of the light in vacuum, and $l$ is the angular mode number. The derivatives of $\psi_{n},\xi_{n}$ are relatively to $kr$. The Mie scattering coefficients’ definition could be found in the book.ref2

MATLAB Implementation

I wrote an MATLAB program to realize the simulation of the emission enhancement. The following is the function and these function should be renamed and stored with a proper name according to the function name.

Function Program

1
2
% Main Function
3
function nP=Fun_nP_Cal(num_sum,num_dis,dis,alpha,alpham,index_s,k)
4
nP=zeros(num_dis,2); % with nP(:,1) store the np_ortho and nP(:,2) store the np_para
5
for m=1:num_dis
6
	rate_ortho=0;
7
    rate_para=0;
8
    r=dis(m);
9
	for l=1:num_sum
10
        a1=(index_s^2*spBJ(l,alpham)*dspBJ(l,alpha)-spBJ(l,alpha)*dspBJ(l,alpham));
11
        a2=(index_s^2*spBJ(l,alpham)*dspBH(l,alpha)-spBH(l,alpha)*dspBJ(l,alpham));   
12
        b1=(spBJ(l,alpham)*dspBJ(l,alpha)-spBJ(l,alpha)*dspBJ(l,alpham));
13
        b2=(spBJ(l,alpham)*dspBH(l,alpha)-spBH(l,alpha)*dspBJ(l,alpham));
14
	    x=k*r;
15
	    al=a1/a2;
16
	    bl=b1/b2;
17
		rate_ortho=rate_ortho+(2*l+1)*l*(l+1)*(-al)*(spBH(l,x)/(x))^2;
18
	    rate_para=rate_para+(l+0.5)*((-al)*(dspBH(l,x)/(x))^2+(-bl)*(spBH(l,x))^2);   
19
	end
20
	rate_ortho=real(rate_ortho)*3/2+1;
21
	rate_para=1+1.5*real(rate_para);
22
	nP(m,1)=rate_ortho;
23
	nP(m,2)=rate_para; 
24
end
25
end
26
27
% The Sphere Hankel Function of the first kind
28
function [spBH]=spBH(l,x)
29
    l=l+0.5;
30
    spBH=sqrt(pi/(x*2))*(besselj(l,x)+1j*bessely(l,x));
31
end
32
33
% The Sphere Bessel Function 
34
function [spBJ]=spBJ(l,x)
35
    l=l+0.5;
36
    spBJ=sqrt(pi/(x*2))*besselj(l,x);
37
end
38
39
% The derivative of the Hankel function of the first kind
40
function [dspBH]=dspBH(l,x)
41
    l=l+0.5;
42
    spBH1=sqrt(pi/(x*2))*(besselj(l,x)+1j*bessely(l,x));
43
    spBH2=sqrt(pi/(x*2))*(besselj(l-1,x)+1j*bessely(l-1,x));
44
    spBH3=sqrt(pi/(x*2))*(besselj(l+1,x)+1j*bessely(l+1,x));
45
    dspBH=0.5*spBH1+x*0.5*(spBH2-spBH3);
46
end
47
48
% The derivative of [the Hankel function of the first kind * mx]
49
function [dspBHm]=dspBHm(l,x)
50
    l=l+0.5;
51
    m=sqrt(-50);
52
    spBH1=sqrt(pi/(x*2))*(besselj(l,x)+1j*bessely(l,x));
53
    spBH2=sqrt(pi/(x*2))*(besselj(l-1,x)+1j*bessely(l-1,x));
54
    spBH3=sqrt(pi/(x*2))*(besselj(l+1,x)+1j*bessely(l+1,x));
55
    dspBHm=m*0.5*spBH1+x*0.5*(spBH2-spBH3);
56
end
57
58
% The derivative of the Bessel function
59
function [dspBJ]=dspBJ(l,x)
60
    l=l+0.5;
61
    spBJ1=sqrt(pi/(x*2))*besselj(l,x);
62
    spBJ2=sqrt(pi/(x*2))*besselj(l-1,x);
63
    spBJ3=sqrt(pi/(x*2))*besselj(l+1,x);
64
    dspBJ=0.5*spBJ1+x*0.5*(spBJ2-spBJ3);
65
end
66
67
% The derivative of [the Bessel function *mx]
68
function [dspBJm]=dspBJm(l,x)
69
    l=l+0.5;
70
    m=sqrt(-50);
71
    spBJ1=sqrt(pi/(x*2))*besselj(l,x);
72
    spBJ2=sqrt(pi/(x*2))*besselj(l-1,x);
73
    spBJ3=sqrt(pi/(x*2))*besselj(l+1,x);
74
    dspBJm=m*0.5*spBJ1+m^2*x*0.5*(spBJ2-spBJ3);
75
end

Main Program (Convergence Test)

And the main program is as follows

1
% To test when will the theoretical expressions will convengent
2
%index_s=sqrt(-22.473-1.3974i);
3
index_s=sqrt(-50);
4
lamda=1000e-9;
5
k0=2*pi/lamda;
6
k=k0;
7
radius=110e-9;
8
alpha=pi*2*radius/lamda;
9
alpham=alpha*index_s;
10
num_dis=100;
11
12
num_sum=[1,3,50];
13
num_len=length(num_sum);
14
dis_theo=linspace(radius+50e-9,radius+1000e-9,num_dis);
15
16
np_theo=zeros(num_dis,2,3);
17
18
for l=1:num_len
19
    np_theo(:,:,l)=Fun_nP_Cal(num_sum(l),num_dis,dis_theo,alpha,alpham,index_s,k);
20
end
21
22
%% 
23
figure(1)
24
for l=1:num_len
25
    plot(dis_theo,np_theo(:,1,l),'-')
26
    hold on
27
    plot(dis_theo,np_theo(:,2,l),'--')
28
end

Python Implementation

I also write a corresponding python program to calculate the dipole’s emission near sphere.

Simulation Methods

COMSOL Simulation

Dipole’s emission properties near nano particles could be simulated via COMSOL. COMSOL supports different types of sources, for example, the point, edge, surface and volume current source. The emission power could be described by

to be continued…….

MEEP Simulation

Lumerical FDTD Simulations

ref1. Phys. Rev. B 76, 115123 (2007)
ref2. Absorption and scattering by small particles
Author: Knifelee
Link: https://knifelees3.github.io/2020/06/20/A_En_DipoleEmissionNearSphere/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
  • 支付寶

Comment