ВУЗ:
Составители:
40 Глава 3. Программирование сборки матриц МКЭ
f u n c t i o n K=assembabad2 (p , t ) np=s i z e ( p , 2 ) ; nt=s i z e ( t , 2 ) ; d o fe =3;
K =spar s e ( np , np ) ; % glo b a l s t i f f n e s s matrix
Kt=on es ( dofe , dof e ) ; % l o c a l s t i f f n e s s matrix
f o r i t =1: nt
I=t ( 1 : dofe , i t ) ; % g l o b a l poi nt i n d i c e s on element i t
K( I , I )=K( I , I )+Kt ; % assem ble g l o b a l s t i f f n e s s matrix
end
3-ый алгоритм (best1), основанный на сборке матрицы в коорди-
натной форме.
f u n c t i o n K=assembabest1 ( p , t )
np=s i z e ( p , 2 ) ; nt=s i z e ( t , 2 ) ; d ofe =3;
dofe2=d ofe ^2; % number of el em ents o f l o c a l s t i f f n e s s matrix
m= d ofe 2
*
nt ; % number of s t i f f n e s s mat r i ces e lements on a l l f . e .
% c o o r d i n a t e s r e p r e s e n t a t i o n o f g l o b a l matrix K
i=z e r o s (m, 1 ) ; j=z e r o s (m, 1 ) ; a=ones (m, 1 ) ;
Kt=rand ( dofe , d ofe ) ; % l o c a l s t i f f n e s s matrix
f o r i t =1: nt
I=t ( 1 : dofe , i t ) ; % g l o b a l poi nt i n d i c e s on element i t
% a ssemble g l o b a l s t i f f n e s s matrix i n c o o r d i n a te form ( i , j , a )
i i =repmat ( I ( : ) , 1 , do fe ) ; j j=i i ' ;
l=d of e2
*
( i t −1)+(1: dof e2 ) ;
i ( l )= i i ( : ) ;
j ( l )= j j ( : ) ;
a ( l )=Kt ( : ) ;
end
K=s p a r s e ( i , j , a , np , np ) ; % g l o b a l s t i f f n e s s matrix
Дадим некоторые пояснения. Для любой двумерной матрицы B, ко-
манда B=B(:) превращает ее в вектор столбец длины numel(B), со-
гласно способу хранения матриц по столбцам. Элемент Kt(i, j) дол-
жен быть добавлен в позицию (ii(i, j), jj(i, j)) матрицы K. Команды
i ( l )= i i ( : ) ; j ( l )= j j ( : ) ; a ( l )=Kt ( : ) ;
преобразуют матрицы ii, jj, Kt в столбцы и сохраняют их в соответ-
ствующих позициях векторов i, j, a.
4-ый алгоритм (best2), основанный на векторизованной сборке
локальных матриц жесткости.
f u n c t i o n K=assembabest2 ( p , t ) np=s i z e ( p , 2 ) ; nt=s i z e ( t , 2 ) ; d o fe =3;
i t 1=t ( 1 , : ) ; i t 2=t ( 2 , : ) ; i t 3=t ( 3 , : ) ; %i t k=i n d i c e s o f l o c a l po i nt k
% k i j ( k)= Kt( i , j ) on f i n i t e element k
k12=ones ( nt , 1 ) ; K= s p arse ( i t 1 , i t 2 , k12 , np , np ) ;
40 Глава 3. Программирование сборки матриц МКЭ
f u n c t i o n K=assembabad2 ( p , t ) np=s i z e ( p , 2 ) ; nt=s i z e ( t , 2 ) ; d o f e =3;
K =s p a r s e ( np , np ) ; % g l o b a l s t i f f n e s s matrix
Kt=o n e s ( dofe , d o f e ) ; % l o c a l s t i f f n e s s matrix
f o r i t =1: nt
I=t ( 1 : dofe , i t ) ; % g l o b a l p o i n t i n d i c e s on e l e m e n t i t
K( I , I )=K( I , I )+Kt ; % a s s e m b l e g l o b a l s t i f f n e s s matrix
end
3-ый алгоритм (best1), основанный на сборке матрицы в коорди-
натной форме.
f u n c t i o n K=assembabest1 ( p , t )
np=s i z e ( p , 2 ) ; nt=s i z e ( t , 2 ) ; d o f e =3;
d o f e 2=d o f e ^ 2 ; % number o f e l e m e n t s o f l o c a l s t i f f n e s s matrix
m=d o f e 2 * nt ; % number o f s t i f f n e s s m a t r i c e s e l e m e n t s on a l l f . e .
% c o o r d i n a t e s r e p r e s e n t a t i o n o f g l o b a l matrix K
i=z e r o s (m, 1 ) ; j=z e r o s (m, 1 ) ; a=o n e s (m, 1 ) ;
Kt=rand ( dofe , d o f e ) ; % l o c a l s t i f f n e s s matrix
f o r i t =1: nt
I=t ( 1 : dofe , i t ) ; % g l o b a l p o i n t i n d i c e s on e l e m e n t i t
% a s s e m b l e g l o b a l s t i f f n e s s matrix i n c o o r d i n a t e form ( i , j , a )
i i =repmat ( I ( : ) , 1 , d o f e ) ; j j =i i ' ;
l=d o f e 2 * ( i t −1)+(1: d o f e 2 ) ;
i ( l )= i i ( : ) ;
j ( l )= j j ( : ) ;
a ( l )=Kt ( : ) ;
end
K=s p a r s e ( i , j , a , np , np ) ; % g l o b a l s t i f f n e s s matrix
Дадим некоторые пояснения. Для любой двумерной матрицы B, ко-
манда B=B(:) превращает ее в вектор столбец длины numel(B), со-
гласно способу хранения матриц по столбцам. Элемент Kt(i, j) дол-
жен быть добавлен в позицию (ii(i, j), jj(i, j)) матрицы K. Команды
i ( l )= i i ( : ) ; j ( l )= j j ( : ) ; a ( l )=Kt ( : ) ;
преобразуют матрицы ii, jj, Kt в столбцы и сохраняют их в соответ-
ствующих позициях векторов i, j, a.
4-ый алгоритм (best2), основанный на векторизованной сборке
локальных матриц жесткости.
f u n c t i o n K=assembabest2 ( p , t ) np=s i z e ( p , 2 ) ; nt=s i z e ( t , 2 ) ; d o f e =3;
i t 1=t ( 1 , : ) ; i t 2=t ( 2 , : ) ; i t 3=t ( 3 , : ) ; %i t k=i n d i c e s o f l o c a l p o i n t k
% k i j ( k)= Kt ( i , j ) on f i n i t e e l e m e n t k
k12=o n e s ( nt , 1 ) ; K= s p a r s e ( i t 1 , i t 2 , k12 , np , np ) ;
Страницы
- « первая
- ‹ предыдущая
- …
- 38
- 39
- 40
- 41
- 42
- …
- следующая ›
- последняя »
