switched importing from "msc_tools" to "damask"

patchFrom... now skips blank lines, has more commenting, treats (artificial) bi-crystal (somewhat) gracefully.
This commit is contained in:
Philip Eisenlohr 2012-01-16 09:32:36 +00:00
parent 3a22bf7e27
commit 7ed2c19d0f
5 changed files with 89 additions and 81 deletions

View File

@ -1,10 +1,10 @@
#!/usr/bin/env python #!/usr/bin/env python
import sys, os, msc_tools, string import sys, os, string, damask
from colorsys import * from colorsys import *
from optparse import OptionParser from optparse import OptionParser
sys.path.append(msc_tools.MSC_TOOLS().libraryPath(sys.argv[0],'../../')) sys.path.append(damask.solver.Marc().libraryPath('../../'))
try: try:
from py_mentat import * from py_mentat import *

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
import pdb, os, sys, gc, math, re, threading, time, struct, string import pdb, os, sys, gc, math, re, threading, time, struct, string
import msc_tools import damask
from optparse import OptionParser, OptionGroup, Option, SUPPRESS_HELP from optparse import OptionParser, OptionGroup, Option, SUPPRESS_HELP
@ -755,7 +755,7 @@ if options.filetype not in ['marc','spectral']:
parser.error('file type "%s" not supported...'%options.filetype) parser.error('file type "%s" not supported...'%options.filetype)
if options.filetype == 'marc': if options.filetype == 'marc':
sys.path.append(msc_tools.MSC_TOOLS().libraryPath(sys.argv[0],'../../')) sys.path.append(damask.solver.Marc().libraryPath('../../'))
try: try:
from py_post import * from py_post import *
@ -838,7 +838,7 @@ for opt in ['nodalScalar','elemScalar','elemTensor','homogenizationResult','crys
if options.info: if options.info:
if options.filetype == 'marc': if options.filetype == 'marc':
print '\n\nMentat release %s'%msc_tools.MSC_TOOLS().version(sys.argv[0],'../../') print '\n\nMentat release %s'%damask.solver.Marc().version('../../')
if options.filetype == 'spectral': if options.filetype == 'spectral':
print '\n\n',p print '\n\n',p

View File

@ -1,9 +1,9 @@
#!/usr/bin/env python #!/usr/bin/env python
import sys,os,pwd,math,re,string,msc_tools import sys,os,pwd,math,re,string, damask
from optparse import OptionParser from optparse import OptionParser
sys.path.append(msc_tools.MSC_TOOLS().libraryPath(sys.argv[0],'../../')) sys.path.append(damask.solver.Marc().libraryPath('../../'))
try: try:
from py_mentat import * from py_mentat import *

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
import os, sys, math, re, threading, time, string, msc_tools import os, sys, math, re, threading, time, string, damask
from optparse import OptionParser, OptionGroup, Option, SUPPRESS_HELP from optparse import OptionParser, OptionGroup, Option, SUPPRESS_HELP
@ -251,7 +251,7 @@ parser.set_defaults(homogenization = 1)
(options, args) = parser.parse_args() (options, args) = parser.parse_args()
sys.path.append(msc_tools.MSC_TOOLS().libraryPath(sys.argv[0],'../../')) sys.path.append(damask.solver.Marc().libraryPath('../../'))
try: try:
from py_mentat import * from py_mentat import *

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
import sys,os,math,re,string, msc_tools import sys,os,math,re,string, damask
from optparse import OptionParser, OptionGroup, Option, SUPPRESS_HELP from optparse import OptionParser, OptionGroup, Option, SUPPRESS_HELP
@ -10,7 +10,7 @@ try: # check for Python Image Lib
except: except:
ImageCapability = False ImageCapability = False
sys.path.append(msc_tools.MSC_TOOLS().libraryPath(sys.argv[0],'../../')) sys.path.append(damask.solver.Marc().libraryPath('../../'))
try: # check for MSC.Mentat Python interface try: # check for MSC.Mentat Python interface
from py_mentat import * from py_mentat import *
@ -79,7 +79,8 @@ def rcbOrientationParser(content):
grains = [] grains = []
myOrientation = [0.0,0.0,0.0] myOrientation = [0.0,0.0,0.0]
for line in content: for line in content:
if line[0] != '#': # skip comments m = re.match(r'\s*(#|$)',line)
if m: continue # skip comments and blank lines
for grain in range(2): for grain in range(2):
myID = int(line.split()[12+grain]) # get grain id myID = int(line.split()[12+grain]) # get grain id
myOrientation = map(float,line.split())[3*grain:3+3*grain] # get orientation myOrientation = map(float,line.split())[3*grain:3+3*grain] # get orientation
@ -99,7 +100,8 @@ def rcbParser(content,M,size,tolerance): # parser for TSL-O
x = [0.,0.] x = [0.,0.]
y = [0.,0.] y = [0.,0.]
for line in content: for line in content:
if line[0] != '#': # skip comments m = re.match(r'\s*(#|$)',line)
if m: continue # skip comments and blank lines
(x[0],y[0],x[1],y[1]) = map(float,line.split())[8:12] # get start and end coordinates of each segment. (x[0],y[0],x[1],y[1]) = map(float,line.split())[8:12] # get start and end coordinates of each segment.
(x[0],y[0]) = (M[0]*x[0]+M[1]*y[0],M[2]*x[0]+M[3]*y[0]) # apply transformation to coordinates (x[0],y[0]) = (M[0]*x[0]+M[1]*y[0],M[2]*x[0]+M[3]*y[0]) # apply transformation to coordinates
(x[1],y[1]) = (M[0]*x[1]+M[1]*y[1],M[2]*x[1]+M[3]*y[1]) # to get rcb --> Euler system (x[1],y[1]) = (M[0]*x[1]+M[1]*y[1],M[2]*x[1]+M[3]*y[1]) # to get rcb --> Euler system
@ -122,7 +124,8 @@ def rcbParser(content,M,size,tolerance): # parser for TSL-O
grainNeighbors = [] grainNeighbors = []
for line in content: for line in content:
if line[0] != '#': # skip comments m = re.match(r'\s*(#|$)',line)
if m: continue # skip comments and blank lines
(x[0],y[0],x[1],y[1]) = map(float,line.split())[8:12] # get start and end coordinates of each segment (x[0],y[0],x[1],y[1]) = map(float,line.split())[8:12] # get start and end coordinates of each segment
(x[0],y[0]) = (M[0]*x[0]+M[1]*y[0],M[2]*x[0]+M[3]*y[0]) # apply transformation to coordinates (x[0],y[0]) = (M[0]*x[0]+M[1]*y[0],M[2]*x[0]+M[3]*y[0]) # apply transformation to coordinates
(x[1],y[1]) = (M[0]*x[1]+M[1]*y[1],M[2]*x[1]+M[3]*y[1]) # to get rcb --> Euler system (x[1],y[1]) = (M[0]*x[1]+M[1]*y[1],M[2]*x[1]+M[3]*y[1]) # to get rcb --> Euler system
@ -295,18 +298,23 @@ def rcbParser(content,M,size,tolerance): # parser for TSL-O
rcData['segment'].append(segment) rcData['segment'].append(segment)
print " built %i segments"%(len(rcData['segment'])) print " built %i segments"%(len(rcData['segment']))
for grain in grains['legs']: for legs in grains['legs']: # loop over grains
rcData['grain'].append(grain) rcData['grain'].append(legs) # store list of boundary segments
myNeighbors = {} myNeighbors = {}
for leg in grain: for leg in legs: # test each boundary segment
if leg < len(grainNeighbors): if leg < len(grainNeighbors): # a valid segment index?
for side in range(2): for side in range(2): # look at both sides of the segment
if grainNeighbors[leg][side] in myNeighbors: if grainNeighbors[leg][side] in myNeighbors: # count occurrence of grain IDs
myNeighbors[grainNeighbors[leg][side]] += 1 myNeighbors[grainNeighbors[leg][side]] += 1
else: else:
myNeighbors[grainNeighbors[leg][side]] = 1 myNeighbors[grainNeighbors[leg][side]] = 1
if myNeighbors: # do I have any neighbors if myNeighbors: # do I have any neighbors (i.e., non-bounding box segment)
rcData['grainMapping'].append(sorted(myNeighbors.iteritems(), key=lambda (k,v): (v,k), reverse=True)[0][0]) # most frequent grain is me candidateGrains = sorted(myNeighbors.iteritems(), key=lambda (k,v): (v,k), reverse=True) # sort grain counting
if candidateGrains[0][0] not in rcData['grainMapping']: # most frequent one not yet seen?
rcData['grainMapping'].append(candidateGrains[0][0]) # must be me then
else:
rcData['grainMapping'].append(candidateGrains[1][0]) # special case of bi-crystal situation...
print " found %i grains\n"%(len(rcData['grain'])) print " found %i grains\n"%(len(rcData['grain']))
rcData['box'] = grains['box'] rcData['box'] = grains['box']