code: def project(vx, vy, occlusion):
      """Project the velocity field to be approximately mass-conserving,
      using a few iterations of Gauss-Seidel."""
      p = np.zeros(vx.shape)
      div = -0.5 * (
          np.roll(vx, -1, axis=1)
          - np.roll(vx, 1, axis=1)
          + np.roll(vy, -1, axis=0)
          - np.roll(vy, 1, axis=0)
      )
      div = make_continuous(div, occlusion)
  
      for k in range(50):
          p = (
              div
              + np.roll(p, 1, axis=1)
              + np.roll(p, -1, axis=1)
              + np.roll(p, 1, axis=0)
              + np.roll(p, -1, axis=0)
          ) / 4.0
          p = make_continuous(p, occlusion)
  
      vx = vx - 0.5 * (np.roll(p, -1, axis=1) - np.roll(p, 1, axis=1))
      vy = vy - 0.5 * (np.roll(p, -1, axis=0) - np.roll(p, 1, axis=0))
  
      vx = occlude(vx, occlusion)
      vy = occlude(vy, occlusion)
      return vx, vy
  
file_path: autograd/examples/fluidsim/wing.py
imports: from __future__ import absolute_import
  from __future__ import print_function
  from builtins import range
  import autograd.numpy
  from autograd import value_and_grad
  from scipy.optimize import minimize
  import matplotlib.pyplot
  import os
label_desc: Use image node_id 2 for calling a global function with example usage: project(vx, vy, occlusion) and returns: vx,  vy