Merge branch 'new-ASCII' of magit1.mpie.de:/damask/DAMASK into new-ASCII
This commit is contained in:
commit
1110affec2
|
@ -3,8 +3,8 @@
|
||||||
# always use LF, even if the files are edited on windows, they need to be compiled/used on unix
|
# always use LF, even if the files are edited on windows, they need to be compiled/used on unix
|
||||||
* text eol=lf
|
* text eol=lf
|
||||||
|
|
||||||
installation/mods_Abaqus/abaqus_v6_windows.env eol=crlf
|
|
||||||
# Denote all files that are truly binary and should not be modified.
|
# Denote all files that are truly binary and should not be modified.
|
||||||
*.png binary
|
*.png binary
|
||||||
*.jpg binary
|
*.jpg binary
|
||||||
*.cae binary
|
*.cae binary
|
||||||
|
*.hdf5 binary
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
stages:
|
stages:
|
||||||
- prepareAll
|
- prepareAll
|
||||||
|
- python
|
||||||
- preprocessing
|
- preprocessing
|
||||||
- postprocessing
|
- postprocessing
|
||||||
- compilePETSc
|
- compilePETSc
|
||||||
|
@ -103,6 +104,16 @@ checkout:
|
||||||
- master
|
- master
|
||||||
- release
|
- release
|
||||||
|
|
||||||
|
###################################################################################################
|
||||||
|
Pytest:
|
||||||
|
stage: python
|
||||||
|
script:
|
||||||
|
- cd $DAMASKROOT/python
|
||||||
|
- pytest
|
||||||
|
except:
|
||||||
|
- master
|
||||||
|
- release
|
||||||
|
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
OrientationRelationship:
|
OrientationRelationship:
|
||||||
stage: preprocessing
|
stage: preprocessing
|
||||||
|
@ -308,13 +319,6 @@ nonlocal_densityConservation:
|
||||||
- master
|
- master
|
||||||
- release
|
- release
|
||||||
|
|
||||||
Spectral_ipNeighborhood:
|
|
||||||
stage: grid
|
|
||||||
script: Spectral_ipNeighborhood/test.py
|
|
||||||
except:
|
|
||||||
- master
|
|
||||||
- release
|
|
||||||
|
|
||||||
RGC_DetectChanges:
|
RGC_DetectChanges:
|
||||||
stage: grid
|
stage: grid
|
||||||
script: RGC_DetectChanges/test.py
|
script: RGC_DetectChanges/test.py
|
||||||
|
|
2
PRIVATE
2
PRIVATE
|
@ -1 +1 @@
|
||||||
Subproject commit a3a88933cbb92b81d481305ce93374917baf3980
|
Subproject commit 66d562c755cd9aa4bbb8280c509383014acd52db
|
|
@ -1,9 +0,0 @@
|
||||||
[all]
|
|
||||||
(output) orientation # quaternion
|
|
||||||
(output) grainrotation # deviation from initial orientation as axis (1-3) and angle in degree (4) in crystal reference coordinates
|
|
||||||
(output) F # deformation gradient tensor
|
|
||||||
(output) Fe # elastic deformation gradient tensor
|
|
||||||
(output) Fp # plastic deformation gradient tensor
|
|
||||||
(output) P # first Piola-Kichhoff stress tensor
|
|
||||||
(output) S # second Piola-Kichhoff stress tensor
|
|
||||||
(output) Lp # plastic velocity gradient tensor
|
|
|
@ -5,18 +5,6 @@
|
||||||
[SX]
|
[SX]
|
||||||
mech none
|
mech none
|
||||||
|
|
||||||
#-------------------#
|
|
||||||
<crystallite>
|
|
||||||
#-------------------#
|
|
||||||
[almostAll]
|
|
||||||
(output) orientation # quaternion
|
|
||||||
(output) grainrotation # deviation from initial orientation as axis (1-3) and angle in degree (4)
|
|
||||||
(output) F # deformation gradient tensor
|
|
||||||
(output) Fe # elastic deformation gradient tensor
|
|
||||||
(output) Fp # plastic deformation gradient tensor
|
|
||||||
(output) P # first Piola-Kichhoff stress tensor
|
|
||||||
(output) Lp # plastic velocity gradient tensor
|
|
||||||
|
|
||||||
#-------------------#
|
#-------------------#
|
||||||
<phase>
|
<phase>
|
||||||
#-------------------#
|
#-------------------#
|
||||||
|
|
|
@ -59,35 +59,35 @@ for filename in options.filenames:
|
||||||
data = np.concatenate((data,coords),1)
|
data = np.concatenate((data,coords),1)
|
||||||
header+=' 1_pos 2_pos 3_pos'
|
header+=' 1_pos 2_pos 3_pos'
|
||||||
|
|
||||||
|
results.set_visible('materialpoints',False)
|
||||||
|
results.set_visible('constituents', True)
|
||||||
for label in options.con:
|
for label in options.con:
|
||||||
for p in results.iter_visible('con_physics'):
|
x = results.get_dataset_location(label)
|
||||||
for c in results.iter_visible('constituents'):
|
if len(x) == 0:
|
||||||
x = results.get_dataset_location(label)
|
continue
|
||||||
if len(x) == 0:
|
array = results.read_dataset(x,0,plain=True)
|
||||||
continue
|
d = np.product(np.shape(array)[1:])
|
||||||
array = results.read_dataset(x,0,plain=True)
|
data = np.concatenate((data,np.reshape(array,[np.product(results.grid),d])),1)
|
||||||
d = int(np.product(np.shape(array)[1:]))
|
|
||||||
data = np.concatenate((data,np.reshape(array,[np.product(results.grid),d])),1)
|
|
||||||
|
|
||||||
if d>1:
|
if d>1:
|
||||||
header+= ''.join([' {}_{}'.format(j+1,label) for j in range(d)])
|
header+= ''.join([' {}_{}'.format(j+1,label) for j in range(d)])
|
||||||
else:
|
else:
|
||||||
header+=' '+label
|
header+=' '+label
|
||||||
|
|
||||||
|
results.set_visible('constituents', False)
|
||||||
|
results.set_visible('materialpoints',True)
|
||||||
for label in options.mat:
|
for label in options.mat:
|
||||||
for p in results.iter_visible('mat_physics'):
|
x = results.get_dataset_location(label)
|
||||||
for m in results.iter_visible('materialpoints'):
|
if len(x) == 0:
|
||||||
x = results.get_dataset_location(label)
|
continue
|
||||||
if len(x) == 0:
|
array = results.read_dataset(x,0,plain=True)
|
||||||
continue
|
d = np.product(np.shape(array)[1:])
|
||||||
array = results.read_dataset(x,0,plain=True)
|
data = np.concatenate((data,np.reshape(array,[np.product(results.grid),d])),1)
|
||||||
d = int(np.product(np.shape(array)[1:]))
|
|
||||||
data = np.concatenate((data,np.reshape(array,[np.product(results.grid),d])),1)
|
|
||||||
|
|
||||||
if d>1:
|
if d>1:
|
||||||
header+= ''.join([' {}_{}'.format(j+1,label) for j in range(d)])
|
header+= ''.join([' {}_{}'.format(j+1,label) for j in range(d)])
|
||||||
else:
|
else:
|
||||||
header+=' '+label
|
header+=' '+label
|
||||||
|
|
||||||
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))
|
||||||
if not os.path.isdir(dirname):
|
if not os.path.isdir(dirname):
|
||||||
|
|
|
@ -74,7 +74,6 @@ for filename in options.filenames:
|
||||||
results.set_visible('materialpoints',False)
|
results.set_visible('materialpoints',False)
|
||||||
results.set_visible('constituents', True)
|
results.set_visible('constituents', True)
|
||||||
for label in options.con:
|
for label in options.con:
|
||||||
|
|
||||||
for p in results.iter_visible('con_physics'):
|
for p in results.iter_visible('con_physics'):
|
||||||
if p != 'generic':
|
if p != 'generic':
|
||||||
for c in results.iter_visible('constituents'):
|
for c in results.iter_visible('constituents'):
|
||||||
|
|
|
@ -6,7 +6,7 @@ import numpy as np
|
||||||
class Table():
|
class Table():
|
||||||
"""Store spreadsheet-like data."""
|
"""Store spreadsheet-like data."""
|
||||||
|
|
||||||
def __init__(self,array,columns,comments=None):
|
def __init__(self,array,headings,comments=None):
|
||||||
"""
|
"""
|
||||||
New spreadsheet data.
|
New spreadsheet data.
|
||||||
|
|
||||||
|
@ -14,8 +14,8 @@ class Table():
|
||||||
----------
|
----------
|
||||||
array : numpy.ndarray
|
array : numpy.ndarray
|
||||||
Data.
|
Data.
|
||||||
columns : dict
|
headings : dict
|
||||||
Column labels and shape. Example 'F':(3,3) for a deformation gradient.
|
Column headings. Labels as keys and shape as tuple. Example 'F':(3,3) for a deformation gradient.
|
||||||
comments : iterable of str, optional
|
comments : iterable of str, optional
|
||||||
Additional, human-readable information
|
Additional, human-readable information
|
||||||
|
|
||||||
|
@ -24,11 +24,14 @@ class Table():
|
||||||
|
|
||||||
d = {}
|
d = {}
|
||||||
i = 0
|
i = 0
|
||||||
for label in columns:
|
for label in headings:
|
||||||
for components in range(np.prod(columns[label])):
|
for components in range(np.prod(headings[label])):
|
||||||
d[i] = label
|
d[i] = label
|
||||||
i+=1
|
i+=1
|
||||||
|
|
||||||
|
if i != self.data.shape[1]:
|
||||||
|
raise IndexError('Mismatch between array shape and headings')
|
||||||
|
|
||||||
self.data.rename(columns=d,inplace=True)
|
self.data.rename(columns=d,inplace=True)
|
||||||
|
|
||||||
if comments is None:
|
if comments is None:
|
||||||
|
@ -36,7 +39,7 @@ class Table():
|
||||||
else:
|
else:
|
||||||
self.comments = [c for c in comments]
|
self.comments = [c for c in comments]
|
||||||
|
|
||||||
self.columns = columns
|
self.headings = headings
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_ASCII(fname):
|
def from_ASCII(fname):
|
||||||
|
@ -44,8 +47,8 @@ class Table():
|
||||||
Create table from ASCII file.
|
Create table from ASCII file.
|
||||||
|
|
||||||
The first line needs to indicate the number of subsequent header lines as 'n header'.
|
The first line needs to indicate the number of subsequent header lines as 'n header'.
|
||||||
Vector data labels are indicated by '1_x, 2_x, ..., n_x'.
|
Vector data labels are indicated by '1_v, 2_v, ..., n_v'.
|
||||||
Tensor data labels are indicated by '3x3:1_x, 3x3:2_x, ..., 3x3:9_x'.
|
Tensor data labels are indicated by '3x3:1_T, 3x3:2_T, ..., 3x3:9_T'.
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
|
@ -66,28 +69,36 @@ class Table():
|
||||||
comments = [f.readline()[:-1] for i in range(header-1)]
|
comments = [f.readline()[:-1] for i in range(header-1)]
|
||||||
labels = f.readline().split()
|
labels = f.readline().split()
|
||||||
|
|
||||||
columns = {}
|
headings = {}
|
||||||
for label in labels:
|
for label in labels:
|
||||||
tensor_column = re.search(r'[0-9,x]*?:[0-9]*?_',label)
|
tensor_column = re.search(r'[0-9,x]*?:[0-9]*?_',label)
|
||||||
if tensor_column:
|
if tensor_column:
|
||||||
my_shape = tensor_column.group().split(':',1)[0].split('x')
|
my_shape = tensor_column.group().split(':',1)[0].split('x')
|
||||||
columns[label.split('_',1)[1]] = tuple([int(d) for d in my_shape])
|
headings[label.split('_',1)[1]] = tuple([int(d) for d in my_shape])
|
||||||
else:
|
else:
|
||||||
vector_column = re.match(r'[0-9]*?_',label)
|
vector_column = re.match(r'[0-9]*?_',label)
|
||||||
if vector_column:
|
if vector_column:
|
||||||
columns[label.split('_',1)[1]] = (int(label.split('_',1)[0]),)
|
headings[label.split('_',1)[1]] = (int(label.split('_',1)[0]),)
|
||||||
else:
|
else:
|
||||||
columns[label]=(1,)
|
headings[label]=(1,)
|
||||||
|
|
||||||
return Table(np.loadtxt(f),columns,comments)
|
return Table(np.loadtxt(f),headings,comments)
|
||||||
|
|
||||||
def get_array(self,label):
|
def get_array(self,label):
|
||||||
"""Return data as array."""
|
"""
|
||||||
|
Return data as array.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
label : str
|
||||||
|
Label of the array.
|
||||||
|
|
||||||
|
"""
|
||||||
if re.match(r'[0-9]*?_',label):
|
if re.match(r'[0-9]*?_',label):
|
||||||
idx,key = label.split('_',1)
|
idx,key = label.split('_',1)
|
||||||
return self.data[key].to_numpy()[:,int(idx)-1]
|
return self.data[key].to_numpy()[:,int(idx)-1]
|
||||||
else:
|
else:
|
||||||
return self.data[label].to_numpy().reshape((-1,)+self.columns[label])
|
return self.data[label].to_numpy().reshape((-1,)+self.headings[label])
|
||||||
|
|
||||||
def set_array(self,label,array,info):
|
def set_array(self,label,array,info):
|
||||||
"""
|
"""
|
||||||
|
@ -96,11 +107,11 @@ class Table():
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
label : str
|
label : str
|
||||||
Label for the new data
|
Label for the new data.
|
||||||
array : np.ndarray
|
array : np.ndarray
|
||||||
New data
|
New data.
|
||||||
info : str
|
info : str
|
||||||
Human-readable information about the new data
|
Human-readable information about the new data.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if np.prod(array.shape[1:],dtype=int) == 1:
|
if np.prod(array.shape[1:],dtype=int) == 1:
|
||||||
|
@ -115,9 +126,10 @@ class Table():
|
||||||
else:
|
else:
|
||||||
self.data[label] = array.reshape(self.data[label].shape)
|
self.data[label] = array.reshape(self.data[label].shape)
|
||||||
|
|
||||||
|
|
||||||
def get_labels(self):
|
def get_labels(self):
|
||||||
"""Return the labels of all columns."""
|
"""Return the labels of all columns."""
|
||||||
return [label for label in self.columns]
|
return [label for label in self.headings]
|
||||||
|
|
||||||
def add_array(self,label,array,info):
|
def add_array(self,label,array,info):
|
||||||
"""
|
"""
|
||||||
|
@ -126,11 +138,11 @@ class Table():
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
label : str
|
label : str
|
||||||
Label for the new data
|
Label for the new data.
|
||||||
array : np.ndarray
|
array : np.ndarray
|
||||||
New data
|
New data.
|
||||||
info : str
|
info : str
|
||||||
Human-readable information about the new data
|
Human-readable information about the new data.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if np.prod(array.shape[1:],dtype=int) == 1:
|
if np.prod(array.shape[1:],dtype=int) == 1:
|
||||||
|
@ -138,7 +150,7 @@ class Table():
|
||||||
else:
|
else:
|
||||||
self.comments.append('{} {}: {}'.format(label,array.shape[1:],info))
|
self.comments.append('{} {}: {}'.format(label,array.shape[1:],info))
|
||||||
|
|
||||||
self.columns[label] = array.shape[1:] if len(array.shape) > 1 else (1,)
|
self.headings[label] = array.shape[1:] if len(array.shape) > 1 else (1,)
|
||||||
size = np.prod(array.shape[1:],dtype=int)
|
size = np.prod(array.shape[1:],dtype=int)
|
||||||
new_data = pd.DataFrame(data=array.reshape(-1,size),
|
new_data = pd.DataFrame(data=array.reshape(-1,size),
|
||||||
columns=[label for l in range(size)])
|
columns=[label for l in range(size)])
|
||||||
|
@ -154,17 +166,16 @@ class Table():
|
||||||
Filename or file for reading.
|
Filename or file for reading.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
labels = []
|
labels = []
|
||||||
for l in self.columns:
|
for l in self.headings:
|
||||||
if(self.columns[l] == (1,)):
|
if(self.headings[l] == (1,)):
|
||||||
labels.append('{}'.format(l))
|
labels.append('{}'.format(l))
|
||||||
elif(len(self.columns[l]) == 1):
|
elif(len(self.headings[l]) == 1):
|
||||||
labels+=['{}_{}'.format(i+1,l)\
|
labels+=['{}_{}'.format(i+1,l)\
|
||||||
for i in range(self.columns[l][0])]
|
for i in range(self.headings[l][0])]
|
||||||
else:
|
else:
|
||||||
labels+=['{}:{}_{}'.format(i+1,'x'.join([str(d) for d in self.columns[l]]),l)\
|
labels+=['{}:{}_{}'.format('x'.join([str(d) for d in self.headings[l]]),i+1,l)\
|
||||||
for i in range(np.prod(self.columns[l],dtype=int))]
|
for i in range(np.prod(self.headings[l],dtype=int))]
|
||||||
|
|
||||||
header = ['{} header'.format(len(self.comments)+1)]\
|
header = ['{} header'.format(len(self.comments)+1)]\
|
||||||
+ self.comments\
|
+ self.comments\
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
import os
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
import damask
|
||||||
|
|
||||||
|
def pytest_addoption(parser):
|
||||||
|
parser.addoption("--update",
|
||||||
|
action="store_true",
|
||||||
|
default=False)
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def update(request):
|
||||||
|
"""Store current results as new reference results."""
|
||||||
|
return request.config.getoption("--update")
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def reference_dir_base():
|
||||||
|
"""Directory containing reference results."""
|
||||||
|
env = damask.Environment()
|
||||||
|
return os.path.join(env.rootDir(),'python','tests','reference')
|
|
@ -0,0 +1,125 @@
|
||||||
|
68 header
|
||||||
|
geom_fromVoronoiTessellation 2.0.3-1073-g6f3cb071
|
||||||
|
<texture>
|
||||||
|
[Grain1]
|
||||||
|
(gauss) phi1 358.98 Phi 65.62 phi2 24.48
|
||||||
|
[Grain2]
|
||||||
|
(gauss) phi1 121.05 Phi 176.11 phi2 295.73
|
||||||
|
[Grain3]
|
||||||
|
(gauss) phi1 43.79 Phi 113.76 phi2 345.90
|
||||||
|
[Grain4]
|
||||||
|
(gauss) phi1 265.15 Phi 62.52 phi2 299.71
|
||||||
|
[Grain5]
|
||||||
|
(gauss) phi1 221.23 Phi 26.54 phi2 207.05
|
||||||
|
[Grain6]
|
||||||
|
(gauss) phi1 249.81 Phi 61.47 phi2 152.14
|
||||||
|
[Grain7]
|
||||||
|
(gauss) phi1 332.45 Phi 99.16 phi2 345.34
|
||||||
|
[Grain8]
|
||||||
|
(gauss) phi1 312.27 Phi 118.27 phi2 181.59
|
||||||
|
[Grain9]
|
||||||
|
(gauss) phi1 303.10 Phi 48.21 phi2 358.03
|
||||||
|
[Grain10]
|
||||||
|
(gauss) phi1 338.26 Phi 48.11 phi2 176.78
|
||||||
|
[Grain11]
|
||||||
|
(gauss) phi1 115.17 Phi 56.54 phi2 223.84
|
||||||
|
[Grain12]
|
||||||
|
(gauss) phi1 281.04 Phi 97.48 phi2 27.94
|
||||||
|
<microstructure>
|
||||||
|
[Grain1]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 1 fraction 1.0
|
||||||
|
[Grain2]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 2 fraction 1.0
|
||||||
|
[Grain3]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 3 fraction 1.0
|
||||||
|
[Grain4]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 4 fraction 1.0
|
||||||
|
[Grain5]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 5 fraction 1.0
|
||||||
|
[Grain6]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 6 fraction 1.0
|
||||||
|
[Grain7]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 7 fraction 1.0
|
||||||
|
[Grain8]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 8 fraction 1.0
|
||||||
|
[Grain9]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 9 fraction 1.0
|
||||||
|
[Grain10]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 10 fraction 1.0
|
||||||
|
[Grain11]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 11 fraction 1.0
|
||||||
|
[Grain12]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 12 fraction 1.0
|
||||||
|
<!skip>
|
||||||
|
grid a 6 b 7 c 8
|
||||||
|
size x 0.75 y 0.875 z 1.0
|
||||||
|
origin x 0.0 y 0.0 z 0.0
|
||||||
|
homogenization 1
|
||||||
|
9 3 3 10 9 9
|
||||||
|
9 1 1 1 9 9
|
||||||
|
9 11 1 1 7 9
|
||||||
|
7 11 11 7 7 7
|
||||||
|
7 11 11 7 7 7
|
||||||
|
12 3 3 10 7 12
|
||||||
|
12 3 3 10 10 12
|
||||||
|
12 3 3 1 9 9
|
||||||
|
9 1 1 1 9 9
|
||||||
|
9 1 1 1 7 7
|
||||||
|
7 1 1 7 7 7
|
||||||
|
12 12 3 7 7 7
|
||||||
|
12 3 3 3 12 12
|
||||||
|
12 3 3 3 12 12
|
||||||
|
12 3 3 1 1 12
|
||||||
|
9 1 1 1 1 9
|
||||||
|
6 1 1 1 8 8
|
||||||
|
7 6 8 8 8 8
|
||||||
|
12 12 8 8 8 12
|
||||||
|
12 3 3 3 12 12
|
||||||
|
12 3 3 3 12 12
|
||||||
|
5 6 6 6 1 12
|
||||||
|
6 6 6 6 8 8
|
||||||
|
6 6 6 8 8 8
|
||||||
|
8 6 8 8 8 8
|
||||||
|
12 5 8 8 8 8
|
||||||
|
12 5 5 8 8 12
|
||||||
|
5 5 5 3 12 12
|
||||||
|
5 5 6 6 6 5
|
||||||
|
6 6 6 6 6 6
|
||||||
|
6 6 6 6 8 8
|
||||||
|
4 4 6 8 8 8
|
||||||
|
4 4 2 2 2 8
|
||||||
|
5 5 5 2 2 2
|
||||||
|
5 5 5 5 2 5
|
||||||
|
5 5 5 10 10 5
|
||||||
|
6 6 6 6 10 4
|
||||||
|
4 4 11 11 2 4
|
||||||
|
4 4 11 2 2 4
|
||||||
|
4 4 2 2 2 2
|
||||||
|
5 5 5 2 2 2
|
||||||
|
5 5 5 10 10 5
|
||||||
|
5 5 10 10 10 9
|
||||||
|
4 11 11 11 10 9
|
||||||
|
4 4 11 11 11 4
|
||||||
|
4 4 11 11 2 4
|
||||||
|
4 4 2 2 2 2
|
||||||
|
5 5 2 2 2 2
|
||||||
|
5 5 10 10 10 10
|
||||||
|
9 10 10 10 10 9
|
||||||
|
9 11 11 10 9 9
|
||||||
|
4 11 11 11 9 9
|
||||||
|
4 11 11 11 7 7
|
||||||
|
4 4 11 2 7 7
|
||||||
|
12 10 10 10 10 7
|
||||||
|
9 10 10 10 10 9
|
Binary file not shown.
|
@ -0,0 +1,129 @@
|
||||||
|
<homogenization>
|
||||||
|
[none]
|
||||||
|
mech none
|
||||||
|
ngrains 1
|
||||||
|
|
||||||
|
<texture>
|
||||||
|
[Grain1]
|
||||||
|
(gauss) phi1 358.98 Phi 65.62 phi2 24.48
|
||||||
|
[Grain2]
|
||||||
|
(gauss) phi1 121.05 Phi 176.11 phi2 295.73
|
||||||
|
[Grain3]
|
||||||
|
(gauss) phi1 43.79 Phi 113.76 phi2 345.90
|
||||||
|
[Grain4]
|
||||||
|
(gauss) phi1 265.15 Phi 62.52 phi2 299.71
|
||||||
|
[Grain5]
|
||||||
|
(gauss) phi1 221.23 Phi 26.54 phi2 207.05
|
||||||
|
[Grain6]
|
||||||
|
(gauss) phi1 249.81 Phi 61.47 phi2 152.14
|
||||||
|
[Grain7]
|
||||||
|
(gauss) phi1 332.45 Phi 99.16 phi2 345.34
|
||||||
|
[Grain8]
|
||||||
|
(gauss) phi1 312.27 Phi 118.27 phi2 181.59
|
||||||
|
[Grain9]
|
||||||
|
(gauss) phi1 303.10 Phi 48.21 phi2 358.03
|
||||||
|
[Grain10]
|
||||||
|
(gauss) phi1 338.26 Phi 48.11 phi2 176.78
|
||||||
|
[Grain11]
|
||||||
|
(gauss) phi1 115.17 Phi 56.54 phi2 223.84
|
||||||
|
[Grain12]
|
||||||
|
(gauss) phi1 281.04 Phi 97.48 phi2 27.94
|
||||||
|
|
||||||
|
<microstructure>
|
||||||
|
[Grain1]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 1 fraction 1.0
|
||||||
|
[Grain2]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 2 fraction 1.0
|
||||||
|
[Grain3]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 3 fraction 1.0
|
||||||
|
[Grain4]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 4 fraction 1.0
|
||||||
|
[Grain5]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 5 fraction 1.0
|
||||||
|
[Grain6]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 6 fraction 1.0
|
||||||
|
[Grain7]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 2 texture 7 fraction 1.0
|
||||||
|
[Grain8]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 2 texture 8 fraction 1.0
|
||||||
|
[Grain9]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 2 texture 9 fraction 1.0
|
||||||
|
[Grain10]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 2 texture 10 fraction 1.0
|
||||||
|
[Grain11]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 2 texture 11 fraction 1.0
|
||||||
|
[Grain12]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 2 texture 12 fraction 1.0
|
||||||
|
|
||||||
|
<phase>
|
||||||
|
[pheno_fcc]
|
||||||
|
elasticity hooke
|
||||||
|
plasticity phenopowerlaw
|
||||||
|
|
||||||
|
(output) orientation # quaternion
|
||||||
|
(output) F # deformation gradient tensor
|
||||||
|
(output) Fe # elastic deformation gradient tensor
|
||||||
|
(output) Fp # plastic deformation gradient tensor
|
||||||
|
(output) P # first Piola-Kichhoff stress tensor
|
||||||
|
(output) Lp # plastic velocity gradient tensor
|
||||||
|
|
||||||
|
|
||||||
|
lattice_structure fcc
|
||||||
|
Nslip 12 # per family
|
||||||
|
Ntwin 0 # per family
|
||||||
|
|
||||||
|
c11 106.75e9
|
||||||
|
c12 60.41e9
|
||||||
|
c44 28.34e9
|
||||||
|
|
||||||
|
gdot0_slip 0.001
|
||||||
|
n_slip 20
|
||||||
|
tau0_slip 31e6 # per family
|
||||||
|
tausat_slip 63e6 # per family
|
||||||
|
a_slip 2.25
|
||||||
|
h0_slipslip 75e6
|
||||||
|
interaction_slipslip 1 1 1.4 1.4 1.4 1.4
|
||||||
|
atol_resistance 1
|
||||||
|
|
||||||
|
[pheno_bcc]
|
||||||
|
elasticity hooke
|
||||||
|
plasticity phenopowerlaw
|
||||||
|
|
||||||
|
(output) orientation # quaternion
|
||||||
|
(output) F # deformation gradient tensor
|
||||||
|
(output) Fe # elastic deformation gradient tensor
|
||||||
|
(output) Fp # plastic deformation gradient tensor
|
||||||
|
(output) P # first Piola-Kichhoff stress tensor
|
||||||
|
(output) Lp # plastic velocity gradient tensor
|
||||||
|
|
||||||
|
|
||||||
|
lattice_structure bcc
|
||||||
|
Nslip 12 # per family
|
||||||
|
|
||||||
|
c11 106.75e9
|
||||||
|
c12 60.41e9
|
||||||
|
c44 28.34e9
|
||||||
|
|
||||||
|
gdot0_slip 0.001
|
||||||
|
n_slip 20
|
||||||
|
tau0_slip 31e6 # per family
|
||||||
|
tausat_slip 63e6 # per family
|
||||||
|
a_slip 2.25
|
||||||
|
h0_slipslip 75e6
|
||||||
|
interaction_slipslip 1 1 1.4 1.4 1.4 1.4
|
||||||
|
atol_resistance 1
|
||||||
|
|
||||||
|
<crystallite>
|
||||||
|
[dummy]
|
|
@ -0,0 +1 @@
|
||||||
|
fdot * 0 0 0 1.0e-3 0 0 0 * stress 0 * * * * * * * 0 time 20 incs 40 freq 4
|
|
@ -0,0 +1,25 @@
|
||||||
|
4 header
|
||||||
|
grid a 8 b 5 c 4
|
||||||
|
size x 8e-06 y 5e-06 z 4e-06
|
||||||
|
origin x 0.0 y 0.0 z 0.0
|
||||||
|
homogenization 1
|
||||||
|
1 1 2 22 2 2 1 21
|
||||||
|
1 1 6 26 2 2 5 25
|
||||||
|
1 1 10 30 2 2 9 29
|
||||||
|
1 1 14 34 2 2 13 33
|
||||||
|
1 1 18 38 2 2 17 37
|
||||||
|
1 1 3 23 2 2 2 22
|
||||||
|
1 1 7 27 2 2 6 26
|
||||||
|
1 1 11 31 2 2 10 30
|
||||||
|
1 1 15 35 2 2 14 34
|
||||||
|
1 1 19 39 2 2 18 38
|
||||||
|
1 1 4 24 2 2 3 23
|
||||||
|
1 1 8 28 2 2 7 27
|
||||||
|
1 1 12 32 2 2 11 31
|
||||||
|
1 1 16 36 2 2 15 35
|
||||||
|
1 1 20 40 2 2 19 39
|
||||||
|
1 1 5 25 2 2 4 24
|
||||||
|
1 1 9 29 2 2 8 28
|
||||||
|
1 1 13 33 2 2 12 32
|
||||||
|
1 1 17 37 2 2 16 36
|
||||||
|
1 1 21 41 2 2 20 40
|
|
@ -0,0 +1,25 @@
|
||||||
|
4 header
|
||||||
|
grid a 8 b 5 c 4
|
||||||
|
size x 8e-06 y 5e-06 z 4e-06
|
||||||
|
origin x 0.0 y 0.0 z 0.0
|
||||||
|
homogenization 1
|
||||||
|
1 1 1 2 2 2 1 1
|
||||||
|
1 1 1 2 2 2 2 1
|
||||||
|
1 1 1 6 2 2 2 5
|
||||||
|
1 1 1 10 2 2 2 9
|
||||||
|
1 1 1 14 2 2 2 13
|
||||||
|
1 1 1 2 2 2 2 1
|
||||||
|
1 1 1 2 2 2 2 1
|
||||||
|
1 1 1 6 2 2 2 5
|
||||||
|
1 1 1 10 2 2 2 9
|
||||||
|
1 1 1 14 2 2 2 13
|
||||||
|
1 1 1 3 2 2 2 2
|
||||||
|
1 1 1 3 2 2 2 2
|
||||||
|
1 1 1 7 2 2 2 6
|
||||||
|
1 1 1 11 2 2 2 10
|
||||||
|
1 1 1 15 2 2 2 14
|
||||||
|
1 1 1 4 2 2 2 3
|
||||||
|
1 1 1 4 2 2 2 3
|
||||||
|
1 1 1 8 2 2 2 7
|
||||||
|
1 1 1 12 2 2 2 11
|
||||||
|
1 1 1 16 2 2 2 15
|
|
@ -0,0 +1,25 @@
|
||||||
|
4 header
|
||||||
|
grid a 8 b 5 c 4
|
||||||
|
size x 8e-06 y 5e-06 z 4e-06
|
||||||
|
origin x 0.0 y 0.0 z 0.0
|
||||||
|
homogenization 1
|
||||||
|
1 1 1 2 2 2 2 21
|
||||||
|
1 1 1 2 2 2 2 21
|
||||||
|
1 1 1 2 2 2 2 25
|
||||||
|
1 1 1 2 2 2 2 29
|
||||||
|
1 1 1 2 2 2 2 37
|
||||||
|
1 1 1 2 2 2 2 21
|
||||||
|
1 1 1 2 2 2 2 21
|
||||||
|
1 1 1 2 2 2 2 25
|
||||||
|
1 1 1 2 2 2 2 29
|
||||||
|
1 1 1 2 2 2 2 37
|
||||||
|
1 1 1 2 2 2 2 22
|
||||||
|
1 1 1 2 2 2 2 22
|
||||||
|
1 1 1 2 2 2 2 26
|
||||||
|
1 1 1 2 2 2 2 30
|
||||||
|
1 1 1 2 2 2 2 38
|
||||||
|
1 1 1 2 2 2 2 24
|
||||||
|
1 1 1 2 2 2 2 24
|
||||||
|
1 1 1 2 2 2 2 28
|
||||||
|
1 1 1 2 2 2 2 32
|
||||||
|
1 1 1 2 2 2 2 40
|
|
@ -0,0 +1,25 @@
|
||||||
|
4 header
|
||||||
|
grid a 8 b 5 c 4
|
||||||
|
size x 8e-06 y 5e-06 z 4e-06
|
||||||
|
origin x 0.0 y 0.0 z 0.0
|
||||||
|
homogenization 1
|
||||||
|
1 1 1 2 2 2 2 2
|
||||||
|
1 1 1 2 2 2 2 2
|
||||||
|
1 1 1 2 2 2 2 2
|
||||||
|
1 1 1 1 2 2 2 2
|
||||||
|
1 1 1 1 2 2 2 2
|
||||||
|
1 1 1 2 2 2 2 2
|
||||||
|
1 1 1 2 2 2 2 2
|
||||||
|
1 1 1 2 2 2 2 2
|
||||||
|
1 1 1 1 2 2 2 2
|
||||||
|
1 1 1 1 2 2 2 2
|
||||||
|
1 1 1 2 2 2 2 2
|
||||||
|
1 1 1 2 2 2 2 2
|
||||||
|
1 1 1 2 2 2 2 2
|
||||||
|
1 1 1 1 2 2 2 2
|
||||||
|
1 1 1 1 2 2 2 2
|
||||||
|
1 1 1 1 2 2 2 2
|
||||||
|
1 1 1 1 2 2 2 2
|
||||||
|
1 1 1 1 2 2 2 2
|
||||||
|
1 1 1 1 2 2 2 2
|
||||||
|
1 1 1 1 2 2 2 2
|
|
@ -0,0 +1,85 @@
|
||||||
|
4 header
|
||||||
|
grid a 16 b 10 c 8
|
||||||
|
size x 1.6e-05 y 1e-05 z 8e-06
|
||||||
|
origin x 0.0 y 0.0 z 0.0
|
||||||
|
homogenization 1
|
||||||
|
1 1 2 22 2 2 1 21 21 1 2 2 22 2 1 1
|
||||||
|
1 1 6 26 2 2 5 25 25 5 2 2 26 6 1 1
|
||||||
|
1 1 10 30 2 2 9 29 29 9 2 2 30 10 1 1
|
||||||
|
1 1 14 34 2 2 13 33 33 13 2 2 34 14 1 1
|
||||||
|
1 1 18 38 2 2 17 37 37 17 2 2 38 18 1 1
|
||||||
|
1 1 18 38 2 2 17 37 37 17 2 2 38 18 1 1
|
||||||
|
1 1 14 34 2 2 13 33 33 13 2 2 34 14 1 1
|
||||||
|
1 1 10 30 2 2 9 29 29 9 2 2 30 10 1 1
|
||||||
|
1 1 6 26 2 2 5 25 25 5 2 2 26 6 1 1
|
||||||
|
1 1 2 22 2 2 1 21 21 1 2 2 22 2 1 1
|
||||||
|
1 1 3 23 2 2 2 22 22 2 2 2 23 3 1 1
|
||||||
|
1 1 7 27 2 2 6 26 26 6 2 2 27 7 1 1
|
||||||
|
1 1 11 31 2 2 10 30 30 10 2 2 31 11 1 1
|
||||||
|
1 1 15 35 2 2 14 34 34 14 2 2 35 15 1 1
|
||||||
|
1 1 19 39 2 2 18 38 38 18 2 2 39 19 1 1
|
||||||
|
1 1 19 39 2 2 18 38 38 18 2 2 39 19 1 1
|
||||||
|
1 1 15 35 2 2 14 34 34 14 2 2 35 15 1 1
|
||||||
|
1 1 11 31 2 2 10 30 30 10 2 2 31 11 1 1
|
||||||
|
1 1 7 27 2 2 6 26 26 6 2 2 27 7 1 1
|
||||||
|
1 1 3 23 2 2 2 22 22 2 2 2 23 3 1 1
|
||||||
|
1 1 4 24 2 2 3 23 23 3 2 2 24 4 1 1
|
||||||
|
1 1 8 28 2 2 7 27 27 7 2 2 28 8 1 1
|
||||||
|
1 1 12 32 2 2 11 31 31 11 2 2 32 12 1 1
|
||||||
|
1 1 16 36 2 2 15 35 35 15 2 2 36 16 1 1
|
||||||
|
1 1 20 40 2 2 19 39 39 19 2 2 40 20 1 1
|
||||||
|
1 1 20 40 2 2 19 39 39 19 2 2 40 20 1 1
|
||||||
|
1 1 16 36 2 2 15 35 35 15 2 2 36 16 1 1
|
||||||
|
1 1 12 32 2 2 11 31 31 11 2 2 32 12 1 1
|
||||||
|
1 1 8 28 2 2 7 27 27 7 2 2 28 8 1 1
|
||||||
|
1 1 4 24 2 2 3 23 23 3 2 2 24 4 1 1
|
||||||
|
1 1 5 25 2 2 4 24 24 4 2 2 25 5 1 1
|
||||||
|
1 1 9 29 2 2 8 28 28 8 2 2 29 9 1 1
|
||||||
|
1 1 13 33 2 2 12 32 32 12 2 2 33 13 1 1
|
||||||
|
1 1 17 37 2 2 16 36 36 16 2 2 37 17 1 1
|
||||||
|
1 1 21 41 2 2 20 40 40 20 2 2 41 21 1 1
|
||||||
|
1 1 21 41 2 2 20 40 40 20 2 2 41 21 1 1
|
||||||
|
1 1 17 37 2 2 16 36 36 16 2 2 37 17 1 1
|
||||||
|
1 1 13 33 2 2 12 32 32 12 2 2 33 13 1 1
|
||||||
|
1 1 9 29 2 2 8 28 28 8 2 2 29 9 1 1
|
||||||
|
1 1 5 25 2 2 4 24 24 4 2 2 25 5 1 1
|
||||||
|
1 1 5 25 2 2 4 24 24 4 2 2 25 5 1 1
|
||||||
|
1 1 9 29 2 2 8 28 28 8 2 2 29 9 1 1
|
||||||
|
1 1 13 33 2 2 12 32 32 12 2 2 33 13 1 1
|
||||||
|
1 1 17 37 2 2 16 36 36 16 2 2 37 17 1 1
|
||||||
|
1 1 21 41 2 2 20 40 40 20 2 2 41 21 1 1
|
||||||
|
1 1 21 41 2 2 20 40 40 20 2 2 41 21 1 1
|
||||||
|
1 1 17 37 2 2 16 36 36 16 2 2 37 17 1 1
|
||||||
|
1 1 13 33 2 2 12 32 32 12 2 2 33 13 1 1
|
||||||
|
1 1 9 29 2 2 8 28 28 8 2 2 29 9 1 1
|
||||||
|
1 1 5 25 2 2 4 24 24 4 2 2 25 5 1 1
|
||||||
|
1 1 4 24 2 2 3 23 23 3 2 2 24 4 1 1
|
||||||
|
1 1 8 28 2 2 7 27 27 7 2 2 28 8 1 1
|
||||||
|
1 1 12 32 2 2 11 31 31 11 2 2 32 12 1 1
|
||||||
|
1 1 16 36 2 2 15 35 35 15 2 2 36 16 1 1
|
||||||
|
1 1 20 40 2 2 19 39 39 19 2 2 40 20 1 1
|
||||||
|
1 1 20 40 2 2 19 39 39 19 2 2 40 20 1 1
|
||||||
|
1 1 16 36 2 2 15 35 35 15 2 2 36 16 1 1
|
||||||
|
1 1 12 32 2 2 11 31 31 11 2 2 32 12 1 1
|
||||||
|
1 1 8 28 2 2 7 27 27 7 2 2 28 8 1 1
|
||||||
|
1 1 4 24 2 2 3 23 23 3 2 2 24 4 1 1
|
||||||
|
1 1 3 23 2 2 2 22 22 2 2 2 23 3 1 1
|
||||||
|
1 1 7 27 2 2 6 26 26 6 2 2 27 7 1 1
|
||||||
|
1 1 11 31 2 2 10 30 30 10 2 2 31 11 1 1
|
||||||
|
1 1 15 35 2 2 14 34 34 14 2 2 35 15 1 1
|
||||||
|
1 1 19 39 2 2 18 38 38 18 2 2 39 19 1 1
|
||||||
|
1 1 19 39 2 2 18 38 38 18 2 2 39 19 1 1
|
||||||
|
1 1 15 35 2 2 14 34 34 14 2 2 35 15 1 1
|
||||||
|
1 1 11 31 2 2 10 30 30 10 2 2 31 11 1 1
|
||||||
|
1 1 7 27 2 2 6 26 26 6 2 2 27 7 1 1
|
||||||
|
1 1 3 23 2 2 2 22 22 2 2 2 23 3 1 1
|
||||||
|
1 1 2 22 2 2 1 21 21 1 2 2 22 2 1 1
|
||||||
|
1 1 6 26 2 2 5 25 25 5 2 2 26 6 1 1
|
||||||
|
1 1 10 30 2 2 9 29 29 9 2 2 30 10 1 1
|
||||||
|
1 1 14 34 2 2 13 33 33 13 2 2 34 14 1 1
|
||||||
|
1 1 18 38 2 2 17 37 37 17 2 2 38 18 1 1
|
||||||
|
1 1 18 38 2 2 17 37 37 17 2 2 38 18 1 1
|
||||||
|
1 1 14 34 2 2 13 33 33 13 2 2 34 14 1 1
|
||||||
|
1 1 10 30 2 2 9 29 29 9 2 2 30 10 1 1
|
||||||
|
1 1 6 26 2 2 5 25 25 5 2 2 26 6 1 1
|
||||||
|
1 1 2 22 2 2 1 21 21 1 2 2 22 2 1 1
|
|
@ -0,0 +1,25 @@
|
||||||
|
4 header
|
||||||
|
grid a 14 b 5 c 4
|
||||||
|
size x 1.4e-05 y 5e-06 z 4e-06
|
||||||
|
origin x 0.0 y 0.0 z 0.0
|
||||||
|
homogenization 1
|
||||||
|
1 1 2 22 2 2 1 21 1 2 2 22 2 1
|
||||||
|
1 1 6 26 2 2 5 25 5 2 2 26 6 1
|
||||||
|
1 1 10 30 2 2 9 29 9 2 2 30 10 1
|
||||||
|
1 1 14 34 2 2 13 33 13 2 2 34 14 1
|
||||||
|
1 1 18 38 2 2 17 37 17 2 2 38 18 1
|
||||||
|
1 1 3 23 2 2 2 22 2 2 2 23 3 1
|
||||||
|
1 1 7 27 2 2 6 26 6 2 2 27 7 1
|
||||||
|
1 1 11 31 2 2 10 30 10 2 2 31 11 1
|
||||||
|
1 1 15 35 2 2 14 34 14 2 2 35 15 1
|
||||||
|
1 1 19 39 2 2 18 38 18 2 2 39 19 1
|
||||||
|
1 1 4 24 2 2 3 23 3 2 2 24 4 1
|
||||||
|
1 1 8 28 2 2 7 27 7 2 2 28 8 1
|
||||||
|
1 1 12 32 2 2 11 31 11 2 2 32 12 1
|
||||||
|
1 1 16 36 2 2 15 35 15 2 2 36 16 1
|
||||||
|
1 1 20 40 2 2 19 39 19 2 2 40 20 1
|
||||||
|
1 1 5 25 2 2 4 24 4 2 2 25 5 1
|
||||||
|
1 1 9 29 2 2 8 28 8 2 2 29 9 1
|
||||||
|
1 1 13 33 2 2 12 32 12 2 2 33 13 1
|
||||||
|
1 1 17 37 2 2 16 36 16 2 2 37 17 1
|
||||||
|
1 1 21 41 2 2 20 40 20 2 2 41 21 1
|
|
@ -0,0 +1,53 @@
|
||||||
|
4 header
|
||||||
|
grid a 8 b 8 c 6
|
||||||
|
size x 8e-06 y 8.000000000000001e-06 z 6e-06
|
||||||
|
origin x 0.0 y 0.0 z 0.0
|
||||||
|
homogenization 1
|
||||||
|
1 1 2 22 2 2 1 21
|
||||||
|
1 1 6 26 2 2 5 25
|
||||||
|
1 1 10 30 2 2 9 29
|
||||||
|
1 1 14 34 2 2 13 33
|
||||||
|
1 1 18 38 2 2 17 37
|
||||||
|
1 1 14 34 2 2 13 33
|
||||||
|
1 1 10 30 2 2 9 29
|
||||||
|
1 1 6 26 2 2 5 25
|
||||||
|
1 1 3 23 2 2 2 22
|
||||||
|
1 1 7 27 2 2 6 26
|
||||||
|
1 1 11 31 2 2 10 30
|
||||||
|
1 1 15 35 2 2 14 34
|
||||||
|
1 1 19 39 2 2 18 38
|
||||||
|
1 1 15 35 2 2 14 34
|
||||||
|
1 1 11 31 2 2 10 30
|
||||||
|
1 1 7 27 2 2 6 26
|
||||||
|
1 1 4 24 2 2 3 23
|
||||||
|
1 1 8 28 2 2 7 27
|
||||||
|
1 1 12 32 2 2 11 31
|
||||||
|
1 1 16 36 2 2 15 35
|
||||||
|
1 1 20 40 2 2 19 39
|
||||||
|
1 1 16 36 2 2 15 35
|
||||||
|
1 1 12 32 2 2 11 31
|
||||||
|
1 1 8 28 2 2 7 27
|
||||||
|
1 1 5 25 2 2 4 24
|
||||||
|
1 1 9 29 2 2 8 28
|
||||||
|
1 1 13 33 2 2 12 32
|
||||||
|
1 1 17 37 2 2 16 36
|
||||||
|
1 1 21 41 2 2 20 40
|
||||||
|
1 1 17 37 2 2 16 36
|
||||||
|
1 1 13 33 2 2 12 32
|
||||||
|
1 1 9 29 2 2 8 28
|
||||||
|
1 1 4 24 2 2 3 23
|
||||||
|
1 1 8 28 2 2 7 27
|
||||||
|
1 1 12 32 2 2 11 31
|
||||||
|
1 1 16 36 2 2 15 35
|
||||||
|
1 1 20 40 2 2 19 39
|
||||||
|
1 1 16 36 2 2 15 35
|
||||||
|
1 1 12 32 2 2 11 31
|
||||||
|
1 1 8 28 2 2 7 27
|
||||||
|
1 1 3 23 2 2 2 22
|
||||||
|
1 1 7 27 2 2 6 26
|
||||||
|
1 1 11 31 2 2 10 30
|
||||||
|
1 1 15 35 2 2 14 34
|
||||||
|
1 1 19 39 2 2 18 38
|
||||||
|
1 1 15 35 2 2 14 34
|
||||||
|
1 1 11 31 2 2 10 30
|
||||||
|
1 1 7 27 2 2 6 26
|
|
@ -0,0 +1,53 @@
|
||||||
|
4 header
|
||||||
|
grid a 14 b 8 c 6
|
||||||
|
size x 1.4e-05 y 8.000000000000001e-06 z 6e-06
|
||||||
|
origin x 0.0 y 0.0 z 0.0
|
||||||
|
homogenization 1
|
||||||
|
1 1 2 22 2 2 1 21 1 2 2 22 2 1
|
||||||
|
1 1 6 26 2 2 5 25 5 2 2 26 6 1
|
||||||
|
1 1 10 30 2 2 9 29 9 2 2 30 10 1
|
||||||
|
1 1 14 34 2 2 13 33 13 2 2 34 14 1
|
||||||
|
1 1 18 38 2 2 17 37 17 2 2 38 18 1
|
||||||
|
1 1 14 34 2 2 13 33 13 2 2 34 14 1
|
||||||
|
1 1 10 30 2 2 9 29 9 2 2 30 10 1
|
||||||
|
1 1 6 26 2 2 5 25 5 2 2 26 6 1
|
||||||
|
1 1 3 23 2 2 2 22 2 2 2 23 3 1
|
||||||
|
1 1 7 27 2 2 6 26 6 2 2 27 7 1
|
||||||
|
1 1 11 31 2 2 10 30 10 2 2 31 11 1
|
||||||
|
1 1 15 35 2 2 14 34 14 2 2 35 15 1
|
||||||
|
1 1 19 39 2 2 18 38 18 2 2 39 19 1
|
||||||
|
1 1 15 35 2 2 14 34 14 2 2 35 15 1
|
||||||
|
1 1 11 31 2 2 10 30 10 2 2 31 11 1
|
||||||
|
1 1 7 27 2 2 6 26 6 2 2 27 7 1
|
||||||
|
1 1 4 24 2 2 3 23 3 2 2 24 4 1
|
||||||
|
1 1 8 28 2 2 7 27 7 2 2 28 8 1
|
||||||
|
1 1 12 32 2 2 11 31 11 2 2 32 12 1
|
||||||
|
1 1 16 36 2 2 15 35 15 2 2 36 16 1
|
||||||
|
1 1 20 40 2 2 19 39 19 2 2 40 20 1
|
||||||
|
1 1 16 36 2 2 15 35 15 2 2 36 16 1
|
||||||
|
1 1 12 32 2 2 11 31 11 2 2 32 12 1
|
||||||
|
1 1 8 28 2 2 7 27 7 2 2 28 8 1
|
||||||
|
1 1 5 25 2 2 4 24 4 2 2 25 5 1
|
||||||
|
1 1 9 29 2 2 8 28 8 2 2 29 9 1
|
||||||
|
1 1 13 33 2 2 12 32 12 2 2 33 13 1
|
||||||
|
1 1 17 37 2 2 16 36 16 2 2 37 17 1
|
||||||
|
1 1 21 41 2 2 20 40 20 2 2 41 21 1
|
||||||
|
1 1 17 37 2 2 16 36 16 2 2 37 17 1
|
||||||
|
1 1 13 33 2 2 12 32 12 2 2 33 13 1
|
||||||
|
1 1 9 29 2 2 8 28 8 2 2 29 9 1
|
||||||
|
1 1 4 24 2 2 3 23 3 2 2 24 4 1
|
||||||
|
1 1 8 28 2 2 7 27 7 2 2 28 8 1
|
||||||
|
1 1 12 32 2 2 11 31 11 2 2 32 12 1
|
||||||
|
1 1 16 36 2 2 15 35 15 2 2 36 16 1
|
||||||
|
1 1 20 40 2 2 19 39 19 2 2 40 20 1
|
||||||
|
1 1 16 36 2 2 15 35 15 2 2 36 16 1
|
||||||
|
1 1 12 32 2 2 11 31 11 2 2 32 12 1
|
||||||
|
1 1 8 28 2 2 7 27 7 2 2 28 8 1
|
||||||
|
1 1 3 23 2 2 2 22 2 2 2 23 3 1
|
||||||
|
1 1 7 27 2 2 6 26 6 2 2 27 7 1
|
||||||
|
1 1 11 31 2 2 10 30 10 2 2 31 11 1
|
||||||
|
1 1 15 35 2 2 14 34 14 2 2 35 15 1
|
||||||
|
1 1 19 39 2 2 18 38 18 2 2 39 19 1
|
||||||
|
1 1 15 35 2 2 14 34 14 2 2 35 15 1
|
||||||
|
1 1 11 31 2 2 10 30 10 2 2 31 11 1
|
||||||
|
1 1 7 27 2 2 6 26 6 2 2 27 7 1
|
|
@ -0,0 +1,105 @@
|
||||||
|
4 header
|
||||||
|
grid a 10 b 10 c 10
|
||||||
|
size x 8e-06 y 5e-06 z 4e-06
|
||||||
|
origin x 0.0 y 0.0 z 0.0
|
||||||
|
homogenization 1
|
||||||
|
1 1 2 2 22 2 2 2 1 21
|
||||||
|
1 1 2 2 22 2 2 2 1 21
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 18 18 38 2 2 2 17 37
|
||||||
|
1 1 18 18 38 2 2 2 17 37
|
||||||
|
1 1 2 2 22 2 2 2 1 21
|
||||||
|
1 1 2 2 22 2 2 2 1 21
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 18 18 38 2 2 2 17 37
|
||||||
|
1 1 18 18 38 2 2 2 17 37
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 5 5 25 2 2 2 4 24
|
||||||
|
1 1 5 5 25 2 2 2 4 24
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 21 21 41 2 2 2 20 40
|
||||||
|
1 1 21 21 41 2 2 2 20 40
|
||||||
|
1 1 5 5 25 2 2 2 4 24
|
||||||
|
1 1 5 5 25 2 2 2 4 24
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 21 21 41 2 2 2 20 40
|
||||||
|
1 1 21 21 41 2 2 2 20 40
|
|
@ -0,0 +1,115 @@
|
||||||
|
4 header
|
||||||
|
grid a 10 b 11 c 10
|
||||||
|
size x 8e-06 y 5e-06 z 4e-06
|
||||||
|
origin x 0.0 y 0.0 z 0.0
|
||||||
|
homogenization 1
|
||||||
|
1 1 2 2 22 2 2 2 1 21
|
||||||
|
1 1 2 2 22 2 2 2 1 21
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 18 18 38 2 2 2 17 37
|
||||||
|
1 1 18 18 38 2 2 2 17 37
|
||||||
|
1 1 2 2 22 2 2 2 1 21
|
||||||
|
1 1 2 2 22 2 2 2 1 21
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 18 18 38 2 2 2 17 37
|
||||||
|
1 1 18 18 38 2 2 2 17 37
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 5 5 25 2 2 2 4 24
|
||||||
|
1 1 5 5 25 2 2 2 4 24
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 21 21 41 2 2 2 20 40
|
||||||
|
1 1 21 21 41 2 2 2 20 40
|
||||||
|
1 1 5 5 25 2 2 2 4 24
|
||||||
|
1 1 5 5 25 2 2 2 4 24
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 21 21 41 2 2 2 20 40
|
||||||
|
1 1 21 21 41 2 2 2 20 40
|
|
@ -0,0 +1,135 @@
|
||||||
|
4 header
|
||||||
|
grid a 10 b 13 c 10
|
||||||
|
size x 8e-06 y 5e-06 z 4e-06
|
||||||
|
origin x 0.0 y 0.0 z 0.0
|
||||||
|
homogenization 1
|
||||||
|
1 1 2 2 22 2 2 2 1 21
|
||||||
|
1 1 2 2 22 2 2 2 1 21
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 18 18 38 2 2 2 17 37
|
||||||
|
1 1 18 18 38 2 2 2 17 37
|
||||||
|
1 1 2 2 22 2 2 2 1 21
|
||||||
|
1 1 2 2 22 2 2 2 1 21
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 18 18 38 2 2 2 17 37
|
||||||
|
1 1 18 18 38 2 2 2 17 37
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 3 3 23 2 2 2 2 22
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 7 7 27 2 2 2 6 26
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 11 11 31 2 2 2 10 30
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 15 15 35 2 2 2 14 34
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 19 19 39 2 2 2 18 38
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 4 4 24 2 2 2 3 23
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 8 8 28 2 2 2 7 27
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 12 12 32 2 2 2 11 31
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 16 16 36 2 2 2 15 35
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 20 20 40 2 2 2 19 39
|
||||||
|
1 1 5 5 25 2 2 2 4 24
|
||||||
|
1 1 5 5 25 2 2 2 4 24
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 21 21 41 2 2 2 20 40
|
||||||
|
1 1 21 21 41 2 2 2 20 40
|
||||||
|
1 1 5 5 25 2 2 2 4 24
|
||||||
|
1 1 5 5 25 2 2 2 4 24
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 21 21 41 2 2 2 20 40
|
||||||
|
1 1 21 21 41 2 2 2 20 40
|
|
@ -0,0 +1,45 @@
|
||||||
|
4 header
|
||||||
|
grid a 10 b 20 c 2
|
||||||
|
size x 8e-06 y 5e-06 z 4e-06
|
||||||
|
origin x 0.0 y 0.0 z 0.0
|
||||||
|
homogenization 1
|
||||||
|
1 1 2 2 22 2 2 2 1 21
|
||||||
|
1 1 2 2 22 2 2 2 1 21
|
||||||
|
1 1 2 2 22 2 2 2 1 21
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 6 6 26 2 2 2 5 25
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 10 10 30 2 2 2 9 29
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 14 14 34 2 2 2 13 33
|
||||||
|
1 1 18 18 38 2 2 2 17 37
|
||||||
|
1 1 18 18 38 2 2 2 17 37
|
||||||
|
1 1 18 18 38 2 2 2 17 37
|
||||||
|
1 1 5 5 25 2 2 2 4 24
|
||||||
|
1 1 5 5 25 2 2 2 4 24
|
||||||
|
1 1 5 5 25 2 2 2 4 24
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 9 9 29 2 2 2 8 28
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 13 13 33 2 2 2 12 32
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 17 17 37 2 2 2 16 36
|
||||||
|
1 1 21 21 41 2 2 2 20 40
|
||||||
|
1 1 21 21 41 2 2 2 20 40
|
||||||
|
1 1 21 21 41 2 2 2 20 40
|
|
@ -0,0 +1,85 @@
|
||||||
|
4 header
|
||||||
|
grid a 5 b 4 c 20
|
||||||
|
size x 8e-06 y 5e-06 z 4e-06
|
||||||
|
origin x 0.0 y 0.0 z 0.0
|
||||||
|
homogenization 1
|
||||||
|
1 2 2 2 21
|
||||||
|
1 6 2 2 25
|
||||||
|
1 14 2 2 33
|
||||||
|
1 18 2 2 37
|
||||||
|
1 2 2 2 21
|
||||||
|
1 6 2 2 25
|
||||||
|
1 14 2 2 33
|
||||||
|
1 18 2 2 37
|
||||||
|
1 2 2 2 21
|
||||||
|
1 6 2 2 25
|
||||||
|
1 14 2 2 33
|
||||||
|
1 18 2 2 37
|
||||||
|
1 2 2 2 21
|
||||||
|
1 6 2 2 25
|
||||||
|
1 14 2 2 33
|
||||||
|
1 18 2 2 37
|
||||||
|
1 3 2 2 22
|
||||||
|
1 7 2 2 26
|
||||||
|
1 15 2 2 34
|
||||||
|
1 19 2 2 38
|
||||||
|
1 3 2 2 22
|
||||||
|
1 7 2 2 26
|
||||||
|
1 15 2 2 34
|
||||||
|
1 19 2 2 38
|
||||||
|
1 3 2 2 22
|
||||||
|
1 7 2 2 26
|
||||||
|
1 15 2 2 34
|
||||||
|
1 19 2 2 38
|
||||||
|
1 3 2 2 22
|
||||||
|
1 7 2 2 26
|
||||||
|
1 15 2 2 34
|
||||||
|
1 19 2 2 38
|
||||||
|
1 3 2 2 22
|
||||||
|
1 7 2 2 26
|
||||||
|
1 15 2 2 34
|
||||||
|
1 19 2 2 38
|
||||||
|
1 3 2 2 22
|
||||||
|
1 7 2 2 26
|
||||||
|
1 15 2 2 34
|
||||||
|
1 19 2 2 38
|
||||||
|
1 4 2 2 23
|
||||||
|
1 8 2 2 27
|
||||||
|
1 16 2 2 35
|
||||||
|
1 20 2 2 39
|
||||||
|
1 4 2 2 23
|
||||||
|
1 8 2 2 27
|
||||||
|
1 16 2 2 35
|
||||||
|
1 20 2 2 39
|
||||||
|
1 4 2 2 23
|
||||||
|
1 8 2 2 27
|
||||||
|
1 16 2 2 35
|
||||||
|
1 20 2 2 39
|
||||||
|
1 4 2 2 23
|
||||||
|
1 8 2 2 27
|
||||||
|
1 16 2 2 35
|
||||||
|
1 20 2 2 39
|
||||||
|
1 4 2 2 23
|
||||||
|
1 8 2 2 27
|
||||||
|
1 16 2 2 35
|
||||||
|
1 20 2 2 39
|
||||||
|
1 4 2 2 23
|
||||||
|
1 8 2 2 27
|
||||||
|
1 16 2 2 35
|
||||||
|
1 20 2 2 39
|
||||||
|
1 5 2 2 24
|
||||||
|
1 9 2 2 28
|
||||||
|
1 17 2 2 36
|
||||||
|
1 21 2 2 40
|
||||||
|
1 5 2 2 24
|
||||||
|
1 9 2 2 28
|
||||||
|
1 17 2 2 36
|
||||||
|
1 21 2 2 40
|
||||||
|
1 5 2 2 24
|
||||||
|
1 9 2 2 28
|
||||||
|
1 17 2 2 36
|
||||||
|
1 21 2 2 40
|
||||||
|
1 5 2 2 24
|
||||||
|
1 9 2 2 28
|
||||||
|
1 17 2 2 36
|
||||||
|
1 21 2 2 40
|
|
@ -0,0 +1,125 @@
|
||||||
|
4 header
|
||||||
|
grid a 8 b 10 c 12
|
||||||
|
size x 8e-06 y 5e-06 z 4e-06
|
||||||
|
origin x 0.0 y 0.0 z 0.0
|
||||||
|
homogenization 1
|
||||||
|
1 1 2 22 2 2 1 21
|
||||||
|
1 1 2 22 2 2 1 21
|
||||||
|
1 1 6 26 2 2 5 25
|
||||||
|
1 1 6 26 2 2 5 25
|
||||||
|
1 1 10 30 2 2 9 29
|
||||||
|
1 1 10 30 2 2 9 29
|
||||||
|
1 1 14 34 2 2 13 33
|
||||||
|
1 1 14 34 2 2 13 33
|
||||||
|
1 1 18 38 2 2 17 37
|
||||||
|
1 1 18 38 2 2 17 37
|
||||||
|
1 1 2 22 2 2 1 21
|
||||||
|
1 1 2 22 2 2 1 21
|
||||||
|
1 1 6 26 2 2 5 25
|
||||||
|
1 1 6 26 2 2 5 25
|
||||||
|
1 1 10 30 2 2 9 29
|
||||||
|
1 1 10 30 2 2 9 29
|
||||||
|
1 1 14 34 2 2 13 33
|
||||||
|
1 1 14 34 2 2 13 33
|
||||||
|
1 1 18 38 2 2 17 37
|
||||||
|
1 1 18 38 2 2 17 37
|
||||||
|
1 1 3 23 2 2 2 22
|
||||||
|
1 1 3 23 2 2 2 22
|
||||||
|
1 1 7 27 2 2 6 26
|
||||||
|
1 1 7 27 2 2 6 26
|
||||||
|
1 1 11 31 2 2 10 30
|
||||||
|
1 1 11 31 2 2 10 30
|
||||||
|
1 1 15 35 2 2 14 34
|
||||||
|
1 1 15 35 2 2 14 34
|
||||||
|
1 1 19 39 2 2 18 38
|
||||||
|
1 1 19 39 2 2 18 38
|
||||||
|
1 1 3 23 2 2 2 22
|
||||||
|
1 1 3 23 2 2 2 22
|
||||||
|
1 1 7 27 2 2 6 26
|
||||||
|
1 1 7 27 2 2 6 26
|
||||||
|
1 1 11 31 2 2 10 30
|
||||||
|
1 1 11 31 2 2 10 30
|
||||||
|
1 1 15 35 2 2 14 34
|
||||||
|
1 1 15 35 2 2 14 34
|
||||||
|
1 1 19 39 2 2 18 38
|
||||||
|
1 1 19 39 2 2 18 38
|
||||||
|
1 1 3 23 2 2 2 22
|
||||||
|
1 1 3 23 2 2 2 22
|
||||||
|
1 1 7 27 2 2 6 26
|
||||||
|
1 1 7 27 2 2 6 26
|
||||||
|
1 1 11 31 2 2 10 30
|
||||||
|
1 1 11 31 2 2 10 30
|
||||||
|
1 1 15 35 2 2 14 34
|
||||||
|
1 1 15 35 2 2 14 34
|
||||||
|
1 1 19 39 2 2 18 38
|
||||||
|
1 1 19 39 2 2 18 38
|
||||||
|
1 1 3 23 2 2 2 22
|
||||||
|
1 1 3 23 2 2 2 22
|
||||||
|
1 1 7 27 2 2 6 26
|
||||||
|
1 1 7 27 2 2 6 26
|
||||||
|
1 1 11 31 2 2 10 30
|
||||||
|
1 1 11 31 2 2 10 30
|
||||||
|
1 1 15 35 2 2 14 34
|
||||||
|
1 1 15 35 2 2 14 34
|
||||||
|
1 1 19 39 2 2 18 38
|
||||||
|
1 1 19 39 2 2 18 38
|
||||||
|
1 1 4 24 2 2 3 23
|
||||||
|
1 1 4 24 2 2 3 23
|
||||||
|
1 1 8 28 2 2 7 27
|
||||||
|
1 1 8 28 2 2 7 27
|
||||||
|
1 1 12 32 2 2 11 31
|
||||||
|
1 1 12 32 2 2 11 31
|
||||||
|
1 1 16 36 2 2 15 35
|
||||||
|
1 1 16 36 2 2 15 35
|
||||||
|
1 1 20 40 2 2 19 39
|
||||||
|
1 1 20 40 2 2 19 39
|
||||||
|
1 1 4 24 2 2 3 23
|
||||||
|
1 1 4 24 2 2 3 23
|
||||||
|
1 1 8 28 2 2 7 27
|
||||||
|
1 1 8 28 2 2 7 27
|
||||||
|
1 1 12 32 2 2 11 31
|
||||||
|
1 1 12 32 2 2 11 31
|
||||||
|
1 1 16 36 2 2 15 35
|
||||||
|
1 1 16 36 2 2 15 35
|
||||||
|
1 1 20 40 2 2 19 39
|
||||||
|
1 1 20 40 2 2 19 39
|
||||||
|
1 1 4 24 2 2 3 23
|
||||||
|
1 1 4 24 2 2 3 23
|
||||||
|
1 1 8 28 2 2 7 27
|
||||||
|
1 1 8 28 2 2 7 27
|
||||||
|
1 1 12 32 2 2 11 31
|
||||||
|
1 1 12 32 2 2 11 31
|
||||||
|
1 1 16 36 2 2 15 35
|
||||||
|
1 1 16 36 2 2 15 35
|
||||||
|
1 1 20 40 2 2 19 39
|
||||||
|
1 1 20 40 2 2 19 39
|
||||||
|
1 1 4 24 2 2 3 23
|
||||||
|
1 1 4 24 2 2 3 23
|
||||||
|
1 1 8 28 2 2 7 27
|
||||||
|
1 1 8 28 2 2 7 27
|
||||||
|
1 1 12 32 2 2 11 31
|
||||||
|
1 1 12 32 2 2 11 31
|
||||||
|
1 1 16 36 2 2 15 35
|
||||||
|
1 1 16 36 2 2 15 35
|
||||||
|
1 1 20 40 2 2 19 39
|
||||||
|
1 1 20 40 2 2 19 39
|
||||||
|
1 1 5 25 2 2 4 24
|
||||||
|
1 1 5 25 2 2 4 24
|
||||||
|
1 1 9 29 2 2 8 28
|
||||||
|
1 1 9 29 2 2 8 28
|
||||||
|
1 1 13 33 2 2 12 32
|
||||||
|
1 1 13 33 2 2 12 32
|
||||||
|
1 1 17 37 2 2 16 36
|
||||||
|
1 1 17 37 2 2 16 36
|
||||||
|
1 1 21 41 2 2 20 40
|
||||||
|
1 1 21 41 2 2 20 40
|
||||||
|
1 1 5 25 2 2 4 24
|
||||||
|
1 1 5 25 2 2 4 24
|
||||||
|
1 1 9 29 2 2 8 28
|
||||||
|
1 1 9 29 2 2 8 28
|
||||||
|
1 1 13 33 2 2 12 32
|
||||||
|
1 1 13 33 2 2 12 32
|
||||||
|
1 1 17 37 2 2 16 36
|
||||||
|
1 1 17 37 2 2 16 36
|
||||||
|
1 1 21 41 2 2 20 40
|
||||||
|
1 1 21 41 2 2 20 40
|
|
@ -0,0 +1,67 @@
|
||||||
|
import shutil
|
||||||
|
import os
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
from damask import DADF5
|
||||||
|
from damask import mechanics
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def default(tmp_path,reference_dir):
|
||||||
|
"""Small DADF5 file in temp location for modification."""
|
||||||
|
fname = '12grains6x7x8_tensionY.hdf5'
|
||||||
|
shutil.copy(os.path.join(reference_dir,fname),tmp_path)
|
||||||
|
f = DADF5(os.path.join(tmp_path,fname))
|
||||||
|
f.set_by_time(20.0,20.0)
|
||||||
|
return f
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def reference_dir(reference_dir_base):
|
||||||
|
"""Directory containing reference results."""
|
||||||
|
return os.path.join(reference_dir_base,'DADF5')
|
||||||
|
|
||||||
|
|
||||||
|
class TestDADF5:
|
||||||
|
|
||||||
|
def test_add_deviator(self,default):
|
||||||
|
default.add_deviator('P')
|
||||||
|
loc = {'P' :default.get_dataset_location('P'),
|
||||||
|
's_P':default.get_dataset_location('s_P')}
|
||||||
|
in_memory = mechanics.deviatoric_part(default.read_dataset(loc['P'],0))
|
||||||
|
in_file = default.read_dataset(loc['s_P'],0)
|
||||||
|
assert np.allclose(in_memory,in_file)
|
||||||
|
|
||||||
|
def test_add_Cauchy(self,default):
|
||||||
|
default.add_Cauchy('P','F')
|
||||||
|
loc = {'F': default.get_dataset_location('F'),
|
||||||
|
'P': default.get_dataset_location('P'),
|
||||||
|
'sigma':default.get_dataset_location('sigma')}
|
||||||
|
in_memory = mechanics.Cauchy(default.read_dataset(loc['F'],0),
|
||||||
|
default.read_dataset(loc['P'],0))
|
||||||
|
in_file = default.read_dataset(loc['sigma'],0)
|
||||||
|
assert np.allclose(in_memory,in_file)
|
||||||
|
|
||||||
|
def test_add_absolute(self,default):
|
||||||
|
default.add_absolute('Fe')
|
||||||
|
loc = {'Fe': default.get_dataset_location('Fe'),
|
||||||
|
'|Fe|': default.get_dataset_location('|Fe|')}
|
||||||
|
in_memory = np.abs(default.read_dataset(loc['Fe'],0))
|
||||||
|
in_file = default.read_dataset(loc['|Fe|'],0)
|
||||||
|
assert np.allclose(in_memory,in_file)
|
||||||
|
|
||||||
|
def test_add_determinant(self,default):
|
||||||
|
default.add_determinant('P')
|
||||||
|
loc = {'P': default.get_dataset_location('P'),
|
||||||
|
'det(P)': default.get_dataset_location('det(P)')}
|
||||||
|
in_memory = np.linalg.det(default.read_dataset(loc['P'],0)).reshape(-1,1)
|
||||||
|
in_file = default.read_dataset(loc['det(P)'],0)
|
||||||
|
assert np.allclose(in_memory,in_file)
|
||||||
|
|
||||||
|
def test_add_spherical(self,default):
|
||||||
|
default.add_spherical('P')
|
||||||
|
loc = {'P': default.get_dataset_location('P'),
|
||||||
|
'p_P': default.get_dataset_location('p_P')}
|
||||||
|
in_memory = mechanics.spherical_part(default.read_dataset(loc['P'],0)).reshape(-1,1)
|
||||||
|
in_file = default.read_dataset(loc['p_P'],0)
|
||||||
|
assert np.allclose(in_memory,in_file)
|
|
@ -0,0 +1,99 @@
|
||||||
|
import copy
|
||||||
|
import os
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
from damask import Geom
|
||||||
|
|
||||||
|
|
||||||
|
def geom_equal(a,b):
|
||||||
|
return np.all(a.get_microstructure() == b.get_microstructure()) and \
|
||||||
|
np.all(a.get_size() == b.get_size()) and \
|
||||||
|
np.all(a.get_grid() == b.get_grid())
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def default():
|
||||||
|
"""Simple geometry."""
|
||||||
|
x=np.concatenate((np.ones(40,dtype=int),
|
||||||
|
np.arange(2,42),
|
||||||
|
np.ones(40,dtype=int)*2,
|
||||||
|
np.arange(1,41))).reshape((8,5,4))
|
||||||
|
return Geom(x,[8e-6,5e-6,4e-6])
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def reference_dir(reference_dir_base):
|
||||||
|
"""Directory containing reference results."""
|
||||||
|
return os.path.join(reference_dir_base,'Geom')
|
||||||
|
|
||||||
|
|
||||||
|
class TestGeom:
|
||||||
|
|
||||||
|
def test_update(self,default):
|
||||||
|
modified = copy.deepcopy(default)
|
||||||
|
modified.update(
|
||||||
|
default.get_microstructure(),
|
||||||
|
default.get_size(),
|
||||||
|
default.get_origin()
|
||||||
|
)
|
||||||
|
assert geom_equal(modified,default)
|
||||||
|
|
||||||
|
|
||||||
|
def test_write_read_str(self,default,tmpdir):
|
||||||
|
default.to_file(str(tmpdir.join('default.geom')))
|
||||||
|
new = Geom.from_file(str(tmpdir.join('default.geom')))
|
||||||
|
assert geom_equal(new,default)
|
||||||
|
|
||||||
|
def test_write_read_file(self,default,tmpdir):
|
||||||
|
with open(tmpdir.join('default.geom'),'w') as f:
|
||||||
|
default.to_file(f)
|
||||||
|
with open(tmpdir.join('default.geom')) as f:
|
||||||
|
new = Geom.from_file(f)
|
||||||
|
assert geom_equal(new,default)
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('pack',[True,False])
|
||||||
|
def test_pack(self,default,tmpdir,pack):
|
||||||
|
default.to_file(tmpdir.join('default.geom'),pack=pack)
|
||||||
|
new = Geom.from_file(tmpdir.join('default.geom'))
|
||||||
|
assert geom_equal(new,default)
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('directions,reflect',[
|
||||||
|
(['x'], False),
|
||||||
|
(['x','y','z'],True),
|
||||||
|
(['z','x','y'],False),
|
||||||
|
(['y','z'], False)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
def test_mirror(self,default,update,reference_dir,directions,reflect):
|
||||||
|
modified = copy.deepcopy(default)
|
||||||
|
modified.mirror(directions,reflect)
|
||||||
|
tag = 'directions={}_reflect={}'.format('-'.join(directions),reflect)
|
||||||
|
reference = os.path.join(reference_dir,'mirror_{}.geom'.format(tag))
|
||||||
|
if update: modified.to_file(reference)
|
||||||
|
assert geom_equal(modified,Geom.from_file(reference))
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('stencil',[(1),(2),(3),(4)])
|
||||||
|
def test_clean(self,default,update,reference_dir,stencil):
|
||||||
|
modified = copy.deepcopy(default)
|
||||||
|
modified.clean(stencil)
|
||||||
|
tag = 'stencil={}'.format(stencil)
|
||||||
|
reference = os.path.join(reference_dir,'clean_{}.geom'.format(tag))
|
||||||
|
if update: modified.to_file(reference)
|
||||||
|
assert geom_equal(modified,Geom.from_file(reference))
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('grid',[
|
||||||
|
((10,11,10)),
|
||||||
|
([10,13,10]),
|
||||||
|
(np.array((10,10,10))),
|
||||||
|
(np.array((8, 10,12))),
|
||||||
|
(np.array((5, 4, 20))),
|
||||||
|
(np.array((10,20,2)) )
|
||||||
|
]
|
||||||
|
)
|
||||||
|
def test_scale(self,default,update,reference_dir,grid):
|
||||||
|
modified = copy.deepcopy(default)
|
||||||
|
modified.scale(grid)
|
||||||
|
tag = 'grid={}'.format('-'.join([str(x) for x in grid]))
|
||||||
|
reference = os.path.join(reference_dir,'scale_{}.geom'.format(tag))
|
||||||
|
if update: modified.to_file(reference)
|
||||||
|
assert geom_equal(modified,Geom.from_file(reference))
|
|
@ -0,0 +1,55 @@
|
||||||
|
import pytest
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
from damask import Rotation
|
||||||
|
|
||||||
|
n = 1000
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def default():
|
||||||
|
"""A set of n random rotations."""
|
||||||
|
return [Rotation.fromRandom() for r in range(n)]
|
||||||
|
|
||||||
|
|
||||||
|
class TestRotation:
|
||||||
|
|
||||||
|
def test_Eulers(self,default):
|
||||||
|
for rot in default:
|
||||||
|
assert np.allclose(rot.asQuaternion(),
|
||||||
|
Rotation.fromEulers(rot.asEulers()).asQuaternion())
|
||||||
|
|
||||||
|
|
||||||
|
def test_AxisAngle(self,default):
|
||||||
|
for rot in default:
|
||||||
|
assert np.allclose(rot.asEulers(),
|
||||||
|
Rotation.fromAxisAngle(rot.asAxisAngle()).asEulers())
|
||||||
|
|
||||||
|
|
||||||
|
def test_Matrix(self,default):
|
||||||
|
for rot in default:
|
||||||
|
assert np.allclose(rot.asAxisAngle(),
|
||||||
|
Rotation.fromMatrix(rot.asMatrix()).asAxisAngle())
|
||||||
|
|
||||||
|
|
||||||
|
def test_Rodriques(self,default):
|
||||||
|
for rot in default:
|
||||||
|
assert np.allclose(rot.asMatrix(),
|
||||||
|
Rotation.fromRodrigues(rot.asRodrigues()).asMatrix())
|
||||||
|
|
||||||
|
|
||||||
|
def test_Homochoric(self,default):
|
||||||
|
for rot in default:
|
||||||
|
assert np.allclose(rot.asRodrigues(),
|
||||||
|
Rotation.fromHomochoric(rot.asHomochoric()).asRodrigues())
|
||||||
|
|
||||||
|
|
||||||
|
def test_Cubochoric(self,default):
|
||||||
|
for rot in default:
|
||||||
|
assert np.allclose(rot.asHomochoric(),
|
||||||
|
Rotation.fromCubochoric(rot.asCubochoric()).asHomochoric())
|
||||||
|
|
||||||
|
|
||||||
|
def test_Quaternion(self,default):
|
||||||
|
for rot in default:
|
||||||
|
assert np.allclose(rot.asCubochoric(),
|
||||||
|
Rotation.fromQuaternion(rot.asQuaternion()).asCubochoric())
|
|
@ -0,0 +1,57 @@
|
||||||
|
import pytest
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
from damask import Table
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def default():
|
||||||
|
"""Simple Table."""
|
||||||
|
x = np.ones((5,13))
|
||||||
|
return Table(x,{'F':(3,3),'v':(3,),'s':(1,)},['test data','contains only ones'])
|
||||||
|
|
||||||
|
|
||||||
|
class TestTable:
|
||||||
|
|
||||||
|
def test_get_tensor(self,default):
|
||||||
|
d = default.get_array('F')
|
||||||
|
assert np.allclose(d,1.0) and d.shape[1:] == (3,3)
|
||||||
|
|
||||||
|
def test_get_vector(self,default):
|
||||||
|
d = default.get_array('v')
|
||||||
|
assert np.allclose(d,1.0) and d.shape[1:] == (3,)
|
||||||
|
|
||||||
|
def test_write_read_str(self,default,tmpdir):
|
||||||
|
default.to_ASCII(str(tmpdir.join('default.txt')))
|
||||||
|
new = Table.from_ASCII(str(tmpdir.join('default.txt')))
|
||||||
|
assert all(default.data==new.data)
|
||||||
|
|
||||||
|
def test_write_read_file(self,default,tmpdir):
|
||||||
|
with open(tmpdir.join('default.txt'),'w') as f:
|
||||||
|
default.to_ASCII(f)
|
||||||
|
with open(tmpdir.join('default.txt')) as f:
|
||||||
|
new = Table.from_ASCII(f)
|
||||||
|
assert all(default.data==new.data)
|
||||||
|
|
||||||
|
def test_set_array(self,default):
|
||||||
|
default.set_array('F',np.zeros((5,3,3)),'set to zero')
|
||||||
|
d=default.get_array('F')
|
||||||
|
assert np.allclose(d,0.0) and d.shape[1:] == (3,3)
|
||||||
|
|
||||||
|
def test_get_labels(self,default):
|
||||||
|
assert default.get_labels() == ['F','v','s']
|
||||||
|
|
||||||
|
def test_add_array(self,default):
|
||||||
|
d = np.random.random((5,9))
|
||||||
|
default.add_array('nine',d,'random data')
|
||||||
|
assert np.allclose(d,default.get_array('nine'))
|
||||||
|
|
||||||
|
|
||||||
|
def test_invalid_initialization(self,default):
|
||||||
|
x = default.get_array('v')
|
||||||
|
with pytest.raises(IndexError):
|
||||||
|
Table(x,{'F':(3,3)})
|
||||||
|
|
||||||
|
def test_invalid_set(self,default):
|
||||||
|
x = default.get_array('v')
|
||||||
|
with pytest.raises(ValueError):
|
||||||
|
default.set_array('F',x,'does not work')
|
|
@ -0,0 +1,142 @@
|
||||||
|
import numpy as np
|
||||||
|
from damask import mechanics
|
||||||
|
|
||||||
|
class TestMechanics:
|
||||||
|
|
||||||
|
n = 1000
|
||||||
|
c = np.random.randint(n)
|
||||||
|
|
||||||
|
|
||||||
|
def test_vectorize_Cauchy(self):
|
||||||
|
P = np.random.random((self.n,3,3))
|
||||||
|
F = np.random.random((self.n,3,3))
|
||||||
|
assert np.allclose(mechanics.Cauchy(F,P)[self.c],
|
||||||
|
mechanics.Cauchy(F[self.c],P[self.c]))
|
||||||
|
|
||||||
|
|
||||||
|
def test_vectorize_strain_tensor(self):
|
||||||
|
F = np.random.random((self.n,3,3))
|
||||||
|
t = ['V','U'][np.random.randint(0,2)]
|
||||||
|
m = np.random.random()*10. -5.0
|
||||||
|
assert np.allclose(mechanics.strain_tensor(F,t,m)[self.c],
|
||||||
|
mechanics.strain_tensor(F[self.c],t,m))
|
||||||
|
|
||||||
|
|
||||||
|
def test_vectorize_deviatoric_part(self):
|
||||||
|
x = np.random.random((self.n,3,3))
|
||||||
|
assert np.allclose(mechanics.deviatoric_part(x)[self.c],
|
||||||
|
mechanics.deviatoric_part(x[self.c]))
|
||||||
|
|
||||||
|
|
||||||
|
def test_vectorize_spherical_part(self):
|
||||||
|
x = np.random.random((self.n,3,3))
|
||||||
|
assert np.allclose(mechanics.spherical_part(x)[self.c],
|
||||||
|
mechanics.spherical_part(x[self.c]))
|
||||||
|
|
||||||
|
|
||||||
|
def test_vectorize_Mises_stress(self):
|
||||||
|
sigma = np.random.random((self.n,3,3))
|
||||||
|
assert np.allclose(mechanics.Mises_stress(sigma)[self.c],
|
||||||
|
mechanics.Mises_stress(sigma[self.c]))
|
||||||
|
|
||||||
|
|
||||||
|
def test_vectorize_Mises_strain(self):
|
||||||
|
epsilon = np.random.random((self.n,3,3))
|
||||||
|
assert np.allclose(mechanics.Mises_strain(epsilon)[self.c],
|
||||||
|
mechanics.Mises_strain(epsilon[self.c]))
|
||||||
|
|
||||||
|
|
||||||
|
def test_vectorize_symmetric(self):
|
||||||
|
x = np.random.random((self.n,3,3))
|
||||||
|
assert np.allclose(mechanics.symmetric(x)[self.c],
|
||||||
|
mechanics.symmetric(x[self.c]))
|
||||||
|
|
||||||
|
|
||||||
|
def test_vectorize_maximum_shear(self):
|
||||||
|
x = np.random.random((self.n,3,3))
|
||||||
|
assert np.allclose(mechanics.maximum_shear(x)[self.c],
|
||||||
|
mechanics.maximum_shear(x[self.c]))
|
||||||
|
|
||||||
|
|
||||||
|
def test_vectorize_principal_components(self):
|
||||||
|
x = np.random.random((self.n,3,3))
|
||||||
|
assert np.allclose(mechanics.principal_components(x)[self.c],
|
||||||
|
mechanics.principal_components(x[self.c]))
|
||||||
|
|
||||||
|
|
||||||
|
def test_vectorize_transpose(self):
|
||||||
|
x = np.random.random((self.n,3,3))
|
||||||
|
assert np.allclose(mechanics.transpose(x)[self.c],
|
||||||
|
mechanics.transpose(x[self.c]))
|
||||||
|
|
||||||
|
|
||||||
|
def test_vectorize_rotational_part(self):
|
||||||
|
x = np.random.random((self.n,3,3))
|
||||||
|
assert np.allclose(mechanics.rotational_part(x)[self.c],
|
||||||
|
mechanics.rotational_part(x[self.c]))
|
||||||
|
|
||||||
|
|
||||||
|
def test_vectorize_left_stretch(self):
|
||||||
|
x = np.random.random((self.n,3,3))
|
||||||
|
assert np.allclose(mechanics.left_stretch(x)[self.c],
|
||||||
|
mechanics.left_stretch(x[self.c]))
|
||||||
|
|
||||||
|
|
||||||
|
def test_vectorize_right_stretch(self):
|
||||||
|
x = np.random.random((self.n,3,3))
|
||||||
|
assert np.allclose(mechanics.right_stretch(x)[self.c],
|
||||||
|
mechanics.right_stretch(x[self.c]))
|
||||||
|
|
||||||
|
|
||||||
|
def test_Cauchy(self):
|
||||||
|
"""Ensure Cauchy stress is symmetrized 1. Piola-Kirchhoff stress for no deformation."""
|
||||||
|
P = np.random.random((self.n,3,3))
|
||||||
|
assert np.allclose(mechanics.Cauchy(np.broadcast_to(np.eye(3),(self.n,3,3)),P),
|
||||||
|
mechanics.symmetric(P))
|
||||||
|
|
||||||
|
|
||||||
|
def test_strain_tensor_no_rotation(self):
|
||||||
|
"""Ensure that left and right stretch give same results for no rotation."""
|
||||||
|
F = np.broadcast_to(np.eye(3),[self.n,3,3])*np.random.random((self.n,3,3))
|
||||||
|
m = np.random.random()*20.0-10.0
|
||||||
|
assert np.allclose(mechanics.strain_tensor(F,'U',m),
|
||||||
|
mechanics.strain_tensor(F,'V',m))
|
||||||
|
|
||||||
|
|
||||||
|
def test_strain_tensor_rotation(self):
|
||||||
|
"""Ensure that pure rotation results in no strain."""
|
||||||
|
F = mechanics.rotational_part(np.random.random((self.n,3,3)))
|
||||||
|
t = ['V','U'][np.random.randint(0,2)]
|
||||||
|
m = np.random.random()*2.0 - 1.0
|
||||||
|
assert np.allclose(mechanics.strain_tensor(F,t,m),
|
||||||
|
0.0)
|
||||||
|
|
||||||
|
|
||||||
|
def test_spherical_deviatoric_part(self):
|
||||||
|
"""Ensure that full tensor is sum of spherical and deviatoric part."""
|
||||||
|
x = np.random.random((self.n,3,3))
|
||||||
|
sph = np.broadcast_to(np.eye(3),(self.n,3,3))\
|
||||||
|
* np.repeat(mechanics.spherical_part(x),9).reshape(self.n,3,3)
|
||||||
|
assert np.allclose(sph + mechanics.deviatoric_part(x),
|
||||||
|
x)
|
||||||
|
|
||||||
|
|
||||||
|
def test_symmetric(self):
|
||||||
|
"""Ensure that a symmetric tensor is half of the sum of a tensor and its transpose."""
|
||||||
|
x = np.random.random((self.n,3,3))
|
||||||
|
assert np.allclose(mechanics.symmetric(x)*2.0,
|
||||||
|
mechanics.transpose(x)+x)
|
||||||
|
|
||||||
|
|
||||||
|
def test_transpose(self):
|
||||||
|
"""Ensure that a symmetric tensor equals its transpose."""
|
||||||
|
x = mechanics.symmetric(np.random.random((self.n,3,3)))
|
||||||
|
assert np.allclose(mechanics.transpose(x),
|
||||||
|
x)
|
||||||
|
|
||||||
|
|
||||||
|
def test_Mises(self):
|
||||||
|
"""Ensure that equivalent stress is 3/2 of equivalent strain."""
|
||||||
|
x = np.random.random((self.n,3,3))
|
||||||
|
assert np.allclose(mechanics.Mises_stress(x)/mechanics.Mises_strain(x),
|
||||||
|
1.5)
|
|
@ -57,10 +57,10 @@ subroutine CPFEM_initAll
|
||||||
call config_init
|
call config_init
|
||||||
call math_init
|
call math_init
|
||||||
call rotations_init
|
call rotations_init
|
||||||
call mesh_init
|
|
||||||
call lattice_init
|
call lattice_init
|
||||||
call HDF5_utilities_init
|
call HDF5_utilities_init
|
||||||
call results_init
|
call results_init
|
||||||
|
call mesh_init
|
||||||
call material_init
|
call material_init
|
||||||
call constitutive_init
|
call constitutive_init
|
||||||
call crystallite_init
|
call crystallite_init
|
||||||
|
|
|
@ -85,6 +85,7 @@ subroutine config_init
|
||||||
case (trim('crystallite'))
|
case (trim('crystallite'))
|
||||||
call parse_materialConfig(config_name_crystallite,config_crystallite,line,fileContent(i+1:))
|
call parse_materialConfig(config_name_crystallite,config_crystallite,line,fileContent(i+1:))
|
||||||
if (verbose) write(6,'(a)') ' Crystallite parsed'; flush(6)
|
if (verbose) write(6,'(a)') ' Crystallite parsed'; flush(6)
|
||||||
|
deallocate(config_crystallite)
|
||||||
|
|
||||||
case (trim('homogenization'))
|
case (trim('homogenization'))
|
||||||
call parse_materialConfig(config_name_homogenization,config_homogenization,line,fileContent(i+1:))
|
call parse_materialConfig(config_name_homogenization,config_homogenization,line,fileContent(i+1:))
|
||||||
|
@ -102,27 +103,25 @@ subroutine config_init
|
||||||
call IO_error(160,ext_msg='<homogenization>')
|
call IO_error(160,ext_msg='<homogenization>')
|
||||||
if (.not. allocated(config_microstructure) .or. size(config_microstructure) < 1) &
|
if (.not. allocated(config_microstructure) .or. size(config_microstructure) < 1) &
|
||||||
call IO_error(160,ext_msg='<microstructure>')
|
call IO_error(160,ext_msg='<microstructure>')
|
||||||
if (.not. allocated(config_crystallite) .or. size(config_crystallite) < 1) &
|
|
||||||
call IO_error(160,ext_msg='<crystallite>')
|
|
||||||
if (.not. allocated(config_phase) .or. size(config_phase) < 1) &
|
if (.not. allocated(config_phase) .or. size(config_phase) < 1) &
|
||||||
call IO_error(160,ext_msg='<phase>')
|
call IO_error(160,ext_msg='<phase>')
|
||||||
if (.not. allocated(config_texture) .or. size(config_texture) < 1) &
|
if (.not. allocated(config_texture) .or. size(config_texture) < 1) &
|
||||||
call IO_error(160,ext_msg='<texture>')
|
call IO_error(160,ext_msg='<texture>')
|
||||||
|
|
||||||
|
|
||||||
inquire(file='numerics.config', exist=fileExists)
|
inquire(file='numerics.config', exist=fileExists)
|
||||||
if (fileExists) then
|
if (fileExists) then
|
||||||
write(6,'(/,a)') ' reading numerics.config'; flush(6)
|
write(6,'(/,a)') ' reading numerics.config'; flush(6)
|
||||||
fileContent = IO_read_ASCII('numerics.config')
|
fileContent = IO_read_ASCII('numerics.config')
|
||||||
call parse_debugAndNumericsConfig(config_numerics,fileContent)
|
call parse_debugAndNumericsConfig(config_numerics,fileContent)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
inquire(file='debug.config', exist=fileExists)
|
inquire(file='debug.config', exist=fileExists)
|
||||||
if (fileExists) then
|
if (fileExists) then
|
||||||
write(6,'(/,a)') ' reading debug.config'; flush(6)
|
write(6,'(/,a)') ' reading debug.config'; flush(6)
|
||||||
fileContent = IO_read_ASCII('debug.config')
|
fileContent = IO_read_ASCII('debug.config')
|
||||||
call parse_debugAndNumericsConfig(config_debug,fileContent)
|
call parse_debugAndNumericsConfig(config_debug,fileContent)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
@ -295,9 +294,6 @@ subroutine config_deallocate(what)
|
||||||
case('material.config/microstructure')
|
case('material.config/microstructure')
|
||||||
deallocate(config_microstructure)
|
deallocate(config_microstructure)
|
||||||
|
|
||||||
case('material.config/crystallite')
|
|
||||||
deallocate(config_crystallite)
|
|
||||||
|
|
||||||
case('material.config/homogenization')
|
case('material.config/homogenization')
|
||||||
deallocate(config_homogenization)
|
deallocate(config_homogenization)
|
||||||
|
|
||||||
|
|
|
@ -22,22 +22,10 @@ module crystallite
|
||||||
use discretization
|
use discretization
|
||||||
use lattice
|
use lattice
|
||||||
use plastic_nonlocal
|
use plastic_nonlocal
|
||||||
use geometry_plastic_nonlocal, only: &
|
|
||||||
nIPneighbors => geometry_plastic_nonlocal_nIPneighbors, &
|
|
||||||
IPneighborhood => geometry_plastic_nonlocal_IPneighborhood
|
|
||||||
use HDF5_utilities
|
|
||||||
use results
|
use results
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
character(len=64), dimension(:,:), allocatable :: &
|
|
||||||
crystallite_output !< name of each post result output
|
|
||||||
integer, public, protected :: &
|
|
||||||
crystallite_maxSizePostResults !< description not available
|
|
||||||
integer, dimension(:), allocatable, public, protected :: &
|
|
||||||
crystallite_sizePostResults !< description not available
|
|
||||||
integer, dimension(:,:), allocatable :: &
|
|
||||||
crystallite_sizePostResult !< description not available
|
|
||||||
|
|
||||||
real(pReal), dimension(:,:,:), allocatable, public :: &
|
real(pReal), dimension(:,:,:), allocatable, public :: &
|
||||||
crystallite_dt !< requested time increment of each grain
|
crystallite_dt !< requested time increment of each grain
|
||||||
|
@ -90,21 +78,11 @@ module crystallite
|
||||||
|
|
||||||
enum, bind(c)
|
enum, bind(c)
|
||||||
enumerator :: undefined_ID, &
|
enumerator :: undefined_ID, &
|
||||||
phase_ID, &
|
|
||||||
texture_ID, &
|
|
||||||
orientation_ID, &
|
orientation_ID, &
|
||||||
grainrotation_ID, &
|
|
||||||
defgrad_ID, &
|
defgrad_ID, &
|
||||||
fe_ID, &
|
|
||||||
fp_ID, &
|
fp_ID, &
|
||||||
fi_ID, &
|
|
||||||
lp_ID, &
|
|
||||||
li_ID, &
|
|
||||||
p_ID, &
|
p_ID, &
|
||||||
s_ID, &
|
elasmatrix_ID
|
||||||
elasmatrix_ID, &
|
|
||||||
neighboringip_ID, &
|
|
||||||
neighboringelement_ID
|
|
||||||
end enum
|
end enum
|
||||||
integer(kind(undefined_ID)),dimension(:,:), allocatable :: &
|
integer(kind(undefined_ID)),dimension(:,:), allocatable :: &
|
||||||
crystallite_outputID !< ID of each post result output
|
crystallite_outputID !< ID of each post result output
|
||||||
|
@ -213,13 +191,6 @@ subroutine crystallite_init
|
||||||
allocate(crystallite_requested(cMax,iMax,eMax), source=.false.)
|
allocate(crystallite_requested(cMax,iMax,eMax), source=.false.)
|
||||||
allocate(crystallite_todo(cMax,iMax,eMax), source=.false.)
|
allocate(crystallite_todo(cMax,iMax,eMax), source=.false.)
|
||||||
allocate(crystallite_converged(cMax,iMax,eMax), source=.true.)
|
allocate(crystallite_converged(cMax,iMax,eMax), source=.true.)
|
||||||
allocate(crystallite_output(maxval(crystallite_Noutput), &
|
|
||||||
size(config_crystallite))) ; crystallite_output = ''
|
|
||||||
allocate(crystallite_outputID(maxval(crystallite_Noutput), &
|
|
||||||
size(config_crystallite)), source=undefined_ID)
|
|
||||||
allocate(crystallite_sizePostResults(size(config_crystallite)),source=0)
|
|
||||||
allocate(crystallite_sizePostResult(maxval(crystallite_Noutput), &
|
|
||||||
size(config_crystallite)), source=0)
|
|
||||||
|
|
||||||
num%subStepMinCryst = config_numerics%getFloat('substepmincryst', defaultVal=1.0e-3_pReal)
|
num%subStepMinCryst = config_numerics%getFloat('substepmincryst', defaultVal=1.0e-3_pReal)
|
||||||
num%subStepSizeCryst = config_numerics%getFloat('substepsizecryst', defaultVal=0.25_pReal)
|
num%subStepSizeCryst = config_numerics%getFloat('substepsizecryst', defaultVal=0.25_pReal)
|
||||||
|
@ -266,55 +237,6 @@ subroutine crystallite_init
|
||||||
integrateState => integrateStateRKCK45
|
integrateState => integrateStateRKCK45
|
||||||
end select
|
end select
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
do c = 1, size(config_crystallite)
|
|
||||||
#if defined(__GFORTRAN__)
|
|
||||||
str = ['GfortranBug86277']
|
|
||||||
str = config_crystallite(c)%getStrings('(output)',defaultVal=str)
|
|
||||||
if (str(1) == 'GfortranBug86277') str = [character(len=65536)::]
|
|
||||||
#else
|
|
||||||
str = config_crystallite(c)%getStrings('(output)',defaultVal=[character(len=65536)::])
|
|
||||||
#endif
|
|
||||||
do o = 1, size(str)
|
|
||||||
crystallite_output(o,c) = str(o)
|
|
||||||
outputName: select case(str(o))
|
|
||||||
case ('phase') outputName
|
|
||||||
crystallite_outputID(o,c) = phase_ID
|
|
||||||
case ('texture') outputName
|
|
||||||
crystallite_outputID(o,c) = texture_ID
|
|
||||||
case ('orientation') outputName
|
|
||||||
crystallite_outputID(o,c) = orientation_ID
|
|
||||||
case ('grainrotation') outputName
|
|
||||||
crystallite_outputID(o,c) = grainrotation_ID
|
|
||||||
case ('defgrad','f') outputName ! ToDo: no alias (f only)
|
|
||||||
crystallite_outputID(o,c) = defgrad_ID
|
|
||||||
case ('fe') outputName
|
|
||||||
crystallite_outputID(o,c) = fe_ID
|
|
||||||
case ('fp') outputName
|
|
||||||
crystallite_outputID(o,c) = fp_ID
|
|
||||||
case ('fi') outputName
|
|
||||||
crystallite_outputID(o,c) = fi_ID
|
|
||||||
case ('lp') outputName
|
|
||||||
crystallite_outputID(o,c) = lp_ID
|
|
||||||
case ('li') outputName
|
|
||||||
crystallite_outputID(o,c) = li_ID
|
|
||||||
case ('p','firstpiola','1stpiola') outputName ! ToDo: no alias (p only)
|
|
||||||
crystallite_outputID(o,c) = p_ID
|
|
||||||
case ('s','tstar','secondpiola','2ndpiola') outputName ! ToDo: no alias (s only)
|
|
||||||
crystallite_outputID(o,c) = s_ID
|
|
||||||
case ('elasmatrix') outputName
|
|
||||||
crystallite_outputID(o,c) = elasmatrix_ID
|
|
||||||
case ('neighboringip') outputName ! ToDo: this is not a result, it is static. Should be written out by mesh
|
|
||||||
crystallite_outputID(o,c) = neighboringip_ID
|
|
||||||
case ('neighboringelement') outputName ! ToDo: this is not a result, it is static. Should be written out by mesh
|
|
||||||
crystallite_outputID(o,c) = neighboringelement_ID
|
|
||||||
case default outputName
|
|
||||||
call IO_error(105,ext_msg=trim(str(o))//' (Crystallite)')
|
|
||||||
end select outputName
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
|
|
||||||
allocate(output_constituent(size(config_phase)))
|
allocate(output_constituent(size(config_phase)))
|
||||||
do c = 1, size(config_phase)
|
do c = 1, size(config_phase)
|
||||||
#if defined(__GFORTRAN__)
|
#if defined(__GFORTRAN__)
|
||||||
|
@ -327,47 +249,14 @@ subroutine crystallite_init
|
||||||
#endif
|
#endif
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
|
||||||
do r = 1,size(config_crystallite)
|
|
||||||
do o = 1,crystallite_Noutput(r)
|
|
||||||
select case(crystallite_outputID(o,r))
|
|
||||||
case(orientation_ID)
|
|
||||||
mySize = 4
|
|
||||||
case(defgrad_ID,fp_ID,p_ID)
|
|
||||||
mySize = 9
|
|
||||||
case(neighboringip_ID,neighboringelement_ID)
|
|
||||||
mySize = nIPneighbors
|
|
||||||
case default
|
|
||||||
mySize = 0
|
|
||||||
end select
|
|
||||||
crystallite_sizePostResult(o,r) = mySize
|
|
||||||
crystallite_sizePostResults(r) = crystallite_sizePostResults(r) + mySize
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
|
|
||||||
crystallite_maxSizePostResults = &
|
|
||||||
maxval(crystallite_sizePostResults(microstructure_crystallite),microstructure_active)
|
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! write description file for crystallite output
|
! write description file for crystallite output
|
||||||
if (worldrank == 0) then
|
if (worldrank == 0) then
|
||||||
call IO_write_jobFile(FILEUNIT,'outputCrystallite')
|
call IO_write_jobFile(FILEUNIT,'outputCrystallite')
|
||||||
|
write(FILEUNIT,'(/,a,/)') '[not supported anymore]'
|
||||||
do r = 1,size(config_crystallite)
|
|
||||||
if (any(microstructure_crystallite(discretization_microstructureAt) == r)) then
|
|
||||||
write(FILEUNIT,'(/,a,/)') '['//trim(config_name_crystallite(r))//']'
|
|
||||||
do o = 1,crystallite_Noutput(r)
|
|
||||||
write(FILEUNIT,'(a,i4)') trim(crystallite_output(o,r))//char(9),crystallite_sizePostResult(o,r)
|
|
||||||
enddo
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
|
|
||||||
close(FILEUNIT)
|
close(FILEUNIT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call config_deallocate('material.config/phase')
|
call config_deallocate('material.config/phase')
|
||||||
call config_deallocate('material.config/crystallite')
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! initialize
|
! initialize
|
||||||
|
@ -869,59 +758,21 @@ function crystallite_postResults(ipc, ip, el)
|
||||||
ip, & !< integration point index
|
ip, & !< integration point index
|
||||||
ipc !< grain index
|
ipc !< grain index
|
||||||
|
|
||||||
real(pReal), dimension(1+crystallite_sizePostResults(microstructure_crystallite(discretization_microstructureAt(el))) + &
|
real(pReal), dimension(1+ &
|
||||||
1+plasticState(material_phaseAt(ipc,el))%sizePostResults + &
|
1+plasticState(material_phaseAt(ipc,el))%sizePostResults + &
|
||||||
sum(sourceState(material_phaseAt(ipc,el))%p(:)%sizePostResults)) :: &
|
sum(sourceState(material_phaseAt(ipc,el))%p(:)%sizePostResults)) :: &
|
||||||
crystallite_postResults
|
crystallite_postResults
|
||||||
integer :: &
|
integer :: &
|
||||||
o, &
|
o, &
|
||||||
c, &
|
c, &
|
||||||
crystID, &
|
|
||||||
mySize, &
|
mySize, &
|
||||||
n
|
n
|
||||||
|
|
||||||
crystID = microstructure_crystallite(discretization_microstructureAt(el))
|
|
||||||
|
|
||||||
crystallite_postResults = 0.0_pReal
|
crystallite_postResults = 0.0_pReal
|
||||||
crystallite_postResults(1) = real(crystallite_sizePostResults(crystID),pReal) ! header-like information (length)
|
crystallite_postResults(1) = 0.0_pReal ! header-like information (length)
|
||||||
c = 1
|
c = 1
|
||||||
|
|
||||||
do o = 1,crystallite_Noutput(crystID)
|
|
||||||
mySize = 0
|
|
||||||
select case(crystallite_outputID(o,crystID))
|
|
||||||
case (orientation_ID)
|
|
||||||
mySize = 4
|
|
||||||
crystallite_postResults(c+1:c+mySize) = crystallite_orientation(ipc,ip,el)%asQuaternion()
|
|
||||||
|
|
||||||
! remark: tensor output is of the form 11,12,13, 21,22,23, 31,32,33
|
|
||||||
! thus row index i is slow, while column index j is fast. reminder: "row is slow"
|
|
||||||
|
|
||||||
case (defgrad_ID)
|
|
||||||
mySize = 9
|
|
||||||
crystallite_postResults(c+1:c+mySize) = &
|
|
||||||
reshape(transpose(crystallite_partionedF(1:3,1:3,ipc,ip,el)),[mySize])
|
|
||||||
case (fp_ID)
|
|
||||||
mySize = 9
|
|
||||||
crystallite_postResults(c+1:c+mySize) = &
|
|
||||||
reshape(transpose(crystallite_Fp(1:3,1:3,ipc,ip,el)),[mySize])
|
|
||||||
case (p_ID)
|
|
||||||
mySize = 9
|
|
||||||
crystallite_postResults(c+1:c+mySize) = &
|
|
||||||
reshape(transpose(crystallite_P(1:3,1:3,ipc,ip,el)),[mySize])
|
|
||||||
case(neighboringelement_ID)
|
|
||||||
mySize = nIPneighbors
|
|
||||||
crystallite_postResults(c+1:c+mySize) = 0.0_pReal
|
|
||||||
forall (n = 1:mySize) &
|
|
||||||
crystallite_postResults(c+n) = real(IPneighborhood(1,n,ip,el),pReal)
|
|
||||||
case(neighboringip_ID)
|
|
||||||
mySize = nIPneighbors
|
|
||||||
crystallite_postResults(c+1:c+mySize) = 0.0_pReal
|
|
||||||
forall (n = 1:mySize) &
|
|
||||||
crystallite_postResults(c+n) = real(IPneighborhood(2,n,ip,el),pReal)
|
|
||||||
end select
|
|
||||||
c = c + mySize
|
|
||||||
enddo
|
|
||||||
|
|
||||||
crystallite_postResults(c+1) = real(plasticState(material_phaseAt(ipc,el))%sizePostResults,pReal) ! size of constitutive results
|
crystallite_postResults(c+1) = real(plasticState(material_phaseAt(ipc,el))%sizePostResults,pReal) ! size of constitutive results
|
||||||
c = c + 1
|
c = c + 1
|
||||||
if (size(crystallite_postResults)-c > 0) &
|
if (size(crystallite_postResults)-c > 0) &
|
||||||
|
@ -945,7 +796,7 @@ subroutine crystallite_results
|
||||||
do p=1,size(config_name_phase)
|
do p=1,size(config_name_phase)
|
||||||
group = trim('current/constituent')//'/'//trim(config_name_phase(p))//'/generic'
|
group = trim('current/constituent')//'/'//trim(config_name_phase(p))//'/generic'
|
||||||
|
|
||||||
call HDF5_closeGroup(results_addGroup(group))
|
call results_closeGroup(results_addGroup(group))
|
||||||
|
|
||||||
do o = 1, size(output_constituent(p)%label)
|
do o = 1, size(output_constituent(p)%label)
|
||||||
select case (output_constituent(p)%label(o))
|
select case (output_constituent(p)%label(o))
|
||||||
|
|
|
@ -6,9 +6,6 @@ module discretization
|
||||||
|
|
||||||
use prec
|
use prec
|
||||||
use results
|
use results
|
||||||
#if defined(PETSc) || defined(DAMASK_HDF5)
|
|
||||||
use HDF5_utilities
|
|
||||||
#endif
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
|
@ -84,7 +81,7 @@ subroutine discretization_results
|
||||||
#if defined(PETSc) || defined(DAMASK_HDF5)
|
#if defined(PETSc) || defined(DAMASK_HDF5)
|
||||||
real(pReal), dimension(:,:), allocatable :: u
|
real(pReal), dimension(:,:), allocatable :: u
|
||||||
|
|
||||||
call HDF5_closeGroup(results_addGroup(trim('current/geometry')))
|
call results_closeGroup(results_addGroup(trim('current/geometry')))
|
||||||
|
|
||||||
u = discretization_NodeCoords (1:3,:discretization_sharedNodesBeginn) &
|
u = discretization_NodeCoords (1:3,:discretization_sharedNodesBeginn) &
|
||||||
- discretization_NodeCoords0(1:3,:discretization_sharedNodesBeginn)
|
- discretization_NodeCoords0(1:3,:discretization_sharedNodesBeginn)
|
||||||
|
|
|
@ -122,7 +122,7 @@ subroutine geometry_plastic_nonlocal_results
|
||||||
|
|
||||||
integer, dimension(:), allocatable :: shp
|
integer, dimension(:), allocatable :: shp
|
||||||
|
|
||||||
#if defined(DAMASK_HDF5)
|
#if defined(PETSc) || defined(DAMASK_HDF5)
|
||||||
call results_openJobFile
|
call results_openJobFile
|
||||||
|
|
||||||
writeVolume: block
|
writeVolume: block
|
||||||
|
|
|
@ -27,7 +27,6 @@ program DAMASK_spectral
|
||||||
use grid_mech_FEM
|
use grid_mech_FEM
|
||||||
use grid_damage_spectral
|
use grid_damage_spectral
|
||||||
use grid_thermal_spectral
|
use grid_thermal_spectral
|
||||||
use HDF5_utilities
|
|
||||||
use results
|
use results
|
||||||
use rotations
|
use rotations
|
||||||
|
|
||||||
|
@ -319,15 +318,9 @@ program DAMASK_spectral
|
||||||
enddo
|
enddo
|
||||||
close(fileUnit)
|
close(fileUnit)
|
||||||
|
|
||||||
call results_openJobFile
|
|
||||||
call HDF5_closeGroup(results_addGroup('geometry'))
|
|
||||||
call results_addAttribute('grid',grid,'geometry')
|
|
||||||
call results_addAttribute('size',geomSize,'geometry')
|
|
||||||
call results_closeJobFile
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! doing initialization depending on active solvers
|
! doing initialization depending on active solvers
|
||||||
call Utilities_init()
|
call Utilities_init
|
||||||
do field = 1, nActiveFields
|
do field = 1, nActiveFields
|
||||||
select case (loadCases(1)%ID(field))
|
select case (loadCases(1)%ID(field))
|
||||||
case(FIELD_MECH_ID)
|
case(FIELD_MECH_ID)
|
||||||
|
|
|
@ -262,7 +262,7 @@ subroutine homogenization_init
|
||||||
materialpoint_sizeResults = 1 & ! grain count
|
materialpoint_sizeResults = 1 & ! grain count
|
||||||
+ 1 + thermal_maxSizePostResults &
|
+ 1 + thermal_maxSizePostResults &
|
||||||
+ damage_maxSizePostResults &
|
+ damage_maxSizePostResults &
|
||||||
+ homogenization_maxNgrains * (1 + crystallite_maxSizePostResults & ! crystallite size & crystallite results
|
+ homogenization_maxNgrains * (1 & ! crystallite size
|
||||||
+ 1 + constitutive_plasticity_maxSizePostResults & ! constitutive size & constitutive results
|
+ 1 + constitutive_plasticity_maxSizePostResults & ! constitutive size & constitutive results
|
||||||
+ constitutive_source_maxSizePostResults)
|
+ constitutive_source_maxSizePostResults)
|
||||||
allocate(materialpoint_results(materialpoint_sizeResults,discretization_nIP,discretization_nElem))
|
allocate(materialpoint_results(materialpoint_sizeResults,discretization_nIP,discretization_nElem))
|
||||||
|
@ -592,15 +592,13 @@ subroutine materialpoint_postResults
|
||||||
thePos, &
|
thePos, &
|
||||||
theSize, &
|
theSize, &
|
||||||
myNgrains, &
|
myNgrains, &
|
||||||
myCrystallite, &
|
|
||||||
g, & !< grain number
|
g, & !< grain number
|
||||||
i, & !< integration point number
|
i, & !< integration point number
|
||||||
e !< element number
|
e !< element number
|
||||||
|
|
||||||
!$OMP PARALLEL DO PRIVATE(myNgrains,myCrystallite,thePos,theSize)
|
!$OMP PARALLEL DO PRIVATE(myNgrains,thePos,theSize)
|
||||||
elementLooping: do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
elementLooping: do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
||||||
myNgrains = homogenization_Ngrains(material_homogenizationAt(e))
|
myNgrains = homogenization_Ngrains(material_homogenizationAt(e))
|
||||||
myCrystallite = microstructure_crystallite(discretization_microstructureAt(e))
|
|
||||||
IpLooping: do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e)
|
IpLooping: do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e)
|
||||||
thePos = 0
|
thePos = 0
|
||||||
|
|
||||||
|
@ -618,7 +616,7 @@ subroutine materialpoint_postResults
|
||||||
thePos = thePos + 1
|
thePos = thePos + 1
|
||||||
|
|
||||||
grainLooping :do g = 1,myNgrains
|
grainLooping :do g = 1,myNgrains
|
||||||
theSize = 1 + crystallite_sizePostResults(myCrystallite) + &
|
theSize = 1 + &
|
||||||
1 + plasticState (material_phaseAt(g,e))%sizePostResults + &
|
1 + plasticState (material_phaseAt(g,e))%sizePostResults + &
|
||||||
sum(sourceState(material_phaseAt(g,e))%p(:)%sizePostResults)
|
sum(sourceState(material_phaseAt(g,e))%p(:)%sizePostResults)
|
||||||
materialpoint_results(thePos+1:thePos+theSize,i,e) = crystallite_postResults(g,i,e) ! tell crystallite results
|
materialpoint_results(thePos+1:thePos+theSize,i,e) = crystallite_postResults(g,i,e) ! tell crystallite results
|
||||||
|
|
|
@ -116,13 +116,11 @@ module material
|
||||||
phase_Noutput, & !< number of '(output)' items per phase
|
phase_Noutput, & !< number of '(output)' items per phase
|
||||||
phase_elasticityInstance, & !< instance of particular elasticity of each phase
|
phase_elasticityInstance, & !< instance of particular elasticity of each phase
|
||||||
phase_plasticityInstance, & !< instance of particular plasticity of each phase
|
phase_plasticityInstance, & !< instance of particular plasticity of each phase
|
||||||
crystallite_Noutput, & !< number of '(output)' items per crystallite setting
|
|
||||||
homogenization_Ngrains, & !< number of grains in each homogenization
|
homogenization_Ngrains, & !< number of grains in each homogenization
|
||||||
homogenization_Noutput, & !< number of '(output)' items per homogenization
|
homogenization_Noutput, & !< number of '(output)' items per homogenization
|
||||||
homogenization_typeInstance, & !< instance of particular type of each homogenization
|
homogenization_typeInstance, & !< instance of particular type of each homogenization
|
||||||
thermal_typeInstance, & !< instance of particular type of each thermal transport
|
thermal_typeInstance, & !< instance of particular type of each thermal transport
|
||||||
damage_typeInstance, & !< instance of particular type of each nonlocal damage
|
damage_typeInstance !< instance of particular type of each nonlocal damage
|
||||||
microstructure_crystallite !< crystallite setting ID of each microstructure ! DEPRECATED !!!!
|
|
||||||
|
|
||||||
real(pReal), dimension(:), allocatable, public, protected :: &
|
real(pReal), dimension(:), allocatable, public, protected :: &
|
||||||
thermal_initialT, & !< initial temperature per each homogenization
|
thermal_initialT, & !< initial temperature per each homogenization
|
||||||
|
@ -245,9 +243,6 @@ subroutine material_init
|
||||||
call material_parseMicrostructure()
|
call material_parseMicrostructure()
|
||||||
if (iand(myDebug,debug_levelBasic) /= 0) write(6,'(a)') ' Microstructure parsed'; flush(6)
|
if (iand(myDebug,debug_levelBasic) /= 0) write(6,'(a)') ' Microstructure parsed'; flush(6)
|
||||||
|
|
||||||
call material_parseCrystallite()
|
|
||||||
if (iand(myDebug,debug_levelBasic) /= 0) write(6,'(a)') ' Crystallite parsed'; flush(6)
|
|
||||||
|
|
||||||
call material_parseHomogenization()
|
call material_parseHomogenization()
|
||||||
if (iand(myDebug,debug_levelBasic) /= 0) write(6,'(a)') ' Homogenization parsed'; flush(6)
|
if (iand(myDebug,debug_levelBasic) /= 0) write(6,'(a)') ' Homogenization parsed'; flush(6)
|
||||||
|
|
||||||
|
@ -277,9 +272,6 @@ subroutine material_init
|
||||||
allocate(temperatureRate (material_Nhomogenization))
|
allocate(temperatureRate (material_Nhomogenization))
|
||||||
|
|
||||||
do m = 1,size(config_microstructure)
|
do m = 1,size(config_microstructure)
|
||||||
if(microstructure_crystallite(m) < 1 .or. &
|
|
||||||
microstructure_crystallite(m) > size(config_crystallite)) &
|
|
||||||
call IO_error(150,m,ext_msg='crystallite')
|
|
||||||
if(minval(microstructure_phase(1:microstructure_Nconstituents(m),m)) < 1 .or. &
|
if(minval(microstructure_phase(1:microstructure_Nconstituents(m),m)) < 1 .or. &
|
||||||
maxval(microstructure_phase(1:microstructure_Nconstituents(m),m)) > size(config_phase)) &
|
maxval(microstructure_phase(1:microstructure_Nconstituents(m),m)) > size(config_phase)) &
|
||||||
call IO_error(150,m,ext_msg='phase')
|
call IO_error(150,m,ext_msg='phase')
|
||||||
|
@ -298,9 +290,8 @@ subroutine material_init
|
||||||
enddo
|
enddo
|
||||||
write(6,'(/,a14,18x,1x,a11,1x,a12,1x,a13)') 'microstructure','crystallite','constituents'
|
write(6,'(/,a14,18x,1x,a11,1x,a12,1x,a13)') 'microstructure','crystallite','constituents'
|
||||||
do m = 1,size(config_microstructure)
|
do m = 1,size(config_microstructure)
|
||||||
write(6,'(1x,a32,1x,i11,1x,i12)') config_name_microstructure(m), &
|
write(6,'(1x,a32,1x,i12)') config_name_microstructure(m), &
|
||||||
microstructure_crystallite(m), &
|
microstructure_Nconstituents(m)
|
||||||
microstructure_Nconstituents(m)
|
|
||||||
if (microstructure_Nconstituents(m) > 0) then
|
if (microstructure_Nconstituents(m) > 0) then
|
||||||
do c = 1,microstructure_Nconstituents(m)
|
do c = 1,microstructure_Nconstituents(m)
|
||||||
write(6,'(a1,1x,a32,1x,a32,1x,f7.4)') '>',config_name_phase(microstructure_phase(c,m)),&
|
write(6,'(a1,1x,a32,1x,a32,1x,f7.4)') '>',config_name_phase(microstructure_phase(c,m)),&
|
||||||
|
@ -500,7 +491,6 @@ subroutine material_parseMicrostructure
|
||||||
character(len=65536) :: &
|
character(len=65536) :: &
|
||||||
tag
|
tag
|
||||||
|
|
||||||
allocate(microstructure_crystallite(size(config_microstructure)), source=0)
|
|
||||||
allocate(microstructure_Nconstituents(size(config_microstructure)), source=0)
|
allocate(microstructure_Nconstituents(size(config_microstructure)), source=0)
|
||||||
allocate(microstructure_active(size(config_microstructure)), source=.false.)
|
allocate(microstructure_active(size(config_microstructure)), source=.false.)
|
||||||
|
|
||||||
|
@ -512,7 +502,6 @@ subroutine material_parseMicrostructure
|
||||||
|
|
||||||
do m=1, size(config_microstructure)
|
do m=1, size(config_microstructure)
|
||||||
microstructure_Nconstituents(m) = config_microstructure(m)%countKeys('(constituent)')
|
microstructure_Nconstituents(m) = config_microstructure(m)%countKeys('(constituent)')
|
||||||
microstructure_crystallite(m) = config_microstructure(m)%getInt('crystallite')
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
microstructure_maxNconstituents = maxval(microstructure_Nconstituents)
|
microstructure_maxNconstituents = maxval(microstructure_Nconstituents)
|
||||||
|
@ -547,21 +536,6 @@ subroutine material_parseMicrostructure
|
||||||
end subroutine material_parseMicrostructure
|
end subroutine material_parseMicrostructure
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
!> @brief parses the crystallite part in the material configuration file
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
subroutine material_parseCrystallite
|
|
||||||
|
|
||||||
integer :: c
|
|
||||||
|
|
||||||
allocate(crystallite_Noutput(size(config_crystallite)),source=0)
|
|
||||||
do c=1, size(config_crystallite)
|
|
||||||
crystallite_Noutput(c) = config_crystallite(c)%countKeys('(output)')
|
|
||||||
enddo
|
|
||||||
|
|
||||||
end subroutine material_parseCrystallite
|
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief parses the phase part in the material configuration file
|
!> @brief parses the phase part in the material configuration file
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -14,6 +14,7 @@ module mesh_grid
|
||||||
use IO
|
use IO
|
||||||
use debug
|
use debug
|
||||||
use numerics
|
use numerics
|
||||||
|
use results
|
||||||
use discretization
|
use discretization
|
||||||
use geometry_plastic_nonlocal
|
use geometry_plastic_nonlocal
|
||||||
use FEsolving
|
use FEsolving
|
||||||
|
@ -99,6 +100,14 @@ subroutine mesh_init(ip,el)
|
||||||
FEsolving_execElem = [1,product(myGrid)] ! parallel loop bounds set to comprise all elements
|
FEsolving_execElem = [1,product(myGrid)] ! parallel loop bounds set to comprise all elements
|
||||||
allocate(FEsolving_execIP(2,product(myGrid)),source=1) ! parallel loop bounds set to comprise the only IP
|
allocate(FEsolving_execIP(2,product(myGrid)),source=1) ! parallel loop bounds set to comprise the only IP
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
! store geometry information for post processing
|
||||||
|
call results_openJobFile
|
||||||
|
call results_closeGroup(results_addGroup('geometry'))
|
||||||
|
call results_addAttribute('grid',grid,'geometry')
|
||||||
|
call results_addAttribute('size',geomSize,'geometry')
|
||||||
|
call results_closeJobFile
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! geometry information required by the nonlocal CP model
|
! geometry information required by the nonlocal CP model
|
||||||
call geometry_plastic_nonlocal_setIPvolume(reshape([(product(mySize/real(myGrid,pReal)),j=1,product(myGrid))], &
|
call geometry_plastic_nonlocal_setIPvolume(reshape([(product(mySize/real(myGrid,pReal)),j=1,product(myGrid))], &
|
||||||
|
|
|
@ -69,7 +69,7 @@ subroutine mesh_init(ip,el)
|
||||||
microstructureAt, &
|
microstructureAt, &
|
||||||
homogenizationAt
|
homogenizationAt
|
||||||
integer:: &
|
integer:: &
|
||||||
Nnodes !< total number of nodes in mesh
|
Nnodes !< total number of nodes in mesh
|
||||||
|
|
||||||
real(pReal), dimension(:,:), allocatable :: &
|
real(pReal), dimension(:,:), allocatable :: &
|
||||||
ip_reshaped
|
ip_reshaped
|
||||||
|
@ -119,15 +119,17 @@ subroutine mesh_init(ip,el)
|
||||||
reshape(connectivity_cell,[elem%NcellNodesPerCell,elem%nIPs*nElems]),&
|
reshape(connectivity_cell,[elem%NcellNodesPerCell,elem%nIPs*nElems]),&
|
||||||
node0_cell,ip_reshaped)
|
node0_cell,ip_reshaped)
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
! geometry information required by the nonlocal CP model
|
||||||
call geometry_plastic_nonlocal_setIPvolume(IPvolume(elem,node0_cell,connectivity_cell))
|
call geometry_plastic_nonlocal_setIPvolume(IPvolume(elem,node0_cell,connectivity_cell))
|
||||||
unscaledNormals = IPareaNormal(elem,nElems,connectivity_cell,node0_cell)
|
unscaledNormals = IPareaNormal(elem,nElems,connectivity_cell,node0_cell)
|
||||||
call geometry_plastic_nonlocal_setIParea(norm2(unscaledNormals,1))
|
call geometry_plastic_nonlocal_setIParea(norm2(unscaledNormals,1))
|
||||||
call geometry_plastic_nonlocal_setIPareaNormal(unscaledNormals/spread(norm2(unscaledNormals,1),1,3))
|
call geometry_plastic_nonlocal_setIPareaNormal(unscaledNormals/spread(norm2(unscaledNormals,1),1,3))
|
||||||
call geometry_plastic_nonlocal_results
|
call geometry_plastic_nonlocal_results
|
||||||
|
|
||||||
|
|
||||||
end subroutine mesh_init
|
end subroutine mesh_init
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Writes all information needed for the DADF5 geometry
|
!> @brief Writes all information needed for the DADF5 geometry
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -50,6 +50,7 @@ module results
|
||||||
results_addIncrement, &
|
results_addIncrement, &
|
||||||
results_addGroup, &
|
results_addGroup, &
|
||||||
results_openGroup, &
|
results_openGroup, &
|
||||||
|
results_closeGroup, &
|
||||||
results_writeDataset, &
|
results_writeDataset, &
|
||||||
results_setLink, &
|
results_setLink, &
|
||||||
results_addAttribute, &
|
results_addAttribute, &
|
||||||
|
@ -120,6 +121,7 @@ subroutine results_addIncrement(inc,time)
|
||||||
|
|
||||||
end subroutine results_addIncrement
|
end subroutine results_addIncrement
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief open a group from the results file
|
!> @brief open a group from the results file
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -144,6 +146,18 @@ integer(HID_T) function results_addGroup(groupName)
|
||||||
end function results_addGroup
|
end function results_addGroup
|
||||||
|
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief close a group
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
subroutine results_closeGroup(group_id)
|
||||||
|
|
||||||
|
integer(HID_T), intent(in) :: group_id
|
||||||
|
|
||||||
|
call HDF5_closeGroup(group_id)
|
||||||
|
|
||||||
|
end subroutine results_closeGroup
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief set link to object in results file
|
!> @brief set link to object in results file
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue