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



Сторінка6/6
Дата конвертації13.04.2016
Розмір0.56 Mb.
1   2   3   4   5   6

2.6 Программная реализация. Расчетные алгоритмы


Разбиение расчетной области на контрольные объемы осуществляется при помощи неструктурированных треугольных сеток. В качестве основных переменных выступают средние значения переменных решения (давление и компоненты скорости потока) по ячейкам сетки, заданные в центральных точках ячеек. Для представления сетки в памяти выбрана структура ''узлы и треугольники''.

Построение расчетной сетки осуществляется во внешнем генераторе (Gambit), после чего данные транслируются во внутренний формат разработанного программного кода.

Интерфейс разрабатывался в многоплатформенном фреймворке Qt. Для взаимодействия интерфейса и библиотеки используется техника сигналов и слотов.

2.6.1 Алгоритм расчета установившегося течения


Используется метод искусственной сжимаемости. Система уравнений модели турбулентности решается отдельно от системы уравнений Навье-Стокса.

• Инициализация физических переменных и переменных модели турбулентности начальными значениями

• Итерационный процесс () по времени

- Построение вектора правых частей и матрицы СЛАУ относительно по известным значениям

- Численное решение СЛАУ

- Вычисление узловых значений переменных модели турбулентности на следующем шаге по известным значениям

- Вычисление узловых значений на следующей итерации

- Проверка достижения сходимости решения (параграф 4.1)

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


2.6.2 Алгоритм расчета нестационарного течения


Используется метод искусственной сжимаемости с двойным шагом по времени. Система уравнений модели турбулентности решается отдельно от системы уравнений Навье-Стокса.

• Инициализация физических переменных и переменных модели турбулентности или значениями в начальный момент физического времени

• Внешний итерационный процесс () по физическому времени

- Деформация расчетной сетки в соответствие с законом перемещения обтекаемого тела, вычисление скоростей движения сторон ячеек

- Вычисление турбулентной вязкости (раздел 5)

- Инициализация переменных значениями в момент физического времени

- Внутренний итерационный процесс () по искусственному времени

* Построение вектора правых частей и матрицы СЛАУ относительно по известным узловым значениям , (параграф 4.3)

* Численное решение СЛАУ

* Вычисление узловых значений на следующем шаге искусственного времени

* Проверка достижения сходимости решения по искусственному времени (параграф 4.2)

- Вычисление узловых значений переменных модели турбулентности в момент по известным значениям

- По завершении внутреннего итерационного процесса, узловые значения переменных соответствуют состоянию течения в момент физического времени

• К моменту завершения внешнего итерационного процесса, получена последовательность состояний течения , в моменты физического времени ,


2.6.3 Система классов


Используется метод контрольного объема, предполагающий выполнение законов сохранения в ячейках расчетной сетки. Поэтому в качестве базовых объектов были выбраны ячейка и её границы. В зависимости от расположения ячеек по отношению к расчетной области, условий на границах ячеек и физической модели течения, искомые величины вычисляются по соответствующим алгоритмам. Для ячеек и границ были разработаны соответствующие классы, необходимые переменные и алгоритмы их вычислений – методы класса. При построении расчетной сетки каждой границе приписывается определённый тип в соответствии с поставленной задачей, а для каждой ячейки указываются её соседи. На стадии выполнения программы, в зависимости от типа границы, вызываются соответствующие методы класса, и обработка для каждого типа ячеек выполняется по своему алгоритму. Таким образом, уже на стадии построения сетки формируется математическая модель задачи. Разработанная структура классов позволяет хранить информацию о расчетной области любой сложности.

рисунок1.bmp

Рис. Фрагмент расчётной сетки

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

На базе разработанных классов написана новая версия программы «SmartFlow» для решения двумерных и трехмерных задач.

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

Для сохранения текущего состояния расчёта «SmartFlow» в файлы, используется сериализация реализуемая в библиотеке Boost.Serialization [3]. Она позволяет добавить сериализацию в разработанные классы, просто указав в них какие данные нужно сохранять, какие нет. Однако она не работает с замкнутыми ссылками. Поэтому в класс ячеек были введён параметр - номер ячейки и массив индексов соседей. После загрузки по этому массиву индексов соседей восстанавливаются прежние связи между элементами. Также реализован экспорт расчетных результатов в формат пакета визуализации данных «Paraview».



diag1.bmp

Рис. Структура классов для расчётной области

