คุณจะแก้จุดบกพร่องรหัสตัวเลขสิ่งที่อาจเป็นแหล่งที่มาของข้อผิดพลาดการแกว่งนี้


16

ความเงียบสงบของความเข้าใจอย่างลึกซึ้งจะได้รับประสบการณ์ในแบบฟอร์มฉันแค่สงสัยว่าถ้าใครเคยเห็นบางสิ่งบางอย่างที่คล้ายกันนี้มาก่อน เนื้อเรื่องแสดงสภาพเริ่มต้น (สีเขียว) สำหรับสมการการแพร่ - การแพร่กระจายแล้วสารละลายที่การวนซ้ำ 200 (สีน้ำเงิน) และอีกครั้งที่การทำซ้ำ 400 (สีแดง)

ข้อผิดพลาดการแกว่ง

คำตอบของสมการการแพร่ - การแพร่กระจายระเบิดขึ้นหลังจากการทำซ้ำสองสามครั้ง จำนวนPéclet และสภาพ CFL เป็นที่พอใจ, C 0.0015ดังนั้นสมการควรจะมีเสถียรภาพ ฉันคาดว่าฉันมีข้อผิดพลาดในรหัสตัวเลขμ0.070.0015

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

คุณจะดีบักรหัสตัวเลขอย่างไร มีใครบางคนเคยทำอะไรแบบนี้มาก่อนจะเป็นที่ไหนดีที่จะเริ่มมองหา?

ปรับปรุง

  • นี่คือบันทึกย่อสไตล์ "หนังสือห้องปฏิบัติการ" ส่วนตัวของฉันเกี่ยวกับการใช้ระเบียบวิธีไฟไนต์วอลลุ่มสำหรับสมการการแพร่ - การแพร่, http://danieljfarrell.github.io/FVM/
  • ซอร์สโค้ดของ Python มีอยู่ที่นี่http://github.com/danieljfarrell/FVM.git

ปรับปรุง

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

×

สมการการแพร่แบบแพร่กระจายที่มีเงื่อนไขขอบเขตปิดด้วยวิธีไฟไนต์วอลลุ่ม


2
คุณกำลังใช้การแยกประเภทแบบใด วิธีการสั่งซื้อคืออะไร? เงื่อนไขขอบเขตของคุณคืออะไร
Geoff Oxberry

ขอบคุณ @GeoffOxberry ฉันได้อัปเดตพร้อมรายละเอียดเพิ่มเติมแล้ว ถึงแม้ว่าจะเข้าใจสิ่งที่ฉันได้ทำจริง ๆ คุณสามารถอ่านบันทึกห้องปฏิบัติการของฉันได้ที่ลิงค์ GitHub ด้านบน
boyfarrell

2
θ=0,0.5,1

1
a=0d<0

คำตอบ:


9

ฉันได้เก็บบางส่วนของประสบการณ์ของผมในการแก้จุดบกพร่องรหัสตัวเลขที่นี่: deal.II คำถามที่พบบ่อย: การแก้จุดบกพร่อง ฉันไม่รู้ว่าสิ่งนั้นจะช่วยคุณในกรณีนี้หรือไม่


สวัสดีลิงค์นั้นพังเมื่อโปรเจ็กต์ย้าย - นี่เป็นลิงก์ที่ถูกต้องหรือไม่ github.com/dealii/dealii/wiki/…
hyperpallium

ใช่นั่นคือสิ่งที่ถูกต้อง ขอบคุณสำหรับการอัปเดตในความคิดเห็นของคุณ!
Wolfgang Bangerth
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.