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

UptoLike

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

2.5. Решение модельной задачи. 61
2.5. Решение модельной задачи.
Применим функцию assembpde для решения модельной задачи.
Рассмотрим краевую задачу
div(c(x) u) + b(x) · u + a(x)u = f(x), x = (x
1
, x
2
) ,
u(x) = u
D
(x), x Γ
0
, c(x) u · ν(x) + σ(x)u = µ(x), x Γ
1
,
в единичном круге с центром в начале координат. Геометрия за-
дается функцией circleg, которая находится в pde toolbox . На рис. 3
(слева) указано разбиение границы этой области на 4 сегмента и ну-
мерация этих сегментов; будем считать, что сегменты 1 и 3 образуют
Γ
0
, а сегменты 2 и 4 Γ
1
.
Пусть коэффициенты уравнения имеют следующий вид:
c = 2 + x
1
+ x
2
, a = x
1
+ x
2
, b
1
= x
1
, b
2
= x
2
,
f = 8 6(x
1
+ x
2
) + (2 + x
1
+ x
2
)(x
2
1
+ x
2
2
).
Функции определяющие краевые заданы следующим образом:
u
D
= x
2
1
+ x
2
2
, σ =
{
0, на 2 сег.,
2, на 4 сег.,
µ =
{
2(2 + x
1
+ x
2
)u
D
, на 2 сег.,
2((2 + x
1
+ x
2
) + 1)u
D
, на 4 сег..
Непосредственной подстановкой в уравнения нетрудно убедиться,
что функция u = x
2
1
+ x
2
2
является решением задачи.
Решим эту задачу используя функцию assembpde на последова-
тельности из 4-х сеток с h = [0.5 0.1 0.05 0.02]. Поскольку точное
решение известно, вычислим погрешность решения
err = max
xω
h
|u(x) u
h
(x)|
и выведем относительную погрешность errh2 = err/h
2
; Также по-
строим график погрешности решения при h = 0.1 и замерим времена
выполнения функций assemba, assembe и assembpde. Эти задачи ре-
шает функция
f u nc ti o n maintestPDE
c l e a r a l l ; c l o s e a l l ; c l c
g=' c i r c l e g ' ; np = [ ] ; nt = [ ] ; errh2 = [ ] ; e r r = [ ] ;
tassemba = [ ] ; tbc = [ ] ; t s o l = [ ] ;
2.5. Решение модельной задачи.                                                                         61


2.5. Решение модельной задачи.

   Применим функцию assembpde для решения модельной задачи.
Рассмотрим краевую задачу

     − div(c(x) ∇u) + b(x) · ∇u + a(x)u = f (x), x = (x1 , x2 ) ∈ Ω,
    u(x) = uD (x), x ∈ Γ0 , c(x) ∇u · ν(x) + σ(x)u = µ(x), x ∈ Γ1 ,

в единичном круге Ω с центром в начале координат. Геометрия Ω за-
дается функцией circleg, которая находится в pde toolbox . На рис. 3
(слева) указано разбиение границы этой области на 4 сегмента и ну-
мерация этих сегментов; будем считать, что сегменты 1 и 3 образуют
Γ0 , а сегменты 2 и 4 — Γ1 .
     Пусть коэффициенты уравнения имеют следующий вид:

                c = 2 + x 1 + x2 , a = x1 + x2 , b 1 = x1 , b 2 = x2 ,
                   f = −8 − 6(x1 + x2 ) + (2 + x1 + x2 )(x21 + x22 ).
Функции определяющие краевые заданы следующим образом:
                              {                                {
                               0, на 2 сег.,                    2(2 + x1 + x2 )uD ,       на 2 сег.,
   uD = x21 + x22 ,        σ=                               µ=
                               2, на 4 сег.,                    2((2 + x1 + x2 ) + 1)uD , на 4 сег..

 Непосредственной подстановкой в уравнения нетрудно убедиться,
что функция u = x21 + x22 является решением задачи.
   Решим эту задачу используя функцию assembpde на последова-
тельности из 4-х сеток с h = [0.5 0.1 0.05 0.02]. Поскольку точное
решение известно, вычислим погрешность решения

                                        err = max |u(x) − uh (x)|
                                                   x∈ωh

и выведем относительную погрешность errh2 = err/h2 ; Также по-
строим график погрешности решения при h = 0.1 и замерим времена
выполнения функций assemba, assembe и assembpde. Эти задачи ре-
шает функция
f u n c t i o n maintestPDE
clear all ; close all ; clc

g=' c i r c l e g ' ; np = [ ] ; nt = [ ] ; e r r h 2 = [ ] ; e r r = [ ] ;
tassemba = [ ] ; t b c = [ ] ; t s o l = [ ] ;