コンテンツにスキップ

実行例

シミュレーションの実行には,MPI実行環境を用いて,

1
$ mpirun -np ${NP} ./bin/swpc_3d.x -i ${input}

のようにする.ここで${NP}は実行プロセス数,${input}は入力ファイル名である.ただし,実行環境によっては,mpirunコマンド名やそのオプションの与え方が異なる場合がある.

./example/input.inf に2x2=4並列の均質媒質中の3次元シミュレーションのパラメタファイルの例がある.これをそのまま実行するには,

1
$ mpirun -np 4 ./bin/swpc_3d.x -i example/input.inf
とする.

プログラムが正常に実行されると,以下のような画面出力が現れる.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 ------------------------------------------------------------------------------
  SWPC_3D                                                                     
 ------------------------------------------------------------------------------

  Grid Size               :      384 x    384 x    384
  MPI Partitioning        :        2 x    2
  Total Memory Size       :          13.292  [GiB]
  Node Memory Size        :           3.323  [GiB]
  Stability  Condition c  :           0.645  (c<1)
  Wavelength Condition r  :          12.488  (r>5-10)
  Minimum velocity        :           3.122  [km/s]
  Maximum velocity        :           7.977  [km/s]
  Maximum frequency       :           0.500  [Hz]

 ------------------------------------------------------------------------------

  it=0000050, 1.024 s/loop, eta 000:16:12, ( 2.94E-05  2.94E-05  1.59E-04 )
  it=0000100, 1.028 s/loop, eta 000:15:25, ( 1.95E-04  1.95E-04  8.87E-04 )
  it=0000150, 1.023 s/loop, eta 000:14:29, ( 1.04E-04  1.04E-04  4.87E-04 )
  it=0000200, 1.014 s/loop, eta 000:13:31, ( 2.62E-05  2.62E-05  4.89E-05 )
  it=0000250, 1.010 s/loop, eta 000:12:37, ( 1.32E-05  1.32E-05  3.59E-05 )
  it=0000300, 1.001 s/loop, eta 000:11:40, ( 1.13E-05  1.13E-05  3.16E-05 )
  it=0000350, 0.996 s/loop, eta 000:10:47, ( 1.26E-05  1.26E-05  2.67E-05 )
  it=0000400, 0.992 s/loop, eta 000:09:55, ( 1.13E-05  1.13E-05  2.33E-05 )
  it=0000450, 0.991 s/loop, eta 000:09:05, ( 9.68E-06  9.68E-06  2.07E-05 )
  it=0000500, 0.987 s/loop, eta 000:08:13, ( 9.22E-06  9.22E-06  1.98E-05 )
  it=0000550, 0.984 s/loop, eta 000:07:22, ( 8.90E-06  8.90E-06  1.90E-05 )
  it=0000600, 0.981 s/loop, eta 000:06:32, ( 8.37E-06  8.37E-06  1.78E-05 )
  it=0000650, 0.978 s/loop, eta 000:05:42, ( 7.78E-06  7.78E-06  1.68E-05 )
  it=0000700, 0.975 s/loop, eta 000:04:52, ( 7.63E-06  7.63E-06  1.59E-05 )
  it=0000750, 0.973 s/loop, eta 000:04:03, ( 7.47E-06  7.47E-06  1.53E-05 )
  it=0000800, 0.972 s/loop, eta 000:03:14, ( 7.01E-06  7.01E-06  1.45E-05 )
  it=0000850, 0.974 s/loop, eta 000:02:26, ( 6.79E-06  6.79E-06  1.35E-05 )
  it=0000900, 0.974 s/loop, eta 000:01:37, ( 7.07E-06  7.07E-06  1.28E-05 )
  it=0000950, 0.973 s/loop, eta 000:00:48, ( 7.38E-06  7.38E-06  1.20E-05 )
  it=0001000, 0.973 s/loop, eta 000:00:00, ( 7.22E-06  7.22E-06  1.14E-05 )

 ------------------------------------------------------------------------------

  Total time             :         972.827 s

 ------------------------------------------------------------------------------```

(この結果は example/example.out に格納されている)

実行開始時にはメモリ使用量や安定条件(CFL条件から取りうる最大の時間刻みと利用した時間刻みとの比)や波長条件(最小波長と空間刻みとの比)などを表示する. 安定条件は であることが必須であり,かつ波長条件 が推奨される.特に,安定条件が満たされない場合には計算は実行されず異常終了する.計算の実行中は,パラメタファイルで指定したタイミングで,定期的に1ステップあたりの計算所要時間・予想残り計算時間・現時点での最大速度振幅をそれぞれ表示する.出力結果のうち,計算時間に関する表示は環境によって異なる.計算が正常に実行できていれば,最大振幅(最後の () 内の3つの数字)は,同じ結果になるはずだ.

なお,上記の3次元のシミュレーションには約14GBのメモリを必要とする.メモリ不足によりテスト実行が困難な場合は,おなじ入力ファイルをつかって断面における2次元P-SV波シミュレーションを以下のように実施できる:

1
$ mpirun -np 2 ./bin/swpc_psv.x -i example/input.inf

同じパラメタファイルを使っても,2次元計算の場合は並列数(-npオプション)が異なることに注意されたい.

この場合の出力は以下のようになる.結果の見かたは3次元コードとほとんど同じで,最大振幅が3成分から2成分に変わっただけだ.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
------------------------------------------------------------------------------
  SWPC_PSV                                                                    
 ------------------------------------------------------------------------------


  Grid Size               :      384 x    384
  MPI Partitioning        :               2
  Total Memory Size       :           0.020  [GiB]
  Node Memory Size        :           0.010  [GiB]
  Stability  Condition c  :           0.526  (c<1)
  Wavelength Condition r  :          12.488  (r>5-10)
  Minimum velocity        :           3.122  [km/s]
  Maximum velocity        :           7.977  [km/s]
  Maximum frequency       :           0.500  [Hz]

 ------------------------------------------------------------------------------

  it=0000050, 0.003 s/loop, eta 000:00:02, ( 7.40E-02  2.73E-01 )
  it=0000100, 0.003 s/loop, eta 000:00:02, ( 8.13E-01  2.01E+00 )
  it=0000150, 0.003 s/loop, eta 000:00:02, ( 7.71E-01  1.46E+00 )
  it=0000200, 0.003 s/loop, eta 000:00:02, ( 2.90E-01  2.56E-01 )
  it=0000250, 0.003 s/loop, eta 000:00:01, ( 2.21E-01  3.03E-01 )
  it=0000300, 0.003 s/loop, eta 000:00:01, ( 1.90E-01  3.22E-01 )
  it=0000350, 0.003 s/loop, eta 000:00:01, ( 1.76E-01  3.27E-01 )
  it=0000400, 0.003 s/loop, eta 000:00:01, ( 1.93E-01  3.23E-01 )
  it=0000450, 0.003 s/loop, eta 000:00:01, ( 1.92E-01  3.08E-01 )
  it=0000500, 0.003 s/loop, eta 000:00:01, ( 1.89E-01  3.19E-01 )
  it=0000550, 0.003 s/loop, eta 000:00:01, ( 1.83E-01  3.33E-01 )
  it=0000600, 0.003 s/loop, eta 000:00:01, ( 1.75E-01  3.34E-01 )
  it=0000650, 0.003 s/loop, eta 000:00:00, ( 1.70E-01  3.36E-01 )
  it=0000700, 0.003 s/loop, eta 000:00:00, ( 1.69E-01  3.37E-01 )
  it=0000750, 0.003 s/loop, eta 000:00:00, ( 1.73E-01  3.48E-01 )
  it=0000800, 0.003 s/loop, eta 000:00:00, ( 1.76E-01  3.53E-01 )
  it=0000850, 0.003 s/loop, eta 000:00:00, ( 1.77E-01  3.45E-01 )
  it=0000900, 0.003 s/loop, eta 000:00:00, ( 1.81E-01  3.41E-01 )
  it=0000950, 0.003 s/loop, eta 000:00:00, ( 1.77E-01  3.39E-01 )
  it=0001000, 0.003 s/loop, eta 000:00:00, ( 1.63E-01  3.36E-01 )

 ------------------------------------------------------------------------------

  Total time             :           2.652 s

 ------------------------------------------------------------------------------

計算速度は環境に依存するが,一般に3次元計算より2次元計算のほうがはるかに計算時間が短い.

なお,計算終了後に

1
Note: The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG
という表示が現れることがあるが,計算結果には影響ない.