Применение отладчика параллельных программ при решении задачи о фокусировке ударных
и взрывных волн на многопроцессорных ЭВМ
|
При использовании Compaq Visual Fortran v 6.1 поставьте в Project Settings -> Fortran “Category:” в “External Procedures” и затем “String Length Argument Passing” в “After All Args”.
2. Использовать Run-Time Library надо Multithreaded DLL.
При использовании Compaq Visual Fortran v 6.1 поставьте в Project Settings -> C/C++ “Category:” в “Code Generation” и затем “Use run-time Library” – в “Multithreaded DLL”.
Компилятор Фортрана должен при передаче строк в качестве фактических параметров передавать неявный параметр “длина строки” после всех аргументов.
Компилятор g77 v 2.95.3 делает это по умолчанию.
Библиотека связи с монитором MonitorConnect.lib должна быть прилинкована к выполняемой программе, т.е. включена в проект или указана в дополнительных библиотеках, требуемых для сборки. Также необходимы системные библиотеки Ws2_32.lib User32.lib.
При использовании Compaq Visual Fortran v 6.1 поставьте в Project Settings -> Link “Category:” в “Input” и затем в “Object/Library modules:” укажите все
необходимые библиотеки.
Библиотека связи с монитором libndebug.a должна быть прилинкована к выполняемой программе, т.е. включена в проект или указана в дополнительных библиотеках, требуемых для сборки. Сделать это можно просто указав ее в команде сборки, например:
mpif77 -o
mpi_go summa.f libndebug.a
Для старта отладчика вначале запускаются Интерфейс
Пользователя в составе Интегрированной Среды (смотрите описание работы с
Интегрированной Средой Разработки программ на языке НОРМА) и монитор. Они
устанавливают соединение друг с другом, монитор создает файл с информацией для
отлаживаемой программы, и затем запускается отлаживаемая программа и
соединяется с монитором.
Все взаимодействия (между Библиотекой связи с
монитором и Монитором, между Монитором и Пользовательским интерфейсом)
реализованы с помощью семейства протоколов TCP/IP, используя любой свободный TCP/IP порт. Сделаем небольшое
отступление о том, как организуется взаимодействие по протоколу TCP/IP и о сложностях, возникающих из-за “закрытости” портов по соображениям
безопасности.
Один из взаимодействующих процессов выступает в
роли “Сервера”, другой – “Клиента”. Сервер занимает определенный TCP/IP порт (если он уже не занят на данный момент никаким другим приложением) на
компьютере, на котором он был запущен, и начинает его “слушать”. Клиент для
установления соединения обращается к компьютеру, где запущен Сервер, по тому TCP/IP порту, который слушает Сервер (т.е. Клиент должен знать TCP/IP адрес и номер порта Сервера). Сервер, получив запрос на соединение,
устанавливает его. После этого Клиент и Сервер могут начать обмениваться
сообщениями.
Существует достаточно большой набор так называемых
“стандартных“ протоколов, построенных на основе TCP/IP и занимающих заранее известные TCP/IP порты. Так, например,
сервер, обеспечивающий передачу данных по протоколу FTP, слушает и устанавливает соединения по TCP/IP порту 21, HTTP сервер
использует TCP/IP порт 80 и т.д. Остальные программы, к
которым относится и наш отладчик, могут использовать любые другие свободные
порты. Но здесь могут возникать сложности, связанные с установленными на
компьютере, где выполняется отлаживаемая программа, и в сети, обеспечивающей
доступ к этому компьютеру, средств обеспечения компьютерной безопасности. Чаще
всего системные администраторы в настройках брэндмаузеров запрещают
использование всех TCP/IP портов, кроме тех, которые необходимы
установленному в сети программному обеспечению.
Для наибольшей гибкости и успешного преодоления
сложностей в процессе коммуникации,
связанных с настройками безопасности, и Монитор, и Пользовательский интерфейс
могут выступать как в качестве Клиента, так и в качестве Сервера при установке
соединения между собой. Библиотека связи с монитором выступает всегда в роли
Клиента, а Монитор – в роли сервера при установке соединения между ними, т.к. в
данном случае обратное распределение ролей бесполезно. Если существует
возможность установить соединение от Монитора-Клиента к отлаживаемой задаче-Серверу,
то и обратную связь можно будет также установить.
По-другому обстоит дело с Пользовательским
интерфейсом, выполняющемся на
компьютере пользователя. Зачастую для доступа к удаленному компьютеру пользователь
может использовать узкий набор стандартных интерфейсов (скажем, SSH, HTTP) и все, использование остальных TCP/IP портов закрыто по соображениям безопасности. Запустить Монитор на
удаленном компьютере с использованием какого-то стандартного порта нельзя, т.к.
там, на удаленном компьютере, все стандартные TCP/IP порты уже заняты. Предлагаемый в нашей схеме выход – использовать
стандартные TCP/IP порты на своем, локальном компьютере.
Таким образом, запустив Пользовательский интерфейс в роли сервера,
обслуживающего, скажем, 80-й TCP/IP порт (на котором
должен быть HTTP сервер),
можно соединиться с ним Монитором-Клиентом, т.к. системы безопасности
удаленного компьютера будут считать, что используется стандартный протокол.
В режиме локальной отладки (смотрите описание
работы с Интегрированной Средой Разработки программ на языке НОРМА) выберите
только порт для установления соединения (1500 по умолчанию) и укажите файл с
выполняемой программой. Начните отладку в Интегрированной Среде, и монитор и
выполняемая программа запустятся автоматически.
В режиме удаленной отладки запустите вначале либо
монитор (смотрите ниже описание опций монитора), либо начните отладку в
Интегрированной Среде – первым то, что должно выступать сервером при установке
соединения. Затем запустите тот компонент, который должен выступать в роли
клиента с указанием ему параметров (адрес и порт) сервера. Например, если
монитор запущен как сервер на удаленном компьютере и сообщил следующее:
Monitor for Norma debugging started
Server fire.applmat.ru ready on port 1500
Wait for the UI connect...
То диалог запуска удаленной отладки в
Интегрированной Среде должен выглядеть следующим образом:
Затем, после установления соединения между монитором и Интерфейсом пользователя, монитор создает файл с информацией для отлаживаемой программы NDmonpar.inf. Этот файл должен находиться в директории, откуда запускается отлаживаемая программа. Она читает этот файл и устанавливает соединение с монитором. После этого начинается отладка.
Монитор представляет собой один исполняемый файл Monitor.exe под Windows и monitor под UNIX. Формат командной строки следующий:
monitor <arguments for mpi_run> [options for monitor]
Если в командной строке есть хоть один неизвестный
монитору аргумент и не заданы опции монитору ни –remote, ни –exec (см. ниже их описание), то монитор вызывает на выполнение ‘mpi_run’ и передает ему все нераспознанные аргументы.
Монитор имеет следующие опции:
–remote
Не вызывать ‘mpi_run’.
-exec <programname>
Вызывать не ‘mpi_run’, а указанную программу.
-server <host>[:<port>]
Выступить в роли клиента, присоединиться к
указанному серверу по указанному порту. Если эта опция не задана, монитор будет
выступать в роли сервера, занимая первый свободный порт начиная с 1500.
-wd <path>
Сменить текущую директорию на указанную.
Таким образом, типичный запуск монитора-сервера
под UNIX выглядит следующим
образом:
monitor –np <кол-во процессов> <файл с исполняемой программой>
Поскольку численное решение задач
газовой динамики предъявляет высокие требования к объему памяти и к
быстродействию, был создан комплекс программ для моделирования широкого класса
двух- и трехмерных задач на различных параллельных архитектурах с помощью языка
НОРМА [1]
. Использование вышеописанного отладчика позволило резко повысить как скорость
разработки, так и качество соответствующего программного обеспечения. Ниже
приводятся полученные на кластерной архитектуре результаты численного решения
задачи о фокусировке волн.
Рассматривается вхождение ударной или взрывной волны в полости различного вида. На рис.1 приведен один из рассматриваемых вариантов постановки задачи – движение плоской ударной волны заданной интенсивности и ее взаимодействие с полостью. Приводимые результаты расчетов вхождения волн в конус оригинальны в том отношении, что впервые проводилось моделирование кумуляции неплоских (сферических) волн.
Рассматривается течение невязкого сжимаемого идеального
нетеплопроводного газа. Описание такого течения проводится в переменных Эйлера.
Двумерные нестационарные уравнения берутся в виде следующей системы :
,
,
,
.
Здесь t
– время, d=0 для плоского, d=1 для осесимметричного течения, x, y – пространственные координаты
(декартовы для плоского, осевая и радиальная соответственно для
осесимметричного течения), u, v –
компоненты вектора скорости w=(u,v)
по x и y соответственно, r – плотность, p
– давление, e – удельная полная
энергия. Система замыкается уравнением состояния в виде
, где g – показатель адиабаты газа.
Численное решение проводится методом С.К.Годунова [2].
В расчётах размеры сетки всегда ограничены,
поэтому на её границе ставятся условия гладкого продолжения течения,
заключающиеся в приравнивании нулю производных искомых функций по нормали к
внешним границам. Это означает расчёт в граничных ячейках распада разрыва с
фиктивной ячейкой с такими же параметрами. Расчёт в ячейках, прилегающих к
линиям симметрии или неподвижным жёстким стенкам, заключается в расчёте распада
разрыва с фиктивной ячейкой, в которой давление, плотность и продольная
скорость такие же, а скорость по нормали к внешней границе имеет
противоположный знак.
Заметим, что разностная схема исследована на устойчивость для линейной системы с постоянными коэффициентами и линеаризованным уравнением состояния. При проведении расчёта шаг по времени выбирался равным
,
где – шаги сетки по
соответствующим пространственным координатам, –скорости
соответственно крайних левой и правой волн, образующихся при распаде разрыва на
границе между расчетными ячейками, К
– коэффициент запаса. Смысл этого коэффициента следующий: его увеличение
улучшает “вид” получаемого численного решения (например, увеличивается крутизна
профиля ударной волны). Но при приближении его к единице появляются
неустойчивости численного решения, делающие невозможным дальнейший расчет.
Получаемые в расчетах числовые данные дают
представление о развитии течения при их интерпретации в виде: изолиний
(например давления: вхождение взрывной волны в конус – рис. 2), рапределения
параметра течения вдоль координаты х
(давление на рис. 3), изменения параметров в какой-либо фиксированной точке по
времени (датчик в вершине конуса – рис. 4).
В качестве характеристики кумуляции в полости
принимается значение степени фокусировки, определяемое как отношение
максимального значения параметра, полученного внутри объема в процессе расчета,
к значению, которое получилось бы при нормальном отражении от плоской стенки
ударной волны с параметрами, равными локальным значениям их на входе в полость.
Так, например, для волны, у которой при входе в полость давление на фронте
равно Рвх=1.8, соответствующая волна с плоским фронтом имеет
давление отражения, равное Рторм=3.1.
Параметрические расчеты показали изменение показателя фокусировки в зависимости от угла раствора. На рис.5 (вход плоской ударной волны с числом Маха 1.647 в конусовидную полость) показан характер изменения степени фокусировки по давлению и температуре в зависимости от угла полураскрытия (a/2 – рис.1). Следует отметить, что положения максимумов этих двух параметров отличаются. А изменение степени фокусировки по температуре носит более плавный характер.
Использование многопроцессорных машин позволило
провести большое количество расчетов, в которых изменялся только коэффициент
запаса К в условии устойчивости
разностной схемы. На рис.6 приведены соответствующие результаты – зависимости
степени фокусировки в вершине конусовидной полости от угла ее полураствора при
различных коэффициентах запаса (число Маха ударной волны 2.4, показатель
адиабаты газа g =1.4).
Полученные результаты показывают, что при
изменении К максимумы степени
фокусировки в вершине конуса реализуются при различных углах раствора конуса
(80 градусов при К = 0.5 и 82 градус
при К = 0.6 и 0.7). При этом чем
ближе к этим значениям углов, тем сильнее различаются степени фокусировки. Так,
при 64-градусном растворе конуса различие степени фокусировки при К = 0.5 и К = 0.7 составляет 8%, а для 82 градусов оно достигает 16%. Заметим
также, что если при углах 60¸66 градусов ещё был возможен расчет с К = 0.8, то при дальнейшем увеличении
угла такое значение коэффициента уже не позволяло вести расчет (т.е. нарушалась
устойчивость разностной схемы).
В свете этого представляет интерес провести расчет
и произвести сравнение с решением аналогичной задачей о фокусировке волны,
полученной другим расчетным методом. На рис.7 приведена постановка такой
задачи: движение ударной волны заданной интенсивности в плоском канале и ее
взаимодействие с фокусирующей полостью, которой заканчивается канал. Задача в
такой постановке рассмотрена в [3]
. В этой работе фокусирующая полость заканчивается плоской стенкой, имеющей полувысоту
Н, не равную нулю. Нами же рассматривался и вариант «чисто» клиновидной
полости.
Определение максимального
значения давления проводилось как по всему расчетному полю, так и по значениям,
зафиксированным датчиками, расположенными с некоторым шагом вдоль стенки
полости. Результаты сведены в следующую таблицу:
Полуугол |
H/R |
Максимум по полю давления |
Максимум по датчикам на стенке полости |
Другой численный метод |
30 |
0 |
4.184 |
5.792 |
|
30 |
0.2 |
3.789 |
4.016 |
4.7 |
30 |
0.3 |
3.152 |
3.177 |
4.5 |
45 |
0 |
4.963 |
5.555 |
|
45 |
0.1 |
3.996 |
3.8 |
7.1 |
45 |
0.3 |
2.486 |
2.513 |
2.7 |
60 |
0 |
2.33 |
2.333 |
|
60 |
0.3 |
2.698 |
1.656 |
2.0 |
В случае, когда степень
фокусировки в 3-й колонке больше, чем в 4-й, означает, что максимальное
значение давления реализовывалось не на стенке полости (т.е. в том числе и не в
её вершине). Как видно, может наблюдаться как близость результатов, полученных
различными расчетными методами, так и их расхождение даже в рамках одного
метода (что показывают и вышеприведенный рис.6).
Разработанное программное
обеспечение позволяет в сжатые сроки проводить массовые парметрические расчеты,
моделирующие нестационарные газодинамические течения.
Показано, что любой конкретный
расчет может считаться достоверным только тогда, когда его результаты близки к
результатам физического эксперимента. Данный расчет моделировал физический
эксперимент [4]
, выполненный для условий кумуляции взрывных волн в конусе.
[1] А.Н.Андрианов, А.Б.Бугеря,
К.Н.Ефимкин, И.Б.Задыхайло. НОРМА. Описание языка. Рабочий стандарт. Препринт
ИМП им.М.В.Келдыша. №120. 1995.
[2] Годунов С.К., Забродин А.В., Иванов М.Я.
и др. Численное решение многомерных задач газовой динамики. М. Наука. 1976.
[3] О.А.Васильев. Численное моделирование процессов фокусировки ударных волн и
детонации в химически неравновесных газах. Дисс. к.ф.-.м.н. МАИ. Москва. 1995.
[4] С.Б.Базаров, П.А.Гусев, И.М.Набоко, В.А.Петухов, О.И.Солнцев. Кумуляция
взрывных волн в конусе в физическом и вычислительном экспериментах. Научные
труды института теплофизики экстремальных состояний ОИВТ РАН. М. 2003.
Рис.1
Рис. 2.
Рис. 3.
Рис. 4.
Рис. 5.
Рис. 6.
Рис.7