Skip to content
Brent$117,6Газ TTF$1 192USD453,87 ₸
MunaiHub

Кітапхана әзірге орыс тілінде. Ағылшын және қазақ тілдеріндегі нұсқалары кейінірек қосылады.

МоделированиеУравнения и численные методы Тереңдетілген 22 мин оқу

Решение систем линейных уравнений в симуляторах

Линейный решатель (linear solver) — часть гидродинамического симулятора, которая решает системы линейных уравнений Ax=b\mathbf{A}\mathbf{x} = \mathbf{b}, возникающие на каждом неявном шаге: уравнения давления ячеек в схеме IMPES или уравнения всех фаз ячеек на каждой итерации Ньютона в полностью неявной схеме. Прямые методы находят решение за известное число действий, исключая неизвестные; итерационные уточняют приближение, пока невязка не станет достаточно малой.

Не үшін қажет

Системы гидродинамических моделей огромны — сотни тысяч и миллионы неизвестных, — и за один расчёт их решают тысячи раз. От способа решения зависит, займёт расчёт минуты или недели, сойдутся ли итерации на трудном шаге и насколько точно выполнится материальный баланс. Инженеру, который читает журнал расчёта, выбирает допуски и ищет причину сокращения шагов, нужно понимать, почему число итераций растёт с размером сетки, неоднородностью и шагом по времени и что делает предобусловливатель.

Қысқаша негізгісі

  • Каждый неявный шаг — система Ax=b\mathbf{A}\mathbf{x} = \mathbf{b}, по уравнению на ячейку (или на каждую фазу ячейки). В строке — диагональ и по числу на каждую связь: семь чисел в трёхмерной декартовой сетке, остальное — нули.
  • Матрица уравнения давления симметрична и имеет диагональное преобладание благодаря ёмкостному члену S/ΔtS/\Delta t. Равномерный сдвиг давления — её собственный вектор с наименьшим собственным числом S/ΔtS/\Delta t, поэтому с ростом шага обусловленность ухудшается. Якобиан полностью неявной схемы несимметричен и состоит из блоков.
  • Метод Гаусса исключает неизвестные и решает треугольную систему обратной подстановкой. Исключение заполняет ленту матрицы: работа порядка nb2nb^2, память — nbnb; в трёхмерной сетке ширина ленты — целый слой ячеек, и для больших моделей ленточные методы непригодны.
  • Якоби, Зейдель и верхняя релаксация уточняют каждое неизвестное по его уравнению. Они сходятся, если спектральный радиус матрицы перехода меньше единицы, но на больших сетках медленно: Якоби и Зейделю нужно ∝N2\propto N^2 итераций, верхней релаксации — ∝N\propto N.
  • Методы Крылова (сопряжённые градиенты, GMRES) строят лучшее приближение из векторов b\mathbf{b}, Ab\mathbf{A}\mathbf{b}, A2b\mathbf{A}^2\mathbf{b}, …; у сопряжённых градиентов число итераций растёт как κ\sqrt\kappa. Предобусловливатель — грубое, но дешёвое подобие A\mathbf{A} — уменьшает его в разы, особенно в неоднородных моделях.
  • Итерации останавливают по относительной невязке. Невязка уравнения давления — небаланс ячейки в м³/сут: недорешённая система «создаёт» флюид, и её погрешность прямо входит в материальный баланс.
Негізгі қатынастар
(SiΔt+∑jaij)δi−∑jaij δj=−qi\left(\frac{S_i}{\Delta t} + \sum_j a_{ij}\right)\delta_i - \sum_j a_{ij}\,\delta_j = -q_i

строка системы давления неявного шага (давления в начале шага одинаковы)

Wлента≈n b2,Wитер≈ν c nW_{\text{лента}} \approx n\,b^2,\qquad W_{\text{итер}} \approx \nu\,c\,n

работа ленточного исключения и итерационного метода

ν≈ln⁡(1/ε)−ln⁡ρ(G)\nu \approx \frac{\ln(1/\varepsilon)}{-\ln\rho(\mathbf{G})}

итераций, чтобы уменьшить ошибку в 1/ε1/\varepsilon раз

∥x−x(ν)∥∥x∥≤κ ∥r(ν)∥∥b∥\frac{\lVert\mathbf{x} - \mathbf{x}^{(\nu)}\rVert}{\lVert\mathbf{x}\rVert} \le \kappa\,\frac{\lVert\mathbf{r}^{(\nu)}\rVert}{\lVert\mathbf{b}\rVert}

малая невязка — ещё не малая ошибка, если κ\kappa велико

Жиі қателіктер
  • Обращать матрицу или якобиан: обратная матрица разреженной системы почти заполнена.
  • Считать, что малая невязка гарантирует точные давления: ошибку ограничивает невязка, умноженная на число обусловленности.
  • Ослаблять допуск решателя ради скорости: недорешённая система создаёт ошибку материального баланса и лишние итерации Ньютона.
  • Сравнивать итерационные методы по первым итерациям: скорость в пределе задаёт спектральный радиус.

Сабақтан кейін сіз

  • описать структуру матрицы гидродинамической модели: разреженность, ленту, симметрию, диагональное преобладание и зависимость обусловленности от шага по времени;
  • решить небольшую систему методом Гаусса, объяснить LU-разложение, заполнение и роль нумерации ячеек и оценить работу ленточного метода;
  • выполнить итерации методов Якоби, Гаусса — Зейделя и последовательной верхней релаксации и объяснить, от чего зависит их сходимость;
  • объяснить идею методов подпространств Крылова и предобусловливания — неполного LU-разложения, двухступенчатого CPR, многосеточных методов — и почему они нужны неоднородным моделям;
  • выбрать критерий остановки, связать невязку с материальным балансом и объяснить, почему решатель определяет время расчёта.

Откуда берутся системы уравнений и как они устроены

Неявная схема (явная и неявная схемы) превращает каждый шаг по времени в систему уравнений: перетоки считают по давлениям конца шага, ещё неизвестным, и уравнения всех ячеек решают совместно. В схеме IMPES это одна линейная система для давлений — по уравнению на ячейку. В полностью неявной схеме нелинейные уравнения решают методом Ньютона, и на каждой итерации — линейную систему с якобианом, по уравнению на каждую фазу ячейки (невязки и якобиан). За расчёт прогноза набираются сотни шагов по несколько итераций — тысячи систем с сотнями тысяч или миллионами неизвестных.

Запишем систему давления одного неявного шага для однофазной слабосжимаемой жидкости. Неизвестные — изменения давления за шаг δi=pin+1−pin\delta_i = p_i^{n+1} - p_i^n:

Строка системы давления: уравнение ячейки на неявном шаге
(SiΔt+∑jaij)δi−∑jaij δj=−qi+∑jaij(pjn−pin)\left(\frac{S_i}{\Delta t} + \sum_j a_{ij}\right)\delta_i - \sum_j a_{ij}\,\delta_j = -q_i + \sum_j a_{ij}\left(p_j^{n} - p_i^{n}\right)
мұндағы:
  • δi, δj\delta_i,\ \delta_jизменения давления ячейки и её соседей за шаг — неизвестные, МПа
  • SiS_iупругая ёмкость ячейки Vp,ictV_{p,i}c_t, м³/МПа
  • aija_{ij}коэффициент связи 0,0853 Tij/μ0{,}0853\,T_{ij}/\mu, м³/(сут·МПа)
  • qiq_iотбор скважиной в пластовых условиях (закачка — со знаком минус), м³/сут
  • pin, pjnp_i^{n},\ p_j^{n}давления в начале шага, МПа
  • Δt\Delta tшаг по времени, сут

Бірліктер: метрические промысловые

Мына жағдайда орындалады
  • линейное уравнение давления: свойства флюида и породы на шаге постоянны (нелинейный случай решают итерациями, и на каждой — такая же система);
  • сумма — по всем связям ячейки: соседям по граням и несоседним соединениям; скважина с заданным забойным давлением добавляет к диагонали свой коэффициент.

