code: def wave_at_location(self, l):
          
          cterm = 1j * self._wave_nums[l.index] * l.depth_within
  
          if l.wave_field == WaveField.within:
              return (self._waves_a[l.index] * np.exp(cterm) +
                      self._waves_b[l.index] * np.exp(-cterm))
          elif l.wave_field == WaveField.outcrop:
              return 2 * self._waves_a[l.index] * np.exp(cterm)
          elif l.wave_field == WaveField.incoming_only:
              return self._waves_a[l.index] * np.exp(cterm)
          else:
              raise NotImplementedError
docs: Compute the wave field at specific location.
  
          Parameters
          ----------
          l : site.Location
              :class:`site.Location` of the input
  
          Returns
          -------
          `np.ndarray`
              Amplitude and phase of waves