#! /usr/bin/env python import numpy, sys, os, getopt, io, re, math from numpy import ndarray (ni,nj,mi,mj) = [ int(i) for i in sys.argv[1:5] ] ranks=ndarray(ni*nj*mi*mj) ranks[:]=range(0,ni*nj*mi*mj) ranks=ranks.reshape([nj,mj,ni,mi]) rankorder=[ list() for n in range(ni*nj) ] print('# Rank reordering for %dx%d grid of compute nodes, %dx%d per node'%( ni,nj,mi,mj)) print('wrf_%dx%d_%dx%d = ['%(ni,nj,mi,mj)) fmt='%%%dd'%int(math.ceil(math.log(ni*nj*mi*mj,9.9999))) for inj in range(nj): for imj in range(mj): for ini in range(ni): for imi in range(mi): inode=inj*ni+ini assert(inode%d*%d=%d'%( inode,len(rankorder[inode]),mi,mj,mi*mj)) for ro in rankorder: print(('['+','.join([ fmt%i for i in ro ])+'],')) print(']')