parent
57180952ec
commit
06d11a72da
|
@ -50,7 +50,8 @@ for name in filenames:
|
||||||
for l in [options.quaternion,options.phase,options.microstructure]:
|
for l in [options.quaternion,options.phase,options.microstructure]:
|
||||||
if l is not None: labels.append(l)
|
if l is not None: labels.append(l)
|
||||||
|
|
||||||
geom = damask.Geom.load_table(name,options.pos,labels)
|
t = damask.Table.load(name)
|
||||||
|
geom = damask.Geom.from_table(t,options.pos,labels)
|
||||||
damask.util.croak(geom)
|
damask.util.croak(geom)
|
||||||
|
|
||||||
geom.save_ASCII(sys.stdout if name is None else os.path.splitext(name)[0]+'.geom',compress=False)
|
geom.save_ASCII(sys.stdout if name is None else os.path.splitext(name)[0]+'.geom',compress=False)
|
||||||
|
|
|
@ -6,7 +6,6 @@ from . import grid_filters
|
||||||
from . import Config
|
from . import Config
|
||||||
from . import Lattice
|
from . import Lattice
|
||||||
from . import Rotation
|
from . import Rotation
|
||||||
from . import Table
|
|
||||||
|
|
||||||
class ConfigMaterial(Config):
|
class ConfigMaterial(Config):
|
||||||
"""Material configuration."""
|
"""Material configuration."""
|
||||||
|
@ -27,13 +26,13 @@ class ConfigMaterial(Config):
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def load_table(fname,coordinates=None,constituents={},**kwargs):
|
def from_table(table,coordinates=None,constituents={},**kwargs):
|
||||||
"""
|
"""
|
||||||
Load from an ASCII table.
|
Load from an ASCII table.
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
fname : str, file handle, or damask.Table
|
table : damask.Table
|
||||||
Table that contains material information.
|
Table that contains material information.
|
||||||
coordinates : str, optional
|
coordinates : str, optional
|
||||||
Label of spatial coordiates. Used for sorting and performing a
|
Label of spatial coordiates. Used for sorting and performing a
|
||||||
|
@ -50,11 +49,12 @@ class ConfigMaterial(Config):
|
||||||
--------
|
--------
|
||||||
>>> import damask
|
>>> import damask
|
||||||
>>> import damask.ConfigMaterial as cm
|
>>> import damask.ConfigMaterial as cm
|
||||||
>>> damask.Table.load('small.txt')
|
>>> t = damask.Table.load('small.txt')
|
||||||
|
>>> t
|
||||||
pos pos pos qu qu qu qu phase homog
|
pos pos pos qu qu qu qu phase homog
|
||||||
0 0 0 0 0.19 0.8 0.24 -0.51 Aluminum SX
|
0 0 0 0 0.19 0.8 0.24 -0.51 Aluminum SX
|
||||||
1 1 0 0 0.8 0.19 0.24 -0.51 Steel SX
|
1 1 0 0 0.8 0.19 0.24 -0.51 Steel SX
|
||||||
>>> cm.load_table('small.txt','pos',{'O':'qu','phase':'phase'},homogenization='homog')
|
>>> cm.from_table(t,'pos',{'O':'qu','phase':'phase'},homogenization='homog')
|
||||||
material:
|
material:
|
||||||
- constituents:
|
- constituents:
|
||||||
- O: [0.19, 0.8, 0.24, -0.51]
|
- O: [0.19, 0.8, 0.24, -0.51]
|
||||||
|
@ -68,10 +68,12 @@ class ConfigMaterial(Config):
|
||||||
homogenization: SX
|
homogenization: SX
|
||||||
|
|
||||||
"""
|
"""
|
||||||
t = Table.load(fname)
|
|
||||||
if coordinates is not None:
|
if coordinates is not None:
|
||||||
t = t.sort_by([f'{i}_{coordinates}' for i in range(3,0,-1)])
|
t = table.sort_by([f'{i}_{coordinates}' for i in range(3,0,-1)])
|
||||||
grid_filters.coord0_check(t.get(coordinates))
|
grid_filters.coord0_check(t.get(coordinates))
|
||||||
|
else:
|
||||||
|
t = table
|
||||||
|
|
||||||
constituents_ = {k:t.get(v) for k,v in constituents.items()}
|
constituents_ = {k:t.get(v) for k,v in constituents.items()}
|
||||||
kwargs_ = {k:t.get(v) for k,v in kwargs.items()}
|
kwargs_ = {k:t.get(v) for k,v in kwargs.items()}
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@ from . import environment
|
||||||
from . import VTK
|
from . import VTK
|
||||||
from . import util
|
from . import util
|
||||||
from . import grid_filters
|
from . import grid_filters
|
||||||
from . import Table
|
|
||||||
from . import Rotation
|
from . import Rotation
|
||||||
|
|
||||||
|
|
||||||
|
@ -246,14 +245,14 @@ class Geom:
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def load_table(fname,coordinates,labels):
|
def from_table(table,coordinates,labels):
|
||||||
"""
|
"""
|
||||||
Load an ASCII table.
|
Load an ASCII table.
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
fname : str, file handle, or damask.Table
|
table : damask.Table
|
||||||
Table that contains geometry information.
|
Table that contains material information.
|
||||||
coordinates : str
|
coordinates : str
|
||||||
Label of the column containing the spatial coordinates.
|
Label of the column containing the spatial coordinates.
|
||||||
labels : str or list of str
|
labels : str or list of str
|
||||||
|
@ -261,16 +260,15 @@ class Geom:
|
||||||
Each unique combintation of values results in a material.
|
Each unique combintation of values results in a material.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
table = (fname if isinstance(fname,Table) else Table.load(fname)). \
|
t = table.sort_by([f'{i}_{coordinates}' for i in range(3,0,-1)])
|
||||||
sort_by([f'{i}_{coordinates}' for i in range(3,0,-1)])
|
|
||||||
|
|
||||||
grid,size,origin = grid_filters.cell_coord0_gridSizeOrigin(table.get(coordinates))
|
grid,size,origin = grid_filters.cell_coord0_gridSizeOrigin(t.get(coordinates))
|
||||||
|
|
||||||
labels_ = [labels] if isinstance(labels,str) else labels
|
labels_ = [labels] if isinstance(labels,str) else labels
|
||||||
_,unique_inverse = np.unique(np.hstack([table.get(l) for l in labels_]),return_inverse=True,axis=0)
|
_,unique_inverse = np.unique(np.hstack([t.get(l) for l in labels_]),return_inverse=True,axis=0)
|
||||||
ma = unique_inverse.reshape(grid,order='F') + 1
|
ma = unique_inverse.reshape(grid,order='F') + 1
|
||||||
|
|
||||||
return Geom(ma,size,origin,util.execution_stamp('Geom','load_table'))
|
return Geom(ma,size,origin,util.execution_stamp('Geom','from_table'))
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
Loading…
Reference in New Issue