Skip to content

Commit 67bd2ef

Browse files
committed
adds time-reversal example of Birch glacier collapse in EXAMPLES/real_world/Birch_glacier_collapse/ folder
1 parent 5640abd commit 67bd2ef

23 files changed

+66946
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
FORCE 001
2+
time shift: 0.0000
3+
hdurorf0: 1.0
4+
latorUTM: 46.404188
5+
longorUTM: 7.836242
6+
depth: 0.0
7+
source time function: 0
8+
factor force source: 1.d15
9+
component dir vect source E: -0.5d0
10+
component dir vect source N: 0.1d0
11+
component dir vect source Z_UP: -1.d0

EXAMPLES/real_world/Birch_glacier_collapse/DATA/Par_file

Lines changed: 398 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# stations file
2+
# created by script download_Swiss_data.py
3+
# format:
4+
#station_ID #network_ID #lat #lon #elevation(ignored) #burial_depth
5+
BERGE CH 47.87161 8.17798 0.0 1.0
6+
JAUN CH 46.63395 7.29096 0.0 0.0
7+
EMMET CH 47.43757 8.01358 0.0 1.0
8+
GRYON CH 46.25053 7.11106 0.0 0.0
9+
HASLI CH 46.75673 8.15108 0.0 3.0
10+
SIMPL CH 46.23962 8.01958 0.0 0.0
11+
VANNI CH 46.21006 7.59678 0.0 0.0
12+
CHASS CH 47.1609 7.12129 0.0 0.0
13+
LIENZ CH 47.294437 9.491773 0.0 0.0
14+
FUORN CH 46.620334 10.263551 0.0 0.0
15+
HAUIG CH 47.66038 7.70018 0.0 0.4
16+
LKBD2 CH 46.37455 7.64433 0.0 0.0
17+
MUTEZ CH 47.50647 7.64884 0.0 0.0
18+
SENIN CH 46.36335 7.29938 0.0 0.0
19+
PANIX CH 46.825743 9.111708 0.0 0.0
20+
FLACH CH 47.57241 8.5679 0.0 5.5
21+
VDR CH 46.2061 9.16648 0.0 0.0
22+
SALAN CH 46.14415 6.97302 0.0 0.0
23+
WIMIS CH 46.66488 7.62418 0.0 0.0
24+
MTI02 CH 47.37927 7.16525 0.0 0.0
25+
DIX CH 46.081053 7.408391 0.0 0.0
26+
AIGLE CH 46.34176 6.95295 0.0 0.0
27+
VMV CH 46.42309 9.02207 0.0 0.0
28+
EMBD CH 46.21652 7.83223 0.0 0.0
29+
SAIRA CH 47.30267 7.08645 0.0 2.6
30+
TRULL CH 47.6487 8.68161 0.0 0.0
31+
PLONS CH 47.04921 9.38076 0.0 9.8
32+
NALPS CH 46.595121 8.74828 0.0 0.0
33+
BOURR CH 47.39364 7.2301 0.0 0.0
34+
SLE CH 47.7645 8.49236 0.0 2.6
35+
BRANT CH 46.93801 6.47298 0.0 0.0
36+
SULZ CH 47.52753 8.11187 0.0 0.0
37+
LADOL CH 46.43213 6.13151 0.0 0.5
38+
VDL CH 46.48318 9.44956 0.0 0.0
39+
STEIN CH 47.66974 8.86899 0.0 0.0
40+
MOUTI CH 47.29752 7.33701 0.0 0.0
41+
WEIN2 CH 47.52976 8.98681 0.0 0.0
42+
GIMEL CH 46.53364 6.26545 0.0 0.0
43+
DAVOX CH 46.7805 9.87952 0.0 0.0
44+
MUGIO CH 45.92184 9.04171 0.0 0.0
45+
FIESA CH 46.43521 8.11051 0.0 0.0
46+
GRIMS CH 46.578146 8.318864 0.0 0.0
47+
LLS CH 46.84676 9.00825 0.0 0.0
48+
ROTHE CH 47.47612 7.92093 0.0 1.0
49+
MFERR CH 45.95101 7.11229 0.0 0.0
50+
BNALP CH 46.87034 8.4249 0.0 0.0
51+
VINZL CH 46.45175 6.27815 0.0 0.4
52+
ZUR CH 47.36921 8.58088 0.0 0.0
53+
MMK CH 46.0507 7.96409 0.0 0.0
54+
PERON CH 46.19107 5.90792 0.0 0.4
55+
BALST CH 47.33599 7.69485 0.0 0.0
56+
MUO CH 46.96765 8.63706 0.0 0.0
57+
WILA CH 47.41483 8.9077 0.0 0.0
58+
DAGMA CH 47.230884 8.012475 0.0 1.0
59+
LAUCH CH 46.41554 7.77166 0.0 0.5
60+
ACB CH 47.58772 8.25474 0.0 2.6
61+
LASAR CH 46.66648 6.49025 0.0 6.0
62+
GOURZ CH 46.51109 6.74125 0.0 2.0
63+
FUSIO CH 46.45481 8.6629 0.0 0.0
64+
CHAMB CH 46.78233 6.61184 0.0 0.0
65+
WGT CH 47.09838 8.92525 0.0 0.0
66+
BERNI CH 46.413636 10.023095 0.0 7.0
67+
ILLEZ CH 46.21934 6.94038 0.0 0.0
68+
MORON G2 47.25906 7.19301 0.0 3.0
69+
VD2B1 G2 46.609 6.61072 0.0 0.3
70+
EPAUV G2 47.33401 7.09865 0.0 2.0
71+
BERLI G2 47.32366 7.22194 0.0 0.0
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
#-----------------------------------------------------------
2+
#
3+
# Meshing input parameters
4+
#
5+
#-----------------------------------------------------------
6+
7+
# coordinates of mesh block in latitude/longitude and depth in km
8+
LATITUDE_MIN = 45.704188
9+
LATITUDE_MAX = 47.904188
10+
LONGITUDE_MIN = 5.936242
11+
LONGITUDE_MAX = 10.536242
12+
DEPTH_BLOCK_KM = 80.d0
13+
UTM_PROJECTION_ZONE = 32
14+
SUPPRESS_UTM_PROJECTION = .false.
15+
16+
# file that contains the interfaces of the model / mesh
17+
INTERFACES_FILE = interfaces.dat
18+
19+
# file that contains the cavity
20+
CAVITY_FILE = dummy
21+
22+
# number of elements at the surface along edges of the mesh at the surface
23+
# (must be 8 * multiple of NPROC below if mesh is not regular and contains mesh doublings)
24+
# (must be multiple of NPROC below if mesh is regular)
25+
NEX_XI = 256
26+
NEX_ETA = 256
27+
28+
# number of MPI processors along xi and eta (can be different)
29+
NPROC_XI = 4
30+
NPROC_ETA = 4
31+
32+
#-----------------------------------------------------------
33+
#
34+
# Doubling layers
35+
#
36+
#-----------------------------------------------------------
37+
38+
# Regular/irregular mesh
39+
USE_REGULAR_MESH = .false.
40+
# Only for irregular meshes, number of doubling layers and their position
41+
NDOUBLINGS = 4
42+
# NZ_DOUBLING_1 is the parameter to set up if there is only one doubling layer
43+
# (more doubling entries can be added if needed to match NDOUBLINGS value)
44+
NZ_DOUBLING_1 = 16
45+
NZ_DOUBLING_2 = 20
46+
NZ_DOUBLING_3 = 22
47+
NZ_DOUBLING_4 = 24
48+
49+
#-----------------------------------------------------------
50+
#
51+
# Visualization
52+
#
53+
#-----------------------------------------------------------
54+
55+
# create mesh files for visualisation or further checking
56+
CREATE_ABAQUS_FILES = .false.
57+
CREATE_DX_FILES = .false.
58+
CREATE_VTK_FILES = .false.
59+
60+
# stores mesh files as cubit-exported files into directory MESH/ (for single process run)
61+
SAVE_MESH_AS_CUBIT = .false.
62+
63+
# path to store the databases files
64+
LOCAL_PATH = ./DATABASES_MPI
65+
66+
#-----------------------------------------------------------
67+
#
68+
# CPML
69+
#
70+
#-----------------------------------------------------------
71+
72+
# CPML perfectly matched absorbing layers
73+
THICKNESS_OF_X_PML = 10.d0
74+
THICKNESS_OF_Y_PML = 10.d0
75+
THICKNESS_OF_Z_PML = 10.d0
76+
77+
# add PML layers as extra outer mesh layers
78+
ADD_PML_AS_EXTRA_MESH_LAYERS = .false.
79+
NUMBER_OF_PML_LAYERS_TO_ADD = 3
80+
81+
#-----------------------------------------------------------
82+
#
83+
# Domain materials
84+
#
85+
#-----------------------------------------------------------
86+
87+
# number of materials
88+
NMATERIALS = 1
89+
# define the different materials in the model as :
90+
# #material_id #rho #vp #vs #Qkappa #Qmu #anisotropy_flag #domain_id
91+
# Q : quality factor
92+
# anisotropy_flag : 0=no anisotropy/ 1,2,.. check with implementation in aniso_model.f90
93+
# domain_id : 1=acoustic / 2=elastic
94+
-1 tomography elastic tomography_model.xyz 0 2
95+
96+
#-----------------------------------------------------------
97+
#
98+
# Domain regions
99+
#
100+
#-----------------------------------------------------------
101+
102+
# number of regions
103+
NREGIONS = 1
104+
# define the different regions of the model as :
105+
#NEX_XI_BEGIN #NEX_XI_END #NEX_ETA_BEGIN #NEX_ETA_END #NZ_BEGIN #NZ_END #material_id
106+
1 -1 1 -1 1 30 -1
107+
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# number of interfaces
2+
3
3+
#
4+
# We describe each interface below, structured as a 2D-grid, with several parameters :
5+
# number of points along XI and ETA, minimal XI ETA coordinates
6+
# and spacing between points which must be constant.
7+
# Then the records contain the Z coordinates of the NXI x NETA points.
8+
#
9+
# SUPPRESS_UTM_PROJECTION NXI NETA LONG_MIN LAT_MIN SPACING_XI SPACING_ETA
10+
#
11+
# interface at 8km depth
12+
.false. 1065 502 5.81058278612 47.9307539683 0.004498905500000205 -0.00449735449999622
13+
ptopo.xyz.2.dat
14+
15+
# interface at 500m depth
16+
.false. 1065 502 5.81058278612 47.9307539683 0.004498905500000205 -0.00449735449999622
17+
ptopo.xyz.2.500m.dat
18+
19+
# interface (topography, top of the mesh)
20+
.false. 1065 502 5.81058278612 47.9307539683 0.004498905500000205 -0.00449735449999622
21+
ptopo.xyz.1.dat
22+
23+
#
24+
# for each layer, we give the number of spectral elements in the vertical direction
25+
# up to 8km layer
26+
22
27+
# up to 500m layer
28+
7
29+
# up to top layer
30+
1
31+
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
# Birch glacier collapse - time-reversal simulation
2+
3+
---
4+
5+
![peak-ground motion (PGV) shakemap](./REF_SEIS/shakemap_PGV_Birch_glacier_collapse.2025-05-28.jpg)
6+
7+
This example deals with the [Birch glacier collapse](https://eos.org/thelandslideblog/blatten-birch-glacier-5) in Switzerland from May 28th, 2025.
8+
The simulation requires a few extra setup steps before running a time-reversal (adjoint) simulation:
9+
- download data from the [Swiss broadband station network (CH)](http://seismo.ethz.ch/en/monitoring/national-seismic-network/)
10+
of the event to create the needed (adjoint) sources for the time-reversal simulation.
11+
- convert a detailed velocity model from [Diehl et al. (2021)](https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2021JB022155)
12+
as used by the [Swiss Seismological Service](http://seismo.ethz.ch/en/home/) to a SPECFEM3D tomography model file.
13+
- create a mesh of Switzerland with topography and combined USGS Vs30 values.
14+
15+
All the needed setup scripts are provided in this example folder.
16+
17+
The injected wavefield at the stations will be time-reversed such that the simulation should pinpoint the source of the seismic energy.
18+
For this example simulation, we will turn on parameters in `DATA/Par_file` to run a (pure) adjoint simulation (`SIMULATION_TYPE = 2`) and create movie (`MOVIE_SURFACE`) and shakemap (`CREATE_SHAKEMAP`) data files for a visualization.
19+
20+
About the event:
21+
* The Birch glacier collapse and landslide occurred on May 28th, 2025, at around 15:24 local time (UTC 13:24).
22+
The Swiss Seismological Service locates the event at [46.40 N / 7.84 E](http://seismo.ethz.ch/en/earthquakes/switzerland/massmovementpage.html?originId=%27c21pOmNoLmV0aHouc2VkL3NjMjBhZy9PcmlnaW4vMjAyNTA1MjkxNjAwMjEuMzQ0ODE0LjEyNDU4Mg==%27&date_ch=2025-05-28&time_ch=15:24&region=Goppenstein%20VS&magnitude=3.1).
23+
24+
* seismic data:
25+
26+
We will use broadband station data from the Swiss network as these stations show a good signal-to-noise ratio.
27+
See a [map of all network stations](https://stations.seismo.ethz.ch/en/station-information/station-map/) for their locations.
28+
29+
The closest broadband station to the event is located at the Lauchernalp:
30+
[CH.LAUCH at 46.41554 N / 7.77166 E](https://stations.seismo.ethz.ch/en/station-information/station-details/station-given-networkcode-and-stationcode/index.html?networkcode=CH&stationcode=LAUCH).
31+
32+
For the time-reversal simulation here, we will re-inject the station recordings for velocity, rather than displacement or acceleration.
33+
The decision for this is mostly based on some trial-and-error approach. Velocity seems to be a good trade-off between frequency content and
34+
wavefield coherency between stations.
35+
36+
Broadband stations in general record velocity directly, whereas displacement will be integrated and acceleration taken as time derivate of the raw record.
37+
That is, displacement can exhibit long-period tilt and drift as artifacts due to integrating noise. On the other hand, acceleration can further enhance high-frequency noise.
38+
39+
The frequency range of interest here for the collapse is similar to large landslides, with a peak of energy in the 1 - 10 Hz range.
40+
Noise at these high frequencies is likely generated closeby (e.g., natural wind/river and human induced),
41+
and thus uncorrelated between different stations. Velocity therefore seems to provide a good
42+
balance between frequency content and wavefield correlation for this type of time-reversal simulation.
43+
44+
For the simulation here, we use a rather coarse mesh that is able to resolve
45+
frequencies up to about 1 Hz. The data will be processed with a rather low bandpass filter between 0.025 to 0.5 Hz, hoping that this further enhances the wavefield coherency between stations. We could increase the mesh resolution and data frequency content further, but for the visualization purpose here this is good enough.
46+
47+
48+
## Step-by-step
49+
50+
1. Let's create a model for our target region, by using the setup script:
51+
```
52+
$./setup_model.sh
53+
```
54+
This will setup the topography and VS30 interfaces for our target region of Switzerland, and modify the `Par_file`, `Mesh_Par_file` and `interfaces.dat` with the corresponding mesh region and interface resolution required.
55+
56+
57+
2. Here, we create a tomography velocity model based on the Diehl et al. (2021) model of Switzerland. The following script will download the original model files provided in this [ETHZ repository](https://www.research-collection.ethz.ch/handle/20.500.11850/453236), extract the original Vp and Vs model files (in SIMULPS14 format) and convert them to a SPECFEM3D tomography file in folder `Diehl_model/`:
58+
```
59+
$ ./convert_Diehletal_to_SPECFEM.py Diehl_model/
60+
```
61+
To use the converted tomography model as tomography model for the simulation, we copy it into our `DATA/` folder to match our `DATA/Par_file` setting:
62+
```
63+
$ mkdir -p DATA/tomo_files/
64+
$ cp -v Diehl_model/tomography_model.* ../DATA/tomo_files/
65+
```
66+
67+
3. Now, let's download data and prepare our (adjoint) sources for the time-reversal simulation. There are two scripts provided here to do so. First, type:
68+
```
69+
$ ./download_Swiss_data.py 1
70+
```
71+
This will download, process and save the Swiss seismic network data into a `network_data/` folder. It also creates an appropriate `STATIONS` file that we can use for the simulation. The script interpolates the seismic traces to match the time step size `DT = 0.006` used for the simulation.
72+
73+
We create our adjoint sources by copying the velocity traces with:
74+
```
75+
$ ./setup_SEM_folder.sh semv
76+
```
77+
This will create the `SEM/` folder with all adjoint sources as well as the `DATA/STATIONS_ADJOINT` file needed for our time-reversal simulation.
78+
79+
Note that the number of time steps of our simulation `NSTEP = 20001` in the `Par_file` must match the number of entries in the adjoint source files, otherwise the solver `xspecfem3D` will stop.
80+
81+
82+
4. To run the simulation, just type:
83+
```
84+
$ ./run_this_example.sh
85+
```
86+
87+
This simulation takes quite some time to complete. You might want to consider running it on a fast system. For example, the default setup will take ~10 minutes when run in parallel on 16 GPUs (Nvidia A100). Of course, you could also lower the resolution, i.e., the `NEX` settings in the `DATA/meshfem3D_files/Mesh_Par_file` for a faster turn-around.
88+
89+
90+
For comparison, we provide a reference solution in folder `REF_SEIS/` with corresponding output files.
91+
92+
## Visualization
93+
94+
The simulation outputs surface movie data files and a final shakemap data file.
95+
To create movie snapshot files like `OUTPUT_FILES/AVS_*.inp` that can be visualized by [Paraview](https://www.paraview.org), you can type:
96+
```
97+
$ ./xcreate_movie_files.sh
98+
```
99+
Similar, for creating a shakemap file of peak-ground velocity (PGV), you can type:
100+
```
101+
$ xcreate_shakemap.sh 2
102+
```
103+
104+
Once these `*.inp` files are created, you could further use [Blender](https://www.blender.org) for some fancier visualization. For this, you would use:
105+
```
106+
$ ./xplot_with_blender.movie.sh
107+
```
108+
and
109+
```
110+
$ ./xplot_with_blender.shakemap.sh 2
111+
```
112+
These scripts also show how use a boundary file `AVS_boundaries_utm.CH.inp` that can be created by modifying the script `run_get_simulation_topography.py` and set `gmt_country = '-ECH'` in the User parameter section of that script.
113+
114+
Hope this helps as a starting point for your own investigations - and please feel free to contribute your examples to this repository!
115+
116+
117+
## References:
118+
119+
Diehl, T, Kissling, E., Herwegh, M., Schmid, S. (2021).
120+
*Improving Absolute Hypocenter Accuracy with 3-D Pg and Sg Body-Wave Inversion Procedures and Application to Earthquakes in the Central Alps Region*,
121+
Journal of Geophysical Research: Solid Earth, https://doi.org/10.1029/2021JB022155

0 commit comments

Comments
 (0)