fixed language and syntax

This commit is contained in:
Philip Eisenlohr 2016-10-31 10:40:58 -04:00
parent 3dc5bc4379
commit 94fcc9ad24
4 changed files with 55 additions and 55 deletions

View File

@ -24,7 +24,7 @@ except(NameError):
def lables_to_path(label, dsXMLPath=None):
"""Read the xml definition file and return the path."""
"""Read the XML definition file and return the path."""
if dsXMLPath is None:
# use the default storage layout in DS_HDF5.xml
if "h5table.pyc" in __file__:
@ -49,31 +49,31 @@ def lables_to_path(label, dsXMLPath=None):
class H5Table(object):
"""
Light weight interface class for h5py
Lightweight interface class for h5py
DESCRIPTION
-----------
Interface/wrapper class for manipulating data in HDF5 with DAMASK
specialized data structure.
-->try to maintain a minimal API design.
--> try to maintain a minimal API design.
PARAMETERS
----------
h5f_path: str
Absolute path the HDF5 file
Absolute path of the HDF5 file
METHOD
------
del_entry() -- Force delete attributes/group/datasets (Dangerous)
del_entry() -- Force delete attributes/group/datasets (dangerous)
get_attr() -- Return attributes if possible
add_attr() -- Add NEW attributes to dataset/group (no force overwrite)
get_data() -- Retrieve data in numpy.ndarray
add_data() -- Add dataset to H5 file
get_cmdlog() -- Return the command used to generate the data if possible.
get_cmdlog() -- Return the command used to generate the data if possible
NOTE
----
1. As an interface class, it uses the lazy evaluation design
that read the data only when its absolutely necessary.
2. The command line used to generate new feature is stored with
each dataset as dataset attribute.
that reads the data only when it is absolutely necessary.
2. The command line used to generate each new feature is stored with
each dataset as dataset attribute.
"""

View File

