ВУЗ:
Составители:
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 ) ) ;
% 1−s t segment ( i n l o c a l numeration )
I=fi n d ( s d l == 1); f ( I )=1;
% 2−nd segment
I=fi n d ( s d l == 2); f ( I )=x ( I )+y ( I ) ;
% 3−d 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):
∑
j∈i
n
a
ij
u
j
= ϕ
i
−
∑
j∈i
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 } — множество номеров остальных точек. Выше
Страницы
- « первая
- ‹ предыдущая
- …
- 54
- 55
- 56
- 57
- 58
- …
- следующая ›
- последняя »