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 ! последней точки