There are two ways to use the code in here. 
The first uses the pynm_env.py definition of an "Env" class, which allows one to pass in lists of parameters for each layer 
in the model. It then manages interpolating these onto the meshes, and provides methods to get the
wavenumbers and the eigenfunctions. 

The second is to use get_modes from "raw_pykrak.py" 
This requires the layer parameters to be concatenated into single arrays.
The advantage of this is that the full model is then compiled with numba, 
so it can be plugged into optimization routines that can also be compiled with numba. 

Examples in examples/ folder are
-pekeris.py
  Simple pekeris waveguide. Illustrates use of the Env object to manage model runs.
-raw_pekeris.py 
  Same waveguide, but illustrates use of "raw_pykrak.py" for solution. 
-swell.py and raw_swell.py won't work and I should remove them...

File list:
-pynm_env.py
    The Env object used to manage all of the environmental parameters
    and to run the forward model, save results
-sturm_seq.py and wave_sturm_seq.py
    The numerical code for solving the sturm seq eigenvalue problem
-mesh_routines.py and wave_mesh_routines.py
    Code for creating meshes (for acoustic problema and internal wave)
- shooting_routines.py
    Shooting through layers
- inverse_iterations.py and wave_inverse_iteration.py
    Solving for eigenvectors from eigenvalues
-pressure_calc.py
    Some helper functions for computing pressure fields using the modal sum
-likelihoods.py
    Implementation of likelihood functions
-adjoint.py 
    Implementation of adjoint formulas in Thode and Kim (2004)
-group_pert.py
    Calculating modal group speed from perturbation theory
-attn_pert.py
    Calculating attenuation values using perturbation theory
-coupled_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 theory
misc.py
    Some numerical integrations
-pekeris_test.py 
    compare with KRAKEN (not tracked by git)
-pekeris_comp.py 
    compare with KRAKEN (not tracked by git)


