An adaptive and distributed-memory parallel implementation of the immersed boundary (IB) method