Bảo toàn một đại lượng vật lý khi sử dụng các điều kiện biên Neumann áp dụng cho phương trình khuếch tán tiến


25

Tôi không hiểu hành vi khác nhau của phương trình khuếch tán khi tôi áp dụng các điều kiện biên khác nhau. Động lực của tôi là mô phỏng một đại lượng vật lý thực (mật độ hạt) dưới sự khuếch tán và tiến lên. Mật độ hạt nên được bảo tồn trong phần bên trong trừ khi nó chảy ra từ các cạnh. Theo logic này, nếu tôi thực thi các điều kiện biên của Neumann, các đầu của hệ thống như (ở bên trái và bên phải) thì hệ thống sẽ được "đóng" tức là nếu từ thông ở biên bằng 0 thì không hạt nào có thể thoát ra.ϕx=0

Đối với tất cả các mô phỏng bên dưới, tôi đã áp dụng phương pháp phân biệt Crank-Nicolson cho phương trình khuếch tán tiến và tất cả các mô phỏng đều có điều kiện biên. Tuy nhiên, đối với các hàng đầu tiên và cuối cùng của ma trận (các hàng điều kiện biên) tôi cho phép được thay đổi độc lập với giá trị bên trong. Điều này cho phép các điểm cuối được ẩn hoàn toàn.ϕx=0β

Dưới đây tôi thảo luận về 4 cấu hình khác nhau, chỉ một trong số đó là những gì tôi mong đợi. Cuối cùng, tôi thảo luận về việc thực hiện của tôi.

Chỉ giới hạn khuếch tán

Ở đây các điều khoản tiến lên được tắt bằng cách đặt vận tốc về không.

Chỉ khuếch tán, với β = 0,5 (Crank-Niscolson) tại tất cả các điểm

Chỉ khuếch tán (ranh giới Neumann với beta = 0,5)

Số lượng không được bảo toàn như có thể thấy bằng cách giảm diện tích xung.

Chỉ khuếch tán, với = 0,5 (Crank-Niscolson) tại các điểm bên trong và = 1 (ẩn hoàn toàn) tại các ranh giớiββ

Chỉ khuếch tán (ranh giới Neumann với beta = 0,5 cho nội thất, beta = 1 hoàn toàn ẩn) các ranh giới

Bằng cách sử dụng phương trình hoàn toàn ẩn trên các ranh giới tôi đạt được điều tôi mong đợi: không có hạt nào thoát ra . Bạn có thể thấy điều này bởi khu vực được bảo tồn như là hạt khuếch tán. Tại sao sự lựa chọn tại các điểm biên ảnh hưởng đến vật lý của tình huống? Đây có phải là một lỗi hoặc dự kiến?β

Khuếch tán và thăng tiến

Khi bao gồm thuật ngữ quảng cáo, giá trị của tại các ranh giới dường như không ảnh hưởng đến giải pháp. Tuy nhiên, đối với tất cả các trường hợp khi các ranh giới dường như là "mở", tức là các hạt có thể thoát khỏi các ranh giới. Tại sao điều này là trường hợp?β

Khuyến cáo và khuếch tán với = 0,5 (Crank-Niscolson) tại tất cả các điểmβ

Khuyến khích-Phổ biến (ranh giới Neumann với beta = 0,5)

Lời khuyên và khuếch tán với = 0,5 (Crank-Niscolson) tại các điểm bên trong và = 1 (ẩn hoàn toàn) tại các ranh giớiβββ

Lời khuyên và khuếch tán (ranh giới Neumann với beta = 0,5 cho nội thất, beta = 1 hoàn toàn ẩn) các ranh giới

Thực hiện phương trình khuếch tán

Bắt đầu với phương trình khuếch tán

ϕt=D2ϕx2+vϕx

Viết bằng cách sử dụng Crank-Nicolson,

φjn+1-φjnΔt= =D[1-β(Δx)2(φj-1n-2φjn+φj+1n)+β(Δx)2(φj-1n+1-2φjn+1+φj+1n+1)]+v[1-β2Δx(φj+1n-φj-1n)+β2Δx(φj+1n+1-φj-1n+1)]

Lưu ý rằng = 0,5 cho Crank-Nicolson, = 1 cho hoàn toàn ẩn và, = 0 cho hoàn toàn rõ ràng.beta betaβββ

Để đơn giản hóa ký hiệu, hãy thay thế,

S= =DΔt(Δx)2r= =vΔt2Δx

và di chuyển giá trị đã biết của đạo hàm thời gian sang phía bên phải,φjn

ϕjn+1= =φjn+S(1-β)(φj-1n-2φjn+φj+1n)+Sβ(φj-1n+1-2φjn+1+φj+1n+1)+r(1-β)(φj+1n-φj-1n)+rβ(φj+1n+1-φj-1n+1)

Bao gồm các điều khoản đưa ra,φ

β(rs)ϕj1n+1+(1+2sβ)ϕjn+1β(s+r)ϕj+1n+1Aϕn+1=(1β)(sr)ϕj1n+(12s[1β])ϕjn+(1β)(s+r)ϕj+1nMϕn

mà chúng ta có thể viết dưới dạng ma trận là trong đó,Aϕn+1=Mϕn

A=(1+2sββ(s+r)0β(rs)1+2sββ(s+r)β(rs)1+2sββ(s+r)0β(rs)1+2sβ)

M=(12s(1β)(1β)(s+r)0(1β)(sr)12s(1β)(1β)(s+r)(1β)(sr)12s(1β)(1β)(s+r)0(1β)(sr)12s(1β))

Áp dụng điều kiện biên Neumann

NB đang làm việc thông qua đạo hàm một lần nữa tôi nghĩ rằng tôi đã phát hiện ra lỗi. Tôi đã giả sử một sơ đồ hoàn toàn ẩn ( = 1) khi viết sự khác biệt hữu hạn của điều kiện biên. Nếu bạn giả sử sơ đồ Crank-Niscolson ở đây thì độ phức tạp trở nên quá lớn và tôi không thể giải các phương trình kết quả để loại bỏ các nút nằm ngoài miền. Tuy nhiên, có vẻ như có thể, có hai phương trình với hai ẩn số, nhưng tôi không thể quản lý nó. Điều này có lẽ giải thích sự khác biệt giữa các ô thứ nhất và thứ hai ở trên. Tôi nghĩ rằng chúng ta có thể kết luận rằng chỉ các ô có = 0,5 tại các điểm biên là hợp lệ.βββ

Giả sử từ thông ở phía bên trái được biết (giả sử một hình thức hoàn toàn ẩn),

ϕ1n+1x=σL

Viết điều này như một sự khác biệt trung tâm mang lại,

ϕ1n+1xϕ2n+1ϕ0n+12Δx=σL

do đó, ϕ0n+1=ϕ2n+12ΔxσL

Lưu ý rằng điều này giới thiệu một nút nằm ngoài miền của vấn đề. Nút này có thể được loại bỏ bằng cách sử dụng một phương trình thứ hai. Chúng ta có thể viết nút là,ϕ0n+1j=1

β(rs)ϕ0n+1+(1+2sβ)ϕ1n+1β(s+r)ϕ2n+1=(1β)(sr)ϕj1n+(12s[1β])ϕjn+(1β)(s+r)ϕj+1n

Việc thay thế giá trị của được tìm thấy từ điều kiện biên cho kết quả sau cho hàng = 1,ϕ0n+1j

(1+2sβ)ϕ1n+12sβϕ2n+1=(1β)(sr)ϕj1n+(12s[1β])ϕjn+(1β)(s+r)ϕj+1n+2β(rs)ΔxσL

Thực hiện cùng một quy trình cho hàng cuối cùng (tại = ),jJ

