Wave propagation through a nonconforming fluid-solid interface

This example extends the fluid-solid-bathymetry example, however this cookbook does not expect that you have done it.

By using a nonconforming mesh to model a fluid-solid interface, we can rather inexpensively simulate wave propagation between these two media, despite their vastly different parameters.

Since xmeshfem2D’s internal mesher does not generate nonconforming meshes, we have provided a gmshlayerbuilder script to take a topography file (normally read in by Par_file) and generate a mesh for xmeshfem2D to generate a database for.

Setting up the workspace

Let’s start by creating a workspace from where we can run this example.

mkdir -p ~/specfempp-examples/fluid-solid-nonconforming
cd ~/specfempp-examples/fluid-solid-nonconforming

We also need to check that the SPECFEM++ executable directory is added to the PATH.

which specfem2d

If the above command returns a path to the specfem2d executable, then the executable directory is added to the PATH. If not, you need to add the executable directory to the PATH using the following command.

export PATH=$PATH:<PATH TO SPECFEM++ DIRECTORY/bin>

Note

Make sure to replace <PATH TO SPECFEM++ DIRECTORY/bin> with the actual path to the SPECFEM++ directory on your system.

Now let’s create the necessary directories to store the input files and output artifacts.

mkdir -p OUTPUT_FILES
mkdir -p OUTPUT_FILES/seismograms
mkdir -p OUTPUT_FILES/results
mkdir -p OUTPUT_FILES/display

touch specfem_config.yaml
touch line_source.yaml
touch topography_file.dat
touch Par_file

Meshing the domain

We first start by generating an external mesh from our topography file. This is the same as the fluid-solid-bathymetry example.

old topography_file.dat
#
# number of interfaces
#
 3
#
# for each interface below, we give the number of points and then x,z for each point
#
#
# interface number 1 (bottom of the mesh)
#
 2
 0 0
 20000 0
#
# interface number 2
#
 501
     0   4441
    40   4446
    80   4451
   120   4456
   160   4461
   200   4466
   240   4470
   280   4475
   320   4480
   360   4485
   400   4490
   440   4494
   480   4498
   520   4502
   560   4506
   600   4510
   640   4514
   680   4518
   720   4522
   760   4526
   800   4530
   840   4534
   880   4539
   920   4545
   960   4550
  1000   4556
  1040   4561
  1080   4567
  1120   4573
  1160   4578
  1200   4584
  1240   4590
  1280   4595
  1320   4600
  1360   4602
  1400   4603
  1440   4604
  1480   4605
  1520   4606
  1560   4607
  1600   4608
  1640   4609
  1680   4610
  1720   4611
  1760   4612
  1800   4616
  1840   4621
  1880   4626
  1920   4631
  1960   4636
  2000   4641
  2040   4647
  2080   4652
  2120   4657
  2160   4663
  2200   4668
  2240   4674
  2280   4680
  2320   4685
  2360   4691
  2400   4697
  2440   4702
  2480   4708
  2520   4713
  2560   4719
  2600   4724
  2640   4730
  2680   4735
  2720   4734
  2760   4734
  2800   4733
  2840   4733
  2880   4732
  2920   4732
  2960   4731
  3000   4731
  3040   4730
  3080   4730
  3120   4729
  3160   4731
  3200   4732
  3240   4734
  3280   4736
  3320   4738
  3360   4740
  3400   4742
  3440   4743
  3480   4745
  3520   4747
  3560   4749
  3600   4751
  3640   4754
  3680   4756
  3720   4759
  3760   4761
  3800   4764
  3840   4767
  3880   4769
  3920   4772
  3960   4775
  4000   4777
  4040   4780
  4080   4786
  4120   4792
  4160   4798
  4200   4804
  4240   4810
  4280   4817
  4320   4823
  4360   4829
  4400   4835
  4440   4842
  4480   4848
  4520   4854
  4560   4859
  4600   4864
  4640   4870
  4680   4875
  4720   4880
  4760   4886
  4800   4891
  4840   4897
  4880   4902
  4920   4907
  4960   4913
  5000   4921
  5040   4928
  5080   4935
  5120   4943
  5160   4950
  5200   4957
  5240   4965
  5280   4972
  5320   4979
  5360   4986
  5400   4993
  5440   5004
  5480   5014
  5520   5024
  5560   5035
  5600   5045
  5640   5055
  5680   5066
  5720   5076
  5760   5087
  5800   5097
  5840   5107
  5880   5113
  5920   5116
  5960   5118
  6000   5121
  6040   5124
  6080   5126
  6120   5129
  6160   5131
  6200   5134
  6240   5137
  6280   5139
  6320   5143
  6360   5147
  6400   5152
  6440   5156
  6480   5161
  6520   5166
  6560   5170
  6600   5175
  6640   5179
  6680   5184
  6720   5189
  6760   5193
  6800   5200
  6840   5207
  6880   5213
  6920   5220
  6960   5227
  7000   5235
  7040   5242
  7080   5249
  7120   5256
  7160   5264
  7200   5271
  7240   5280
  7280   5290
  7320   5300
  7360   5309
  7400   5319
  7440   5329
  7480   5339
  7520   5349
  7560   5359
  7600   5369
  7640   5379
  7680   5387
  7720   5382
  7760   5376
  7800   5371
  7840   5365
  7880   5359
  7920   5354
  7960   5348
  8000   5343
  8040   5337
  8080   5331
  8120   5325
  8160   5324
  8200   5324
  8240   5323
  8280   5323
  8320   5323
  8360   5322
  8400   5322
  8440   5321
  8480   5321
  8520   5320
  8560   5319
  8600   5323
  8640   5331
  8680   5339
  8720   5347
  8760   5354
  8800   5362
  8840   5370
  8880   5378
  8920   5385
  8960   5393
  9000   5400
  9040   5407
  9080   5410
  9120   5413
  9160   5416
  9200   5419
  9240   5421
  9280   5424
  9320   5427
  9360   5429
  9400   5432
  9440   5434
  9480   5437
  9520   5440
  9560   5443
  9600   5446
  9640   5449
  9680   5452
  9720   5455
  9760   5458
  9800   5461
  9840   5463
  9880   5466
  9920   5468
  9960   5470
 10000   5472
 10040   5475
 10080   5477
 10120   5479
 10160   5481
 10200   5483
 10240   5485
 10280   5487
 10320   5490
 10360   5492
 10400   5493
 10440   5492
 10480   5491
 10520   5489
 10560   5488
 10600   5487
 10640   5485
 10680   5484
 10720   5483
 10760   5481
 10800   5481
 10840   5480
 10880   5473
 10920   5464
 10960   5455
 11000   5445
 11040   5436
 11080   5427
 11120   5418
 11160   5409
 11200   5400
 11240   5391
 11280   5382
 11320   5376
 11360   5374
 11400   5372
 11440   5370
 11480   5368
 11520   5366
 11560   5363
 11600   5361
 11640   5359
 11680   5357
 11720   5354
 11760   5352
 11800   5349
 11840   5345
 11880   5341
 11920   5338
 11960   5334
 12000   5331
 12040   5327
 12080   5324
 12120   5320
 12160   5317
 12200   5314
 12240   5311
 12280   5309
 12320   5307
 12360   5305
 12400   5302
 12440   5300
 12480   5298
 12520   5296
 12560   5294
 12600   5291
 12640   5289
 12680   5285
 12720   5277
 12760   5269
 12800   5261
 12840   5253
 12880   5245
 12920   5237
 12960   5229
 13000   5221
 13040   5213
 13080   5205
 13120   5197
 13160   5191
 13200   5184
 13240   5178
 13280   5171
 13320   5165
 13360   5158
 13400   5152
 13440   5145
 13480   5138
 13520   5132
 13560   5125
 13600   5120
 13640   5115
 13680   5111
 13720   5107
 13760   5103
 13800   5099
 13840   5095
 13880   5090
 13920   5086
 13960   5082
 14000   5078
 14040   5071
 14080   5057
 14120   5043
 14160   5029
 14200   5015
 14240   5001
 14280   4987
 14320   4973
 14360   4959
 14400   4946
 14440   4932
 14480   4919
 14520   4910
 14560   4903
 14600   4896
 14640   4888
 14680   4881
 14720   4874
 14760   4867
 14800   4860
 14840   4852
 14880   4845
 14920   4838
 14960   4833
 15000   4831
 15040   4829
 15080   4827
 15120   4824
 15160   4822
 15200   4820
 15240   4818
 15280   4815
 15320   4813
 15360   4811
 15400   4809
 15440   4807
 15480   4805
 15520   4804
 15560   4802
 15600   4800
 15640   4799
 15680   4797
 15720   4795
 15760   4793
 15800   4791
 15840   4789
 15880   4784
 15920   4777
 15960   4770
 16000   4763
 16040   4757
 16080   4750
 16120   4743
 16160   4736
 16200   4729
 16240   4722
 16280   4715
 16320   4710
 16360   4707
 16400   4703
 16440   4700
 16480   4696
 16520   4693
 16560   4690
 16600   4686
 16640   4683
 16680   4680
 16720   4677
 16760   4673
 16800   4670
 16840   4667
 16880   4664
 16920   4660
 16960   4657
 17000   4654
 17040   4651
 17080   4647
 17120   4644
 17160   4641
 17200   4637
 17240   4635
 17280   4633
 17320   4631
 17360   4629
 17400   4627
 17440   4625
 17480   4623
 17520   4621
 17560   4619
 17600   4617
 17640   4616
 17680   4615
 17720   4617
 17760   4620
 17800   4622
 17840   4624
 17880   4626
 17920   4628
 17960   4630
 18000   4632
 18040   4634
 18080   4636
 18120   4637
 18160   4636
 18200   4634
 18240   4633
 18280   4632
 18320   4630
 18360   4629
 18400   4627
 18440   4626
 18480   4624
 18520   4623
 18560   4621
 18600   4620
 18640   4619
 18680   4618
 18720   4616
 18760   4615
 18800   4614
 18840   4612
 18880   4611
 18920   4609
 18960   4607
 19000   4606
 19040   4606
 19080   4610
 19120   4615
 19160   4619
 19200   4623
 19240   4628
 19280   4632
 19320   4636
 19360   4640
 19400   4644
 19440   4648
 19480   4653
 19520   4650
 19560   4647
 19600   4644
 19640   4641
 19680   4638
 19720   4635
 19760   4632
 19800   4629
 19840   4626
 19880   4623
 19920   4620
 19960   4610
 20000   4596
#
# interface number 3 (topography, top of the mesh)
#
 2
     0 9600
 20000 9600
#
# for each layer, we give the number of spectral elements in the vertical direction
#
#
# layer number 1 (bottom layer)
#
## The original 2000 Geophysics paper used nz = 90 but NGLLZ = 6
## here I rescale it to nz = 108 and NGLLZ = 5 because nowadays we almost always use NGLLZ = 5
 62
#
# layer number 2 (top layer)
#
 58

The gmshlayerbuilder script is in <SPECFEM++ DIRECTORY>/scripts. You will need to either replace -m gmshlayerbuilder below with the path to gmshlayerbuilder, or add scripts to your PYTHONPATH:

export PYTHONPATH="${PYTHONPATH}:<PATH TO SPECFEM++ DIRECTORY/scripts>"

Note

Make sure to replace <PATH TO SPECFEM++ DIRECTORY/scripts> with the actual path to the SPECFEM++ directory on your system.

If you’ve updated PYTHONPATH, python can run gmshlayerbuilder as a module:

python -m gmshlayerbuilder --top acoustic_free_surface --bottom absorbing --left absorbing --right absorbing topography_file.dat OUTPUT_FILES/MESH

Otherwise, you can drop the -m flag and reference the script exactly:

python <SPECFEM++ DIRECTORY>/scripts/gmshlayerbuilder ...

Note

Make sure that you are using the scripts dependency group. When installing with pip, uv, or some other tool, add --group scripts or use all dependency groups with --all-groups.

You can see the generated mesh with matplotlib by passing in the --plot flag (you may need to install an interactive backend, like pyqt6), but at the default resolution, it will be slow.

Unmodified mesh

Mesh of the unmodified topography file.

gmshlayerbuilder takes the nz parameters of each layer and chooses the horizontal resolution nx that keeps the aspect ratio of each element near one. For a more sensible mesh, we can choose nz in the crust to be a lower number (say 25, which is approximately \({c_\text{water}}/{(c_\text{p})_\text{crust}}\) times the original resolution).

modified topography_file.dat
#
# number of interfaces
#
 3
#
# for each interface below, we give the number of points and then x,z for each point
#
#
# interface number 1 (bottom of the mesh)
#
 2
 0 0
 20000 0
#
# interface number 2
#
 501
     0   4441
    40   4446
    80   4451
   120   4456
   160   4461
   200   4466
   240   4470
   280   4475
   320   4480
   360   4485
   400   4490
   440   4494
   480   4498
   520   4502
   560   4506
   600   4510
   640   4514
   680   4518
   720   4522
   760   4526
   800   4530
   840   4534
   880   4539
   920   4545
   960   4550
  1000   4556
  1040   4561
  1080   4567
  1120   4573
  1160   4578
  1200   4584
  1240   4590
  1280   4595
  1320   4600
  1360   4602
  1400   4603
  1440   4604
  1480   4605
  1520   4606
  1560   4607
  1600   4608
  1640   4609
  1680   4610
  1720   4611
  1760   4612
  1800   4616
  1840   4621
  1880   4626
  1920   4631
  1960   4636
  2000   4641
  2040   4647
  2080   4652
  2120   4657
  2160   4663
  2200   4668
  2240   4674
  2280   4680
  2320   4685
  2360   4691
  2400   4697
  2440   4702
  2480   4708
  2520   4713
  2560   4719
  2600   4724
  2640   4730
  2680   4735
  2720   4734
  2760   4734
  2800   4733
  2840   4733
  2880   4732
  2920   4732
  2960   4731
  3000   4731
  3040   4730
  3080   4730
  3120   4729
  3160   4731
  3200   4732
  3240   4734
  3280   4736
  3320   4738
  3360   4740
  3400   4742
  3440   4743
  3480   4745
  3520   4747
  3560   4749
  3600   4751
  3640   4754
  3680   4756
  3720   4759
  3760   4761
  3800   4764
  3840   4767
  3880   4769
  3920   4772
  3960   4775
  4000   4777
  4040   4780
  4080   4786
  4120   4792
  4160   4798
  4200   4804
  4240   4810
  4280   4817
  4320   4823
  4360   4829
  4400   4835
  4440   4842
  4480   4848
  4520   4854
  4560   4859
  4600   4864
  4640   4870
  4680   4875
  4720   4880
  4760   4886
  4800   4891
  4840   4897
  4880   4902
  4920   4907
  4960   4913
  5000   4921
  5040   4928
  5080   4935
  5120   4943
  5160   4950
  5200   4957
  5240   4965
  5280   4972
  5320   4979
  5360   4986
  5400   4993
  5440   5004
  5480   5014
  5520   5024
  5560   5035
  5600   5045
  5640   5055
  5680   5066
  5720   5076
  5760   5087
  5800   5097
  5840   5107
  5880   5113
  5920   5116
  5960   5118
  6000   5121
  6040   5124
  6080   5126
  6120   5129
  6160   5131
  6200   5134
  6240   5137
  6280   5139
  6320   5143
  6360   5147
  6400   5152
  6440   5156
  6480   5161
  6520   5166
  6560   5170
  6600   5175
  6640   5179
  6680   5184
  6720   5189
  6760   5193
  6800   5200
  6840   5207
  6880   5213
  6920   5220
  6960   5227
  7000   5235
  7040   5242
  7080   5249
  7120   5256
  7160   5264
  7200   5271
  7240   5280
  7280   5290
  7320   5300
  7360   5309
  7400   5319
  7440   5329
  7480   5339
  7520   5349
  7560   5359
  7600   5369
  7640   5379
  7680   5387
  7720   5382
  7760   5376
  7800   5371
  7840   5365
  7880   5359
  7920   5354
  7960   5348
  8000   5343
  8040   5337
  8080   5331
  8120   5325
  8160   5324
  8200   5324
  8240   5323
  8280   5323
  8320   5323
  8360   5322
  8400   5322
  8440   5321
  8480   5321
  8520   5320
  8560   5319
  8600   5323
  8640   5331
  8680   5339
  8720   5347
  8760   5354
  8800   5362
  8840   5370
  8880   5378
  8920   5385
  8960   5393
  9000   5400
  9040   5407
  9080   5410
  9120   5413
  9160   5416
  9200   5419
  9240   5421
  9280   5424
  9320   5427
  9360   5429
  9400   5432
  9440   5434
  9480   5437
  9520   5440
  9560   5443
  9600   5446
  9640   5449
  9680   5452
  9720   5455
  9760   5458
  9800   5461
  9840   5463
  9880   5466
  9920   5468
  9960   5470
 10000   5472
 10040   5475
 10080   5477
 10120   5479
 10160   5481
 10200   5483
 10240   5485
 10280   5487
 10320   5490
 10360   5492
 10400   5493
 10440   5492
 10480   5491
 10520   5489
 10560   5488
 10600   5487
 10640   5485
 10680   5484
 10720   5483
 10760   5481
 10800   5481
 10840   5480
 10880   5473
 10920   5464
 10960   5455
 11000   5445
 11040   5436
 11080   5427
 11120   5418
 11160   5409
 11200   5400
 11240   5391
 11280   5382
 11320   5376
 11360   5374
 11400   5372
 11440   5370
 11480   5368
 11520   5366
 11560   5363
 11600   5361
 11640   5359
 11680   5357
 11720   5354
 11760   5352
 11800   5349
 11840   5345
 11880   5341
 11920   5338
 11960   5334
 12000   5331
 12040   5327
 12080   5324
 12120   5320
 12160   5317
 12200   5314
 12240   5311
 12280   5309
 12320   5307
 12360   5305
 12400   5302
 12440   5300
 12480   5298
 12520   5296
 12560   5294
 12600   5291
 12640   5289
 12680   5285
 12720   5277
 12760   5269
 12800   5261
 12840   5253
 12880   5245
 12920   5237
 12960   5229
 13000   5221
 13040   5213
 13080   5205
 13120   5197
 13160   5191
 13200   5184
 13240   5178
 13280   5171
 13320   5165
 13360   5158
 13400   5152
 13440   5145
 13480   5138
 13520   5132
 13560   5125
 13600   5120
 13640   5115
 13680   5111
 13720   5107
 13760   5103
 13800   5099
 13840   5095
 13880   5090
 13920   5086
 13960   5082
 14000   5078
 14040   5071
 14080   5057
 14120   5043
 14160   5029
 14200   5015
 14240   5001
 14280   4987
 14320   4973
 14360   4959
 14400   4946
 14440   4932
 14480   4919
 14520   4910
 14560   4903
 14600   4896
 14640   4888
 14680   4881
 14720   4874
 14760   4867
 14800   4860
 14840   4852
 14880   4845
 14920   4838
 14960   4833
 15000   4831
 15040   4829
 15080   4827
 15120   4824
 15160   4822
 15200   4820
 15240   4818
 15280   4815
 15320   4813
 15360   4811
 15400   4809
 15440   4807
 15480   4805
 15520   4804
 15560   4802
 15600   4800
 15640   4799
 15680   4797
 15720   4795
 15760   4793
 15800   4791
 15840   4789
 15880   4784
 15920   4777
 15960   4770
 16000   4763
 16040   4757
 16080   4750
 16120   4743
 16160   4736
 16200   4729
 16240   4722
 16280   4715
 16320   4710
 16360   4707
 16400   4703
 16440   4700
 16480   4696
 16520   4693
 16560   4690
 16600   4686
 16640   4683
 16680   4680
 16720   4677
 16760   4673
 16800   4670
 16840   4667
 16880   4664
 16920   4660
 16960   4657
 17000   4654
 17040   4651
 17080   4647
 17120   4644
 17160   4641
 17200   4637
 17240   4635
 17280   4633
 17320   4631
 17360   4629
 17400   4627
 17440   4625
 17480   4623
 17520   4621
 17560   4619
 17600   4617
 17640   4616
 17680   4615
 17720   4617
 17760   4620
 17800   4622
 17840   4624
 17880   4626
 17920   4628
 17960   4630
 18000   4632
 18040   4634
 18080   4636
 18120   4637
 18160   4636
 18200   4634
 18240   4633
 18280   4632
 18320   4630
 18360   4629
 18400   4627
 18440   4626
 18480   4624
 18520   4623
 18560   4621
 18600   4620
 18640   4619
 18680   4618
 18720   4616
 18760   4615
 18800   4614
 18840   4612
 18880   4611
 18920   4609
 18960   4607
 19000   4606
 19040   4606
 19080   4610
 19120   4615
 19160   4619
 19200   4623
 19240   4628
 19280   4632
 19320   4636
 19360   4640
 19400   4644
 19440   4648
 19480   4653
 19520   4650
 19560   4647
 19600   4644
 19640   4641
 19680   4638
 19720   4635
 19760   4632
 19800   4629
 19840   4626
 19880   4623
 19920   4620
 19960   4610
 20000   4596
