Программирование МКЭ в МATLAB. Даутов P.З. - 30 стр.

UptoLike

Составители: 

30 Глава 2. Построение сеток в MatLab
в ee, размером 7 × K, пакуется информация о всех ребрах эле-
ментов не только попавших на границы подобластей, как в
e), K число всех ребер. Точнее, в ee(1 : 2, k) располагаются
номера вершин ребра с номером k; в e(3 : 4, k) начальное и
конечное значение параметра s на ребре k, если ребро k лежит на
любом сегменте, иначе e(3 : 4, k) = [0; 0]; в ee(5, k) хранится либо
номер сегмента, которому принадлежит ребро, либо 0; e(6 : 7, k)
номера треугольников слева и справа от ребра (если смотреть
от первой вершины ребра на вторую); соответствующее значение
ee(j, k) = 0, если ребро граничное;
в te, размером 4 × nt, хранятся номера ребер элемента и метка
подобласти, которой он принадлежит. А именно, в t(1 : 3, j) рас-
полагаются номера ребер элемента с номером j, в t(4, j) номер
подобласти.
Три матрицы (p, ee, te) содержат в себе всю информацию о сетке и
определяют альтернативную к (p, e, t) кодировку сетки; далее будем
называть ее сопряженной P
1
сеткой. Такая кодировка оказывается
полезной, когда независимо приходится обходить как элементы, так
и ребра. Следующая функция вычисляет эти матрицы.
f u n c t i o n [ ee , te ]=adjmeshP1 ( p , e , t )
% ADJMESHP1: g i v e s an edge o r i e n t e d mesh d a t a .
% P1me sh ( p , e , t ) as in matlab f u n c t i o n [ p , e , t ]= in i t m es h ( g ) .
% ee : 7xK, matrix o f e dges ; e very 2 mesh p o i n t s i , j ( or j , i )
% form 1 edge ; ever y edge b el o n g s to 2 t r i a n g l e ,
% or to 1 t r i a n g l e ( boundary edge ) ; K number o f e d g e s .
% ee ( 1 , i ) = index of the 1s t p o in t on edge i ,
% ee ( 2 , i ) = index of the 2nd p o in t on edge i .
% ee ( 3 : 4 , i )= s t a r t and end parameter , i f i l i e s on bo rder
% or boundary segment ; e l s e ee ( 3 : 4 , i ) = [ 0 ; 0 ] .
% ee ( 5 , i ) = border o r boundary segment index , i f edge i l i e s
% on segment ; e l s e ee ( 5 , i )=0 .
% ee ( 6 : 7 , i )= i n d i c e s o f l e f t hand and r i g h t hand t r i a n g l e s ;
% ee (6 , i )=0 or ee ( 7 , i )=0 f o r boundary e d g e .
%
% t e : 4xnt , t r i a n g l e matrix , composed by edge i n d i c e s ;
% t e ( 1 : 3 , i )= i n d i c e s o f edge s on element i .
% t e ( 4 , : ) = s d l numbers
ne=s i z e ( e , 2 ) ; nt=s i z e ( t , 2 ) ;
% s e t ep = f i r s t 2 rows o f the ee
t t =(t ( 1 : 3 , : ) ) ' ;
ep = [ t t ( : , [ 1 , 2 ] ) ; t t ( : , [ 2 , 3 ] ) ; t t ( : , [ 3 , 1 ] ) ] ; % a l l e d g e s not unique
30                                                             Глава 2. Построение сеток в MatLab


     • в ee, размером 7 × K, пакуется информация о всех ребрах эле-
       ментов (а не только попавших на границы подобластей, как в
       e), K — число всех ребер. Точнее, в ee(1 : 2, k) располагаются
       номера вершин ребра с номером k; в e(3 : 4, k) — начальное и
       конечное значение параметра s на ребре k, если ребро k лежит на
       любом сегменте, иначе e(3 : 4, k) = [0; 0]; в ee(5, k) хранится либо
       номер сегмента, которому принадлежит ребро, либо 0; e(6 : 7, k)
       — номера треугольников слева и справа от ребра (если смотреть
       от первой вершины ребра на вторую); соответствующее значение
       ee(j, k) = 0, если ребро граничное;
     • в te, размером 4 × nt, хранятся номера ребер элемента и метка
       подобласти, которой он принадлежит. А именно, в t(1 : 3, j) рас-
       полагаются номера ребер элемента с номером j, в t(4, j) — номер
       подобласти.
Три матрицы (p, ee, te) содержат в себе всю информацию о сетке и
определяют альтернативную к (p, e, t) кодировку сетки; далее будем
называть ее сопряженной P1 сеткой. Такая кодировка оказывается
полезной, когда независимо приходится обходить как элементы, так
и ребра. Следующая функция вычисляет эти матрицы.
f u n c t i o n [ ee , t e ]= adjmeshP1 ( p , e , t )
% ADJMESHP1: g i v e s an edge o r i e n t e d mesh d a t a .
% P1−mesh ( p , e , t ) a s i n matlab f u n c t i o n [ p , e , t ]= i n i t m e s h ( g ) .
% e e : 7xK , matrix o f e d g e s ; e v e r y 2 mesh p o i n t s i , j ( o r j , i )
%               form 1 edge ; e v e r y edge b e l o n g s t o 2 t r i a n g l e ,
%               o r t o 1 t r i a n g l e ( boundary edge ) ; K − number o f e d g e s .
%               e e ( 1 , i ) = i n d e x o f t h e 1− s t p o i n t on edge i ,
%               e e ( 2 , i ) = i n d e x o f t h e 2−nd p o i n t on edge i .
%               e e ( 3 : 4 , i )= s t a r t and end parameter , i f i l i e s on b o r d e r
%                                  o r boundary segment ; e l s e e e ( 3 : 4 , i ) = [ 0 ; 0 ] .
%               e e ( 5 , i ) = b o r d e r o r boundary segment index , i f edge i l i e s
%                                  on segment ; e l s e e e ( 5 , i )=0 .
%               e e ( 6 : 7 , i )= i n d i c e s o f l e f t hand and r i g h t hand t r i a n g l e s ;
%                                  e e ( 6 , i )=0 o r e e ( 7 , i )=0 f o r boundary e d g e .
%
% t e : 4 xnt , t r i a n g l e matrix , composed by edge i n d i c e s ;
%               t e ( 1 : 3 , i )= i n d i c e s o f e d g e s on e l e m e n t i .
%               t e ( 4 , : ) = s d l numbers

ne=s i z e ( e , 2 ) ; nt=s i z e ( t , 2 ) ;

% s e t ep = f i r s t 2 rows o f t h e e e
t t =( t ( 1 : 3 , : ) ) ' ;
ep = [ t t ( : , [ 1 , 2 ] ) ; t t ( : , [ 2 , 3 ] ) ; t t ( : , [ 3 , 1 ] ) ] ; % a l l e d g e s − not unique