ВУЗ:
Рубрика:
187
End if
c Движение по временной оси
Do while (time.lt.timefin)
c Расчет значений с нового временного слоя
Do j=1,m
Do i=1,Nx
Tnew(i,j) = T(i,j)*(1+ap) + T(i+1,j)*ae + T(i-1,j)*aw
1 + T(i,j+1)*an + T(i,j-1)*as
End do
End do
time =time + tau
c Переприсваивание во внутренних узлах области
Do j=1,m
Do i=1,Nx
T(i,j)=Tnew(i,j)
End do
End do
c Пересылка граничных значений на соседние ПЭ
tag =100
If (rank.eq.0) timeStart1 = MPI_Wtime()
Call MPI_SENDRECV(T(0,1), Nx+2, MPI_double_precision,
1 left, tag,
2 T(0,0), Nx+2, MPI_double_precision,
3 left, tag, comm, status, ierr)
Call MPI_SENDRECV (T(0,m), Nx+2, MPI_double_precision,
1 right, tag,
2 T(0,m+1), Nx+2, MPI_double_precision,
3 right, tag, comm, status, ierr)
If (rank.eq.0) timeStop1= timeStop1+MPI_Wtime()-timeStart1
End do
c Фиксация времени окончания расчетов
If (rank.eq.0) timeStop=MPI_Wtime()-timeStart
Do i=1,Nx
Do j=1,Ny
Tpas(i,j)=T(i,j)
End do
End do
c Сбор результатов на нулевом процессорном элементе
Call MPI_GATHER( Tpas(1,1), m*Nx,
1 MPI_DOUBLE_PRECISION,
Страницы
- « первая
- ‹ предыдущая
- …
- 185
- 186
- 187
- 188
- 189
- …
- следующая ›
- последняя »
