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.pyThe Env object used to manage all of the environmental parameters and to run the forward model, save resultssturm_seq.pyThe numerical code for solving the sturm seq eigenvalue problemmesh_routines.pyCode for creating meshesshooting_routines.pyShooting through layersinverse_iterations.pySolving for eigenvectors from eigenvaluespressure_calc.pySome helper functions for computing pressure fields using the modal sumgroup_pert.pyCalculating modal group speed from perturbation theoryattn_pert.pyCalculating attenuation values using perturbation theorycoupled_modes.pyCoupled mode field calc (in work)env_pert.pyPertEnv 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.pySome numerical integrationspekeris_test.pycompare with KRAKEN (not tracked by git)pekeris_comp.pycompare with KRAKEN (not tracked by git)
