Re: [問題] 練習用FDTD算波動方程式

看板Physics作者 (凱西豬)時間13年前 (2010/10/22 19:46), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/4 (看更多)
1. dx/dt 是可以設為定值拉 我是建議先從一維開始 入射波先設時間函數 像指數遞減 或正漩波 邊界 你先用簡單的那幾個 先光打到它會吸收 在考慮放介質 介質的表現 就是放在u(x)的前面 像C(x)*u(x) 然後先考慮不會lossy的材質 OK以後 2. 用TFSF的方式 放入射光進去 邊界 先改成PML 材質用lossy的 像是Drude model 補介電函數的方式 有RC , ADE,PLRC 先用RC吧 RC=recursive convolution method 學DFT 把時域轉成頻域 模擬結果 跟入設無窮大平面厚度d也是drude色散的反射 透設 吸收對照 3. 用一樣的方式 做2D 三D也是 加油 GOOD LUCK 軟體先用Matlab吧 直接觀察波型 ※ 引述《DevilsCrying (空的腦袋 Sora no Adama)》之銘言: : Hi 各位 : 最近在練習用FDTD解波動方程式,邊界條件為Dirichlet B. C. : 而初始條件為一個由左向右入射的 Gaussian Wave Packet : 我碰到一些狀況,比方說, : 1.波包移動時並不會維持其形狀 : 後來這個問題利用CFL Condition解決了,但是.... : 2.不知道Initial Condition怎麼設 : 用來疊代的式子是 : u(i,j)=((c*t/d)^2)*(u(i-1,j-1)+u(i-1,j+1)-2*u(i-1,j))+2*u(i-1,j)-u(i-2,j) : i跟j分別代表時間跟空間的grid numbers,c是波速, : t跟d則分別是時間跟空間的小切割 : 我的初始條件可以設成 u(0,j)=Gaussian Wave Packet G(x-a) : 但是u(1,j)該怎麼設呢? : 我一開始先設u(0,j)=0然後u(1,j)=G(x-a) : 結果那個波包會先像分身術一樣跑出好幾個分身在一起維持形狀移動 : 後來設u(0,j)=G(x-a), u(1,j)=G(x-a-d) : 就成功弄出一個形狀不變且向右移動的波包,而且碰到左右邊界會反彈 : 反彈也有相位差180度,自己非常滿意。 : 3.但是當我想考慮入射到不同介質時,卻不行了。 : 假設左半邊的波速c1而右半邊的波速c2 : 我想觀察波包部分反射部分穿透的現象, : 首先,我的做法是配合CFL Condition讓左右兩邊的((c*t/d)^2)都等於1 : 有就是說 在t不變的情況下 改變d去配合c : 但是顯而易見的 這樣對我的波的行為 沒有任何改變 : 再來,我假設t跟d都固定,單純讓兩邊有不同的c : 結果波包會反射也有穿透, : 但是反射跟穿透波都不再是Gaussian Wave Packet : 當然反射波在左邊可以維持形狀傳遞 : 但是穿透波就無法維持形狀在右邊傳遞了 : 所以,關於上述3點,小弟想請教有經驗的人下列幾點 : 1.空間跟時間的小切割一定都要綁在一起,這樣合理嗎? 有其他方法可以解套嗎? : 2.一般前兩個時間點的波形要怎麼設? 我這樣設是唯一的方法嗎? : 3.兩種介質的問題,到底要如何解決? : 我這些問題應該跟用哪一種軟體寫程式應該無關吧 @@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.102.181

10/24 20:02, , 1F
感謝你阿 我再揣摩一下
10/24 20:02, 1F
文章代碼(AID): #1CmNc9C0 (Physics)
討論串 (同標題文章)
文章代碼(AID): #1CmNc9C0 (Physics)