From 50d7842dbef3a6adebac3e613743404b11bfc875 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Fri, 31 Jul 2020 16:50:01 +0200 Subject: [PATCH] more tests --- python/damask/_result.py | 3 ++- python/tests/test_Result.py | 34 +++++++++++++++++++++++++++------- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/python/damask/_result.py b/python/damask/_result.py index 152e648a5..45a0c2056 100644 --- a/python/damask/_result.py +++ b/python/damask/_result.py @@ -509,7 +509,7 @@ class Result: else: return dataset - + @property def cell_coordinates(self): """Return initial coordinates of the cell centers.""" if self.structured: @@ -518,6 +518,7 @@ class Result: with h5py.File(self.fname,'r') as f: return f['geometry/x_c'][()] + @property def node_coordinates(self): """Return initial coordinates of the cell centers.""" if self.structured: diff --git a/python/tests/test_Result.py b/python/tests/test_Result.py index 20c27649b..c6dbfb5bd 100644 --- a/python/tests/test_Result.py +++ b/python/tests/test_Result.py @@ -10,13 +10,14 @@ import h5py import damask from damask import Result from damask import mechanics +from damask import grid_filters @pytest.fixture def default(tmp_path,reference_dir): """Small Result file in temp location for modification.""" fname = '12grains6x7x8_tensionY.hdf5' - shutil.copy(os.path.join(reference_dir,fname),tmp_path) - f = Result(os.path.join(tmp_path,fname)) + shutil.copy(reference_dir/fname,tmp_path) + f = Result(tmp_path/fname) f.pick('times',20.0) return f @@ -24,13 +25,13 @@ def default(tmp_path,reference_dir): def single_phase(tmp_path,reference_dir): """Single phase Result file in temp location for modification.""" fname = '6grains6x7x8_single_phase_tensionY.hdf5' - shutil.copy(os.path.join(reference_dir,fname),tmp_path) - return Result(os.path.join(tmp_path,fname)) + shutil.copy(reference_dir/fname,tmp_path) + return Result(tmp_path/fname) @pytest.fixture def reference_dir(reference_dir_base): """Directory containing reference results.""" - return os.path.join(reference_dir_base,'Result') + return reference_dir_base/'Result' class TestResult: @@ -98,8 +99,17 @@ class TestResult: in_file = default.read_dataset(loc['|Fe|'],0) assert np.allclose(in_memory,in_file) - def test_add_calculation(self,default): - default.add_calculation('x','2.0*np.abs(#F#)-1.0','-','my notes') + @pytest.mark.parametrize('mode',['direct','function']) + def test_add_calculation(self,default,mode): + def my_func(field): + return 2.0*np.abs(field)-1.0 + + if mode == 'direct': + default.add_calculation('x','2.0*np.abs(#F#)-1.0','-','my notes') + else: + default.enable_user_function(my_func) + default.add_calculation('x','my_func(#F#)','-','my notes') + loc = {'F': default.get_dataset_location('F'), 'x': default.get_dataset_location('x')} in_memory = 2.0*np.abs(default.read_dataset(loc['F'],0))-1.0 @@ -312,6 +322,16 @@ class TestResult: with pytest.raises(PermissionError): default.rename('P','another_new_name') + @pytest.mark.parametrize('mode',['cell','node']) + def test_coordinates(self,default,mode): + if mode == 'cell': + a = grid_filters.cell_coord0(default.grid,default.size,default.origin) + b = default.cell_coordinates.reshape(tuple(default.grid)+(3,),order='F') + elif mode == 'node': + a = grid_filters.node_coord0(default.grid,default.size,default.origin) + b = default.node_coordinates.reshape(tuple(default.grid+1)+(3,),order='F') + assert np.allclose(a,b) + @pytest.mark.parametrize('output',['F',[],['F','P']]) def test_vtk(self,tmp_path,default,output): os.chdir(tmp_path)