#
# interface number 3 (topography, top of the mesh)
#
 2
     0 9600
 20000 9600
#
# for each layer, we give the number of spectral elements in the vertical direction
#
#
# layer number 1 (bottom layer)
#
## The original 2000 Geophysics paper used nz = 90 but NGLLZ = 6
## here I rescale it to nz = 108 and NGLLZ = 5 because nowadays we almost always use NGLLZ = 5
 26
#
# layer number 2 (top layer)
#
 58
Nonconforming mesh

Mesh of the modified topography file.

Parameter file

We told gmshlayerbuilder to save the external mesh files into OUTPUT_FILES/MESH. We now read those files into xmeshfem2D through the parameter file, with the read_external_mesh flag set to true. We’re also setting the second receiver a little higher to ensure that it is inside the acoustic regime, no matter how we discretized the topography.

Par_file
#-----------------------------------------------------------
#
# Simulation input parameters
#
#-----------------------------------------------------------

# title of job
title                           = fluid-solid-nonconforming

# parameters concerning partitioning
NPROC                           = 1              # number of processes

# Output folder to store mesh related files
OUTPUT_FILES                   = OUTPUT_FILES

#-----------------------------------------------------------
#
# Mesh
#
#-----------------------------------------------------------

# Partitioning algorithm for decompose_mesh
PARTITIONING_TYPE               = 3              # SCOTCH = 3, ascending order (very bad idea) = 1

# number of control nodes per element (4 or 9)
NGNOD                           = 9

# location to store the mesh
database_filename               = OUTPUT_FILES/database.bin

#-----------------------------------------------------------
#
# Receivers
#
#-----------------------------------------------------------

# use an existing STATION file found in ./DATA or create a new one from the receiver positions below in this Par_file
use_existing_STATIONS           = .false.

# number of receiver sets (i.e. number of receiver lines to create below)
nreceiversets                   = 2

# orientation
anglerec                        = 0.d0           # angle to rotate components at receivers
rec_normal_to_surface           = .false.        # base anglerec normal to surface (external mesh and curve file needed)

# first receiver set (repeat these 6 lines and adjust nreceiversets accordingly)
nrec                            = 1              # number of receivers
xdeb                            = 1.000d+04      # first receiver x in meters
zdeb                            = 8.082d+03      # first receiver z in meters
xfin                            = 1.000d+04      # last receiver x in meters (ignored if only one receiver)
zfin                            = 8.082d+03      # last receiver z in meters (ignored if only one receiver)
record_at_surface_same_vertical = .false.        # receivers inside the medium or at the surface


# second receiver set (repeat these 6 lines and adjust nreceiversets accordingly)
nrec                            = 1              # number of receivers
xdeb                            = 1.000d+04      # first receiver x in meters
zdeb                            = 5.475d+03      # first receiver z in meters
xfin                            = 1.000d+04      # last receiver x in meters (ignored if only one receiver)
zfin                            = 5.475d+03      # last receiver z in meters (ignored if only one receiver)
record_at_surface_same_vertical = .false.        # receivers inside the medium or at the surface

# filename to store stations file
stations_filename              = OUTPUT_FILES/STATIONS

#-----------------------------------------------------------
#
# Velocity and density models
#
#-----------------------------------------------------------

# number of model materials
nbmodels                        = 2
# available material types (see user manual for more information)
#   acoustic:    model_number 1 rho Vp 0  0 0 QKappa Qmu 0 0 0 0 0 0
#   elastic:     model_number 1 rho Vp Vs 0 0 QKappa Qmu 0 0 0 0 0 0
#   anistoropic: model_number 2 rho c11 c13 c15 c33 c35 c55 c12 c23 c25 0 0 0
#   poroelastic: model_number 3 rhos rhof phi c kxx kxz kzz Ks Kf Kfr etaf mufr Qmu
#   tomo:        model_number -1 0 9999 9999 A 0 0 9999 9999 0 0 0 0 0
1 1 2500.d0 3400.d0 1963.d0 0 0 9999 9999 0 0 0 0 0 0
2 1 1020.d0 1500.d0 0.d0 0 0 9999 9999 0 0 0 0 0 0