В «SmartFlow» для построения сеток используются внешние редакторы. Поэтому была разработана специальная структура классов, позволяющая импортировать сетки из внешних редакторов (в том числе Gambit). Для импорта неструктурированных сеток из программного комплекса «Gambit» был применен синтаксический анализатор Boost.Spirit позволяющий описывать синтаксис в форме Бэкуса—Наура. При импорте пользователю предлагается выбрать соответствие между типами зон Gambit-а и SmartFlow-а.
Для реализации универсального решателя, который мог бы решать различные задачи, используя нашу структуры сеток, была разработана специальная структура классов. Класс решателя содержит в себе метод выполняющий итерации и следящий за тем закончились они или нет, так же этот метод следит за временем по которому ведутся итерации и на определённых шагах установленных пользователем делает экспорт полученного на данный момент решения и бэкапа данных, который, в случае если программа прекратит решение по какой-либо причине возобновить его не с самого начала, а с точки на которой был сделан бэкап.

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


структура решатель-сетка.bmp

Рис. Диаграмма взаимосвязи сетки и решателя

Универсальность так же обеспечивается тем, что на базе имеющихся классов можно разрабатывать новые, использую механизм наследования.
В «SmartFlow» разработано два класса модели: один для расчёта потока жидкости, другой для расчета упругой деформации пластины. В сочетании эти модели позволяют решать прикладную задачу нестационарного обтекания потоком вязкой несжимаемой жидкости упругого машущего крыла [2]. Уравнение расчёта деформации пластины предоставлены в форме метода конечных объемов, что позволяет обобщить большинство функций.

Интерфейс в «SmartFlow» был реализован в кроссплатформенном фреймворке Qt. Для отображения двухмерных и трёхмерных сеток в программе была выбрана библиотека OpenGL так же ввиду её кроссплатформености. Так же в интерфейсе отображается информация обо всей сетке в целом и об отдельной ячейке, выбранной пользователем. В интерфейсе присутствуют графики изменения параметров решения во времени, они отображают интегральные характеристики и характеристики отдельно выбранной ячейки. Для отображения хода решения и выполнения других функций была выбрана техника сигналов и слотов из библиотеки Boost. Применение сигналов и слотов обеспечивает потокобезопасность, что позволяет выполнять интерфейс в одном потоке, а решение в другом. На предоставленной ниже диаграмме отображена взаимосвязь интерфейса с решателем и сеткой.



структура решатель-сетка-интерфейс.bmp

Рис. Диаграмма взаимосвязи сетки, решателя и интерфейса

Таким образом, архитектура программного кода «SmartFlow» обеспечивает простоту его модификации, как при расширении спектра задействованных физических моделей, так и при добавлении новой пользовательской функциональности.

3 Верификация расчетного метода

3.1 Оценка сходимости метода

3.2 Результаты тестовых расчетов

3.2.1 Задача турбулентного обтекания плоской пластины

3.2.2 Задача обтекания двумерного кругового цилиндра в канале

3.2.3 Задача обтекания двумерного канала с обратным уступом

3.2.4 Задача обтекания двумерного квадратного цилиндра в неограниченной жидкости

3.2.5 Задача обтекания двумерного кругового цилиндра, совершающего заданные колебания поперек потока

4 Исследование пропульсивных характеристик машущего крыла

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

4.2 Пропульсивные характеристики машущего крыла

4.3 Анализ результатов расчета пропульсивных характеристик движителя типа машущее крыло

4.3.1 Угловые заданные колебания профиля

4.3.2 Вертикально-угловые заданные колебания профиля

4.3.3 Колебания жесткого профиля на упругих связях

Заключение

Литература


[1] Андерсон Д., Таннехил Дж., Плетчер Р. Вычислительная гидромеханика и теплообмен. М.: Мир, 1990.

[2] Баландин М.Ю., Шурина Э.П. Методы решения СЛАУ большой размерности. // Новосибирск: Изд­во НГТУ, 2000.

[3] Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. // М.: Наука, 1987.

[4] Белов И.А., Исаев С.А. Моделирование турбулентных течений: Учебное пособие. // СПб: БГТУ, 2001.

[5] Белов И.А., Исаев С.А., Коробков В.А. Задачи и методы расчета отрывных течений несжимаемой жидкости // Л.: Судостроение, 1989.

[6] Белоцерковский О.М. Численное моделирование в механике сплошных сред. М.: Физматлит, 1994.

[7] Волков К.Н. Реализация схемы расщерления на разнесенной сетке для расчета нестационарных течений вязкой несжимаемой жидкости. // Вычислительные методы и программирование. 2006. 269-282.

[8] Голуб Дж., Ван Лоун Ч. Матричные вычисления. // М.: Мир, 1999.

[9] Елизарова Т.Г., Калачинская И.С., Шеретов Ю.В., Шильников Е.В. Численное моделирование отрывных течений за обратным уступом.

[10] Лойцянский Л.Г. Механика жидкости и газа. // М.: ГИТТЛ, 1970.

[11] Пейре Р., Тейлор Т.Д. Вычислительные методы в задачах механики жидкости. // Л.: Гидрометеоиздат, 1986.

[12] В.А., Тарасов С.В. Метод численного расчета течений вязкой жидкости с использованием осредненных по Рейнодльдсу уравнений Навье-Стокса // Тезисы докладов научно-технической конференции ''Проблемы мореходных качеств судов и корабельной гидромеханики'' (XLII Крыловские чтения). СПб, 2006. 17-19.

[13] Скворцов А.В. Обзор алгоритмов построения триангуляции Делоне. // Вычислительные методы и программирование. 2002. 14-39.

[14] Флетчер К. Вычислительные методы в динамике жидкостей. М.: Мир, 1991.

[15] Anderson J.D. Computational Fluid Dynamics. The Basics with Applications. 1995.

[16] Baldwin B.S., Lomax H. Thin-Layer Approximation and Algebraic Model for Separated turbulent Flows. // AIAA Paper, 78-257. 1978.

[17] Barth T.J. Aspects of Unstructured Grids and Finite-Volume Solvers for the Euler and Navier-Stokes Equations. // Unstructured Grid Methods for Advection-Dominated Flows. AGARD, 1992.

[18] Barth T.J., Frederickson P.O. Recent Developments in High Order K-Exact Reconstruction on Unstructured Meshes. // AIAA paper 93-0668, 1993.

[19] Biedron R.T., Vatsa V.N., Atkins H.L. Simulation of Unsteady Flows Using an Unstructured Navier-Stokes Solver on Moving and Stationary Grids. // AIAA paper 2005-5093, 2005.

[20] Chung T.J. Computational fluid dynamics. // CUP, 2002.

[21] Fekken G. Numerical Simulation of Free-Surface Flow with Moving Rigid Bodies. 2004.

[22] Ferziger J.H., Peric M. Computational methods fluid dynamics. // Springer, 2001.

[23] Guilmineau, E. and Queutey, P. A Numerical simulation of vortex shedding from an oscillating circular cylinder // J. Fluids Struct. Vol. 16. 2002. 773–794.

[24] Hino T. Navier-Stokes Computations of Ship Flows on Unstructured Grids // Twenty-Second Symposium on Naval Hydrodynamics, 1998. 463-475.

[25] Hino T. Unsteady Flow Simulation Around a Moving Body by an Unstructured Navier-Stokes Solver.

[26] Langtangen H.P., Mardal K. Numerical Methods for Incompressible Viscous Flow.

[27] Kolmogorov A.N. Equations of Turbulent Motion of an Incompressible Fluid. 1942.

[28] Kravchencko A.G., Moin P. Numerical Studies of Flow Over a Circular Cylinder at ReD=3900 // Physics of Fluids. 2000. Vol. 12. 403-417.

[29] Kwak D.C., Chang J.L., Shanks S.P., Chakravarthy S.K. A Three-Dimensional Incompressible Navier-Stokes Solver Using Primitive Variables.

[30] Ollivier-Gooch C., Van Altena M. A High Order Accurate Unstructured Mesh Finite-Volume Scheme for the Advection-Diffusion Equation. 2002.

[31] Piomelli U., Scotti A., Balaras E. Large-Eddy Simulations of Turbulent Flows, from Desktop to Supercomputer (Invited Talk). 2002.

[32] Roe P.L. Characteristic-Based Scheme for the Euler Equations // Annual Review on Fluid Mechanics. 1986. Vol. 18. 337-365.

[33] Rogers S.E., Kwak D. Upwind Differencing Scheme for the Time-Accurate Incompressible Navier-Stokes Equations // AIAA Journal. 1990. Vol. 28. 253-262.

[34] Rogers S.E., Kwak D. Upwind Differencing Scheme for the Incompressible Navier-Stokes Equations // Applied Numerical Mathematics. 1991. Vol. 8. 43-64.

[35] Schafer M., Turek S. Benchmark Computations of Laminar Flow Around a Cylinder // Notes on Numerical Fluid Mechanics. 1996. 856-869.

[36] Sohankar A., Davidson L., Norberg C. Numerical Simulation of Unsteady Flow Around a Square Two-Dimensional Cylinder // In Proc. 12-th Australasian Fluid Mechanics Conference, 1995. 517-520.

[37] Spalart P.R., Allmaras S.R. A One Equation Turbulence Model for Aerodynamic Flows. AIAA Paper, 92-439. 1992

[38] Van Altena M. High-Order Finite-Volume Discretisation for Solving a Modified Advection-Diffusion Problem on Unstructured Triangular Meshes. 1999.

[39] Wilcox D.C. Multiscale Model for Turbulent Flows. // AIAA Journal. Vol. 26. 1988.

[40] Wilcox D.C. Turbulence modelling for CFD. // DCW Industries, 1993.



[41] Yang J., Balaras E. An embedded-boundary formulation for large-eddy simulation of turbulent flows interacting with moving boundaries. 2005.

Приложения

Иллюстрации

1   2   3   4   5   6


База даних захищена авторським правом ©shag.com.ua 2016
звернутися до адміністрації

    Головна сторінка