integer, parameter :: npde = 1, n = 101

integer ido, i, nframes, kt \kt – число шагов по переменной t

real(kind(ld0)) u(npde + 1, n), mid(n – 1), tO, tout, v_l, v_2

real(kind(ld0)):: zero = OdO, half = 5d-l, one = IdO, &

two = 2d0, four = 4d0, delta_t = ld-1, tend = 5d0, a = 5d0 type(d_options) iopt(3)

! Массив, введенный для графического отображения! результата – зависимости и(х) при t – tend real(4), allocatable :: uv(:,:) !dec$attributes array_visualizer:: uv allocate(uv(2, int(tend / delta_t) + 1))

kt = 0; ido = 1 ! Начало интегрирования

do

select case(ido)

case(l) ! Начальные данные; задание опций

tO = zero; tout = delta_t

u(npde +1, 1) = zero

u(npde + 1, n) = a

open(file = ‘pde_ex03.out’, unit = 7)

nframes = nint((tend + delta_t) / delta_t)

write(7, «(ЗІ5,4dl4.5)») npde, n, nframes, u(npde + 1,1), u(npde + 1, n), tO, tend iopt(l) = d_options(pde_ld_mg_relative_tolerance, zero) iopt(2) = d_options(pde_ld_mg_absolute_tolerance, ld-2) iopt(3) = d_options(pde_ld_mg_time_smoothing, IdO)

case(2) ! Переход к следующей выходной точке,

tO = tout ! вывод решения, проверка на достижение

if(t0 <= tend) then ! последней точки