Exemple #1
0
def calculate_partition_weights():
    partition_weights = numpy.zeros(num_partitions, dtype=float)

    for i in range(num_partitions):
        filename = 'Parallel-NP16-flredecomp-2d-fieldweighted_CoordinateMesh_%d.msh' % i
        mesh = gmshtools.ReadMsh(filename)
        # Sum weights across each partition.
        # Note prognostic region ID == 27: weighting (in .flml) == 1.0
        # Prescribed regions ID == 24, 30: weighting (in .flml) == 0.01
        for j in range(mesh.VolumeElementCount()):
            ids = mesh.GetVolumeElement(j).GetIds()
            if (ids[0] == 27):
                partition_weights[i] = partition_weights[i] + 1.0
            else:
                partition_weights[i] = partition_weights[i] + 0.005

    min_weight = min(partition_weights)
    max_weight = max(partition_weights)
    max_load_imbalance = max_weight / min_weight

    return max_load_imbalance
Exemple #2
0
    "To rescale the z-dimension by a factor of 1000,\n"
    "%prog '(x,y,1000*z)' mesh.\n")

(options, argv) = optparser.parse_args()

if len(argv) != 2:
    optparser.print_help()
    sys.exit(1)

transformation = argv[0]
mesh_name = argv[1]

# make all definitions of the math module available in
# the transformation expression.
globals = math.__dict__

mesh = gmshtools.ReadMsh(mesh_name + '.msh')
dim = mesh.GetDim()


def remap(coords):
    globals['x'] = coords[0]
    globals['y'] = coords[1]
    if dim == 3:
        globals['z'] = coords[2]
    return eval(transformation, globals)


mesh.RemapNodeCoords(remap)
gmshtools.WriteMsh(mesh, mesh_name + '.msh')
Exemple #3
0
if len(args) < 2:
    debug.FatalError("GMSH base name and vtu name required")
elif len(args) > 2:
    debug.FatalError("Unrecognised trailing argument")
meshBasename = args[0]
vtuFilename = args[1]

possibleMeshBasenames = glob.glob(meshBasename + "_?*.msh")
meshBasenames = []
meshIds = []
for possibleMeshBasename in possibleMeshBasenames:
    id = possibleMeshBasename[len(meshBasename) + 1:-4]
    try:
        id = int(id)
    except ValueError:
        continue

    meshBasenames.append(possibleMeshBasename[:-4])
    meshIds.append(id)

vtuBasename = os.path.basename(vtuFilename[:-len(vtuFilename.split(".")[-1]) -
                                           1])
vtuExt = vtuFilename[-len(vtuFilename.split(".")[-1]):]

vtu = vtktools.vtu(vtuFilename)
for i, meshBasename in enumerate(meshBasenames):
    debug.dprint("Processing mesh partition " + meshBasename)
    meshVtu = gmshtools.ReadMsh(meshBasename).ToVtu(includeSurface=False)
    partition = vtktools.RemappedVtu(vtu, meshVtu)
    partition.Write(vtuBasename + "_" + str(meshIds[i]) + "." + vtuExt)