數(shù)值求解波動(dòng)方程 [3]
完美匹配層
????????之前提到的幾種截?cái)喾绞???Dirichlet 邊界,??Neumann 邊界和循環(huán)邊界,? 這幾種截?cái)喾绞蕉加幸粋€(gè)共同特征:? 就是波會(huì)在邊界處反射回來 (循環(huán)邊界可以看作一邊的波被"反射"到另一邊).? 但對(duì)于實(shí)際應(yīng)用來說,? 很多情況下要求邊界不能產(chǎn)生反射,? 以避免反射波對(duì)內(nèi)部區(qū)域造成影響.? 因?yàn)椴淮嬖诜瓷洳?? 對(duì)于內(nèi)部區(qū)域來說,? 波好像消散在無限空間里.
????????有一種實(shí)現(xiàn)無反射"邊界"的技術(shù)叫完美匹配層 (perfectly matched layer),? 簡稱 PML.? 準(zhǔn)確來說這不是一個(gè)邊界條件,? 而是一個(gè)靠近邊界的區(qū)域.? 在對(duì) PML 進(jìn)行展開細(xì)說之前,? 首先要對(duì)波動(dòng)方程進(jìn)行開刀.

? ? ? ? 引入一個(gè)新量 ?使得
,? 代入波動(dòng)方程方程?
得?
,? 即?
.
????????如此一元二階微分方程??分解為二元一階微分方程組
.
????????題外話:? 可以記 ,? 則有
,? 其中
?是反厄米算符.? 一般地,? 如果一個(gè)方程可以寫為
?形式,? 并且
?為反厄米算符,? 那么
?就會(huì)產(chǎn)生 "類波" 解:? 麥克斯韋方程組,? 薛定諤方程,??Lamé-Navier 方程都符合.? 這也是為什么薛定諤方程又叫薛定諤波動(dòng)方程,? 有些人別整天揪著 "薛定諤波動(dòng)方程" 不放了,? 是薛定諤 "波動(dòng)" 方程,? 不是薛定諤 "波動(dòng)方程".

????????PML 背后的思想就是變換坐標(biāo),? 來看看變換坐標(biāo)如何做到 "吸收" 波.
????????定義坐標(biāo)變換?,? 其中
.??當(dāng)?
時(shí),? 坐標(biāo)變換為自身,? 那么?
的圖像可以展示為

????????改變??后可以得到:

????????可以看到波在??的區(qū)域內(nèi)呈指數(shù)下降,? 如同波在這個(gè)區(qū)域內(nèi)被 "吸收" 了一樣.? 實(shí)際上,??
?在施加坐標(biāo)變換
?得到
,? 其中項(xiàng)?
?即表現(xiàn)為指數(shù)衰減.

????????當(dāng)使用 PML 包圍內(nèi)部區(qū)域,? 并且在 PML 外進(jìn)行截?cái)?? 既然波在 PML 區(qū)域內(nèi)呈指數(shù)衰減,? 那么只要 PML 足夠厚,? 波在到達(dá)邊界時(shí)可以變得足夠小,? 即使波在邊界處被反射,? 反射波也無法在內(nèi)部區(qū)域產(chǎn)生足夠大的影響.

????????PML 內(nèi)使用的坐標(biāo)變換稱為 PML 變換.? PML 變換與上面展示的坐標(biāo)變換類似:? 由??得到
.? 在 PML 變換里記
,? 但坐標(biāo)變換為
,? 引入頻率
?的原因是上面求得的衰減項(xiàng)
?與波數(shù)
有關(guān),? 而頻率和波數(shù)又有?
,? 也就是說衰減速度于頻率成正比,? 這會(huì)造成低頻分量無法有效地被吸收.??在引入頻率后對(duì)應(yīng)的衰減項(xiàng)為?
,? 衰減速度與頻率無關(guān).? 為了確保波在 PML 內(nèi)總是衰減的,? 應(yīng)該有
.

????????下面以一維做例子,? 二元一階微分方程組版的一維波動(dòng)方程為 .? 初值條件?
?可以根據(jù)關(guān)系變?yōu)?
.
????????計(jì)算過程以 ?為例:? 在 PML 內(nèi)有?
?和
,? 即
.? 施加 PML 變換?
,? 得到?
,??然后得到?
,? 即
.
????????同理可得?.? 在內(nèi)部區(qū)域里,? 應(yīng)該有
,? 這時(shí) PML 版本波動(dòng)方程退化為普通的波動(dòng)方程,? 而在 PML 區(qū)域內(nèi)則有
.
????????這里選取??作為
?的離散化也不會(huì)造成太大問題 (節(jié)省內(nèi)存),? 那么 PML 版波動(dòng)方程離散化為
.? 并且這種實(shí)現(xiàn)不存在數(shù)值穩(wěn)定的參數(shù)選擇,? 最多只能做到較小的時(shí)間數(shù)值不穩(wěn)定.

????????需要注意的是,? 在連續(xù)波動(dòng)方程里,? PML 是無論??如何選取都是沒有反射波的,? 但離散化后則不是這樣,? 為了確保離散化后的 PML 仍然沒有反射,? 需要滿足
?具有連續(xù)的二階或三階導(dǎo)數(shù).
????????這里介紹一個(gè)常用具有連續(xù)二階導(dǎo)數(shù)的?:? 以右邊界為例,? 假設(shè)
?為 PML,? 那么可以選取?
,? 其中
?為
?的最大值,? 對(duì)于不同位置不同厚度的 PML 可以使用坐標(biāo)變換把這個(gè) σ 映射過去.??剛剛說過,? 盡管 PML 可以快速吸收波,? 但截?cái)嗟倪吔缛詴?huì)產(chǎn)生微小的反射波返回內(nèi)部區(qū)域,? 當(dāng)選取 Dirichlet 或 Neumann 邊值條件時(shí),? 反射波的相對(duì)大小由
給出,? 其中
為 PML 的厚度.? 那么 PML 系統(tǒng)如下圖所示:


????????下面是實(shí)現(xiàn)的效果:

????????一般來說,? s 應(yīng)該選取 40~80,? 這里選 30 只是為了直觀地看到反射波.? 選取太高的值可能會(huì)造成空間數(shù)值不穩(wěn)定,? 如下圖所示


????????代碼:
