def grid_from_description(description): p = description.split(";") fdimensions = [int(x) for x in p[0].strip("[]").split(",")] precision = gpt.str_to_precision(p[1]) cb = str_to_checkerboarding(p[2], len(fdimensions)) obj = None return grid(fdimensions, precision, cb, obj)
def __init__(self, first, second=None, third=None, fourth=None): if type(first) == str: # create from description p = first.split(";") fdimensions = [int(x) for x in p[0].strip("[]").split(",")] precision = gpt.str_to_precision(p[1]) cb = str_to_checkerboarding(p[2]) else: fdimensions = first precision = second if third is None: cb = full else: cb = third obj = fourth self.fdimensions = fdimensions self.gsites = np.prod(self.fdimensions) self.precision = precision self.cb = cb self.nd = len(self.fdimensions) if obj == None: self.obj = cgpt.create_grid(fdimensions, precision, cb) else: self.obj = obj # processor is mpi rank, may not be lexicographical (cartesian) rank self.processor, self.Nprocessors, self.processor_coor, self.gdimensions, self.ldimensions = cgpt.grid_get_processor( self.obj) self.mpi = [ self.gdimensions[i] // self.ldimensions[i] for i in range(self.nd) ]
def grid_from_description(description): p = description.split(";") assert len(p) % 3 == 0 parent = None for i in reversed(range(len(p) // 3)): fdimensions = [int(x) for x in p[3 * i + 0].strip("[]").split(",")] precision = gpt.str_to_precision(p[3 * i + 1]) cb = str_to_checkerboarding(p[3 * i + 2], len(fdimensions)) obj = None mpi = None if parent is None else parent.mpi parent = grid(fdimensions, precision, cb, obj, parent=parent, mpi=mpi) return parent