Numerical Simulations
Seismic Waves
Решил визуализировать несколько основных сейсмических волн. Все волны ниже — решения одного уравнения эластики (уравнение движения упругой среды): ρ ∂²u/∂t² = (λ + 2μ) ∇(∇·u) − μ ∇×∇×u. где ρ — плотность, λ и μ — параметры Ламе, ν — коэффициент Пуассона. Подстановка u = ∇φ + ∇×ψ (разложение Гельмгольца) разделяет его на два волновых уравнения: ∂²φ/∂t² = α² ∇²φ (P-волна), ∂²ψ/∂t² = β² ∇²ψ (S-волна). Солвер решает плоскую деформацию (компоненты ux, uz, поляризация P–SV), поэтому всё ниже, кроме волны Лява (но ее я визуализирую в 3D, где есть SH), в нём считается...
Акустика 2D. Вторая часть
Идея в двух словах. Классический FD строит производные на регулярной сетке соседних узлов. RBF-FD делает то же самое, но узлы могут быть разбросаны: вокруг каждой точки берётся локальное облако соседей, и по ним строится локальный разностный шаблон. Итоговая матрица лапласиана всё равно разреженная, как у FD, только шаблон «плавает» с каждым узлом. Странно воспринимать RBF-FD как самостоятельный метод. Я скорее думаю о нем как нетривиальная реализация FD где регулярная сетка неудобна или численно неэффективна...
3D Elastic GPU - Overthrust
Посчитал Overthrust в 3D на GPU - я молодец. Источник - Рикер 10 HZ. Видеокарта Nvidia H100 80GB. Вот собственно модель Overthrust: Выглядит безобидно, но размер исходных данный такой: N=187×801×801=119979387 узлов. Я использую float32 что разумно для сейсмики, но даже с ним решение для одного момента времени для эластики занимает примерно 1...
