Метод конечных объемов

редактировать

Метод конечных объемов (FVM ) - это метод представления и оценки уравнения в частных производных в форме алгебраических уравнений. В методе конечных объемов объемные интегралы в уравнении с частными производными, которые содержат член дивергенции, преобразуются в поверхностные интегралы с использованием теоремы о дивергенции. Затем эти члены оцениваются как потоки на поверхностях каждого конечного объема. Поскольку поток, входящий в данный объем, идентичен потоку, выходящему из соседнего объема, эти методы являются консервативными. Еще одно преимущество метода конечных объемов состоит в том, что он легко формулируется для учета неструктурированных сеток. Метод используется во многих пакетах вычислительной гидродинамики. «Конечный объем» относится к небольшому объему, окружающему каждую узловую точку на сетке.

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

Содержание
  • 1 Пример
  • 2 Общий закон сохранения
  • 3 См. Также
  • 4 Дополнительная литература
  • 5 Ссылки
  • 6 Внешние ссылки
Пример

Рассмотрим простую задачу 1D адвекции :

(1) ∂ ρ ∂ T + ∂ е ∂ Икс знак равно 0, T ≥ 0. {\ Displaystyle \ quad (1) \ qquad \ qquad {\ frac {\ partial \ rho} {\ partial t}} + {\ frac {\ partial f} {\ partial x}} = 0, \ quad t \ geq 0.}\ quad (1) \ qquad \ qquad {\ frac {\ partial \ rho} {\ partial t}} + {\ frac {\ partial f} {\ partial x}} = 0, \ quad t \ geq 0.

Здесь ρ = ρ (x, t) {\ displaystyle \ rho = \ rho \ left (x, t \ right) \}\ rho = \ rho \ left (x, t \ right) \ представляет переменную состояния, а f = f (ρ (x, t)) {\ displaystyle f = f \ left (\ rho \ left (x, t \ right) \ right) \}f = f \ left (\ rho \ left (x, t \ right) \ right) \ представляет поток или поток ρ {\ displaystyle \ rho \}\ rho \ . Обычно положительное значение f {\ displaystyle f \}f \ представляет поток вправо, а отрицательное f {\ displaystyle f \}f \ представляет поток слева. Если мы предположим, что уравнение (1) представляет текущую среду постоянной площади, мы можем подразделить пространственную область x {\ displaystyle x \}x \ на конечные объемы или ячейки с центрами ячеек. индексируется как i {\ displaystyle i \}i \ . Для конкретной ячейки, i {\ displaystyle i \}i \ , мы можем определить среднее значение объема ρ i (t) = ρ (x, t) {\ displaystyle {\ rho} _ {i} \ left (t \ right) = \ rho \ left (x, t \ right) \}{\ rho} _ {i} \ left (t \ right) = \ rho \ left (x, t \ right) \ во время t = t 1 {\ displaystyle {t = t_ { 1}} \}{\ displaystyle {t = t_ {1}} \} и x ∈ [xi - 1 2, xi + 1 2] {\ displaystyle {x \ in \ left [x_ {i - {\ frac {1} {2} }}}, x_ {i + {\ frac {1} {2}}} \ right]} \}{x \ in \ left [x _ {{i - {\ frac {1} {2}}}}, x _ {{i + {\ frac {1} {2}}}} \ right]} \ , поскольку

(2) ρ ¯ i (t 1) = 1 xi + 1 2 - xi - 1 2 ∫ xi - 1 2 xi + 1 2 ρ (x, t 1) dx, {\ displaystyle \ quad (2) \ qquad \ qquad {\ bar {\ rho}} _ {i} \ left (t_ {1} \ right) = {\ frac {1} {x_ {i + {\ frac {1} {2}}} - x_ {i - {\ frac {1} {2}}}}} \ int _ {x_ {i - {\ frac {1} {2}}}} ^ {x_ {i + {\ frac {1} {2}}}} \ rho \ left (x, t_ {1} \ right) \, dx,}\ quad (2) \ qquad \ qquad {\ bar {\ rho}} _ {i} \ left (t_ {1} \ right) = {\ frac {1} {x _ {{i + {\ frac {1} {2}}}} - x _ {{i - {\ frac {1} {2}}}}}} \ int _ {{x _ {{i - {\ frac {1} {2}}}}}} ^ {{x _ {{i + {\ frac {1} {2}}}}}} \ rho \ left (x, t_ {1} \ right) \, dx,

и во время t = t 2 {\ displaystyle {t = t_ {2}} \}{t = t_ {2}} \ as,

(3) ρ ¯ i (t 2) Знак равно 1 xi + 1 2 - xi - 1 2 ∫ xi - 1 2 xi + 1 2 ρ (x, t 2) dx, {\ displaystyle \ quad (3) \ qquad \ qquad {\ bar {\ rho}} _ {i} \ left (t_ {2} \ right) = {\ frac {1} {x_ {i + {\ frac {1} {2}}} - x_ {i - {\ frac {1} {2} }}}} \ int _ {x_ {i - {\ frac {1} {2}}}} ^ {x_ {i + {\ frac {1} {2}}}} \ rho \ left (x, t_ {2} \ right) \, dx,}\ quad (3) \ qquad \ qquad {\ bar {\ rho}} _ {i} \ left (t_ {2} \ right) = {\ frac {1} {x _ {{i + {\ frac {1} {2}}}} - x _ {{i - {\ frac {1} {2}}}}}} \ int _ {{x _ {{i - {\ frac {1} {2}}} }}} ^ {{x _ {{i + {\ frac {1} {2}}}}}} \ rho \ left (x, t_ {2} \ right) \, dx,

где xi - 1 2 {\ displaystyle x_ {i - {\ frac {1} {2}}} \}x _ {{i- {\ frac {1} {2}}}} \ и xi + 1 2 {\ displaystyle x_ {i + {\ frac {1} {2}}} \}x _ {{i + {\ frac {1} { 2}}}} \ представляют местоположения восходящих и нисходящих граней или ребер соответственно iith {\ displaystyle i ^ {th} \}i ^ {{th}} \ ячейка.

Интегрируя уравнение (1) по времени, получаем:

(4) ρ (x, t 2) = ρ (x, t 1) - ∫ t 1 t 2 fx (x, t) dt, {\ displaystyle \ quad (4) \ qquad \ qquad \ rho \ left (x, t_ {2} \ right) = \ rho \ left (x, t_ {1} \ right) - \ int _ {t_ { 1}} ^ {t_ {2}} f_ {x} \ left (x, t \ right) \, dt,}\ quad (4) \ qquad \ qquad \ rho \ left (x, t_ {2} \ right) = \ rho \ left (x, t_ {1} \ right) - \ int _ {{t_ {1}}} ^ {{t_ {2}}} f_ {x} \ left (x, t \ right) \, dt,

где fx = ∂ f ∂ x {\ displaystyle f_ {x} = { \ frac {\ partial f} {\ partial x}}}f_ {x} = {\ frac {\ partial f} {\ partial x}} .

Чтобы получить среднее значение объема ρ (x, t) {\ displaystyle \ rho \ left (x, t \ right)}\ rho \ left (x, t \ right) во время t = t 2 {\ displaystyle t = t_ {2} \}t = t _ {{2}} \ , мы интегрируем ρ (x, t 2) {\ displaystyle \ rho \ left ( x, t_ {2} \ right)}\ rho \ left (x, t_ {2} \ right) по объему ячейки, [xi - 1 2, xi + 1 2] {\ displaystyle \ left [x_ {i - {\ frac {1 } {2}}}, x_ {i + {\ frac {1} {2}}} \ right]}\ left [x _ {{i - {\ frac {1} {2}}}}, x _ {{i + {\ frac {1} {2}}}} \ right] и разделите результат на Δ xi = xi + 1 2 - xi - 1 2 {\ displaystyle \ Delta x_ {i} = x_ {i + {\ frac {1} {2}}} - x_ {i - {\ frac {1} {2}}}}\ Delta x_ {i} = x _ {{i + {\ frac {1} {2}}}} - x _ {{i - {\ frac {1} {2}}}} , т.е.

(5) ρ ¯ i (t 2) = 1 Δ xi ∫ xi - 1 2 xi + 1 2 {ρ (x, t 1) - t 1 t 2 fx (x, t) dt} dx. {\ displaystyle \ quad (5) \ qquad \ qquad {\ bar {\ rho}} _ {i} \ left (t_ {2} \ right) = {\ frac {1} {\ Delta x_ {i}}} \ int _ {x_ {i - {\ frac {1} {2}}}} ^ {x_ {i + {\ frac {1} {2}}}} \ left \ {\ rho \ left (x, t_ { 1} \ right) - \ int _ {t_ {1}} ^ {t_ {2}} f_ {x} \ left (x, t \ right) dt \ right \} dx.}\ quad (5) \ qquad \ qquad {\ bar {\ rho}} _ {{i}} \ left (t _ {{2}} \ right) = {\ frac {1} {\ Delta x_ {i}}} \ int _ { {x _ {{i - {\ frac {1} {2}}}}}} ^ {{x _ {{i + {\ frac {1} {2}}}}}} \ left \ {\ rho \ left ( x, t _ {{1}} \ right) - \ int _ {{t _ {{1}}}} ^ {{t_ {2}}} f _ {{x}} \ left (x, t \ right) dt \ right \} dx.

Мы предполагаем, что f {\ displaystyle f \}f \ работает хорошо, и мы можем изменить порядок интегрирования. Также помните, что поток нормален к единице площади ячейки. Теперь, поскольку в одном измерении fx ≜ ∇ ⋅ f {\ displaystyle f_ {x} \ triggeredq \ nabla \ cdot f}{\ displaystyle f_ {x} \ треугольникq \ набла \ cdot f} , мы можем применить теорему о расходимости, т.е. ∮ v ∇ ⋅ fdv = ∮ S fd S {\ displaystyle \ oint _ {v} \ nabla \ cdot fdv = \ oint _ {S} f \, dS}\ oint _ {{v}} \ nabla \ cdot fdv = \ oint _ {{S}} f \, dS и замените объемный интеграл дивергенции со значениями f (x) {\ displaystyle f (x) \}f (x) \ , вычисленными на поверхности ячейки (края xi - 1 2 {\ displaystyle x_ {i - {\ frac {1} {2}}} \}x _ {{i- {\ frac {1} {2}}}} \ и xi + 1 2 {\ displaystyle x_ {i + {\ frac {1} {2} }} \}x _ {{i + {\ frac {1} { 2}}}} \ ) конечного объема следующим образом:

(6) ρ ¯ i (t 2) = ρ ¯ i (t 1) - 1 ∆ xi (∫ t 1 t 2 fi + 1 2 dt - ∫ t 1 t 2 fi - 1 2 dt). {\ displaystyle \ quad (6) \ qquad \ qquad {\ bar {\ rho}} _ {i} \ left (t_ {2} \ right) = {\ bar {\ rho}} _ {i} \ left ( t_ {1} \ right) - {\ frac {1} {\ Delta x_ {i}}} \ left (\ int _ {t_ {1}} ^ {t_ {2}} f_ {i + {\ frac {1 } {2}}} dt- \ int _ {t_ {1}} ^ {t_ {2}} f_ {i - {\ frac {1} {2}}} dt \ right).}\ quad (6) \ qquad \ qquad {\ bar {\ rho}} _ {i} \ left (t_ {2} \ right) = {\ bar {\ rho} } _ {i} \ left (t_ {1} \ right) - {\ frac {1} {\ Delta x _ {{i}}}} \ left (\ int _ {{t_ {1}}} ^ {{ t_ {2}}} f _ {{i + {\ frac {1} {2}}}} dt- \ int _ {{t_ {1}}} ^ {{t_ {2}}} f _ {{i- { \ frac {1} {2}}}} dt \ right).

где fi ± 1 2 = е (xi ± 1 2, t) {\ displaystyle f_ {i \ pm {\ frac {1} {2}}} = f \ left (x_ {i \ pm {\ frac {1 } {2}}}, t \ right)}f _ {{i \ pm {\ frac {1} {2} }}} = f \ left (x _ {{i \ pm {\ frac {1} {2}}}}, t \ right) .

Таким образом, мы можем вывести полудискретную числовую схему для вышеупомянутой задачи с центрами ячеек, индексированными как i {\ displaystyle i \}i \ , и с потоками на краях ячеек, индексированными как i ± 1 2 {\ displaystyle i \ pm {\ frac {1} {2}}}i \ pm {\ frac {1} {2}} , дифференцируя (6) по времени, чтобы получить :

(7) d ρ ¯ idt + 1 Δ xi [fi + 1 2 - fi - 1 2] = 0, {\ displaystyle \ quad (7) \ qquad \ qquad {\ frac {d {\ bar { \ rho}} _ {i}} {dt}} + {\ frac {1} {\ Delta x_ {i}}} \ left [f_ {i + {\ frac {1} {2}}} - f_ {i - {\ frac {1} {2}}} \ right] = 0,}\ quad (7) \ qquad \ qquad {\ frac {d {\ bar {\ rho}} _ {i}} {dt}} + {\ frac {1} {\ Delta x_ {i}}} \ left [f _ {{i + {\ frac {1} { 2}}}} - f _ {{i - {\ frac {1} {2}}}} \ right] = 0,

где значения для краевых потоков, fi ± 1 2 {\ displaystyle f_ {i \ pm {\ frac {1} {2}}}}f _ {{i \ pm {\ frac {1} {2}}}} , банка б e реконструируется с помощью интерполяции или экстраполяции средних значений ячеек. Уравнение (7) точно для средних значений объема; т.е. при его выводе никаких приближений не делалось.

Этот метод также можно применить к ситуации 2D, рассматривая северную и южную грани вместе с восточной и западной гранями вокруг узла.

Общий закон сохранения

Мы также можем рассмотреть общую проблему закона сохранения, представленную следующим PDE,

(8) ∂ u ∂ t + ∇ ⋅ f (u) = 0. {\ displaystyle \ quad (8) \ qquad \ qquad {{\ partial {\ mathbf {u}}} \ over {\ partial t}} + \ nabla \ cdot {\ mathbf {f}} \ left ({\ mathbf {u}} \ right) = {\ mathbf {0}}.}\ quad (8) \ qquad \ qquad {{\ partial {{\ mathbf u}}} \ over {\ partial t}} + \ nabla \ cdot {{\ mathbf f}} \ left ({{\ mathbf u} } \ right) = {{\ mathbf 0}}.

Здесь u {\ displaystyle {\ mathbf {u}} \}{{\ mathbf u}} \ представляет вектор состояний и f {\ displaystyle \ mathbf {f} \}{\ mathbf f} \ представляет соответствующий тензор потока . Мы снова можем подразделить пространственную область на конечные объемы или ячейки. Для конкретной ячейки, i {\ displaystyle i \}i \ , мы берем интеграл объема по общему объему ячейки, vi {\ displaystyle v_ {i} \}v _ {{i}} \ , что дает

(9) ∫ vi ∂ u ∂ tdv + ∫ vi ∇ ⋅ f (u) dv = 0. {\ displaystyle \ quad (9) \ qquad \ qquad \ int _ {v_ {i}} {{\ partial {\ mathbf {u}}} \ over {\ partial t}} \, dv + \ int _ {v_ { i}} \ nabla \ cdot {\ mathbf {f}} \ left ({\ mathbf {u}} \ right) \, dv = {\ mathbf {0}}.}\ quad (9) \ qquad \ qquad \ int _ {{v _ {{i }}}} {{\ partial {{\ mathbf u}}} \ over {\ partial t}} \, dv + \ int _ {{v _ {{i}}}} \ nabla \ cdot {{\ mathbf f} } \ left ({{\ mathbf u}} \ right) \, dv = {{\ mathbf 0}}.

При интегрировании первого члена, чтобы получить среднее по объему и применение теоремы о расходимости ко второму, это дает

(10) vidu ¯ idt + ∮ S if (u) ⋅ nd S = 0, {\ displaystyle \ quad (10) \ qquad \ qquad v_ { i} {{d {\ mathbf {\ bar {u}}} _ {i}} \ over {dt}} + \ oint _ {S_ {i}} {\ mathbf {f}} \ left ({\ mathbf {u}} \ right) \ cdot {\ mathbf {n}} \ dS = {\ mathbf {0}},}\ quad (10) \ qquad \ qquad v _ {{i}} {{d {{\ mathbf {{\ bar u}}}}} _ {{i}}} \ над {dt}} + \ oint _ {{S _ {{i}}}} {{\ mathbf f}} \ left ({{\ mathbf u}} \ right) \ cdot {{\ mathbf n}} \ dS = {{\ mathbf 0}},

где S i {\ displaystyle S_ {i} \}S _ {{i}} \ представляет общую площадь поверхности ячейки, а n {\ displaystyle {\ mathbf {n}}}{{\ mathbf n}} представляет собой единичный вектор, нормальный к поверхности и указывающий наружу. Итак, наконец, мы можем представить общий результат, эквивалентный (8), т.е.

(11) d u ¯ i d t + 1 v i ∮ S i f (u) ⋅ n d S = 0. {\ displaystyle \ quad (11) \ qquad \ qquad {{d {\ mathbf {\ bar {u}}} _ {i}} \ over {dt}} + {{1} \ over {v_ {i}} } \ oint _ {S_ {i}} {\ mathbf {f}} \ left ({\ mathbf {u}} \ right) \ cdot {\ mathbf {n}} \ dS = {\ mathbf {0}}. }\ quad (11) \ qquad \ qquad {{d {{\ mathbf {{\ bar u}}}} _ {{i}}} \ over {dt}} + {{1} \ over {v _ {{i}}}} \ oint _ {{S _ {{i}}}} {{\ mathbf f}} \ left ({{\ mathbf u}} \ right) \ cdot {{\ mathbf n}} \ dS = {{\ mathbf 0}}.

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

Схемы конечного объема консервативны, поскольку средние значения ячеек изменяются из-за краевых потоков. Другими словами, потеря одной клетки - это прибыль другой клетки!

См. Также
Дополнительная литература
  • Eymard, R. Gallouët, TR, Herbin, R. (2000) Метод конечных объемов Справочник по численному анализу, Vol. VII, 2000, с. 713–1020. Редакторы: П.Г. Ciarlet и JL Lions.
  • Хирш, C. (1990), Численное вычисление внутренних и внешних потоков, Том 2: Вычислительные методы для невязких и вязких потоков, Wiley.
  • Лэйни, Калберт Б. (1998), Computational Gas Dynamics, Cambridge University Press.
  • Левек, Рэндалл (1990), Численные методы для законов сохранения, ETH Lectures in Mathematics Series, Birkhauser-Verlag.
  • LeVeque, Randall (2002), Методы конечных объемов для гиперболических задач, Cambridge University Press.
  • Патанкар, Сухас В. (1980), Численный перенос тепла и поток жидкости, полушарие.
  • Таннехилл, Джон К. и др. (1997), Computational Fluid Mechanics and Heat Transfer, 2nd Ed., Taylor and Francis.
  • Toro, EF (1999), Riemann Solvers and Numerical Methods for Fluid Dynamics, Springer-Verlag..
  • Wesseling, Pieter (2001), Principles of Computational Fluid Dynamics, Springer-Verlag.
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-20 04:28:27
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте