ข้อผิดพลาดที่แปลกประหลาดเมื่อแก้ไขสมการปัวซองบนตาข่ายที่ไม่สม่ำเสมอ (1D เท่านั้น) วิธีปริมาตร จำกัด


9

ฉันพยายามแก้ไขข้อผิดพลาดนี้เมื่อไม่กี่วันที่ผ่านมาฉันสงสัยว่าใครมีคำแนะนำในการดำเนินการต่อ

ฉันกำลังแก้สมการปัวซองสำหรับการกระจายประจุแบบขั้นตอน (ปัญหาทั่วไปใน electrostatics / เซมิคอนดักเตอร์ฟิสิกส์) บนตาข่ายปริมาณ จำกัด แบบไม่สม่ำเสมอที่ไม่ทราบค่าจะถูกกำหนดบนศูนย์เซลล์และฟลักซ์บนใบหน้าเซลล์

0=(ϕx)x+ρ(x)

โปรไฟล์การเรียกเก็บเงิน (คำที่มา) ได้รับจาก

ρ(x)={1,if 1x01,if 0x10,otherwise

และเงื่อนไขขอบเขตคือ

ϕ(xL)=0ϕx|xR=0

และโดเมนคือ [10,10].

ฉันใช้รหัสที่พัฒนาขึ้นเพื่อแก้สมการการแพร่ - ปฏิกิริยาการแพร่ (ฉันได้เขียนตัวเองดูบันทึกของฉันที่นี่http://danieljfarrell.github.io/FVM ) สมการปฏิกิริยาการแพร่ - การแพร่กระจายเป็นกรณีทั่วไปของสมการปัวซอง อันที่จริงสมการของปัวซองนั้นสามารถกู้คืนได้โดยการตั้งค่าความเร็วการไหลเวียนให้เป็นศูนย์และลบเทอมชั่วคราว

รหัสได้รับการทดสอบกับหลาย ๆ สถานการณ์สำหรับกริดสม่ำเสมอสม่ำเสมอและสุ่มและสร้างวิธีแก้ปัญหาที่สมเหตุสมผลเสมอ ( http://danieljfarrell.github.io/FVM/examples.html ) สำหรับสมการการแพร่ - ปฏิกิริยาการแพร่กระจาย

เมื่อต้องการแสดงตำแหน่งที่รหัสหยุดฉันได้ทำตัวอย่างต่อไปนี้ การตั้งค่าฉันเครื่องแบบตาข่าย 20 เซลล์แล้วทำให้มันไม่สม่ำเสมอโดยการเอาเซลล์เดียว ในรูปซ้ายฉันได้ลบเซลล์Ω8 และในด้านขวา Ω9ถูกลบแล้ว เซลล์ที่ 9 ครอบคลุมภูมิภาคที่มีการเปลี่ยนแปลงคำที่มา (เช่นค่าธรรมเนียม) ข้อผิดพลาดจะปรากฏขึ้นเมื่อกริดเป็น nonuniform ในภูมิภาคท ตามที่คุณเห็นด้านล่าง

ความคิดเห็นใดที่อาจเป็นสาเหตุของปัญหานี้ แจ้งให้เราทราบหากข้อมูลเพิ่มเติมเกี่ยวกับการแยกออกจะเป็นประโยชน์ (ฉันไม่ต้องการบรรจุรายละเอียดมากเกินไปในคำถามนี้)

ข้อผิดพลาดที่แปลกประหลาดเมื่อแก้ไขสมการปัวซอง


คุณสามารถระบุวิธีกำหนดเงื่อนไข Dirichlet ได้ที่ x=0และสิ่งที่คุณหมายถึง ρ=1เป็นเงื่อนไขเริ่มต้น (ไม่ใช่สมการที่คุณระบุสถานะคงที่) หรือไม่
Jesse Chan

เทอมปฏิกิริยามีหน้าตาเป็นอย่างไร?
Jan

คุณใช้โครงร่างใดเพื่อประมาณอินทิเกรตของคำที่มา? พฤติกรรมนี้อาจเกิดจากการสุ่มตัวอย่างแหล่งที่มาไม่เพียงพอ (สิ่งที่อาจจะเป็นกลไกเดียวกันที่ระบุไว้ในคำตอบ @JLC 's.)
ม.ค.

ฉันได้อัปเดตคำถามเพื่อใช้คำศัพท์มาตรฐาน ฉันมีคำที่มา (ρ) ไม่ใช่คำตอบเนื่องจากคุณชี้ให้เห็นว่าเราแค่ต้องการค่าคงที่ การพึ่งพาเชิงพื้นที่ที่ถูกต้องของρได้รับตอนนี้ (ค่าเริ่มต้นไม่ถูกต้อง)
boyfarrell

@JLC Dirichlet BCs ถูกกำหนดโดยใช้วิธีเซลล์ผี (บันทึกย่อของฉันออนไลน์ล้าสมัยเกี่ยวกับรายละเอียดการใช้งานนี้) ดูที่นี่สำหรับวิธีที่ฉันทำscicomp.stackexchange.com/questions/8538/…
boyfarrell

คำตอบ:


9

เช่นเดียวกับเอกสาร GitHub ของคุณที่ยอดเยี่ยม

นี่เป็นเพียงการเดาจากวิธีการของ DG ซึ่งอาจมีปัญหาที่คล้ายกันหากไม่ได้เลือกฟลักซ์เชิงตัวเลขอย่างระมัดระวัง (ฉันคิดว่าวิธี FV เป็นส่วนย่อยของวิธีการแบบ DG) หากคุณกำลังใช้การแก้ไขจากศูนย์เซลล์เพื่อกำหนดฟลักซ์ของคุณนี่ควรเทียบเท่ากับการใช้ค่าเฉลี่ยเป็นฟลักซ์ตัวเลขใน DG และใช้ค่าคงที่แบบทีละชิ้น สำหรับวิธีการมาตรฐาน DG สำหรับปัวซองสิ่งนี้นำไปสู่การแก้ปัญหาที่ไม่ซ้ำกันเชิงตัวเลข - คุณสามารถรับพื้นที่ว่างที่ไม่สำคัญสำหรับผู้ประกอบการที่ไม่ต่อเนื่องซึ่งฉันคิดว่าเป็นสาเหตุของปัญหาของคุณในตัวอย่างที่ 2 ดูกระดาษ DG นี้สำหรับทฤษฎีของพวกเขาจากด้าน DG

ฉันจะพยายามจำลองตัวอย่างสำหรับ FV ซึ่งแสดงให้เห็นว่าสิ่งนี้เกิดขึ้นได้อย่างไร

แก้ไข: ดังนั้นนี่เป็นตัวอย่างเล็ก ๆ ของสิ่งที่เกิดขึ้น พิจารณาเซลล์ที่ 1-9 และ 11-20ρ(x)=0. จากด้านขวา (11-20) เรามีf(x20)=0 เนื่องจากสภาพนอยมันน์ซึ่งบอกเราจากการอนุรักษ์เซลล์นั้น f(x19)==f(x11)=0. เนื่องจากฟลักซ์เป็นค่าเฉลี่ยของเซลล์จึงบอกเราว่าϕ(x) มีค่าคงที่ตลอดเซลล์เหล่านี้

จากด้านซ้าย (1-9) เรามี f(xi+1)f(xi)=0. ถ้าf(10)=0 และเราใช้เซลล์ผีแล้ว f(10)=ϕ9.5ϕghost=ϕ9.5. การอนุรักษ์ในอีกไม่กี่เซลล์ต่อไปจะช่วยให้f(xi)=f(10)=ϕ9.5(เช่นความชันคงที่) อย่างไรก็ตามโปรดทราบว่านี่อาจเป็นความชันใด ๆ เพียงคงที่

ปัญหาเกิดขึ้นในเซลล์ตรงกลาง เช่นเดียวกับ Jan ที่กล่าวถึงคุณขีดเส้นใต้บังคับในตาข่ายที่สอง สิ่งนี้จะทำให้สมการสมดุล ณ จุดนั้นทำให้คุณมีข้อผิดพลาดf(10)ซึ่งแพร่กระจายไปข้างหลังและทำให้ความลาดเอียงทั้งสองด้านในครึ่งซ้ายของโดเมนรวมถึงค่าของ ϕ(9.5).

ความไวต่อข้อผิดพลาดในการบังคับใช้นี้เป็นสิ่งที่เป็นปัญหา - ซึ่งแตกต่างจากวิธี FEM หรือ FD ซึ่งบังคับใช้เงื่อนไข Dirchlet อย่างชัดเจนที่ x=10, FV บังคับให้มันอ่อนลงโดยใช้โหนดผี โดยสัญชาตญาณการสร้างความอ่อนแอของโหนดผีก็เหมือนกับการตั้งเงื่อนไขของ Neumann ที่ขอบเขตซ้ายของคุณเช่นกัน หากคุณมีสองเงื่อนไขของนอยมันน์สำหรับปัญหาการแพร่กระจายปัญหาของคุณจะไม่ดีและมีวิธีแก้ปัญหาที่ไม่ซ้ำกัน (คุณสามารถเพิ่มค่าคงที่ให้กับปัญหานั้นและยังมีวิธีแก้ไข) คุณไม่ค่อยได้รับสิ่งนั้นในระดับที่ไม่ต่อเนื่องที่นี่ แต่คุณจะได้รับพฤติกรรมที่ละเอียดอ่อนและขึ้นอยู่กับตาข่ายอย่างที่คุณเห็นในการทดลองของคุณ


จากการทดลองฉันสามารถแสดงให้เห็นว่าวิธีการ FVM นั้นมีความเสถียรเมื่อเซลล์ทั้งสองด้านของความไม่ต่อเนื่อง (การเปลี่ยนเครื่องหมาย) ของฟังก์ชันต้นทางมีปริมาตรเท่ากัน การวิเคราะห์ของคุณจะเห็นด้วยกับเรื่องนี้? ซึ่งหมายความว่าฉันต้องให้ความสำคัญกับการสร้างตารางที่เหมาะสมของปัญหาที่ฉันได้ทำมาก่อน บางทีฉันควรพิจารณาเรียนรู้วิธีการ FEM ต่อไปหรือไม่
boyfarrell

บทความที่เกี่ยวข้องถึงแม้ว่าฉันจะไม่ได้ติดตามรายละเอียดทั้งหมดjstor.org/discover/10.2307/2157873
boyfarrell

วิธีการ FVM นั้นจะเสถียรในกรณีนี้เมื่อกริดสอดคล้องกับฟังก์ชั่นของแหล่งข้อมูลอย่างใด หากฟังก์ชั่นต้นทางเปลี่ยนไปคุณจะต้องปรับกริดของคุณอีกครั้ง ฉันไม่คิดว่าการสร้างกริดที่สมเหตุสมผลเป็นวิธีการที่เหมาะสมสำหรับปัญหานี้ - คุณมีวิธีที่ไม่เสถียร
Jesse Chan

นั่นเป็นการค้นพบที่ดี Suli เป็นนักวิเคราะห์ที่แข็งแกร่ง ฉันจะบอกว่าการเรียนรู้ FEM อาจจะสนุก แต่ FD ก็ควรทำงานกับปัญหา 1D รูปไข่ด้วยเช่นกัน คุณอาจเห็นสิ่งที่คน FV ทำ (อาจเพิ่มฟลักซ์ของพวกเขาด้วยเงื่อนไขการลงโทษ) เพื่อรับการบรรจบกันสำหรับปัญหารูปไข่ลำดับที่ 2 ในกริดทั่วไป ปัญญาชนทางคณิตศาสตร์มักบอกว่า FV / upwinded FD นั้นยอดเยี่ยมสำหรับปัญหาไฮเพอร์โบลิกในขณะที่ FEM / central diff FD นั้นยอดเยี่ยมสำหรับรูปไข่
Jesse Chan

ฉันกำลังแก้ไขปัญหานี้ อ่านคำตอบของคุณอีกครั้งฉันต้องบอกว่ามันสุดยอดมาก! ฉันเห็นประเด็นของคุณว่าวิธีการควรเปลี่ยนเพราะนั่นคือรากของปัญหา (ไม่ใช่ตาราง) คุณมีข้อเสนอแนะหรือสิ่งใดที่ฉันสามารถติดตามได้ (ซึ่งเป็นที่ยอมรับโดยผู้เชี่ยวชาญ) ในการประมาณฟลักซ์ในกรณีนี้ให้ดีขึ้น นั่นคือวิธีที่อาจทำให้มีเสถียรภาพมากขึ้น ถ้าเป็นไปได้ฉันต้องการหา FVM ที่ดีกว่าสำหรับสมการนี้
boyfarrell

0

สิ่งแรกที่ต้องสังเกตคือเงื่อนไขขอบเขตของคุณ เนื่องจากคุณสามารถเปลี่ยนความชันและค่าได้คุณจึงไม่มีเงื่อนไขของดีริชเลต์และนูแมนแมน

จากนั้นเส้นตรงทุกเส้นจะเป็นคำตอบที่ด้านขวามือเป็นศูนย์ คุณได้ส่วนนั้น

ฟลักซ์ของคุณอาจขึ้นอยู่กับ h. คุณใช้ถูกต้องหรือไม่h คุณกำจัดเซลล์ที่ไหน?


1
ไม่นั่นไม่ถูกต้อง ปัญหาถูกวางอย่างดี สำหรับกรณีρ0 เท่านั้น ϕ0เป็นวิธีการแก้ปัญหาไม่มีฟังก์ชั่นเชิงเส้นอื่น ๆ ที่เป็นศูนย์ ณ จุดหนึ่งและมีความชันเป็นศูนย์ที่จุดที่สอง
Jan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.