שיטת מספור אלמנטים וספריית פונקציות צורה¶
פונקציית הצורה \(N_\alpha^e(\boldsymbol{r})\) שהוצגה ב־פונקציות צורה וקירוב באלמנטים סופיים מקבלת צורה ספציפית לכל סוג אלמנט. פרק זה מסווג את קבוצות האלמנטים שמספק FrontISTR באמצעות מספרי סוג אלמנט תלת־ספרתיים ומציג את הממשק של ספריית פונקציות הצורה לטיפול אחיד בכל אלמנט. מערכות הקואורדינטות הטבעיות ופונקציות הצורה המפורשות של אלמנטים מוצקים תלת־ממדיים, וכן המרת סדר צמתי הביניים באלמנטים ריבועיים, מתוארות ב־פונקציות צורה של אלמנטים מוצקים תלת־ממדיים, והנחיות לבחירת סוגי אלמנטים ניתנות ב־ספריית אלמנטים (פונקציות).
סיווג אלמנטים וכללי שמות¶
סוגי האלמנטים של FrontISTR מזוהים במספרים תלת־ספרתיים. משמעות כל ספרה היא כדלקמן.
- ספרה ראשונה (קבוצת אלמנטים): 1 = אלמנט קו/מסבך, 2 = אלמנט מישורי, 3 = אלמנט מוצק, 5 = אלמנט ממשק, 6 = אלמנט קורה, 7 = אלמנט מעטפת.
- ספרה שנייה (צורה בסיסית): מבדילה בין הצורות הגאומטריות בתוך קבוצת האלמנטים (משולש, מרובע, טטרהדרון, מנסרה או הקסהדר).
- ספרה שלישית (סדר אינטרפולציה): 1 = מסדר ראשון (צמתי פינה בלבד), 2 = מסדר שני (כולל צמתי אמצע־צלע). כחריג, אלמנט מסבך דו־צומתי הוא מספר 301.
האלמנטים המסופקים מפורטים לפי קבוצת אלמנטים בטבלה הבאה.
| קבוצת אלמנטים | סוג אלמנט | מספר צמתים | תיאור |
|---|---|---|---|
| אלמנט קו | 111 | 2 | אלמנט קישור דו־צומתי (אינו זמין לניתוח מאמצים) |
| 112 | 3 | אלמנט קישור תלת־צומתי (אינו זמין לניתוח מאמצים) | |
| אלמנט מישורי | 231 | 3 | אלמנט משולש ליניארי בעל 3 צמתים |
| 232 | 6 | אלמנט משולש ריבועי בעל 6 צמתים | |
| 241 | 4 | אלמנט מרובע ליניארי בעל 4 צמתים | |
| 242 | 8 | אלמנט מרובע ריבועי בעל 8 צמתים (משפחת Serendipity) | |
| אלמנט מוצק | 301 | 2 | אלמנט מסבך דו־צומתי |
| 341 | 4 | אלמנט טטרהדרלי ליניארי בעל 4 צמתים | |
| 342 | 10 | אלמנט טטרהדרלי ריבועי בעל 10 צמתים | |
| 351 | 6 | אלמנט מנסרה ליניארי בעל 6 צמתים | |
| 352 | 15 | אלמנט מנסרה ריבועי בעל 15 צמתים | |
| 361 | 8 | אלמנט הקסהדרלי ליניארי בעל 8 צמתים | |
| 362 | 20 | אלמנט הקסהדרלי ריבועי בעל 20 צמתים (משפחת Serendipity) | |
| אלמנט ממשק | 541 | 4×2 | אלמנט פני־מרובע ליניארי בעל 4 צמתים (אינו זמין לניתוח מאמצים) |
| 542 | 8×2 | אלמנט פני־מרובע ריבועי בעל 8 צמתים (אינו זמין לניתוח מאמצים) | |
| אלמנט קורה | 611 | 2 | אלמנט קורת Bernoulli-Euler דו־צומתי (6 דרגות חופש לצומת) |
| 641 | 2×2 | אלמנט קורת Bernoulli-Euler דו־צומתי (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 ובפורמט הפנימי.
נושאים קשורים¶
- פונקציות צורה וקירוב באלמנטים סופיים — ההגדרה המתמטית של פונקציות הצורה
- אינטגרציה נומרית — נקודות אינטגרציה, משקלים וצורת הקירוב של אינטגרציית אלמנט
- פונקציות צורה של אלמנטים מוצקים תלת־ממדיים — קואורדינטות טבעיות ופונקציות צורה מפורשות לאלמנטים מוצקים רציפים
- ניסוחי אלמנטים מתקדמים — B-bar / F-bar / מצב לא־תואם / מעטפת / קורה
- ספריית אלמנטים (פונקציות) — אפשרויות סוגי אלמנטים והנחיות לבחירה