ข้ามไปที่เนื้อหา

ระบบหมายเลของค์ประกอบและไลบรารีฟังก์ชันรูปร่าง

ฟังก์ชันรูปร่าง \(N_\alpha^e(\boldsymbol{r})\) ที่แนะนำใน ฟังก์ชันรูปร่างและการประมาณด้วยไฟไนต์เอลิเมนต์ มีรูปเฉพาะแตกต่างกันตามชนิดองค์ประกอบ บทนี้จัดประเภทกลุ่มองค์ประกอบที่ FrontISTR มีให้ด้วยหมายเลขชนิดองค์ประกอบ 3 หลัก และแสดงอินเทอร์เฟซของไลบรารีฟังก์ชันรูปร่างเพื่อให้จัดการองค์ประกอบแต่ละชนิดได้แบบเดียวกัน ระบบพิกัดธรรมชาติและรูปเฉพาะของฟังก์ชันรูปร่างขององค์ประกอบโซลิดสามมิติ รวมถึงการแปลงลำดับโหนดกลางขององค์ประกอบอันดับสอง อธิบายใน ฟังก์ชันรูปร่างขององค์ประกอบโซลิดสามมิติ ส่วนแนวทางเลือกชนิดองค์ประกอบอยู่ที่ ไลบรารีองค์ประกอบ (ฟังก์ชัน)

การจัดประเภทองค์ประกอบและกฎการตั้งชื่อ

ชนิดองค์ประกอบของ FrontISTR ระบุด้วยหมายเลข 3 หลัก ความหมายของแต่ละหลักมีดังนี้

  • หลักที่ 1 (กลุ่มองค์ประกอบ): 1=องค์ประกอบเส้น/ทรัส, 2=องค์ประกอบระนาบ, 3=องค์ประกอบโซลิด, 5=องค์ประกอบอินเทอร์เฟซ, 6=องค์ประกอบคาน, 7=องค์ประกอบเชลล์
  • หลักที่ 2 (รูปร่างพื้นฐาน): ใช้แยกรูปร่างเรขาคณิตภายในกลุ่มองค์ประกอบ (สามเหลี่ยม สี่เหลี่ยม เตตระฮีดรอน ปริซึมสามเหลี่ยม และเฮกซะฮีดรอน)
  • หลักที่ 3 (อันดับการอินเตอร์โพเลต): 1=อันดับหนึ่ง (เฉพาะโหนดมุม), 2=อันดับสอง (รวมโหนดกลาง) ข้อยกเว้นคือองค์ประกอบทรัส 2 โหนดใช้หมายเลข 301

ตารางต่อไปนี้แสดงองค์ประกอบที่มีให้ แยกตามกลุ่มองค์ประกอบ

