making new mechanics functions available for DADF5
+ testing them
This commit is contained in:
parent
118c03c485
commit
5235c27ad0
|
@ -516,7 +516,7 @@ class DADF5():
|
||||||
self.__add_generic_pointwise(__add_calculation,requested,pass_through)
|
self.__add_generic_pointwise(__add_calculation,requested,pass_through)
|
||||||
|
|
||||||
|
|
||||||
def add_Cauchy(self,P='P',F='F'):
|
def add_Cauchy(self,F='F',P='P'):
|
||||||
"""
|
"""
|
||||||
Add Cauchy stress calculated from 1. Piola-Kirchhoff stress and deformation gradient.
|
Add Cauchy stress calculated from 1. Piola-Kirchhoff stress and deformation gradient.
|
||||||
|
|
||||||
|
@ -537,8 +537,7 @@ class DADF5():
|
||||||
'Unit': P['meta']['Unit'],
|
'Unit': P['meta']['Unit'],
|
||||||
'Description': 'Cauchy stress calculated from {} ({}) '.format(P['label'],
|
'Description': 'Cauchy stress calculated from {} ({}) '.format(P['label'],
|
||||||
P['meta']['Description'])+\
|
P['meta']['Description'])+\
|
||||||
'and deformation gradient {} ({})'.format(F['label'],
|
'and {} ({})'.format(F['label'],F['meta']['Description']),
|
||||||
F['meta']['Description']),
|
|
||||||
'Creator': 'dadf5.py:add_Cauchy v{}'.format(version)
|
'Creator': 'dadf5.py:add_Cauchy v{}'.format(version)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -814,8 +813,7 @@ class DADF5():
|
||||||
'Unit': P['meta']['Unit'],
|
'Unit': P['meta']['Unit'],
|
||||||
'Description': '2. Kirchhoff stress calculated from {} ({}) '.format(P['label'],
|
'Description': '2. Kirchhoff stress calculated from {} ({}) '.format(P['label'],
|
||||||
P['meta']['Description'])+\
|
P['meta']['Description'])+\
|
||||||
'and deformation gradient {} ({})'.format(F['label'],
|
'and {} ({})'.format(F['label'],F['meta']['Description']),
|
||||||
F['meta']['Description']),
|
|
||||||
'Creator': 'dadf5.py:add_PK2 v{}'.format(version)
|
'Creator': 'dadf5.py:add_PK2 v{}'.format(version)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -871,33 +869,31 @@ class DADF5():
|
||||||
self.__add_generic_pointwise(__addPole,requested,{'pole':pole})
|
self.__add_generic_pointwise(__addPole,requested,{'pole':pole})
|
||||||
|
|
||||||
|
|
||||||
def add_principal_components(self,x):
|
def add_rotational_part(self,F='F'):
|
||||||
"""
|
"""
|
||||||
Add principal components of symmetric tensor.
|
Add rotational part of a deformation gradient.
|
||||||
|
|
||||||
The principal components are sorted in descending order, each repeated according to its multiplicity.
|
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
x : str
|
F : str
|
||||||
Label of the dataset containing a symmetric tensor.
|
Label of the dataset containing a deformation gradient. Default value is ‘F’.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
def __add_principal_components(x):
|
def __add_rotational_part(F):
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'data': mechanics.principal_components(x['data']),
|
'data': mechanics.rotational_part(F['data']),
|
||||||
'label': 'lambda_{}'.format(x['label']),
|
'label': 'R({})'.format(F['label']),
|
||||||
'meta': {
|
'meta': {
|
||||||
'Unit': x['meta']['Unit'],
|
'Unit': F['meta']['Unit'],
|
||||||
'Description': 'Pricipal components of {} ({})'.format(x['label'],x['meta']['Description']),
|
'Description': 'Rotational part of {} ({})'.format(F['label'],F['meta']['Description']),
|
||||||
'Creator': 'dadf5.py:add_principal_components v{}'.format(version)
|
'Creator': 'dadf5.py:add_rotational_part v{}'.format(version)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
requested = [{'label':x,'arg':'x'}]
|
requested = [{'label':F,'arg':'F'}]
|
||||||
|
|
||||||
self.__add_generic_pointwise(__add_principal_components,requested)
|
self.__add_generic_pointwise(__add_rotational_part,requested)
|
||||||
|
|
||||||
|
|
||||||
def add_spherical(self,x):
|
def add_spherical(self,x):
|
||||||
|
@ -941,8 +937,8 @@ class DADF5():
|
||||||
F : str, optional
|
F : str, optional
|
||||||
Label of the dataset containing the deformation gradient. Default value is ‘F’.
|
Label of the dataset containing the deformation gradient. Default value is ‘F’.
|
||||||
t : {‘V’, ‘U’}, optional
|
t : {‘V’, ‘U’}, optional
|
||||||
Type of the polar decomposition, ‘V’ for right stretch tensor and ‘U’ for left stretch tensor.
|
Type of the polar decomposition, ‘U’ for right stretch tensor and ‘V’ for left stretch tensor.
|
||||||
Defaults value is ‘U’.
|
Default value is ‘U’.
|
||||||
m : float, optional
|
m : float, optional
|
||||||
Order of the strain calculation. Default value is ‘0.0’.
|
Order of the strain calculation. Default value is ‘0.0’.
|
||||||
|
|
||||||
|
@ -964,6 +960,37 @@ class DADF5():
|
||||||
self.__add_generic_pointwise(__add_strain_tensor,requested,{'t':t,'m':m})
|
self.__add_generic_pointwise(__add_strain_tensor,requested,{'t':t,'m':m})
|
||||||
|
|
||||||
|
|
||||||
|
def add_stretch_tensor(self,F='F',t='U'):
|
||||||
|
"""
|
||||||
|
Add stretch tensor calculated from a deformation gradient.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
F : str, optional
|
||||||
|
Label of the dataset containing the deformation gradient. Default value is ‘F’.
|
||||||
|
t : {‘V’, ‘U’}, optional
|
||||||
|
Type of the polar decomposition, ‘U’ for right stretch tensor and ‘V’ for left stretch tensor.
|
||||||
|
Default value is ‘U’.
|
||||||
|
|
||||||
|
"""
|
||||||
|
def __add_stretch_tensor(F,t):
|
||||||
|
|
||||||
|
return {
|
||||||
|
'data': mechanics.left_stretch(F['data']) if t == 'V' else mechanics.right_stretch(F['data']),
|
||||||
|
'label': '{}({})'.format(t,F['label']),
|
||||||
|
'meta': {
|
||||||
|
'Unit': F['meta']['Unit'],
|
||||||
|
'Description': '{} stretch tensor of {} ({})'.format('Left' if t == 'V' else 'Right',
|
||||||
|
F['label'],F['meta']['Description']),
|
||||||
|
'Creator': 'dadf5.py:add_stretch_tensor v{}'.format(version)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requested = [{'label':F,'arg':'F'}]
|
||||||
|
|
||||||
|
self.__add_generic_pointwise(__add_stretch_tensor,requested,{'t':t})
|
||||||
|
|
||||||
|
|
||||||
def __add_generic_pointwise(self,func,datasets_requested,extra_args={}):
|
def __add_generic_pointwise(self,func,datasets_requested,extra_args={}):
|
||||||
"""
|
"""
|
||||||
General function to add pointwise data.
|
General function to add pointwise data.
|
||||||
|
|
|
@ -48,7 +48,7 @@ class TestDADF5:
|
||||||
assert np.allclose(in_memory,in_file)
|
assert np.allclose(in_memory,in_file)
|
||||||
|
|
||||||
def test_add_Cauchy(self,default):
|
def test_add_Cauchy(self,default):
|
||||||
default.add_Cauchy('P','F')
|
default.add_Cauchy('F','P')
|
||||||
loc = {'F': default.get_dataset_location('F'),
|
loc = {'F': default.get_dataset_location('F'),
|
||||||
'P': default.get_dataset_location('P'),
|
'P': default.get_dataset_location('P'),
|
||||||
'sigma':default.get_dataset_location('sigma')}
|
'sigma':default.get_dataset_location('sigma')}
|
||||||
|
@ -74,7 +74,7 @@ class TestDADF5:
|
||||||
assert np.allclose(in_memory,in_file)
|
assert np.allclose(in_memory,in_file)
|
||||||
|
|
||||||
def test_add_eigenvalues(self,default):
|
def test_add_eigenvalues(self,default):
|
||||||
default.add_Cauchy('P','F')
|
default.add_Cauchy('F','P')
|
||||||
default.add_eigenvalues('sigma')
|
default.add_eigenvalues('sigma')
|
||||||
loc = {'sigma' :default.get_dataset_location('sigma'),
|
loc = {'sigma' :default.get_dataset_location('sigma'),
|
||||||
'lambda(sigma)':default.get_dataset_location('lambda(sigma)')}
|
'lambda(sigma)':default.get_dataset_location('lambda(sigma)')}
|
||||||
|
@ -83,7 +83,7 @@ class TestDADF5:
|
||||||
assert np.allclose(in_memory,in_file)
|
assert np.allclose(in_memory,in_file)
|
||||||
|
|
||||||
def test_add_eigenvectors(self,default):
|
def test_add_eigenvectors(self,default):
|
||||||
default.add_Cauchy('P','F')
|
default.add_Cauchy('F','P')
|
||||||
default.add_eigenvectors('sigma')
|
default.add_eigenvectors('sigma')
|
||||||
loc = {'sigma' :default.get_dataset_location('sigma'),
|
loc = {'sigma' :default.get_dataset_location('sigma'),
|
||||||
'v(sigma)':default.get_dataset_location('v(sigma)')}
|
'v(sigma)':default.get_dataset_location('v(sigma)')}
|
||||||
|
@ -92,7 +92,7 @@ class TestDADF5:
|
||||||
assert np.allclose(in_memory,in_file)
|
assert np.allclose(in_memory,in_file)
|
||||||
|
|
||||||
def test_add_maximum_shear(self,default):
|
def test_add_maximum_shear(self,default):
|
||||||
default.add_Cauchy('P','F')
|
default.add_Cauchy('F','P')
|
||||||
default.add_maximum_shear('sigma')
|
default.add_maximum_shear('sigma')
|
||||||
loc = {'sigma' :default.get_dataset_location('sigma'),
|
loc = {'sigma' :default.get_dataset_location('sigma'),
|
||||||
'max_shear(sigma)':default.get_dataset_location('max_shear(sigma)')}
|
'max_shear(sigma)':default.get_dataset_location('max_shear(sigma)')}
|
||||||
|
@ -108,6 +108,24 @@ class TestDADF5:
|
||||||
in_file = default.read_dataset(loc['|F|_1'],0)
|
in_file = default.read_dataset(loc['|F|_1'],0)
|
||||||
assert np.allclose(in_memory,in_file)
|
assert np.allclose(in_memory,in_file)
|
||||||
|
|
||||||
|
def test_add_PK2(self,default):
|
||||||
|
default.add_PK2('F','P')
|
||||||
|
loc = {'F':default.get_dataset_location('F'),
|
||||||
|
'P':default.get_dataset_location('P'),
|
||||||
|
'S':default.get_dataset_location('S')}
|
||||||
|
in_memory = mechanics.PK2(default.read_dataset(loc['F'],0),
|
||||||
|
default.read_dataset(loc['P'],0))
|
||||||
|
in_file = default.read_dataset(loc['S'],0)
|
||||||
|
assert np.allclose(in_memory,in_file)
|
||||||
|
|
||||||
|
def test_add_rotational_part(self,default):
|
||||||
|
default.add_rotational_part('F')
|
||||||
|
loc = {'F': default.get_dataset_location('F'),
|
||||||
|
'R(F)': default.get_dataset_location('R(F)')}
|
||||||
|
in_memory = mechanics.rotational_part(default.read_dataset(loc['F'],0))
|
||||||
|
in_file = default.read_dataset(loc['R(F)'],0)
|
||||||
|
assert np.allclose(in_memory,in_file)
|
||||||
|
|
||||||
def test_add_spherical(self,default):
|
def test_add_spherical(self,default):
|
||||||
default.add_spherical('P')
|
default.add_spherical('P')
|
||||||
loc = {'P': default.get_dataset_location('P'),
|
loc = {'P': default.get_dataset_location('P'),
|
||||||
|
@ -115,3 +133,19 @@ class TestDADF5:
|
||||||
in_memory = mechanics.spherical_part(default.read_dataset(loc['P'],0)).reshape(-1,1)
|
in_memory = mechanics.spherical_part(default.read_dataset(loc['P'],0)).reshape(-1,1)
|
||||||
in_file = default.read_dataset(loc['p_P'],0)
|
in_file = default.read_dataset(loc['p_P'],0)
|
||||||
assert np.allclose(in_memory,in_file)
|
assert np.allclose(in_memory,in_file)
|
||||||
|
|
||||||
|
def test_add_stretch_right(self,default):
|
||||||
|
default.add_stretch_tensor('F','U')
|
||||||
|
loc = {'F': default.get_dataset_location('F'),
|
||||||
|
'U(F)': default.get_dataset_location('U(F)')}
|
||||||
|
in_memory = mechanics.right_stretch(default.read_dataset(loc['F'],0))
|
||||||
|
in_file = default.read_dataset(loc['U(F)'],0)
|
||||||
|
assert np.allclose(in_memory,in_file)
|
||||||
|
|
||||||
|
def test_add_stretch_left(self,default):
|
||||||
|
default.add_stretch_tensor('F','V')
|
||||||
|
loc = {'F': default.get_dataset_location('F'),
|
||||||
|
'V(F)': default.get_dataset_location('V(F)')}
|
||||||
|
in_memory = mechanics.left_stretch(default.read_dataset(loc['F'],0))
|
||||||
|
in_file = default.read_dataset(loc['V(F)'],0)
|
||||||
|
assert np.allclose(in_memory,in_file)
|
||||||
|
|
Loading…
Reference in New Issue