Прескокнете до содржината

Обработка на геометриски гранични услови

Во линеарната равенка \(\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{1-ва итерација}) \\ 0 & (\text{2-ра и следните итерации}) \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\), па префрлањето не ја менува десната страна. Со ова ограничување, обработката на ограничувањата се завршува само со локални операции во однос на вкупниот број јазли.

Поврзани теми