กลุ่มองค์ประกอบ ชนิดองค์ประกอบ จำนวนโหนด คำอธิบาย
องค์ประกอบเส้น 111 2 องค์ประกอบลิงก์ 2 โหนด (ใช้ในการวิเคราะห์ความเค้นไม่ได้)
112 3 องค์ประกอบลิงก์ 3 โหนด (ใช้ในการวิเคราะห์ความเค้นไม่ได้)
องค์ประกอบระนาบ 231 3 องค์ประกอบสามเหลี่ยมอันดับหนึ่ง
232 6 องค์ประกอบสามเหลี่ยมอันดับสอง
241 4 องค์ประกอบสี่เหลี่ยมอันดับหนึ่ง
242 8 องค์ประกอบสี่เหลี่ยมอันดับสอง (ตระกูล Serendipity)
องค์ประกอบโซลิด 301 2 องค์ประกอบทรัส 2 โหนด
341 4 องค์ประกอบเตตระฮีดรอนอันดับหนึ่ง
342 10 องค์ประกอบเตตระฮีดรอนอันดับสอง
351 6 องค์ประกอบปริซึมสามเหลี่ยมอันดับหนึ่ง
352 15 องค์ประกอบปริซึมสามเหลี่ยมอันดับสอง
361 8 องค์ประกอบเฮกซะฮีดรอนอันดับหนึ่ง
362 20 องค์ประกอบเฮกซะฮีดรอนอันดับสอง (ตระกูล Serendipity)
องค์ประกอบอินเทอร์เฟซ 541 4×2 องค์ประกอบผิวสี่เหลี่ยมอันดับหนึ่ง (ใช้ในการวิเคราะห์ความเค้นไม่ได้)
542 8×2 องค์ประกอบผิวสี่เหลี่ยมอันดับสอง (ใช้ในการวิเคราะห์ความเค้นไม่ได้)
องค์ประกอบคาน 611 2 องค์ประกอบคาน Bernoulli-Euler 2 โหนด (6 องศาอิสระต่อโหนด)
641 2×2 องค์ประกอบคาน Bernoulli-Euler 2 โหนด (3 องศาอิสระต่อโหนด สำหรับองศาอิสระแบบผสม)
องค์ประกอบเชลล์ 731 3 องค์ประกอบเชลล์สามเหลี่ยม MITC3 (6 องศาอิสระต่อโหนด)
741 4 องค์ประกอบเชลล์สี่เหลี่ยม MITC4 (6 องศาอิสระต่อโหนด)
743 9 องค์ประกอบเชลล์สี่เหลี่ยม MITC9 (6 องศาอิสระต่อโหนด)
761 3×2 องค์ประกอบเชลล์สามเหลี่ยม MITC3 (3 องศาอิสระต่อโหนด สำหรับองศาอิสระแบบผสม)
781 4×2 องค์ประกอบเชลล์สี่เหลี่ยม MITC4 (3 องศาอิสระต่อโหนด สำหรับองศาอิสระแบบผสม)

องค์ประกอบเฮกซะฮีดรอนอันดับหนึ่ง 361 มีหลายสูตร (การอินทิเกรตเต็มรูปแบบ, โหมดอินคอมแพทิเบิล, B-bar และ F-bar) ซึ่งเลือกผ่านข้อมูลควบคุมการวิเคราะห์ รายละเอียดดูที่ สูตรองค์ประกอบขั้นสูง

องค์ประกอบคาน 641 และองค์ประกอบเชลล์ 761/781 เป็นสูตรสำหรับเชื่อมองค์ประกอบโครงสร้างที่มี 6 องศาอิสระเข้ากับองค์ประกอบโซลิดที่มี 3 องศาอิสระที่โหนดเดียวกัน โดยแทนโหนดโครงสร้างหนึ่งโหนดด้วยโหนด 3 องศาอิสระสองโหนด สูตรเองเหมือนกับรุ่น 6 องศาอิสระที่สอดคล้องกัน (611, 731 และ 741)

ไลบรารีฟังก์ชันรูปร่าง

รูทีนคำนวณองค์ประกอบ (การสร้างเมทริกซ์ความแข็งและเวกเตอร์แรงภายใน) ไม่ได้มีรูทีนแยกสำหรับแต่ละชนิดองค์ประกอบ แต่เรียกไลบรารีฟังก์ชันรูปร่างผ่านอินเทอร์เฟซรวมที่รับหมายเลขชนิดองค์ประกอบ fetype เป็นอาร์กิวเมนต์ โมดูล elementInfo (fistr1/src/lib/element/element.f90) ให้ฟังก์ชันต่อไปนี้

  • NumOfQuadPoints(fetype): คืนค่าจำนวนจุดอินทิเกรต \(n_q\) สำหรับชนิดองค์ประกอบ
  • getQuadPoint(fetype, np, pos): คืนค่าพิกัดธรรมชาติ \(\boldsymbol{r}_i\) ของจุดอินทิเกรต \(i\)
  • getWeight(fetype, np): คืนค่าน้ำหนัก \(w_i\) ของจุดอินทิเกรต \(i\)
  • getShapeFunc(fetype, r, N): คืนค่าฟังก์ชันรูปร่าง \(N_\alpha^e(\boldsymbol{r})\) ที่พิกัดธรรมชาติ \(\boldsymbol{r}\)
  • getShapeDeriv(fetype, r, dN): คืนค่าอนุพันธ์ตามพิกัดธรรมชาติ \(\partial N_\alpha^e/\partial \boldsymbol{r}\) ของฟังก์ชันรูปร่าง
  • getGlobalDeriv(fetype, n_e, r, X^e, J, dN_x): เมื่อให้พิกัดโหนดขององค์ประกอบ \(\boldsymbol{X}^e\) จะคืนค่าอนุพันธ์ตามพิกัดกายภาพ \(\partial N_\alpha^e/\partial \boldsymbol{x}\) และดีเทอร์มิแนนต์จาโคเบียน \(J\)
  • getNumberOfSubface(fetype), getSubFace(fetype, k, ...): คืนค่าจำนวนผิวขอบเขตขององค์ประกอบและหมายเลขโหนดที่ประกอบเป็นแต่ละผิว ใช้ในการสร้างโหลดบนผิวและผิวสัมผัส

