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

UptoLike

138
c
s=0
do i=1,m
s=s-y(i)
end do
call mpi_allreduce(s, s_global, 1, mpi_double_precision,
$ mpi_sum, mpi_comm_world, ierr)
do i=1,m
f(i)=(-y(i)+x*cos(-x))/(i+rank*m)+s_global/n
end do
return
end
c
subroutine rp0(x, y, f)
c Задание правых частей ОДУ, последовательная версия
implicit none
c
include 'dim.h'
integer i
double precision x, y(n), f(n), s
C
s=0
do i=1,n
s=s-y(i)
end do
do i=1,n
f(i)=(-y(i)+x*cos(-x))/i+s/n
end do
return
end
c
subroutine rk4(x, h, y, yy)
c Решение системы ОДУ методом Рунге–Кутты четвертого
c порядка
implicit none
c
include 'dim.h'
integer i, k, rank, size, m
double precision y(n), k1(n), k2(n), k3(n), k4(n), y1(n),
$ yy(0:3,n), x, h