Dosya:Spherical Lens.gif

bilgipedi.com.tr sitesinden

Spherical_Lens.gif(543 × 543 piksel, dosya boyutu: 6,8 MB, MIME türü: image/gif, döngüye girdi, 92 kare, 9,2 sn)

Not: Teknik sınırlamalar nedeniyle, bu gibi yüksek çözünürlüklü GIF resimlerinin küçük resimlerinde animasyon yoktur.

Bu dosya Wikimedia Commons deposunda bulunmaktadır ve diğer projeler tarafından kullanılıyor olabilir. Aşağıda dosya açıklama sayfasındaki açıklama gösteriliyor.

Özet

Açıklama
English: Visualization of light through a spherical lens, as a function of the radii of curvature of the two facets. Notice that we are far from the "thin lens" approximation.
Tarih
Kaynak https://twitter.com/j_bertolotti/status/1392058658520027138
Yazar Jacopo Bertolotti
İzin
(Bu dosyanın tekrar kullanımı)
https://twitter.com/j_bertolotti/status/1030470604418428929

Mathematica 12.0 code

\[Lambda]0 = 1.; k0 = N[(2 \[Pi])/\[Lambda]0]; (*The wavelength in vacuum is set to 1, so all lengths are now in units of wavelengths*)
\[Delta] = \[Lambda]0/15; \[CapitalDelta] = 40*\[Lambda]0; (*Parameters for the grid*)
\[Sigma] = 10 \[Lambda]0; (*width of the gaussian beam*)

sourcef[x_, y_] := E^(-(x^2/(2 \[Sigma]^2))) E^(-((y + \[CapitalDelta]/2)^2/(2 (\[Lambda]0/2)^2))) E^(I k0 y);
\[Phi]in = Table[Chop[sourcef[x, y]], {x, -\[CapitalDelta]/2, \[CapitalDelta]/2, \[Delta]}, {y, -\[CapitalDelta]/2, \[CapitalDelta]/ 2, \[Delta]}]; (*Discretized source*)
d = \[Lambda]0/2; (*typical scale of the absorbing layer*)

imn = Table[ Chop[5 (E^-((x + \[CapitalDelta]/2)/d) + E^((x - \[CapitalDelta]/2)/d) + E^-((y + \[CapitalDelta]/2)/d) + E^((y - \[CapitalDelta]/2)/d))], {x, -\[CapitalDelta]/2, \[CapitalDelta]/2, \[Delta]}, {y, -\[CapitalDelta]/2, \[CapitalDelta]/2, \[Delta]}]; (*Imaginary part of the refractive index (used to emulate absorbing boundaries)*)
dim = Dimensions[\[Phi]in][[1]];
L = -1/\[Delta]^2*KirchhoffMatrix[GridGraph[{dim, dim}]]; (*Discretized Laplacian*)