Это система урока о неявной схеме, записанная для изменений давления. Коэффициенты связи получают из проводимостей (Перетоки между ячейками и проводимость). В строке ненулевые только диагональ и числа соседей: матрица разреженная.

  • Разреженность (разреженная матрица). В строке столько ненулевых чисел, сколько у ячейки связей, плюс диагональ: три в одномерной полосе, пять в двумерной и семь в трёхмерной декартовой сетке; несоседние соединения и скважины добавляют немногие.
  • Лента. При естественной нумерации — сначала вдоль оси xx, затем по строкам и по слоям — соседи ячейки отстоят от неё по номеру на 1, на NxN_x и на NxNyN_xN_y. Ненулевые числа лежат на семи диагоналях, а ширина ленты — целый слой ячеек.
  • Симметрия. Коэффициент связи одинаков для пар (i,j)(i, j) и (j,i)(j, i), поэтому матрица давления симметрична. Якобиан полностью неявной схемы несимметричен — подвижность берут из ячейки выше по потоку (из чего складывается якобиан), — и каждой ячейке в нём отвечает блок 2 × 2 или 3 × 3.
  • Диагональное преобладание. Диагональ больше суммы модулей остальных чисел строки на Si/ΔtS_i/\Delta t (и на коэффициент скважины с заданным забойным давлением). Симметричная матрица с таким преобладанием и положительной диагональю положительно определена: решение единственно, а многие методы гарантированно сходятся.

Сумма чисел каждой строки равна ёмкостному члену Si/ΔtS_i/\Delta t: коэффициент связи входит в неё дважды — с плюсом на диагонали и с минусом вне её. Поэтому при одинаковой ёмкости ячеек равномерное изменение давления во всём пласте — собственный вектор матрицы:

Равномерный сдвиг давления — собственный вектор матрицы
A=SΔt I+C,C 1=0,λmin⁡(A)=SΔt,κ=1+ΔtS λmax⁡(C)\mathbf{A} = \frac{S}{\Delta t}\,\mathbf{I} + \mathbf{C},\qquad \mathbf{C}\,\mathbf{1} = 0,\qquad \lambda_{\min}(\mathbf{A}) = \frac{S}{\Delta t},\qquad \kappa = 1 + \frac{\Delta t}{S}\,\lambda_{\max}(\mathbf{C})
мұндағы:
  • A\mathbf{A}матрица системы давления, м³/(сут·МПа)
  • C\mathbf{C}матрица связей: на диагонали ∑jaij\sum_j a_{ij}, вне её −aij-a_{ij}, м³/(сут·МПа)
  • I, 1\mathbf{I},\ \mathbf{1}единичная матрица и вектор из единиц — одинаковое изменение давления во всех ячейках, —
  • SSупругая ёмкость ячейки (одинаковая у всех ячеек), м³/МПа
  • λmin⁡, λmax⁡\lambda_{\min},\ \lambda_{\max}наименьшее и наибольшее собственные числа, м³/(сут·МПа)
  • κ\kappaчисло обусловленности λmax⁡(A)/λmin⁡(A)\lambda_{\max}(\mathbf{A})/\lambda_{\min}(\mathbf{A}), —

Бірліктер: метрические промысловые; κ\kappa безразмерно

Мына жағдайда орындалады
  • одинаковая ёмкость ячеек; внешние границы закрыты, скважины работают с заданным дебитом;
  • скважина с заданным забойным давлением или граница с постоянным давлением добавляет к диагонали и увеличивает λmin⁡\lambda_{\min}.

Связи не «видят» равномерного сдвига давления — его определяет только ёмкость. Чем крупнее шаг, тем меньше S/ΔtS/\Delta t и тем хуже обусловлена система; в пределе несжимаемой жидкости с заданными дебитами она вырождена — давление определено с точностью до постоянной. Именно такие гладкие, общие для большой части модели составляющие ошибки труднее всего убрать простыми итерациями.

Участок 2 × 2 ячейки примеров и ненулевые элементы матрицы системы с заполнением после исключения первого неизвестного1120 мД240 мД3200 мД480 мД72013711800640проводимости связей, мД·мδ11δ22δ33δ44закачкаотборненулевой элементзаполнение послеисключения δ₁

Слева квадрат из четырёх ячеек: внизу ячейки 1 (120 мД, нагнетательная скважина) и 2 (40 мД), вверху ячейки 3 (200 мД) и 4 (80 мД, добывающая скважина). Между соседями по граням подписаны проводимости: 720 между 1 и 2, 1371 между 3 и 4, 1800 между 1 и 3, 640 между 2 и 4 мД·м. Справа сетка 4 на 4: закрашены диагональ и элементы (1, 2), (1, 3), (2, 4), (3, 4) с симметричными; клетки (1, 4) и (4, 1) пусты, а клетки (2, 3) и (3, 2) отмечены другим цветом как заполнение после исключения первого неизвестного.

СызбаУчасток из четырёх ячеек примеров (схема): проницаемость ячеек, проводимости связей и скважины — и структура матрицы системы: закрашены ненулевые элементы. После исключения δ1\delta_1 на местах (2, 3) и (3, 2) появляются новые ненулевые элементы — заполнение.
Есептеу мысалыСистема уравнений для участка из четырёх ячеек
Бастапқы деректер (шартты)
Участок
2 × 2 ячейки 300 × 300 × 12 м: 1 — юго-западная, 2 — юго-восточная, 3 — северо-западная, 4 — северо-восточная; внешние грани закрыты
Проницаемость ячеек 1–4
120; 40; 200; 80 мД
Порода и жидкость
ϕ\phi = 0,20; ct=1,5⋅10−3c_t = 1{,}5\cdot10^{-3} МПа⁻¹; вязкость 1,0 мПа·с
Скважины и шаг
закачка 400 м³/сут в ячейку 1, отбор 400 м³/сут из ячейки 4 (пластовые условия); неявный шаг Δt\Delta t = 10 сут от одинакового давления
Шешім
  1. Проводимости — две половины ячеек последовательно (проводимость связи); у одинаковых ячеек с гранью A=300⋅12=3600A = 300\cdot12 = 3600 м² и половиной ячейки 150 м T=3600/(150/ki+150/kj)T = 3600/(150/k_i + 150/k_j): T12=720T_{12} = 720, T34=1371,43T_{34} = 1371{,}43, T13=1800T_{13} = 1800, T24=640T_{24} = 640 мД·м.
  2. Коэффициенты связи a=0,0853 T/1,0a = 0{,}0853\,T/1{,}0: a12=61,416a_{12} = 61{,}416, a34=116,983a_{34} = 116{,}983, a13=153,540a_{13} = 153{,}540, a24=54,592a_{24} = 54{,}592 м³/(сут·МПа). Ёмкость ячейки S=300⋅300⋅12⋅0,20⋅1,5⋅10−3=324S = 300\cdot300\cdot12\cdot0{,}20\cdot1{,}5\cdot10^{-3} = 324 м³/МПа, S/Δt=32,4S/\Delta t = 32{,}4.
  3. Диагональ — S/ΔtS/\Delta t плюс коэффициенты связей ячейки: 247,356; 148,408; 302,923; 203,975.
  4. Уравнения ячеек (давления в начале шага одинаковы, поэтому справа только скважины): 1: 247,356 δ1−61,416 δ2−153,540 δ3=400247{,}356\,\delta_1 - 61{,}416\,\delta_2 - 153{,}540\,\delta_3 = 400; 2: −61,416 δ1+148,408 δ2−54,592 δ4=0-61{,}416\,\delta_1 + 148{,}408\,\delta_2 - 54{,}592\,\delta_4 = 0; 3: −153,540 δ1+302,923 δ3−116,983 δ4=0-153{,}540\,\delta_1 + 302{,}923\,\delta_3 - 116{,}983\,\delta_4 = 0; 4: −54,592 δ2−116,983 δ3+203,975 δ4=−400-54{,}592\,\delta_2 - 116{,}983\,\delta_3 + 203{,}975\,\delta_4 = -400.
  5. Собственные числа матрицы: 32,4; 176,4; 221,0; 472,9 — наименьшее равно S/ΔtS/\Delta t; число обусловленности 472,9/32,4=14,6472{,}9/32{,}4 = 14{,}6.
Жауап: Матрица 4 × 4 симметрична; в каждой строке диагональ больше суммы модулей остальных чисел на 32,4; четыре элемента из шестнадцати — нули: ячейки 1 и 4, 2 и 3 гранью не связаны.

Бұл нені білдіреді. Нули на местах (1, 4) и (2, 3) — частный случай главного свойства: в строке только свои связи. В модели из миллиона ячеек в строке те же семь чисел, а нулей — почти миллион. Наименьшее собственное число равно S/ΔtS/\Delta t — это равномерный сдвиг давления. При шаге 100 сут оно стало бы вдесятеро меньше, а число обусловленности выросло бы почти вдесятеро (таблица ниже). Данные примера условные.

