From 6d946de092b3b4119ac7d6b7c83c2a9ff69aba6d Mon Sep 17 00:00:00 2001 From: AHartmaier Date: Wed, 7 Feb 2024 17:43:05 +0100 Subject: [PATCH] Bugfixes --- src/kanapy/api.py | 6 ++++-- src/kanapy/grains.py | 9 ++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/kanapy/api.py b/src/kanapy/api.py index 62a94d66..55a8555d 100644 --- a/src/kanapy/api.py +++ b/src/kanapy/api.py @@ -248,8 +248,10 @@ def generate_grains(self): ind.append(i) igr.append(gblist[1]) if len(ind) > 0: - for i in ind.reverse(): - logging.warning(f'Removing {gba[i]} from GBarea as grain {igr[i]} does not exist.') + ind.reverse() + igr.reverse() + for j, i in enumerate(ind): + logging.warning(f'Removing {gba[i]} from GBarea as grain {igr[j]} does not exist.') gba.pop(i) self.geometry['GBarea'] = gba diff --git a/src/kanapy/grains.py b/src/kanapy/grains.py index dace0153..bdc7ec2e 100644 --- a/src/kanapy/grains.py +++ b/src/kanapy/grains.py @@ -509,17 +509,20 @@ def project_pts(pts, ctr, axis): for igr in mesh.grain_dict.keys(): if grains[igr]['Volume'] < 1.e-5: logging.warning(f'No tet assigned to grain {igr}.') - # remove grain from shared area list if grains[igr]['Simplices']: nf = len(grains[igr]['Simplices']) logging.warning(f'Grain {igr} contains {nf} tets, but no volume') + grains.pop(igr) + continue grains[igr]['eqDia'] = 2.0 * (3.0 * grains[igr]['Volume'] / (4.0 * np.pi)) ** (1.0 / 3.0) # Approximate smallest rectangular cuboid around points of grains # to analyse prolate (aspect ratio > 1) and oblate (a.r. < 1) particles correctly pts = grains[igr]['Points'] - if len(pts) == 0: - logging.warning(f'Grain {igr} with few vertices: {grains[igr]["Vertices"]}') + if len(pts) < 4: + logging.warning(f'Removing grain {igr} with few vertices: {grains[igr]["Vertices"]}') + grains.pop(igr) + continue dia = get_diameter(pts) # approx. of largest diameter of grain len_a = np.linalg.norm(dia) # length of largest side if len_a < 1.e-5: