more flexible in selecting data

This commit is contained in:
Martin Diehl 2019-05-16 00:27:06 +02:00
parent c6863a6124
commit 3c0c0a2cd1
3 changed files with 52 additions and 11 deletions

View File

@ -22,10 +22,15 @@ parser.add_argument('filenames', nargs='+',
help='DADF5 files') help='DADF5 files')
parser.add_argument('-d','--dir', dest='dir',default='postProc',metavar='string', parser.add_argument('-d','--dir', dest='dir',default='postProc',metavar='string',
help='name of subdirectory to hold output') help='name of subdirectory to hold output')
parser.add_argument('--mat', nargs='+',
help='labels for materialpoint/homogenization',dest='mat')
parser.add_argument('--con', nargs='+',
help='labels for constituent/crystallite/constitutive',dest='con')
options = parser.parse_args() options = parser.parse_args()
options.labels = ['Fe','Fp','xi_sl'] if options.mat is None: options.mat=[]
if options.con is None: options.con=[]
# --- loop over input files ------------------------------------------------------------------------ # --- loop over input files ------------------------------------------------------------------------
@ -57,7 +62,7 @@ for filename in options.filenames:
header+=' 1_pos 2_pos 3_pos' header+=' 1_pos 2_pos 3_pos'
results.active['increments'] = [inc] results.active['increments'] = [inc]
for label in options.labels: for label in options.con:
for o in results.c_output_types: for o in results.c_output_types:
results.active['c_output_types'] = [o] results.active['c_output_types'] = [o]
for c in results.constituents: for c in results.constituents:
@ -67,12 +72,27 @@ for filename in options.filenames:
continue continue
label = x[0].split('/')[-1] label = x[0].split('/')[-1]
array = results.read_dataset(x,0) array = results.read_dataset(x,0)
d = np.product(np.shape(array)[1:]) d = int(np.product(np.shape(array)[1:]))
array = np.reshape(array,[np.product(results.grid),d]) array = np.reshape(array,[np.product(results.grid),d])
data = np.concatenate((data,array),1) data = np.concatenate((data,array),1)
header+= ''.join([' {}_{}'.format(j+1,label) for j in range(d)]) header+= ''.join([' {}_{}'.format(j+1,label) for j in range(d)])
for label in options.mat:
for o in results.m_output_types:
results.active['m_output_types'] = [o]
for m in results.materialpoints:
results.active['materialpoints'] = [m]
x = results.get_dataset_location(label)
if len(x) == 0:
continue
label = x[0].split('/')[-1]
array = results.read_dataset(x,0)
d = int(np.product(np.shape(array)[1:]))
array = np.reshape(array,[np.product(results.grid),d])
data = np.concatenate((data,array),1)
header+= ''.join([' {}_{}'.format(j+1,label) for j in range(d)])
dirname = os.path.abspath(os.path.join(os.path.dirname(filename),options.dir)) dirname = os.path.abspath(os.path.join(os.path.dirname(filename),options.dir))
try: try:

View File

@ -23,10 +23,15 @@ parser.add_argument('filenames', nargs='+',
help='DADF5 files') help='DADF5 files')
parser.add_argument('-d','--dir', dest='dir',default='postProc',metavar='string', parser.add_argument('-d','--dir', dest='dir',default='postProc',metavar='string',
help='name of subdirectory to hold output') help='name of subdirectory to hold output')
parser.add_argument('--mat', nargs='+',
help='labels for materialpoint/homogenization',dest='mat')
parser.add_argument('--con', nargs='+',
help='labels for constituent/crystallite/constitutive',dest='con')
options = parser.parse_args() options = parser.parse_args()
options.labels = ['Fe','Fp','xi_sl'] if options.mat is None: options.mat=[]
if options.con is None: options.con=[]
# --- loop over input files ------------------------------------------------------------------------ # --- loop over input files ------------------------------------------------------------------------
@ -54,7 +59,7 @@ for filename in options.filenames:
print('Output step {}/{}'.format(i+1,len(results.increments))) print('Output step {}/{}'.format(i+1,len(results.increments)))
vtk_data = [] vtk_data = []
results.active['increments'] = [inc] results.active['increments'] = [inc]
for label in options.labels: for label in options.con:
for o in results.c_output_types: for o in results.c_output_types:
results.active['c_output_types'] = [o] results.active['c_output_types'] = [o]
if o != 'generic': if o != 'generic':

View File

@ -82,7 +82,6 @@ class DADF5():
except: except:
pass pass
for m in self.active['materialpoints']: for m in self.active['materialpoints']:
print('\n'+m)
group_materialpoint = group_inc+'/materialpoint/'+m group_materialpoint = group_inc+'/materialpoint/'+m
for t in self.active['m_output_types']: for t in self.active['m_output_types']:
print(' {}'.format(t)) print(' {}'.format(t))
@ -108,6 +107,14 @@ class DADF5():
path.append(group_constituent+'/'+t+'/'+label) path.append(group_constituent+'/'+t+'/'+label)
except: except:
pass pass
for m in self.active['materialpoints']:
group_materialpoint = group_inc+'/materialpoint/'+m
for t in self.active['m_output_types']:
try:
f[group_materialpoint+'/'+t+'/'+label]
path.append(group_materialpoint+'/'+t+'/'+label)
except:
pass
return path return path
@ -122,9 +129,18 @@ class DADF5():
dataset = np.full(shape,np.nan) dataset = np.full(shape,np.nan)
for pa in path: for pa in path:
label = pa.split('/')[2] label = pa.split('/')[2]
try:
p = np.where(f['mapping/cellResults/constituent'][:,c]['Name'] == str.encode(label))[0] p = np.where(f['mapping/cellResults/constituent'][:,c]['Name'] == str.encode(label))[0]
u = (f['mapping/cellResults/constituent'][p,c]['Position']) u = (f['mapping/cellResults/constituent'][p,c]['Position'])
dataset[p,:] = f[pa][u,:] dataset[p,:] = f[pa][u,:] # does not work for scalar datasets
except:
pass
try:
p = np.where(f['mapping/cellResults/materialpoint']['Name'] == str.encode(label))[0]
u = (f['mapping/cellResults/materialpoint'][p.tolist()]['Position'])
dataset[p,:] = f[pa][u,:] # does not work for scalar datasets
except:
pass
return dataset return dataset