Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions docs/source/Advanced/boundary/boundary.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
:author: 朱邓达
:date: 2025-01-08

顶底界面的边界条件
=====================

默认情况下,一维层状模型的顶界面为 **自由边界** ,即过 z 平面的牵引力为 0;
底界面为 **半无限空间** ,其对应模型文件的最后一行。

自版本 0.15.0 起, **PyGRT** 支持设置顶底界面的边界条件,可设置为 **自由边界,刚性边界和半无限空间** , 公式推导详见 :doc:`/Formula/boundary` ,示例详见 :doc:`/Gallery/ex16/ex16` 。
为了不改变默认的模型输入,顶、底界面对边界条件的处理会有些区别,详见以下示意图。

.. figure:: plot_boundary.svg
:align: center

通过以下可选参数,可设置顶底界面的边界条件。

.. tabs::

.. group-tab:: C

详见 :doc:`/Module/greenfn` 和 :doc:`/Module/static_greenfn` 模块的 **-B** 选项。

.. group-tab:: Python

:func:`PyModel1D() <pygrt.pymod.PyModel1D>` 创建模型时可设置边界条件:

+ ``topbound:Literal['free', 'rigid', 'halfspace']`` 顶层边界条件
+ ``botbound:Literal['free', 'rigid', 'halfspace']`` 底层边界条件
767 changes: 767 additions & 0 deletions docs/source/Advanced/boundary/plot_boundary.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
90 changes: 90 additions & 0 deletions docs/source/Formula/boundary.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
:author: 朱邓达
:date: 2026-01-07

自由边界和刚性边界的反射系数
============================================

本质上与 |yao2026| 中推导顶层的自由界面反射系数的过程基本一致,只是替换了相应的矩阵表达式。

具体而言, 以动态 P-SV 为例,

+ 自由边界满足过 z 平面的牵引力为 0, 即

.. math::

\begin{bmatrix}
q_m \\
w_m \\
0 \\
0 \\
\end{bmatrix} =
\begin{bmatrix}
k & b & k & -b \\
a & k & -a & k \\
2\mu\Omega & 2k\mu b & 2\mu\Omega & -2k\mu b \\
2k\mu a & 2\mu\Omega & -2k\mu a & 2\mu\Omega \\
\end{bmatrix}
\begin{bmatrix}
\phi_m^- \\
\psi_m^- \\
\phi_m^+ \\
\psi_m^+ \\
\end{bmatrix}

+ 刚性边界满足位移为 0 ,即

.. math::

\begin{bmatrix}
0 \\
0 \\
\sigma_{Rm} \\
\tau_{Rm} \\
\end{bmatrix} =
\begin{bmatrix}
k & b & k & -b \\
a & k & -a & k \\
2\mu\Omega & 2k\mu b & 2\mu\Omega & -2k\mu b \\
2k\mu a & 2\mu\Omega & -2k\mu a & 2\mu\Omega \\
\end{bmatrix}
\begin{bmatrix}
\phi_m^- \\
\psi_m^- \\
\phi_m^+ \\
\psi_m^+ \\
\end{bmatrix}

根据以上结果为 0 的表达式,可以构建出以下关系:

+ 对于顶层界面的 z+ 侧

.. math::

\begin{bmatrix}
\phi_m^+ \\
\psi_m^+ \\
\end{bmatrix} =
\mathbf{R}_U
\begin{bmatrix}
\phi_m^- \\
\psi_m^- \\
\end{bmatrix}

+ 对于底层界面的 z- 侧

.. math::

\begin{bmatrix}
\phi_m^- \\
\psi_m^- \\
\end{bmatrix} =
\mathbf{R}_D
\begin{bmatrix}
\phi_m^+ \\
\psi_m^+ \\
\end{bmatrix}


具体公式我使用 `SymPy <https://www.sympy.org/>`_ 做了推导,相应的 ``.ipynb`` 文件如下,以供读者参考。

:download:`boundary_condition.ipynb` ( :doc:`预览 <boundary_condition>` )
Loading