TauP 自定义模型

TauP 内置了常见的一维速度模型,比如 PREM、ak135、iasp91 等,这些标准速度模型 位于 TauP 软件包的 StdModels 目录下。日常科研中,这些标准速度模型是不能满足 需求的,因而需要自定义速度模型。

速度模型格式

通常,自定义的模型都是在标准模型的基础上对少量改动。所以,要想自定义模型,先要了解 TauP 模型的格式。TauP 支持两种速度模型格式: ndtvel

tvel 格式

以 ak135 模型为例,其前 10 行的内容如下:

$ head -10 ak135.tvel
ak135 - P
ak135 - S
     0.000      5.8000      3.4600     2.7200
    20.000      5.8000      3.4600      2.7200
    20.000      6.5000      3.8500      2.9200
    35.000      6.5000      3.8500      2.9200
    35.000      8.0400      4.4800      3.3198
    77.500      8.0450      4.4900      3.3455
   120.000      8.0500      4.5000      3.3713
   165.000      8.1750      4.5090      3.3985

其中前两行是注释行,会被自动忽略,但这两行是必须的。接下来每行给定一个深度处的参数值, 两个深度之间的参数通过线性插值得到。若某个深度处有两个不同的参数值,则该深度处是一个 速度界面,比如上面的几行中 20 和 35 都是速度界面,其余深度则不是。

nd 格式

以 PREM 模型为例,其前 10 行的内容如下:

$ head -10 prem.nd
    0.00     5.80000   3.20000   2.60000    1456.0     600.0
   15.00     5.80000   3.20000   2.60000    1456.0     600.0
   15.00     6.80000   3.90000   2.90000    1350.0     600.0
   24.40     6.80000   3.90000   2.90000    1350.0     600.0
mantle
   24.40     8.11061   4.49094   3.38076    1446.0     600.0
   40.00     8.10119   4.48486   3.37906    1446.0     600.0
   60.00     8.08907   4.47715   3.37688    1447.0     600.0
   80.00     8.07688   4.46953   3.37471     195.0      80.0
  115.00     8.05540   4.45643   3.37091     195.0      80.0

与 tvel 格式类似,也是每行指定一个深度处的参数值。两个深度之间的参数通过线性插值得到。 若某个深度处有两个不同的参数值,则该深度处是一个速度界面。不同之处在于, nd 格式中没有 前两列注释行,且有专门的行来指定地球内部的重要界面:Moho、CMB 和 ICB。

微调模型

假定要以 PREM 模型为基础来自定义模型。首先将标准 PREM 模型 prem.nd 复制一份到 工作目录,并重命名为 model1.nd 。直接执行如下命令就可以计算新模型下的震相走时。

$ taup_time -mod model1 -ph p,P,Pn -h 5 -km 200

Model: model1
Distance   Depth   Phase   Travel    Ray Param  Takeoff  Incident  Purist    Purist
  (deg)     (km)   Name    Time (s)  p (s/deg)   (deg)    (deg)   Distance   Name
-----------------------------------------------------------------------------------
    1.80     5.0   P         29.09    13.657     45.47    45.43     1.80   = P
    1.80     5.0   Pn        29.09    13.657     45.47    45.43     1.80   = Pn
    1.80     5.0   P         31.60    16.312     58.38    58.30     1.80   = P
    1.80     5.0   P         31.75    16.187     57.67    57.60     1.80   = P
    1.80     5.0   p         34.48    19.158      0.00    87.84     1.80   = p
    1.80     5.0   P         34.73    18.961     81.80    81.50     1.80   = P

-mod 后的参数没有以 .nd.tvel 结尾,则命令会首先到标准模型中找,若找不到则到当前 目录下找。

-mod 后的参数以 .nd.tvel 结尾,则命令只会在当前目录下寻找模型文件。所以,在使用 自定义的模型时还是建议加上后缀比较好。

接下来就是修改模型了,基本上不乱改都不会出问题。

加速计算

修改完模型后,TauP 中的所有命令就都可以使用这个模型了。如果你需要多次调用 TauP 来计算自定义模型 下的震相走时,你会发现,自定义的模型算走时总是比标准模型算的要慢。

出现这个现象是因为,TauP 已经针对每个标准模型计算了其对应的 tau 表。这个表的计算量很大,但只与模型 有关,与震中距、震源深度等都无关。因而先把这个表计算出来,则可以实现走时计算的加速。

计算表的方式也很简单:

1
2
$ taup_create -nd model1.nd
$ taup_time -mod model1.taup -ph p,P,Pn -h 5 -km 200

taup_create 命令会生成一个后缀为 .taup 的二进制文件,这个文件可以直接在命令中使用,如上面 的第二个命令所示。