pyfwat 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyfwat-0.2.1/PKG-INFO +140 -0
- pyfwat-0.2.1/README.md +108 -0
- pyfwat-0.2.1/pyfwat/__init__.py +7 -0
- pyfwat-0.2.1/pyfwat/cpt/ccp.cpt +14 -0
- pyfwat-0.2.1/pyfwat/cpt/dvp.cpt +124 -0
- pyfwat-0.2.1/pyfwat/cpt/kernel.cpt +11 -0
- pyfwat-0.2.1/pyfwat/cpt/kernel_avg.cpt +9 -0
- pyfwat-0.2.1/pyfwat/cpt/vel_norm.cpt +11 -0
- pyfwat-0.2.1/pyfwat/cpt/vs.cpt +13 -0
- pyfwat-0.2.1/pyfwat/data/crust1.0.npz +0 -0
- pyfwat-0.2.1/pyfwat/data/icon.svg +13 -0
- pyfwat-0.2.1/pyfwat/io/__init__.py +0 -0
- pyfwat-0.2.1/pyfwat/io/gllio.py +115 -0
- pyfwat-0.2.1/pyfwat/io/grid_model.py +149 -0
- pyfwat-0.2.1/pyfwat/io/misfit.py +23 -0
- pyfwat-0.2.1/pyfwat/io/xdmf.py +70 -0
- pyfwat-0.2.1/pyfwat/picker/__init__.py +0 -0
- pyfwat-0.2.1/pyfwat/picker/mccc.py +36 -0
- pyfwat-0.2.1/pyfwat/picker/picker_fig.py +297 -0
- pyfwat-0.2.1/pyfwat/picker/picker_ui.py +510 -0
- pyfwat-0.2.1/pyfwat/plot/__init__.py +0 -0
- pyfwat-0.2.1/pyfwat/plot/plot_dlnv.py +88 -0
- pyfwat-0.2.1/pyfwat/plot/plot_dv_sec.py +110 -0
- pyfwat-0.2.1/pyfwat/plot/plot_kernel_sec.py +95 -0
- pyfwat-0.2.1/pyfwat/plot/plot_misfit.py +65 -0
- pyfwat-0.2.1/pyfwat/plot/plot_misfit_linesearch.py +104 -0
- pyfwat-0.2.1/pyfwat/plot/plot_misfit_multistage.py +97 -0
- pyfwat-0.2.1/pyfwat/plot/plot_misfit_surf.py +125 -0
- pyfwat-0.2.1/pyfwat/plot/plot_noise_fit.py +77 -0
- pyfwat-0.2.1/pyfwat/plot/plot_res.py +69 -0
- pyfwat-0.2.1/pyfwat/plot/plot_rf_evts.py +74 -0
- pyfwat-0.2.1/pyfwat/plot/plot_rf_fit.py +53 -0
- pyfwat-0.2.1/pyfwat/plot/plot_stations.py +51 -0
- pyfwat-0.2.1/pyfwat/plot/plot_surf_data.py +93 -0
- pyfwat-0.2.1/pyfwat/plot/plot_tele_fit.py +85 -0
- pyfwat-0.2.1/pyfwat/plot/plot_vel_sec.py +232 -0
- pyfwat-0.2.1/pyfwat/postproc/__init__.py +0 -0
- pyfwat-0.2.1/pyfwat/postproc/clean.py +37 -0
- pyfwat-0.2.1/pyfwat/postproc/joint_kernel.py +83 -0
- pyfwat-0.2.1/pyfwat/postproc/model_update.py +134 -0
- pyfwat-0.2.1/pyfwat/postproc/optimize_ls.py +28 -0
- pyfwat-0.2.1/pyfwat/preproc/__init__.py +0 -0
- pyfwat-0.2.1/pyfwat/preproc/cal_fk_times.py +181 -0
- pyfwat-0.2.1/pyfwat/preproc/ch_fkmodel.py +19 -0
- pyfwat-0.2.1/pyfwat/preproc/checkerboard.py +130 -0
- pyfwat-0.2.1/pyfwat/preproc/create_crustmodel.py +248 -0
- pyfwat-0.2.1/pyfwat/preproc/dis2inc.py +35 -0
- pyfwat-0.2.1/pyfwat/preproc/gen_gauss_stf.py +48 -0
- pyfwat-0.2.1/pyfwat/preproc/gen_virt_fkevts.py +130 -0
- pyfwat-0.2.1/pyfwat/utils/__init__.py +0 -0
- pyfwat-0.2.1/pyfwat/utils/distaz.py +205 -0
- pyfwat-0.2.1/pyfwat/utils/geo.py +256 -0
- pyfwat-0.2.1/pyfwat/utils/pario.py +157 -0
- pyfwat-0.2.1/pyfwat/utils/utils.py +35 -0
- pyfwat-0.2.1/pyfwat.egg-info/PKG-INFO +140 -0
- pyfwat-0.2.1/pyfwat.egg-info/SOURCES.txt +61 -0
- pyfwat-0.2.1/pyfwat.egg-info/dependency_links.txt +1 -0
- pyfwat-0.2.1/pyfwat.egg-info/entry_points.txt +28 -0
- pyfwat-0.2.1/pyfwat.egg-info/not-zip-safe +1 -0
- pyfwat-0.2.1/pyfwat.egg-info/requires.txt +9 -0
- pyfwat-0.2.1/pyfwat.egg-info/top_level.txt +1 -0
- pyfwat-0.2.1/pyproject.toml +82 -0
- pyfwat-0.2.1/setup.cfg +4 -0
pyfwat-0.2.1/PKG-INFO
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pyfwat
|
|
3
|
+
Version: 0.2.1
|
|
4
|
+
Summary: Python interface for SpecFWAT (Full Waveform Adjoint Tomography)
|
|
5
|
+
Author-email: Mijian Xu <mijian.xu@utoronto.ca>
|
|
6
|
+
License: GPLv3
|
|
7
|
+
Project-URL: Homepage, https://github.com/xumi1993/pyfwat
|
|
8
|
+
Project-URL: Repository, https://github.com/xumi1993/pyfwat
|
|
9
|
+
Project-URL: Bug Tracker, https://github.com/xumi1993/pyfwat/issues
|
|
10
|
+
Keywords: seismology,full-waveform-inversion,adjoint-tomography,seismic-imaging
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Science/Research
|
|
13
|
+
Classifier: Topic :: Scientific/Engineering
|
|
14
|
+
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
15
|
+
Classifier: Programming Language :: Python
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Requires-Python: >=3.7
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
Requires-Dist: obspy>=1.2.0
|
|
24
|
+
Requires-Dist: pandas>=1.0.0
|
|
25
|
+
Requires-Dist: numpy>=1.19.0
|
|
26
|
+
Requires-Dist: scipy>=1.1.0
|
|
27
|
+
Requires-Dist: matplotlib>=3.2.0
|
|
28
|
+
Requires-Dist: ruamel.yaml
|
|
29
|
+
Requires-Dist: h5py
|
|
30
|
+
Requires-Dist: pygmt
|
|
31
|
+
Requires-Dist: pyproj
|
|
32
|
+
|
|
33
|
+
# PyFWAT
|
|
34
|
+
|
|
35
|
+
Python interface for SpecFWAT (Full Waveform Adjoint Tomography)
|
|
36
|
+
|
|
37
|
+
## Overview
|
|
38
|
+
|
|
39
|
+
PyFWAT is a comprehensive Python toolkit designed for full waveform inversion (FWI) and adjoint tomography workflows. It provides a complete set of tools for preprocessing seismic data, running inversions, post-processing results, and visualizing various aspects of the tomographic models and data fits.
|
|
40
|
+
|
|
41
|
+
## Features
|
|
42
|
+
|
|
43
|
+
- **Preprocessing Tools**: Data preparation and model setup utilities
|
|
44
|
+
- **Plotting Utilities**: Comprehensive visualization tools for velocity models, kernels, misfits, and data fits
|
|
45
|
+
- **Post-processing**: Model updates, kernel operations, and optimization routines
|
|
46
|
+
- **Data I/O**: Support for various seismic data formats and model representations
|
|
47
|
+
- **Interactive Picking**: GUI-based phase picking interface for teleseismic data
|
|
48
|
+
|
|
49
|
+
## Installation
|
|
50
|
+
|
|
51
|
+
### Requirements
|
|
52
|
+
|
|
53
|
+
- Python >= 3.9
|
|
54
|
+
- ObsPy >= 1.2.0
|
|
55
|
+
- NumPy >= 1.19.0
|
|
56
|
+
- SciPy >= 1.1.0
|
|
57
|
+
- Matplotlib >= 3.2.0
|
|
58
|
+
- pandas >= 1.0.0
|
|
59
|
+
- PyGMT
|
|
60
|
+
- h5py
|
|
61
|
+
- pyproj
|
|
62
|
+
- ruamel.yaml
|
|
63
|
+
|
|
64
|
+
### Install from source
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
git clone https://github.com/xumi1993/pyfwat.git
|
|
68
|
+
cd pyfwat
|
|
69
|
+
pip install -e .
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Command-line Tools
|
|
73
|
+
|
|
74
|
+
PyFWAT provides numerous command-line utilities for various tasks:
|
|
75
|
+
|
|
76
|
+
### Visualization Tools
|
|
77
|
+
|
|
78
|
+
- `plot_vel_sec` - Plot velocity cross-sections
|
|
79
|
+
- `plot_dv_sec` - Plot velocity perturbation cross-sections
|
|
80
|
+
- `plot_kernel_sec` - Plot sensitivity kernel cross-sections
|
|
81
|
+
- `plot_residual` - Visualize data residuals
|
|
82
|
+
- `plot_misfit` - Plot misfit evolution
|
|
83
|
+
- `plot_misfit_multifreq` - Plot misfit for multiple frequencies
|
|
84
|
+
- `plot_misfit_multistage` - Plot misfit across multiple inversion stages
|
|
85
|
+
- `plot_misfit_linesearch` - Visualize line search optimization
|
|
86
|
+
- `plot_stations` - Display station distributions
|
|
87
|
+
- `plot_rf_evts` - Plot receiver function events
|
|
88
|
+
- `plot_rf_fit` - Show receiver function data fits
|
|
89
|
+
- `plot_noise_fit` - Visualize ambient noise data fits
|
|
90
|
+
- `plot_surf_data` - Plot surface wave data
|
|
91
|
+
- `plot_tele_fit` - Display teleseismic waveform fits
|
|
92
|
+
|
|
93
|
+
### Preprocessing Tools
|
|
94
|
+
|
|
95
|
+
- `gen_virt_fkevts` - Generate virtual FK events
|
|
96
|
+
- `gen_gauss_stf` - Generate Gaussian source time functions
|
|
97
|
+
- `ch_fkmodel` - Modify FK models
|
|
98
|
+
- `cal_fk_times` - Calculate FK travel times
|
|
99
|
+
- `fwat_checkerboard` - Create checkerboard resolution tests
|
|
100
|
+
- `fwat_createmodel` - Generate initial crustal models
|
|
101
|
+
- `setpar_fwat` - Configure FWAT parameters
|
|
102
|
+
|
|
103
|
+
### Post-processing Tools
|
|
104
|
+
|
|
105
|
+
- `optimize_ls` - Perform line search optimization
|
|
106
|
+
- `fwat_clean` - Clean up working directories
|
|
107
|
+
- `fwat_joint_kernel` - Combine kernels from different data types
|
|
108
|
+
- `fwat_model_update` - Update velocity models
|
|
109
|
+
- `create_xmf` - Create XDMF files for visualization (under development)
|
|
110
|
+
|
|
111
|
+
### Interactive Tools
|
|
112
|
+
|
|
113
|
+
- `pick_tele` - Interactive GUI for teleseismic phase picking
|
|
114
|
+
|
|
115
|
+
## Module Structure
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
pyfwat/
|
|
119
|
+
├── io/ # Input/output utilities
|
|
120
|
+
├── picker/ # Phase picking tools
|
|
121
|
+
├── plot/ # Visualization modules
|
|
122
|
+
├── postproc/ # Post-processing routines
|
|
123
|
+
├── preproc/ # Preprocessing utilities
|
|
124
|
+
├── utils/ # General utility functions
|
|
125
|
+
├── cpt/ # Color palette files
|
|
126
|
+
└── data/ # Data resources (e.g., CRUST1.0 model)
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Contributing
|
|
130
|
+
|
|
131
|
+
Contributions are welcome! Please feel free to submit issues or pull requests.
|
|
132
|
+
|
|
133
|
+
## License
|
|
134
|
+
|
|
135
|
+
This project is licensed under the GNU General Public License v3.0 (GPLv3).
|
|
136
|
+
|
|
137
|
+
## Author
|
|
138
|
+
|
|
139
|
+
Mijian Xu (mijian.xu@utoronto.ca)
|
|
140
|
+
|
pyfwat-0.2.1/README.md
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# PyFWAT
|
|
2
|
+
|
|
3
|
+
Python interface for SpecFWAT (Full Waveform Adjoint Tomography)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
PyFWAT is a comprehensive Python toolkit designed for full waveform inversion (FWI) and adjoint tomography workflows. It provides a complete set of tools for preprocessing seismic data, running inversions, post-processing results, and visualizing various aspects of the tomographic models and data fits.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **Preprocessing Tools**: Data preparation and model setup utilities
|
|
12
|
+
- **Plotting Utilities**: Comprehensive visualization tools for velocity models, kernels, misfits, and data fits
|
|
13
|
+
- **Post-processing**: Model updates, kernel operations, and optimization routines
|
|
14
|
+
- **Data I/O**: Support for various seismic data formats and model representations
|
|
15
|
+
- **Interactive Picking**: GUI-based phase picking interface for teleseismic data
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
### Requirements
|
|
20
|
+
|
|
21
|
+
- Python >= 3.9
|
|
22
|
+
- ObsPy >= 1.2.0
|
|
23
|
+
- NumPy >= 1.19.0
|
|
24
|
+
- SciPy >= 1.1.0
|
|
25
|
+
- Matplotlib >= 3.2.0
|
|
26
|
+
- pandas >= 1.0.0
|
|
27
|
+
- PyGMT
|
|
28
|
+
- h5py
|
|
29
|
+
- pyproj
|
|
30
|
+
- ruamel.yaml
|
|
31
|
+
|
|
32
|
+
### Install from source
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
git clone https://github.com/xumi1993/pyfwat.git
|
|
36
|
+
cd pyfwat
|
|
37
|
+
pip install -e .
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Command-line Tools
|
|
41
|
+
|
|
42
|
+
PyFWAT provides numerous command-line utilities for various tasks:
|
|
43
|
+
|
|
44
|
+
### Visualization Tools
|
|
45
|
+
|
|
46
|
+
- `plot_vel_sec` - Plot velocity cross-sections
|
|
47
|
+
- `plot_dv_sec` - Plot velocity perturbation cross-sections
|
|
48
|
+
- `plot_kernel_sec` - Plot sensitivity kernel cross-sections
|
|
49
|
+
- `plot_residual` - Visualize data residuals
|
|
50
|
+
- `plot_misfit` - Plot misfit evolution
|
|
51
|
+
- `plot_misfit_multifreq` - Plot misfit for multiple frequencies
|
|
52
|
+
- `plot_misfit_multistage` - Plot misfit across multiple inversion stages
|
|
53
|
+
- `plot_misfit_linesearch` - Visualize line search optimization
|
|
54
|
+
- `plot_stations` - Display station distributions
|
|
55
|
+
- `plot_rf_evts` - Plot receiver function events
|
|
56
|
+
- `plot_rf_fit` - Show receiver function data fits
|
|
57
|
+
- `plot_noise_fit` - Visualize ambient noise data fits
|
|
58
|
+
- `plot_surf_data` - Plot surface wave data
|
|
59
|
+
- `plot_tele_fit` - Display teleseismic waveform fits
|
|
60
|
+
|
|
61
|
+
### Preprocessing Tools
|
|
62
|
+
|
|
63
|
+
- `gen_virt_fkevts` - Generate virtual FK events
|
|
64
|
+
- `gen_gauss_stf` - Generate Gaussian source time functions
|
|
65
|
+
- `ch_fkmodel` - Modify FK models
|
|
66
|
+
- `cal_fk_times` - Calculate FK travel times
|
|
67
|
+
- `fwat_checkerboard` - Create checkerboard resolution tests
|
|
68
|
+
- `fwat_createmodel` - Generate initial crustal models
|
|
69
|
+
- `setpar_fwat` - Configure FWAT parameters
|
|
70
|
+
|
|
71
|
+
### Post-processing Tools
|
|
72
|
+
|
|
73
|
+
- `optimize_ls` - Perform line search optimization
|
|
74
|
+
- `fwat_clean` - Clean up working directories
|
|
75
|
+
- `fwat_joint_kernel` - Combine kernels from different data types
|
|
76
|
+
- `fwat_model_update` - Update velocity models
|
|
77
|
+
- `create_xmf` - Create XDMF files for visualization (under development)
|
|
78
|
+
|
|
79
|
+
### Interactive Tools
|
|
80
|
+
|
|
81
|
+
- `pick_tele` - Interactive GUI for teleseismic phase picking
|
|
82
|
+
|
|
83
|
+
## Module Structure
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
pyfwat/
|
|
87
|
+
├── io/ # Input/output utilities
|
|
88
|
+
├── picker/ # Phase picking tools
|
|
89
|
+
├── plot/ # Visualization modules
|
|
90
|
+
├── postproc/ # Post-processing routines
|
|
91
|
+
├── preproc/ # Preprocessing utilities
|
|
92
|
+
├── utils/ # General utility functions
|
|
93
|
+
├── cpt/ # Color palette files
|
|
94
|
+
└── data/ # Data resources (e.g., CRUST1.0 model)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Contributing
|
|
98
|
+
|
|
99
|
+
Contributions are welcome! Please feel free to submit issues or pull requests.
|
|
100
|
+
|
|
101
|
+
## License
|
|
102
|
+
|
|
103
|
+
This project is licensed under the GNU General Public License v3.0 (GPLv3).
|
|
104
|
+
|
|
105
|
+
## Author
|
|
106
|
+
|
|
107
|
+
Mijian Xu (mijian.xu@utoronto.ca)
|
|
108
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# cpt file created by: grd2cpt out1.grd -Cpolar1 -Z
|
|
2
|
+
#COLOR_MODEL = RGB
|
|
3
|
+
#
|
|
4
|
+
-1 39 56 113 -0.4 39 56 113
|
|
5
|
+
-0.4 39 56 113 -0.14 80 94 140
|
|
6
|
+
-0.14 80 94 140 -0.01 255 255 255
|
|
7
|
+
-0.01 255 255 255 0 255 255 255
|
|
8
|
+
0 255 255 255 0.01 255 255 255
|
|
9
|
+
0.01 255 255 255 0.14 219 90 97
|
|
10
|
+
0.14 219 90 97 1 206 28 38
|
|
11
|
+
|
|
12
|
+
B 39 56 113
|
|
13
|
+
F 206 28 38
|
|
14
|
+
N 255 255 255
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# COLOR_MODEL = rgb
|
|
2
|
+
-12 178/24/43 -11.8 179.5/27/44.417
|
|
3
|
+
-11.8 179.5/27/44.417 -11.6 181/30/45.833
|
|
4
|
+
-11.6 181/30/45.833 -11.4 182.5/33/47.25
|
|
5
|
+
-11.4 182.5/33/47.25 -11.2 184/36/48.667
|
|
6
|
+
-11.2 184/36/48.667 -11 185.5/39/50.083
|
|
7
|
+
-11 185.5/39/50.083 -10.8 187/42/51.5
|
|
8
|
+
-10.8 187/42/51.5 -10.6 188.5/45/52.917
|
|
9
|
+
-10.6 188.5/45/52.917 -10.4 190/48/54.333
|
|
10
|
+
-10.4 190/48/54.333 -10.2 191.5/51/55.75
|
|
11
|
+
-10.2 191.5/51/55.75 -10 193/54/57.167
|
|
12
|
+
-10 193/54/57.167 -9.8 194.5/57/58.583
|
|
13
|
+
-9.8 194.5/57/58.583 -9.6 196/60/60
|
|
14
|
+
-9.6 196/60/60 -9.4 197.5/63/61.417
|
|
15
|
+
-9.4 197.5/63/61.417 -9.2 199/66/62.833
|
|
16
|
+
-9.2 199/66/62.833 -9 200.5/69/64.25
|
|
17
|
+
-9 200.5/69/64.25 -8.8 202/72/65.667
|
|
18
|
+
-8.8 202/72/65.667 -8.6 203.5/75/67.083
|
|
19
|
+
-8.6 203.5/75/67.083 -8.4 205/78/68.5
|
|
20
|
+
-8.4 205/78/68.5 -8.2 206.5/81/69.917
|
|
21
|
+
-8.2 206.5/81/69.917 -8 208/84/71.333
|
|
22
|
+
-8 208/84/71.333 -7.8 209.5/87/72.75
|
|
23
|
+
-7.8 209.5/87/72.75 -7.6 211/90/74.167
|
|
24
|
+
-7.6 211/90/74.167 -7.4 212.5/93/75.583
|
|
25
|
+
-7.4 212.5/93/75.583 -7.2 214/96/77
|
|
26
|
+
-7.2 214/96/77 -7 215.56/99.594/79.76
|
|
27
|
+
-7 215.56/99.594/79.76 -6.8 217.12/103.19/82.521
|
|
28
|
+
-6.8 217.12/103.19/82.521 -6.6 218.69/106.78/85.281
|
|
29
|
+
-6.6 218.69/106.78/85.281 -6.4 220.25/110.38/88.042
|
|
30
|
+
-6.4 220.25/110.38/88.042 -6.2 221.81/113.97/90.802
|
|
31
|
+
-6.2 221.81/113.97/90.802 -6 223.38/117.56/93.562
|
|
32
|
+
-6 223.38/117.56/93.562 -5.8 224.94/121.16/96.323
|
|
33
|
+
-5.8 224.94/121.16/96.323 -5.6 226.5/124.75/99.083
|
|
34
|
+
-5.6 226.5/124.75/99.083 -5.4 228.06/128.34/101.84
|
|
35
|
+
-5.4 228.06/128.34/101.84 -5.2 229.62/131.94/104.6
|
|
36
|
+
-5.2 229.62/131.94/104.6 -5 231.19/135.53/107.36
|
|
37
|
+
-5 231.19/135.53/107.36 -4.8 232.75/139.13/110.12
|
|
38
|
+
-4.8 232.75/139.13/110.12 -4.6 234.31/142.72/112.89
|
|
39
|
+
-4.6 234.31/142.72/112.89 -4.4 235.88/146.31/115.65
|
|
40
|
+
-4.4 235.88/146.31/115.65 -4.2 237.44/149.91/118.41
|
|
41
|
+
-4.2 237.44/149.91/118.41 -4 239/153.5/121.17
|
|
42
|
+
-4 239/153.5/121.17 -3.8 240.56/157.09/123.93
|
|
43
|
+
-3.8 240.56/157.09/123.93 -3.6 242.13/160.69/126.69
|
|
44
|
+
-3.6 242.13/160.69/126.69 -3.4 243.69/164.28/129.45
|
|
45
|
+
-3.4 243.69/164.28/129.45 -3.2 245/171/137.67
|
|
46
|
+
-3.2 245/171/137.67 -3 246.25/178.5/147.25
|
|
47
|
+
-3 246.25/178.5/147.25 -2.8 247.5/186/156.83
|
|
48
|
+
-2.8 247.5/186/156.83 -2.6 248.75/193.5/166.42
|
|
49
|
+
-2.6 248.75/193.5/166.42 -2.4 250/201/176
|
|
50
|
+
-2.4 250/201/176 -2.2 251.25/208.5/185.58
|
|
51
|
+
-2.2 251.25/208.5/185.58 -2 252.5/216/195.17
|
|
52
|
+
-2 252.5/216/195.17 -1.8 253.12/221.25/202.5
|
|
53
|
+
-1.8 253.12/221.25/202.5 -1.6 253.33/225/208.33
|
|
54
|
+
-1.6 253.33/225/208.33 -1.4 253.54/228.75/214.17
|
|
55
|
+
-1.4 253.54/228.75/214.17 -1.2 253.75/232.5/220
|
|
56
|
+
-1.2 253.75/232.5/220 -1 253.96/236.25/225.83
|
|
57
|
+
-1 253.96/236.25/225.83 -0.8 254.17/240/231.67
|
|
58
|
+
-0.8 254.17/240/231.67 -0.6 254.38/243.75/237.5
|
|
59
|
+
-0.6 254.38/243.75/237.5 -0.4 254.58/247.5/243.33
|
|
60
|
+
-0.4 254.58/247.5/243.33 -0.2 254.79/251.25/249.17
|
|
61
|
+
-0.2 254.79/251.25/249.17 0 white
|
|
62
|
+
0 white 0.2 250.21/252.29/253.44
|
|
63
|
+
0.2 250.21/252.29/253.44 0.4 245.42/249.58/251.87
|
|
64
|
+
0.4 245.42/249.58/251.87 0.6 240.62/246.88/250.31
|
|
65
|
+
0.6 240.62/246.88/250.31 0.8 235.83/244.17/248.75
|
|
66
|
+
0.8 235.83/244.17/248.75 1 231.04/241.46/247.19
|
|
67
|
+
1 231.04/241.46/247.19 1.2 226.25/238.75/245.62
|
|
68
|
+
1.2 226.25/238.75/245.62 1.4 221.46/236.04/244.06
|
|
69
|
+
1.4 221.46/236.04/244.06 1.6 216.67/233.33/242.5
|
|
70
|
+
1.6 216.67/233.33/242.5 1.8 211.87/230.62/240.94
|
|
71
|
+
1.8 211.87/230.62/240.94 2 205.5/227.22/239
|
|
72
|
+
2 205.5/227.22/239 2.2 196.75/222.78/236.5
|
|
73
|
+
2.2 196.75/222.78/236.5 2.4 188/218.33/234
|
|
74
|
+
2.4 188/218.33/234 2.6 179.25/213.89/231.5
|
|
75
|
+
2.6 179.25/213.89/231.5 2.8 170.5/209.44/229
|
|
76
|
+
2.8 170.5/209.44/229 3 161.75/205/226.5
|
|
77
|
+
3 161.75/205/226.5 3.2 153/200.56/224
|
|
78
|
+
3.2 153/200.56/224 3.4 145.18/196.48/221.72
|
|
79
|
+
3.4 145.18/196.48/221.72 3.6 141.06/193.88/220.31
|
|
80
|
+
3.6 141.06/193.88/220.31 3.8 136.95/191.27/218.91
|
|
81
|
+
3.8 136.95/191.27/218.91 4 132.83/188.67/217.5
|
|
82
|
+
4 132.83/188.67/217.5 4.2 128.72/186.06/216.09
|
|
83
|
+
4.2 128.72/186.06/216.09 4.4 124.6/183.46/214.69
|
|
84
|
+
4.4 124.6/183.46/214.69 4.6 120.49/180.85/213.28
|
|
85
|
+
4.6 120.49/180.85/213.28 4.8 116.38/178.25/211.88
|
|
86
|
+
4.8 116.38/178.25/211.88 5 112.26/175.65/210.47
|
|
87
|
+
5 112.26/175.65/210.47 5.2 108.15/173.04/209.06
|
|
88
|
+
5.2 108.15/173.04/209.06 5.4 104.03/170.44/207.66
|
|
89
|
+
5.4 104.03/170.44/207.66 5.6 99.917/167.83/206.25
|
|
90
|
+
5.6 99.917/167.83/206.25 5.8 95.802/165.23/204.84
|
|
91
|
+
5.8 95.802/165.23/204.84 6 91.688/162.62/203.44
|
|
92
|
+
6 91.688/162.62/203.44 6.2 87.573/160.02/202.03
|
|
93
|
+
6.2 87.573/160.02/202.03 6.4 83.458/157.42/200.62
|
|
94
|
+
6.4 83.458/157.42/200.62 6.6 79.344/154.81/199.22
|
|
95
|
+
6.6 79.344/154.81/199.22 6.8 75.229/152.21/197.81
|
|
96
|
+
6.8 75.229/152.21/197.81 7 71.115/149.6/196.41
|
|
97
|
+
7 71.115/149.6/196.41 7.2 67/147/195
|
|
98
|
+
7.2 67/147/195 7.4 65.583/145.12/194.04
|
|
99
|
+
7.4 65.583/145.12/194.04 7.6 64.167/143.25/193.08
|
|
100
|
+
7.6 64.167/143.25/193.08 7.8 62.75/141.38/192.12
|
|
101
|
+
7.8 62.75/141.38/192.12 8 61.333/139.5/191.17
|
|
102
|
+
8 61.333/139.5/191.17 8.2 59.917/137.62/190.21
|
|
103
|
+
8.2 59.917/137.62/190.21 8.4 58.5/135.75/189.25
|
|
104
|
+
8.4 58.5/135.75/189.25 8.6 57.083/133.87/188.29
|
|
105
|
+
8.6 57.083/133.87/188.29 8.8 55.667/132/187.33
|
|
106
|
+
8.8 55.667/132/187.33 9 54.25/130.12/186.38
|
|
107
|
+
9 54.25/130.12/186.38 9.2 52.833/128.25/185.42
|
|
108
|
+
9.2 52.833/128.25/185.42 9.4 51.417/126.37/184.46
|
|
109
|
+
9.4 51.417/126.37/184.46 9.6 50/124.5/183.5
|
|
110
|
+
9.6 50/124.5/183.5 9.8 48.583/122.62/182.54
|
|
111
|
+
9.8 48.583/122.62/182.54 10 47.167/120.75/181.58
|
|
112
|
+
10 47.167/120.75/181.58 10.2 45.75/118.88/180.62
|
|
113
|
+
10.2 45.75/118.88/180.62 10.4 44.333/117/179.67
|
|
114
|
+
10.4 44.333/117/179.67 10.6 42.917/115.13/178.71
|
|
115
|
+
10.6 42.917/115.13/178.71 10.8 41.5/113.25/177.75
|
|
116
|
+
10.8 41.5/113.25/177.75 11 40.083/111.38/176.79
|
|
117
|
+
11 40.083/111.38/176.79 11.2 38.667/109.5/175.83
|
|
118
|
+
11.2 38.667/109.5/175.83 11.4 37.25/107.62/174.88
|
|
119
|
+
11.4 37.25/107.62/174.88 11.6 35.833/105.75/173.92
|
|
120
|
+
11.6 35.833/105.75/173.92 11.8 34.417/103.88/172.96
|
|
121
|
+
11.8 34.417/103.88/172.96 12 33/102/172
|
|
122
|
+
B 178/24/43
|
|
123
|
+
F 33/102/172
|
|
124
|
+
N white
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# cpt file created by: grd2cpt out4.grd -Cseis -Z
|
|
2
|
+
#COLOR_MODEL = RGB
|
|
3
|
+
#
|
|
4
|
+
0 145 26 36 1 228 123 47
|
|
5
|
+
1 228 123 47 1.5 233 221 59
|
|
6
|
+
1.5 233 221 59 3 65 166 92
|
|
7
|
+
3 65 166 92 3.6 72 179 193
|
|
8
|
+
3.6 72 179 193 5 34 66 135
|
|
9
|
+
B 145 26 36 2.654193574
|
|
10
|
+
F 34 66 135
|
|
11
|
+
N 128 128 128
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# cpt file created by: grd2cpt out4.grd -Cseis -Z
|
|
2
|
+
#COLOR_MODEL = RGB
|
|
3
|
+
#
|
|
4
|
+
2 145 26 36 2.654193574 145 26 36
|
|
5
|
+
2.654193574 145 26 36 3.180712338 228 123 47
|
|
6
|
+
3.180712338 228 123 47 3.43 233 221 59
|
|
7
|
+
3.43 233 221 59 3.7 65 166 92
|
|
8
|
+
3.7 65 166 92 4 72 179 193
|
|
9
|
+
4 72 179 193 4.5 34 66 135
|
|
10
|
+
4.5 34 66 135 5 34 66 135
|
|
11
|
+
B 145 26 36 2.654193574
|
|
12
|
+
F 34 66 135
|
|
13
|
+
N 128 128 128
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
3
|
+
<svg width="100%" height="100%" viewBox="0 0 514 514" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
|
4
|
+
<g id="画板1" transform="matrix(1,0,0,1,-931,-1941)">
|
|
5
|
+
<rect x="931" y="1941" width="514" height="514" style="fill:none;"/>
|
|
6
|
+
<g id="icon" transform="matrix(1,0,0,1,931,1941)">
|
|
7
|
+
<use xlink:href="#_Image1" x="3" y="1" width="506px" height="513px"/>
|
|
8
|
+
</g>
|
|
9
|
+
</g>
|
|
10
|
+
<defs>
|
|
11
|
+
<image id="_Image1" width="506px" height="513px" xlink:href="data:image/png;base64,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"/>
|
|
12
|
+
</defs>
|
|
13
|
+
</svg>
|
|
File without changes
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
import os
|
|
3
|
+
import re
|
|
4
|
+
from glob import glob
|
|
5
|
+
from scipy.interpolate import griddata
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def read_fortran_external_mesh(filename, ngllx=5, nglly=5, ngllz=5):
|
|
9
|
+
with open(filename, "rb") as file:
|
|
10
|
+
data = {}
|
|
11
|
+
data['nspec_ab'] = np.fromfile(file, dtype="int32", offset=4, count=1)[0]
|
|
12
|
+
data['nglob_ab'] = np.fromfile(file, dtype="int32",offset=8, count=1)[0]
|
|
13
|
+
data['nspec_irr'] = np.fromfile(file, dtype="int32",offset=8, count=1)[0]
|
|
14
|
+
nbool = ngllx*nglly*ngllz*data['nspec_ab']
|
|
15
|
+
data['ibool'] = np.fromfile(file, dtype="int32", offset=8, count=nbool).reshape(
|
|
16
|
+
ngllx,nglly,ngllz,data['nspec_ab'], order='F')
|
|
17
|
+
data['xstore'] = np.fromfile(file, dtype="float32", offset=8, count=data['nglob_ab'])
|
|
18
|
+
data['ystore'] = np.fromfile(file, dtype="float32", offset=8, count=data['nglob_ab'])
|
|
19
|
+
data['zstore'] = np.fromfile(file, dtype="float32", offset=8, count=data['nglob_ab'])
|
|
20
|
+
return data
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def read_fortran_model(filename, nspec_ab, ngllx=5, nglly=5, ngllz=5):
|
|
24
|
+
with open(filename, "rb") as file:
|
|
25
|
+
file.seek(0)
|
|
26
|
+
data = np.fromfile(file, dtype="float32", offset=4)[:-1].reshape(
|
|
27
|
+
ngllx,nglly,ngllz,nspec_ab, order='F')
|
|
28
|
+
return data
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class GllModel:
|
|
32
|
+
def __init__(self, inpath, parameters=['vp', 'vs', 'rho'], ngllx=5, nglly=5, ngllz=5) -> None:
|
|
33
|
+
self.inpath = inpath
|
|
34
|
+
self.parameters = parameters
|
|
35
|
+
self.model_data = {}
|
|
36
|
+
for para in parameters:
|
|
37
|
+
self.model_data[para] = []
|
|
38
|
+
self.nglls = {'ngllx': ngllx,
|
|
39
|
+
'nglly': nglly,
|
|
40
|
+
'ngllz': ngllz}
|
|
41
|
+
self.read_external_mesh()
|
|
42
|
+
self.get_minmax()
|
|
43
|
+
|
|
44
|
+
def get_minmax(self):
|
|
45
|
+
self.xmin = np.min([np.min(ex['xstore']) for ex in self.external_meshs])
|
|
46
|
+
self.xmax = np.max([np.max(ex['xstore']) for ex in self.external_meshs])
|
|
47
|
+
self.ymin = np.min([np.min(ex['ystore']) for ex in self.external_meshs])
|
|
48
|
+
self.ymax = np.max([np.max(ex['ystore']) for ex in self.external_meshs])
|
|
49
|
+
self.zmin = np.min([np.min(ex['zstore']) for ex in self.external_meshs])
|
|
50
|
+
self.zmax = np.max([np.max(ex['zstore']) for ex in self.external_meshs])
|
|
51
|
+
|
|
52
|
+
def read_external_mesh(self):
|
|
53
|
+
self.external_meshs = []
|
|
54
|
+
extbins = glob(os.path.join(
|
|
55
|
+
self.inpath, 'proc*_external_mesh.bin')
|
|
56
|
+
)
|
|
57
|
+
self.nproc = len(extbins)
|
|
58
|
+
for _, extbin in enumerate(extbins):
|
|
59
|
+
pname = re.search(r'proc(\d{6})', extbin).groups()[0]
|
|
60
|
+
mesh_data = read_fortran_external_mesh(extbin, **self.nglls)
|
|
61
|
+
self.external_meshs.append(mesh_data)
|
|
62
|
+
for para in self.parameters:
|
|
63
|
+
fname = os.path.join(self.inpath, 'proc{}_{}.bin'.format(pname, para))
|
|
64
|
+
self.model_data[para].append(read_fortran_model(fname, mesh_data['nspec_ab'], **self.nglls))
|
|
65
|
+
|
|
66
|
+
def get_points_data(self):
|
|
67
|
+
self.points = np.empty([0, 3+len(self.parameters)])
|
|
68
|
+
for i in range(self.nproc):
|
|
69
|
+
self.points = np.vstack((self.points, self._get_gll_point(i)))
|
|
70
|
+
|
|
71
|
+
def griddata(self, x, y, z, method='linear'):
|
|
72
|
+
""" grid data with given series of x, y, z.
|
|
73
|
+
|
|
74
|
+
Parameters
|
|
75
|
+
----------
|
|
76
|
+
x : 1D numpy.ndarray
|
|
77
|
+
Series of x
|
|
78
|
+
y : 1D numpy.ndarray
|
|
79
|
+
Series of y
|
|
80
|
+
z : 1D numpy.ndarray
|
|
81
|
+
Series of z
|
|
82
|
+
method : str, optional
|
|
83
|
+
method for interpolation, by default 'linear'
|
|
84
|
+
"""
|
|
85
|
+
# points = np.empty([0, 3+len(self.parameters)])
|
|
86
|
+
x_inter, y_inter, z_inter = np.meshgrid(x, y, z)
|
|
87
|
+
# for i in range(self.nproc):
|
|
88
|
+
# points = np.vstack((points, self._get_gll_point(i)))
|
|
89
|
+
grid_data = {}
|
|
90
|
+
for i, para in enumerate(self.parameters):
|
|
91
|
+
grid_data[para] = griddata(self.points[:, 0:3], self.points[:, i+3],
|
|
92
|
+
(x_inter, y_inter, z_inter), method=method)
|
|
93
|
+
return grid_data
|
|
94
|
+
|
|
95
|
+
def _get_gll_point(self, idx):
|
|
96
|
+
external_mesh = self.external_meshs[idx]
|
|
97
|
+
data = [self.model_data[para][idx] for para in self.parameters]
|
|
98
|
+
points = np.zeros([external_mesh['nspec_ab']* \
|
|
99
|
+
self.nglls['ngllx']*self.nglls['nglly']*self.nglls['ngllz'],
|
|
100
|
+
3+len(self.parameters)]
|
|
101
|
+
)
|
|
102
|
+
n = 0
|
|
103
|
+
for ispec in range(external_mesh['nspec_ab']):
|
|
104
|
+
for k in range(self.nglls['ngllz']):
|
|
105
|
+
for j in range(self.nglls['nglly']):
|
|
106
|
+
for i in range(self.nglls['ngllx']):
|
|
107
|
+
iglob = external_mesh['ibool'][i,j,k,ispec]
|
|
108
|
+
points[n, 0] = external_mesh['xstore'][iglob-1]
|
|
109
|
+
points[n, 1] = external_mesh['ystore'][iglob-1]
|
|
110
|
+
points[n, 2] = external_mesh['zstore'][iglob-1]
|
|
111
|
+
for m, _ in enumerate(self.parameters):
|
|
112
|
+
points[n, m+3] = data[m][i, j, k, ispec]
|
|
113
|
+
n += 1
|
|
114
|
+
return points
|
|
115
|
+
|