PETSc - Portable, Extensible Toolkit for Scientific Computation
Here you find an example of C + PETSc implementation solving acoustic wave equation in 3D. Krylov methods are used to find iteratively approximate solution of Ax=b
- Finite-Differences in Time Domain (FDTD)
- Implicit time stepping
- O(2,4)
- Schemes derived from Taylor series:
- in space [-1:16:-30:16:-1]/12dx2
- in time [2:-5:4:-1]/dt2
- Isotropic
- Homogeneous
- Dirichlet boundary conditions
PETSc has to be installed. Make sure that PETSC_DIR and PETSC_LIB environmental libraries are set
make all
./run_O22.sh
or
./run_O24.sh
Runtime options and number of processors could be changed in shell scripts. Changing flags in the code or from runtime one can save and plot either the whole wavefields or just seismograms at receiver positions.
RUNTIME OPTIONS
-vel float - propagation velocity [km/s]
-xmax float - model dimentions [km]
-ymax float
-zmax float
-dt float - time step [sec]
-tmax float - max simulation time
-isrc int - source location [grid points]
-jsrc int
-ksrc int
-f0 float - dominant frequency of Ricker wavelet [Hz]
-nrec int - number of receivers on diagonal
All options listed above have default values so all of them could be skipped for a trial run
EXAMPLE
mpirun -n 2 ./p3D_acoustic_O24.out -xmax 8.0 -ymax 8.0 -zmax 8.0 -vel 3.5 -pc_type asm -pc_asm_overlap 2 -da_refine 1 -ksp_converged_reason
/mfiles - matlab routines for seismograms and wavefields visualisation
/doc - documentation, figures and slides
/seism - seismigrams in .txt
/wavefields - wavefields in .m