diff --git a/processing/pre/geom_mirror.py b/processing/pre/geom_mirror.py index 469d48183..7974bde82 100755 --- a/processing/pre/geom_mirror.py +++ b/processing/pre/geom_mirror.py @@ -1,23 +1,25 @@ #!/usr/bin/env python3 -# -*- coding: UTF-8 no BOM -*- import os import sys -import numpy as np -from optparse import OptionParser from io import StringIO +from optparse import OptionParser + +import numpy as np + import damask + scriptName = os.path.splitext(os.path.basename(__file__))[0] scriptID = ' '.join([scriptName,damask.version]) + #-------------------------------------------------------------------------------------------------- # MAIN #-------------------------------------------------------------------------------------------------- -validDirections = ['x','y','z'] parser = OptionParser(option_class=damask.extendableOption, usage='%prog options [geomfile(s)]', description = """ -Mirrors spectral geometry description along given directions. +Mirror along given directions. """, version=scriptID) @@ -25,17 +27,23 @@ parser.add_option('-d','--direction', dest = 'directions', action = 'extend', metavar = '', help = "directions in which to mirror {'x','y','z'}") +parser.add_option( '--double', + dest = 'double', + action = 'store_true', + help = 'double the outer layers in mirror direction') (options, filenames) = parser.parse_args() if options.directions is None: parser.error('no direction given.') + +validDirections = ['x','y','z'] if not set(options.directions).issubset(validDirections): invalidDirections = [str(e) for e in set(options.directions).difference(validDirections)] parser.error('invalid directions {}. '.format(*invalidDirections)) - -# --- loop over input files ------------------------------------------------------------------------- +limits = [-2,0] if not options.double else [None,None] + if filenames == []: filenames = [None] @@ -47,22 +55,19 @@ for name in filenames: geom = damask.Geom.from_file(virt_file) else: geom = damask.Geom.from_file(name) + damask.util.croak(geom) microstructure = geom.microstructure if 'z' in options.directions: - microstructure = np.concatenate([microstructure,microstructure[:,:,::-1]],2) # better not double edges - geom.set_size(geom.get_size()*np.array([1,1,2])) + microstructure = np.concatenate([microstructure,microstructure[:,:,limits[0]:limits[1]:-1]],2) if 'y' in options.directions: - microstructure = np.concatenate([microstructure,microstructure[:,::-1,:]],1) # better not double edges - geom.set_size(geom.get_size()*np.array([1,2,1])) + microstructure = np.concatenate([microstructure,microstructure[:,limits[0]:limits[1]:-1,:]],1) if 'x' in options.directions: - microstructure = np.concatenate([microstructure,microstructure[::-1,:,:]],0) # better not double edges - geom.set_size(geom.get_size()*np.array([2,1,1])) + microstructure = np.concatenate([microstructure,microstructure[limits[0]:limits[1]:-1,:,:]],0) - geom.microstructure = microstructure + damask.util.croak(geom.update(microstructure,rescale=True)) geom.add_comment(scriptID + ' ' + ' '.join(sys.argv[1:])) - damask.util.croak(geom) if name is None: sys.stdout.write(str(geom.show())) else: diff --git a/processing/pre/geom_rotate.py b/processing/pre/geom_rotate.py index eae36a842..4a24b338b 100755 --- a/processing/pre/geom_rotate.py +++ b/processing/pre/geom_rotate.py @@ -20,7 +20,7 @@ scriptID = ' '.join([scriptName,damask.version]) #-------------------------------------------------------------------------------------------------- parser = OptionParser(option_class=damask.extendableOption, usage='%prog options [geomfile(s)]', description = """ -Rotates and embeddeds. +Rotates original microstructure and embeddeds it into buffer material. """, version=scriptID) @@ -46,8 +46,8 @@ parser.add_option('-q', '--quaternion', help = 'rotation given as quaternion') parser.add_option('-f', '--fill', dest = 'fill', - type = 'int', metavar = 'int', - help = 'background grain index, defaults to max + 1') + type = 'float', metavar = 'int', + help = 'background microstructure index, defaults to max microstructure index + 1') parser.set_defaults(degrees = False) @@ -78,9 +78,9 @@ for name in filenames: geom = damask.Geom.from_file(virt_file) else: geom = damask.Geom.from_file(name) + damask.util.croak(geom) microstructure = geom.get_microstructure() - fill = options.fill if options.fill is not None else np.nanmax(microstructure)+1 # These rotations are always applied in the reference coordinate system, i.e. (z,x,z) not (z,x',z'') @@ -92,12 +92,10 @@ for name in filenames: microstructure = ndimage.rotate(microstructure,eulers[0],(0,1),order=0, prefilter=False,output=microstructure.dtype,cval=fill) # rotation around z - spacing = geom.get_size()/geom.get_grid() - geom.set_size(microstructure.shape*spacing) - geom.set_microstructure(microstructure) + + damask.util.croak(geom.update(microstructure,rescale=True)) geom.add_comment(scriptID + ' ' + ' '.join(sys.argv[1:])) - damask.util.croak(geom) if name is None: sys.stdout.write(str(geom.show())) else: