ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
          
        
        
          
            109
          
        
        
          {
        
        
          diffnorm=B[i][j] - A[i][j];
        
        
          }
        
        
          }
        
        
          }
        
        
          // Переприсваивание внутренних точек области
        
        
          for(i=1;i<=m;i++)
        
        
          {
        
        
          for(j=1;j<n-1;j++)
        
        
          {
        
        
          A[i][j] = B[i][j];
        
        
          }
        
        
          }
        
        
          // Пересылка граничных значений в соседние процессоры
        
        
          // посылка первой(1) и прием первой(0)
        
        
          for(j=0;j<n;j++)
        
        
          {
        
        
          sendfirst[j] = A[1][j];
        
        
          }
        
        
          MPI_Sendrecv(sendfirst, n, MPI_DOUBLE, left, tag,
        
        
          recvfirst, n, MPI_DOUBLE, left, tag, MPI_COMM_WORLD,
        
        
          &status);
        
        
          if(iam != 0)
        
        
          {
        
        
          for(j=1;j<n-1;j++)
        
        
          {
        
        
          A[0][j]= recvfirst[j];
        
        
          }
        
        
          }
        
        
          // посылка последней(m) и прием последней строки(m+1)
        
        
          for(j=0;j<n;j++)
        
        
          {
        
        
          sendlast[j] = A[m][j];
        
        
          }
        
        
          MPI_Sendrecv(sendlast, n, MPI_DOUBLE, right,
        
        
          tag, recvlast, n, MPI_DOUBLE, right, tag,
        
        
          MPI_COMM_WORLD, &status);
        
        
          if(iam != nprocs - 1)
        
        
          {
        
        
          for(j=1;j<n-1;j++)
        
        
          {
        
        
          A[m + 1][j]= recvlast[j];
        
        
          }
        
        
          }
        
        
          // Вычисление невязки и проверка условия достижения сходимости
        
        
          MPI_Allreduce( &diffnorm, &gdiffnorm, 1, MPI_DOUBLE,
        
        
          MPI_MAX, MPI_COMM_WORLD);
        
        
          if(gdiffnorm < eps)
        
        
          {
        
        
          if(iam==(nprocs-1) || iam==0){m=m+1;
        
        
          }