improved help for automatic documentation and simplified some scripts
This commit is contained in:
parent
213d096932
commit
18831e0e80
|
@ -21,29 +21,28 @@ Orientation is given by quaternion, Euler angles, rotation matrix, or crystal fr
|
||||||
|
|
||||||
outputChoices = ['quaternion','eulers']
|
outputChoices = ['quaternion','eulers']
|
||||||
parser.add_option('-o', '--output', dest='output', action='extend', metavar='<string LIST>',
|
parser.add_option('-o', '--output', dest='output', action='extend', metavar='<string LIST>',
|
||||||
help = 'output orientation formats (%s)'%(','.join(outputChoices)))
|
help = 'output orientation formats {%s}'%(','.join(outputChoices)))
|
||||||
parser.add_option('-s', '--symmetry', dest='symmetry', type='choice',
|
parser.add_option('-s', '--symmetry', dest='symmetry', type='choice',
|
||||||
choices=damask.Symmetry.lattices[1:], metavar='string',
|
choices=damask.Symmetry.lattices[1:], metavar='string',
|
||||||
help = 'crystal symmetry (%s) [cubic]'%(', '.join(damask.Symmetry.lattices[1:])))
|
help = 'crystal symmetry [cubic] {%s}'%(', '.join(damask.Symmetry.lattices[1:])))
|
||||||
parser.add_option('-r', '--rotation', dest='rotation', type='float', nargs=4, metavar='float float float float',
|
parser.add_option('-r', '--rotation', dest='rotation', type='float', nargs=4, metavar='float float float float',
|
||||||
help = 'angle and axis to (pre)rotate orientation')
|
help = 'angle and axis to (pre)rotate orientation')
|
||||||
parser.add_option('-e', '--eulers', dest='eulers', metavar='string',
|
parser.add_option('-e', '--eulers', dest='eulers', metavar='string',
|
||||||
help = 'Euler angles label')
|
help = 'Euler angles label')
|
||||||
parser.add_option('-d', '--degrees', dest='degrees', action='store_true',
|
parser.add_option('-d', '--degrees', dest='degrees', action='store_true',
|
||||||
help = 'Euler angles are given in degrees [%default]')
|
help = 'Euler angles are given in degrees [%default]')
|
||||||
parser.add_option('-m', '--matrix', dest='matrix', metavar='string',
|
parser.add_option('-m', '--matrix', dest='matrix', metavar='string',
|
||||||
help = 'orientation matrix label')
|
help = 'orientation matrix label')
|
||||||
parser.add_option('-a', dest='a', metavar='string',
|
parser.add_option('-a', dest='a', metavar='string',
|
||||||
help = 'crystal frame a vector label')
|
help = 'crystal frame a vector label')
|
||||||
parser.add_option('-b', dest='b', metavar='string',
|
parser.add_option('-b', dest='b', metavar='string',
|
||||||
help = 'crystal frame b vector label')
|
help = 'crystal frame b vector label')
|
||||||
parser.add_option('-c', dest='c', metavar='string',
|
parser.add_option('-c', dest='c', metavar='string',
|
||||||
help = 'crystal frame c vector label')
|
help = 'crystal frame c vector label')
|
||||||
parser.add_option('-q', '--quaternion', dest='quaternion', metavar='string',
|
parser.add_option('-q', '--quaternion', dest='quaternion', metavar='string',
|
||||||
help = 'quaternion label')
|
help = 'quaternion label')
|
||||||
parser.set_defaults(output = [])
|
|
||||||
parser.set_defaults(symmetry = 'cubic')
|
parser.set_defaults(symmetry = 'cubic')
|
||||||
parser.set_defaults(rotation = [0.,1.,1.,1.]) # no rotation about 1,1,1
|
parser.set_defaults(rotation = (0.,1.,1.,1.)) # no rotation about 1,1,1
|
||||||
parser.set_defaults(degrees = False)
|
parser.set_defaults(degrees = False)
|
||||||
|
|
||||||
(options, filenames) = parser.parse_args()
|
(options, filenames) = parser.parse_args()
|
||||||
|
@ -75,10 +74,8 @@ if options.quaternion != None:
|
||||||
datainfo['quaternion']['label'] += [options.quaternion]
|
datainfo['quaternion']['label'] += [options.quaternion]
|
||||||
input = 'quaternion'
|
input = 'quaternion'
|
||||||
|
|
||||||
inputGiven = 0
|
if len(input) != 1: parser.error('needs exactly one input format...')
|
||||||
for datatype,info in datainfo.items():
|
input = input[0]
|
||||||
inputGiven += len(info['label'])
|
|
||||||
if inputGiven != 1: parser.error('select exactly one input format...')
|
|
||||||
|
|
||||||
toRadians = math.pi/180.0 if options.degrees else 1.0 # rescale degrees to radians
|
toRadians = math.pi/180.0 if options.degrees else 1.0 # rescale degrees to radians
|
||||||
options.output = map(lambda x: x.lower(), options.output)
|
options.output = map(lambda x: x.lower(), options.output)
|
||||||
|
|
|
@ -20,24 +20,14 @@ Add column(s) containing Second Piola--Kirchhoff stress based on given column(s)
|
||||||
""", version = scriptID)
|
""", version = scriptID)
|
||||||
|
|
||||||
parser.add_option('-f','--defgrad', dest='defgrad', metavar='string',
|
parser.add_option('-f','--defgrad', dest='defgrad', metavar='string',
|
||||||
help='heading of columns containing deformation gradient [%default]')
|
help='heading of columns containing deformation gradient [%default]')
|
||||||
parser.add_option('-p','--stress', dest='stress', metavar='string',
|
parser.add_option('-p','--stress', dest='stress', metavar='string',
|
||||||
help='heading of columns containing first Piola--Kirchhoff stress [%default]')
|
help='heading of columns containing first Piola--Kirchhoff stress [%default]')
|
||||||
parser.set_defaults(defgrad = 'f')
|
parser.set_defaults(defgrad = 'f')
|
||||||
parser.set_defaults(stress = 'p')
|
parser.set_defaults(stress = 'p')
|
||||||
|
|
||||||
(options,filenames) = parser.parse_args()
|
(options,filenames) = parser.parse_args()
|
||||||
|
|
||||||
datainfo = { # list of requested labels per datatype
|
|
||||||
'defgrad': {'len':9,
|
|
||||||
'label':[]},
|
|
||||||
'stress': {'len':9,
|
|
||||||
'label':[]},
|
|
||||||
}
|
|
||||||
|
|
||||||
datainfo['defgrad']['label'].append(options.defgrad)
|
|
||||||
datainfo['stress']['label'].append(options.stress)
|
|
||||||
|
|
||||||
# ------------------------------------------ setup file handles ------------------------------------
|
# ------------------------------------------ setup file handles ------------------------------------
|
||||||
files = []
|
files = []
|
||||||
if filenames == []:
|
if filenames == []:
|
||||||
|
@ -56,37 +46,28 @@ for file in files:
|
||||||
table.head_read() # read ASCII header info
|
table.head_read() # read ASCII header info
|
||||||
table.info_append(scriptID + '\t' + ' '.join(sys.argv[1:]))
|
table.info_append(scriptID + '\t' + ' '.join(sys.argv[1:]))
|
||||||
|
|
||||||
|
# --------------- figure out columns to process ---------------------------------------------------
|
||||||
|
missingColumns = False
|
||||||
|
column={ 'defgrad': table.labels.index('1_'+options.defgrad),
|
||||||
|
'stress': table.labels.index('1_'+options.stress)}
|
||||||
|
for key in column:
|
||||||
|
if column[key]<1:
|
||||||
|
file['croak'].write('column %s not found...\n'%key)
|
||||||
|
missingColumns=True
|
||||||
|
if missingColumns: continue
|
||||||
active = defaultdict(list)
|
active = defaultdict(list)
|
||||||
column = defaultdict(dict)
|
column = defaultdict(dict)
|
||||||
missingColumns = False
|
missingColumns = False
|
||||||
|
|
||||||
for datatype,info in datainfo.items():
|
|
||||||
for label in info['label']:
|
|
||||||
key = '1_%s'%label
|
|
||||||
if key not in table.labels:
|
|
||||||
file['croak'].write('column %s not found...\n'%key)
|
|
||||||
missingColumns = True # break if label not found
|
|
||||||
else:
|
|
||||||
active[datatype].append(label)
|
|
||||||
column[datatype][label] = table.labels.index(key) # remember columns of requested data
|
|
||||||
|
|
||||||
if missingColumns:
|
# ------------------------------------------ assemble header --------------------------------------
|
||||||
continue
|
|
||||||
|
|
||||||
# ------------------------------------------ assemble header --------------------------------------
|
|
||||||
table.labels_append(['%i_S'%(i+1) for i in xrange(datainfo['stress']['len'])]) # extend ASCII header with new labels
|
table.labels_append(['%i_S'%(i+1) for i in xrange(datainfo['stress']['len'])]) # extend ASCII header with new labels
|
||||||
table.head_write()
|
table.head_write()
|
||||||
|
|
||||||
# ------------------------------------------ process data ------------------------------------------
|
# ------------------------------------------ process data ------------------------------------------
|
||||||
outputAlive = True
|
outputAlive = True
|
||||||
while outputAlive and table.data_read(): # read next data line of ASCII table
|
while outputAlive and table.data_read(): # read next data line of ASCII table
|
||||||
F = np.array(map(float,table.data[column['defgrad'][active['defgrad'][0]]:
|
F = np.array(map(float,table.data[column['defgrad']:column['defgrad']+9]),'d').reshape(3,3)
|
||||||
column['defgrad'][active['defgrad'][0]]+
|
P = np.array(map(float,table.data[column['stress'] :column['stress']+9]),'d').reshape(3,3)
|
||||||
datainfo['defgrad']['len']]),'d').reshape(3,3)
|
|
||||||
P = np.array(map(float,table.data[column['stress'][active['stress'][0]]:
|
|
||||||
column['stress'][active['stress'][0]]+
|
|
||||||
datainfo['stress']['len']]),'d').reshape(3,3)
|
|
||||||
|
|
||||||
table.data_append(list(np.dot(np.linalg.inv(F),P).reshape(9))) # [S] =[P].[F-1]
|
table.data_append(list(np.dot(np.linalg.inv(F),P).reshape(9))) # [S] =[P].[F-1]
|
||||||
outputAlive = table.data_write() # output processed line
|
outputAlive = table.data_write() # output processed line
|
||||||
|
|
||||||
|
|
|
@ -19,24 +19,24 @@ Add x,y coordinates of stereographic projection of given direction (pole) in cry
|
||||||
""", version = scriptID)
|
""", version = scriptID)
|
||||||
|
|
||||||
parser.add_option('-p', '--pole', dest='pole', type='float', nargs=3, metavar='float float float',
|
parser.add_option('-p', '--pole', dest='pole', type='float', nargs=3, metavar='float float float',
|
||||||
help = 'crystal frame direction for pole figure %default')
|
help = 'crystal frame direction for pole figure [%default]')
|
||||||
parser.add_option('--polar', dest='polar', action='store_true',
|
parser.add_option('--polar', dest='polar', action='store_true',
|
||||||
help = 'output polar coordinates r,phi [%default]')
|
help = 'output polar coordinates r,phi [%default]')
|
||||||
parser.add_option('-e', '--eulers', dest='eulers', metavar='string',
|
parser.add_option('-e', '--eulers', dest='eulers', metavar='string',
|
||||||
help = 'Euler angles label')
|
help = 'Euler angles label')
|
||||||
parser.add_option('-d', '--degrees', dest='degrees', action='store_true',
|
parser.add_option('-d', '--degrees', dest='degrees', action='store_true',
|
||||||
help = 'Euler angles are given in degrees [%default]')
|
help = 'Euler angles are given in degrees [%default]')
|
||||||
parser.add_option('-m', '--matrix', dest='matrix', metavar='string',
|
parser.add_option('-m', '--matrix', dest='matrix', metavar='string',
|
||||||
help = 'orientation matrix label')
|
help = 'orientation matrix label')
|
||||||
parser.add_option('-a', dest='a', metavar='string',
|
parser.add_option('-a', dest='a', metavar='string',
|
||||||
help = 'crystal frame a vector label')
|
help = 'crystal frame a vector label')
|
||||||
parser.add_option('-b', dest='b', metavar='string',
|
parser.add_option('-b', dest='b', metavar='string',
|
||||||
help = 'crystal frame b vector label')
|
help = 'crystal frame b vector label')
|
||||||
parser.add_option('-c', dest='c', metavar='string',
|
parser.add_option('-c', dest='c', metavar='string',
|
||||||
help = 'crystal frame c vector label')
|
help = 'crystal frame c vector label')
|
||||||
parser.add_option('-q', '--quaternion', dest='quaternion', metavar='string',
|
parser.add_option('-q', '--quaternion', dest='quaternion', metavar='string',
|
||||||
help = 'quaternion label')
|
help = 'quaternion label')
|
||||||
parser.set_defaults(pole = [1.0,0.0,0.0])
|
parser.set_defaults(pole = (1.0,0.0,0.0))
|
||||||
parser.set_defaults(degrees = False)
|
parser.set_defaults(degrees = False)
|
||||||
parser.set_defaults(polar = False)
|
parser.set_defaults(polar = False)
|
||||||
|
|
||||||
|
|
|
@ -247,33 +247,34 @@ Add columns listing Schmid factors (and optional trace vector of selected system
|
||||||
|
|
||||||
""", version = scriptID)
|
""", version = scriptID)
|
||||||
|
|
||||||
parser.add_option('-l','--lattice', dest='lattice', type='choice',
|
parser.add_option('-l','--lattice', dest='lattice', type='choice', choices=('fcc','bcc','hex'), metavar='string',
|
||||||
choices=('fcc','bcc','hex'), metavar='string',
|
help="type of lattice structure [%default] {fcc,bcc',hex}")
|
||||||
help="type of lattice structure {'fcc','bcc','hex'} [%default]")
|
|
||||||
parser.add_option('--direction', dest='forcedirection', type='int', nargs=3, metavar='int int int',
|
parser.add_option('--direction', dest='forcedirection', type='int', nargs=3, metavar='int int int',
|
||||||
help='force direction in lab coordinates %default')
|
help='force direction in lab coordinates %default')
|
||||||
parser.add_option('-n','--normal', dest='stressnormal', type='int', nargs=3, metavar='int int int',
|
parser.add_option('-n','--normal', dest='stressnormal', type='int', nargs=3, metavar='int int int',
|
||||||
help='stress plane normal in lab coordinates ')
|
help='stress plane normal in lab coordinates ')
|
||||||
parser.add_option('--trace', dest='traceplane', type='int', nargs=3, metavar='int int int',
|
parser.add_option('--trace', dest='traceplane', type='int', nargs=3, metavar='int int int',
|
||||||
help='normal (in lab coordinates) of plane on which the plane trace of the Schmid factor(s) is reported')
|
help='normal (in lab coordinates) of plane on which the plane trace of the Schmid factor(s) is reported')
|
||||||
parser.add_option('--covera', dest='CoverA', type='float', metavar='float',
|
parser.add_option('--covera', dest='CoverA', type='float', metavar='float',
|
||||||
help='C over A ratio for hexagonal systems')
|
help='C over A ratio for hexagonal systems')
|
||||||
parser.add_option('-r','--rank', dest='rank', type='int', nargs=3, metavar='int int int',
|
parser.add_option('-r','--rank', dest='rank', type='int', nargs=3, metavar='int int int',
|
||||||
help="report trace of r'th highest Schmid factor [%default]")
|
help="report trace of r'th highest Schmid factor [%default]")
|
||||||
parser.add_option('-e', '--eulers', dest='eulers', metavar='string',
|
parser.add_option('-e', '--eulers', dest='eulers', metavar='string',
|
||||||
help='Euler angles label')
|
help='Euler angles label')
|
||||||
parser.add_option('-d', '--degrees', dest='degrees', action='store_true',
|
parser.add_option('-d', '--degrees', dest='degrees', action='store_true',
|
||||||
help='Euler angles are given in degrees [%default]')
|
help='Euler angles are given in degrees [%default]')
|
||||||
parser.set_defaults(lattice = 'fcc')
|
parser.set_defaults(lattice = 'fcc')
|
||||||
parser.set_defaults(forcedirection = [0, 0, 1])
|
parser.set_defaults(forcedirection = (0, 0, 1))
|
||||||
parser.set_defaults(stressnormal = None)
|
parser.set_defaults(stressnormal = None)
|
||||||
parser.set_defaults(traceplane = None)
|
parser.set_defaults(traceplane = None)
|
||||||
parser.set_defaults(rank = 0)
|
parser.set_defaults(rank = 0)
|
||||||
parser.set_defaults(CoverA = 1.587)
|
|
||||||
parser.set_defaults(eulers = 'eulerangles')
|
parser.set_defaults(eulers = 'eulerangles')
|
||||||
|
|
||||||
(options,filenames) = parser.parse_args()
|
(options,filenames) = parser.parse_args()
|
||||||
|
|
||||||
|
if options.lattice=='hex' and options.CoverA == None:
|
||||||
|
parser.error('hex lattice needs c over a ration...')
|
||||||
|
|
||||||
options.forcedirection = normalize(options.forcedirection)
|
options.forcedirection = normalize(options.forcedirection)
|
||||||
if options.stressnormal:
|
if options.stressnormal:
|
||||||
if abs(sum([options.forcedirection[i] * options.stressnormal[i] for i in range(3)])) < 1e-3:
|
if abs(sum([options.forcedirection[i] * options.stressnormal[i] for i in range(3)])) < 1e-3:
|
||||||
|
|
|
@ -20,12 +20,11 @@ Add column(s) containing eigenvalues and eigenvectors of requested tensor column
|
||||||
""", version = scriptID)
|
""", version = scriptID)
|
||||||
|
|
||||||
parser.add_option('-t','--tensor', dest='tensor', action='extend', metavar='<string LIST>',
|
parser.add_option('-t','--tensor', dest='tensor', action='extend', metavar='<string LIST>',
|
||||||
help='heading of columns containing tensor field values')
|
help='heading of columns containing tensor field values')
|
||||||
parser.set_defaults(tensor = [])
|
|
||||||
|
|
||||||
(options,filenames) = parser.parse_args()
|
(options,filenames) = parser.parse_args()
|
||||||
|
|
||||||
if len(options.tensor) == 0:
|
if options.tensor == None:
|
||||||
parser.error('no data column specified...')
|
parser.error('no data column specified...')
|
||||||
|
|
||||||
datainfo = { # list of requested labels per datatype
|
datainfo = { # list of requested labels per datatype
|
||||||
|
|
|
@ -31,17 +31,17 @@ Add column(s) containing given strains based on given stretches of requested def
|
||||||
""", version = scriptID)
|
""", version = scriptID)
|
||||||
|
|
||||||
parser.add_option('-u','--right', dest='right', action='store_true',
|
parser.add_option('-u','--right', dest='right', action='store_true',
|
||||||
help='material strains based on right Cauchy--Green deformation, i.e., C and U [%default]')
|
help='material strains based on right Cauchy--Green deformation, i.e., C and U [%default]')
|
||||||
parser.add_option('-v','--left', dest='left', action='store_true',
|
parser.add_option('-v','--left', dest='left', action='store_true',
|
||||||
help='spatial strains based on left Cauchy--Green deformation, i.e., B and V [%default]')
|
help='spatial strains based on left Cauchy--Green deformation, i.e., B and V [%default]')
|
||||||
parser.add_option('-l','-0','--logarithmic', dest='logarithmic', action='store_true',
|
parser.add_option('-l','-0','--logarithmic', dest='logarithmic', action='store_true',
|
||||||
help='calculate logarithmic strain tensor [%default]')
|
help='calculate logarithmic strain tensor [%default]')
|
||||||
parser.add_option('-b','-1','--biot', dest='biot', action='store_true',
|
parser.add_option('-b','-1','--biot', dest='biot', action='store_true',
|
||||||
help='calculate biot strain tensor [%default]')
|
help='calculate biot strain tensor [%default]')
|
||||||
parser.add_option('-g','-2','--green', dest='green', action='store_true',
|
parser.add_option('-g','-2','--green', dest='green', action='store_true',
|
||||||
help='calculate green strain tensor [%default]')
|
help='calculate green strain tensor [%default]')
|
||||||
parser.add_option('-f','--defgrad', dest='defgrad', action='extend', metavar = '<string LIST>',
|
parser.add_option('-f','--defgrad', dest='defgrad', action='extend', metavar = '<string LIST>',
|
||||||
help='heading(s) of columns containing deformation tensor values %default')
|
help='heading(s) of columns containing deformation tensor values %default')
|
||||||
parser.set_defaults(right = False)
|
parser.set_defaults(right = False)
|
||||||
parser.set_defaults(left = False)
|
parser.set_defaults(left = False)
|
||||||
parser.set_defaults(logarithmic = False)
|
parser.set_defaults(logarithmic = False)
|
||||||
|
|
Loading…
Reference in New Issue