>I just re-read the thread. I think there's a little confusion between the terms "processor" and "MPI process" here. You said "As a pre-processing step, each processor must figure out which other processors it must communicate with by virtue of sharing neighboring grid points." Did you mean "MPI process" instead of "processor"?
The code is designed to be run using only one MPI process per core/slot/whatever word you want to use. I believe what is happening here is that OMPI is launching all MPI processes on a single slot. This is why my code is freaking out and telling me that a slot is asking for information it already owns. So, in order to answer your second point:
>Secondly, if you're just running on a single machine with no scheduler and no hostile, you should be able to:
mpirun -np <whatever_you_want> your_program_name
When you get the "There are not enough slots available in the
system..." message, that usually means that *something* is telling Open
MPI a maximum number of processes that can be run, and your -np value is
greater than that. This is *usually* a scheduler, but can also be a
hostile and/or an environment variable or file-based MCA parameter.