Skip to content
/ petscinv Public

Tomography solver based on the PETSc library written in Fortran

Notifications You must be signed in to change notification settings

auerl/petscinv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PETScinv

                                     _|                          _|
               _|_|_|      _|_|    _|_|_|_|    _|_|_|    _|_|_|      _|_|_|    _|      _|
               _|    _|  _|_|_|_|    _|      _|_|      _|        _|  _|    _|  _|      _|
               _|    _|  _|          _|          _|_|  _|        _|  _|    _|    _|  _|
               _|_|_|      _|_|_|      _|_|  _|_|_|      _|_|_|  _|  _|    _|      _|
               _|
               _|

PETScinv solves global tomographic imaging problems in parallel using the PETSc component KSP. The scalable linear equations solvers (KSP) module provides an easy-to-use interface to the combination of a Krylov subspace iterative method and a preconditioner (in the KSP and PC components, respectively) or a sequential direct solver.

The code currently only supports orthogonal, curvilinear hexahedral basis functions (spherical sections or voxels), but adding modules to treat other parametization strategies (splines, spherical harmonics, wavelets) to discretize the model space, should be easy to add. One can account for different regularization strategies, such as roughness minimization or norm minimization. Tomography results can be exported in a simple ASCII format or as netcdf files, together with an .xdmf file, ready to be explored with ParaView.

Quick start

The code is easy to run. Install on (fat memory) compute node using

git clone http://github.com/auerl/petscinv.git

Make sure that PETSc library is installed (on HPC systems this is often a standard library that you can load via the module environment and commands like module load petsc. We have tested the code with GCC and the Intel Compiler Collection. Compile the code with make. Alongside with the code comes some ray-theoretical tomography submatrices for a smallish dataset. Inverting this dataset using a parallel implementation of the GMRES algorithm can by done by typing run_petscinv, or commands like

mpirun -n 100 ./petscinv \
    -matrix_schedule 'samples/schedule' \
    -inparam_file 'samples/inparam' \
    -inversion_parameters 'vsh,vsv' \
    -reference_model 'prem_ani' \
    -number_of_layers 21 \
    -equatorial_increment 5.0 \
    -project_id 'INV01' \
    -output_format 'ascii' \
    -solution_type 'normal' \
    -ksp_monitor \
    -grouped_varr \
    -ksp_type gmres

Please see the documentation for our toolbox flexinv to find out how to assemble ray-theoretical or waveform based tomography matrices for realistic imaging problems.

About

Tomography solver based on the PETSc library written in Fortran

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published