mid = half *(u(2,2:n) +u(2,l :n-1))
v_2 = half* sum(mid * exp(-mid) * (u(l, l:n – 1) + u(l, 2:n)) * (u(2, 2:n)-u(2,l:n -1))) d_pde_ld_mg_beta = zero
d_pde_ 1 d_mg_gamma = g(one, d_pde_ 1 d_mg_t) * &
v_l * v_2 / (v_l + one)**2 – d_pde_ 1 d_mg_u
else
d_pde_ld_mg_beta = zero d_pde_ 1 d_mg_gamma = d_pde_ld_mg_dudx(l) end if end select
! Употребляем дифференцирование назад call pde_l d_mg(tO, tout, ido, u, iopt = iopt) end do
contains
function g(z, t) implicit none real(kind(ldO)) z, t, g
g = four * z * (two – two * exp(-a) + exp(-t))**2
g = g / ((one-exp(-a)) * (one – (one + two * a) * exp(-two * a)) * (1 – exp(-a) + exp(-t))) end function g
end program pde_ld_mg_ex03
У
5Я0
1.10
1.1
0.55
0Й0

OB
Oi
3.10
□55
а б
Рис. 5.3. Графики функций: а – и(х = 0, t); б – и(х, t = tend)
5.2.4. ПРИМЕР 4. ДИФФУЗИЯ В РЕАКТОРЕ. МОДЕЛЬ В ЦИЛИНДРИЧЕСКИХ КООРДИНАТАХ
Задача взята из [14]. Диффузия моделируется уравнением
„ _,Э фгТ) Ґ Г )
Т = г —!-+уехр – ;
д г v i^l + erj
Гг(0, z) = 0, Д1, z) = 0, z > 0;
Т(г, 0) = 0, 0 < г < 1;
р = 10"4,* У= 1, є = 0.1.