Best way to handle "wrapped" array accesses?

I've seen a few references on this, but hadn't found a proper solution... I'm doing Lattice-Boltzmann simulations with periodic boundary conditions, which always necessarily involve either padding the edges and doing additional steps, or making a "wrapped" array (for example, if I have an array that's N rows by M columns, and cells are moving right, I then make a "wrapped" array a la "D = hstack( A[:,0:-1], A[:,-1:] )" (creating a temporary) and adding them. I'd like to avoid the temporary and still make the operation as fast as possible. A really elegant solution would be a "wrapped array" subclass that would automatically handle the indexing (C = A[:,1:M+1] + B), but I'm not certain how friendly the array class is with subclassing. What's the best way to handle this? Am I pretty much stuck with temporaries or hacked functions ("add_wrapped(A, offset, B, C)")? (It's probably a moot point in the long term, as once things get big I will have to use the cluster, which is probably not SciPy-friendly and it'll likely be a bit before I can convince the sys admin to let me play outside the "installed software" boundaries. But now I just want to know). Thanks, -->VPutz
participants (1)
-
Victor Putz