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.