Введение
Процессы динамического кинетического расщепления представляют большой интерес, поскольку позволяют получать оптически чистые соединения, не прибегая к сложным методам разделения. Важные данные о механизме таких реакций и факторах, определяющих стереоселективность, можно извлечь из результатов изучения кинетики их протекания. Однако сложность расчетов требует поиска новых подходов к математическому определению динамических параметров таких систем.
Результат реакции динамического кинетического расщепления существенно зависит от условий (катализатор, температура и т.д.). Для оценки эффективности процесса динамического кинетического расщепления необходимо знание констант скоростей элементарных реакций. Прямое измерение констант скоростей невозможно. Константы могут определяться путем решения обратной задачи по имеющимся замерам концентраций реактантов. К сожалению, значения замеров известны с достаточно большой ошибкой, определяемой погрешностью измерений. Высокая стоимость компонентов, участвующих в реакции, не позволяет проводить большое число экспериментов, чтобы применить традиционную статистическую обработку результатов.
Постановка задачи
Реакция динамического кинетического расщепления может быть описана [1] системой дифференциальных и алгебраических уравнений с соответствующими начальными условиями:
(1) |
При подcтановке алгебраических уравнений в дифференциальные получаем систему четырех нелинейных обыкновенных дифференциальных уравнений.
Концентрации A0, B0 и E0 известны точно. Во время течения реакции в отдельные моменты ti производятся замеры концентраций A(ti), B(ti), C(ti) и D(ti). Точность замеров описывается относительной и абсолютной погрешностями, так что в каждый момент ti для каждого вещества (A, B, C, D) известен интервал ("ворота"), в котором должно находится истинное значение концентрации.
Неизвестными в задаче являются константы k1, k2, k3, k4 скоростей элементарных реакций. Необходимо найти все возможные значения четверки этих параметров, совместимые с "воротами" замеров, то есть такие, которые обеспечивали бы при численном моделировании системы (1) прохождение смоделированных концентраций через все ворота замеров.
Система (1) является системой дифференциальных уравнений с элементами жесткости [2], для численного решения этой системы была разработана специальная процедура с автоматическим выбором шага. При определенных значениях фазовых переменных интегрирование ведется методом Рунге-Кутта четвертого порядка, при других значениях - первые два уравнения системы (1) подменяются алгебраическими соотношениями, а остальные уравнения интегрируются методом Эйлера.
Для удобства решения задачу разбили на две подзадачи:
I | Задача нахождения хотя бы одной четверки констант k1, k2, k3, k4,
которая соответствовала бы всем воротам замеров. |
II | Задача нахождения множества четверок констант k1, k2, k3, k4, удовлетворяющих воротам замеров. |
Задача I
Для решения задачи нахождения хотя бы одной четверки констант была использована разработанная ранее программа поиска минимума скалярной функции многих переменных [3]. Была сконструирована вспомогательная подпрограмма, которая получает в качестве параметров значения констант k1, k2, k3, k4, проводит численное моделирование химической реакции, выдает в качестве значения невязку между концентрациями при моделировании и воротами замеров. Невязка должна обладать следующим свойством: если хотя бы одно значение смоделированной концентрации проходит мимо ворот замера, то невязка положительна, если же все смоделированные концентрации проходят через ворота, то значение невязки неположительно.
Сконструировано несколько вариантов такой подпрограммы. В одном из них минимизируется максимальное расстояние рассчитаных концентраций от границ ворот замеров (если рассчитанная концентрация оказывается внутри ворот расстояние считается отрицательным).
Так как размерность минимизируемой функции невелика - равна четырем (в случае неопределенности по начальным условиям - пяти), то оптимальное число используемых в вычислениях процессоров составило 8 - 16 (вычислитель МВС-100 [4]).
Результом решения задачи I являются значения величин k1, k2, k3, k4 наилучшие с точки зрения прохождения смоделированных концентраций через ворота, что соответствует наилучшему (в некотором смысле) приближению к реальным константам k1, k2, k3, k4. Если же при таких величинах констант значение на выходе вспомогательной подпрограммы оказывается положительным, то это означает, что либо были взяты слишком узкие ворота (завышена точность измерительных приборов), либо в ансамбле замеров один или несколько замеров оказались "глупыми".
Задача II
Для нахождения всех четверок k1, k2, k3, k4, удовлетворяющих замерам (информационного множества), используется перебор по четырехмерной сетке, которая организована как произведение двух сеток - сетки по k1 и k2 (сетка12) и сетки по k3 и k4 (сетка34).
Сетка34 - прямоугольная, сетка12 может быть задана прямоугольной, косоугольной (параллелограммной) или секториальной с переменным шагом по радиусу.
Распараллеливание ведется по схеме процессорной фермы. Один процессор назначается процессором вывода, все остальные - рабочими. Минимальным заданием является расчет сетки34 при фиксированном узле сетки12.
Под расчетом сетки подразумевается заполнение массива флагов, в котором каждый элемент соответствует узлу сетки34. Паре узлов сетки12 и сетки34 соответствует конкретная четверка констант k1,2,3,4. Если при численном моделировании протекания реакции (с использованием этих k1,2,3,4) концентрации выйдут за рамки хотя бы одних ворот, то соответствующий флаг устанавливается в положение "вне множества". Если концентрации проходят через все ворота, то флаг устанавливается в положение "внутри множества" - соответствующий узел сетки лежит внутри информационного множества. В программе массив флагов реализован как массив char[].
Распределение заданий между рабочими процессорами является статическим - каждый процессор заранее знает задания (номера узлов сетки12), которые ему необходимо рассчитать. Такой способ распределения заданий теоретически не является оптимальным, но позволяет сократить число обменов между рабочими процессорами и ведущим процессором, что при большом размере процессорной сети может существенно снизить накладные расходы.
Если после расчета задания все флаги в массиве флагов оказываются в положении "вне множества", то рабочий переходит к вычислению следующего задания (передачи информации на процессор вывода не происходит). Если хотя бы один флаг оказывается в положении "внутри множества", то рабочий передает на процессор вывода массив флагов и соответствующий номер узла сетки12. То есть передача информации осуществляется только в том случае, если узел сетки12 лежит внутри информационного множества. Такой алгоритм дополнительно сокращает трафик процессорной сети.
После вычисления всех своих заданий рабочий посылает процессору вывода сообщение "рассчитал все задания". Необходимость в посылке этого сообщения имеется не всегда, но в настоящей версии алгоритма это происходит в любом случае.
Процессор вывода поддерживает два массива флагов - для сетки12 и
для сетки34. Начальное значение флагов сетки12 -
"узел не рассчитан", начальное значение флагов сетки34 -
"число узлов = 0". После получения массива флагов от
рабочего процессор вывода:
1. "прибавляет" полученный массив к собственному массиву сетки34
(если соответствующий флаг в полученном массиве имеет значение
"внутри множества", то значение флага
"число узлов = n" заменяется на "число узлов = n+1"),
2. устанавливает в "число узлов = k" соответствующий элемент
массива флагов сетки12, где k - число флагов с признаком
"внутри множества" в полученном массиве,
3. меняет (если необходимо) с "узел не рассчитан" на
"пустой узел" флаги, соответствующие узлам сетки12,
которые рабочий просчитал, но не передал результаты процессору вывода.
В конце работы на процессоре вывода имеем два заполненых массива флагов для сетки12 и сетки34, которые отображают проекции информационного множества на плоскости k1 k2 и k3 k4. Эти проекции сбрасываются в файл в графическом и числовом виде.
Использованный алгоритм позволяет получить частичные результаты при заказе меньшего, чем требуется, времени задачи. Процессор вывода при подходе времени к окончанию сбрасывает результаты, особо помечая неподсчитанные узлы сетки12.
Так как задача требует больших вычислительных затрат и обмен сообщениями в процессорной сети сведен к минимуму удалось получить хорошую эффективность расспараллеливания для количества процессоров до 125 (максимальное число процессоров МВС-100, имеющееся в ИММ).
[1] | Краснов В.П., Королева М.А. Нуклеофильное замещение галогена в 4-галогенпроизводных глутаминовой кислоты. Сообщение 1. Влияние растворителя // Изв. АН, Сер. хим., 1995, N4. С. 652-655. |
[2] | Ракитский Ю.В., Устинов С.М., Черноруцкий И.Г. Численные методы решения жестких систем. Наука, М., 1979. |
[3] | Иванов А.Г. Параллельный алгоритм прямого поиска минимума функции многих переменных 2 // Алгоритмы и программные средства параллельных вычислений: [Сб. науч. тр. Вып. 2.]. Екатеринбург, 1998. С. 110-122. |
[4] | Игумнов А.С., Коновалов А.В., Самофалов В.В., Шарф С.В. Развитие и адаптация системного программного обеспечения МВС-100 // Алгоритмы и программные средства параллельных вычислений: [Сб. науч. тр. Вып. 2.]. Екатеринбург, 1998. С. 123-133. |
1 Работа выполнена при поддержке Российского фонда фундаментальных исследований (проекты 00-01-00348, 00-03-32776, 99-07-90441, 00-15-97390).
2 Электронный
вариант статьи размещен по адресам:
http://home.imm.uran.ru/iagsoft/trasbo2_2_.html,
http://home.ural.ru/~iagsoft/trasbo2_2.html.
Главное меню | Публикации | Электронные публикации | Обо мне |