|  | @@ -0,0 +1,60 @@
 | 
	
		
			
				|  |  | +%{
 | 
	
		
			
				|  |  | +Copyright © 2020 Alexey A. Shcherbakov. All rights reserved.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +This file is part of GratingFMM.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +GratingFMM is free software: you can redistribute it and/or modify
 | 
	
		
			
				|  |  | +it under the terms of the GNU General Public License as published by
 | 
	
		
			
				|  |  | +the Free Software Foundation, either version 2 of the License, or
 | 
	
		
			
				|  |  | +(at your option) any later version.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +GratingFMM is distributed in the hope that it will be useful,
 | 
	
		
			
				|  |  | +but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
	
		
			
				|  |  | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
	
		
			
				|  |  | +GNU General Public License for more details.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +You should have received a copy of the GNU General Public License
 | 
	
		
			
				|  |  | +along with GratingFMM. If not, see <https://www.gnu.org/licenses/>.
 | 
	
		
			
				|  |  | +%}
 | 
	
		
			
				|  |  | +%% description:
 | 
	
		
			
				|  |  | +% calculate a diagonal S-matrix of an interface between two homogeneous
 | 
	
		
			
				|  |  | +% isotropic media for two polarizations and a 2D set of wavevector
 | 
	
		
			
				|  |  | +% projections
 | 
	
		
			
				|  |  | +%% input:
 | 
	
		
			
				|  |  | +% xno, yno: numbers of Fourier harmonics in x and y dimensions
 | 
	
		
			
				|  |  | +% kx0, ky0: zero order wavevector projections
 | 
	
		
			
				|  |  | +% kgx, kgy: wavevector steps in x and y dimensions
 | 
	
		
			
				|  |  | +% eps1, eps2: permittivities of media below and above the interface
 | 
	
		
			
				|  |  | +%% output:
 | 
	
		
			
				|  |  | +% SMD: diagonal interface S-matrix of size (2*no,2,2), where no = xno*yno
 | 
	
		
			
				|  |  | +% block SMD(:,1,1) corresponds to refelection from substrate to substrate
 | 
	
		
			
				|  |  | +% block SMD(:,2,2) corresponds to refelection from superstrate to superstrate
 | 
	
		
			
				|  |  | +% block SMD(:,2,1) corresponds to transmission from substrate to superstrate
 | 
	
		
			
				|  |  | +% block SMD(:,1,2) corresponds to transmission from superstrate to substrate
 | 
	
		
			
				|  |  | +% central harmonic index is ind_0 = (ceil(xno/2)-1)*yno+ceil(yno/2)
 | 
	
		
			
				|  |  | +% first no components in each of the two first dimensions if the S-matrix
 | 
	
		
			
				|  |  | +%  correspond to the TE polarization, and indeces from no+1 to 2*no 
 | 
	
		
			
				|  |  | +%  correspond to the TM polarization
 | 
	
		
			
				|  |  | +%% implementation:
 | 
	
		
			
				|  |  | +function [SM] = calc_SMD_interface_td(xno, yno, kx0, ky0, kgx, kgy, eps1, eps2)
 | 
	
		
			
				|  |  | +	no = xno*yno;
 | 
	
		
			
				|  |  | +	ind_e = 1:no;
 | 
	
		
			
				|  |  | +	ind_h = no+1:2*no;
 | 
	
		
			
				|  |  | +		% propagation constants:
 | 
	
		
			
				|  |  | +	[kz1, kz2] = fmmtd_kxyz(xno, yno, kx0, ky0, kgx, kgy, eps1, eps2);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	SM = zeros(2*no,2,2);
 | 
	
		
			
				|  |  | +		% TE:
 | 
	
		
			
				|  |  | +	SM(ind_e,1,1) = (kz1-kz2)./(kz1+kz2);
 | 
	
		
			
				|  |  | +	SM(ind_e,2,1) = 1 + SM(ind_e,1,1);
 | 
	
		
			
				|  |  | +	SM(ind_e,2,2) = -SM(ind_e,1,1);
 | 
	
		
			
				|  |  | +	SM(ind_e,1,2) = 1 + SM(ind_e,2,2);
 | 
	
		
			
				|  |  | +		% TM:
 | 
	
		
			
				|  |  | +	SM(ind_h,1,1) = (eps2*kz1-eps1*kz2)./(eps2*kz1+eps1*kz2);
 | 
	
		
			
				|  |  | +	SM(ind_h,2,1) = 1 + SM(ind_h,1,1);
 | 
	
		
			
				|  |  | +	SM(ind_h,2,2) = -SM(ind_h,1,1);
 | 
	
		
			
				|  |  | +	SM(ind_h,1,2) = 1 + SM(ind_h,2,2);
 | 
	
		
			
				|  |  | +end
 | 
	
		
			
				|  |  | +%
 | 
	
		
			
				|  |  | +% end of calc_SMD_interface_td
 | 
	
		
			
				|  |  | +%
 |