using mpi portable parallel programming with the message passing interface scientific and engineering computation