ycenter = Map[y0 /. # &, FullSimplify[Solve[(x1)^2 + (y1 - y0)^2 == r^2, {y0}]][[All, 1, All]]  ];

surface2[x_] := Evaluate[Evaluate[((Sqrt[r^2 - (x)^2] + y0) /. {y0 -> ycenter[[1]]}) /. {y1 -> -(\[CapitalDelta]/4), x1 -> \[CapitalDelta]/2, r -> 100 \[CapitalDelta]} ] ];
surface1[x_] := Evaluate[((-Sqrt[r^2 - (x)^2] + y0 - 1) /. {y0 -> ycenter[[2]]}) /. {y1 -> -(\[CapitalDelta]/4), x1 -> \[CapitalDelta]/2, r -> 100 \[CapitalDelta]}];
frames1 = Table[
  ren = Table[ If[y < Re@Evaluate[surface2[x]] && y > Re@surface1[x], n0, 1], {x, -\[CapitalDelta]/2, \[CapitalDelta]/2, \[Delta]}, {y, -\[CapitalDelta]/2, \[CapitalDelta]/2, \[Delta]}];
  n = ren + I imn;
  b = -(Flatten[n]^2 - 1) k0^2 Flatten[\[Phi]in]; (*Right-hand side of the equation we want to solve*)
  M = L + DiagonalMatrix[ SparseArray[Flatten[n]^2 k0^2]]; (*Operator on the left-hand side of the equation we want to solve*)
  \[Phi]s = Partition[LinearSolve[M, b], dim]; (*Solve the linear system*)
  
  ImageAdd[
   ArrayPlot[ Transpose[(Abs[\[Phi]in + \[Phi]s]/Max[Abs[\[Phi]in + \[Phi]s]])^2][[(4 d)/\[Delta] ;; (-4 d)/\[Delta], (4 d)/\[Delta] ;; (-4 d)/\[Delta]]], ColorFunction -> "AvocadoColors" , DataReversed -> True, Frame -> False, PlotRange -> {0, 1}],
   ArrayPlot[Transpose@Re[(n - 1)/5] , DataReversed -> True , ColorFunctionScaling -> False, ColorFunction -> GrayLevel, Frame -> False]
   ](*Plot everything*)
  , {n0, 1, 2.5, 0.24}];

surface2[x_] := Evaluate[Evaluate[((Sqrt[r^2 - (x)^2] + y0) /. {y0 -> ycenter[[1]]}) /. {y1 -> -(\[CapitalDelta]/4), x1 -> \[CapitalDelta]/2, r -> (c^2 + (c \[CapitalDelta])/2 + (5 \[CapitalDelta]^2)/16)/(
        2 (c + \[CapitalDelta]/4))} ] ];
surface1[x_] := Evaluate[((-Sqrt[r^2 - (x)^2] + y0 - 1) /. {y0 -> ycenter[[2]]}) /. {y1 -> -(\[CapitalDelta]/4), x1 -> \[CapitalDelta]/2, r -> 100 \[CapitalDelta]}];
frames2 = Table[
  ren = Table[ If[y < Re@Evaluate[surface2[x]] && y > Re@surface1[x], 2.5, 1], {x, -\[CapitalDelta]/2, \[CapitalDelta]/2, \[Delta]}, {y, -\[CapitalDelta]/2, \[CapitalDelta]/2, \[Delta]}];
  n = ren + I imn;
  b = -(Flatten[n]^2 - 1) k0^2 Flatten[\[Phi]in]; (*Right-hand side of the equation we want to solve*)
    M = L + DiagonalMatrix[ SparseArray[Flatten[n]^2 k0^2]]; (*Operator on the left-hand side of the equation we want to solve*)
  \[Phi]s = Partition[LinearSolve[M, b], dim]; (*Solve the linear system*)
  
  ImageAdd[
   ArrayPlot[
    Transpose[(Abs[\[Phi]in + \[Phi]s]/Max[Abs[\[Phi]in + \[Phi]s]])^2][[(4 d)/\[Delta] ;; (-4 d)/\[Delta], (4 d)/\[Delta] ;; (-4 d)/\[Delta]]], ColorFunction -> "AvocadoColors" , DataReversed -> True, 
    Frame -> False, PlotRange -> {0, 1}],ArrayPlot[Transpose@Re[(n - 1)/5] , DataReversed -> True , ColorFunctionScaling -> False, ColorFunction -> GrayLevel, Frame -> False]
   ](*Plot everything*)
  , {c, -(\[CapitalDelta]/4) + 0.01, 0, \[CapitalDelta]/(20*3)}];

surface2[x_] := Evaluate[Evaluate[((Sqrt[r^2 - (x)^2] + y0) /. {y0 -> ycenter[[1]]}) /. {y1 -> -(\[CapitalDelta]/4), x1 -> \[CapitalDelta]/2, r -> 5/8 \[CapitalDelta]} ] ];
surface1[x_] := Evaluate[((-Sqrt[r^2 - (x)^2] + y0 - 1) /. {y0 -> ycenter[[2]]}) /. {y1 -> -(\[CapitalDelta]/4), x1 -> \[CapitalDelta]/2, r -> (c^2 + (c \[CapitalDelta])/2 + (5 \[CapitalDelta]^2)/16)/(2 (c + \[CapitalDelta]/4))}];
frames3 = Table[
  ren = Table[If[y < Re@Evaluate[surface2[x]] && y > Re@surface1[x], 2.5, 1], {x, -\[CapitalDelta]/2, \[CapitalDelta]/2, \[Delta]}, {y, -\[CapitalDelta]/2, \[CapitalDelta]/2, \[Delta]}];
  n = ren + I imn;
  b = -(Flatten[n]^2 - 1) k0^2 Flatten[\[Phi]in]; (*Right-hand side of the equation we want to solve*)
  M = L + DiagonalMatrix[SparseArray[Flatten[n]^2 k0^2]]; (*Operator on the left-hand side of the equation we want to solve*)
  \[Phi]s = Partition[LinearSolve[M, b], dim]; (*Solve the linear system*)
  
  ImageAdd[
   ArrayPlot[Transpose[(Abs[\[Phi]in + \[Phi]s]/Max[Abs[\[Phi]in + \[Phi]s]])^2][[(4 d)/\[Delta] ;; (-4 d)/\[Delta], (4 d)/\[Delta] ;; (-4 d)/\[Delta]]], ColorFunction -> "AvocadoColors" , DataReversed -> True, Frame -> False, PlotRange -> {0, 1}],
   ArrayPlot[Transpose@Re[(n - 1)/5] , DataReversed -> True , ColorFunctionScaling -> False, ColorFunction -> GrayLevel, Frame -> False]
   ](*Plot everything*)
  , {c, -(\[CapitalDelta]/4) + 0.01, -\[CapitalDelta]/10, \[CapitalDelta]/(20*3)}];

surface2[x_] := Evaluate[Evaluate[((Sqrt[r^2 - (x)^2] + y0) /. {y0 -> ycenter[[1]]}) /. {y1 -> -(\[CapitalDelta]/4), x1 -> \[CapitalDelta]/2, r -> (c^2 + (c \[CapitalDelta])/2 + (5 \[CapitalDelta]^2)/16)/(2 (c + \[CapitalDelta]/4))} ] ];
surface1[x_] := Evaluate[((-Sqrt[r^2 - (x)^2] + y0 - 1) /. {y0 -> ycenter[[2]]}) /. {y1 -> -(\[CapitalDelta]/4), x1 -> \[CapitalDelta]/2, r -> 109/120 \[CapitalDelta]}];
frames4 = Table[
  ren = Table[If[y < Re@Evaluate[surface2[x]] && y > Re@surface1[x], 2.5, 1], {x, -\[CapitalDelta]/2, \[CapitalDelta]/2, \[Delta]}, {y, -\[CapitalDelta]/2, \[CapitalDelta]/2, \[Delta]}];
  n = ren + I imn;
  b = -(Flatten[n]^2 - 1) k0^2 Flatten[\[Phi]in]; (*Right-hand side of the equation we want to solve*)
  M = L + DiagonalMatrix[SparseArray[Flatten[n]^2 k0^2]]; (*Operator on the left-hand side of the equation we want to solve*)
  \[Phi]s = Partition[LinearSolve[M, b], dim]; (*Solve the linear system*)
  
  ImageAdd[
   ArrayPlot[Transpose[(Abs[\[Phi]in + \[Phi]s]/Max[Abs[\[Phi]in + \[Phi]s]])^2][[(4 d)/\[Delta] ;; (-4 d)/\[Delta], (4 d)/\[Delta] ;; (-4 d)/\[Delta]]], ColorFunction -> "AvocadoColors" , DataReversed -> True, Frame -> False, PlotRange -> {0, 1}], ArrayPlot[Transpose@Re[(n - 1)/5] , DataReversed -> True , ColorFunctionScaling -> False, ColorFunction -> GrayLevel, Frame -> False]
   ](*Plot everything*)
  , {c, 0, -(\[CapitalDelta]/4) + 0.01, -(\[CapitalDelta]/(20*3))}];

surface2[x_] := Evaluate[Evaluate[((Sqrt[r^2 - (x)^2] + y0) /. {y0 -> ycenter[[1]]}) /. {y1 -> -(\[CapitalDelta]/4), x1 -> \[CapitalDelta]/2, r -> 100 \[CapitalDelta]} ] ];
surface1[x_] := Evaluate[((-Sqrt[r^2 - (x)^2] + y0 - 1) /. {y0 -> ycenter[[2]]}) /. {y1 -> -(\[CapitalDelta]/4), x1 -> \[CapitalDelta]/2, r -> (c^2 + (c \[CapitalDelta])/2 + (5 \[CapitalDelta]^2)/16)/(2 (c + \[CapitalDelta]/4))}];
frames5 = Table[
  ren = Table[If[y < Re@Evaluate[surface2[x]] && y > Re@surface1[x], 2.5, 1], {x, -\[CapitalDelta]/2, \[CapitalDelta]/2, \[Delta]}, {y, -\[CapitalDelta]/2, \[CapitalDelta]/2, \[Delta]}];
  n = ren + I imn;
  b = -(Flatten[n]^2 - 1) k0^2 Flatten[\[Phi]in]; (*Right-hand side of the equation we want to solve*)
  M = L + DiagonalMatrix[SparseArray[Flatten[n]^2 k0^2]]; (*Operator on the left-hand side of the equation we want to solve*)
  \[Phi]s = Partition[LinearSolve[M, b], dim]; (*Solve the linear system*)
  
  ImageAdd[
   ArrayPlot[Transpose[(Abs[\[Phi]in + \[Phi]s]/Max[Abs[\[Phi]in + \[Phi]s]])^2][[(4 d)/\[Delta] ;; (-4 d)/\[Delta], (4 d)/\[Delta] ;; (-4 d)/\[Delta]]], ColorFunction -> "AvocadoColors" , DataReversed -> True, Frame -> False, PlotRange -> {0, 1}], ArrayPlot[Transpose@Re[(n - 1)/5] , DataReversed -> True , ColorFunctionScaling -> False, ColorFunction -> GrayLevel, Frame -> False]
   ](*Plot everything*)
  , {c, -\[CapitalDelta]/10, -(\[CapitalDelta]/4) + 0.01, -(\[CapitalDelta]/(20*3))}];

ListAnimate[ Flatten[ Join[Table[frames1[[1]], {5}], frames1, Table[frames2[[1]], {5}], frames2, Table[frames3[[1]], {5}], frames3, Table[frames4[[1]], {5}], frames4, Table[frames5[[1]], {5}], frames5, Table[frames1[[-1]], {5}], Reverse@frames1]] ]

Lisanslama

Ben, bu işin telif sahibi, burada işi aşağıdaki lisans altında yayımlıyorum:
Creative Commons CC-Zero Bu dosya Creative Commons Evrensel Kamu Malı İthafı altındadır.
Bu çalışmayı oluşturan kişi bu senet ile eser hakkında tüm dünya çapında telif hakkı yasaları kapsamında, yasalar tarafından izin verilen ölçülerde ve diğer benzer tüm haklarından feragat etmiş ve kamu malı olarak nitelendirmiştir. Siz bu çalışmayı ve eseri hiç bir izin almadan ticari amaçlar da dahil olmak üzere kopyalayabilir, değiştirebilir ve serbestçe dağıtabilirsiniz.

Altyazılar

Bu dosyanın temsil ettiği şeyin tek satırlık açıklamasını ekleyin.
Visualization of light through a spherical lens

Bu dosyada gösterilen öğeler

betimlenen

11 Mayıs 2021

Dosya geçmişi

Dosyanın herhangi bir zamandaki hâli için ilgili tarih/saat kısmına tıklayın.

Tarih/SaatKüçük resimBoyutlarKullanıcıYorum
güncel11.19, 12 Mayıs 202111.19, 12 Mayıs 2021 tarihindeki sürümün küçültülmüş hâli543 × 543 (6,8 MB)wikimediacommons>BertoUploaded own work with UploadWizard

Aşağıdaki sayfa bu dosyayı kullanmaktadır:

Meta veri