ABSTRACT
Nn = 227; % number of nodes
Ne = 384; % number of elements
inch = 2.54*1e-2./6;
[xn,yn,n1L,n2L,n3L,mt] = meshread('data.txt', Ne, Nn, 0);
[S,T] = GLANT(Nn,Ne,n1L,n2L,n3L,xn*inch,yn*inch);
% TE modes
ATE = inv(T)*S;
[EVTE, kcsqTE] = eig(ATE);
kcTE = sqrt(kcsqTE);
[N,M] = size(kcTE);
for ii = 1 : N
KCTE(ii) = kcTE(ii,ii);
end
FTE = sort(KCTE*3e8/(2*pi))';
% TM modes
boundary = load('boundary_nodes.txt');% reading the boundary nodes
all_nodes = 1:Nn; % reading all nodes
nce = setxor(boundary,all_nodes); % extracting the free nodes
STM = S(nce,nce);
TTM = T(nce,nce);
ATM = inv(TTM)*STM;
[EVTMET,kcsqTM] = eig(ATM);
kcTM = sqrt(kcsqTM);
[N,M] = size(kcTM);
for ii = 1 : N
KCTM(ii) = kcTM(ii,ii);
end
disp('Cutoff wavenumbers for the TM modes');
disp(sort(KCTM));
FTM = sort(KCTM*3e8/(2*pi))';