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

Translation update pending

The Thai translation may be out of date because the Japanese source has changed. The existing translation remains available while it is being updated.

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

ฟังก์ชันรูปร่าง \(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 เอลิเมนต์คาน 2 โหนด (6 องศาอิสระต่อโหนด; คาน Bernoulli-Euler หรือ Timoshenko)
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) อย่างไรก็ตาม 641 รองรับเฉพาะสูตรคาน Bernoulli-Euler และไม่รองรับสูตรคาน Timoshenko ที่มีให้เลือกสำหรับ 611

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

รูทีนคำนวณเอลิเมนต์ (การสร้างเมทริกซ์ความแข็งและเวกเตอร์แรงภายใน) ไม่ได้มีรูทีนแยกสำหรับแต่ละชนิดเอลิเมนต์ แต่เรียกไลบรารีฟังก์ชันรูปร่างผ่านอินเทอร์เฟซรวมที่รับหมายเลขชนิดเอลิเมนต์ 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 ตรงกับรูปแบบภายใน

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