Прямые методы: исключение Гаусса и LU-разложение

Метод Гаусса (Gaussian elimination) решает систему в два хода. Прямой ход исключает неизвестные по очереди: из всех уравнений ниже первого вычитают первое, умноженное на такие числа, чтобы исчезло первое неизвестное; затем так же второе — и так до последнего. Матрица становится верхнетреугольной. Обратный ход — подстановка снизу вверх: последнее уравнение содержит одно неизвестное, каждое предыдущее — одно новое.

Шаг прямого хода метода Гаусса
mki=AkiAii,Akl←Akl−mki Ail,bk←bk−mki bi(k>i)m_{ki} = \frac{A_{ki}}{A_{ii}},\qquad A_{kl} \leftarrow A_{kl} - m_{ki}\,A_{il},\qquad b_k \leftarrow b_k - m_{ki}\,b_i\qquad (k > i)
мұндағы:
  • Akl, bkA_{kl},\ b_kэлементы матрицы и правой части, которые меняются при исключении, в единицах системы
  • iiномер исключаемого неизвестного (ведущая строка), —
  • mkim_{ki}множитель строки kk; множители образуют нижнетреугольную матрицу L\mathbf{L} разложения, —

Бірліктер: в единицах системы

Мына жағдайда орындалады
  • ведущий элемент AiiA_{ii} не равен нулю; при диагональном преобладании это гарантировано, и перестановки строк не нужны;
  • строки, в которых Aki=0A_{ki} = 0, не меняются.

После исключения всех неизвестных матрица становится верхнетреугольной (U\mathbf{U}), а множители образуют нижнетреугольную матрицу L\mathbf{L} с единицами на диагонали: A=LU\mathbf{A} = \mathbf{L}\mathbf{U} — LU-разложение. Его делают один раз, а затем для любой правой части решают две треугольные системы. Для симметричной положительно определённой матрицы применяют разложение Холецкого A=GGT\mathbf{A} = \mathbf{G}\mathbf{G}^{\mathsf T} — вдвое дешевле.

Обратная подстановка
xn=b~nUnn,xi=1Uii(b~i−∑l>iUil xl),i=n−1, …, 1x_n = \frac{\tilde b_n}{U_{nn}},\qquad x_i = \frac{1}{U_{ii}}\left(\tilde b_i - \sum_{l > i} U_{il}\,x_l\right),\quad i = n - 1,\ \ldots,\ 1
мұндағы:
  • UilU_{il}элементы верхнетреугольной матрицы после прямого хода, в единицах системы
  • b~i\tilde b_iправая часть после прямого хода, в единицах системы
  • xix_iнеизвестные, в единицах системы

Бірліктер: в единицах системы

Мына жағдайда орындалады
  • верхнетреугольная система с ненулевой диагональю.

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

Есептеу мысалыМетод Гаусса для участка из четырёх ячеек
Бастапқы деректер (шартты)
Система
из предыдущего примера; коэффициенты — с тремя знаками после запятой, множители — с пятью
Шешім
  1. Исключаем δ1\delta_1 из строки 2. Множитель 61,416/247,356=0,2482961{,}416/247{,}356 = 0{,}24829; прибавляем к строке 2 строку 1, умноженную на него: диагональ 148,408−61,416⋅0,24829=133,159148{,}408 - 61{,}416\cdot0{,}24829 = 133{,}159, правая часть 400⋅0,24829=99,316400\cdot0{,}24829 = 99{,}316, а на месте нуля при δ3\delta_3 появляется −153,540⋅0,24829=−38,122-153{,}540\cdot0{,}24829 = -38{,}122 — это заполнение.
  2. Строка 3: множитель 153,540/247,356=0,62072153{,}540/247{,}356 = 0{,}62072; диагональ 302,923−153,540⋅0,62072=207,618302{,}923 - 153{,}540\cdot0{,}62072 = 207{,}618, при δ2\delta_2 появляется −61,416⋅0,62072=−38,122-61{,}416\cdot0{,}62072 = -38{,}122, правая часть 400⋅0,62072=248,288400\cdot0{,}62072 = 248{,}288. Строку 4 исключение δ1\delta_1 не меняет: в ней δ1\delta_1 нет.
  3. Исключаем δ2\delta_2 с помощью новой строки 2. Строка 3: множитель 38,122/133,159=0,2862938{,}122/133{,}159 = 0{,}28629; диагональ 207,618−38,122⋅0,28629=196,704207{,}618 - 38{,}122\cdot0{,}28629 = 196{,}704, при δ4\delta_4: −(116,983+54,592⋅0,28629)=−132,612-(116{,}983 + 54{,}592\cdot0{,}28629) = -132{,}612, правая часть 248,288+99,316⋅0,28629=276,721248{,}288 + 99{,}316\cdot0{,}28629 = 276{,}721.
  4. Строка 4: множитель 54,592/133,159=0,4099854{,}592/133{,}159 = 0{,}40998; диагональ 203,975−54,592⋅0,40998=181,593203{,}975 - 54{,}592\cdot0{,}40998 = 181{,}593, при δ3\delta_3: −(116,983+38,122⋅0,40998)=−132,612-(116{,}983 + 38{,}122\cdot0{,}40998) = -132{,}612, правая часть −400+99,316⋅0,40998=−359,282-400 + 99{,}316\cdot0{,}40998 = -359{,}282.
  5. Исключаем δ3\delta_3 из строки 4: множитель 132,612/196,704=0,67417132{,}612/196{,}704 = 0{,}67417; диагональ 181,593−132,612⋅0,67417=92,190181{,}593 - 132{,}612\cdot0{,}67417 = 92{,}190, правая часть −359,282+276,721⋅0,67417=−172,725-359{,}282 + 276{,}721\cdot0{,}67417 = -172{,}725. Матрица стала верхнетреугольной.
  6. Обратная подстановка: δ4=−172,725/92,190=−1,87358\delta_4 = -172{,}725/92{,}190 = -1{,}87358; δ3=(276,721+132,612 δ4)/196,704=0,14368\delta_3 = (276{,}721 + 132{,}612\,\delta_4)/196{,}704 = 0{,}14368; δ2=(99,316+38,122 δ3+54,592 δ4)/133,159=0,01886\delta_2 = (99{,}316 + 38{,}122\,\delta_3 + 54{,}592\,\delta_4)/133{,}159 = 0{,}01886; δ1=(400+61,416 δ2+153,540 δ3)/247,356=1,71097\delta_1 = (400 + 61{,}416\,\delta_2 + 153{,}540\,\delta_3)/247{,}356 = 1{,}71097 МПа.
  7. Проверка: решение без округлений — 1,71099; 0,01887; 0,14370; −1,87356 МПа; округления в цепочке изменили ответ не больше чем на 0,00002 МПа.
Жауап: За шаг давление в ячейке с закачкой выросло на 1,71 МПа, в ячейке с отбором упало на 1,87 МПа, в ячейках 2 и 3 изменилось на 0,019 и 0,14 МПа.

Бұл нені білдіреді. Исключив ячейку 1, мы связали её соседей — ячейки 2 и 3, которые гранью не связаны: в матрице появился новый ненулевой элемент. Так происходит всегда, и в большой сетке заполнение занимает всю ленту (рисунок ниже). Обратите внимание на δ2\delta_2: это небольшая разность больших чисел, и при вычислениях с малым числом знаков она теряла бы точность; машинная арифметика держит около 16 знаков, но плохо обусловленные системы теряют их тем больше, чем больше κ\kappa. Данные примера условные.

Матрица уравнения давления сетки 4 × 3 при естественной нумерации и заполнение ленты при исключении(а) матрица(б) после исключения12 неизвестных: сетка 4 × 3, нумерация по строкамненулевой элементзаполнение

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

ЕсептеуМатрица уравнения давления сетки 4 × 3 при естественной нумерации (вдоль строк по 4 ячейки) и множители её LU-разложения: ненулевые элементы матрицы лежат на пяти диагональных линиях, а исключение заполняет почти всё между крайними — ленту шириной в строку сетки (36 новых элементов). При нумерации вдоль короткой стороны (по 3 ячейки) лента уже и заполнение меньше — 24 элемента.

