File: demo_directplc_ex1.m

package info (click to toggle)
octave-iso2mesh 1.9.8%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 11,128 kB
  • sloc: cpp: 11,982; ansic: 10,158; sh: 365; makefile: 59
file content (60 lines) | stat: -rw-r--r-- 1,929 bytes parent folder | download
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% angular resolution
dt = pi / 40;
t = 0:dt:2 * pi - dt;

%% parameters of a side-cut fiber
h = 100;
r1 = 20;
r2 = 25;
a = -1;
b = 0;
c = 1;
d = -h;

%% key nodes of a side-cut fiber

n1 = [r1 * sin(t(:)) r1 * cos(t(:)) zeros(size(t(:)))];
n2 = [r2 * sin(t(:)) r2 * cos(t(:)) zeros(size(t(:)))];

n3 = [r1 * sin(t(:)) r1 * cos(t(:)) -d - (a * r1 * sin(t(:)) + b * r1 * cos(t(:))) / c];
n4 = [r2 * sin(t(:)) r2 * cos(t(:)) -d - (a * r2 * sin(t(:)) + b * r2 * cos(t(:))) / c];

no = [n1; n2; n3; n4];

%% PLCs of the side-cut fiber

clear fc;
count = 1;
for i = 1:length(t) - 1
    % the last number in each cell is the fc id
    fc{count} = {[i + length(t) i + 3 * length(t) i + 3 * length(t) + 1 i + length(t) + 1], 1};
    count = count + 1;
    fc{count} = {[i i + 2 * length(t) i + 2 * length(t) + 1 i + 1], 2};
    count = count + 1;
end
i = length(t);
fc{count} = {[i + length(t) i + 3 * length(t) 1 + 3 * length(t) 1 + length(t)], 1};
count = count + 1;
fc{count} = {[i i + 2 * length(t) 1 + 2 * length(t) 1], 2};
count = count + 1;

fc{count} = {1:1 + length(t) - 1, 3};
count = count + 1;  % bottom inner circle
fc{count} = {[1 + length(t):1 + length(t) * 2 - 1 nan fliplr(1:1 + length(t) - 1)], 4};
count = count + 1; % button outter circle
fc{count} = {1 + length(t) * 2:1 + length(t) * 3 - 1, 5};
count = count + 1;  % top inner circle
fc{count} = {[1 + length(t) * 3:1 + length(t) * 4 - 1 nan fliplr(1 + length(t) * 2:1 + length(t) * 3 - 1)], 6}; % top outter circle

%% mesh generation of the cladding for the side-cut fiber
% [node,elem,face]=s2m(no,face,1,50);
[node, elem, face] = surf2mesh(no, fc, min(no), max(no), 1, 50, [0 0 1], [], 0);

plotmesh(no, fc, 'y>-0.1');
%figure;
plotmesh(node, elem, 'x>0 | y>0');
%figure;
plotmesh(node, face, 'x>0 | y>0');