def euler_integration(nodes, force_per_node, step_size):
    """Applies one step of Euler integration.

    Args:
      nodes: Ex5 tf.Tensor of [x, y, v_x, v_y, is_fixed] features for each node.
      force_per_node: Ex2 tf.Tensor of the force [f_x, f_y] acting on each edge.
      step_size: Scalar.

    Returns:
      A tf.Tensor of the same shape as `nodes` but with positions and velocities
          updated.
    """
    is_fixed = nodes[..., 4:5]
    # set forces to zero for fixed nodes
    force_per_node *= 1 - is_fixed
    new_vel = nodes[..., 2:4] + force_per_node * step_size
    return new_vel