Skip to content

Commit 3510aea

Browse files
authored
Merge pull request #1291 from nschloe/flac-fix2
various flac fixes
2 parents 7f41c04 + 60f0e54 commit 3510aea

File tree

2 files changed

+29
-23
lines changed

2 files changed

+29
-23
lines changed

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[metadata]
22
name = meshio
3-
version = 5.3.1
3+
version = 5.3.2
44
author = Nico Schlömer et al.
55
author_email = [email protected]
66
description = I/O for many mesh formats

src/meshio/flac3d/_flac3d.py

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,34 @@ def split_f_z(mesh):
385385
if not all(item is None for item in value)
386386
}
387387

388+
# Right now, the zsets contain indices into the corresponding cell block.
389+
# FLAC3D expects _global_ indices. Update.
390+
cell_block_sizes = [len(cb) for cb in zcells]
391+
for key, data in zsets.items():
392+
gid = 0
393+
for n, block in zip(cell_block_sizes, data):
394+
block += gid
395+
gid += n
396+
397+
# TODO not sure if fcells and zcells share a common global index
398+
cell_block_sizes = [len(cb) for cb in fcells]
399+
for key, data in fsets.items():
400+
gid = 0
401+
for n, block in zip(cell_block_sizes, data):
402+
block += gid
403+
gid += n
404+
405+
for label, values in zsets.items():
406+
zsets[label] = np.concatenate(values)
407+
for label, values in fsets.items():
408+
fsets[label] = np.concatenate(values)
409+
410+
# flac3d indices start at 1
411+
for label, values in zsets.items():
412+
zsets[label] += 1
413+
for label, values in fsets.items():
414+
fsets[label] += 1
415+
388416
return zcells, fcells, zsets, fsets
389417

390418

@@ -397,28 +425,6 @@ def write(filename, mesh: Mesh, float_fmt: str = ".16e", binary: bool = False):
397425
# split into face/zone data
398426
zcells, fcells, zsets, fsets = split_f_z(mesh)
399427

400-
# elif mesh.cell_data:
401-
# print(mesh)
402-
# # TODO convert cell_data to cell_sets
403-
# exit(1)
404-
# key, other = _pick_first_int_data(mesh.cell_data)
405-
# if key:
406-
# materials = np.concatenate(mesh.cell_data[key])
407-
# if other:
408-
# warn(
409-
# "FLAC3D can only write one cell data array. "
410-
# f'Picking {key}, skipping {", ".join(other)}.'
411-
# )
412-
413-
# Translate the material array from meshio.cell_set data to a
414-
# dictionary with labels as keys.
415-
if zsets is not None:
416-
for label, values in zsets.items():
417-
zsets[label] = np.concatenate(values)
418-
if fsets is not None:
419-
for label, values in fsets.items():
420-
fsets[label] = np.concatenate(values)
421-
422428
mode = "wb" if binary else "w"
423429
with open_file(filename, mode) as f:
424430
if binary:

0 commit comments

Comments
 (0)