Заполнение и нумерация. Исключение неизвестного связывает всех его ещё не исключённых соседей друг с другом, поэтому в сетке при естественной нумерации заполняется почти вся лента между крайними ненулевыми диагоналями. Работа и память растут с её шириной, и порядок нумерации важен: нумеруют сначала вдоль самого короткого направления. Для сетки 10 × 5 нумерация вдоль длинной стороны даёт 648 новых элементов, вдоль короткой — 288. Обратная матрица разреженной системы заполнена почти целиком, поэтому её никогда не строят (якобиан не обращают).

Работа и память ленточного исключения
W≈n b2,M≈n b;b=Nx  (2D),b=NxNy  (3D)W \approx n\,b^2,\qquad M \approx n\,b;\qquad b = N_x\ \ (\text{2D}),\qquad b = N_xN_y\ \ (\text{3D})
мұндағы:
  • WWчисло операций умножения со сложением, —
  • MMчисло хранимых чисел разложения Холецкого (у LU-разложения — вдвое больше: L\mathbf{L} и U\mathbf{U}), —
  • nnчисло неизвестных, —
  • bbполуширина ленты — наибольшая разность номеров связанных неизвестных, —
  • Nx, NyN_x,\ N_yчисло ячеек вдоль осей, по которым идёт нумерация (быстрее всего — вдоль xx), —

Бірліктер: безразмерные счёты

Мына жағдайда орындалады
  • главный член оценки при b≪nb \ll n; исключение без перестановок строк;
  • для разложения Холецкого симметричной матрицы работа примерно вдвое меньше; для плотной матрицы работа — n3/3n^3/3.

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

Для разреженных матриц есть и более экономные прямые методы: неизвестные перенумеровывают так, чтобы заполнение было меньше (методы минимальной степени, вложенных сечений — nested dissection), и хранят только ненулевые числа. В двумерных задачах они работают хорошо; в трёхмерных их работа растёт примерно как квадрат числа неизвестных, и для моделей в миллионы ячеек, которые решают тысячи раз за расчёт, они слишком дороги. В симуляторах прямые методы остаются для небольших систем — двумерных разрезов, уравнений скважин, грубых уровней многосеточных методов — и как основа предобусловливателей.

Простые итерационные методы: Якоби, Зейдель, верхняя релаксация

Итерационный метод начинает с приближения — например, с нулевых изменений давления (давлений начала шага) — и уточняет его. Простейшая идея: каждое уравнение решить относительно «своего» неизвестного, подставив значения соседей из прошлого приближения, и повторять, пока изменения не станут малы.

Методы Якоби, Гаусса — Зейделя и последовательной верхней релаксации
Якоби:xi(ν+1)=1Aii(bi−∑l≠iAil xl(ν))Зейдель:xi(ν+1)=1Aii(bi−∑l<iAil xl(ν+1)−∑l>iAil xl(ν))SOR:xi(ν+1)=xi(ν)+ω (x^i−xi(ν))\begin{aligned} &\text{Якоби:} && x_i^{(\nu+1)} = \frac{1}{A_{ii}}\Bigl(b_i - \sum_{l \ne i} A_{il}\,x_l^{(\nu)}\Bigr)\\ &\text{Зейдель:} && x_i^{(\nu+1)} = \frac{1}{A_{ii}}\Bigl(b_i - \sum_{l < i} A_{il}\,x_l^{(\nu+1)} - \sum_{l > i} A_{il}\,x_l^{(\nu)}\Bigr)\\ &\text{SOR:} && x_i^{(\nu+1)} = x_i^{(\nu)} + \omega\,\bigl(\hat x_i - x_i^{(\nu)}\bigr)\end{aligned}
мұндағы:
  • xi(ν)x_i^{(\nu)}приближение неизвестного ii на итерации ν\nu, в единицах неизвестных
  • Ail, biA_{il},\ b_iэлементы матрицы и правой части, в единицах системы
  • x^i\hat x_iзначение, которое дала бы формула Зейделя, в единицах неизвестных
  • ω\omegaпараметр верхней релаксации, 1<ω<21 < \omega < 2, —

Бірліктер: в единицах системы

Мына жағдайда орындалады
  • Aii≠0A_{ii} \ne 0; Зейдель и SOR проходят уравнения по порядку номеров и сразу используют новые значения;
  • сходимость гарантирована при строгом диагональном преобладании (Якоби и Зейдель), а для симметричной положительно определённой матрицы — у Зейделя и у SOR при 0<ω<20 < \omega < 2.

Якоби пересчитывает все неизвестные по значениям прошлой итерации; Зейдель сразу использует уже уточнённые; последовательная верхняя релаксация (successive over-relaxation, SOR) «перешагивает» за поправку Зейделя в ω\omega раз. Итерация стоит примерно одного умножения матрицы на вектор.

Есептеу мысалыИтерации для участка из четырёх ячеек
Бастапқы деректер (шартты)
Система
участок 2 × 2 из первого примера, шаг 10 сут
Начальное приближение
δ=0\delta = 0 — давления начала шага
Критерий остановки
относительная невязка ∥b−Aδ∥/∥b∥<10−6\lVert\mathbf{b} - \mathbf{A}\boldsymbol\delta\rVert/\lVert\mathbf{b}\rVert < 10^{-6}
Шешім
  1. Якоби, итерация 1: в уравнениях 1 и 4 соседи пока нулевые, δ1=400/247,356=1,6171\delta_1 = 400/247{,}356 = 1{,}6171, δ4=−400/203,975=−1,9610\delta_4 = -400/203{,}975 = -1{,}9610; в уравнениях 2 и 3 правые части нулевые, и δ2=δ3=0\delta_2 = \delta_3 = 0.
  2. Якоби, итерация 2: δ2=(61,416⋅1,6171+54,592⋅(−1,9610))/148,408\delta_2 = (61{,}416\cdot1{,}6171 + 54{,}592\cdot(-1{,}9610))/148{,}408, то есть (99,316−107,055)/148,408=−0,0521(99{,}316 -107{,}055)/148{,}408 = -0{,}0521; δ3=(248,290−229,404)/302,923=0,0623\delta_3 = (248{,}290 -229{,}404)/302{,}923 = 0{,}0623; δ1\delta_1 и δ4\delta_4 не изменились — их соседи на итерации 1 были нулевыми.
  3. Зейдель, итерация 1: δ1=1,6171\delta_1 = 1{,}6171, как у Якоби; затем новое δ1\delta_1 сразу идёт в уравнения 2 и 3: δ2=99,316/148,408=0,6692\delta_2 = 99{,}316/148{,}408 = 0{,}6692, δ3=248,290/302,923=0,8196\delta_3 = 248{,}290/302{,}923 = 0{,}8196; в уравнении 4 — новые δ2\delta_2 и δ3\delta_3: δ4=(−400+36,533+95,879)/203,975=−1,3119\delta_4 = (-400 + 36{,}533 + 95{,}879)/203{,}975 = -1{,}3119.
  4. Спектральный радиус матрицы Якоби ρJ\rho_J = 0,858; у Зейделя ρJ2\rho_J^2 = 0,736; оптимальный параметр ω=2/(1+1−ρJ2)=1,32\omega = 2/(1 + \sqrt{1 - \rho_J^2}) = 1{,}32 даёт ρ\rho = 0,32.
  5. Итераций до невязки 10−610^{-6}: Якоби — 65, Зейдель — 39, верхняя релаксация с ω\omega = 1,32 — 15; метод сопряжённых градиентов (следующий раздел) — 3.
Жауап: Якоби нужно 65 итераций, Зейделю — 39, верхней релаксации — 15, сопряжённым градиентам — 3.

Бұл нені білдіреді. На первой итерации Зейдель «перескочил»: δ2\delta_2 и δ3\delta_3 получили 0,6692 и 0,8196 МПа — намного больше решения, потому что в уравнениях 2 и 3 он уже видел новое δ1\delta_1, но ещё не видел отрицательного δ4\delta_4. По первым итерациям методы не сравнивают: скорость в пределе задаёт спектральный радиус, и Зейдель затем сходится вдвое быстрее Якоби. Сопряжённые градиенты закончили за 3 итерации: для такой маленькой системы метод Крылова точен за число шагов, не большее числа неизвестных. Данные примера условные.

