code: def simulate(
      vx, vy, num_time_steps, occlusion, ax=None, render=False
  ):
      occlusion = sigmoid(occlusion)
  
      # Disallow occlusion outside a certain area.
      mask = np.zeros((rows, cols))
      mask[10:30, 10:30] = 1.0
      occlusion = occlusion * mask
  
      # Initialize smoke bands.
      red_smoke = np.zeros((rows, cols))
      red_smoke[rows // 4 : rows // 2] = 1
      blue_smoke = np.zeros((rows, cols))
      blue_smoke[rows // 2 : 3 * rows // 4] = 1
  
      print("Running simulation...")
      vx, vy = project(vx, vy, occlusion)
      for t in range(num_time_steps):
          plot_matrix(ax, red_smoke, occlusion, blue_smoke, t, render)
          vx_updated = advect(vx, vx, vy)
          vy_updated = advect(vy, vx, vy)
          vx, vy = project(vx_updated, vy_updated, occlusion)
          red_smoke = advect(red_smoke, vx, vy)
          red_smoke = occlude(red_smoke, occlusion)
          blue_smoke = advect(blue_smoke, vx, vy)
          blue_smoke = occlude(blue_smoke, occlusion)
      plot_matrix(
          ax, red_smoke, occlusion, blue_smoke, num_time_steps, render
      )
      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 6 for calling a global function with example usage: simulate(vx, vy, num_time_steps, occlusion, ax, render) and returns: vx,  vy