Refractive index profile calculation

51 次查看(过去 30 天)
Hello all,
I'm tryng to calculate a Refractive index profile from an article (Ref 1):
But my code does not reproduce smothly as it was suppose to do. Goes to 1.48 (last value as the curve above) but as a square:
The thing is that as you can see in my code below I have N layers (this means N values of refrective index) and when I change the values below 1000 I get some weird shapes. The right curve (first curve attached in this text) has 1000 of values, I mean they (arthurs of that curve) used N = 1000 because converge to a continuos curve. I think I'm very near to the response but I don't know what could be wrong.
If I change N = 10, for example, look the shape:
I mean is not continuos, of course, because it is no the right value that the artours used to had that curve but with N = 1000 it is like a square. And I'm using all the equations to calculate right. Check this:
  1. From Ref 1 they said:
2. And the figure that I'm studying to reproduce is (From Ref. 1):
As you can see in my code I calculate theta correct and also Lf up to Lf maximum (this case is 10um (as you can see in the article curve and in my code)).
I really appreciate any help !!
NOTE: THE ARTICLE HAS OPEN ACESS FROM OSA WEBSITE. IT IS NOT RESTRICTED SO ANYONE CAN SEE.
References
  1. Qian Wang, Yingyan Huang, Ter-Hoe Loh, Doris Keh Ting Ng, and Seng-Tiong Ho, "Thin-film stack based integrated GRIN coupler with aberration-free focusing and super-high NA for efficient fiber-to-nanophotonic-chip coupling," Opt. Express 18, 4574-4589 (2010).
  6 个评论

请先登录,再进行评论。

采纳的回答

David Goodmanson
David Goodmanson 2020-5-19
Hi Tay,
The following code addresses (1) in the text. For Lf = 1, D = 1 and 1000 layers the resulting plot reproduces the one in the text pretty well.
When D > Lf you can get some funky results with the refractive index being less than 1.
Lf = 1;
D = 1;
N = 1000;
h = D/N;
Lfh = Lf/h;
n1 = 3.5; % refractive index of layer 1
nvec = n1; % vector of refractive indices
for k = 1:N
ni = fzero(@(ni) fun(ni,nvec,Lfh),[.1, nvec(end)-1e-10]); % have to be careful with upper limit
nvec = [nvec ni];
end
plot(nvec)
grid on
function y = fun(ni,nvec,Lfh)
y = sum(1./sqrt(nvec.^2/ni^2-1)) - Lfh;
end
  5 个评论
David Goodmanson
David Goodmanson 2021-11-24
编辑:David Goodmanson 2021-11-24
Hello Tay,
Deleting a question that has been answered is not considered accceptable. One reason is that the site is a source of information and solutions, and deleting a question takes away potentially useful information. A more personal reason is that having put in time on the answer, I would not like to see it go away. In this case the question concerns verifying a process involving Snell's law from a freely available 11 year old paper, so I do not yet understand what harm there might be. One idea is, if you wanted to rephrase the question in some manner, I would certainly be amenable to modifying the answer accordingly, and then deleting the comments that have to do with this situation. Any thoughts?
Tay
Tay 2021-11-24
编辑:Tay 2021-11-24
Thank you David. this was supposed to be simple, but it started to be an forum
no problem, it's ok hahaha

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Sparse Matrices 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by