แต่ละฟังก์ชันจะแยกการทำงานภายในตามหมายเลขชนิดองค์ประกอบ แล้วเรียกซับรูทีนฟังก์ชันรูปร่างและอนุพันธ์ของฟังก์ชันรูปร่างในโมดูลระดับล่างที่เตรียมไว้สำหรับแต่ละชนิดองค์ประกอบ (tet4n.f90, tet10n.f90, prism6n.f90, prism15n.f90, hex8n.f90, hex20n.f90, tri3n.f90, tri6n.f90, quad4n.f90, quad8n.f90, quad9n.f90, line2n.f90, line3n.f90) ตารางตัวเลขของพิกัดจุดอินทิเกรตและน้ำหนักรวมอยู่ใน quadrature.f90 เมื่อต้องการเพิ่มชนิดองค์ประกอบใหม่ ให้ติดตั้งโมดูลระดับล่างที่สอดคล้องกันแล้วเพิ่มสาขาการทำงานในแต่ละฟังก์ชันของ elementInfo

การแปลงลำดับโหนดกลางขององค์ประกอบสามเหลี่ยมอันดับสอง

สำหรับองค์ประกอบสามเหลี่ยมอันดับสอง 232 ลำดับโหนดกลางในรูปแบบอินพุตเมช HEC-MW (ที่เรียงโหนดมุมรอบองค์ประกอบก่อน แล้วจึงโหนดกลางตามขอบ 1-2, 2-3, …) ต่างจากรูปแบบภายใน FrontISTR ที่ฟังก์ชันรูปร่างในไลบรารีองค์ประกอบสมมติไว้ ความแตกต่างนี้ถูกแก้ทันทีหลังอ่านเมช โดย hecmw2fstr_mesh_conv (fistr1/src/common/hecmw2fstr_mesh_conv.f90 และ hecmw2fstr_connect_conv.c) เรียงโหนดทั้งหกใหม่เป็น \(\{1,2,3,6,4,5\}\) ตามตารางแปลง Table232 เนื่องจากการแปลงทำโดยตรงกับอาร์เรย์ที่เก็บข้อมูลการเชื่อมต่อองค์ประกอบ การเรียกไลบรารีองค์ประกอบหลังจากนั้นทั้งหมดจึงใช้ลำดับโหนดภายในของ FrontISTR เมื่อส่งออกผลลัพธ์ จะใช้การแปลงย้อนกลับ fstr2hecmw_mesh_conv คืนเป็นรูปแบบ HEC-MW ก่อนเขียนออก ดังนั้นทั้งอินพุตและเอาต์พุต ผู้ใช้จำเป็นต้องคำนึงถึงเฉพาะรูปแบบ HEC-MW

องค์ประกอบโซลิดสามมิติ 342 (เตตระฮีดรอนอันดับสอง) และ 352 (ปริซึมสามเหลี่ยมอันดับสอง) มีการแปลงอัตโนมัติในลักษณะเดียวกัน ส่วน 362 (เฮกซะฮีดรอนอันดับสอง) ไม่มีการแปลง สำหรับรายละเอียดการจัดการดู ฟังก์ชันรูปร่างขององค์ประกอบโซลิดสามมิติ สำหรับองค์ประกอบระนาบสี่เหลี่ยมอันดับสอง 242 และองค์ประกอบอินเทอร์เฟซ 542 ไม่มีการแปลง เพราะลำดับโหนดกลางในรูปแบบอินพุต HEC-MW ตรงกับรูปแบบภายใน

หัวข้อที่เกี่ยวข้อง

AI-assisted translation May contain errors Official docs Status