มีห้องสมุดเอนกประสงค์สำหรับการปรับตารางตาข่ายแบบปรับโครงสร้างหรือไม่?


18

Adaptive mesh refinement (AMR) เป็นเทคนิคที่ใช้กันทั่วไปในการจัดการกับปัญหาของสเกลอวกาศที่หลากหลายในการแก้ปัญหาเชิงตัวเลขของ PDE มีไลบรารีวัตถุประสงค์ทั่วไปสำหรับ AMR บนกริดที่มีโครงสร้างอย่างไร เป็นการดีที่ฉันต้องการบางสิ่งบางอย่างในจิตวิญญาณของ PETSc ที่ห้องสมุดจัดการเพียงตาข่ายแบบปรับตัวและฉันให้ฟิสิกส์และการแยกส่วน (ความแตกต่าง / ปริมาณ / องค์ประกอบ)

ห้องสมุดที่เหมาะจะเป็น

  • แบบแยกส่วน : ไม่บอกว่าฉันจะเขียนรหัสหรือโครงสร้างข้อมูลของฉันมากเกินไป
  • ทั่วไป : ไม่สนใจว่าฉันใช้การแยกประเภทแบบใด
  • มีประสิทธิภาพ : ไม่เสียค่าใช้จ่ายมากเกินไป
  • ขนานและปรับขนาดได้สูง

ไลบรารีที่เหมาะสมกับชุดย่อยของเกณฑ์เหล่านี้จะยังคงเป็นที่สนใจ

ภาคผนวก : ฉันรู้ว่าแพ็คเกจ AMR ที่กว้างขวางของDonna Calhounแต่ฉันไม่รู้ว่าอันไหน (ถ้ามี) ที่ตรงกับเกณฑ์ด้านบน ดังนั้นฉันจึงสนใจที่จะได้ยินจากผู้ที่มีประสบการณ์จริงกับแพ็คเกจเพิ่มเติมหนึ่งหรือ (ยังดีกว่า) แพ็คเกจเกี่ยวกับวิธีที่พวกเขาวัดค่าในเงื่อนไขเหล่านั้น


2
+1 ฉันอยากรู้ว่าซอฟต์แวร์ AMR นั้นมีอะไรบ้างและอยากให้เป็นไปตามเกณฑ์ที่คุณกล่าวไว้ข้างต้น
Geoff Oxberry

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

คำตอบ:


14

ห้องสมุดหนึ่งที่ต้องพิจารณาคือBoxLib คุณสมบัติที่สำคัญ (จากเว็บไซต์) คือ:

  • รองรับ AMR แบบโครงสร้างบล็อกด้วย subcycling ตัวเลือกในเวลา
  • รองรับข้อมูลที่อยู่กึ่งกลางศูนย์กลางและใบหน้าเป็นศูนย์กลาง
  • รองรับการไฮเพอร์โบลิกพาราโบลิกและการรีวงรีบนโครงสร้างกริดแบบลำดับชั้น
  • เวอร์ชัน C ++ และ Fortran90
  • รองรับรูปแบบการเขียนโปรแกรมไฮบริดด้วย MPI และ OpenMP
  • พื้นฐานของการใช้งานที่ครบกำหนดในการเผาไหม้, ฟิสิกส์ดาราศาสตร์, จักรวาลวิทยา, และสื่อที่มีรูพรุน
  • สาธิตการปรับสเกลให้กับโปรเซสเซอร์มากกว่า 200,000 ตัว
  • ผู้ใช้ที่สนใจสามารถใช้ได้อย่างอิสระ
  • นอกจากนี้ยังมีwrapper Python (เขียนโดยฉัน) ถึงเวอร์ชั่น Fortran ที่รวมอยู่ด้วย (แม้ว่ามันจะค่อนข้างเล็ก)


    9

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

    มีวิธี libMesh ในการทำสิ่งต่าง ๆ แต่มี PETSc ในการทำสิ่งต่าง ๆ เช่นกัน หวังว่าคงไม่ทำให้คุณกลัว


    4

    ฉันจะลองใช้SAMRAIฉันรู้รหัสอย่างน้อยหนึ่งรหัสที่ใช้กับความสำเร็จ - IBAMRซึ่งเป็นรหัสวิธีการแช่สำหรับการโต้ตอบโครงสร้างของไหลกับ AMR


    ขอบคุณ Johntra (และยินดีต้อนรับสู่ scicomp)! คุณรู้ถึงความแตกต่างสำคัญระหว่าง SAMRAI และ BoxLib หรือไม่? นอกจากนี้คุณสามารถใช้ลิงก์แบบอินไลน์โดยใส่ข้อความลิงก์ใน [] และปลายทางใน ()
    Aron Ahmadia

    น่าเสียดายที่ฉันไม่ - ตามข้อเท็จจริงฉันเพิ่งได้ยินเกี่ยวกับมัน (BoxLib) เป็นครั้งแรกนั่นคือเหตุผลที่ฉันตัดสินใจเข้าร่วม - เพื่อเรียนรู้ smt ใหม่โดยการพูดคุยอย่างไม่เป็นทางการกับพวกคุณ - ขอบคุณ
    Johntra Volta

    ฉันจะ SAMRAI ที่สองเป็นกรอบวัตถุประสงค์ทั่วไปที่มีประโยชน์มากสำหรับ AMR ฉันยังชอบไฮบริด C ++ / Fortran ที่ออกแบบมาเพื่อประโยชน์ของผู้เขียน เมล็ดคำนวณสามารถเขียนได้ใน Fortran ตามที่ควรจะเป็นและคลาส C ++ จะให้สิ่งที่เป็นนามธรรมทั้งหมดที่จำเป็นต่อการซ่อน MPI ภายในและการจัดการหน่วยความจำ
    talonmies

    @AronAhmadia: BoxLib ไม่สามารถจัดการกับการประมาณค่าเชิงเส้นแบบชิ้นเดียวกับการเปลี่ยนขอบเขต Dirichlet ใน Multigrid ที่มีศูนย์กลางทางเรขาคณิตของเซลล์ คิดว่าจะเพิ่มเป็นจุดที่น่าสนใจ
    Gaurav Saxena

    2

    คุณไม่ได้ระบุโครงสร้างหรือไม่มีโครงสร้าง

    ลองดูที่ Paramesh, Pyramid, p4est, Dendro, Samrai และ Chombo

    Btw Pyramid ไม่ได้ทำให้หยาบ


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