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

UptoLike

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

56 Глава 3. Программирование сборки матриц МКЭ
Рассмотрим пример. Пусть имеется три граничных сегмента, с
номерами 5, 2, 7 на которых задано условие Дирихле. Тогда bsD =
[5 2 7]. Если на всех сегментах u
D
= x
1
sin(x
1
+ x
2
) (u
D
= 2), то
uD =
x. sin(x + y)
(uD = 2). Если на 5 и 7 граничных сегментах
u
D
= 1, а на 2-ом u
D
= x + y, то uD =
1 ! x + y ! 1
. Эту функцию
можно задать также следующим m-файлом:
f u n c t i o n f=uD( x , y , s d l ) f=z e r o s ( s i z e ( x ) ) ;
% 1s t segment ( i n l o c a l numeration )
I=fi n d ( s d l == 1); f ( I )=1;
% 2nd segment
I=fi n d ( s d l == 2); f ( I )=x ( I )+y ( I ) ;
% 3d segment
I=fi n d ( s d l == 3); f ( I )=1;
Если условия Дирихле не заданы, то данные bsD и uD договоримся
определять пустыми: bsD = [], uD = []; если же Γ
0
= Γ, то полагаем
bsD = inf.
Совершенно аналогично задаются краевые условия 3-го рода; в
этом случае, если на сегменте σ = µ = 0, т.е. задано однородное
условие Неймана, то такой сегмент можно не указывать в списке;
если Γ
1
= Γ, то полагаем bsN = inf. Например,
bsN=[1 4 2 8 ] ;
sg= 'x ! y ! 1 ! 2' ;
mu=0;
Наконец, если Γ
0
= , а на всей Γ
1
задано однородное условие Ней-
мана, то полагаем bsN = inf, sg = [], mu = [].
Для удобства ссылок, эти данные (bsD, uD, bsN, sg, mu) нам
будет удобно упаковать далее в структуру bc, с соответствующими
полями.
Учет краевых условий. Подготовим данные, которые нам позволи-
ли бы легко сформировать систему алгебраических уравнений МКЭ
K
0
u
0
= F
0
, которая, напомним, имеет следующий вид (см. (1.8), с. 8):
ji
n
a
ij
u
j
= ϕ
i
ji
d
a
ij
u
D j
, i i
n
,
где матрица A = {a
ij
}
n
p
i,j=1
= K + H, Φ = {ϕ
i
}
n
p
i=1
= F + G, i
d
множество номеров точек сетки, в которых задано условие Дирих-
ле, i
n
= {i
1
, i
2
, . . . , i
n
} множество номеров остальных точек. Выше
56                                              Глава 3. Программирование сборки матриц МКЭ


    Рассмотрим пример. Пусть имеется три граничных сегмента, с
номерами 5, 2, 7 на которых задано условие Дирихле. Тогда bsD =
[5 2 7]. Если на всех сегментах uD = x1 sin(x1 + x2 ) (uD = 2), то
uD =′ x. ∗ sin(x + y) ′ (uD = 2). Если на 5 и 7 граничных сегментах
uD = 1, а на 2-ом — uD = x + y, то uD =′ 1 ! x + y ! 1 ′ . Эту функцию
можно задать также следующим m-файлом:
f u n c t i o n f=uD( x , y , s d l ) f=z e r o s ( s i z e ( x ) ) ;
% 1− s t segment ( i n l o c a l numeration )
I=f i n d ( s d l ==1); f ( I )=1;
% 2−nd segment
I=f i n d ( s d l ==2); f ( I )=x ( I )+y ( I ) ;
% 3−d segment
I=f i n d ( s d l ==3); f ( I )=1;

Если условия Дирихле не заданы, то данные bsD и uD договоримся
определять пустыми: bsD = [], uD = []; если же Γ0 = Γ, то полагаем
bsD = inf .
   Совершенно аналогично задаются краевые условия 3-го рода; в
этом случае, если на сегменте σ = µ = 0, т.е. задано однородное
условие Неймана, то такой сегмент можно не указывать в списке;
если Γ1 = Γ, то полагаем bsN = inf . Например,
bsN=[1    4   2   8];
s g= 'x ! y ! 1 ! 2' ;
mu=0;

Наконец, если Γ0 = ∅, а на всей Γ1 задано однородное условие Ней-
мана, то полагаем bsN = inf , sg = [], mu = [].
   Для удобства ссылок, эти данные (bsD, uD, bsN , sg, mu) нам
будет удобно упаковать далее в структуру bc, с соответствующими
полями.

Учет краевых условий. Подготовим данные, которые нам позволи-
ли бы легко сформировать систему алгебраических уравнений МКЭ
K0 u0 = F0 , которая, напомним, имеет следующий вид (см. (1.8), с. 8):
                  ∑                 ∑
                      aij uj = ϕi −   aij uD j , i ∈ in ,
                               j∈in                          j∈id
                                           n                            n
где матрица A = {aij }i,j=1       p
                                      = K + H, Φ = {ϕi }i=1
                                                          p
                                                            = F + G, id —
множество номеров точек сетки, в которых задано условие Дирих-
ле, in = {i1 , i2 , . . . , in } — множество номеров остальных точек. Выше