# external tomography file
TOMOGRAPHY_FILE                 = ./DATA/tomo_file.xyz

# use an external mesh created by an external meshing tool or use the internal mesher
read_external_mesh              = .true.

#-----------------------------------------------------------
#
# PARAMETERS FOR EXTERNAL MESHING
#
#-----------------------------------------------------------

# data concerning mesh, when generated using third-party app (more info in README)
# (see also absorbing_conditions above)
mesh_file                       = ./OUTPUT_FILES/MESH/mesh   # file containing the mesh
nodes_coords_file               = ./OUTPUT_FILES/MESH/node_coords   # file containing the nodes coordinates
materials_file                  = ./OUTPUT_FILES/MESH/materials   # file containing the material number for each element
free_surface_file               = ./OUTPUT_FILES/MESH/free_surface   # file containing the free surface
axial_elements_file             = dummy   # file containing the axial elements if AXISYM is true
absorbing_surface_file          = ./OUTPUT_FILES/MESH/absorbing_surface   # file containing the absorbing surface
acoustic_forcing_surface_file   = dummy   # file containing the acoustic forcing surface
absorbing_cpml_file             = dummy   # file containing the CPML element numbers
tangential_detection_curve_file = dummy  # file containing the curve delimiting the velocity model
nonconforming_adjacencies_file  = ./OUTPUT_FILES/MESH/nc_adjacencies   # file containing the nonconforming adjacency list

#-----------------------------------------------------------
#
# PARAMETERS FOR INTERNAL MESHING
#
#-----------------------------------------------------------

# file containing interfaces for internal mesh
interfacesfile                  = topography_file.dat

# geometry of the model (origin lower-left corner = 0,0) and mesh description
xmin                            = 0.d0             # abscissa of left side of the model
xmax                            = 2.000d+04        # abscissa of right side of the model
nx                              = 250              # number of elements along X

STACEY_ABSORBING_CONDITIONS       = .true.        # use Stacey absorbing boundary conditions

# absorbing boundary parameters (see absorbing_conditions above)
absorbbottom                    = .true.
absorbright                     = .true.
absorbtop                       = .false.
absorbleft                      = .true.

# define the different regions of the model in the (nx,nz) spectral-element mesh
nbregions                       = 2              # then set below the different regions and model number for each region
1 250 1   62  1
1 250 63  120 2

#-----------------------------------------------------------
#
# DISPLAY PARAMETERS
#
#-----------------------------------------------------------

# meshing output
output_grid_Gnuplot             = .false.        # generate a GNUPLOT file containing the grid, and a script to plot it
output_grid_ASCII               = .false.        # dump the grid in an ASCII text file consisting of a set of X,Y,Z points or not

Running xmeshfem2D

To execute the mesher run

xmeshfem2D -p Par_file

Note the path of the database file and a stations file generated after successfully running the mesher.

Defining the source

The sources are set as in the fluid-solid-bathymetry example.

line_source.yaml
number-of-sources: 234
sources:
    - moment-tensor:
        x: 200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 0e-6
            f0: 1.0
    - moment-tensor:
        x: 300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 5309e-6
            f0: 1.0
    - moment-tensor:
        x: 400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 10618e-6
            f0: 1.0
    - moment-tensor:
        x: 500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 15927e-6
            f0: 1.0
    - moment-tensor:
        x: 600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 21236e-6
            f0: 1.0
    - moment-tensor:
        x: 700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 26545e-6
            f0: 1.0
    - moment-tensor:
        x: 800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 31854e-6
            f0: 1.0
    - moment-tensor:
        x: 900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 37163e-6
            f0: 1.0
    - moment-tensor:
        x: 1000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 42472e-6
            f0: 1.0
    - moment-tensor:
        x: 1100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 47781e-6
            f0: 1.0
    - moment-tensor:
        x: 1200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 53090e-6
            f0: 1.0
    - moment-tensor:
        x: 1300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 58399e-6
            f0: 1.0
    - moment-tensor:
        x: 1400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 63708e-6
            f0: 1.0
    - moment-tensor:
        x: 1500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 69017e-6
            f0: 1.0
    - moment-tensor:
        x: 1600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 74326e-6
            f0: 1.0
    - moment-tensor:
        x: 1700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 79635e-6
            f0: 1.0
    - moment-tensor:
        x: 1800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 84944e-6
            f0: 1.0
    - moment-tensor:
        x: 1900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 90253e-6
            f0: 1.0
    - moment-tensor:
        x: 2000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 95562e-6
            f0: 1.0
    - moment-tensor:
        x: 2100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 100871e-6
            f0: 1.0
    - moment-tensor:
        x: 2200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 106180e-6
            f0: 1.0
    - moment-tensor:
        x: 2300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 111489e-6
            f0: 1.0
    - moment-tensor:
        x: 2400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 116798e-6
            f0: 1.0
    - moment-tensor:
        x: 2500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 122107e-6
            f0: 1.0
    - moment-tensor:
        x: 2600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 127416e-6
            f0: 1.0
    - moment-tensor:
        x: 2700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 132725e-6
            f0: 1.0
    - moment-tensor:
        x: 2800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 138034e-6
            f0: 1.0
    - moment-tensor:
        x: 2900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 143343e-6
            f0: 1.0
    - moment-tensor:
        x: 3000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 148652e-6
            f0: 1.0
    - moment-tensor:
        x: 3100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 153961e-6
            f0: 1.0
    - moment-tensor:
        x: 3200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 159270e-6
            f0: 1.0
    - moment-tensor:
        x: 3300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 164579e-6
            f0: 1.0
    - moment-tensor:
        x: 3400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 169888e-6
            f0: 1.0
    - moment-tensor:
        x: 3500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 175197e-6
            f0: 1.0
    - moment-tensor:
        x: 3600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 180506e-6
            f0: 1.0
    - moment-tensor:
        x: 3700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 185815e-6
            f0: 1.0
    - moment-tensor:
        x: 3800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 191124e-6
            f0: 1.0
    - moment-tensor:
        x: 3900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 196433e-6
            f0: 1.0
    - moment-tensor:
        x: 4000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 201742e-6
            f0: 1.0
    - moment-tensor:
        x: 4100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 207051e-6
            f0: 1.0
    - moment-tensor:
        x: 4200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 212360e-6
            f0: 1.0
    - moment-tensor:
        x: 4300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 217669e-6
            f0: 1.0
    - moment-tensor:
        x: 4400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 222978e-6
            f0: 1.0
    - moment-tensor:
        x: 4500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 228287e-6
            f0: 1.0
    - moment-tensor:
        x: 4600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 233596e-6
            f0: 1.0
    - moment-tensor:
        x: 4700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 238905e-6
            f0: 1.0
    - moment-tensor:
        x: 4800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 244214e-6
            f0: 1.0
    - moment-tensor:
        x: 4900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 249523e-6
            f0: 1.0
    - moment-tensor:
        x: 5000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 254832e-6
            f0: 1.0
    - moment-tensor:
        x: 5100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 260141e-6
            f0: 1.0
    - moment-tensor:
        x: 5200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 265450e-6
            f0: 1.0
    - moment-tensor:
        x: 5300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 270759e-6
            f0: 1.0
    - moment-tensor:
        x: 5400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 276068e-6
            f0: 1.0
    - moment-tensor:
        x: 5500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 281377e-6
            f0: 1.0
    - moment-tensor:
        x: 5600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 286686e-6
            f0: 1.0
    - moment-tensor:
        x: 5700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 291995e-6
            f0: 1.0
    - moment-tensor:
        x: 5800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 297304e-6
            f0: 1.0
    - moment-tensor:
        x: 5900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 302613e-6
            f0: 1.0
    - moment-tensor:
        x: 6000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 307922e-6
            f0: 1.0
    - moment-tensor:
        x: 6100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 313231e-6
            f0: 1.0
    - moment-tensor:
        x: 6200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 318540e-6
            f0: 1.0
    - moment-tensor:
        x: 6300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 323849e-6
            f0: 1.0
    - moment-tensor:
        x: 6400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 329158e-6
            f0: 1.0
    - moment-tensor:
        x: 6500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 334467e-6
            f0: 1.0
    - moment-tensor:
        x: 6600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 339776e-6
            f0: 1.0
    - moment-tensor:
        x: 6700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 345085e-6
            f0: 1.0
    - moment-tensor:
        x: 6800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 350394e-6
            f0: 1.0
    - moment-tensor:
        x: 6900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 355703e-6
            f0: 1.0
    - moment-tensor:
        x: 7000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 361012e-6
            f0: 1.0
    - moment-tensor:
        x: 7100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 366321e-6
            f0: 1.0
    - moment-tensor:
        x: 7200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 371630e-6
            f0: 1.0
    - moment-tensor:
        x: 7300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 376939e-6
            f0: 1.0
    - moment-tensor:
        x: 7400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 382248e-6
            f0: 1.0
    - moment-tensor:
        x: 7500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 387557e-6
            f0: 1.0
    - moment-tensor:
        x: 7600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 392866e-6
            f0: 1.0
    - moment-tensor:
        x: 7700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 398175e-6
            f0: 1.0
    - moment-tensor:
        x: 7800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 403484e-6
            f0: 1.0
    - moment-tensor:
        x: 7900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 408793e-6
            f0: 1.0
    - moment-tensor:
        x: 8000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 414102e-6
            f0: 1.0
    - moment-tensor:
        x: 8100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 419411e-6
            f0: 1.0
    - moment-tensor:
        x: 8200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 424720e-6
            f0: 1.0
    - moment-tensor:
        x: 8300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 430029e-6
            f0: 1.0
    - moment-tensor:
        x: 8400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 435338e-6
            f0: 1.0
    - moment-tensor:
        x: 8500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 440647e-6
            f0: 1.0
    - moment-tensor:
        x: 8600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 445956e-6
            f0: 1.0
    - moment-tensor:
        x: 8700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 451265e-6
            f0: 1.0
    - moment-tensor:
        x: 8800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 456574e-6
            f0: 1.0
    - moment-tensor:
        x: 8900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 461883e-6
            f0: 1.0
    - moment-tensor:
        x: 9000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 467192e-6
            f0: 1.0
    - moment-tensor:
        x: 9100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 472501e-6
            f0: 1.0
    - moment-tensor:
        x: 9200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 477810e-6
            f0: 1.0
    - moment-tensor:
        x: 9300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 483119e-6
            f0: 1.0
    - moment-tensor:
        x: 9400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 488428e-6
            f0: 1.0
    - moment-tensor:
        x: 9500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 493737e-6
            f0: 1.0
    - moment-tensor:
        x: 9600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 499046e-6
            f0: 1.0
    - moment-tensor:
        x: 9700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 504355e-6
            f0: 1.0
    - moment-tensor:
        x: 9800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 509664e-6
            f0: 1.0
    - moment-tensor:
        x: 9900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 514973e-6
            f0: 1.0
    - moment-tensor:
        x: 10000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 520282e-6
            f0: 1.0
    - moment-tensor:
        x: 10100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 525591e-6
            f0: 1.0
    - moment-tensor:
        x: 10200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 530900e-6
            f0: 1.0
    - moment-tensor:
        x: 10300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 536209e-6
            f0: 1.0
    - moment-tensor:
        x: 10400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 541518e-6
            f0: 1.0
    - moment-tensor:
        x: 10500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 546827e-6
            f0: 1.0
    - moment-tensor:
        x: 10600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 552136e-6
            f0: 1.0
    - moment-tensor:
        x: 10700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 557445e-6
            f0: 1.0
    - moment-tensor:
        x: 10800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 562754e-6
            f0: 1.0
    - moment-tensor:
        x: 10900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 568063e-6
            f0: 1.0
    - moment-tensor:
        x: 11000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 573372e-6
            f0: 1.0
    - moment-tensor:
        x: 11100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 578681e-6
            f0: 1.0
    - moment-tensor:
        x: 11200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 583990e-6
            f0: 1.0
    - moment-tensor:
        x: 11300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 589299e-6
            f0: 1.0
    - moment-tensor:
        x: 11400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 594608e-6
            f0: 1.0
    - moment-tensor:
        x: 11500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 599917e-6
            f0: 1.0
    - moment-tensor:
        x: 11600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 605226e-6
            f0: 1.0
    - moment-tensor:
        x: 11700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 610535e-6
            f0: 1.0
    - moment-tensor:
        x: 11800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 615844e-6
            f0: 1.0
    - moment-tensor:
        x: 11900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 621153e-6
            f0: 1.0
    - moment-tensor:
        x: 12000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 626462e-6
            f0: 1.0
    - moment-tensor:
        x: 12100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 631771e-6
            f0: 1.0
    - moment-tensor:
        x: 12200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 637080e-6
            f0: 1.0
    - moment-tensor:
        x: 12300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 642389e-6
            f0: 1.0
    - moment-tensor:
        x: 12400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 647698e-6
            f0: 1.0
    - moment-tensor:
        x: 12500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 653007e-6
            f0: 1.0
    - moment-tensor:
        x: 12600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 658316e-6
            f0: 1.0
    - moment-tensor:
        x: 12700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 663625e-6
            f0: 1.0
    - moment-tensor:
        x: 12800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 668934e-6
            f0: 1.0
    - moment-tensor:
        x: 12900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 674243e-6
            f0: 1.0
    - moment-tensor:
        x: 13000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 679552e-6
            f0: 1.0
    - moment-tensor:
        x: 13100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 684861e-6
            f0: 1.0
    - moment-tensor:
        x: 13200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 690170e-6
            f0: 1.0
    - moment-tensor:
        x: 13300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 695479e-6
            f0: 1.0
    - moment-tensor:
        x: 13400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 700788e-6
            f0: 1.0
    - moment-tensor:
        x: 13500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 706097e-6
            f0: 1.0
    - moment-tensor:
        x: 13600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 711406e-6
            f0: 1.0
    - moment-tensor:
        x: 13700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 716715e-6
            f0: 1.0
    - moment-tensor:
        x: 13800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 722024e-6
            f0: 1.0
    - moment-tensor:
        x: 13900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 727333e-6
            f0: 1.0
    - moment-tensor:
        x: 14000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 732642e-6
            f0: 1.0
    - moment-tensor:
        x: 14100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 737951e-6
            f0: 1.0
    - moment-tensor:
        x: 14200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 743260e-6
            f0: 1.0
    - moment-tensor:
        x: 14300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 748569e-6
            f0: 1.0
    - moment-tensor:
        x: 14400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 753878e-6
            f0: 1.0
    - moment-tensor:
        x: 14500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 759187e-6
            f0: 1.0
    - moment-tensor:
        x: 14600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 764496e-6
            f0: 1.0
    - moment-tensor:
        x: 14700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 769805e-6
            f0: 1.0
    - moment-tensor:
        x: 14800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 775114e-6
            f0: 1.0
    - moment-tensor:
        x: 14900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 780423e-6
            f0: 1.0
    - moment-tensor:
        x: 15000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 785732e-6
            f0: 1.0
    - moment-tensor:
        x: 15100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 791041e-6
            f0: 1.0
    - moment-tensor:
        x: 15200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 796350e-6
            f0: 1.0
    - moment-tensor:
        x: 15300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 801659e-6
            f0: 1.0
    - moment-tensor:
        x: 15400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 806968e-6
            f0: 1.0
    - moment-tensor:
        x: 15500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 812277e-6
            f0: 1.0
    - moment-tensor:
        x: 15600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 817586e-6
            f0: 1.0
    - moment-tensor:
        x: 15700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 822895e-6
            f0: 1.0
    - moment-tensor:
        x: 15800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 828204e-6
            f0: 1.0
    - moment-tensor:
        x: 15900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 833513e-6
            f0: 1.0
    - moment-tensor:
        x: 16000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 838822e-6
            f0: 1.0
    - moment-tensor:
        x: 16100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 844131e-6
            f0: 1.0
    - moment-tensor:
        x: 16200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 849440e-6
            f0: 1.0
    - moment-tensor:
        x: 16300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 854749e-6
            f0: 1.0
    - moment-tensor:
        x: 16400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 860058e-6
            f0: 1.0
    - moment-tensor:
        x: 16500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 865367e-6
            f0: 1.0
    - moment-tensor:
        x: 16600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 870676e-6
            f0: 1.0
    - moment-tensor:
        x: 16700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 875985e-6
            f0: 1.0
    - moment-tensor:
        x: 16800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 881294e-6
            f0: 1.0
    - moment-tensor:
        x: 16900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 886603e-6
            f0: 1.0
    - moment-tensor:
        x: 17000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 891912e-6
            f0: 1.0
    - moment-tensor:
        x: 17100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 897221e-6
            f0: 1.0
    - moment-tensor:
        x: 17200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 902530e-6
            f0: 1.0
    - moment-tensor:
        x: 17300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 907839e-6
            f0: 1.0
    - moment-tensor:
        x: 17400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 913148e-6
            f0: 1.0
    - moment-tensor:
        x: 17500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 918457e-6
            f0: 1.0
    - moment-tensor:
        x: 17600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 923766e-6
            f0: 1.0
    - moment-tensor:
        x: 17700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 929075e-6
            f0: 1.0
    - moment-tensor:
        x: 17800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 934384e-6
            f0: 1.0
    - moment-tensor:
        x: 17900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 939693e-6
            f0: 1.0
    - moment-tensor:
        x: 18000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 945002e-6
            f0: 1.0
    - moment-tensor:
        x: 18100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 950311e-6
            f0: 1.0
    - moment-tensor:
        x: 18200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 955620e-6
            f0: 1.0
    - moment-tensor:
        x: 18300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 960929e-6
            f0: 1.0
    - moment-tensor:
        x: 18400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 966238e-6
            f0: 1.0
    - moment-tensor:
        x: 18500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 971547e-6
            f0: 1.0
    - moment-tensor:
        x: 18600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 976856e-6
            f0: 1.0
    - moment-tensor:
        x: 18700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 982165e-6
            f0: 1.0
    - moment-tensor:
        x: 18800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 987474e-6
            f0: 1.0
    - moment-tensor:
        x: 18900
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 992783e-6
            f0: 1.0
    - moment-tensor:
        x: 19000
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 998092e-6
            f0: 1.0
    - moment-tensor:
        x: 19100
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 1003401e-6
            f0: 1.0
    - moment-tensor:
        x: 19200
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 1008710e-6
            f0: 1.0
    - moment-tensor:
        x: 19300
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 1014019e-6
            f0: 1.0
    - moment-tensor:
        x: 19400
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 1019328e-6
            f0: 1.0
    - moment-tensor:
        x: 19500
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 1024637e-6
            f0: 1.0
    - moment-tensor:
        x: 19600
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 1029946e-6
            f0: 1.0
    - moment-tensor:
        x: 19700
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 1035255e-6
            f0: 1.0
    - moment-tensor:
        x: 19800
        z: 720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 9.836e-10
            tshift: 1040564e-6
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 820
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 2893e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 920
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 5786e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 1020
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 8679e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 1120
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 11572e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 1220
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 14465e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 1320
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 17358e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 1420
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 20251e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 1520
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 23144e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 1620
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 26037e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 1720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 28930e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 1820
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 31823e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 1920
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 34716e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 2020
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 37609e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 2120
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 40502e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 2220
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 43395e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 2320
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 46288e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 2420
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 49181e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 2520
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 52074e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 2620
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 54967e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 2720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 57860e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 2820
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 60753e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 2920
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 63646e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 3020
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 66539e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 3120
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 69432e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 3220
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 72325e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 3320
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 75218e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 3420
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 78111e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 3520
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 81004e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 3620
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 83897e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 3720
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 86790e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 3820
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 89683e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 3920
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 92576e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 4020
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 95469e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 4120
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 98362e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 4220
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 101255e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 4320
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 104148e-05
            f0: 1.0
    - moment-tensor:
        x: 200
        z: 4420
        Mxx: 1.0
        Mzz: 1.0
        Mxz: 0.0
        angle: 0.0
        Ricker:
            factor: 1.805e-10
            tshift: 107041e-05
            f0: 1.0

