logo
Лекции - Чернышева

2. Расчетные формулы

hx=hy=h - шаг;

xi±1=xi±h

yj±1=yj±h

τ

tk+1=tk+ τ

u(x,y,t)~

=u(xi,yj,tk)

k=0

3. Алгоритм распараллеливания. Воспользуемся геометрическим видом параллелизма. Мембрану «разрежем» на прямоугольные полосы приблизительно равных частей по оси X. (аналогично стержню).

Введём дополнительные столбцы точек в начале и в конце участков для всех процессов кроме нулевого и последнего. В начальный момент времени во всех точках определим значения смещений и поперечных скоростей с учётом ведения столбцов дополнительных точек.

Организуем цикл по времени от t начальное до t максимальное. На каждой итерации будет выполняться:

  1. все процессы одновременно вычисляют свои значения смещений в своих внутренних точках. Вычисленные значения записываются во вспомогательный массив ;

  2. все процессы одновременно переприсваивают значение →

  1. значение смещения в своих граничных точках процессы получают от соседних процессов, для которых эти точки являются внутренними. Передача осуществляется за четыре такта. В данном случае передаём столбцы значений.

double u [n][m]

MPI_Send (u[1], m, MPI_DOUBLE, rank-1, msgtag, MPI_COMM_WORLD);

  1. определим значения смещений на границах области

  2. все процессы делают шаг по времени и проверяют условие окончания итерационного процесса. Если процесс не закончился, то переходим к пункту 1, иначе – к пункту 6;

  3. все процессы последовательно печатают смещения. Нумерация сквозная. Значения в дополнительных точках не печатаются;

  1. Ускорение вычислений. Ускорение достигается за счёт одновременного вычисления всеми процессами новых значений смещений во внутренних точках своих подобластей. Потеря времени за счёт передач. Потери точности при данном алгоритме не происходит.