From b13e7e174b1d91f616e6701c5208a3c1ff908bad Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Mon, 16 Aug 2021 21:31:17 +0200 Subject: [PATCH] avoid invalid DADF5 --- python/damask/_result.py | 6 +++++- python/tests/test_Result.py | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/python/damask/_result.py b/python/damask/_result.py index 6138e72fc..40547010a 100644 --- a/python/damask/_result.py +++ b/python/damask/_result.py @@ -567,9 +567,13 @@ class Result: formula = kwargs['formula'] for d in re.findall(r'#(.*?)#',formula): formula = formula.replace(f'#{d}#',f"kwargs['{d}']['data']") + data = eval(formula) + + if not hasattr(data,'shape') or data.shape[0] != kwargs[d]['data'].shape[0]: + raise ValueError("'{}' results in invalid shape".format(kwargs['formula'])) return { - 'data': eval(formula), + 'data': data, 'label': kwargs['label'], 'meta': { 'unit': kwargs['unit'], diff --git a/python/tests/test_Result.py b/python/tests/test_Result.py index 7126b4ab0..f6c5cf4c7 100644 --- a/python/tests/test_Result.py +++ b/python/tests/test_Result.py @@ -123,6 +123,10 @@ class TestResult: in_file = default.place('x') assert np.allclose(in_memory,in_file) + def test_add_calculation_invalid(self,default): + default.add_calculation('np.linalg.norm(#F#,axis=0)','wrong_dim') + assert default.get('wrong_dim') is None + def test_add_stress_Cauchy(self,default): default.add_stress_Cauchy('P','F') in_memory = mechanics.stress_Cauchy(default.place('P'), default.place('F'))