2sβϕJ1n+1+(1+2sβ)ϕJn+1=(1β)(sr)ϕJ1n+(12s(1β))ϕJn+2β(s+r)ΔxσR

Cuối cùng, làm cho các hàng ranh giới ẩn (cài đặt = 1) cho,β

(1+2s)ϕ1n+12sϕ2n+1=ϕj1n+1ϕjn+2(rs)ΔxσL

2sϕJ1n+1+(1+2s)ϕJn+1=ϕJn+2(s+r)ΔxσR

Do đó, với các điều kiện biên Neumann, chúng ta có thể viết phương trình ma trận, ,Aϕn+1=Mϕn+bN

Ở đâu,

A=(1+2s2s0β(rs)1+2sββ(s+r)β(rs)1+2sββ(s+r)02s1+2s)

M=(100(1β)(sr)12s(1β)(1β)(s+r)(1β)(sr)12s(1β)(1β)(s+r)001)

bN=(2(rs)ΔxσL002(s+r)ΔxσR)T

Sự hiểu biết hiện tại của tôi

  • Tôi nghĩ rằng sự khác biệt giữa các ô thứ nhất và thứ hai được giải thích bằng cách lưu ý lỗi được nêu ở trên.

  • Về bảo tồn số lượng vật lý. Tôi tin rằng nguyên nhân là, như đã chỉ ra ở đây , phương trình tiến lên ở dạng tôi đã viết nó không cho phép lan truyền theo hướng ngược lại để sóng chỉ đi qua ngay cả với điều kiện biên không có thông lượng . Trực giác ban đầu của tôi về bảo tồn chỉ được áp dụng khi thời hạn tiến bộ bằng không (đây là giải pháp trong lô số 2 nơi khu vực được bảo tồn).

  • Ngay cả với các điều kiện biên không có thông số Neumann , khối lượng vẫn có thể rời khỏi hệ thống, điều này là do các điều kiện biên chính xác trong trường hợp này là điều kiện biên Robin trong đó tổng thông lượng được chỉ định . Ngoài ra, điều kiện Neunmann chỉ định rằng khối lượng không thể rời khỏi miền thông qua khuếch tán , nó không nói gì về sự tiến bộ. Về bản chất những gì chúng ta đã nghe là các điều kiện biên khép kín để khuếch tán và mở các điều kiện biên để tiến lên. Để biết thêm thông tin, xem câu trả lời ở đây, Thực hiện conditon ranh giới không độ dốc trong phương trình khuếch tán tiếnϕx=0j=Dϕx+vϕ=0.

Bạn có đồng ý không


Có vẻ như các điều kiện biên không được thực hiện chính xác. Bạn có thể chỉ cho chúng tôi cách bạn áp đặt các điều kiện biên?
David Ketcheson

OK Tôi đã cập nhật với việc triển khai và tôi nghĩ rằng tôi đã phát hiện ra lỗi liên quan đến việc áp dụng = 0.5 tại các hàng ranh giới. Tôi đã cập nhật "sự hiểu biết hiện tại" của tôi ở cuối câu hỏi. Bạn có nhận xét gì không? β
boyfarrell

Vậy ... sự rời rạc trên các ranh giới trông như thế nào trong trường hợp ranh giới của Robin? Bạn đã chỉ ra nó cho ranh giới Neumann, nhưng không phải ranh giới Robin.

Câu trả lời:


15

Tôi nghĩ rằng một trong những vấn đề của bạn là (như bạn đã quan sát trong các bình luận của mình) Điều kiện Neumann không phải là điều kiện bạn đang tìm kiếm , theo nghĩa là chúng không ngụ ý bảo tồn số lượng của bạn. Để tìm điều kiện chính xác, hãy viết lại PDE của bạn dưới dạng

ϕt=x(Dϕx+vϕ)+S(x,t).

