光在非均匀介质中传播的模拟 | 寒山烟雨
现在的位置: 首页 > 小试身手 > 正文

光在非均匀介质中传播的模拟

2012年06月13日 小试身手 ⁄ 共 1101字 ⁄ 字号 评论 4 条 ⁄ 阅读 6,179 views 次

光线在均匀介质中沿直线传播,在非均匀介质中的传播,则可利用折射定律进行解析求解,而对于较为复杂的情况,可以利用数值方法模拟求解。

具体可以将连续介质离散化,每一小块区间内的折射率近似看作不变,由起始位置开始逐步求出下一点位置,直到终点。当小区间很小时,散点之间的连线近似可看作光线的路径。

此处,对折射率一维线性变化的介质做了一次模拟,折射率仅与y方向上成线性关系。对于其他折射率一维变化的介质只需修改一下折射率函数(Nfun部分)即可,对于二维,乃至三维的情况,需要首先对全空间进行折射率的求解,其过程类似。

 

 Fortran | 
 
 copy code |
?

01
!========================================================================
02
!   FileName: ConsoleApp.f90
03
!     Author: hsyyf
04
!      Email: 931107419@qq.com
05
!   HomePage: http://www.hsyyf.me
06
! LastChange: 2012-06-13 14:35:32
07
!========================================================================
08
PROGRAM Main()
09
IMPLICIT NONE
10
INTEGER,PARAMETER :: N=1000
11
REAL(8) :: y(N),x(N),h,N12(N)
12
INTEGER :: i
13
OPEN(10,FILE='Data.txt')
14
h=0.01d0
15
DO i=0,N
16
    y(i)=i*h
17
ENDDO
18
x(0)=0
19
 
20
CALL Nfun(N,Y,N12)
21
CALL Line(N,x,y,N12,h)
22
 
23
DO i=1,N-1
24
   write(10,*) X(i),Y(i)
25
ENDDO
26
END PROGRAM Main
27
 
28
SUBROUTINE Line(N,x,y,N12,h)
29
REAL(8) :: x(N),y(N),N12(N),h,N1
30
REAL(8) :: pi,delta1,delta2
31
INTEGER :: i
32
x(0)=0.d0
33
pi=3.1415926d0
34
delta1=pi/3.d0
35
DO i=1,N
36
    N1=N12(i)/N12(i-1)
37
    delta2=asin(sin(delta1)/N1)
38
    x(i)=x(i-1)+h*tan(delta2)
39
    delta1=delta2
40
ENDDO
41
END
42
 
43
SUBROUTINE Nfun(N,Y,N12)
44
    REAL(8) :: Y(N),N12(N)
45
    INTEGER :: N,i
46
    DO i=0,N
47
        N12(i)=1+y(i)
48
    ENDDO
49
END

运行结果如图所示,可见,单纯的线性关系,最后导致的结果将使得光线有一个较大的偏折:

0

目前有 4 条留言    访客:3 条, 博主:1 条

  1. reverland 2012年06月18日 上午11:17  @回复  Δ-49楼 回复
    Firefox Firefox GNU/Linux GNU/Linux

    学光学的感觉好亲切啊,虽然什么都看不懂……

  2. maplebeats 2012年06月16日 下午7:49  @回复  Δ-48楼 回复
    Firefox Firefox GNU/Linux GNU/Linux

    从现在开始准备下次考试。。。到底是考四级还是六级呢 :shock:

  3. 冷轩信 2012年06月15日 下午6:13  @回复  Δ-47楼 回复
    Google Chrome Google Chrome Windows Windows

    :evil: :evil: :evil: 留言是种美德,写点什么...


    • 管理员
      hsyyf 2012年06月15日 下午7:32  @回复  ∇地下1层 回复
      UC Browser UC Browser GNU/Linux GNU/Linux

      ???

给我留言

留言无头像?


×