Высокопроизводительные вычисления на кластерах. Беликов Д.А - 136 стр.

UptoLike

136
if(rank.eq.0) write(6,*) 'size=',size,' timeC=',time
do i=1,m
write(6,*) i,y(i),rank
end do
call mpi_finalize(ierr)
end
c
subroutine adams(x, h, y, y0, ff, xk)
! Решение системы ОДУ методом Адамса по схеме
! "предиктор–корректор"
! n – количество уравнений
! x – начальная точка (xm)
! h – шаг
! y – массив размерности n - решение при x+h (xm+1)
! y0 – массив размерности n - решение при x
! ff – массив значений правых частей ОДУ при
! xm-3,xm-2,xm-1,xm
! rp – имя п/п для расчета правых частей
implicit none
include 'mpif.h'
include 'dim.h'
integer i, k, m, rank, size, ierr, iter
double precision x, h, y(n), y1(n), y2(n), f1(n), yy(0:3,n),
$ ff(0:3,n), res_global, h4, res, y0(n), xk
external rp
common/parallel/ rank, size, m
c
h4 = h/24
iter = 0
do while (x.lt.xk)
c Шаг прогноза по методу Адамса–Башфорда четвертого
c порядка
do i=1,m
y1(i)=y0(i)+h4*(55.0*ff(3,i)-59.0*ff(2,i)+
$ 37.0*ff(1,i)-9.0*ff(0,i)) !!!предиктор
end do
c
x=x+h
c Шаг коррекции по методу Адамса–Моултона четвертого
c порядка