Why

在初次使用Mineos软件时,为保证自己操作流程的正确性,一般会与自己之前熟悉的 软件进行一个结果的对比,这就要求输入的模型一致,震源参数一致,台站位置一致等。 本文主要解决输入模型一致的问题。

AxiSEM模型文件和Mineos模型文件简介

通过观察,可以发现Mineos所使用的模型的结构与AxiSEM十分类似。下面是具体的模型 文件对比 AxiSEM

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Input file for AXISEM created from prem_ani model on 07/08/2020, at 16h 44min
NAME         prem_ani
ANELASTIC       T
ANISOTROPIC     T
UNITS        m
COLUMNS       radius      rho      vpv      vsv      vph      vsh      eta            qka            qmu
            6371000.  2600.00  5800.00  3200.00  5800.00  3200.00  1.00000 0.57827000E+05 0.60000000E+03
            6356000.  2600.00  5800.00  3200.00  5800.00  3200.00  1.00000 0.57827000E+05 0.60000000E+03
#          Discontinuity   1, depth:      15.00 km
            6356000.  2900.00  6800.00  3900.00  6800.00  3900.00  1.00000 0.57827000E+05 0.60000000E+03
            6346600.  2900.00  6800.00  3900.00  6800.00  3900.00  1.00000 0.57827000E+05 0.60000000E+03

Mineos

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Anisotropic PREM 
 1 0 1 
 160 26 73 1
    0. 13088.50 11262.20 3667.80 0.13277000E+04 0.84599998E+02 11262.20 3667.80 1.00000
21500. 13088.40 11262.13 3667.75 0.13277000E+04 0.84599998E+02 11262.13 3667.75 1.00000
71500. 13087.39 11261.40 3667.24 0.13277000E+04 0.84599998E+02 11261.40 3667.24 1.00000
121500. 13085.29 11259.89 3666.18 0.13277000E+04 0.84599998E+02 11259.89 3666.18 1.00000
171500. 13082.10 11257.59 3664.58 0.13277000E+04 0.84599998E+02 11257.59 3664.58 1.00000
221500. 13077.82 11254.51 3662.42 0.13277000E+04 0.84599998E+02 11254.51 3662.42 1.00000
271500. 13072.45 11250.64 3659.72 0.13277000E+04 0.84599998E+02 11250.64 3659.72 1.00000
321500. 13065.99 11245.99 3656.47 0.13277000E+04 0.84599998E+02 11245.99 3656.47 1.00000
371500. 13058.45 11240.56 3652.68 0.13277000E+04 0.84599998E+02 11240.56 3652.68 1.00000
421500. 13049.82 11234.34 3648.33 0.13277000E+04 0.84599998E+02 11234.34 3648.33 1.00000
471500. 13040.09 11227.34 3643.44 0.13277000E+04 0.84599998E+02 11227.34 3643.44 1.00000

可以发现,AxiSEM的输入模型有对变量含义的解释,以及对间断面的注释;而mineos则需要参考Manual或者源代码来确认模型 中每个参数的具体意义。具体解释如下:

Mineos的第2行的第1个数字取值为(1:横向各向同性(TI);0:各向同性);第2个数字与衰减有关(<=0: 不含衰减);第3个是 模型的类型(1:层状格式;0:多项式形式)

Mineos的第3行的第1个数字取值为模型的最大半径所在行数(不包括前面3行,也就是整个模型部分共多少行);第2个数字为ICB 所在的行数(不包括前3行);第3个数字为CMB所在的行数(不包括前3行);第4个数字为0则所有半径的结果都存储,为1则表示在 6330km以上以及不连续面两侧全部存储,其他位置以1 sample/km存储。

Mineos的第4行开始,每列的含义为(r, rho, vpv, vsv, qkappa, qshear, vph, vsh, eta)

模型转换

可以发现,除注释的部分外,AxiSEM 模型文件和 Mineos 十分相似,最大的特征是AxiSEM 的模型是从地表一直往下,而 Mineos则 是从地心到地表,因此,需要把整个文件在纵向上做一个reverse 变换。最简单的方法是采用一行perl语句:

1
$ perl -e 'print reverse <>' axisem.txt > mineos.txt

接下来,可以用vim删除掉所有的注释行,得到一个纯数值的文件。

然后,继续观察,我们发现mineos前4列与 axisem完全一致, 后面的几列有一些位置的改变,这个可通过awk命令来调整列的顺序:

1
$ awk '{print $1,$2,$3,$4,$8,$9,$5,$6,$7}' mineos.txt > premANIC.card

最后, 将mineos前面三行按照模型以及模拟的要求填好即可。不过,另外也可以写一个脚本将整个流程串起来:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#!/bin/bash

# reverse row order
perl -e 'print reverse <>' axisem.txt > tmp.txt

# remove comment lines
# grep -v '^#': remove the lines begin with #
# grep -v '^[A-Z]': remove the lines begin with [A-Z]
cat tmp.txt  | grep -v '^#' | grep -v '^[A-Z]' > tmp2.txt

# change the order of columns
awk '{print $1,$2,$3,$4,$8,$9,$5,$6,$7}' tmp2.txt > mineos.card

# add comments in the begining
sed -i '1 i\Anisotropic PREM \n 1 0 1 \n 160 26 73 1'  mineos.card

rm -rf tmp*.txt

修订历史

  • 2020-09-29:初稿;

参考资料