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

UptoLike

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

§ 3. Кодировка сетки 27
e =[1 3 2 5 6 7 1 8 5 8
2 4 5 6 7 4 8 7 8 3
0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1
1 2 3 4 5 6 7 8 9 10
2 0 2 3 3 1 0 1 2 0
0 1 0 0 0 0 2 3 3 1 ] ;
Рисунки 6 были получены при помощи функции plotmeshP1, в
которой использованы MatLab-функции plot и text. Напомним, что
функция
t e x t ( x , y , ' abc' , ' Fo ntS ize ' , f s , ' Color' ,' r' )
выводит на график текстовую строку abc, начиная с точки с коорди-
натами x, y (остальные параметры необязательны).
f u n c t i o n h=plotmeshP1 (p , e , t , opt , f s )
% PLOTMESHP1: draw mesh ( p , e , t ) and
% opt(1)==1 > draw p o i n t s l a b e l s
% opt(2)==1 > draw boundary edge l a b e l s
% opt(3)==1 > draw t r i a n g l e l a b e l s
% f s = Fo ntS ize
np=s i z e (p , 2 ) ; ne=s i z e ( e , 2 ) ; nt=s i z e ( t , 2 ) ;
h=f i g u r e ;
pdemesh (p , e , t ) ; a x i s eq ua l ; hol d on
p l o t ( p ( 1 , : ) , p ( 2 , : ) , ' . k ' ,' MarkerSize' , 8 )
x l a b e l ('x_1' ) , y l a b e l ('x_2' )
i f opt(1)==1 % draw meshp o int l a b e l s
f o r i =1:np
t e x t ( p ( 1 , i ) , p ( 2 , i ) , [ ' ' i n t 2 s t r ( i ) ] , ' Fon tSi ze' , f s , ' Color' ,' r' ) ;
end
end
i f opt(2)==1 % draw boundary s d l
f o r i t =1: ne
i=e ( 1 , i t ) ; j=e (2 , i t ) ;
xx=(p ( 1 , i ) +p ( 1 , j ) ) / 2 ; yy=(p ( 2 , i )+p ( 2 , j ) ) / 2 ;
t e x t ( xx , yy +0.0 5 , [ ' ' i n t 2 s t r ( e ( 5 , i t ) ) ] , ' Fo ntS ize ' , f s , ' Color' ,'k' ) ;
end
end
i f opt(3)==1 % draw element l a b e l s
f o r i =1: nt
I=t ( 1 : 3 , i ) ; xy=sum( p ( : , I ) ' ) / 3;
t e x t ( xy ( 1 ) , xy ( 2 ) , i n t 2 s t r ( i ) , ' Fo ntS ize ' , f s 1,' Color' ,'b' ) ;
end
end
§ 3. Кодировка сетки                                                                                                              27


e =[1        3     2     5     6    7     1     8     5 8
    2        4     5     6     7    4     8     7     8 3
    0        0     0     0     0    0     0     0     0 0
    1        1     1     1     1    1     1     1     1 1
    1        2     3     4     5    6     7     8     9 10
    2        0     2     3     3    1     0     1     2 0
    0        1     0     0     0    0     2     3     3 1];

   Рисунки 6 были получены при помощи функции plotmeshP1, в
которой использованы MatLab-функции plot и text. Напомним, что
функция
t e x t ( x , y , 'abc' , ' F o n t S i z e ' , f s , ' C o l o r ' , ' r ' )

выводит на график текстовую строку abc, начиная с точки с коорди-
натами x, y (остальные параметры необязательны).
f u n c t i o n h=plotmeshP1 ( p , e , t , opt , f s )
% PLOTMESHP1: draw mesh ( p , e , t ) and
% opt (1)==1 −−> draw p o i n t s l a b e l s
% opt (2)==1 −−> draw boundary edge l a b e l s
% opt (3)==1 −−> draw t r i a n g l e l a b e l s
% f s = FontSize

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

h=f i g u r e ;
pdemesh ( p , e , t ) ; a x i s e q u a l ; h o l d on
p l o t ( p ( 1 , : ) , p ( 2 , : ) , ' . k ' , ' M a r ke rS i z e ' , 8 )
x l a b e l ( 'x_1' ) , y l a b e l ( 'x_2' )

i f opt (1)==1 % draw mesh−p o i n t l a b e l s
   f o r i =1:np
       text (p (1 , i ) , p (2 , i ) , [ ' ' i n t 2 s t r ( i ) ] , 'FontSize' , fs , 'Color' ,'r' ) ;
   end
end

i f opt (2)==1 % draw boundary s d l
   f o r i t =1: ne
       i=e ( 1 , i t ) ; j=e ( 2 , i t ) ;
       xx=(p ( 1 , i )+p ( 1 , j ) ) / 2 ; yy=(p ( 2 , i )+p ( 2 , j ) ) / 2 ;
       t e x t ( xx , yy+0. 0 5 , [ ' ' i n t 2 s t r ( e ( 5 , i t ) ) ] , ' F o n t S i z e ' , f s , ' C o l o r ' , 'k' ) ;
   end
end

i f opt (3)==1 % draw el e m e n t l a b e l s
   f o r i =1: nt
       I=t ( 1 : 3 , i ) ; xy=sum ( p ( : , I ) ' ) / 3 ;
       t e x t ( xy ( 1 ) , xy ( 2 ) , i n t 2 s t r ( i ) , ' F o n t S i z e ' , f s −1,' C o l o r ' , 'b' ) ;
   end
end