Математическое моделирование в астрофизике. В 2 частях. Ч.1. Учебное пособие
.pdfт. е. Bx = const. Это серьезное ограничение проистекает из одномерности задачи. Поэтому уменьшение пространственной размерности необходимо использовать с большой осторожностью. Тем не менее одномерные и двумерные расчеты по-прежнему часто используются в связи с большой ресурсоемкостью трехмерных задач.
Система уравнений одномерной МГД содержит семь неизвестных (ρ, vx, vy, vz, E, By, Bz) и имеет семь характеристик:
λ1 = v − cf ; λ2 = v − va; λ3 = v − cs; λ4 = v;
λ5 = v + cs; λ6 = v + va; λ7 = v + cf ;
где
va = √4πρ; |
cs = r |
ρ |
; |
|
|||||
|
Bx |
|
|
|
γp |
||||
|
|
|
|
|
|
|
|
|
|
cf,s = r |
|
|
|
|
. |
||||
2 |
(cs2 |
+ va2) ± q(cs2 + va2)2 − 4csva,x |
|||||||
1 |
|
|
|
|
|
|
|||
Собственные числа приведены в порядке возрастания. Задача о распаде разрыва для системы МГД также может быть линеаризована и решена приближенно. Например, приближенный решатель задача Римана для системы МГД на основе решателя Роу приведен в статье [4].
5.12. Основные принципы разработки кинетических кодов
В этом разделе мы перейдем от самых крупномасштабных гидродинамических кодов к наиболее мелкомасштабным кинетическим. Кинетические коды были разработаны для моделирования бесстолкновительной плазмы
81
на электронных масштабах. Динамика плазмы описывается в них уравнением Власова для функции распределения частиц s-го сорта fs в пространстве координат и скоростей (или координат и импульсов):
∂f |
+ v · fs + h |
q |
E + |
v |
× B + gi · |
∂f |
|
|
s |
s |
|
s |
= 0, |
(5.40) |
|||
∂t |
ms |
c |
∂v |
|||||
где g – ускорение, связанное с действием сил, отличных от электромагнитных (например, гравитации). Ноль в правой части обусловлен отсутствием столкновений.
Далее мы опустим g, поскольку это слагаемое не влияет на сложность расчетов и может быть легко добавлено при необходимости. Также для крат-
кости ограничимся нерелятивистским рассмотрением.
Заряженные частицы плазмы при движении генерируют электромаг-
нитные поля согласно уравнениям Максвелла: |
|
|
|||||||||
4π |
1 ∂E |
|
(5.41) |
||||||||
× B = |
|
|
j + |
|
|
|
; |
||||
c |
c |
∂t |
|||||||||
|
1 ∂B |
|
|
|
|
|
(5.42) |
||||
× E = − |
|
|
|
; |
|
|
|
||||
c |
∂t |
|
|
|
|||||||
· B = 0; |
|
|
|
|
|
(5.43) |
|||||
· E = 4πρ, |
|
|
|
|
|
(5.44) |
|||||
где плотность заряда ρ и плотность тока j выражаются через функции рас-
пределения всех сортов частиц:
y
XX
ρ = qsns = |
|
qs fsd3v; |
(5.45) |
s |
s |
y |
|
|
|
|
XX
j = |
qsnsus = |
qs |
vfsd3v. |
(5.46) |
ss
Таким образом, в кинетическом коде на каждом шаге решаются три подзадачи.
1.Решение уравнения Власова.
2.Вычисление токов и плотностей.
3.Решение уравнений Максвелла.
Это позволяет самосогласованно моделировать нелинейную динамику плазмы. Далее рассмотрим каждую подзадачу отдельно.
82
5.13. Решение уравнения Власова
Уравнение Власова является гиперболическим уравнением в частных производных в переменных t, r и v. Следовательно, оно может быть решено одним из стандартных методов, изложенных в разд. 5.3–5.11. Описание жидкости или газа при помощи функции распределения на дискретной сетке
называется подходом Эйлера.
Коды, основанные на подходе Эйлера, используются в современной аст-
рофизике (например, код Vlasiator [20]). Однако этот подход сопряжен с определенными трудностями. Во-первых, решение уравнений на шестимерной сетке – достаточно ресурсоемкий процесс. Кроме того, на этапе дискретизации необходимо заранее задать не только границы пространственной области, но и максимальную и минимальную скорость (либо работать с динамически расширяющейся сеткой). Многие астрофизические задачи связаны с ускорением частиц, из-за чего максимальная скорость растет на протяжении всего времени моделирования. При этом ускоренных частиц может быть немного, но ради них приходится хранить в памяти и обрабатывать много дополнительных ячеек. Еще одним недостатком подхода Эйлера является возможность возникновения отрицательных значений fs в результате ошибок округления. Такой результат нефизичен и может привести к неустойчивому поведению кода. Для устранения этой проблемы отрицательные значения часто принудительно зануляют. Однако это может повлиять на выполнение закона сохранения числа частиц.
Второй подход, часто используемый в кинетических кодах, – это подход Лагранжа. При этом функция распределения представляется в виде
суперпозиции конечного числа макрочастиц: |
|
|
fs(t, r, v) = Xp |
wpδ(r − rp(t))δ(v − vp(t)). |
(5.47) |
Коэффициент wp называется весом макрочастицы и возникает вследствие того, что частиц в памяти компьютера на много порядков меньше, чем реальных частиц в моделируемой системе. Следовательно, wp 1.
Поскольку в левой части уравнения (5.40) выписана полная производная функции распределения вдоль траектории частицы, эти траектории
83
являются характеристиками уравнения Власова. Таким образом, подход Лагранжа связан с методом характеристик, а для его сходимости необходимо выполнение критерия Куранта: |vmaxk/h < 1| (в качестве наклона характеристик выступают скорости частиц). Траектория частицы может быть рассчитана одним из методов, приведенных в главе 2.
Кинетические коды, основанные на подходе Лагранжа, называются кодами типа «частица в ячейке» (particle-in-cell, PIC-кодами). Их основной недостаток – численные шумы, возникающие из-за ограниченного числа частиц в ячейках. Методы подавления шумов рассматриваются в следующем разделе.
5.14. Интерполяция токов
Комбинируя формулы (5.47) и (5.45)–(5.46), получим выражения:
ρ = |
Xp |
wpqpδ(r − rp); |
(5.48) |
|
j = |
Xp |
wpqpvpδ(r − rp). |
(5.49) |
|
Поскольку уравнения Максвелла решаются на сетке, нам необходимо задать не плотность заряда и тока в каждой точке пространства, а их средние значения в каждой ячейке Ci. Для этого усредним (5.48)–(5.49) по объему ячейки (будем считать размеры ячейки по всем осям равными h):
|
1 |
X |
(5.50) |
ρi = |
|
wsqp; |
|
|
h3 |
p Ci |
|
|
1 |
X |
(5.51) |
ji = |
|
wsqpvp, |
|
|
h3 |
p Ci |
|
|
|
|
где s – сорт частицы p; ws – вес макрочастицы, безразмерная величина, равная отношению реального числа частиц данного сорта Ns к числу макрочастиц NPs.
Рассчитаем эти величины в пределах одной ячейки. Число частиц s-го сорта в ячейке обозначим ppcs (particle per cell). Это важный параметр, поскольку возникающая из-за численных шумов дисперсия плотности заряда
84
оценивается как 1/√ppcs. Число реальных частиц s-го сорта в ячейке равно nsh3, следовательно, ws = nsh3/ppcs.
Для уменьшения численных шумов вместо дельта-функции по координате в (5.48)–(5.49) можно подставить интерполирующую весовую функцию, например, как в методе CIC (3.16) или как в методе TSC (3.17). При этом в пространстве скоростей макрочастица всегда представляет собой дельтафункцию, так как должна двигаться как целое, а не расплываться.
Как и в гравитационных кодах с частицами в ячейках, одну и ту интерполирующую функцию в PIC-коде необходимо использовать дважды: при вычислении токов и плотностей, а затем при вычислении сил, действующих на частицу. В противном случае будут возникать нефизичные силы, действующие на частицу со стороны нее самой. Интуитивно это правило проще понять, представив частицу конечного размера, которая находится сразу в нескольких ячейках (как на рис. 3.3). Частица вносит вклад в токи и плотности ячеек пропорционально попавшим в эти ячейки долям объема частицы и подвергается воздействию электромагнитных полей в этих ячейках, также пропорционально долям объема. Поскольку макрочастица конечного размера ведет себя как абсолютно твердое невращающееся тело, результирующая сила будет суперпозицией всех сил.
Также для подавления шумов используют фильтрацию токов и плотностей. Например, часто используется трехточечный фильтр:
jif |
j |
i−1 |
+ j |
i+1 |
|
(5.52) |
= αji + (1 − α) |
2 |
. |
При α = 0, 5 этот фильтр называется биномиальным. Часто используют несколько прогонок фильтра для достижения более гладкого решения. К недостаткам этого метода можно отнести тот факт, что применение токовых фильтров нарушает равенство интерполирующих функций для токов и для сил, а значит возникают и силы, действующие на частицу со стороны нее самой. Кажется, что проблему можно решить, проведя также фильтрацию электромагнитных полей. Однако это нарушит выполнение закона сохранения энергии и нулевой дивергенции магнитного поля. Поэтому биноминальная фильтрация полей не производится.
85
5.15. Нормировка PIC-кодов
Прежде чем решать уравнения Максвелла, перейдем к нормированным единицам. Каждый лишний коэффициент в системе уравнений добавляет количество арифметических операций за шаг. Следовательно, нормировка должна минимизировать число коэффициентов. Кроме того, нормировка физических величин на характерные значения позволяет работать с числами порядка единиц или десятков, что может быть удобнее для восприятия. Нормировка позволяет использовать подобие и применять результаты одной и той же численной модели для различных объектов, масштабируя единицы измерения. Для однозначного определения системы единиц достаточно выбрать три независимых размерности, например, время, расстояние и массу. Тогда остальные размерности выразятся через них. Однако при этом останется еще свобода выбора безразмерного коэффициента.
Для примера покажем вывод нормировки, используемой в PIC-коде TRISTAN-MP [9]. В качестве базовых размерностей выбираются время, расстояние и масса. Время нормируется на шаг по времени k, координата – на шаг сетки h, масса – на массу электрона me. Недостатком такой нормировки является невозможность работы с адаптивной сеткой или адаптивным шагом по времени: все ячейки имеют одинаковый размер по всем осям, а шаг по времени жестко фиксируется перед началом счета. Однако этот метод позволяет избавиться от большей части коэффициентов в уравнениях.
Обозначив нормировочные коэффициенты x0, v0, m0 и т. д., а отнормированные величины r,˜ v˜p, m˜ p и т. д., найдем оптимальную нормировку. Дискретная система уравнений PIC-кода включает в себя два векторных уравнения движения частиц, два векторных и два скалярных уравнения Максвелла:
∆trp |
|
= vp; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
k |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
∆tvp |
|
|
|
|
q |
|
|
|
vp |
|
|
|
|
|
|
|
|
|
||
|
= |
|
p |
E + |
× B ; |
|
||||||||||||||
k |
mp |
c |
|
|||||||||||||||||
∆yBz |
|
− |
∆zBy |
|
|
4π |
1 ∆tEx |
|
||||||||||||
|
|
|
|
= |
|
|
|
jx + |
|
|
|
|
|
|
; |
|||||
h |
|
h |
|
c |
|
c |
|
k |
||||||||||||
∆zBx |
|
− |
|
∆xBz |
|
|
4π |
|
1 ∆tEy |
|
||||||||||
|
|
|
|
|
= |
|
|
jy + |
|
|
|
; |
||||||||
h |
|
|
h |
|
|
c |
c |
k |
||||||||||||
(5.53)
(5.54)
(5.55)
(5.56)
86
∆xBy |
− |
∆yBx |
4π |
1 ∆tEz |
|
|||||||||||||||
|
|
|
= |
|
|
|
|
|
jz + |
|
|
|
|
|
; |
|||||
h |
h |
c |
c |
k |
||||||||||||||||
∆yEz |
|
∆zEy |
|
1 ∆tBx |
|
|
|
|
|
|
||||||||||
|
− |
|
|
= − |
|
|
|
|
|
|
|
; |
|
|||||||
h |
h |
c |
k |
|
||||||||||||||||
∆zEx |
|
∆xEz |
|
|
1 ∆tBy |
|
|
|
|
|
|
|||||||||
|
− |
|
|
= − |
|
|
|
|
|
|
; |
|
||||||||
h |
h |
|
c |
k |
|
|
||||||||||||||
∆xEy |
|
∆yEx |
|
|
|
1 ∆tBz |
|
|
|
|
|
|
||||||||
|
− |
|
|
= − |
|
|
|
|
; |
|
||||||||||
h |
h |
c |
k |
|
|
|||||||||||||||
X∆iBi = 0; h
i=x,y,z
X∆iEi = 4πρ, h
i=x,y,z
(5.57)
(5.58)
(5.59)
(5.60)
(5.61)
(5.62)
где ∆i обозначает приращение по i-му направлению, а индекс p – номер частицы.
˜ |
|
Подставив в (5.53)–(5.62) значения rp = h˜rp, t = kt, а также вводя |
|
нормировку скорости vp = (h/k)v˜, преобразуем (5.53) к виду |
|
∆t˜rp = v˜p. |
(5.63) |
Таким образом, благодаря нормировке из уравнения движения исчезла операция деления, выполняющаяся гораздо медленнее сложения и вычита-
ния.
Нормировку электрического заряда можно вывести из базовых норми-
ровочных коэффициентов с точностью до множителя α1: |
|
|||||||
q0 = p |
|
|
. |
(5.64) |
||||
α1h3me/k2 |
||||||||
Нормировку электромагнитного поля также определим с точностью |
||||||||
до множителя: |
|
|
|
|
|
|
|
|
B0 = E0 = α2q0/h2. |
(5.65) |
|||||||
Подставив (5.64) и (5.65) в (5.54) и перенеся все коэффициенты в правую |
||||||||
часть, получим |
|
|
|
|
|
|
|
|
|
q˜p |
˜ |
v˜p |
|
˜ |
|
||
∆tv˜p = |
m˜ p |
(E + |
C˜ |
× B)α2α1, |
|
|||
˜ |
|
|
|
|
= 1/α1, чтобы в этом уравнении |
|||
где C = c/v0 = ck/h. Разумно выбрать α2 |
||||||||
не возникал дополнительный множитель.
87
Окончательно оно запишется в виде
|
|
q˜p |
˜ |
|
|
|
v˜p |
|
˜ |
|
|
(5.66) |
|||||||||||||||||
∆tv˜p = |
m˜ p |
|
E + |
|
C˜ |
|
|
|
× B . |
|
|
||||||||||||||||||
Нормируя закон Ампера (5.55)–(5.57), учитываем, что j0 = q0v0/x03 = |
|||||||||||||||||||||||||||||
q0/(h2k). Тогда получим уравнения |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
˜ |
|
|
˜ |
|
4πα1 ˜ |
|
|
|
|
˜ |
|
|
|
||||||||||||||||
|
|
|
|
∆tEx |
|
|
|
||||||||||||||||||||||
∆yBz |
− ∆zBy |
= |
|
|
|
|
|
|
|
|
jx + |
|
|
|
|
|
; |
|
|||||||||||
|
|
C˜ |
|
|
|
|
|
|
|
C˜ |
|
|
|||||||||||||||||
˜ |
|
|
˜ |
|
4πα1 ˜ |
|
|
|
|
˜ |
|
|
|
||||||||||||||||
|
|
|
|
|
∆tEy |
|
|
|
|||||||||||||||||||||
∆zBx |
− ∆xBz |
= |
|
|
|
|
|
|
|
|
jy + |
|
|
|
|
; |
|
||||||||||||
|
|
C˜ |
|
|
|
|
|
|
|
|
C˜ |
|
|||||||||||||||||
˜ |
|
|
˜ |
|
|
4πα1 ˜ |
|
|
|
|
˜ |
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
∆tEz |
|
|
|
|||||||||||||||||||
∆xBy |
− ∆yBx = |
|
|
|
|
|
|
|
|
|
jz + |
|
|
|
|
|
. |
|
|||||||||||
|
|
C˜ |
|
|
|
|
|
|
|
|
|
C˜ |
|
|
|||||||||||||||
Отсюда следует, что лучше выбрать α1 = 1/(4π). |
|
||||||||||||||||||||||||||||
Нормированные уравнения Максвелла будут иметь вид: |
|
||||||||||||||||||||||||||||
˜ |
|
|
|
˜ |
|
|
|
1 |
|
|
|
|
|
|
|
˜ |
|
|
|
|
˜ |
|
|||||||
˜ |
|
|
|
˜ |
|
|
1 |
|
|
|
|
|
|
˜ |
|
|
|
|
˜ |
(5.67) |
|||||||||
∆yBz − ∆zBy = |
|
C˜ |
|
|
|
|
|
|
jx + ∆tEx ; |
||||||||||||||||||||
∆zBx − ∆xBz = |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(5.68) |
|||||||||
|
C˜ |
|
|
|
|
|
|
jy + ∆tEy ; |
|||||||||||||||||||||
∆xB˜y − ∆yB˜x = |
|
|
|
|
|
1˜jz + ∆tE˜z ; |
(5.69) |
||||||||||||||||||||||
|
C˜ |
|
|
|
|||||||||||||||||||||||||
˜ |
|
|
|
˜ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
˜ |
|
|
(5.70) |
|||||
∆yEz − ∆zEy = |
− |
C˜ |
∆tBx; |
|
|
||||||||||||||||||||||||
˜ |
|
|
|
˜ |
|
|
|
|
|
1 |
|
|
|
|
˜ |
|
|
(5.71) |
|||||||||||
∆zEx − ∆xEz = |
− |
C˜ |
|
∆tBy; |
|
|
|||||||||||||||||||||||
˜ |
|
|
|
˜ |
|
|
|
|
|
1 |
|
|
|
|
˜ |
|
|
(5.72) |
|||||||||||
∆xEy − ∆yEx = |
− |
C˜ |
|
∆tBz; |
|
|
|||||||||||||||||||||||
i=X |
|
˜ |
= 0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(5.73) |
||
|
∆iBi |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
x,y,z |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
i=X |
|
˜ |
= |
˜ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(5.74) |
|
|
∆iEi |
ρ. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
x,y,z
Предложенная нормировка – не единственная возможная. Например, в коде Smilei [11] в качестве базовых единиц выбираются скорость света c, заряд и массу электрона e и me, а также любая частота на выбор пользователя ωr. Кажется, что базовых величин слишком много, и нормировка не согласованна. Однако такой подход допустим, так как в уравнения движения входит только отношение qp/mp. Единственные формулы, в которых заряд
88
возникает отдельно, – это формулы вычисления плотности и тока (5.50)– (5.51). При этом в них содержится безразмерный коэффициент ws, который может быть сделан размерным для согласования нормировки.
Ранее мы считали, что ws = nsh3/ppc. В этом случае из формулы (5.50) получалось условие ρ0 = q0/x30. Пусть теперь единицы измерения ws умножили на некоторый коэффициент αw (соответственно, значение веса в новых единицах уменьшилось во столько же раз). Тогда нормировка плотности заряда также увеличится: ρ0 = αwq0/x30. Из уравнения Пуассона (5.62) имеем выражение ρ0 = E0/(4πx0), а из уравнения движения (5.54) – выражение
E0 = v0m0/(t0q0). Объединяя эти три равенства, получаем
q02 = |
x02v0m0 |
. |
(5.75) |
|
|||
|
4πt0αw |
|
|
Если мы выбрали в качестве базовой размерности времени t0 обрат-
ную плазменную частоту электронов ωpe, то q02 = e2 = ω2peme/(4πne) = = m0/(4πnet20). Тогда можно из (5.75) найти коэффициент αw = nex30. В но-
вых единицах вес макрочастицы будет вычисляться по формуле
ns |
|
h |
|
3 1 |
|
(5.76) |
||
w˜s = ws/αw = |
|
|
|
|
, |
|||
ne |
x0 |
ppc |
||||||
т. е. для электронов он будет равен нормированному объему ячейки, деленному на количество макрочастиц в ячейке. Также удобно в формулах (5.50)–(5.51) объединить коэффициент 1/h3 и αw. Тогда вес макрочастицы будет равен w˜s = (ns/ne))1/(x30ppc), т. е. станет размерной величиной.
5.16. Выбор шагов по времени и координате. Критерий Куранта
В процессе нормировки мы не фиксировали определенные h и k. Поскольку PIC-коды работают на электронных длинах и временах, выберем
в качестве таких масштабов электронную плазменную частоту (5.3) и инер-
˜ −1
ционную длину электрона (5.10). Тогда обозначим h = ale, k = aCωpe , что
˜
соответствует принятому ранее обозначению C = ck/h.
Для того чтобы PIC-код с явной схемой работал корректно, необходимо, чтобы размер ячейки не превышал дебаевский радиус (5.8). Есть PIC-коды
89
с неявной схемой, которые могут обойти это условие [15], но их мы не будем рассматривать в данном пособии. Таким образом, мы получим ограничение a < λD/le ≈ vth,e/c. Нарушение этого условия ведет к сильному искусственному нагреву плазмы, поскольку мелкомасштабные неустойчивости быстро диссипируют из-за грубой сетки. Это ограничение делает очень ресурсоемкими нерелятивистские расчеты и нередко заставляет исследователей искусственно завышать скорости и температуры в моделируемой плазме.
Как было указано ранее, в разд. 5.13, подход Лагранжа подразумевает, что частицы являются характеристиками уравнения Власова. Следовательно, критерий Куранта для частиц записывается в виде: |vmaxk/h < 1|. Закон Ампера (5.55)–(5.57) и закон Фарадея (5.58)–(5.60) имеют форму неодно-
˜ ˜
родного уравнения переноса, где E и B попеременно представляют собой
величину и ее поток. Скорость распространения волн равна c, и мы полу-
≡ ˜
чим критерий Куранта ck/h C < 1. Этот критерий ограничивает шаг
по времени, при этом является более сильным критерием, чем критерий Ку-
˜
ранта для частиц. Таким образом, постоянная C в выбранной нормировке имеет смысл не только нормированной скорости света, но и числа Куранта для системы уравнений Максвелла.
5.17. Решение уравнений Максвелла
Уравнения Максвелла – гиперболические, они представляют собой неоднородные уравнения переноса, которые можно решать, основываясь на методе конечных объемов, т. е. прибавляя к искомой величине потоки через границы ячеек. При этом необходимо некоторые величины задавать в центрах ячеек, а некоторые – на границах.
Заметим, что в уравнениях (5.55)–(5.57) в роли потока выступает магнитное поле, а в уравнениях (5.58)–(5.60) – электрическое, т. е. границы и центры ячеек меняются ролями. Это проще реализовать в одномерном случае, когда центры ячеек и их границы представляют собой просто точки на прямой, следовательно, различия между ними минимальны. Тогда разностная схема для уравнений Максвелла может выглядеть так:
|
|
k |
n+1 |
|
n+1 |
|
|
n+1 |
|
|
Ey,in+1 = Ey,in |
− |
|
|
Bz,i+2 |
21 |
− Bz,i−2 |
21 |
|
− kjy,i 2 |
; |
h |
||||||||||
90
