400
где
))()(/(1)),()(/()( VVVVVy
yyyyy
ν
=
∞
.
Здесь
y – одна из воротных переменных. Кроме этого, в системе
есть еще одно уравнение для переменной [
Ca]
i
, определяющей
величину тока
I
st
:
[
Ca]
i
= -10
-4
I
si
+0.07(10
-4
-[Ca]
i
) .
В итоге мы имеем 8 нелинейных обыкновенных
дифференциальных уравнений, определяющих динамику
изолированной клетки. Детальное описание модели можно найти в
оригинальной статье Луо и Руди [3].
Мы рассматривали решетку размером 600х600 подобных
осцилляторов, которые были диффузионно электрически связаны с
ближайшими соседями, т.е. образовывали регулярную 2D решетку.
Решение систем уравнений динамики подобных сильно
нелинейных
релаксационных систем, как правило, требует применения
таких точных методов численного интегрирования, как, например,
алгоритм Рунге-Кутта четвертого порядка. К сожалению, данный
алгоритм не является оптимальным при использовании параллельных
вычислений. Это связано с тем, что в таком случае на каждом шаге
интегрирования мы вынуждены четыре раза производить
синхронизацию и обмен данными между
различными процессами,
производящими расчет. При достаточно больших размерах
исследуемой системы, это становится существенным фактором,
заметно понижающим скорость и эффективность вычислений.
Учитывая подобные обстоятельства, мы решили использовать
другой алгоритм, специально предназначенный для интегрирования
систем типа (1) и построенный таким образом, что позволяет
осуществлять обмен данными между процессами один раз за
итерацию. Суть
алгоритма сводится к раздельному интегрированию
правой части первого уравнения системы (1) – отдельно нелинейные
функции, описывающие динамику одного элемента, и отдельно
слагаемое, отвечающее за диффузионную связь с другими клетками – а
также использованию адаптивного дробления шага интегрирования в
зависимости от текущего значения производной интегрируемой
переменной. Подробнее об этом алгоритме в [4].
Параллельный алгоритм
Разработка параллельного приложения на основе готового
последовательного кода осуществлялась с использованием MPI.
Основными задачами, которые необходимо было решить, являлись: