มีวิธีใดบ้างในการแก้สมการออยเลอร์แบบกดได้


13

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

ฉันตระหนักถึงการทำลำดับที่ 0 DG (ปริมาณ จำกัด ) และควรทำงานอย่างมีประสิทธิภาพ ฉันใช้ตัวแก้ไข FVM พื้นฐานและใช้งานได้ดี แต่การบรรจบกันค่อนข้างช้า อย่างไรก็ตามนี่เป็นทางเลือกหนึ่งอย่างแน่นอน

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

นอกเหนือจากนั้นมีวิธีการที่แข็งแกร่งอื่น ๆ สำหรับสมการออยเลอร์ (เช่นลำดับ DG ที่สูงขึ้นด้วยการทำให้มีเสถียรภาพ)

ฉันรู้ว่าหลายคนลองใช้สิ่งต่าง ๆ มากมายในรหัสการวิจัยของพวกเขา แต่ฉันสนใจวิธีการที่แข็งแกร่งซึ่งใช้ได้กับรูปทรงเรขาคณิตและเงื่อนไขขอบเขตทั้งหมด (แก้ไข: ในรูปแบบ 2D และ 3D)

คำตอบ:


11

ความยากลำบากเชิงตัวเลขที่สำคัญในการแก้ไขระบบลำดับแรกที่ไม่เชิงเส้นของไฮเพอร์โบลิก PDEs เช่นสมการออยเลอร์ เพื่อจัดการกับเรื่องนี้รหัสที่ทันสมัยที่สุดใช้ทั้งสอง

  • ความลาดชัน (หรือฟลักซ์ ) limitersที่ให้วิธีการคำนวณอนุพันธ์ที่อยู่ใกล้ได้อย่างถูกต้องต่อเนื่องโดยไม่ต้องแนะนำแนบแน่นปลอมนั้น และ
  • นักแก้ปัญหา Riemannโดยประมาณซึ่งอยู่ภายใน (ที่ขอบกริด / ใบหน้าแต่ละพื้นที่) แก้ปัญหาค่าเริ่มต้นด้วยข้อมูลเริ่มต้นค่าคงที่ทีละชิ้นและความไม่ต่อเนื่องเดียว

มีความแตกต่างแน่นอน (FD), ปริมาณ จำกัด (FV), และองค์ประกอบ จำกัด (FE) ที่รวมตัว จำกัด และนักแก้ปัญหา Riemann และทั้งหมดสามารถทำให้มีความแม่นยำสูงอย่างน้อยห่างจากแรงกระแทก ดังนั้นจึงไม่มีความเหมาะสมที่จะพูดอย่างเป็นหมวดหมู่ว่าวิธีการ FE มาบรรจบกันได้เร็วกว่าวิธี FV - พวกมันจะเทียบเคียงกันได้หากใช้การแยกประเภทคำสั่งเปรียบเทียบ

ในบรรดาวิธีการ FE วิธีGalerkin ไม่ต่อเนื่องเป็นวิธีที่เหมาะสมที่สุดที่นี่เนื่องจากวิธีการแก้ปัญหาจะไม่ต่อเนื่อง หากคุณต้องการใช้งานของคุณเองฉันขอแนะนำให้คุณอ่านบทความตรวจสอบนี้และรับสำเนาของข้อความของHesthaven & Warburtonเพื่อทำความเข้าใจพื้นฐาน จากนั้นมีกระดาษจำนวนมากใน DG สำหรับการไหลแบบอัดได้

หากคุณยินดีที่จะใช้รหัสของคนอื่นและเนื่องจากฉันรู้ว่าคุณใช้ Python คุณอาจลองดูรหัส Hedge ของ Andreas Kloecknerซึ่งมีอินเตอร์เฟส Python และสามารถทำงานกับ GPU ได้ อาจมีรหัส DG ที่ดีอื่น ๆ ที่มีอยู่และรหัส FV ที่ดีจำนวนมาก (เช่นClawpackซึ่งมีอินเตอร์เฟส Python )

นอกจากนี้ยังมีวิธีการสั่งซื้อใหม่ที่สูงกว่าเช่นความแตกต่างทางสเปกตรัม สำหรับมุมมองที่ล่าสุดดูCheng & Shu 2009 แบบแผนสั่งซื้อสูงสำหรับ CFD: ทบทวนหรือEkaterinaris ปี 2005 สูงเพื่อความถูกต้องวิธีการแพร่กระจายต่ำตัวเลขสำหรับอากาศพลศาสตร์


ขอบคุณดาวิดโดยเฉพาะอย่างยิ่งสำหรับพอยน์เตอร์ทั้งหมดในเอกสาร FV เป็นเพียงศูนย์สั่ง DG ใช่ไหม? หรือคำสั่งซื้อ FV ที่สูงกว่าแตกต่างจากคำสั่งซื้อ DG อย่างใดอย่างหนึ่งหรือไม่ ฉันต้องการที่จะใช้บางสิ่งบางอย่างด้วยตัวเองเพื่อที่ฉันจะได้เข้าใจว่าเกิดอะไรขึ้น รหัสป้องกันความเสี่ยงดูดี
OndČejČertík

1
FE และ FV มักจะเทียบเท่ากับแผนการสั่งซื้อครั้งแรก โดยทั่วไปแผนการสั่งซื้อที่สูงกว่าจะแตกต่างกันไปและไม่เป็นชุดย่อยของอีกชุด
David Ketcheson

1
คุณสามารถรวมกันในระดับหนึ่งด้วย "reconstruction DG" โดยปกติแล้ว FV จะใช้ฟังก์ชั่นการทดสอบค่าคงที่ทีละชิ้นและสร้างโดยใช้เพื่อนบ้านเพื่อเพิ่มลำดับ โดยปกติใช้พื้นที่ทดสอบที่ตรงกัน (Galerkin) และเพิ่มคำสั่งภายใน โปรดทราบว่า DG ยังคงต้องการตัว จำกัด สำหรับแรงกระแทกที่รุนแรงและจากนั้นจะไม่มีวิธี Galerkin อีกต่อไป การสร้างใหม่ DG ช่วยให้คุณทำทั้งสองอย่าง: เพิ่มคำสั่งซื้อภายในและสร้างใหม่โดยใช้เพื่อนบ้านดังนั้น FV และ DG ทั่วไปจึง จำกัด กรณีและปัญหา
Jed Brown

หากฉันสร้างแบบจำลองระบบทางกายภาพที่ฉันเชื่อด้วยเหตุผลเชิงประจักษ์ไม่แสดงคลื่นความสั่นสะเทือนแล้ววิธีการที่ดีคืออะไร?
sigfpe

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