DAMASK_EICMD/python/tests/test_Geom.py

85 lines
3.0 KiB
Python
Raw Normal View History

2019-11-23 17:29:41 +05:30
import copy
import os
import pytest
import numpy as np
from damask import Geom
def geom_equal(a,b):
return np.all(a.get_microstructure() == b.get_microstructure()) and \
np.all(a.get_size() == b.get_size()) and \
np.all(a.get_grid() == b.get_grid())
@pytest.fixture
def default():
"""Simple geometry."""
x=np.concatenate((np.ones(40,dtype=int),
np.arange(2,42),
np.ones(40,dtype=int)*2,
np.arange(1,41))).reshape((8,5,4))
return Geom(x,[8e-6,5e-6,4e-6])
@pytest.fixture
def reference_dir(reference_dir_base):
"""directory containing reference results."""
return os.path.join(reference_dir_base,'Geom')
class TestGeom:
def test_update(self,default):
modified = copy.deepcopy(default)
modified.update(
default.get_microstructure(),
default.get_size(),
default.get_origin()
)
assert geom_equal(modified,default)
def test_write_read_str(self,default,tmpdir):
default.to_file(str(tmpdir.join('default.geom')))
new = Geom.from_file(str(tmpdir.join('default.geom')))
assert geom_equal(new,default)
def test_write_read_file(self,default,tmpdir):
with open(tmpdir.join('default.geom'),'w') as f:
default.to_file(f)
with open(tmpdir.join('default.geom')) as f:
new = Geom.from_file(f)
assert geom_equal(new,default)
2019-11-25 13:58:59 +05:30
def test_pack(self,default,tmpdir):
default.to_file(tmpdir.join('default.geom'),pack=True)
new = Geom.from_file(tmpdir.join('default.geom'))
assert geom_equal(new,default)
def test_plain(self,default,tmpdir):
default.to_file(tmpdir.join('default.geom'),pack=False)
new = Geom.from_file(tmpdir.join('default.geom'))
assert geom_equal(new,default)
@pytest.mark.parametrize('directions,reflect',[
(['x'], False),
(['x','y','z'],True),
(['z','x','y'],False),
(['y','z'], False)])
def test_mirror(self,default,update,reference_dir,directions,reflect):
2019-11-23 17:29:41 +05:30
modified = copy.deepcopy(default)
modified.mirror(directions,reflect)
tag = 'directions={}_reflect={}'.format('-'.join(directions),reflect)
reference = os.path.join(reference_dir,'mirror_{}.geom'.format(tag))
if update: modified.to_file(reference)
assert geom_equal(modified,Geom.from_file(reference))
@pytest.mark.parametrize('stencil',[(1),(2),(3),(4)])
def test_clean(self,default,update,reference_dir,stencil):
modified = copy.deepcopy(default)
modified.clean(stencil)
tag = 'stencil={}'.format(stencil)
reference = os.path.join(reference_dir,'clean_{}.geom'.format(tag))
2019-11-23 17:29:41 +05:30
if update: modified.to_file(reference)
assert geom_equal(modified,Geom.from_file(reference))