Bây giờ, thuật ngữ xuất hiện trong ngoặc đơn, là tổng từ thông và đây là đại lượng mà bạn phải đặt về 0 trên các ranh giới để bảo tồn . (Tôi đã thêm vì mục đích chung và cho ý kiến ​​của bạn.) Các điều kiện biên mà bạn phải áp đặt là (giả sử miền không gian của bạn là )Dϕx+vϕ=0ϕS(x,t)(10,10)

Dϕx(10)+vϕ(10)=0

cho bên trái và

Dϕx(10)+vϕ(10)=0

cho bên phải Đây là những điều kiện được gọi là điều kiện biên Robin (lưu ý rằng Wikipedia nói rõ ràng đây là những điều kiện cách điện cho phương trình khuếch tán tiến).

Nếu bạn thiết lập các điều kiện biên này, bạn sẽ có được các thuộc tính bảo tồn mà bạn đang tìm kiếm. Thật vậy, tích hợp trên miền không gian, chúng ta có

ϕtdx=x(Dϕx+vϕ)dx+S(x,t)dx

Sử dụng tích hợp bởi các bộ phận ở phía bên tay phải, chúng ta có

ϕtdx=(Dϕx+vϕ)(10)(Dϕx+vϕ)(10)+S(x,t)dx

Bây giờ, hai thuật ngữ trung tâm biến mất nhờ các điều kiện biên. Tích hợp trong thời gian, chúng tôi có được

0Tϕtdxdt=0TS(x,t)dxdt

nếu chúng ta được phép chuyển đổi hai tích phân đầu tiên ,

ϕ(x,T)dxϕ(x,0)dx=0TS(x,t)dx

Điều này cho thấy rằng miền được cách ly từ bên ngoài. Cụ thể, nếu , chúng ta sẽ bảo tồn .S=0ϕ


Bây giờ tôi nhận ra tại sao nó chỉ hoạt động khi = 0; bởi vì điều này sẽ ngụ ý bảo tồn theo cách tiếp cận của bạn ở trên. Điều gì sẽ dẫn đến hậu quả của việc sử dụng điều kiện biên này ở trên, sóng có phản ánh không? Tôi nghĩ điều này sẽ không thể xảy ra bởi vì không có gì trong phương trình sẽ cho tôi vận tốc âm? v
boyfarrell

Cách tốt nhất để biết có lẽ là thử! Nhưng nếu điều này hoạt động chính xác (và IMO thì đúng), bạn sẽ thấy một lượng định bắt đầu tích lũy ở phía bên trái của miền: sự tiến lên đẩy theo hướng đó nhưng đường biên bị đóng. Sự tích lũy dừng lại khi sự khuếch tán đủ lớn để cân bằng nó. Vì vậy, không nên có sóng phản xạ. φφ
Dr_Sam

@DrSam Chỉ là một câu hỏi liên quan đến việc thực hiện. Tôi hiểu quan điểm của bạn về cách làm cho số lượng bằng không ở phía bên tay trái. Nhưng khi bạn nói "bên phải chỉ là một thuật ngữ ranh giới" thì điều đó có nghĩa là gì? Tôi nghĩ rằng các điều kiện biên nên là Neumann hoặc Dirichlet (hoặc kết hợp cả hai)?
boyfarrell

@boyfarrell Bên trái / phải trong câu trả lời là đề cập đến một dẫn xuất của các điều kiện biên chính xác, chứ không phải cách nó được thực hiện (được chỉnh sửa cho rõ ràng). Điều kiện Robin là điều kiện cổ điển, mặc dù ít được biết đến hơn Dirichlet và Neumann.
Dr_Sam

Vì vậy, liên quan đến việc thực hiện, bạn có nghĩ rằng tôi nên rút ra các điều kiện biên của Robin cho cả hai ranh giới không? Ngoài ra, nếu phương trình có thuật ngữ phản ứng (ví dụ: điều kiện biên có cần bao gồm thuật ngữ này không?
ϕt=x(Dϕx+vϕ)+S(x,t)
boyfarrell
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.