Running the simulation

To run the solver, we need a configuration file. We use a specfem_config.yaml file similar to the fluid-solid-bathymetry example.

specfem_config.yaml
parameters:

  header:
    ## Header information is used for logging. It is good practice to give your simulations explicit names
    title: fluid-solid-nonconforming  # name for your simulation
    # A detailed description for your simulation
    description: |
      Material systems : Elastic domain (1), Acoustic domain (1)
      Interfaces : Acoustic-elastic interface (1) (orientation horizontal with acoustic domain on top)
      Sources : Moment-tensor (234)
      Boundary conditions : Absorbing left, right, and bottom; free surface top

  simulation-setup:
    ## quadrature setup
    quadrature:
      quadrature-type: GLL4

    ## Solver setup
    solver:
      time-marching:
        type-of-simulation: forward
        time-scheme:
          type: Newmark
          dt: 1.000e-3
          nstep: 16250

    simulation-mode:
      forward:
        writer:
          seismogram:
            format: ascii
            directory: OUTPUT_FILES/seismograms

          display:
            format: PNG
            directory: OUTPUT_FILES/display
            field: pressure
            simulation-field: forward
            time-interval: 250

  receivers:
    stations: OUTPUT_FILES/STATIONS
    angle: 0.0
    seismogram-type:
      - pressure
    nstep_between_samples: 1

  ## Runtime setup
  run-setup:
    number-of-processors: 1
    number-of-runs: 1

  ## databases
  databases:
    mesh-database: OUTPUT_FILES/database.bin

  ## sources
  sources: line_source.yaml

