Доклады Российской академии наук. Математика, информатика, процессы управления, 2021, T. 501, № 1, стр. 62-66
ПРИМЕНЕНИЕ СХЕМЫ CABARET ДЛЯ РАСЧЕТА РАЗРЫВНЫХ РЕШЕНИЙ ГИПЕРБОЛИЧЕСКОЙ СИСТЕМЫ ЗАКОНОВ СОХРАНЕНИЯ
В. В. Остапенко 1, 2, *, В. А. Колотилов 2, 3, **
1 Институт гидродинамики им. М.А. Лаврентьева Сибирского отделения Российской академии наук
Новосибирск, Россия
2 Новосибирский национальный исследовательский государственный университет
Новосибирск, Россия
3 Институт теоретической и прикладной механики
им. С.А. Христиановича Сибирского отделения Российской академии наук
Новосибирск, Россия
* E-mail: ostigil@mail.ru
** E-mail: kolotilov1992@gmail.com
Поступила в редакцию 17.02.2021
После доработки 06.09.2021
Принята к публикации 05.11.2021
Аннотация
Предлагается метод квазиинвариантов при построении схемы CABARET, аппроксимирующей гиперболическую систему законов сохранения, не допускающую запись в форме инвариантов. Применение этого метода вместе с дополнительной коррекцией потоков обеспечивает монотонизацию разностного решения при расчете разрывных решений с ударными волнами и контактными разрывами. В качестве примера рассмотрена система уравнений неизоэнтропической газовой динамики с уравнением состояния политропного газа. Тестовые расчеты начально-краевой задачи Blast Wave показали, что предлагаемая схема подавляет нефизические осцилляции, приводящие к неустойчивости разностного решения при расчете по схеме CABARET, в которой дополнительная коррекцией потоков отсутствует.
1. Для численного решения гиперболических систем законов сохранения [1] широко применяется схема CABARET [2], монотонность которой изучалась в [3–6]. Одно из преимуществ этой схемы заключается в том, что она локализует ударные волны точнее [7], чем схемы формально более высокого порядка, например, схема WENO5 [8]. Стандартный алгоритм схемы CABARET [2], аппроксимирующей гиперболическую систему дифференциальных уравнений, предполагает, что эта система допускает запись в форме инвариантов [1]. Для построения схемы CABARET, аппроксимирующей систему уравнений неизоэнтропической газовой динамики [1], не допускающей записи в форме инвариантов, используются квазиинварианты [2], определяемые неоднозначно.
В настоящей работе предлагается общий метод квазиинвариантов при построении схемы CABARET, аппроксимирующей гиперболическую систему законов сохранения, не допускающую запись в форме инвариантов. Применение этого метода вместе с дополнительной коррекцией потоков обеспечивает монотонизацию разностного решения при расчете разрывных решений с ударными волнами и контактными разрывами. В качестве примера рассмотрена система законов сохранения неизоэнтропической газовой динамики с политропным уравнением состояния [1]. Тестовые расчеты классической задачи Blast Wave [9] показали, что предлагаемая схема эффективно подавляет нефизические осцилляции, приводящие к неустойчивости разностного решения при расчете по другим вариантам схемы CABARET, в которых дополнительная коррекцией потоков отсутствует.
2. Рассмотрим строго гиперболическую систему законов сохранения
где ${\mathbf{u}}(x,t)$ – искомая, а ${\mathbf{f}}({\mathbf{u}})$ – заданная вектор-функции, содержащие m компонент. Строгая гиперболичность системы ((1)) означает, что все собственные значения ${{\lambda }_{i}}({\mathbf{u}})$ матрицы Якоби $A({\mathbf{u}}) = {{{\mathbf{f}}}_{{\mathbf{u}}}}({\mathbf{u}})$ действительны и различны, в силу чего соответствующие им левые собственные вектора ${{{\mathbf{l}}}^{i}}({\mathbf{u}})$ образуют базис в пространстве ${{\mathbb{R}}^{m}}$.Известно [1], что при $m \geqslant 3$ дифференциальные формы ${{{\mathbf{l}}}^{i}}({\mathbf{u}})d{\mathbf{u}}$ могут быть неинтегрируемы и система ((1)) в этом случае не допускает полного набора инвариантов. Если некоторая дифференциальная форма ${{{\mathbf{l}}}^{i}}({\mathbf{u}})d{\mathbf{u}}$ интегрируема, то система (1) имеет инвариант ${{w}_{i}}({\mathbf{u}})$, сохраняющийся вдоль характеристик i-го семейства. Если дифференциальная форма ${{{\mathbf{l}}}^{i}}({\mathbf{u}})d{\mathbf{u}}$ неинтегрируема, то будем предполагать существование вектора ${{{\mathbf{\bar {u}}}}_{i}}[{\mathbf{u}}] = (\bar {u}_{1}^{i},...,\bar {u}_{s}^{i})$, где $s < m$, (состоящего из некоторых компонент вектора ${\mathbf{u}}$) такого, что интегрируемой является дифференциальная форма ${{{\mathbf{l}}}^{i}}({{{\mathbf{\bar {u}}}}_{i}}[{{{\mathbf{u}}}_{c}}],{{{\mathbf{\tilde {u}}}}_{i}}[{\mathbf{u}}])d{\mathbf{u}}$, где ${{{\mathbf{u}}}_{c}}$ – произвольный постоянный вектор, а ${{{\mathbf{\tilde {u}}}}_{i}}[{\mathbf{u}}] = (\tilde {u}_{1}^{i},...,\tilde {u}_{{m - s}}^{i})$ – вектор, состоящий из тех компонент вектора ${\mathbf{u}}$, которые не вошли в вектор ${{{\mathbf{\bar {u}}}}_{i}}[{\mathbf{u}}]$. Функцию ${{w}_{i}}({{{\mathbf{\bar {u}}}}_{i}}[{{{\mathbf{u}}}_{c}}],{\mathbf{u}})$, получаемую в результате такого интегрирования, будем называть квазиинвариантом системы (1). Инварианты системы (1) будем рассматривать как частный случай ее квазиинвариантов. В результате формируется вектор квазиинвариантов ${\mathbf{w}} = {\mathbf{W}}({\mathbf{u}})$, относительно которого будем предполагать, что преобразование ${\mathbf{W}}({\mathbf{u}})$ является невырожденным.
3. Схему CABARET, аппроксимирующую систему (1), будем строить на прямоугольной разностной сетке
(2)
$\{ {{x}_{j}},{{t}_{n}}\} {\text{:}}\;{{x}_{j}} = jh,\quad {{t}_{{n + 1}}} = {{t}_{n}} + {{\tau }_{n}},\quad {{t}_{0}} = 0,$(3)
${{\tau }_{n}} = \frac{{zh}}{{\mathop {\max }\limits_{i,j} {\text{|}}{{\lambda }_{i}}({\mathbf{v}}_{{j + 1/2}}^{n}){\text{|}}}},\quad z \in (0,1).$В этой схеме используются потоковые ${\mathbf{v}}_{j}^{n}\, = \,{\mathbf{v}}({{x}_{j}},{{t}_{n}})$ и консервативные ${\mathbf{v}}_{{j + 1/2}}^{n} = {\mathbf{v}}({{x}_{{j + 1/2}}},{{t}_{n}})$ переменные, заданные в целых xj и полуцелых xj + 1/2 = = ${{x}_{j}} + h{\text{/}}2$ узлах разностной сетки.
Пусть ${\mathbf{v}}_{j}^{n}$, ${\mathbf{v}}_{{j + 1/2}}^{n}$ – известное численное решение на n-м временном слое ${{t}_{n}}$. Разностное решение ${\mathbf{v}}_{j}^{{n + 1}}$, ${\mathbf{v}}_{{j + 1/2}}^{{n + 1}}$ получается по схеме CABARET в четыре этапа. На первом этапе вычисляются величины
(4)
${\mathbf{v}}_{{j + 1/2}}^{{n + 1/2}} = {\mathbf{v}}({{x}_{{j + 1/2}}},{{t}_{{n + 1/2}}}) = {\mathbf{v}}_{{j + 1/2}}^{n} - {{r}_{n}}({\mathbf{f}}({\mathbf{v}}_{{j + 1}}^{n}) - {\mathbf{f}}({\mathbf{v}}_{j}^{n})),$(5)
${\mathbf{v}}_{{j + 1/2}}^{{n + 1}} = {\mathbf{v}}_{{j + 1/2}}^{{n + 1/2}} - {{r}_{n}}({\mathbf{f}}({\mathbf{\tilde {v}}}_{{j + 1}}^{{n + 1}}) - {\mathbf{f}}({\mathbf{\tilde {v}}}_{j}^{{n + 1}})).$На четвертом этапе определяются окончательные значения ${\mathbf{v}}_{j}^{{n + 1}}$. Алгоритм схемы на втором и четвертом этапах приводится ниже.
4. На втором этапе вычисляются квазиинварианты системы (1) в целых узлах $(n + 1)$-го временного слоя. Опишем процедуру этого вычисления для некоторого квазиинварианта ${{w}_{i}}$ (для краткости индекс i будем опускать). Сначала для каждой пространственной ячейки $[{{x}_{j}},{{x}_{{j + 1}}}]$ находятся значения
(6)
$\begin{gathered} \left( {{{w}_{r}}} \right)_{j}^{n} = w({\mathbf{b}},{\mathbf{v}}_{j}^{n}), \\ \left( {{{w}_{l}}} \right)_{{j + 1}}^{n} = w({\mathbf{b}},{\mathbf{v}}_{{j + 1}}^{n}),\quad w_{{j + 1/2}}^{{n + 1/2}} = w({\mathbf{b}},{\mathbf{v}}_{{j + 1/2}}^{{n + 1/2}}), \\ \end{gathered} $(7)
$\begin{gathered} \left( {{{{\bar {w}}}_{r}}} \right)_{j}^{{n + 1}} = 2w_{{j + 1/2}}^{{n + 1/2}} - \left( {{{w}_{l}}} \right)_{{j + 1}}^{n}, \\ \left( {{{{\bar {w}}}_{l}}} \right)_{{j + 1}}^{{n + 1}} = 2w_{{j + 1/2}}^{{n + 1/2}} - \left( {{{w}_{r}}} \right)_{j}^{n}. \\ \end{gathered} $Следуя [2], величины (7) при помощи функции
(8)
$F\left( {u,m,M} \right) = \left\{ {\begin{array}{*{20}{c}} {u,}&{m \leqslant u \leqslant M,} \\ {m,}&{u \leqslant m,} \\ {M,}&{u \geqslant M,} \end{array}} \right.$(9)
$\begin{gathered} ({{{\tilde {w}}}_{r}})_{j}^{{n + 1}} = F(\left( {{{{\bar {w}}}_{r}}} \right)_{j}^{{n + 1}},m_{{j + 1/2}}^{n},M_{{j + 1/2}}^{n}), \\ ({{{\tilde {w}}}_{l}})_{j}^{{n + 1}} = F(\left( {{{{\bar {w}}}_{l}}} \right)_{j}^{{n + 1}},m_{{j + 1/2}}^{n},M_{{j + 1/2}}^{n}), \\ \end{gathered} $(10)
$\begin{gathered} m_{{j + 1/2}}^{n} = \min (\left( {{{w}_{r}}} \right)_{j}^{n},w_{{j + 1/2}}^{n},\left( {{{w}_{l}}} \right)_{{j + 1}}^{n}), \\ M_{{j + 1/2}}^{n} = \max (\left( {{{w}_{r}}} \right)_{j}^{n},w_{{j + 1/2}}^{n},\left( {{{w}_{l}}} \right)_{{j + 1}}^{n}), \\ \end{gathered} $Значение квазиинварианта $\tilde {w}_{j}^{{n + 1}}$ определяется в зависимости от знаков скоростей характеристик
(11)
$\lambda _{{j - 1/2}}^{{n + 1/2}} = \lambda ({\mathbf{v}}_{{j - 1/2}}^{{n + 1/2}}),\quad \lambda _{{j + 1/2}}^{{n + 1/2}} = \lambda ({\mathbf{v}}_{{j + 1/2}}^{{n + 1/2}})$(13)
$\widetilde w_{j}^{{n + 1}} = w_{{j - 1/2}}^{{n + 1/2}} + w_{{j + 1/2}}^{{n + 1/2}} - w_{j}^{n}.$В завершении второй этапа по найденным значениям вектора квазиинвариантов $\widetilde {\mathbf{w}}_{j}^{{n + 1}}$ вычисляется вектор $\widetilde {\mathbf{v}}_{j}^{{n + 1}} = {{{\mathbf{W}}}^{{ - 1}}}(\widetilde {\mathbf{w}}_{j}^{{n + 1}})$, где W–1 – преобразование, обратное к W.
5. По аналогии с [6] на четвертом этапе проводится дополнительная коррекция квазиинвариантов $\widetilde w_{j}^{{n + 1}}$. При выполнении неравенств $\lambda _{{j - 1/2}}^{{n + 1/2}} \leqslant 0$ и $\lambda _{{j + 1/2}}^{{n + 1/2}} \geqslant 0$ эта коррекция проводится по формуле
а в остальных случаях – по формуле в которой(16)
$\begin{gathered} m_{j}^{{n + 1}} = \min (w_{{j - 1/2}}^{{n + 1}},w_{{j + 1/2}}^{{n + 1}}), \\ M_{j}^{{n + 1}} = \max (w_{{j - 1/2}}^{{n + 1}},w_{{j + 1/2}}^{{n + 1}}), \\ \end{gathered} $Дополнительная коррекция потоков, аналогичная (14)–(16), является необходимым условием монотонности схемы CABARET при аппроксимации линейного гиперболического уравнения [3], квазилинейного закона сохранения [4, 5] и линейной гиперболической системы дифференциальных уравнений [6]. В различных вариантах схемы CABARET, рассматриваемых в [2], такая дополнительная коррекция потоков не применяется.
6. В качестве конкретной гиперболической системы (1) выберем систему уравнений неизэнтропической газовой динамики [1], для которой
Поскольку система (1), (17) имеет инвариант
сохраняющийся вдоль характеристик второго семейства, то на поверхностях ${{w}_{2}} = {\text{const}}$ дифференциальные формы, соответствующие первому и третьему характеристическим уравнениям этой системы, интегрируемы [1]. Однако уравнения таких поверхностей можно получить только в результате решения системы (1), (17), в силу чего инварианты ${{w}_{1}}$ и ${{w}_{3}}$, сохраняющиеся вдоль характеристик первого и третьего семейств этой системы, в общем случае выписать в явном виде не удается. Поэтому в настоящей работе мы применяем для схемы CABARET (4)–(16) изохорические квазиинварианты [2]:7. Рассмотрим для системы (1), (17) при $x \in [0,X]$ и $t \geqslant 0$, где X = 1, начально-краевую задачу Blast Wave [9] со следующими начальными
(18)
$\begin{gathered} \rho (x,0) = 1,\quad u(x,0) = 0, \\ p(x,0) = \left\{ {\begin{array}{*{20}{r}} {1000,}&{0 \leqslant x \leqslant 0.1,} \\ {0.01,}&{0.1 < x \leqslant 0.9,} \\ {100,}&{0.9 < x \leqslant 1,} \end{array}} \right.\quad x \in [0,X]\,, \\ \end{gathered} $Тестовые расчеты задачи Blast Wave (17)–(19) показали, что в схеме CABARET [2], при построении которой применяются линейные квазиинварианты, а также в схеме CABARET (4)–(13) без дополнительной коррекции потоков (14)–(16), в начале численного расчета в окрестности левого контактного разрыва возникают нефизические осцилляции давления, которые с течением времени неограниченно возрастают, приводя к неустойчивости разностного решения. В схеме CABARET (4)–(16) эти нефизические осцилляции эффективно подавляются, что позволяет с достаточно высокой точностью рассчитывать задачу Blast Wave. Для иллюстрации процесса сходимости разностного решения к точному на рис. 1 и в табл. 1 в момент времени $t = 0.038$ приведены результаты расчета задачи (1), (17)–(19) по схеме CABARET (4)–(16) на последовательности сгущающихся сеток (2) с коэффициентом $z = 0.4$ в условии устойчивости (3). Точное решение, показанное на рис. 1 сплошной линией, моделируется численным расчетом по схеме PPM [9] на достаточно мелкой разностной сетке (2), (3). В табл. 1 приведены ошибки разностного решения, вычисляемые по формуле
Таблица 1
$h$ | 0.01 | 0.004 | 0.002 | 0.001 | 0.0005 | 0.00025 |
$\Delta $ | 9.2133 | 3.9031 | 1.8730 | 1.0453 | 0.4773 | 0.1560 |
Предложенная модификация схемы CABARET обобщается на случай многомерных гиперболических систем законов сохранения, а также на случай уравнений газовой динамики с другими уравнениями состояния.
Список литературы
Рождественский Б.Л., Яненко Н.Н. Системы квазилинейных уравнений. М.: Наука, 1978.
Головизнин В.М., Зайцев М.А., Карабасов С.А., Короткин И.А. Новые алгоритмы вычислительной гидродинамики для многопроцессорных вычислительных комплексов. М.: Изд-во Моск. ун-та, 2013.
Ковыркина О.А., Остапенко В.В. О монотонности схемы КАБАРЕ, аппроксимирующей гиперболическое уравнение со знакопеременным характеристическим полем // ЖВМиМФ 2016. Т. 56. № 5. С. 796–815.
Зюзина Н.А., Остапенко В.В. О монотонности схемы КАБАРЕ, аппроксимирующей скалярный закон сохранения с выпуклым потоком // ДАН. 2016. Т. 466. № 5. С. 513–517.
Остапенко В.В., Черевко А.А. Применение схемы КАБАРЕ для расчета разрывных решений скалярного закона сохранения с невыпуклым потоком // ДАН. 2017. Т. 476. № 5. С. 518–522.
Ковыркина О.А., Остапенко В.В. О монотонности схемы КАБАРЕ, аппроксимирующей гиперболическую систему законов сохранения // ЖВМиМФ 2018. Т. 58. № 9. С. 1488–1504.
Gologush T.S., Cherevko A.A., Ostapenko V.V. Comparison of the WENO and CABARET schemes at calculation of the scalar conservation law with a nonconvex flux // AIP Conf. Proc. 2020. V. 2293. № 1. P. 370006.
Jiang G.S., Shu C.W. Efficient implementation of weighted ENO schemes // J. Comput. Phys. 1996. V. 126. P. 202-228.
Woodward P., Colella P. The numerical simulation of two-dimensional fluid flow with strong shocks // J. Comp. Phys. 1984. V. 54. P. 115–173.
Дополнительные материалы отсутствуют.
Инструменты
Доклады Российской академии наук. Математика, информатика, процессы управления