Почему итерации сходятся и как быстро? Ошибка приближения e(ν)=x−x(ν)\mathbf{e}^{(\nu)} = \mathbf{x} - \mathbf{x}^{(\nu)} на каждой итерации умножается на одну и ту же матрицу перехода G\mathbf{G} (дополнительный раздел). Итерации сходятся при любом начальном приближении, если спектральный радиус ρ(G)\rho(\mathbf{G}) — наибольший модуль собственного числа — меньше единицы, и в пределе ошибка убывает в 1/ρ1/\rho раз за итерацию:

Скорость сходимости простых итераций
ν≈ln⁡(1/ε)−ln⁡ρ(G),ρGS=ρJ2,ωopt=21+1−ρJ2,ρSOR=ωopt−1\nu \approx \frac{\ln(1/\varepsilon)}{-\ln\rho(\mathbf{G})},\qquad \rho_{GS} = \rho_J^2,\qquad \omega_{opt} = \frac{2}{1 + \sqrt{1 - \rho_J^2}},\qquad \rho_{SOR} = \omega_{opt} - 1
мұндағы:
  • ν\nuчисло итераций, чтобы уменьшить ошибку в 1/ε1/\varepsilon раз, —
  • ρ(G)\rho(\mathbf{G})спектральный радиус матрицы перехода метода, —
  • ρJ, ρGS, ρSOR\rho_J,\ \rho_{GS},\ \rho_{SOR}спектральные радиусы методов Якоби, Зейделя и верхней релаксации, —
  • ωopt\omega_{opt}оптимальный параметр верхней релаксации, —

Бірліктер: безразмерные

Мына жағдайда орындалады
  • оценка для большого числа итераций; на первых итерациях скорость зависит от начальной ошибки;
  • соотношения для Зейделя и SOR — для согласованно упорядоченных матриц, к которым относятся пятиточечные матрицы декартовых сеток при естественной нумерации.

Зейдель сходится вдвое быстрее Якоби, а верхняя релаксация с оптимальным ω\omega — в разы быстрее Зейделя. Но ρJ\rho_J стремится к единице при измельчении сетки и при росте шага по времени: медленнее всего затухают ошибки, гладкие на масштабе многих ячеек.

Участок 2 × 2: шаг по времени, обусловленность и число итераций
Шаг Δt\Delta t, сут
1
ρJ\rho_J
0,387
κ\kappa
2,36
Якоби; Зейдель; SOR
12; 8; 6
Сопряжённые градиенты
3
Шаг Δt\Delta t, сут
10
ρJ\rho_J
0,858
κ\kappa
14,6
Якоби; Зейдель; SOR
65; 39; 15
Сопряжённые градиенты
3
Шаг Δt\Delta t, сут
100
ρJ\rho_J
0,984
κ\kappa
137
Якоби; Зейдель; SOR
464; 287; 46
Сопряжённые градиенты
3

Итерации от нулевого приближения до относительной невязки 10−610^{-6}; SOR — с оптимальным ω\omega (1,04; 1,32; 1,69). Величина κ−1\kappa - 1 растёт строго пропорционально шагу, как предсказывает формула для равномерного сдвига давления, а с ней — и число простых итераций.

На большой сетке простым методам ещё труднее. За одну итерацию Якоби поправка доходит от ячейки только до её соседей, а чтобы исправить гладкую ошибку — например, общий уровень давления в большом блоке пласта, — сведения должны пройти через всю сетку. Поэтому число итераций Якоби и Зейделя растёт как квадрат числа ячеек вдоль стороны, а верхней релаксации — пропорционально ему (таблица в следующем разделе). В симуляторах долго применяли блочные варианты, например линейную верхнюю релаксацию (line SOR, LSOR): целую строку ячеек решают сразу методом прогонки. Сегодня простые итерации работают главным образом внутри более сильных методов — как сглаживатели в многосеточных методах и предобусловливателях.

Методы подпространств Крылова и предобусловливание

Простые итерации используют только последнее приближение. Методы подпространств Крылова (Krylov subspace methods) помнят историю: приближение на итерации ν\nu ищут как лучшую комбинацию векторов b\mathbf{b}, Ab\mathbf{A}\mathbf{b}, …, Aν−1b\mathbf{A}^{\nu - 1}\mathbf{b}, которые получаются умножением матрицы на вектор. Для симметричной положительно определённой матрицы — уравнения давления — это метод сопряжённых градиентов (conjugate gradients, CG): он минимизирует ошибку в «энергетической» норме и в точной арифметике заканчивает работу не больше чем за nn итераций. В примере с участком 2 × 2 — за три: в правой части нет составляющей равномерного сдвига (закачка равна отбору), и оставшихся направлений три. Для несимметричных якобианов применяют GMRES и ORTHOMIN — они хранят историю направлений, и её длину ограничивают, отбрасывая старые направления или периодически начиная заново, — или BiCGStab, который обходится короткой историей, но сходится менее гладко.

Сходимость метода сопряжённых градиентов
∥e(ν)∥A≤2(κ−1κ+1)ν∥e(0)∥A,ν≲κ2 ln⁡2ε\lVert\mathbf{e}^{(\nu)}\rVert_{\mathbf{A}} \le 2\left(\frac{\sqrt\kappa - 1}{\sqrt\kappa + 1}\right)^{\nu}\lVert\mathbf{e}^{(0)}\rVert_{\mathbf{A}},\qquad \nu \lesssim \frac{\sqrt\kappa}{2}\,\ln\frac{2}{\varepsilon}
мұндағы:
  • e(ν)\mathbf{e}^{(\nu)}ошибка приближения после ν\nu итераций, в единицах неизвестных
  • ∥e∥A\lVert\mathbf{e}\rVert_{\mathbf{A}}энергетическая норма eTAe\sqrt{\mathbf{e}^{\mathsf T}\mathbf{A}\mathbf{e}}, —
  • κ\kappaчисло обусловленности матрицы, —
  • ε\varepsilonво сколько раз нужно уменьшить ошибку (обратная величина), —

Бірліктер: безразмерные

Мына жағдайда орындалады
  • симметричная положительно определённая матрица; точная арифметика;
  • оценка сверху: на практике сходимость часто быстрее, особенно если собственные числа собраны в группы.

Число итераций растёт как корень из числа обусловленности: для модельной задачи — пропорционально числу ячеек вдоль стороны, как у верхней релаксации, но без подбора параметра. Отсюда смысл предобусловливания — уменьшить κ\kappa.

Предобусловливание (предобусловливатель, preconditioner). Вместо Ax=b\mathbf{A}\mathbf{x} = \mathbf{b} решают равносильную систему, в которой матрица ближе к единичной:

Предобусловленная система
M−1A x=M−1b,M≈A,κ(M−1A)≪κ(A)\mathbf{M}^{-1}\mathbf{A}\,\mathbf{x} = \mathbf{M}^{-1}\mathbf{b},\qquad \mathbf{M} \approx \mathbf{A},\qquad \kappa\left(\mathbf{M}^{-1}\mathbf{A}\right) \ll \kappa(\mathbf{A})
мұндағы:
  • M\mathbf{M}предобусловливатель: подобие A\mathbf{A}, система с которым решается дёшево, в единицах A\mathbf{A}
  • κ\kappaчисло обусловленности, —

Бірліктер: в единицах системы

Мына жағдайда орындалады
  • матрицу M−1\mathbf{M}^{-1} не строят: на каждой итерации решают систему Mz=r\mathbf{M}\mathbf{z} = \mathbf{r};
  • для метода сопряжённых градиентов M\mathbf{M} должна быть симметричной положительно определённой.

Хороший предобусловливатель — компромисс: чем ближе M\mathbf{M} к A\mathbf{A}, тем меньше итераций, но тем дороже каждая. Крайние случаи — M=A\mathbf{M} = \mathbf{A} (одна итерация, но это и есть прямое решение) и диагональ A\mathbf{A} (дёшево, но помогает мало).

  • Неполное LU-разложение (incomplete LU, ILU): исключение Гаусса, в котором заполнение отбрасывают; в ILU(0) множители хранят только на местах ненулевых элементов A\mathbf{A}, в ILU(k) — и часть заполнения. Дёшево и особенно полезно для неоднородных моделей.
  • Вложенная факторизация (nested factorization) — предобусловливатель, придуманный для гидродинамических моделей: он использует вложенный порядок связей по осям сетки (внутри линии ячеек, между линиями, между плоскостями) и широко применяется в симуляторах с декартовыми и угловыми сетками.
  • Двухступенчатое предобусловливание CPR (constrained pressure residual) для полностью неявной схемы. Сначала из уравнений ячейки составляют уравнение для давления и решают его отдельно: эта часть задачи «эллиптическая» — каждая ячейка чувствует все остальные, и ошибка давления гладкая и общая для всей модели. Затем остаток ошибки, связанный в основном с насыщенностями и местный, убирают дешёвым ILU для всей системы.
  • Многосеточные методы (multigrid; алгебраические, AMG, строят грубые уровни прямо по матрице): гладкую ошибку, которую простые итерации убирают медленно, исправляют на грубых сетках, где она перестаёт быть гладкой. Число итераций почти не зависит от размера сетки, поэтому AMG часто решает уравнение давления на первой ступени CPR.
Модельная задача: число итераций до относительной невязки 10−610^{-6}
Метод
Якоби
10 × 10
258
20 × 20
986
40 × 40
3729
20 × 20, неоднородный
2575
Метод
Зейдель
10 × 10
130
20 × 20
494
40 × 40
1866
20 × 20, неоднородный
1297
Метод
SOR с оптимальным ω\omega
10 × 10
28
20 × 20
53
40 × 40
102
20 × 20, неоднородный
92
Метод
Сопряжённые градиенты
10 × 10
13
20 × 20
33
40 × 40
66
20 × 20, неоднородный
299
Метод
Сопряжённые градиенты + ILU(0)
10 × 10
10
20 × 20
16
40 × 40
30
20 × 20, неоднородный
24

Квадратный участок пласта, окружённый водоносным горизонтом с постоянным давлением; несжимаемая жидкость, закачка в центре; итерации от нулевого приближения. Неоднородный вариант — логнормальная проницаемость со стандартным отклонением ln⁡k\ln k, равным 2: она меняется от ячейки к ячейке более чем на 4 порядка. Оптимальное ω\omega для SOR — 1,53; 1,73; 1,85; 1,82. Данные условные.

Таблица показывает три вещи. При удвоении сетки число итераций Якоби и Зейделя растёт почти вчетверо (Якоби: 258 → 986 → 3729), у верхней релаксации и сопряжённых градиентов — примерно вдвое. Неоднородность замедляет простые методы в 1,7–2,6 раза, а сопряжённые градиенты без предобусловливания — примерно в 9 раз: их скорость задаёт обусловленность, которую контрасты проводимостей ухудшают на порядки. Неполное LU-разложение почти снимает эту трудность: 24 итерации против 299. В однородной задаче ILU(0) уменьшает число итераций лишь в 1,3–2,2 раза и не меняет его роста с размером сетки (10 → 16 → 30); рост убирают многосеточные методы.

Относительная невязка модельной задачи 20 × 20 по итерациям для пяти методов020406080100−6−5−4−3−2−10Итерацияlg относительной невязкиЯкобиЗейдельSORCGCG + ILU(0)

График десятичного логарифма относительной невязки от 0 до −6 (невязка от 1 до одной миллионной) по итерациям от 0 до 100. Кривые Якоби и Зейделя опускаются медленно и к сотой итерации доходят лишь до нескольких сотых. Кривая верхней релаксации после медленного начала круто падает и достигает одной миллионной на 53-й итерации. Кривая сопряжённых градиентов неровная, но достигает одной миллионной на 33-й итерации, а с предобусловливанием ILU — на 16-й.

ЕсептеуОтносительная невязка модельной задачи 20 × 20 (однородный пласт) по итерациям: Якоби, Зейдель, верхняя релаксация (SOR) с оптимальным ω\omega, сопряжённые градиенты (CG) без предобусловливания и с ILU(0). По вертикали — десятичный логарифм невязки: −6 соответствует 10−610^{-6}. Якоби и Зейделю до 10−610^{-6} нужно около тысячи и пятисот итераций.

Когда остановить итерации: невязка, ошибка и баланс

Критерий остановки и связь невязки с ошибкой
∥r(ν)∥∥b∥≤ε,r(ν)=b−A x(ν),∥x−x(ν)∥∥x∥≤κ ∥r(ν)∥∥b∥\frac{\lVert\mathbf{r}^{(\nu)}\rVert}{\lVert\mathbf{b}\rVert} \le \varepsilon,\qquad \mathbf{r}^{(\nu)} = \mathbf{b} - \mathbf{A}\,\mathbf{x}^{(\nu)},\qquad \frac{\lVert\mathbf{x} - \mathbf{x}^{(\nu)}\rVert}{\lVert\mathbf{x}\rVert} \le \kappa\,\frac{\lVert\mathbf{r}^{(\nu)}\rVert}{\lVert\mathbf{b}\rVert}
мұндағы:
  • r(ν)\mathbf{r}^{(\nu)}невязка (residual) приближения x(ν)\mathbf{x}^{(\nu)}, в единицах правой части
  • ε\varepsilonдопуск — относительная невязка, при которой итерации останавливают, —
  • κ\kappaчисло обусловленности, —
  • ∥⋅∥\lVert\cdot\rVertнорма вектора (например, корень из суммы квадратов), —

Бірліктер: безразмерные отношения

Мына жағдайда орындалады
  • невязку можно вычислить, ошибку — нет: точное решение неизвестно; неравенство для ошибки — оценка сверху.

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

У невязки уравнения давления есть физический смысл. Каждое уравнение — баланс ячейки за шаг в кубометрах в сутки, и невязка — объём, «потерянный» или «созданный» в ячейке за сутки. Сумма невязок по всем ячейкам — погрешность материального баланса шага: перетоки между ячейками при сложении взаимно уничтожаются (почему сетка не теряет массу). Поэтому критерии сходимости симуляторов формулируют через нормированные невязки ячеек и общий баланс (критерии сходимости).

Есептеу мысалыЧем грозит грубый допуск: баланс участка из четырёх ячеек
Бастапқы деректер (шартты)
Система
участок 2 × 2, шаг 10 сут; метод Зейделя от нулевого приближения
Допуски
относительная невязка 10−210^{-2} и 10−410^{-4}
Шешім
  1. До невязки 10−210^{-2} нужно 9 итераций (невязка 0,0088). Изменения давления: 1,7793; 0,0714; 0,2038; −1,8250 МПа против точных 1,7110; 0,0189; 0,1437; −1,8736 — ошибка до 0,068 МПа.
  2. Ёмкость, умноженная на сумму изменений: S∑δi=324⋅0,2295=74S\sum\delta_i = 324\cdot0{,}2295 = 74 м³. В точном решении сумма равна нулю — закачка равна отбору. Значит, недорешённые давления «создали» 74 м³ жидкости — 1,9 % закачанных за шаг 4000 м³.
  3. До невязки 10−410^{-4} — 24 итерации: ошибка давления 0,0007 МПа, «созданный» объём 0,8 м³, или 0,02 % закачки.
Жауап: При допуске 10−210^{-2} ошибка давлений — до 0,068 МПа, а баланс шага нарушен на 74 м³ (1,9 % закачки); при 10−410^{-4} — до 0,0007 МПа и 0,8 м³.

Бұл нені білдіреді. Невязка 10−210^{-2} звучит как «один процент», но это процент от правой части, а не от давлений: изменение давления в ячейке 2, где правая часть нулевая, вышло в 3,8 раза больше точного. Ошибка баланса накапливается от шага к шагу; по ней симулятор и судит, достаточно ли решены уравнения. В полностью неявной схеме допуски линейного решателя согласуют с итерациями Ньютона: на первых итерациях достаточно уменьшить невязку на один-два порядка, на последних — сильнее. Данные примера условные.

Сколько это стоит: почему решатель определяет время расчёта

Работа прямого и итерационного решения
Wплотн≈n33,Wлента≈n b2,Wитер≈ν c nW_{\text{плотн}} \approx \frac{n^3}{3},\qquad W_{\text{лента}} \approx n\,b^2,\qquad W_{\text{итер}} \approx \nu\,c\,n
мұндағы:
  • nnчисло неизвестных, —
  • bbполуширина ленты, —
  • ν\nuчисло итераций, —
  • ccопераций на неизвестное за итерацию: умножение матрицы на вектор, предобусловливатель, скалярные произведения, —

Бірліктер: операции умножения со сложением

Мына жағдайда орындалады
  • главные члены оценок; для семиточечной матрицы с ILU(0) cc — порядка двух-трёх десятков.

Прямой метод платит степенью размера задачи, итерационный — числом итераций, которое тоже растёт с размером, но медленнее.

Есептеу мысалыПрямое или итерационное решение для трёхмерной модели
Бастапқы деректер (шартты)
Сетка
100 × 100 × 20 ячеек, по уравнению давления на ячейку: nn = 200 000
Итерационный решатель (допущение)
50 итераций сопряжённых градиентов с предобусловливанием, около 25 операций на неизвестное за итерацию
Компьютер (допущение)
10910^9 операций умножения со сложением в секунду на одно ядро
Число решений за расчёт (допущение)
4000: сотни шагов по несколько итераций
Шешім
  1. Плотная матрица: n3/3=2,67⋅1015n^3/3 = 2{,}67\cdot10^{15} операций — 31 сут на одно решение.
  2. Лента при естественной нумерации: b=100⋅100=10 000b = 100\cdot100 = 10\,000; работа nb2=2⋅1013nb^2 = 2\cdot10^{13} — 5,6 ч; память nb=2⋅109nb = 2\cdot10^{9} чисел, по 8 байт — 16 ГБ.
  3. Нумерация сначала по вертикали: b=20⋅100=2000b = 20\cdot100 = 2000; работа 8⋅10118\cdot10^{11} — 13 мин на решение, память 3,2 ГБ.
  4. Итерационный решатель: 50⋅25⋅200 000=2,5⋅10850\cdot25\cdot200\,000 = 2{,}5\cdot10^{8} операций — 0,25 с.
  5. За 4000 решений: лента (лучшая нумерация) — 37 сут, итерационный решатель — 17 мин.
Жауап: Ленточное исключение заняло бы 13 мин на одно решение и 37 сут на расчёт, итерационный решатель — 0,25 с и 17 мин.

Бұл нені білдіреді. Для трёхмерных моделей выбор очевиден, и он тем очевиднее, чем больше сетка: работа ленточного метода растёт как n7/3n^{7/3} (ширина ленты — слой ячеек), итерационного — примерно как nn, умноженное на медленно растущее число итераций. Скорость компьютера и число операций здесь — допущения для оценки порядка величин. Данные примера условные.

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

Если решатель сходится медленно или не сходится
  1. 1
    Читать журнал

    на каких шагах растёт число линейных итераций и где сокращается шаг; после пуска и остановки скважин это нормально, на спокойных участках — сигнал.

  2. 2
    Искать плохие ячейки

    крошечный поровый объём рядом с крупными ячейками, проводимости, отличающиеся на много порядков, несоседние соединения с огромной проводимостью: они портят обусловленность; такие ячейки делают неактивными или объединяют с соседними.

  3. 3
    Проверить скважины

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

  4. 4
    Менять настройки осознанно

    допуски и тип предобусловливателя меняют, сверяя баланс и результаты с расчётом при прежних настройках.

Терминдер мен белгілер

Линейный решатель
часть симулятора, решающая системы Ax=b\mathbf{A}\mathbf{x} = \mathbf{b} неявных шагов и итераций Ньютона.
Разреженная матрица
матрица, в строке которой ненулевых чисел столько, сколько связей у ячейки, плюс диагональ.
Ширина ленты bb
наибольшая разность номеров связанных неизвестных; при естественной нумерации — число ячеек в строке (2D) или в слое (3D).
Заполнение
новые ненулевые элементы, которые появляются при исключении: исключённое неизвестное связывает своих соседей.
Спектральный радиус ρ\rho
наибольший модуль собственного числа матрицы перехода итерационного метода; метод сходится при ρ<1\rho < 1.
Число обусловленности κ\kappa
отношение наибольшего собственного числа симметричной матрицы к наименьшему; во сколько раз относительная ошибка может превышать относительную невязку.
Предобусловливатель
легко обратимое подобие матрицы, уменьшающее число итераций: ILU, вложенная факторизация, CPR, многосеточные методы.
Невязка
b−Ax\mathbf{b} - \mathbf{A}\mathbf{x}; для уравнения давления — небаланс ячейки в м³/сут.

Жиі қателіктер

Қате

«Чтобы решить систему, надо обратить матрицу».

Шын мәнінде

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

Қате

«Невязка мала — значит, давления точны».

Шын мәнінде

Относительная ошибка может превышать относительную невязку в κ\kappa раз. В примере урока при невязке 10−210^{-2} изменение давления в ячейке 2 вышло почти вчетверо больше точного, а баланс шага нарушился на 1,9 % закачки.

Қате

«Если расчёт медленный, можно ослабить допуск решателя».

Шын мәнінде

Недорешённая система «создаёт» или «теряет» флюид, и ошибка баланса накапливается от шага к шагу; в полностью неявной схеме грубый допуск ещё и добавляет итераций Ньютона. Допуск меняют, только сверяя баланс и результаты.

Қате

«Простые итерации годятся для любой сетки — понадобится лишь больше итераций».

Шын мәнінде

Их число растёт как квадрат числа ячеек вдоль стороны: в модельной задаче 40 × 40 Якоби нужно 3729 итераций, а сопряжённым градиентам с ILU(0) — 30. Для больших моделей нужны методы Крылова с предобусловливанием.

Толық: тереңдетілген

Почему простые итерации медленны на больших сетках

Запишем матрицу как A=D−L−U\mathbf{A} = \mathbf{D} - \mathbf{L} - \mathbf{U}: диагональ, нижняя и верхняя части с обратным знаком. Метод Якоби: Dx(ν+1)=b+(L+U) x(ν)\mathbf{D}\mathbf{x}^{(\nu+1)} = \mathbf{b} + (\mathbf{L} + \mathbf{U})\,\mathbf{x}^{(\nu)}. Вычтем его из точного равенства Dx=b+(L+U) x\mathbf{D}\mathbf{x} = \mathbf{b} + (\mathbf{L} + \mathbf{U})\,\mathbf{x}:

Ошибка итераций и матрица перехода
e(ν+1)=G e(ν),GJ=D−1(L+U),GGS=(D−L)−1 U\mathbf{e}^{(\nu+1)} = \mathbf{G}\,\mathbf{e}^{(\nu)},\qquad \mathbf{G}_J = \mathbf{D}^{-1}(\mathbf{L} + \mathbf{U}),\qquad \mathbf{G}_{GS} = (\mathbf{D} - \mathbf{L})^{-1}\,\mathbf{U}
мұндағы:
  • e(ν)\mathbf{e}^{(\nu)}ошибка приближения x−x(ν)\mathbf{x} - \mathbf{x}^{(\nu)}, в единицах неизвестных
  • D, L, U\mathbf{D},\ \mathbf{L},\ \mathbf{U}диагональ, нижняя и верхняя треугольные части матрицы (с обратным знаком), в единицах матрицы
  • GJ, GGS\mathbf{G}_J,\ \mathbf{G}_{GS}матрицы перехода методов Якоби и Зейделя, —

Бірліктер: безразмерные

Мына жағдайда орындалады
  • линейная система с постоянной матрицей; диагональ без нулей.

После ν\nu итераций ошибка равна Gνe(0)\mathbf{G}^{\nu}\mathbf{e}^{(0)}: её составляющие вдоль собственных векторов G\mathbf{G} умножаются на собственные числа. Медленнее всех затухает составляющая с наибольшим модулем собственного числа — спектральным радиусом.

Для одномерной полосы из NN одинаковых ячеек с заданным давлением за концами, в простейшей записи (на диагонали 2, рядом −1), собственные векторы матрицы Якоби — синусоиды с m=1,…,Nm = 1, \ldots, N полуволнами, а собственные числа — cos⁡[mπ/(N+1)]\cos[m\pi/(N + 1)]. Самая гладкая синусоида затухает медленнее всех: ρJ=cos⁡[π/(N+1)]≈1−π2/[2(N+1)2]\rho_J = \cos[\pi/(N + 1)] \approx 1 - \pi^2/[2(N + 1)^2], и число итераций ν≈2(N+1)2ln⁡(1/ε)/π2\nu \approx 2(N + 1)^2\ln(1/\varepsilon)/\pi^2 — пропорционально квадрату числа ячеек. Изрезанные составляющие, меняющие знак от ячейки к ячейке, метод Зейделя убирает за несколько итераций; на этом построены многосеточные методы: простые итерации сглаживают ошибку, а её гладкую часть исправляют на грубой сетке, где она уже не гладкая.

Как устроен метод сопряжённых градиентов
Алгоритм метода сопряжённых градиентов
r(0)=b−Ax(0),p(0)=r(0);αν=r(ν)Tr(ν)p(ν)TA p(ν),x(ν+1)=x(ν)+αν p(ν),r(ν+1)=r(ν)−αν A p(ν);βν=r(ν+1)Tr(ν+1)r(ν)Tr(ν),p(ν+1)=r(ν+1)+βν p(ν)\begin{aligned} &\mathbf{r}^{(0)} = \mathbf{b} - \mathbf{A}\mathbf{x}^{(0)},\quad \mathbf{p}^{(0)} = \mathbf{r}^{(0)};\\ &\alpha_\nu = \frac{\mathbf{r}^{(\nu)\mathsf T}\mathbf{r}^{(\nu)}}{\mathbf{p}^{(\nu)\mathsf T}\mathbf{A}\,\mathbf{p}^{(\nu)}},\quad \mathbf{x}^{(\nu+1)} = \mathbf{x}^{(\nu)} + \alpha_\nu\,\mathbf{p}^{(\nu)},\quad \mathbf{r}^{(\nu+1)} = \mathbf{r}^{(\nu)} - \alpha_\nu\,\mathbf{A}\,\mathbf{p}^{(\nu)};\\ &\beta_\nu = \frac{\mathbf{r}^{(\nu+1)\mathsf T}\mathbf{r}^{(\nu+1)}}{\mathbf{r}^{(\nu)\mathsf T}\mathbf{r}^{(\nu)}},\quad \mathbf{p}^{(\nu+1)} = \mathbf{r}^{(\nu+1)} + \beta_\nu\,\mathbf{p}^{(\nu)}\end{aligned}
мұндағы:
  • r(ν)\mathbf{r}^{(\nu)}невязка на итерации ν\nu, в единицах правой части
  • p(ν)\mathbf{p}^{(\nu)}направление поиска, в единицах неизвестных
  • αν, βν\alpha_\nu,\ \beta_\nuдлина шага вдоль направления и коэффициент нового направления, —

Бірліктер: в единицах системы

Мына жағдайда орындалады
  • симметричная положительно определённая матрица; с предобусловливателем в направлениях и скалярных произведениях вместо r\mathbf{r} используют z=M−1r\mathbf{z} = \mathbf{M}^{-1}\mathbf{r}.

За итерацию — одно умножение матрицы на вектор и два скалярных произведения. Направления сопряжены: p(μ)TA p(ν)=0\mathbf{p}^{(\mu)\mathsf T}\mathbf{A}\,\mathbf{p}^{(\nu)} = 0 при μ≠ν\mu \ne \nu, поэтому шаг вдоль нового направления не портит достигнутого вдоль прежних. В точной арифметике после kk итераций ошибка наименьшая из возможных в подпространстве Крылова размерности kk; машинные округления постепенно нарушают сопряжённость, и на практике метод работает как итерационный.

Системы полностью неявной схемы и двухступенчатое предобусловливание

В полностью неявной схеме у ячейки два-три неизвестных — давление и насыщенности, и матрица Ньютона состоит из блоков 2 × 2 или 3 × 3 (якобиан). Части задачи ведут себя по-разному. Давление ведёт себя почти «эллиптически»: на неявном шаге изменение дебита скважины сказывается во всей модели, и ошибка давления гладкая и общая. Насыщенности «гиперболические»: они переносятся потоком и меняются в основном у фронтов и скважин, и их ошибка местная.

Двухступенчатое предобусловливание CPR использует это различие. На первой ступени из уравнений фаз ячейки составляют одно уравнение для давления — примерно так, как суммируют балансы фаз в уравнении давления (уравнение давления), — и решают его сильным методом, обычно алгебраическим многосеточным. На второй ступени дешёвое неполное LU-разложение всей системы убирает оставшуюся местную ошибку. Каждая ступень делает то, что умеет лучше, и число итераций внешнего метода (как правило, GMRES) остаётся небольшим даже для моделей в миллионы ячеек.

Басқа тақырыптармен байланыс

Өзіңізді тексеріңіз

  1. 1

    Сколько ненулевых чисел в строке матрицы давления для внутренней ячейки трёхмерной декартовой сетки без несоседних соединений и скважин?

    1. А.7
    2. Б.3
    3. В.27
    4. Г.5
    Жауабын көрсету

    Дұрыс жауап: А. 7

    Диагональ и шесть соседей по граням — справа, слева, спереди, сзади, сверху и снизу. 27 чисел было бы, если связывать ячейку со всеми соседями по углам и рёбрам, как в некоторых многоточечных схемах.

  2. 2

    Модель — 200 × 100 × 30 ячеек. Чему равна ширина ленты при естественной нумерации (быстрее всего — вдоль длинной оси, затем вдоль второй, затем по слоям) и при нумерации сначала по вертикали, затем вдоль короткой горизонтальной оси? Во сколько раз различается работа ленточного исключения?

    Жауабын көрсету

    Естественная нумерация: b=200⋅100=20 000b = 200\cdot100 = 20\,000. Сначала по вертикали, затем вдоль короткой оси: b=30⋅100=3000b = 30\cdot100 = 3000. Работа пропорциональна b2b^2: (20 000/3000)2≈44(20\,000/3000)^2 \approx 44. Но даже 3000 — слишком широкая лента для шести сотен тысяч неизвестных: nb2≈5,4⋅1012nb^2 \approx 5{,}4\cdot10^{12} операций на одно решение.

  3. 3

    Шаг по времени увеличили в 10 раз. Как изменится число обусловленности системы давления закрытого пласта со скважинами с заданным дебитом, если шаг уже крупный?

    1. А.Не изменится
    2. Б.Уменьшится примерно в 10 раз
    3. В.Увеличится в 100 раз
    4. Г.Увеличится примерно в 10 раз
    Жауабын көрсету

    Дұрыс жауап: Г. Увеличится примерно в 10 раз

    Наименьшее собственное число равно S/ΔtS/\Delta t — оно уменьшится в 10 раз, а наибольшее почти не изменится: его задают связи. В примере урока при переходе от 10 к 100 сут число обусловленности выросло с 14,6 до 137, а итераций Якоби понадобилось в семь раз больше.

  4. 4

    Методу Якоби на сетке 30 × 30 понадобилось 600 итераций, а сопряжённым градиентам — 50. Сколько примерно понадобится каждому методу на сетке 60 × 60 того же пласта?

    Жауабын көрсету

    Число итераций Якоби растёт как квадрат числа ячеек вдоль стороны: около 600⋅4=2400600\cdot4 = 2400. У сопряжённых градиентов — как корень из числа обусловленности, то есть пропорционально числу ячеек вдоль стороны: около 100. При этом каждая итерация на сетке 60 × 60 вчетверо дороже, так что общая работа растёт в 16 и в 8 раз.

  5. 5

    Относительная невязка решения — 10−310^{-3}, число обусловленности системы — около 10410^4. Что можно сказать об относительной ошибке давлений?

    1. А.Она не больше 10−710^{-7}
    2. Б.Она может достигать 1010, то есть быть больше самого решения
    3. В.Она не больше 10−310^{-3}
    4. Г.Она равна нулю, раз невязка мала
    Жауабын көрсету

    Дұрыс жауап: Б. Она может достигать 1010, то есть быть больше самого решения

    Оценка сверху — κ⋅10−3=10\kappa\cdot10^{-3} = 10: при плохой обусловленности малая невязка не гарантирует даже верного порядка величин. На практике ошибка обычно меньше оценки, но поэтому в плохо обусловленных задачах допуск делают строже или улучшают предобусловливатель.

  6. 6

    Сумма невязок уравнений давления по всем ячейкам после решения — +15 м³/сут при шаге 20 сут. Что это значит для материального баланса?

    Жауабын көрсету

    Сумма невязок — небаланс модели: перетоки между ячейками при сложении уничтожаются, и остаются накопление и скважины. За шаг уравнения давления «потеряли» или «создали» 15⋅20=30015\cdot20 = 300 м³ флюида — в зависимости от знака, принятого в записи невязки. Это и есть погрешность материального баланса, которую печатает симулятор; её сравнивают с отборами и поровым объёмом и при заметной величине ужесточают допуск.

Жаңартылған: 19 октября 2026 г.