With the configuration file in place, we can run the solver using the following command:

specfem2d -p specfem_config.yaml

Visualizing the results

The simulation generates seismograms at the stations defined in the specfem_config.yaml file and wavefield snapshots for visualization. You can visualize the seismograms using the following python script.

plot.py
import os
import numpy as np
import obspy


def get_traces(directory):
    traces = []

    # Iterate over all pressure seismogram files
    for filename in os.listdir(directory):
        if filename.endswith(".semp"):
            f = os.path.join(directory, filename)
            network, station, location, channel = filename.split(".")[:4]
            trace = np.loadtxt(f, delimiter=" ")
            starttime = trace[0, 0]
            dt = trace[1, 0] - trace[0, 0]
            traces.append(
                obspy.Trace(
                    trace[:, 1],
                    {
                        "network": network,
                        "station": station,
                        "location": location,
                        "channel": channel,
                        "starttime": starttime,
                        "delta": dt,
                    },
                )
            )

    stream = obspy.Stream(traces)
    return stream


# Load pressure seismograms from acoustic domain
directory = "OUTPUT_FILES/seismograms"
stream = get_traces(directory)

# Plot pressure recordings (acoustic domain)
# Note: Since receivers are in water, we expect pressure recordings
stream.plot(size=(1000, 800))

The output image should look like this:

Seismograms from the simulation

[Optional] Creating animated visualization

To create an animated gif of the wavefield evolution, you can use ImageMagick (if available):

magick OUTPUT_FILES/display/wavefield*.png -trim +repage -delay 10 -loop 0 fluid-solid-bathymetry.gif

The output animated gif will show the wavefield evolution over time, illustrating the interaction of seismic waves with the complex bathymetry and fluid-solid interfaces. The animation captures how the waves propagate through the acoustic and elastic domains, reflecting and refracting at the seafloor interface.

Animated wavefield evolution

Appendix: Comparison to conforming simulation

We can return to a conforming scheme by disabling the external mesher

read_external_mesh              = .false.

and setting the topography file to the original.

...
# layer number 1 (bottom layer)
#
## The original 2000 Geophysics paper used nz = 90 but NGLLZ = 6
## here I rescale it to nz = 108 and NGLLZ = 5 because nowadays we almost always use NGLLZ = 5
26
#
# layer number 2 (top layer)
#
58

We can run this simulation and plot it against the nonconforming run.

Seismograms from the simulation

We can notice a relative error reaching up to 3% in the S0001 trace and 4% in the S0002 trace. Since the elastic side is at a much lower resolution, errors due to bathymetric resolution are expected (note that due to ngnod==9, the exponent on grid size for numerical truncation error is lower than the solver). So, be sure to continue respecting domain geometry when choosing mesh sizes.

A smoother bathymetry will provide simulations that agree closer:

Animated wavefield evolution of a different bathymetric profile Seismograms from the simulation