Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Разработка программного обеспечения OpenFoam в распределенной вычислительной среде





Для иллюстрации возможностей разработанного подхода приведем решениедля сложного инженерного приложения – расчет задачи течения. Поскольку при решении уравнений динамики течений взаимодействие между параллельными процессами очень интенсивное, реализация таких задач вызов для любой системы распределенных вычислений.

Данный пакет будет установлен на диск с ПО, доступным для всех пользователей кластера. Он подмонтирован в папку /opt/. Итак, для установки OpenFOAM необходимо выполнить следующие шаги:

1) В окне терминала, добавить OpenFOAM в список местоположений в хранилище для apt, чтобы искать,

VERS=$(lsb_release -cs)

sudo sh -c "echo deb http://www.openfoam.org/download/ubuntu $VERS main > /etc/apt/sources.list.d/openfoam.list"

2) Обновить список пакетов APT для учета нового местоположения хранилища

sudo apt-get update

3) Установка OpenFOAM (211 в название относится к версии 2.1.1):

sudo apt-get install openfoam211

4) Установить Paraview

sudo apt-get install paraviewopenfoam3120

Для того, чтобы использовать установленный пакет OpenFOAM, надо выполнить следующие шаги

1) Открыть Bashrc файл в домашнем каталоге пользователя

gedit ~/.bashrc

2) В нижней части этого файла, добавить следующие строки

source /opt/openfoam211/etc/bashrc

3) Оттестировать приложения icoFoam, из пакета OpenFOAM,

icoFoam -help

4) " Usage " должно появиться сообщение, что установки и конфигурации пользователя завершены.

Для запуска последовательных расчетов необходимо выполнить следующие шаги:

Создать директорию проекта в $ HOME/OpenFOAM каталоге с именем <пользователь> -2.1.1 и создать каталог с именем, запустив в нем,

mkdir -p $FOAM_RUN

Скопировать папку примеры в OpenFOAM каталог. Если переменные среды OpenFOAM установлены правильно, то следующая команда приведет к результату:

cp -r $FOAM_TUTORIALS $FOAM_RUN

Для примера рассмотрим первый случай несжимаемого ламинарного потока в полости:

cd $FOAM_RUN/tutorials/incompressible/icoFoam/cavity

blockMesh

icoFoam

paraFoam

Файл system/decomposeParDict задает параметры для распараллеливания задачи:

• параметр numberOfSubdomains должен соответствовать числу параллельных процессов;

• параметр method задает метод для разбиения области;

• блок simpleCoeffs используется в случае метода «simple» («n (a b c)» указывает, как именно разбивать область (a * b * c = numberOfSubdomains)).

Директория 0 содержит начальные условия задачи, физические свойства переменных указаны в constant/transportProperties.

Мы запустим расчеты с ∆t=10-5. Я не стану приводить содержимое конфигурационных файлов, так как это заняло бы довольно много места, а также потому, что данный пример является одним из стандартных примеров.

Перед запуском расчетов необходимо подготовить данные. Для этого переходим в папку с задачей и выполняем:

blockMesh

Данная команда создаст сетку, для контроля можно выполнить:

checkMesh

Теперь можно запускать собственно расчеты. Для расчетов используется программа (solver) pisoFoam из пакета OpenFOAM:

pisoFoam

Наши вычисления завершились без ошибок. После этого можно запускать программу для визуализации ParaView с помощью скрипта paraFoam (результат показан на рисунке).

paraFoam

Для запуска параллельных расчетов необходимо выполнить следующие шаги:

Вначале выполняем теже действия, что и для последовательных расчетов:

blockMesh

checkMesh

Теперь нужно провести декомпозицию задачи. Для этого нам нужно создать файл decomposeParDict в папке system нашего примера, в котором будут указаны параметры распараллеливания задачи. Его примерное содержимое:

numberOfSubdomains 2;

method simple;

simpleCoeffs

{

n (2 1 1);

delta 0.001;

}

Параметр «numberOfSubdomains» должен соответствовать числу параллельных потоков, которые мы будем запускать (он указывает число подзадач, на которое мы разбиваем нашу задачу). Параметр «method» определяет метод, с помощью которого будет произведено разбиение задачи. В конце мы определяем, как именно будет разделена наша задача (на 2 области по оси x в данном случае). Теперь запускаем программу decomposePar, которая и проведет разбиение:

decomposePar

Теперь можно запускать расчеты

qsub <скрипт>

Содержимое скрипта для запуска:

#!/bin/bash

~/ openfoam.sh <директория_с_данными> pisoFoam

После выполнения расчетов запускаем программу reconstrucPar:

reconstructPar

Теперь мы можем просмотреть результаты при помощи ParaView (paraFoam – скрипт OpenFOAM, подготавливающий данные для ParaView и запускающий данную программу):

paraFoam

Рисунок 4.2 - Просмотр результата в ParaView

 

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

 

Date: 2015-11-14; view: 1012; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию