103 lines
5.5 KiB
Markdown
103 lines
5.5 KiB
Markdown
# TomoATT
|
||
|
||
[](LICENSE)
|
||
[](https://github.com/mnagaso/TomoATT/actions/workflows/CI.yml)
|
||
[](https://anaconda.org/conda-forge/tomoatt)
|
||
[](https://anaconda.org/conda-forge/tomoatt)
|
||
[](https://anaconda.org/conda-forge/tomoatt)
|
||
|
||

|
||
|
||
TomoATT is a library which implements an eikonal equation solver based Adjoint-state Traveltime Tomography for a very large-scale computation, which implements the methods described in the publications:
|
||
|
||
- **The TomoATT software package**
|
||
- Chen, J., Nagaso, M., Xu, M., & Tong, P. (2025). TomoATT: An open-source package for Eikonal equation-based adjoint-state traveltime tomography for seismic velocity and azimuthal anisotropy. Computers & Geosciences, 105995. [DOI](https://doi.org/10.1016/j.cageo.2025.105995).
|
||
|
||
- **Regional tomography in Cartesian coordinates**
|
||
|
||
- Tong, P. (2021). Adjoint‐state traveltime tomography: Eikonal equation‐based methods and application to the Anza area in southern California. Journal of Geophysical Research: Solid Earth, 126(5), e2021JB021818. [DOI](https://doi.org/10.1029/2021JB021818).
|
||
|
||
- Tong, P. (2021). Adjoint‐state traveltime tomography for azimuthally anisotropic media and insight into the crustal structure of central California near Parkfield. Journal of Geophysical Research: Solid Earth, 126(10), e2021JB022365. [DOI](https://doi.org/10.1029/2021JB022365).
|
||
|
||
- **Regional tomography in Spherical coordinates**
|
||
|
||
- Chen, J., Chen, G., Nagaso, M., & Tong, P. (2023). Adjoint-state traveltime tomography for azimuthally anisotropic media in spherical coordinates. Geophysical Journal International, 234(1), 712-736. [DOI](https://doi.org/10.1093/gji/ggad093).
|
||
|
||
- **Teleseismic tomography in Spherical coordinates**
|
||
|
||
- Chen, J., Wu, S., Xu, M., Nagaso, M., Yao, J., Wang, K., ... & Tong, P. (2023). Adjoint‐state teleseismic traveltime tomography: Method and application to Thailand in Indochina Peninsula. Journal of Geophysical Research: Solid Earth, 128(12), e2023JB027348. [DOI](https://doi.org/10.1029/2023JB027348).
|
||
|
||
|
||
Thanks to the efficiency of an eikonal equation solver, the computation of the travel-time is very fast and requires less amount of computational resources.
|
||
As an input data for TomoATT is travel times at seismic stations, we can easily prepare a great amount of input data for the computation.
|
||
|
||
This library is developped to be used for modeling a very-large domain. For this purpose, 3-layer parallelization is applied, which are:
|
||
- layer 1: simulutaneous run parallelization (travel times for multiple seismic sources may be calculated simultaneously)
|
||
- layer 2: subdomain decomposition (If the number of computational nodes requires too large memory, we can separate the domain into subdomains and run each subdomain in a separate compute node)
|
||
- layer 3: sweeping parallelization (in each subdomain, sweeping layers are also parallelized)
|
||
|
||
The details of the parallelization method applied in this library are described in the paper [Miles Detrixhe and Frédéric Gibou (2016)](https://doi.org/10.1016/j.jcp.2016.06.023).
|
||
|
||
Regional events (sources within the global domain) and teleseismic events (sources outside the global domain) may be used for inversion.
|
||
|
||
## Quick installation
|
||
This library is available in the [conda-forge channel](https://anaconda.org/conda-forge/tomoatt). You can install it on personal computer by the following command:
|
||
``` bash
|
||
conda install -c conda-forge tomoatt pytomoatt
|
||
```
|
||
|
||
TomoATT is also capable of running on high-performance computing (HPC) systems and. Detailed installation instructions are described in the [installation manual](https://tomoatt.com/docs/GetStarted/Installation/Dependencies).
|
||
|
||
<!--
|
||
|
||
## dependency
|
||
- MPI v3.0 or higher
|
||
|
||
optinal:
|
||
- HDF5 (parallel IO needs to be enabled)
|
||
- h5py (used in pre/post processes examples)
|
||
|
||
## to clone
|
||
``` bash
|
||
git clone --recursive https://github.com/TomoATT/TomoATT.git
|
||
```
|
||
|
||
## to compile
|
||
``` bash
|
||
mkdir build && cd build
|
||
cmake .. && make -j 8
|
||
```
|
||
|
||
compile with cuda support
|
||
``` bash
|
||
cmake .. -DUSE_CUDA=True && make -j 8
|
||
``` -->
|
||
|
||
## to run an example
|
||
``` bash
|
||
mpirun -n 4 ./TOMOATT -i ./input_params.yml
|
||
```
|
||
Please check the [user manual](https://tomoatt.com/docs) and `examples` directory for the details.
|
||
|
||
|
||
<!-- ## FAQs.
|
||
### git submodule problem
|
||
In the case you will get the error message below:
|
||
``` text
|
||
-- /(path to your tomoatt)/TomoATT/external_libs/yaml-cpp/.git does not exist. Initializing yaml-cpp submodule ...
|
||
fatal: not a git repository (or any of the parent directories): .git
|
||
CMake Error at external_libs/CMakeLists.txt:9 (message):
|
||
/usr/bin/git submodule update --init dependencies/yaml-cpp failed with exit
|
||
code 128, please checkout submodules
|
||
Call Stack (most recent call first):
|
||
external_libs/CMakeLists.txt:13 (initialize_submodule)
|
||
```
|
||
|
||
You will need to update the submodule manuary by the command:
|
||
``` bash
|
||
git submodule update --init --recursive
|
||
```
|
||
|
||
In the case that `git submodule` command doesn't work in your environment, you need to download yaml-cpp library from [its repository](https://github.com/jbeder/yaml-cpp), and place it in the `external_libs` directory,
|
||
so that this directory is placed as `external_libs/yaml-cpp`. -->
|