@ -28,14 +28,14 @@ class Rodrigues:
# ******************************************************************************************
class Quaternion:
"""
Orientation represented as unit quaternion
Orientation represented as unit quaternion.
All methods and naming conventions based on http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions
All methods and naming conventions based on http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions.
w is the real part, (x, y, z) are the imaginary parts
w is the real part, (x, y, z) are the imaginary parts.
Representation of rotation is in ACTIVE form!
(derived directly or through angleAxis, Euler angles, or active matrix)
vector "a" (defined in coordinate system "A") is actively rotated to new coordinates "b"
(Derived directly or through angleAxis, Euler angles, or active matrix)
Vector "a" (defined in coordinate system "A") is actively rotated to new coordinates "b".
b = Q * a
b = np.dot(Q.asMatrix(),a)
"""
@ -77,7 +77,7 @@ class Quaternion:
return Q
def __ipow__(self, exponent):
"""In place power"""
"""In-place power"""
omega = math.acos(self.w)
vRescale = math.sin(exponent*omega)/math.sin(omega)
self.w = np.cos(exponent*omega)
@ -135,7 +135,7 @@ class Quaternion:
return self.copy()
def __imul__(self, other):
"""In place multiplication"""
"""In-place multiplication"""
try: # Quaternion
Ax = self.x
Ay = self.y
@ -164,7 +164,7 @@ class Quaternion:
return NotImplemented
def __idiv__(self, other):
"""In place division"""
"""In-place division"""
if isinstance(other, (int,float)):
self.w /= other
self.x /= other
@ -184,7 +184,7 @@ class Quaternion:
return NotImplemented
def __iadd__(self, other):
"""In place division"""
"""In-place addition"""
if isinstance(other, Quaternion):
self.w += other.w
self.x += other.x
@ -205,7 +205,7 @@ class Quaternion:
return self.copy()
def __isub__(self, other):
"""In place subtraction"""
"""In-place subtraction"""
if isinstance(other, Quaternion):
self.w -= other.w
self.x -= other.x
@ -339,12 +339,12 @@ class Quaternion:
degrees = False,
standardRange = False):
"""
Orientation as Bunge-Euler angles
Orientation as Bunge-Euler angles.
conversion of ACTIVE rotation to Euler angles taken from:
Conversion of ACTIVE rotation to Euler angles taken from:
Melcher, A.; Unser, A.; Reichhardt, M.; Nestler, B.; Poetschke, M.; Selzer, M.
Conversion of EBSD data by a quaternion based algorithm to be used for grain structure simulations
Technische Mechanik 30 (2010) pp 401--413
Technische Mechanik 30 (2010) pp 401--413.
"""
angles = [0.0,0.0,0.0]
@ -510,8 +510,8 @@ class Quaternion:
"""
Interpolation
see http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20070017872_2007014421.pdf
for (another?) way to interpolate quaternions
See http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20070017872_2007014421.pdf
for (another?) way to interpolate quaternions.
"""
assert isinstance(q1, Quaternion) and isinstance(q2, Quaternion)
Q = cls()
@ -744,39 +744,39 @@ class Symmetry:
if self.lattice == 'cubic':
basis = {'improper':np.array([ [-1. , 0. , 1. ],
[ np.sqrt(2.) , -np.sqrt(2.) , 0. ],
[ 0. , np.sqrt(3.) , 0. ] ]),
'proper':np.array([ [ 0. , -1. , 1. ],
[-np.sqrt(2.) , np.sqrt(2.) , 0. ],
[ np.sqrt(3.) , 0. , 0. ] ]),
[ np.sqrt(2.) , -np.sqrt(2.) , 0. ],
[ 0. , np.sqrt(3.) , 0. ] ]),
'proper':np.array([ [ 0. , -1. , 1. ],
[-np.sqrt(2.) , np.sqrt(2.) , 0. ],
[ np.sqrt(3. ) , 0. , 0. ] ]),
}
elif self.lattice == 'hexagonal':
basis = {'improper':np.array([ [ 0. , 0. , 1. ],
[ 1. , -np.sqrt(3.), 0. ],
[ 0. , 2. , 0. ] ]),
'proper':np.array([ [ 0. , 0. , 1. ],
[-1. , np.sqrt(3.) , 0. ],
[ np.sqrt(3) , -1. , 0. ] ]),
[ 1. , -np.sqrt(3.) , 0. ],
[ 0. , 2. , 0. ] ]),
'proper':np.array([ [ 0. , 0. , 1. ],
[-1. , np.sqrt(3.) , 0. ],
[ np.sqrt(3) , -1. , 0. ] ]),
}
elif self.lattice == 'tetragonal':
basis = {'improper':np.array([ [ 0. , 0. , 1. ],
[ 1. , -1. , 0. ],
[ 0. , np.sqrt(2.), 0. ] ]),
'proper':np.array([ [ 0. , 0. , 1. ],
[-1. , 1. , 0. ],
[ np.sqrt(2.) , 0. , 0. ] ]),
[ 1. , -1. , 0. ],
[ 0. , np.sqrt(2.) , 0. ] ]),
'proper':np.array([ [ 0. , 0. , 1. ],
[-1. , 1. , 0. ],
[ np.sqrt(2.) , 0. , 0. ] ]),
}
elif self.lattice == 'orthorhombic':
basis = {'improper':np.array([ [ 0., 0., 1.],
[ 1., 0., 0.],
[ 0., 1., 0.] ]),
'proper':np.array([ [ 0., 0., 1.],
[-1., 0., 0.],
[ 0., 1., 0.] ]),
[ 1., 0., 0.],
[ 0., 1., 0.] ]),
'proper':np.array([ [ 0., 0., 1.],
[-1., 0., 0.],
[ 0., 1., 0.] ]),
}
else:
basis = {'improper':np.zeros((3,3),dtype=float),
'proper':np.zeros((3,3),dtype=float),
basis = {'improper': np.zeros((3,3),dtype=float),
'proper': np.zeros((3,3),dtype=float),
}
if np.all(basis == 0.0):

View File

@ -69,7 +69,7 @@ for name in filenames:
# ------------------------------------------ assemble header --------------------------------------
table.info_append(scriptID + '\t' + ' '.join(sys.argv[1:]))
table.labels_append(['%i_S'%(i+1) for i in range(9)]) # extend ASCII header with new labels
table.labels_append(['{}_S'.format(i+1) for i in range(9)]) # extend ASCII header with new labels
table.head_write()
# ------------------------------------------ process data ------------------------------------------

View File

@ -51,7 +51,7 @@ def ParseOutputFormat(filename,what,me):
parser = OptionParser(option_class=damask.extendableOption, usage='%prog [option(s)] Abaqus.Inputfile(s)', description = """
Transfer the output variables requested in the material.config to
properly labelled user defined variables within the Abaqus input file (*.inp).
properly labelled user-defined variables within the Abaqus input file (*.inp).
Requires the files
<modelname_jobname>.output<Homogenization/Crystallite/Constitutive>
@ -84,7 +84,7 @@ parser.set_defaults(number = 0,
(options, files) = parser.parse_args()
if not files:
parser.error('no file(s) specified...')
parser.error('no file(s) specified.')
me = { 'Homogenization': options.homog,
'Crystallite': options.cryst,
@ -93,7 +93,7 @@ me = { 'Homogenization': options.homog,
for myFile in files:
print('\033[1m'+scriptName+'\033[0m: '+myFile+'\n')
damask.util.report(scriptName,myFile)
if options.useFile:
formatFile = os.path.splitext(options.useFile)[0]
else:
@ -103,7 +103,7 @@ for myFile in files:
print('{} not found'.format(myFile))
continue
print('Scanning format files of: %s'%formatFile)
print('Scanning format files of: {}'.format(formatFile))
if options.number < 1:
outputFormat = {}
@ -140,7 +140,7 @@ for myFile in files:
UserVars += ['%i_%s'%(grain+1,var[0]) for i in range(var[1])]
# Now change *.inp file(s)
print('Adding labels to: %s'%myFile)
print('Adding labels to: {}'.format(myFile))
inFile = open(myFile)
input = inFile.readlines()
inFile.close()
@ -154,11 +154,11 @@ for myFile in files:
if m:
lastSection = thisSection
thisSection = m.group(1)
if (lastSection.upper() == '*DEPVAR' and thisSection.upper() == '*USER'): #Abaqus keyword can be upper or lower case
if (lastSection.upper() == '*DEPVAR' and thisSection.upper() == '*USER'): # Abaqus keyword can be upper or lower case
if options.number > 0:
output.write('%i\n'%options.number) #Abaqus needs total number of SDVs in the line after *Depvar keyword
output.write('{}\n'.format(options.number)) # Abaqus needs total number of SDVs in the line after *Depvar keyword
else:
output.write('%i\n'%len(UserVars))
output.write('{}\n'.format(len(UserVars)))
for i in range(len(UserVars)):
output.write('%i,"%i%s","%i%s"\n'%(i+1,0,UserVars[i],0,UserVars[i])) #index,output variable key,output variable description