Python implementation of normal mode solver for underwater acoustic propagation. This implementation is developed by Hunter Akins from Scripps Institution of Oceanography, UC San Diego. I use this code for KRAKEN understanding.
More or less a translation of Michael Porter's KRAKEN. Some small differences:
- Author continues to do bisection and Brent for all meshes instead of switching to secant method with deflation
- Author does not have partial pivoting in his inverse iteration tridiagonal solver (at this point)
A big difference:
- Elastic layers are not supported
File list:
pynm_env.py
The Env object used to manage all of the environmental parameters and to run the forward model, save resultssturm_seq.py
The numerical code for solving the sturm seq eigenvalue problemmesh_routines.py
Code for creating meshesshooting_routines.py
Shooting through layersinverse_iterations.py
Solving for eigenvectors from eigenvaluespressure_calc.py
Some helper functions for computing pressure fields using the modal sumgroup_pert.py
Calculating modal group speed from perturbation theoryattn_pert.py
Calculating attenuation values using perturbation theorycoupled_modes.py
Coupled mode field calc (in work)env_pert.py
PertEnv object, inherits Env. Adds some extra methods for managing making changes to the Env using parameterizations. Also computes first order corrections to wavenumbers using perturbation theorymisc.py
Some numerical integrationspekeris_test.py
compare with KRAKEN (not tracked by git)pekeris_comp.py
compare with KRAKEN (not tracked by git)