code: def empy_hankel(ftype, zsrc, zrec, res, freqtime, depth=None, aniso=None,
                  epermH=None, epermV=None, mpermH=None, mpermV=None,
                  htarg=None, verblhs=0, verbrhs=0):
      r
      if isinstance(ftype, list):
          out = []
          for f in ftype:
              out.append(empy_hankel(f, zsrc, zrec, res, freqtime, depth, aniso,
                                     epermH, epermV, mpermH, mpermV, htarg,
                                     verblhs, verbrhs))
          return out
      model = {'src': [0, 0, zsrc],
               'depth': depth,
               'res': res,
               'aniso': aniso,
               'epermH': epermH,
               'epermV': epermV,
               'mpermH': mpermH,
               'mpermV': mpermV}
      if ftype == 'j0':
          model['ab'] = 11
          x = 1/np.sqrt(2)
          y = 1/np.sqrt(2)
      elif ftype == 'j1':
          model['ab'] = 31
          x = 1
          y = 0
      elif ftype == 'j2':
          model['ab'] = 12
          x = 1/np.sqrt(2)
          y = 1/np.sqrt(2)
      def rhs(r):
          out = dipole(rec=[r*x, r*y, zrec], ht='qwe', xdirect=True,
                       verb=verbrhs, htarg=htarg, freqtime=freqtime, **model)
          return out
      def lhs(k):
          lhs0, lhs1 = dipole_k(rec=[x, y, zrec], wavenumber=k, verb=verblhs,
                                freq=freqtime, **model)
          if ftype == 'j0':
              return lhs0
          elif ftype == 'j1':
              return lhs1
          elif ftype == 'j2':
              return (lhs0, lhs1)
      return Ghosh(ftype, lhs, rhs)