לדלג לתוכן

טיפול בתנאי שפה גאומטריים

במשוואה הליניארית \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\) הנפתרת בכל איטרציה של שיטת Newton-Raphson, תנאי השפה הגאומטריים (אילוצי הזזה) עדיין אינם משולבים. פרק זה מראה כיצד לשנות את מטריצת הקשיחות \(\boldsymbol{K}\) ואת וקטור השארית \(\boldsymbol{R}\) עבור דרגות חופש שבהן נקבע אילוץ הזזה \(\boldsymbol{u} = \bar{\boldsymbol{u}}\), כך שההזזה לאחר האיטרציה תשיג את הערך המאולץ. אילוצים מרובי־נקודות (MPC) ואילוצים לא־ליניאריים הנובעים ממגע מטופלים במסלולים נפרדים; ראו אילוצים מרובי־נקודות ו-מגע.

מדיניות השארת ההזזה המאולצת כמשתנה לא־ידוע

ההזזה בדרגת החופש שעליה חל תנאי שפה גאומטרי אינה עוד משתנה לא־ידוע, אלא קבועה לערך הנתון \(\bar{u}_i\). אפשר להתייחס לערכים אלה כקבועים ולסלקם מן המשוואה הליניארית \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\), אך FrontISTR משאיר גם את דרגות החופש המאולצות בתוך וקטור התיקון \(d\boldsymbol{u}\) כמו יתר דרגות החופש, ומממש את האילוץ על ידי שינוי \(\boldsymbol{K}\) ו-\(\boldsymbol{R}\).

בשיטה זו ממד מטריצת המקדמים וסדר דרגות החופש אינם משתנים לפי קיומם של אילוצים, ולכן אין צורך לסלק משתנים ולאחר מכן לדחוס מחדש שורות ועמודות שהתפנו. במימוש שבו מטריצת המקדמים נשמרת כמטריצה דלילה, דחיסה מחדש זו מסורבלת; לכן FrontISTR משתמש בשיטה האחרונה, שמממשת את האילוץ רק באמצעות עדכון מטריצת המקדמים ואגף ימין.

יעד ההחלפה של תיקון Newton-Raphson

עבור דרגת חופש \(i\) המאולצת בהזזה, התיקון \(du_i\) המחושב באיטרציית Newton-Raphson הוא

\[ du_i = d\bar{u}_i \equiv \begin{cases} \bar{u}_i & (\text{איטרציה ראשונה}) \\ 0 & (\text{מהאיטרציה השנייה ואילך}) \end{cases} \]

לשם כך משנים את \(\boldsymbol{K}\) ואת \(\boldsymbol{R}\). כך, באיטרציה הראשונה תוספת ההזזה מגיעה לערך המאולץ \(\bar{u}_i\), ומהאיטרציה השנייה ואילך התיקון הוא \(0\) והערך המאולץ נשמר.

הליך שינוי המטריצה ווקטור השארית

יעד ההחלפה שבסעיף הקודם מושג באמצעות שני השינויים הבאים, תוך שמירה על צורת המשוואה הליניארית \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\).

  1. אלכסון שורה \(i\): מחליפים את האיבר האלכסוני \(K_{ii}\), שהוא המקדם של \(du_i\), ב-\(1\), ואת כל יתר המקדמים \(K_{ij}\ (j \not= i)\) ב-\(0\), ומגדירים את אגף ימין כ-\(R_i \to d\bar{u}_i\). כך משוואת שורה \(i\) נעשית \(du_i = d\bar{u}_i\).
  2. העברה לאגף ימין משורה \(j(\not= i)\): עבור שורה \(j(\not= i)\), אם \(K_{ji} \not= 0\), מעבירים את האיבר \(K_{ji} du_i = K_{ji} d\bar{u}_i\) לאגף ימין. כלומר, מחסרים \(K_{ji} d\bar{u}_i\) מאגף ימין ומגדירים את המקדם \(K_{ji}\) של \(du_i\) ל-\(0\).

בכתיב רכיבים, המשוואות לפני ואחרי השינוי מתאימות כך:

\[ \begin{bmatrix} K_{11} & K_{12} & \cdots & K_{1i} & \cdots & K_{1N} \\ K_{21} & K_{22} & \cdots & K_{2i} & \cdots & K_{2N} \\ \vdots & \vdots & \ddots & \vdots & & \vdots \\ K_{i1} & K_{i2} & \cdots & K_{ii} & \cdots & K_{iN} \\ \vdots & \vdots & & \vdots & \ddots & \vdots \\ K_{N1} & K_{N2} & \cdots & K_{Ni} & \cdots & K_{NN} \\ \end{bmatrix} \begin{bmatrix} du_1 \\ du_2 \\ \vdots \\ du_i \\ \vdots \\ du_N \end{bmatrix} = \begin{bmatrix} R_1 \\ R_2 \\ \vdots \\ R_i \\ \vdots \\ R_N \end{bmatrix} \]
\[ \Longrightarrow \quad \begin{bmatrix} K_{11} & K_{12} & \cdots & 0 & \cdots & K_{1N} \\ K_{21} & K_{22} & \cdots & 0 & \cdots & K_{2N} \\ \vdots & \vdots & \ddots & \vdots & & \vdots \\ 0 & 0 & \cdots & 1 & \cdots & 0 \\ \vdots & \vdots & & \vdots & \ddots & \vdots \\ K_{N1} & K_{N2} & \cdots & 0 & \cdots & K_{NN} \\ \end{bmatrix} \begin{bmatrix} du_1 \\ du_2 \\ \vdots \\ du_i \\ \vdots \\ du_N \end{bmatrix} = \begin{bmatrix} R_1 - K_{1i} d\bar{u}_i \\ R_2 - K_{2i} d\bar{u}_i \\ \vdots \\ d\bar{u}_i \\ \vdots \\ R_N - K_{Ni} d\bar{u}_i \\ \end{bmatrix} \]

נסמן את מטריצת המקדמים ואת אגף ימין לאחר השינוי בהתאמה ב-\(\tilde{\boldsymbol{K}}, \tilde{\boldsymbol{R}}\). המשוואה הליניארית הסופית שיש לפתור היא

\[ \tilde{\boldsymbol{K}}\, d\boldsymbol{u} = \tilde{\boldsymbol{R}} \]

כאשר קיימות מספר דרגות חופש מאולצות, מחילים ברצף את השינויים 1 ו-2 לעיל עבור כל דרגת חופש מאולצת \(i\).

תחום הטיפול במימוש מטריצה דלילה

במימוש, מטריצת המקדמים \(\boldsymbol{K}\) נשמרת בפורמט מטריצה דלילה. הטיפול בשורות \(j(\not= i)\) בשלב 2 לעיל מתבצע רק בשורות שבהן לעמודה \(i\) יש רכיב שאינו אפס, כלומר בדרגות החופש של צמתים המחוברים דרך אלמנטים לדרגת החופש המאולצת \(i\). בדרגות חופש שאינן מחוברות מתקיים \(K_{ji} = 0\), ולכן העברה לאגף ימין אינה משנה אותו. הגבלה זו מאפשרת להשלים את טיפול האילוצים באמצעות פעולות מקומיות בלבד, ללא תלות במספר הצמתים הכולל.

נושאים קשורים