Merge remote-tracking branch 'origin/output-rename' into internal-restructure
This commit is contained in:
commit
f909aee835
|
@ -1,4 +1,4 @@
|
|||
Air:
|
||||
FreeSurface:
|
||||
lattice: aP
|
||||
mechanical:
|
||||
output: [F, P, F_e, F_p, L_p]
|
||||
|
|
|
@ -20,9 +20,6 @@ Magnesium:
|
|||
xi_0_sl: [10.0e6, 55.0e6, 0, 60.0e6, 0.0, 60.0e6]
|
||||
xi_inf_sl: [40.0e6, 135.0e6, 0, 150.0e6, 0.0, 150.0e6]
|
||||
xi_0_tw: [40e6, 0.0, 0.0, 60.0e6]
|
||||
####################################################
|
||||
# open for discussion
|
||||
####################################################
|
||||
a_sl: 2.25
|
||||
dot_gamma_0_sl: 0.001
|
||||
dot_gamma_0_tw: 0.001
|
||||
|
|
|
@ -8,7 +8,7 @@ cpTi:
|
|||
output: [F, P, F_e, F_p, L_p, O]
|
||||
elastic: {C_11: 160.0e9, C_12: 90.0e9, C_13: 66.0e9, C_33: 181.7e9, C_44: 46.5e9, type: hooke}
|
||||
plastic:
|
||||
N_sl: [3, 3, 0, 0, 12]
|
||||
N_sl: [3, 3, 0, 6, 12]
|
||||
a_sl: 2.0
|
||||
dot_gamma_0_sl: 0.001
|
||||
h_0_sl_sl: 200e6
|
||||
|
|
|
@ -65,7 +65,7 @@ if filenames == []: parser.error('no input file specified.')
|
|||
for name in filenames:
|
||||
damask.util.report(scriptName,name)
|
||||
|
||||
geom = damask.Grid.load_DREAM3D(name,options.basegroup,options.pointwise)
|
||||
geom = damask.Grid.load_DREAM3D(name,'FeatureIds')
|
||||
damask.util.croak(geom)
|
||||
|
||||
geom.save_ASCII(os.path.splitext(name)[0]+'.geom')
|
||||
|
|
|
@ -27,12 +27,14 @@ class Colormap(mpl.colors.ListedColormap):
|
|||
|
||||
References
|
||||
----------
|
||||
[1] DAMASK colormap theory
|
||||
https://www.kennethmoreland.com/color-maps/ColorMapsExpanded.pdf
|
||||
[2] DAMASK colormaps first use
|
||||
https://doi.org/10.1016/j.ijplas.2012.09.012
|
||||
[3] Matplotlib colormaps overview
|
||||
https://matplotlib.org/tutorials/colors/colormaps.html
|
||||
K. Moreland, Proceedings of the 5th International Symposium on Advances in Visual Computing, 2009
|
||||
https://doi.org/10.1007/978-3-642-10520-3_9
|
||||
|
||||
P. Eisenlohr et al., International Journal of Plasticity 46:37–53, 2013
|
||||
https://doi.org/10.1016/j.ijplas.2012.09.012
|
||||
|
||||
Matplotlib colormaps overview
|
||||
https://matplotlib.org/tutorials/colors/colormaps.html
|
||||
|
||||
"""
|
||||
|
||||
|
@ -524,7 +526,7 @@ class Colormap(mpl.colors.ListedColormap):
|
|||
|
||||
References
|
||||
----------
|
||||
http://www.ryanjuckett.com/programming/rgb-color-space-conversion
|
||||
https://www.easyrgb.com/en/math.php
|
||||
|
||||
"""
|
||||
rgb_lin = np.dot(np.array([
|
||||
|
@ -544,7 +546,7 @@ class Colormap(mpl.colors.ListedColormap):
|
|||
|
||||
References
|
||||
----------
|
||||
http://www.ryanjuckett.com/programming/rgb-color-space-conversion
|
||||
https://www.easyrgb.com/en/math.php
|
||||
|
||||
"""
|
||||
rgb_lin = np.where(rgb>0.04045,((rgb+0.0555)/1.0555)**2.4,rgb/12.92)
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
import os.path
|
||||
|
||||
import numpy as np
|
||||
import h5py
|
||||
|
||||
from . import Config
|
||||
from . import Rotation
|
||||
|
@ -49,7 +52,7 @@ class ConfigMaterial(Config):
|
|||
@staticmethod
|
||||
def from_table(table,**kwargs):
|
||||
"""
|
||||
Load from an ASCII table.
|
||||
Generate from an ASCII table.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
|
@ -85,7 +88,7 @@ class ConfigMaterial(Config):
|
|||
phase: {}
|
||||
|
||||
"""
|
||||
kwargs_ = {k:table.get(v) for k,v in kwargs.items()}
|
||||
kwargs_ = {k:table.get(v) for k,v in kwargs.items()}
|
||||
|
||||
_,idx = np.unique(np.hstack(list(kwargs_.values())),return_index=True,axis=0)
|
||||
idx = np.sort(idx)
|
||||
|
@ -94,6 +97,79 @@ class ConfigMaterial(Config):
|
|||
return ConfigMaterial().material_add(**kwargs_)
|
||||
|
||||
|
||||
@staticmethod
|
||||
def load_DREAM3D(fname,
|
||||
grain_data=None,cell_data=None,cell_ensemble_data='CellEnsembleData',
|
||||
phases='Phases',Euler_angles='EulerAngles',phase_names='PhaseName',
|
||||
base_group=None):
|
||||
"""
|
||||
Load DREAM.3D (HDF5) file.
|
||||
|
||||
Data in DREAM.3D files can be stored per cell ('CellData')
|
||||
and/or per grain ('Grain Data'). Per default, cell-wise data
|
||||
is assumed.
|
||||
|
||||
damask.Grid.load_DREAM3D allows to get the corresponding geometry
|
||||
for the grid solver.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
fname : str
|
||||
Filename of the DREAM.3D (HDF5) file.
|
||||
grain_data : str
|
||||
Name of the group (folder) containing grain-wise data. Defaults
|
||||
to None, in which case cell-wise data is used.
|
||||
cell_data : str
|
||||
Name of the group (folder) containing cell-wise data. Defaults to
|
||||
None in wich case it is automatically detected.
|
||||
cell_ensemble_data : str
|
||||
Name of the group (folder) containing data of cell ensembles. This
|
||||
group is used to inquire the name of the phases. Phases will get
|
||||
numeric IDs if this group is not found. Defaults to 'CellEnsembleData'.
|
||||
phases : str
|
||||
Name of the dataset containing the phase ID (cell-wise or grain-wise).
|
||||
Defaults to 'Phases'.
|
||||
Euler_angles : str
|
||||
Name of the dataset containing the crystallographic orientation as
|
||||
Euler angles in radians (cell-wise or grain-wise). Defaults to 'EulerAngles'.
|
||||
phase_names : str
|
||||
Name of the dataset containing the phase names. Phases will get
|
||||
numeric IDs if this dataset is not found. Defaults to 'PhaseName'.
|
||||
base_group : str
|
||||
Path to the group (folder) that contains geometry (_SIMPL_GEOMETRY),
|
||||
and grain- or cell-wise data. Defaults to None, in which case
|
||||
it is set as the path that contains _SIMPL_GEOMETRY/SPACING.
|
||||
|
||||
"""
|
||||
b = util.DREAM3D_base_group(fname) if base_group is None else base_group
|
||||
c = util.DREAM3D_cell_data_group(fname) if cell_data is None else cell_data
|
||||
f = h5py.File(fname,'r')
|
||||
|
||||
if grain_data is None:
|
||||
phase = f[os.path.join(b,c,phases)][()].flatten()
|
||||
O = Rotation.from_Euler_angles(f[os.path.join(b,c,Euler_angles)]).as_quaternion().reshape(-1,4) # noqa
|
||||
_,idx = np.unique(np.hstack([O,phase.reshape(-1,1)]),return_index=True,axis=0)
|
||||
idx = np.sort(idx)
|
||||
else:
|
||||
phase = f[os.path.join(b,grain_data,phases)][()]
|
||||
O = Rotation.from_Euler_angles(f[os.path.join(b,grain_data,Euler_angles)]).as_quaternion() # noqa
|
||||
idx = np.arange(phase.size)
|
||||
|
||||
if cell_ensemble_data is not None and phase_names is not None:
|
||||
try:
|
||||
names = np.array([s.decode() for s in f[os.path.join(b,cell_ensemble_data,phase_names)]])
|
||||
phase = names[phase]
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
|
||||
base_config = ConfigMaterial({'phase':{k if isinstance(k,int) else str(k):'t.b.d.' for k in np.unique(phase)},
|
||||
'homogenization':{'direct':{'N_constituents':1}}})
|
||||
constituent = {k:np.atleast_1d(v[idx].squeeze()) for k,v in zip(['O','phase'],[O,phase])}
|
||||
|
||||
return base_config.material_add(**constituent,homogenization='direct')
|
||||
|
||||
|
||||
@property
|
||||
def is_complete(self):
|
||||
"""Check for completeness."""
|
||||
|
|
|
@ -256,35 +256,62 @@ class Grid:
|
|||
|
||||
|
||||
@staticmethod
|
||||
def load_DREAM3D(fname,base_group,point_data=None,material='FeatureIds'):
|
||||
def load_DREAM3D(fname,
|
||||
feature_IDs=None,cell_data=None,
|
||||
phases='Phases',Euler_angles='EulerAngles',
|
||||
base_group=None):
|
||||
"""
|
||||
Load from DREAM.3D file.
|
||||
Load DREAM.3D (HDF5) file.
|
||||
|
||||
Data in DREAM.3D files can be stored per cell ('CellData')
|
||||
and/or per grain ('Grain Data'). Per default, cell-wise data
|
||||
is assumed.
|
||||
|
||||
damask.ConfigMaterial.load_DREAM3D allows to get the
|
||||
corresponding material definition.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
fname : str
|
||||
Filename of the DREAM.3D file
|
||||
Filename of the DREAM.3D (HDF5) file.
|
||||
feature_IDs : str
|
||||
Name of the dataset containing the mapping between cells and
|
||||
grain-wise data. Defaults to 'None', in which case cell-wise
|
||||
data is used.
|
||||
cell_data : str
|
||||
Name of the group (folder) containing cell-wise data. Defaults to
|
||||
None in wich case it is automatically detected.
|
||||
phases : str
|
||||
Name of the dataset containing the phase ID. It is not used for
|
||||
grain-wise data, i.e. when feature_IDs is not None.
|
||||
Defaults to 'Phases'.
|
||||
Euler_angles : str
|
||||
Name of the dataset containing the crystallographic orientation as
|
||||
Euler angles in radians It is not used for grain-wise data, i.e.
|
||||
when feature_IDs is not None. Defaults to 'EulerAngles'.
|
||||
base_group : str
|
||||
Name of the group (folder) below 'DataContainers',
|
||||
for example 'SyntheticVolumeDataContainer'.
|
||||
point_data : str, optional
|
||||
Name of the group (folder) containing the pointwise material data,
|
||||
for example 'CellData'. Defaults to None, in which case points are consecutively numbered.
|
||||
material : str, optional
|
||||
Name of the dataset containing the material ID.
|
||||
Defaults to 'FeatureIds'.
|
||||
Path to the group (folder) that contains geometry (_SIMPL_GEOMETRY),
|
||||
and grain- or cell-wise data. Defaults to None, in which case
|
||||
it is set as the path that contains _SIMPL_GEOMETRY/SPACING.
|
||||
|
||||
|
||||
"""
|
||||
root_dir ='DataContainers'
|
||||
b = util.DREAM3D_base_group(fname) if base_group is None else base_group
|
||||
c = util.DREAM3D_cell_data_group(fname) if cell_data is None else cell_data
|
||||
f = h5py.File(fname, 'r')
|
||||
g = os.path.join(root_dir,base_group,'_SIMPL_GEOMETRY')
|
||||
cells = f[os.path.join(g,'DIMENSIONS')][()]
|
||||
size = f[os.path.join(g,'SPACING')][()] * cells
|
||||
origin = f[os.path.join(g,'ORIGIN')][()]
|
||||
|
||||
ma = np.arange(cells.prod(),dtype=int) \
|
||||
if point_data is None else \
|
||||
np.reshape(f[os.path.join(root_dir,base_group,point_data,material)],cells.prod())
|
||||
cells = f[os.path.join(b,'_SIMPL_GEOMETRY','DIMENSIONS')][()]
|
||||
size = f[os.path.join(b,'_SIMPL_GEOMETRY','SPACING')] * cells
|
||||
origin = f[os.path.join(b,'_SIMPL_GEOMETRY','ORIGIN')][()]
|
||||
|
||||
if feature_IDs is None:
|
||||
phase = f[os.path.join(b,c,phases)][()].reshape(-1,1)
|
||||
O = Rotation.from_Euler_angles(f[os.path.join(b,c,Euler_angles)]).as_quaternion().reshape(-1,4) # noqa
|
||||
unique,unique_inverse = np.unique(np.hstack([O,phase]),return_inverse=True,axis=0)
|
||||
ma = np.arange(cells.prod()) if len(unique) == cells.prod() else \
|
||||
np.arange(unique.size)[np.argsort(pd.unique(unique_inverse))][unique_inverse]
|
||||
else:
|
||||
ma = f[os.path.join(b,c,feature_IDs)][()].flatten()
|
||||
|
||||
return Grid(ma.reshape(cells,order='F'),size,origin,util.execution_stamp('Grid','load_DREAM3D'))
|
||||
|
||||
|
@ -482,18 +509,13 @@ class Grid:
|
|||
|
||||
References
|
||||
----------
|
||||
Sébastien B G Blanquer, Maike Werner, Markus Hannula, Shahriar Sharifi,
|
||||
Guillaume P R Lajoinie, David Eglin, Jari Hyttinen, André A Poot, and Dirk W Grijpma
|
||||
Surface curvature in triply-periodic minimal surface architectures as
|
||||
a distinct design parameter in preparing advanced tissue engineering scaffolds
|
||||
S.B.G. Blanquer et al., Biofabrication 9(2):025001, 2017
|
||||
https://doi.org/10.1088/1758-5090/aa6553
|
||||
|
||||
Meinhard Wohlgemuth, Nataliya Yufa, James Hoffman, and Edwin L. Thomas
|
||||
Triply Periodic Bicontinuous Cubic Microdomain Morphologies by Symmetries
|
||||
M. Wohlgemuth et al., Macromolecules 34(17):6083-6089, 2001
|
||||
https://doi.org/10.1021/ma0019499
|
||||
|
||||
Meng-Ting Hsieh, Lorenzo Valdevit
|
||||
Minisurf – A minimal surface generator for finite element modeling and additive manufacturing
|
||||
M.-T. Hsieh and L. Valdevit, Software Impacts 6:100026, 2020
|
||||
https://doi.org/10.1016/j.simpa.2020.100026
|
||||
|
||||
"""
|
||||
|
|
|
@ -742,8 +742,7 @@ class Orientation(Rotation):
|
|||
|
||||
References
|
||||
----------
|
||||
C.T. Young and J.L. Lytton, J. Appl. Phys. 43:1408–1417, 1972
|
||||
"Computer Generation and Identification of Kikuchi Projections"
|
||||
C.T. Young and J.L. Lytton, Journal of Applied Physics 43:1408–1417, 1972
|
||||
https://doi.org/10.1063/1.1661333
|
||||
|
||||
"""
|
||||
|
@ -1070,8 +1069,7 @@ class Orientation(Rotation):
|
|||
|
||||
References
|
||||
----------
|
||||
J.C. Glez and J. Driver, J. Appl. Cryst. 34:280-288, 2001
|
||||
"Orientation distribution analysis in deformed grains"
|
||||
J.C. Glez and J. Driver, Journal of Applied Crystallography 34:280-288, 2001
|
||||
https://doi.org/10.1107/S0021889801003077
|
||||
|
||||
"""
|
||||
|
|
|
@ -66,12 +66,14 @@ class Result:
|
|||
self.times = [round(f[i].attrs['time/s'],12) for i in self.increments] if self.version_minor < 12 else \
|
||||
[round(f[i].attrs['t/s'],12) for i in self.increments]
|
||||
|
||||
self.N_materialpoints, self.N_constituents = np.shape(f['mapping/phase'])
|
||||
grp = 'mapping' if self.version_minor < 12 else 'cell_to'
|
||||
|
||||
self.homogenizations = [m.decode() for m in np.unique(f['mapping/homogenization']
|
||||
['Name' if self.version_minor < 12 else 'name'])]
|
||||
self.phases = [c.decode() for c in np.unique(f['mapping/phase']
|
||||
['Name' if self.version_minor < 12 else 'name'])]
|
||||
self.N_materialpoints, self.N_constituents = np.shape(f[f'{grp}/phase'])
|
||||
|
||||
self.homogenizations = [m.decode() for m in np.unique(f[f'{grp}/homogenization']
|
||||
['Name' if self.version_minor < 12 else 'label'])]
|
||||
self.phases = [c.decode() for c in np.unique(f[f'{grp}/phase']
|
||||
['Name' if self.version_minor < 12 else 'label'])]
|
||||
|
||||
self.out_type_ph = []
|
||||
for c in self.phases:
|
||||
|
@ -375,8 +377,9 @@ class Result:
|
|||
inGeom = {}
|
||||
inData = {}
|
||||
# compatibility hack
|
||||
name = 'Name' if self.version_minor < 12 else 'name'
|
||||
member = 'Position' if self.version_minor < 12 else 'member'
|
||||
name = 'Name' if self.version_minor < 12 else 'label'
|
||||
member = 'Position' if self.version_minor < 12 else 'entry'
|
||||
grp = 'mapping' if self.version_minor < 12 else 'cell_to'
|
||||
with h5py.File(self.fname,'r') as f:
|
||||
for dataset in sets:
|
||||
for group in self.groups_with_datasets(dataset):
|
||||
|
@ -387,11 +390,11 @@ class Result:
|
|||
if prop == 'geometry':
|
||||
inGeom[key] = inData[key] = np.arange(self.N_materialpoints)
|
||||
elif prop == 'phase':
|
||||
inGeom[key] = np.where(f['mapping/phase'][:,constituent][name] == str.encode(name))[0]
|
||||
inData[key] = f['mapping/phase'][inGeom[key],constituent][member]
|
||||
inGeom[key] = np.where(f[f'{grp}/phase'][:,constituent][name] == str.encode(name))[0]
|
||||
inData[key] = f[f'{grp}/phase'][inGeom[key],constituent][member]
|
||||
elif prop == 'homogenization':
|
||||
inGeom[key] = np.where(f['mapping/homogenization'][name] == str.encode(name))[0]
|
||||
inData[key] = f['mapping/homogenization'][inGeom[key].tolist()][member]
|
||||
inGeom[key] = np.where(f[f'{grp}/homogenization'][name] == str.encode(name))[0]
|
||||
inData[key] = f[f'{grp}/homogenization'][inGeom[key].tolist()][member]
|
||||
shape = np.shape(f[path])
|
||||
data = np.full((self.N_materialpoints,) + (shape[1:] if len(shape)>1 else (1,)),
|
||||
np.nan,
|
||||
|
@ -542,8 +545,9 @@ class Result:
|
|||
|
||||
"""
|
||||
# compatibility hack
|
||||
name = 'Name' if self.version_minor < 12 else 'name'
|
||||
member = 'Position' if self.version_minor < 12 else 'member'
|
||||
name = 'Name' if self.version_minor < 12 else 'label'
|
||||
member = 'Position' if self.version_minor < 12 else 'entry'
|
||||
grp = 'mapping' if self.version_minor < 12 else 'cell_to'
|
||||
with h5py.File(self.fname,'r') as f:
|
||||
shape = (self.N_materialpoints,) + np.shape(f[path[0]])[1:]
|
||||
if len(shape) == 1: shape = shape +(1,)
|
||||
|
@ -555,17 +559,17 @@ class Result:
|
|||
dataset = np.array(f[pa])
|
||||
continue
|
||||
|
||||
p = np.where(f['mapping/phase'][:,c][name] == str.encode(label))[0]
|
||||
p = np.where(f[f'{grp}/phase'][:,c][name] == str.encode(label))[0]
|
||||
if len(p)>0:
|
||||
u = (f['mapping/phase'][member][p,c])
|
||||
u = (f[f'{grp}/phase'][member][p,c])
|
||||
a = np.array(f[pa])
|
||||
if len(a.shape) == 1:
|
||||
a=a.reshape([a.shape[0],1])
|
||||
dataset[p,:] = a[u,:]
|
||||
|
||||
p = np.where(f['mapping/homogenization'][name] == str.encode(label))[0]
|
||||
p = np.where(f[f'{grp}/homogenization'][name] == str.encode(label))[0]
|
||||
if len(p)>0:
|
||||
u = (f['mapping/homogenization'][member][p.tolist()])
|
||||
u = (f[f'{grp}/homogenization'][member][p.tolist()])
|
||||
a = np.array(f[pa])
|
||||
if len(a.shape) == 1:
|
||||
a=a.reshape([a.shape[0],1])
|
||||
|
@ -1346,7 +1350,7 @@ class Result:
|
|||
for o in self.iterate('out_type_ph'):
|
||||
for c in range(self.N_constituents):
|
||||
prefix = '' if self.N_constituents == 1 else f'constituent{c}/'
|
||||
if o not in ['mechanics', 'mechanical']: # compatitbility hack
|
||||
if o not in ['mechanics', 'mechanical']: # compatibility hack
|
||||
for _ in self.iterate('phases'):
|
||||
path = self.get_dataset_location(label)
|
||||
if len(path) == 0:
|
||||
|
|
|
@ -357,10 +357,8 @@ class Rotation:
|
|||
|
||||
References
|
||||
----------
|
||||
Quaternion averaging
|
||||
F. Landis Markley, Yang Cheng, John L. Crassidis, Yaakov Oshman
|
||||
Journal of Guidance, Control, and Dynamics 30(4):1193-1197, 2007
|
||||
10.2514/1.28949
|
||||
F. Landis Markley et al., Journal of Guidance, Control, and Dynamics 30(4):1193-1197, 2007
|
||||
https://doi.org/10.2514/1.28949
|
||||
|
||||
"""
|
||||
def _M(quat):
|
||||
|
@ -859,7 +857,7 @@ class Rotation:
|
|||
|
||||
References
|
||||
----------
|
||||
P. Eisenlohr, F. Roters, Computational Materials Science 42(4), 670-678, 2008
|
||||
P. Eisenlohr and F. Roters, Computational Materials Science 42(4):670-678, 2008
|
||||
https://doi.org/10.1016/j.commatsci.2007.09.015
|
||||
|
||||
"""
|
||||
|
|
|
@ -9,6 +9,7 @@ from functools import reduce
|
|||
from optparse import Option
|
||||
|
||||
import numpy as np
|
||||
import h5py
|
||||
|
||||
from . import version
|
||||
|
||||
|
@ -27,7 +28,8 @@ __all__=[
|
|||
'extendableOption',
|
||||
'execution_stamp',
|
||||
'shapeshifter', 'shapeblender',
|
||||
'extend_docstring', 'extended_docstring'
|
||||
'extend_docstring', 'extended_docstring',
|
||||
'DREAM3D_base_group', 'DREAM3D_cell_data_group'
|
||||
]
|
||||
|
||||
####################################################################################################
|
||||
|
@ -376,6 +378,53 @@ def extended_docstring(f,extra_docstring):
|
|||
return _decorator
|
||||
|
||||
|
||||
def DREAM3D_base_group(fname):
|
||||
"""
|
||||
Determine the base group of a DREAM.3D file.
|
||||
|
||||
The base group is defined as the group (folder) that contains
|
||||
a 'SPACING' dataset in a '_SIMPL_GEOMETRY' group.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
fname : str
|
||||
Filename of the DREAM.3D (HDF5) file.
|
||||
|
||||
"""
|
||||
with h5py.File(fname,'r') as f:
|
||||
base_group = f.visit(lambda path: path.rsplit('/',2)[0] if '_SIMPL_GEOMETRY/SPACING' in path else None)
|
||||
|
||||
if base_group is None:
|
||||
raise ValueError(f'Could not determine base group in file {fname}.')
|
||||
|
||||
return base_group
|
||||
|
||||
def DREAM3D_cell_data_group(fname):
|
||||
"""
|
||||
Determine the cell data group of a DREAM.3D file.
|
||||
|
||||
The cell data group is defined as the group (folder) that contains
|
||||
a dataset in the base group whose length matches the total number
|
||||
of points as specified in '_SIMPL_GEOMETRY/DIMENSIONS'.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
fname : str
|
||||
Filename of the DREAM.3D (HDF5) file.
|
||||
|
||||
"""
|
||||
base_group = DREAM3D_base_group(fname)
|
||||
with h5py.File(fname,'r') as f:
|
||||
cells = tuple(f[os.path.join(base_group,'_SIMPL_GEOMETRY','DIMENSIONS')][()][::-1])
|
||||
cell_data_group = f[base_group].visititems(lambda path,obj: path.split('/')[0] \
|
||||
if isinstance(obj,h5py._hl.dataset.Dataset) and np.shape(obj)[:-1] == cells \
|
||||
else None)
|
||||
|
||||
if cell_data_group is None:
|
||||
raise ValueError(f'Could not determine cell data group in file {fname}/{base_group}.')
|
||||
|
||||
return cell_data_group
|
||||
|
||||
####################################################################################################
|
||||
# Classes
|
||||
####################################################################################################
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
../Grid/2phase_irregularGrid.dream3d
|
|
@ -0,0 +1 @@
|
|||
../Grid/2phase_irregularGrid.json
|
|
@ -0,0 +1 @@
|
|||
../Grid/2phase_irregularGrid.xdmf
|
|
@ -0,0 +1 @@
|
|||
../Grid/measured.dream3d
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1 @@
|
|||
../Grid/measured.xdmf
|
Binary file not shown.
|
@ -0,0 +1,764 @@
|
|||
{
|
||||
"0": {
|
||||
"CellEnsembleAttributeMatrixName": "CellEnsembleData",
|
||||
"CrystalStructuresArrayName": "CrystalStructures",
|
||||
"Filter_Enabled": true,
|
||||
"Filter_Human_Label": "StatsGenerator",
|
||||
"Filter_Name": "StatsGeneratorFilter",
|
||||
"Filter_Uuid": "{f642e217-4722-5dd8-9df9-cee71e7b26ba}",
|
||||
"PhaseNamesArrayName": "PhaseName",
|
||||
"PhaseTypesArrayName": "PhaseTypes",
|
||||
"StatsDataArray": {
|
||||
"1": {
|
||||
"AxisODF-Weights": {
|
||||
},
|
||||
"Bin Count": 34,
|
||||
"BinNumber": [
|
||||
0.03019738383591175,
|
||||
1.031197428703308,
|
||||
2.0321974754333496,
|
||||
3.0331974029541016,
|
||||
4.0341973304748535,
|
||||
5.0351972579956055,
|
||||
6.036197185516357,
|
||||
7.037197113037109,
|
||||
8.03819751739502,
|
||||
9.03919792175293,
|
||||
10.04019832611084,
|
||||
11.04119873046875,
|
||||
12.04219913482666,
|
||||
13.04319953918457,
|
||||
14.04419994354248,
|
||||
15.04520034790039,
|
||||
16.046199798583984,
|
||||
17.047199249267578,
|
||||
18.048198699951172,
|
||||
19.049198150634766,
|
||||
20.05019760131836,
|
||||
21.051197052001953,
|
||||
22.052196502685547,
|
||||
23.05319595336914,
|
||||
24.054195404052734,
|
||||
25.055194854736328,
|
||||
26.056194305419922,
|
||||
27.057193756103516,
|
||||
28.05819320678711,
|
||||
29.059192657470703,
|
||||
30.060192108154297,
|
||||
31.06119155883789,
|
||||
32.062191009521484,
|
||||
33.06319046020508
|
||||
],
|
||||
"BoundaryArea": 0,
|
||||
"Crystal Symmetry": 1,
|
||||
"FeatureSize Distribution": {
|
||||
"Average": 0.5,
|
||||
"Standard Deviation": 1
|
||||
},
|
||||
"FeatureSize Vs B Over A Distributions": {
|
||||
"Alpha": [
|
||||
15.845513343811035,
|
||||
15.281289100646973,
|
||||
15.406131744384766,
|
||||
15.695631980895996
|
||||
],
|
||||
"Beta": [
|
||||
1.5363599061965942,
|
||||
1.3575199842453003,
|
||||
1.2908644676208496,
|
||||
1.6510697603225708
|
||||
],
|
||||
"Distribution Type": "Beta Distribution"
|
||||
},
|
||||
"FeatureSize Vs C Over A Distributions": {
|
||||
"Alpha": [
|
||||
15.83090591430664,
|
||||
15.119057655334473,
|
||||
15.210259437561035,
|
||||
15.403964042663574
|
||||
],
|
||||
"Beta": [
|
||||
1.4798208475112915,
|
||||
1.439164638519287,
|
||||
1.6361048221588135,
|
||||
1.3149876594543457
|
||||
],
|
||||
"Distribution Type": "Beta Distribution"
|
||||
},
|
||||
"FeatureSize Vs Neighbors Distributions": {
|
||||
"Average": [
|
||||
2.3025851249694824,
|
||||
2.4849066734313965,
|
||||
2.6390573978424072,
|
||||
2.7725887298583984
|
||||
],
|
||||
"Distribution Type": "Log Normal Distribution",
|
||||
"Standard Deviation": [
|
||||
0.4000000059604645,
|
||||
0.3499999940395355,
|
||||
0.30000001192092896,
|
||||
0.25
|
||||
]
|
||||
},
|
||||
"FeatureSize Vs Omega3 Distributions": {
|
||||
"Alpha": [
|
||||
10.906224250793457,
|
||||
10.030556678771973,
|
||||
10.367804527282715,
|
||||
10.777519226074219
|
||||
],
|
||||
"Beta": [
|
||||
1.7305665016174316,
|
||||
1.638364553451538,
|
||||
1.6687047481536865,
|
||||
1.6839183568954468
|
||||
],
|
||||
"Distribution Type": "Beta Distribution"
|
||||
},
|
||||
"Feature_Diameter_Info": [
|
||||
1.0010000467300415,
|
||||
33.11545181274414,
|
||||
0.03019738383591175
|
||||
],
|
||||
"MDF-Weights": {
|
||||
},
|
||||
"Name": "Primary",
|
||||
"ODF-Weights": {
|
||||
},
|
||||
"PhaseFraction": 0.8999999761581421,
|
||||
"PhaseType": "Primary"
|
||||
},
|
||||
"2": {
|
||||
"AxisODF-Weights": {
|
||||
},
|
||||
"Bin Count": 34,
|
||||
"BinNumber": [
|
||||
0.03019738383591175,
|
||||
1.031197428703308,
|
||||
2.0321974754333496,
|
||||
3.0331974029541016,
|
||||
4.0341973304748535,
|
||||
5.0351972579956055,
|
||||
6.036197185516357,
|
||||
7.037197113037109,
|
||||
8.03819751739502,
|
||||
9.03919792175293,
|
||||
10.04019832611084,
|
||||
11.04119873046875,
|
||||
12.04219913482666,
|
||||
13.04319953918457,
|
||||
14.04419994354248,
|
||||
15.04520034790039,
|
||||
16.046199798583984,
|
||||
17.047199249267578,
|
||||
18.048198699951172,
|
||||
19.049198150634766,
|
||||
20.05019760131836,
|
||||
21.051197052001953,
|
||||
22.052196502685547,
|
||||
23.05319595336914,
|
||||
24.054195404052734,
|
||||
25.055194854736328,
|
||||
26.056194305419922,
|
||||
27.057193756103516,
|
||||
28.05819320678711,
|
||||
29.059192657470703,
|
||||
30.060192108154297,
|
||||
31.06119155883789,
|
||||
32.062191009521484,
|
||||
33.06319046020508
|
||||
],
|
||||
"BoundaryArea": 0,
|
||||
"Crystal Symmetry": 0,
|
||||
"FeatureSize Distribution": {
|
||||
"Average": 0.5,
|
||||
"Standard Deviation": 1
|
||||
},
|
||||
"FeatureSize Vs B Over A Distributions": {
|
||||
"Alpha": [
|
||||
15.447705268859863,
|
||||
15.033297538757324,
|
||||
15.445094108581543,
|
||||
15.426791191101074,
|
||||
15.61402702331543,
|
||||
15.366107940673828,
|
||||
15.525880813598633,
|
||||
15.943540573120117,
|
||||
15.176913261413574,
|
||||
15.9615478515625,
|
||||
15.254341125488281,
|
||||
15.919609069824219,
|
||||
15.170331954956055,
|
||||
15.80831527709961,
|
||||
15.88097095489502,
|
||||
15.6745023727417,
|
||||
15.72781753540039,
|
||||
15.8475980758667,
|
||||
15.314001083374023,
|
||||
15.855002403259277,
|
||||
15.942434310913086,
|
||||
15.40106201171875,
|
||||
15.478381156921387,
|
||||
15.788527488708496,
|
||||
15.045133590698242,
|
||||
15.81428050994873,
|
||||
15.582372665405273,
|
||||
15.878610610961914,
|
||||
15.554070472717285,
|
||||
15.576101303100586,
|
||||
15.961583137512207,
|
||||
15.629712104797363,
|
||||
15.71079158782959,
|
||||
15.126718521118164
|
||||
],
|
||||
"Beta": [
|
||||
1.6585813760757446,
|
||||
1.5793683528900146,
|
||||
1.3637349605560303,
|
||||
1.3487848043441772,
|
||||
1.2599012851715088,
|
||||
1.6920716762542725,
|
||||
1.4974967241287231,
|
||||
1.2616045475006104,
|
||||
1.4897079467773438,
|
||||
1.7281248569488525,
|
||||
1.427177906036377,
|
||||
1.6394929885864258,
|
||||
1.533599853515625,
|
||||
1.4850311279296875,
|
||||
1.4161322116851807,
|
||||
1.4839515686035156,
|
||||
1.619403600692749,
|
||||
1.3563393354415894,
|
||||
1.7409964799880981,
|
||||
1.7253544330596924,
|
||||
1.3933753967285156,
|
||||
1.7071460485458374,
|
||||
1.4746366739273071,
|
||||
1.3466795682907104,
|
||||
1.5836750268936157,
|
||||
1.2904614210128784,
|
||||
1.4404902458190918,
|
||||
1.7157742977142334,
|
||||
1.3197978734970093,
|
||||
1.2591632604599,
|
||||
1.387762188911438,
|
||||
1.5591365098953247,
|
||||
1.3606828451156616,
|
||||
1.4381128549575806
|
||||
],
|
||||
"Distribution Type": "Beta Distribution"
|
||||
},
|
||||
"FeatureSize Vs C Over A Distributions": {
|
||||
"Alpha": [
|
||||
15.365218162536621,
|
||||
15.545299530029297,
|
||||
15.212627410888672,
|
||||
15.400262832641602,
|
||||
15.938212394714355,
|
||||
15.722898483276367,
|
||||
15.016470909118652,
|
||||
15.900740623474121,
|
||||
15.425718307495117,
|
||||
15.16152572631836,
|
||||
15.375897407531738,
|
||||
15.372262954711914,
|
||||
15.971389770507812,
|
||||
15.753372192382812,
|
||||
15.400237083435059,
|
||||
15.377294540405273,
|
||||
15.65787124633789,
|
||||
15.287458419799805,
|
||||
15.704233169555664,
|
||||
15.063706398010254,
|
||||
15.128981590270996,
|
||||
15.337125778198242,
|
||||
15.145627975463867,
|
||||
15.563216209411621,
|
||||
15.704171180725098,
|
||||
15.633543014526367,
|
||||
15.44886589050293,
|
||||
15.549928665161133,
|
||||
15.656011581420898,
|
||||
15.29349136352539,
|
||||
15.840867042541504,
|
||||
15.322612762451172,
|
||||
15.672919273376465,
|
||||
15.617719650268555
|
||||
],
|
||||
"Beta": [
|
||||
1.4064055681228638,
|
||||
1.2828519344329834,
|
||||
1.468850016593933,
|
||||
1.7444164752960205,
|
||||
1.6199990510940552,
|
||||
1.3697280883789062,
|
||||
1.2706352472305298,
|
||||
1.5357846021652222,
|
||||
1.4822189807891846,
|
||||
1.6722832918167114,
|
||||
1.369265079498291,
|
||||
1.4566115140914917,
|
||||
1.3299659490585327,
|
||||
1.3810123205184937,
|
||||
1.3476874828338623,
|
||||
1.5510755777359009,
|
||||
1.7177120447158813,
|
||||
1.3624974489212036,
|
||||
1.3216533660888672,
|
||||
1.3339394330978394,
|
||||
1.2930961847305298,
|
||||
1.6279221773147583,
|
||||
1.6160264015197754,
|
||||
1.528560757637024,
|
||||
1.510753870010376,
|
||||
1.3254910707473755,
|
||||
1.4221922159194946,
|
||||
1.2564609050750732,
|
||||
1.6635781526565552,
|
||||
1.3418669700622559,
|
||||
1.7360178232192993,
|
||||
1.5526862144470215,
|
||||
1.4054912328720093,
|
||||
1.277783989906311
|
||||
],
|
||||
"Distribution Type": "Beta Distribution"
|
||||
},
|
||||
"FeatureSize Vs Omega3 Distributions": {
|
||||
"Alpha": [
|
||||
10.336419105529785,
|
||||
10.1687650680542,
|
||||
10.27115249633789,
|
||||
10.215887069702148,
|
||||
10.185782432556152,
|
||||
10.72452449798584,
|
||||
10.59039306640625,
|
||||
10.541507720947266,
|
||||
10.88405990600586,
|
||||
10.985298156738281,
|
||||
10.061153411865234,
|
||||
10.403335571289062,
|
||||
10.103477478027344,
|
||||
10.359172821044922,
|
||||
10.454915046691895,
|
||||
10.805563926696777,
|
||||
10.597787857055664,
|
||||
10.86919116973877,
|
||||
10.310497283935547,
|
||||
10.723823547363281,
|
||||
10.431794166564941,
|
||||
10.962357521057129,
|
||||
10.227286338806152,
|
||||
10.641992568969727,
|
||||
10.421194076538086,
|
||||
10.347271919250488,
|
||||
10.305063247680664,
|
||||
10.359184265136719,
|
||||
10.88247013092041,
|
||||
10.224652290344238,
|
||||
10.449006080627441,
|
||||
10.638978958129883,
|
||||
10.109529495239258,
|
||||
10.306557655334473
|
||||
],
|
||||
"Beta": [
|
||||
1.952553629875183,
|
||||
1.8465642929077148,
|
||||
1.9641268253326416,
|
||||
1.8473154306411743,
|
||||
1.8531252145767212,
|
||||
1.6586203575134277,
|
||||
1.7890105247497559,
|
||||
1.5307549238204956,
|
||||
1.5579677820205688,
|
||||
1.5402934551239014,
|
||||
1.8692169189453125,
|
||||
1.7846438884735107,
|
||||
1.547948956489563,
|
||||
1.6955899000167847,
|
||||
1.7097049951553345,
|
||||
1.5930047035217285,
|
||||
1.7674869298934937,
|
||||
1.519134759902954,
|
||||
1.655213475227356,
|
||||
1.846417784690857,
|
||||
1.6024950742721558,
|
||||
1.7787903547286987,
|
||||
1.529666781425476,
|
||||
1.9883882999420166,
|
||||
1.9980814456939697,
|
||||
1.6461148262023926,
|
||||
1.518980622291565,
|
||||
1.954341173171997,
|
||||
1.994722604751587,
|
||||
1.6828864812850952,
|
||||
1.5880030393600464,
|
||||
1.7846791744232178,
|
||||
1.6626262664794922,
|
||||
1.714822769165039
|
||||
],
|
||||
"Distribution Type": "Beta Distribution"
|
||||
},
|
||||
"Feature_Diameter_Info": [
|
||||
1.0010000467300415,
|
||||
33.11545181274414,
|
||||
0.03019738383591175
|
||||
],
|
||||
"MDF-Weights": {
|
||||
},
|
||||
"Name": "Precipitate",
|
||||
"ODF-Weights": {
|
||||
},
|
||||
"PhaseFraction": 0.10000000149011612,
|
||||
"PhaseType": "Precipitate",
|
||||
"Precipitate Boundary Fraction": 0.699999988079071,
|
||||
"Radial Distribution Function": {
|
||||
"Bin Count": 50,
|
||||
"BoxDims": [
|
||||
100,
|
||||
100,
|
||||
100
|
||||
],
|
||||
"BoxRes": [
|
||||
0.10000000149011612,
|
||||
0.10000000149011612,
|
||||
0.10000000149011612
|
||||
],
|
||||
"Max": 80,
|
||||
"Min": 10
|
||||
}
|
||||
},
|
||||
"Name": "Statistics",
|
||||
"Phase Count": 3
|
||||
},
|
||||
"StatsDataArrayName": "Statistics",
|
||||
"StatsGeneratorDataContainerName": "StatsGeneratorDataContainer"
|
||||
},
|
||||
"1": {
|
||||
"BoxDimensions": "X Range: 0 to 10.4 (Delta: 10.4)\nY Range: 0 to 6.4 (Delta: 6.4)\nZ Range: 0 to 8 (Delta: 8)",
|
||||
"CellAttributeMatrixName": "CellData",
|
||||
"DataContainerName": "SyntheticVolumeDataContainer",
|
||||
"Dimensions": {
|
||||
"x": 13,
|
||||
"y": 8,
|
||||
"z": 10
|
||||
},
|
||||
"EnsembleAttributeMatrixName": "CellEnsembleData",
|
||||
"EstimateNumberOfFeatures": 1,
|
||||
"EstimatedPrimaryFeatures": "17",
|
||||
"FilterVersion": "6.5.138",
|
||||
"Filter_Enabled": true,
|
||||
"Filter_Human_Label": "Initialize Synthetic Volume",
|
||||
"Filter_Name": "InitializeSyntheticVolume",
|
||||
"Filter_Uuid": "{c2ae366b-251f-5dbd-9d70-d790376c0c0d}",
|
||||
"InputPhaseTypesArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "PhaseTypes",
|
||||
"Data Container Name": "StatsGeneratorDataContainer"
|
||||
},
|
||||
"InputStatsArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "Statistics",
|
||||
"Data Container Name": "StatsGeneratorDataContainer"
|
||||
},
|
||||
"Origin": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"Resolution": {
|
||||
"x": 0.800000011920929,
|
||||
"y": 0.800000011920929,
|
||||
"z": 0.800000011920929
|
||||
}
|
||||
},
|
||||
"2": {
|
||||
"FilterVersion": "6.5.138",
|
||||
"Filter_Enabled": true,
|
||||
"Filter_Human_Label": "Establish Shape Types",
|
||||
"Filter_Name": "EstablishShapeTypes",
|
||||
"Filter_Uuid": "{4edbbd35-a96b-5ff1-984a-153d733e2abb}",
|
||||
"InputPhaseTypesArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "PhaseTypes",
|
||||
"Data Container Name": "StatsGeneratorDataContainer"
|
||||
},
|
||||
"ShapeTypeData": [
|
||||
999,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ShapeTypesArrayName": "ShapeTypes"
|
||||
},
|
||||
"3": {
|
||||
"CellPhasesArrayName": "Phases",
|
||||
"FeatureGeneration": 0,
|
||||
"FeatureIdsArrayName": "FeatureIds",
|
||||
"FeatureInputFile": "C:/Users/work",
|
||||
"FeaturePhasesArrayName": "Phases",
|
||||
"FilterVersion": "6.5.138",
|
||||
"Filter_Enabled": true,
|
||||
"Filter_Human_Label": "Pack Primary Phases",
|
||||
"Filter_Name": "PackPrimaryPhases",
|
||||
"Filter_Uuid": "{84305312-0d10-50ca-b89a-fda17a353cc9}",
|
||||
"InputPhaseNamesArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "PhaseName",
|
||||
"Data Container Name": "StatsGeneratorDataContainer"
|
||||
},
|
||||
"InputPhaseTypesArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "PhaseTypes",
|
||||
"Data Container Name": "StatsGeneratorDataContainer"
|
||||
},
|
||||
"InputShapeTypesArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "ShapeTypes",
|
||||
"Data Container Name": "StatsGeneratorDataContainer"
|
||||
},
|
||||
"InputStatsArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "Statistics",
|
||||
"Data Container Name": "StatsGeneratorDataContainer"
|
||||
},
|
||||
"MaskArrayPath": {
|
||||
"Attribute Matrix Name": "",
|
||||
"Data Array Name": "",
|
||||
"Data Container Name": ""
|
||||
},
|
||||
"NewAttributeMatrixPath": {
|
||||
"Attribute Matrix Name": "Synthetic Shape Parameters (Primary Phase)",
|
||||
"Data Array Name": "",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"NumFeaturesArrayName": "NumFeatures",
|
||||
"OutputCellAttributeMatrixPath": {
|
||||
"Attribute Matrix Name": "CellData",
|
||||
"Data Array Name": "",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"OutputCellEnsembleAttributeMatrixName": "CellEnsembleData",
|
||||
"OutputCellFeatureAttributeMatrixName": "Grain Data",
|
||||
"PeriodicBoundaries": 0,
|
||||
"SaveGeometricDescriptions": 0,
|
||||
"SelectedAttributeMatrixPath": {
|
||||
"Attribute Matrix Name": "",
|
||||
"Data Array Name": "",
|
||||
"Data Container Name": ""
|
||||
},
|
||||
"UseMask": 0
|
||||
},
|
||||
"4": {
|
||||
"BoundaryCellsArrayName": "BoundaryCells",
|
||||
"FeatureIdsArrayPath": {
|
||||
"Attribute Matrix Name": "CellData",
|
||||
"Data Array Name": "FeatureIds",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"FilterVersion": "6.5.138",
|
||||
"Filter_Enabled": true,
|
||||
"Filter_Human_Label": "Find Boundary Cells (Image)",
|
||||
"Filter_Name": "FindBoundaryCells",
|
||||
"Filter_Uuid": "{8a1106d4-c67f-5e09-a02a-b2e9b99d031e}",
|
||||
"IgnoreFeatureZero": 1,
|
||||
"IncludeVolumeBoundary": 0
|
||||
},
|
||||
"5": {
|
||||
"BoundaryCellsArrayPath": {
|
||||
"Attribute Matrix Name": "CellData",
|
||||
"Data Array Name": "BoundaryCells",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"CellPhasesArrayPath": {
|
||||
"Attribute Matrix Name": "CellData",
|
||||
"Data Array Name": "Phases",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"FeatureGeneration": 0,
|
||||
"FeatureIdsArrayPath": {
|
||||
"Attribute Matrix Name": "CellData",
|
||||
"Data Array Name": "FeatureIds",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"FeaturePhasesArrayPath": {
|
||||
"Attribute Matrix Name": "Grain Data",
|
||||
"Data Array Name": "Phases",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"FilterVersion": "6.5.138",
|
||||
"Filter_Enabled": true,
|
||||
"Filter_Human_Label": "Insert Precipitate Phases",
|
||||
"Filter_Name": "InsertPrecipitatePhases",
|
||||
"Filter_Uuid": "{1e552e0c-53bb-5ae1-bd1c-c7a6590f9328}",
|
||||
"InputPhaseTypesArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "PhaseTypes",
|
||||
"Data Container Name": "StatsGeneratorDataContainer"
|
||||
},
|
||||
"InputShapeTypesArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "ShapeTypes",
|
||||
"Data Container Name": "StatsGeneratorDataContainer"
|
||||
},
|
||||
"InputStatsArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "Statistics",
|
||||
"Data Container Name": "StatsGeneratorDataContainer"
|
||||
},
|
||||
"MaskArrayPath": {
|
||||
"Attribute Matrix Name": "",
|
||||
"Data Array Name": "",
|
||||
"Data Container Name": ""
|
||||
},
|
||||
"MatchRDF": 0,
|
||||
"NewAttributeMatrixPath": {
|
||||
"Attribute Matrix Name": "Synthetic Shape Parameters (Precipitate)",
|
||||
"Data Array Name": "",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"NumFeaturesArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "NumFeatures",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"PeriodicBoundaries": 0,
|
||||
"PrecipInputFile": "C:/Users/work",
|
||||
"SaveGeometricDescriptions": 0,
|
||||
"SelectedAttributeMatrixPath": {
|
||||
"Attribute Matrix Name": "",
|
||||
"Data Array Name": "",
|
||||
"Data Container Name": ""
|
||||
},
|
||||
"UseMask": 0
|
||||
},
|
||||
"6": {
|
||||
"BoundaryCellsArrayName": "BoundaryCells",
|
||||
"CellFeatureAttributeMatrixPath": {
|
||||
"Attribute Matrix Name": "Grain Data",
|
||||
"Data Array Name": "",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"FeatureIdsArrayPath": {
|
||||
"Attribute Matrix Name": "CellData",
|
||||
"Data Array Name": "FeatureIds",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"FilterVersion": "6.5.138",
|
||||
"Filter_Enabled": true,
|
||||
"Filter_Human_Label": "Find Feature Neighbors",
|
||||
"Filter_Name": "FindNeighbors",
|
||||
"Filter_Uuid": "{97cf66f8-7a9b-5ec2-83eb-f8c4c8a17bac}",
|
||||
"NeighborListArrayName": "NeighborList",
|
||||
"NumNeighborsArrayName": "NumNeighbors",
|
||||
"SharedSurfaceAreaListArrayName": "SharedSurfaceAreaList",
|
||||
"StoreBoundaryCells": 0,
|
||||
"StoreSurfaceFeatures": 1,
|
||||
"SurfaceFeaturesArrayName": "SurfaceFeatures"
|
||||
},
|
||||
"7": {
|
||||
"AvgQuatsArrayName": "AvgQuats",
|
||||
"CellEulerAnglesArrayName": "EulerAngles",
|
||||
"CrystalStructuresArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "CrystalStructures",
|
||||
"Data Container Name": "StatsGeneratorDataContainer"
|
||||
},
|
||||
"FeatureEulerAnglesArrayName": "EulerAngles",
|
||||
"FeatureIdsArrayPath": {
|
||||
"Attribute Matrix Name": "CellData",
|
||||
"Data Array Name": "FeatureIds",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"FeaturePhasesArrayPath": {
|
||||
"Attribute Matrix Name": "Grain Data",
|
||||
"Data Array Name": "Phases",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"FilterVersion": "6.5.138",
|
||||
"Filter_Enabled": true,
|
||||
"Filter_Human_Label": "Match Crystallography",
|
||||
"Filter_Name": "MatchCrystallography",
|
||||
"Filter_Uuid": "{7bfb6e4a-6075-56da-8006-b262d99dff30}",
|
||||
"InputStatsArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "Statistics",
|
||||
"Data Container Name": "StatsGeneratorDataContainer"
|
||||
},
|
||||
"MaxIterations": 100,
|
||||
"NeighborListArrayPath": {
|
||||
"Attribute Matrix Name": "Grain Data",
|
||||
"Data Array Name": "NeighborList",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"NumFeaturesArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "NumFeatures",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"PhaseTypesArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "PhaseTypes",
|
||||
"Data Container Name": "StatsGeneratorDataContainer"
|
||||
},
|
||||
"SharedSurfaceAreaListArrayPath": {
|
||||
"Attribute Matrix Name": "Grain Data",
|
||||
"Data Array Name": "SharedSurfaceAreaList",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"SurfaceFeaturesArrayPath": {
|
||||
"Attribute Matrix Name": "Grain Data",
|
||||
"Data Array Name": "SurfaceFeatures",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"VolumesArrayName": "Volumes"
|
||||
},
|
||||
"8": {
|
||||
"CellEulerAnglesArrayPath": {
|
||||
"Attribute Matrix Name": "CellData",
|
||||
"Data Array Name": "EulerAngles",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"CellIPFColorsArrayName": "IPFColor",
|
||||
"CellPhasesArrayPath": {
|
||||
"Attribute Matrix Name": "CellData",
|
||||
"Data Array Name": "Phases",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"CrystalStructuresArrayPath": {
|
||||
"Attribute Matrix Name": "CellEnsembleData",
|
||||
"Data Array Name": "CrystalStructures",
|
||||
"Data Container Name": "StatsGeneratorDataContainer"
|
||||
},
|
||||
"FilterVersion": "6.5.138",
|
||||
"Filter_Enabled": true,
|
||||
"Filter_Human_Label": "Generate IPF Colors",
|
||||
"Filter_Name": "GenerateIPFColors",
|
||||
"Filter_Uuid": "{a50e6532-8075-5de5-ab63-945feb0de7f7}",
|
||||
"GoodVoxelsArrayPath": {
|
||||
"Attribute Matrix Name": "CellData",
|
||||
"Data Array Name": "",
|
||||
"Data Container Name": "SyntheticVolumeDataContainer"
|
||||
},
|
||||
"ReferenceDir": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 1
|
||||
},
|
||||
"UseGoodVoxels": 0
|
||||
},
|
||||
"9": {
|
||||
"FilterVersion": "1.2.812",
|
||||
"Filter_Enabled": true,
|
||||
"Filter_Human_Label": "Write DREAM.3D Data File",
|
||||
"Filter_Name": "DataContainerWriter",
|
||||
"Filter_Uuid": "{3fcd4c43-9d75-5b86-aad4-4441bc914f37}",
|
||||
"OutputFile": "C:\\Users\\work\\Desktop\\2phase_irregularGrid.dream3d",
|
||||
"WriteTimeSeries": 0,
|
||||
"WriteXdmfFile": 1
|
||||
},
|
||||
"PipelineBuilder": {
|
||||
"Name": "2phase_irregularGrid",
|
||||
"Number_Filters": 10,
|
||||
"Version": 6
|
||||
}
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE Xdmf SYSTEM "Xdmf.dtd"[]>
|
||||
<Xdmf xmlns:xi="http://www.w3.org/2003/XInclude" Version="2.2">
|
||||
<Domain>
|
||||
<!-- *************** START OF SyntheticVolumeDataContainer *************** -->
|
||||
<Grid Name="SyntheticVolumeDataContainer" GridType="Uniform">
|
||||
<Topology TopologyType="3DCoRectMesh" Dimensions="11 9 14 "></Topology>
|
||||
<Geometry Type="ORIGIN_DXDYDZ">
|
||||
<!-- Origin Z, Y, X -->
|
||||
<DataItem Format="XML" Dimensions="3">0 0 0</DataItem>
|
||||
<!-- DxDyDz (Spacing/Resolution) Z, Y, X -->
|
||||
<DataItem Format="XML" Dimensions="3">0.8 0.8 0.8</DataItem>
|
||||
</Geometry>
|
||||
<Attribute Name="BoundaryCells" AttributeType="Scalar" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="10 8 13 1" NumberType="Char" Precision="1" >
|
||||
2phase_irregularGrid.dream3d:/DataContainers/SyntheticVolumeDataContainer/CellData/BoundaryCells
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
<Attribute Name="EulerAngles" AttributeType="Vector" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="10 8 13 3" NumberType="Float" Precision="4" >
|
||||
2phase_irregularGrid.dream3d:/DataContainers/SyntheticVolumeDataContainer/CellData/EulerAngles
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
<Attribute Name="FeatureIds" AttributeType="Scalar" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="10 8 13 1" NumberType="Int" Precision="4" >
|
||||
2phase_irregularGrid.dream3d:/DataContainers/SyntheticVolumeDataContainer/CellData/FeatureIds
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
<Attribute Name="IPFColor" AttributeType="Vector" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="10 8 13 3" NumberType="UChar" Precision="1" >
|
||||
2phase_irregularGrid.dream3d:/DataContainers/SyntheticVolumeDataContainer/CellData/IPFColor
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
<Attribute Name="Phases" AttributeType="Scalar" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="10 8 13 1" NumberType="Int" Precision="4" >
|
||||
2phase_irregularGrid.dream3d:/DataContainers/SyntheticVolumeDataContainer/CellData/Phases
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
</Grid>
|
||||
<!-- *************** END OF SyntheticVolumeDataContainer *************** -->
|
||||
</Domain>
|
||||
</Xdmf>
|
Binary file not shown.
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,77 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE Xdmf SYSTEM "Xdmf.dtd"[]>
|
||||
<Xdmf xmlns:xi="http://www.w3.org/2003/XInclude" Version="2.2">
|
||||
<Domain>
|
||||
<!-- *************** START OF Small IN100 *************** -->
|
||||
<Grid Name="Small IN100" GridType="Uniform">
|
||||
<Topology TopologyType="3DCoRectMesh" Dimensions="2 102 202 "></Topology>
|
||||
<Geometry Type="ORIGIN_DXDYDZ">
|
||||
<!-- Origin Z, Y, X -->
|
||||
<DataItem Format="XML" Dimensions="3">0 35 -294.7</DataItem>
|
||||
<!-- DxDyDz (Spacing/Resolution) Z, Y, X -->
|
||||
<DataItem Format="XML" Dimensions="3">0.35 0.35 0.35</DataItem>
|
||||
</Geometry>
|
||||
<Attribute Name="Confidence Index" AttributeType="Scalar" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="1 101 201 1" NumberType="Float" Precision="4" >
|
||||
measured.dream3d:/DataContainers/Small IN100/EBSD Scan Data/Confidence Index
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
<Attribute Name="EulerAngles" AttributeType="Vector" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="1 101 201 3" NumberType="Float" Precision="4" >
|
||||
measured.dream3d:/DataContainers/Small IN100/EBSD Scan Data/EulerAngles
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
<Attribute Name="FeatureIds" AttributeType="Scalar" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="1 101 201 1" NumberType="Int" Precision="4" >
|
||||
measured.dream3d:/DataContainers/Small IN100/EBSD Scan Data/FeatureIds
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
<Attribute Name="Fit" AttributeType="Scalar" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="1 101 201 1" NumberType="Float" Precision="4" >
|
||||
measured.dream3d:/DataContainers/Small IN100/EBSD Scan Data/Fit
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
<Attribute Name="IPFColor" AttributeType="Vector" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="1 101 201 3" NumberType="UChar" Precision="1" >
|
||||
measured.dream3d:/DataContainers/Small IN100/EBSD Scan Data/IPFColor
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
<Attribute Name="Image Quality" AttributeType="Scalar" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="1 101 201 1" NumberType="Float" Precision="4" >
|
||||
measured.dream3d:/DataContainers/Small IN100/EBSD Scan Data/Image Quality
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
<Attribute Name="Mask" AttributeType="Scalar" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="1 101 201 1" NumberType="uchar" Precision="1" >
|
||||
measured.dream3d:/DataContainers/Small IN100/EBSD Scan Data/Mask
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
<Attribute Name="ParentIds" AttributeType="Scalar" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="1 101 201 1" NumberType="Int" Precision="4" >
|
||||
measured.dream3d:/DataContainers/Small IN100/EBSD Scan Data/ParentIds
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
<Attribute Name="Phases" AttributeType="Scalar" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="1 101 201 1" NumberType="Int" Precision="4" >
|
||||
measured.dream3d:/DataContainers/Small IN100/EBSD Scan Data/Phases
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
<Attribute Name="SEM Signal" AttributeType="Scalar" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="1 101 201 1" NumberType="Float" Precision="4" >
|
||||
measured.dream3d:/DataContainers/Small IN100/EBSD Scan Data/SEM Signal
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
<Attribute Name="X Position" AttributeType="Scalar" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="1 101 201 1" NumberType="Float" Precision="4" >
|
||||
measured.dream3d:/DataContainers/Small IN100/EBSD Scan Data/X Position
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
<Attribute Name="Y Position" AttributeType="Scalar" Center="Cell">
|
||||
<DataItem Format="HDF" Dimensions="1 101 201 1" NumberType="Float" Precision="4" >
|
||||
measured.dream3d:/DataContainers/Small IN100/EBSD Scan Data/Y Position
|
||||
</DataItem>
|
||||
</Attribute>
|
||||
</Grid>
|
||||
<!-- *************** END OF Small IN100 *************** -->
|
||||
</Domain>
|
||||
</Xdmf>
|
Binary file not shown.
Binary file not shown.
|
@ -1,11 +1,11 @@
|
|||
import os
|
||||
|
||||
import pytest
|
||||
import numpy as np
|
||||
|
||||
from damask import ConfigMaterial
|
||||
from damask import Table
|
||||
from damask import Rotation
|
||||
from damask import Grid
|
||||
|
||||
@pytest.fixture
|
||||
def ref_path(ref_path_base):
|
||||
|
@ -108,3 +108,35 @@ class TestConfigMaterial:
|
|||
m = ConfigMaterial().material_add(**kw)
|
||||
assert len(m['material']) == N
|
||||
assert len(m['material'][0]['constituents']) == n
|
||||
|
||||
|
||||
@pytest.mark.parametrize('cell_ensemble_data',[None,'CellEnsembleData'])
|
||||
def test_load_DREAM3D(self,ref_path,cell_ensemble_data):
|
||||
grain_c = ConfigMaterial.load_DREAM3D(ref_path/'2phase_irregularGrid.dream3d','Grain Data',
|
||||
cell_ensemble_data = cell_ensemble_data)
|
||||
point_c = ConfigMaterial.load_DREAM3D(ref_path/'2phase_irregularGrid.dream3d',
|
||||
cell_ensemble_data = cell_ensemble_data)
|
||||
|
||||
assert point_c.is_valid and grain_c.is_valid and \
|
||||
len(point_c['material'])+1 == len(grain_c['material'])
|
||||
|
||||
grain_m = Grid.load_DREAM3D(ref_path/'2phase_irregularGrid.dream3d','FeatureIds').material.flatten()
|
||||
point_m = Grid.load_DREAM3D(ref_path/'2phase_irregularGrid.dream3d').material.flatten()
|
||||
|
||||
for i in np.unique(point_m):
|
||||
j = int(grain_m[(point_m==i).nonzero()[0][0]])
|
||||
assert np.allclose(point_c['material'][i]['constituents'][0]['O'],
|
||||
grain_c['material'][j]['constituents'][0]['O'])
|
||||
assert point_c['material'][i]['constituents'][0]['phase'] == \
|
||||
grain_c['material'][j]['constituents'][0]['phase']
|
||||
|
||||
|
||||
def test_load_DREAM3D_reference(self,tmp_path,ref_path,update):
|
||||
cur = ConfigMaterial.load_DREAM3D(ref_path/'measured.dream3d')
|
||||
ref = ConfigMaterial.load(ref_path/'measured.material_yaml')
|
||||
if update:
|
||||
cur.save(ref_path/'measured.material_yaml')
|
||||
for i,m in enumerate(ref['material']):
|
||||
assert Rotation(m['constituents'][0]['O']) == \
|
||||
Rotation(cur['material'][i]['constituents'][0]['O'])
|
||||
assert cur.is_valid and cur['phase'] == ref['phase'] and cur['homogenization'] == ref['homogenization']
|
||||
|
|
|
@ -420,12 +420,31 @@ class TestGrid:
|
|||
t = Table(np.column_stack((coords.reshape(-1,3,order='F'),grid.material.flatten(order='F'))),{'c':3,'m':1})
|
||||
assert grid_equal(grid.sort().renumber(),Grid.from_table(t,'c',['m']))
|
||||
|
||||
|
||||
@pytest.mark.parametrize('periodic',[True,False])
|
||||
@pytest.mark.parametrize('direction',['x','y','z',['x','y'],'zy','xz',['x','y','z']])
|
||||
def test_get_grain_boundaries(self,update,ref_path,periodic,direction):
|
||||
grid=Grid.load(ref_path/'get_grain_boundaries_8g12x15x20.vtr')
|
||||
current=grid.get_grain_boundaries(periodic,direction)
|
||||
grid = Grid.load(ref_path/'get_grain_boundaries_8g12x15x20.vtr')
|
||||
current = grid.get_grain_boundaries(periodic,direction)
|
||||
if update:
|
||||
current.save(ref_path/f'get_grain_boundaries_8g12x15x20_{direction}_{periodic}.vtu',parallel=False)
|
||||
reference=VTK.load(ref_path/f'get_grain_boundaries_8g12x15x20_{"".join(direction)}_{periodic}.vtu')
|
||||
reference = VTK.load(ref_path/f'get_grain_boundaries_8g12x15x20_{"".join(direction)}_{periodic}.vtu')
|
||||
assert current.__repr__() == reference.__repr__()
|
||||
|
||||
|
||||
def test_load_DREAM3D(self,ref_path):
|
||||
grain = Grid.load_DREAM3D(ref_path/'2phase_irregularGrid.dream3d','FeatureIds')
|
||||
point = Grid.load_DREAM3D(ref_path/'2phase_irregularGrid.dream3d')
|
||||
|
||||
assert np.allclose(grain.origin,point.origin) and \
|
||||
np.allclose(grain.size,point.size) and \
|
||||
(grain.sort().material == point.material+1).all()
|
||||
|
||||
|
||||
def test_load_DREAM3D_reference(self,ref_path,update):
|
||||
current = Grid.load_DREAM3D(ref_path/'measured.dream3d')
|
||||
reference = Grid.load(ref_path/'measured')
|
||||
if update:
|
||||
current.save(ref_path/'measured.vtr')
|
||||
|
||||
assert grid_equal(current,reference)
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
import random
|
||||
import os
|
||||
|
||||
import pytest
|
||||
import numpy as np
|
||||
from scipy import stats
|
||||
import h5py
|
||||
|
||||
from damask import util
|
||||
|
||||
|
@ -102,3 +106,36 @@ class TestUtil:
|
|||
@pytest.mark.parametrize('style',[util.emph,util.deemph,util.warn,util.strikeout])
|
||||
def test_decorate(self,style):
|
||||
assert 'DAMASK' in style('DAMASK')
|
||||
|
||||
@pytest.mark.parametrize('complete',[True,False])
|
||||
def test_D3D_base_group(self,tmp_path,complete):
|
||||
base_group = ''.join(random.choices('DAMASK', k=10))
|
||||
with h5py.File(tmp_path/'base_group.dream3d','w') as f:
|
||||
f.create_group(os.path.join(base_group,'_SIMPL_GEOMETRY'))
|
||||
if complete:
|
||||
f[os.path.join(base_group,'_SIMPL_GEOMETRY')].create_dataset('SPACING',data=np.ones(3))
|
||||
|
||||
if complete:
|
||||
assert base_group == util.DREAM3D_base_group(tmp_path/'base_group.dream3d')
|
||||
else:
|
||||
with pytest.raises(ValueError):
|
||||
util.DREAM3D_base_group(tmp_path/'base_group.dream3d')
|
||||
|
||||
@pytest.mark.parametrize('complete',[True,False])
|
||||
def test_D3D_cell_data_group(self,tmp_path,complete):
|
||||
base_group = ''.join(random.choices('DAMASK', k=10))
|
||||
cell_data_group = ''.join(random.choices('KULeuven', k=10))
|
||||
cells = np.random.randint(1,50,3)
|
||||
with h5py.File(tmp_path/'cell_data_group.dream3d','w') as f:
|
||||
f.create_group(os.path.join(base_group,'_SIMPL_GEOMETRY'))
|
||||
f[os.path.join(base_group,'_SIMPL_GEOMETRY')].create_dataset('SPACING',data=np.ones(3))
|
||||
f[os.path.join(base_group,'_SIMPL_GEOMETRY')].create_dataset('DIMENSIONS',data=cells[::-1])
|
||||
f[base_group].create_group(cell_data_group)
|
||||
if complete:
|
||||
f[os.path.join(base_group,cell_data_group)].create_dataset('data',shape=np.append(cells,1))
|
||||
|
||||
if complete:
|
||||
assert cell_data_group == util.DREAM3D_cell_data_group(tmp_path/'cell_data_group.dream3d')
|
||||
else:
|
||||
with pytest.raises(ValueError):
|
||||
util.DREAM3D_cell_data_group(tmp_path/'cell_data_group.dream3d')
|
||||
|
|
|
@ -93,7 +93,7 @@ subroutine DAMASK_interface_init
|
|||
#endif
|
||||
print*, achar(27)//'[0m'
|
||||
|
||||
print*, 'Roters et al., Computational Materials Science 158:420–478, 2019'
|
||||
print*, 'F. Roters et al., Computational Materials Science 158:420–478, 2019'
|
||||
print*, 'https://doi.org/10.1016/j.commatsci.2018.04.030'
|
||||
|
||||
print'(/,a)', ' Version: '//DAMASKVERSION
|
||||
|
|
|
@ -117,7 +117,7 @@ program DAMASK_grid
|
|||
call CPFEM_initAll
|
||||
print'(/,a)', ' <<<+- DAMASK_grid init -+>>>'; flush(IO_STDOUT)
|
||||
|
||||
print*, 'Shanthraj et al., Handbook of Mechanics of Materials, 2019'
|
||||
print*, 'P. Shanthraj et al., Handbook of Mechanics of Materials, 2019'
|
||||
print*, 'https://doi.org/10.1007/978-981-10-6855-3_80'
|
||||
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ subroutine grid_damage_spectral_init
|
|||
|
||||
print'(/,a)', ' <<<+- grid_spectral_damage init -+>>>'
|
||||
|
||||
print*, 'Shanthraj et al., Handbook of Mechanics of Materials, 2019'
|
||||
print*, 'P. Shanthraj et al., Handbook of Mechanics of Materials, 2019'
|
||||
print*, 'https://doi.org/10.1007/978-981-10-6855-3_80'
|
||||
|
||||
!-------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -105,10 +105,10 @@ subroutine grid_mechanical_spectral_basic_init
|
|||
|
||||
print'(/,a)', ' <<<+- grid_mechanical_spectral_basic init -+>>>'; flush(IO_STDOUT)
|
||||
|
||||
print*, 'Eisenlohr et al., International Journal of Plasticity 46:37–53, 2013'
|
||||
print*, 'P. Eisenlohr et al., International Journal of Plasticity 46:37–53, 2013'
|
||||
print*, 'https://doi.org/10.1016/j.ijplas.2012.09.012'//IO_EOL
|
||||
|
||||
print*, 'Shanthraj et al., International Journal of Plasticity 66:31–45, 2015'
|
||||
print*, 'P. Shanthraj et al., International Journal of Plasticity 66:31–45, 2015'
|
||||
print*, 'https://doi.org/10.1016/j.ijplas.2014.02.006'
|
||||
|
||||
!-------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -118,7 +118,7 @@ subroutine grid_mechanical_spectral_polarisation_init
|
|||
|
||||
print'(/,a)', ' <<<+- grid_mechanical_spectral_polarization init -+>>>'; flush(IO_STDOUT)
|
||||
|
||||
print*, 'Shanthraj et al., International Journal of Plasticity 66:31–45, 2015'
|
||||
print*, 'P. Shanthraj et al., International Journal of Plasticity 66:31–45, 2015'
|
||||
print*, 'https://doi.org/10.1016/j.ijplas.2014.02.006'
|
||||
|
||||
!-------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -75,7 +75,7 @@ subroutine grid_thermal_spectral_init(T_0)
|
|||
|
||||
print'(/,a)', ' <<<+- grid_thermal_spectral init -+>>>'
|
||||
|
||||
print*, 'Shanthraj et al., Handbook of Mechanics of Materials, 2019'
|
||||
print*, 'P. Shanthraj et al., Handbook of Mechanics of Materials, 2019'
|
||||
print*, 'https://doi.org/10.1007/978-981-10-6855-3_80'
|
||||
|
||||
!-------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -176,16 +176,16 @@ subroutine spectral_utilities_init
|
|||
|
||||
print'(/,a)', ' <<<+- spectral_utilities init -+>>>'
|
||||
|
||||
print*, 'Diehl, Diploma Thesis TU München, 2010'
|
||||
print*, 'M. Diehl, Diploma Thesis TU München, 2010'
|
||||
print*, 'https://doi.org/10.13140/2.1.3234.3840'//IO_EOL
|
||||
|
||||
print*, 'Eisenlohr et al., International Journal of Plasticity 46:37–53, 2013'
|
||||
print*, 'P. Eisenlohr et al., International Journal of Plasticity 46:37–53, 2013'
|
||||
print*, 'https://doi.org/10.1016/j.ijplas.2012.09.012'//IO_EOL
|
||||
|
||||
print*, 'Shanthraj et al., International Journal of Plasticity 66:31–45, 2015'
|
||||
print*, 'P. Shanthraj et al., International Journal of Plasticity 66:31–45, 2015'
|
||||
print*, 'https://doi.org/10.1016/j.ijplas.2014.02.006'//IO_EOL
|
||||
|
||||
print*, 'Shanthraj et al., Handbook of Mechanics of Materials, 2019'
|
||||
print*, 'P. Shanthraj et al., Handbook of Mechanics of Materials, 2019'
|
||||
print*, 'https://doi.org/10.1007/978-981-10-6855-3_80'
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -276,8 +276,8 @@ subroutine materialpoint_stressAndItsTangent(dt,FEsolving_execIP,FEsolving_execE
|
|||
|
||||
call phase_restore(ce,.false.) ! wrong name (is more a forward function)
|
||||
|
||||
if(homogState(ho)%sizeState > 0) homogState(ho)%State(:,me) = homogState(ho)%State0(:,me)
|
||||
if(damageState_h(ho)%sizeState > 0) damageState_h(ho)%State(:,me) = damageState_h(ho)%State0(:,me)
|
||||
if(homogState(ho)%sizeState > 0) homogState(ho)%state(:,me) = homogState(ho)%state0(:,me)
|
||||
if(damageState_h(ho)%sizeState > 0) damageState_h(ho)%state(:,me) = damageState_h(ho)%state0(:,me)
|
||||
call damage_partition(ce)
|
||||
|
||||
doneAndHappy = [.false.,.true.]
|
||||
|
@ -287,20 +287,17 @@ subroutine materialpoint_stressAndItsTangent(dt,FEsolving_execIP,FEsolving_execE
|
|||
.and. NiterationMPstate < num%nMPstate)
|
||||
NiterationMPstate = NiterationMPstate + 1
|
||||
|
||||
call mechanical_partition(homogenization_F(1:3,1:3,ce),ce)
|
||||
converged = .true.
|
||||
do co = 1, myNgrains
|
||||
converged = converged .and. crystallite_stress(dt,co,ip,el)
|
||||
enddo
|
||||
|
||||
if (.not. doneAndHappy(1)) then
|
||||
call mechanical_partition(homogenization_F(1:3,1:3,ce),ce)
|
||||
converged = .true.
|
||||
do co = 1, myNgrains
|
||||
converged = converged .and. crystallite_stress(dt,co,ip,el)
|
||||
enddo
|
||||
|
||||
if (.not. converged) then
|
||||
doneAndHappy = [.true.,.false.]
|
||||
else
|
||||
doneAndHappy = mechanical_updateState(dt,homogenization_F(1:3,1:3,ce),ce)
|
||||
converged = all(doneAndHappy)
|
||||
endif
|
||||
if (converged) then
|
||||
doneAndHappy = mechanical_updateState(dt,homogenization_F(1:3,1:3,ce),ce)
|
||||
converged = all(doneAndHappy)
|
||||
else
|
||||
doneAndHappy = [.true.,.false.]
|
||||
endif
|
||||
|
||||
enddo convergenceLooping
|
||||
|
@ -450,7 +447,7 @@ subroutine homogenization_restartRead(fileHandle)
|
|||
|
||||
groupHandle(2) = HDF5_openGroup(groupHandle(1),material_name_homogenization(ho))
|
||||
|
||||
call HDF5_read(groupHandle(2),homogState(ho)%state,'omega') ! ToDo: should be done by mech
|
||||
call HDF5_read(groupHandle(2),homogState(ho)%state0,'omega') ! ToDo: should be done by mech
|
||||
|
||||
call HDF5_closeGroup(groupHandle(2))
|
||||
|
||||
|
|
|
@ -91,12 +91,11 @@ module subroutine mechanical_RGC_init(num_homogMech)
|
|||
|
||||
print'(a,i2)', ' # instances: ',count(homogenization_type == HOMOGENIZATION_RGC_ID); flush(IO_STDOUT)
|
||||
|
||||
print*, 'Tjahjanto et al., International Journal of Material Forming 2(1):939–942, 2009'
|
||||
print*, 'D.D. Tjahjanto et al., International Journal of Material Forming 2(1):939–942, 2009'
|
||||
print*, 'https://doi.org/10.1007/s12289-009-0619-1'//IO_EOL
|
||||
|
||||
print*, 'Tjahjanto et al., Modelling and Simulation in Materials Science and Engineering 18:015006, 2010'
|
||||
print*, 'https://doi.org/10.1088/0965-0393/18/1/015006'//IO_EOL
|
||||
|
||||
print*, 'D.D. Tjahjanto et al., Modelling and Simulation in Materials Science and Engineering 18:015006, 2010'
|
||||
print*, 'https://doi.org/10.1088/0965-0393/18/1/015006'//IO_EOL
|
||||
|
||||
|
||||
material_homogenization => config_material%get('homogenization')
|
||||
|
|
|
@ -492,7 +492,7 @@ function integrateStress(F,subFp0,subFi0,Delta_t,co,ip,el) result(broken)
|
|||
cycle LpLoop
|
||||
endif
|
||||
|
||||
calculateJacobiLi: if (mod(jacoCounterLp, num%iJacoLpresiduum) == 0) then
|
||||
calculateJacobiLp: if (mod(jacoCounterLp, num%iJacoLpresiduum) == 0) then
|
||||
jacoCounterLp = jacoCounterLp + 1
|
||||
|
||||
do o=1,3; do p=1,3
|
||||
|
@ -504,7 +504,7 @@ function integrateStress(F,subFp0,subFi0,Delta_t,co,ip,el) result(broken)
|
|||
call dgesv(9,1,dRLp_dLp,9,devNull_9,temp_9,9,ierr) ! solve dRLp/dLp * delta Lp = -res for delta Lp
|
||||
if (ierr /= 0) return ! error
|
||||
deltaLp = - math_9to33(temp_9)
|
||||
endif calculateJacobiLi
|
||||
endif calculateJacobiLp
|
||||
|
||||
Lpguess = Lpguess &
|
||||
+ deltaLp * steplengthLp
|
||||
|
@ -532,7 +532,7 @@ function integrateStress(F,subFp0,subFi0,Delta_t,co,ip,el) result(broken)
|
|||
cycle LiLoop
|
||||
endif
|
||||
|
||||
calculateJacobiLp: if (mod(jacoCounterLi, num%iJacoLpresiduum) == 0) then
|
||||
calculateJacobiLi: if (mod(jacoCounterLi, num%iJacoLpresiduum) == 0) then
|
||||
jacoCounterLi = jacoCounterLi + 1
|
||||
|
||||
temp_33 = matmul(matmul(A,B),invFi_current)
|
||||
|
@ -551,7 +551,7 @@ function integrateStress(F,subFp0,subFi0,Delta_t,co,ip,el) result(broken)
|
|||
call dgesv(9,1,dRLi_dLi,9,devNull_9,temp_9,9,ierr) ! solve dRLi/dLp * delta Li = -res for delta Li
|
||||
if (ierr /= 0) return ! error
|
||||
deltaLi = - math_9to33(temp_9)
|
||||
endif calculateJacobiLp
|
||||
endif calculateJacobiLi
|
||||
|
||||
Liguess = Liguess &
|
||||
+ deltaLi * steplengthLi
|
||||
|
|
|
@ -103,8 +103,8 @@ module function plastic_dislotungsten_init() result(myPlasticity)
|
|||
print'(/,a)', ' <<<+- phase:mechanical:plastic:dislotungsten init -+>>>'
|
||||
print'(a,i0)', ' # phases: ',count(myPlasticity); flush(IO_STDOUT)
|
||||
|
||||
print*, 'Cereceda et al., International Journal of Plasticity 78:242–256, 2016'
|
||||
print*, 'https://dx.doi.org/10.1016/j.ijplas.2015.09.002'
|
||||
print*, 'D. Cereceda et al., International Journal of Plasticity 78:242–256, 2016'
|
||||
print*, 'https://doi.org/10.1016/j.ijplas.2015.09.002'
|
||||
|
||||
|
||||
phases => config_material%get('phase')
|
||||
|
|
|
@ -150,13 +150,13 @@ module function plastic_dislotwin_init() result(myPlasticity)
|
|||
print'(/,a)', ' <<<+- phase:mechanical:plastic:dislotwin init -+>>>'
|
||||
print'(a,i0)', ' # phases: ',count(myPlasticity); flush(IO_STDOUT)
|
||||
|
||||
print*, 'Ma and Roters, Acta Materialia 52(12):3603–3612, 2004'
|
||||
print*, 'A. Ma and F. Roters, Acta Materialia 52(12):3603–3612, 2004'
|
||||
print*, 'https://doi.org/10.1016/j.actamat.2004.04.012'//IO_EOL
|
||||
|
||||
print*, 'Roters et al., Computational Materials Science 39:91–95, 2007'
|
||||
print*, 'F. Roters et al., Computational Materials Science 39:91–95, 2007'
|
||||
print*, 'https://doi.org/10.1016/j.commatsci.2006.04.014'//IO_EOL
|
||||
|
||||
print*, 'Wong et al., Acta Materialia 118:140–151, 2016'
|
||||
print*, 'S.L. Wong et al., Acta Materialia 118:140–151, 2016'
|
||||
print*, 'https://doi.org/10.1016/j.actamat.2016.07.032'
|
||||
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ module function plastic_isotropic_init() result(myPlasticity)
|
|||
print'(/,a)', ' <<<+- phase:mechanical:plastic:isotropic init -+>>>'
|
||||
print'(a,i0)', ' # phases: ',count(myPlasticity); flush(IO_STDOUT)
|
||||
|
||||
print*, 'Maiti and Eisenlohr, Scripta Materialia 145:37–40, 2018'
|
||||
print*, 'T. Maiti and P. Eisenlohr, Scripta Materialia 145:37–40, 2018'
|
||||
print*, 'https://doi.org/10.1016/j.scriptamat.2017.09.047'
|
||||
|
||||
phases => config_material%get('phase')
|
||||
|
|
|
@ -203,10 +203,10 @@ module function plastic_nonlocal_init() result(myPlasticity)
|
|||
print'(/,a)', ' <<<+- phase:mechanical:plastic:nonlocal init -+>>>'
|
||||
print'(a,i0)', ' # phases: ',Ninstances; flush(IO_STDOUT)
|
||||
|
||||
print*, 'Reuber et al., Acta Materialia 71:333–348, 2014'
|
||||
print*, 'C. Reuber et al., Acta Materialia 71:333–348, 2014'
|
||||
print*, 'https://doi.org/10.1016/j.actamat.2014.03.012'//IO_EOL
|
||||
|
||||
print*, 'Kords, Dissertation RWTH Aachen, 2014'
|
||||
print*, 'C. Kords, Dissertation RWTH Aachen, 2014'
|
||||
print*, 'http://publications.rwth-aachen.de/record/229993'
|
||||
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ subroutine results_init(restart)
|
|||
|
||||
print'(/,a)', ' <<<+- results init -+>>>'; flush(IO_STDOUT)
|
||||
|
||||
print*, 'Diehl et al., Integrating Materials and Manufacturing Innovation 6(1):83–91, 2017'
|
||||
print*, 'M. Diehl et al., Integrating Materials and Manufacturing Innovation 6(1):83–91, 2017'
|
||||
print*, 'https://doi.org/10.1007/s40192-017-0084-5'//IO_EOL
|
||||
|
||||
if(.not. restart) then
|
||||
|
@ -71,7 +71,8 @@ subroutine results_init(restart)
|
|||
call results_addAttribute('DAMASK_version',DAMASKVERSION)
|
||||
call get_command(commandLine)
|
||||
call results_addAttribute('call',trim(commandLine))
|
||||
call results_closeGroup(results_addGroup('mapping'))
|
||||
call results_closeGroup(results_addGroup('cell_to'))
|
||||
call results_addAttribute('description','mappings to place data in space','cell_to')
|
||||
call results_closeJobFile
|
||||
endif
|
||||
|
||||
|
@ -431,8 +432,8 @@ subroutine results_mapping_phase(phaseAt,memberAtLocal,label)
|
|||
integer(HID_T) :: &
|
||||
loc_id, & !< identifier of group in file
|
||||
dtype_id, & !< identifier of compound data type
|
||||
name_id, & !< identifier of name (string) in compound data type
|
||||
position_id, & !< identifier of position/index (integer) in compound data type
|
||||
label_id, & !< identifier of label (string) in compound data type
|
||||
entry_id, & !< identifier of entry (integer) in compound data type
|
||||
dset_id, &
|
||||
memspace_id, &
|
||||
filespace_id, &
|
||||
|
@ -497,21 +498,21 @@ subroutine results_mapping_phase(phaseAt,memberAtLocal,label)
|
|||
|
||||
call h5tcreate_f(H5T_COMPOUND_F, type_size_string + type_size_int, dtype_id, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5tinsert_f(dtype_id, 'name', 0_SIZE_T, dt_id,hdferr)
|
||||
call h5tinsert_f(dtype_id, 'label', 0_SIZE_T, dt_id,hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5tinsert_f(dtype_id, 'member', type_size_string, H5T_NATIVE_INTEGER, hdferr)
|
||||
call h5tinsert_f(dtype_id, 'entry', type_size_string, H5T_NATIVE_INTEGER, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
! create memory types for each component of the compound type
|
||||
call h5tcreate_f(H5T_COMPOUND_F, type_size_string, name_id, hdferr)
|
||||
call h5tcreate_f(H5T_COMPOUND_F, type_size_string, label_id, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5tinsert_f(name_id, 'name', 0_SIZE_T, dt_id, hdferr)
|
||||
call h5tinsert_f(label_id, 'label', 0_SIZE_T, dt_id, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
|
||||
call h5tcreate_f(H5T_COMPOUND_F, type_size_int, position_id, hdferr)
|
||||
call h5tcreate_f(H5T_COMPOUND_F, type_size_int, entry_id, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5tinsert_f(position_id, 'member', 0_SIZE_T, H5T_NATIVE_INTEGER, hdferr)
|
||||
call h5tinsert_f(entry_id, 'entry', 0_SIZE_T, H5T_NATIVE_INTEGER, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
|
||||
call h5tclose_f(dt_id, hdferr)
|
||||
|
@ -533,14 +534,14 @@ subroutine results_mapping_phase(phaseAt,memberAtLocal,label)
|
|||
call h5pset_preserve_f(plist_id, .true., hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
|
||||
loc_id = results_openGroup('/mapping')
|
||||
loc_id = results_openGroup('/cell_to')
|
||||
call h5dcreate_f(loc_id, 'phase', dtype_id, filespace_id, dset_id, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
|
||||
call h5dwrite_f(dset_id, name_id, reshape(label(pack(phaseAtMaterialpoint,.true.)),myShape), &
|
||||
call h5dwrite_f(dset_id, label_id, reshape(label(pack(phaseAtMaterialpoint,.true.)),myShape), &
|
||||
myShape, hdferr, file_space_id = filespace_id, mem_space_id = memspace_id, xfer_prp = plist_id)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5dwrite_f(dset_id, position_id, reshape(pack(memberAtGlobal,.true.),myShape), &
|
||||
call h5dwrite_f(dset_id, entry_id, reshape(pack(memberAtGlobal,.true.),myShape), &
|
||||
myShape, hdferr, file_space_id = filespace_id, mem_space_id = memspace_id, xfer_prp = plist_id)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
|
||||
|
@ -557,9 +558,11 @@ subroutine results_mapping_phase(phaseAt,memberAtLocal,label)
|
|||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5tclose_f(dtype_id, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5tclose_f(name_id, hdferr)
|
||||
call h5tclose_f(label_id, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5tclose_f(position_id, hdferr)
|
||||
call h5tclose_f(entry_id, hdferr)
|
||||
|
||||
call executionStamp('cell_to/phase','cell ID and constituent ID to phase results')
|
||||
|
||||
end subroutine results_mapping_phase
|
||||
|
||||
|
@ -586,8 +589,8 @@ subroutine results_mapping_homogenization(homogenizationAt,memberAtLocal,label)
|
|||
integer(HID_T) :: &
|
||||
loc_id, & !< identifier of group in file
|
||||
dtype_id, & !< identifier of compound data type
|
||||
name_id, & !< identifier of name (string) in compound data type
|
||||
position_id, & !< identifier of position/index (integer) in compound data type
|
||||
label_id, & !< identifier of label (string) in compound data type
|
||||
entry_id, & !< identifier of entry (integer) in compound data type
|
||||
dset_id, &
|
||||
memspace_id, &
|
||||
filespace_id, &
|
||||
|
@ -653,21 +656,21 @@ subroutine results_mapping_homogenization(homogenizationAt,memberAtLocal,label)
|
|||
|
||||
call h5tcreate_f(H5T_COMPOUND_F, type_size_string + type_size_int, dtype_id, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5tinsert_f(dtype_id, 'name', 0_SIZE_T, dt_id,hdferr)
|
||||
call h5tinsert_f(dtype_id, 'label', 0_SIZE_T, dt_id,hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5tinsert_f(dtype_id, 'member', type_size_string, H5T_NATIVE_INTEGER, hdferr)
|
||||
call h5tinsert_f(dtype_id, 'entry', type_size_string, H5T_NATIVE_INTEGER, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
! create memory types for each component of the compound type
|
||||
call h5tcreate_f(H5T_COMPOUND_F, type_size_string, name_id, hdferr)
|
||||
call h5tcreate_f(H5T_COMPOUND_F, type_size_string, label_id, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5tinsert_f(name_id, 'name', 0_SIZE_T, dt_id, hdferr)
|
||||
call h5tinsert_f(label_id, 'label', 0_SIZE_T, dt_id, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
|
||||
call h5tcreate_f(H5T_COMPOUND_F, type_size_int, position_id, hdferr)
|
||||
call h5tcreate_f(H5T_COMPOUND_F, type_size_int, entry_id, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5tinsert_f(position_id, 'member', 0_SIZE_T, H5T_NATIVE_INTEGER, hdferr)
|
||||
call h5tinsert_f(entry_id, 'entry', 0_SIZE_T, H5T_NATIVE_INTEGER, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
|
||||
call h5tclose_f(dt_id, hdferr)
|
||||
|
@ -689,14 +692,14 @@ subroutine results_mapping_homogenization(homogenizationAt,memberAtLocal,label)
|
|||
call h5pset_preserve_f(plist_id, .true., hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
|
||||
loc_id = results_openGroup('/mapping')
|
||||
loc_id = results_openGroup('/cell_to')
|
||||
call h5dcreate_f(loc_id, 'homogenization', dtype_id, filespace_id, dset_id, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
|
||||
call h5dwrite_f(dset_id, name_id, reshape(label(pack(homogenizationAtMaterialpoint,.true.)),myShape), &
|
||||
call h5dwrite_f(dset_id, label_id, reshape(label(pack(homogenizationAtMaterialpoint,.true.)),myShape), &
|
||||
myShape, hdferr, file_space_id = filespace_id, mem_space_id = memspace_id, xfer_prp = plist_id)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5dwrite_f(dset_id, position_id, reshape(pack(memberAtGlobal,.true.),myShape), &
|
||||
call h5dwrite_f(dset_id, entry_id, reshape(pack(memberAtGlobal,.true.),myShape), &
|
||||
myShape, hdferr, file_space_id = filespace_id, mem_space_id = memspace_id, xfer_prp = plist_id)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
|
||||
|
@ -713,11 +716,13 @@ subroutine results_mapping_homogenization(homogenizationAt,memberAtLocal,label)
|
|||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5tclose_f(dtype_id, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5tclose_f(name_id, hdferr)
|
||||
call h5tclose_f(label_id, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
call h5tclose_f(position_id, hdferr)
|
||||
call h5tclose_f(entry_id, hdferr)
|
||||
if(hdferr < 0) error stop 'HDF5 error'
|
||||
|
||||
call executionStamp('cell_to/homogenization','cell ID to homogenization results')
|
||||
|
||||
end subroutine results_mapping_homogenization
|
||||
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ subroutine rotations_init
|
|||
|
||||
print'(/,a)', ' <<<+- rotations init -+>>>'; flush(IO_STDOUT)
|
||||
|
||||
print*, 'Rowenhorst et al., Modelling and Simulation in Materials Science and Engineering 23:083501, 2015'
|
||||
print*, 'D. Rowenhorst et al., Modelling and Simulation in Materials Science and Engineering 23:083501, 2015'
|
||||
print*, 'https://doi.org/10.1088/0965-0393/23/8/083501'
|
||||
|
||||
call selfTest
|
||||
|
|
Loading…
Reference in New Issue