DAMASK_EICMD/processing/post/uniformPerceptualColorMap.py

92 lines
3.5 KiB
Python
Executable File

#!/usr/bin/env python
import math, string, sys
from damask import Color,Colormap
from optparse import OptionParser, Option
# -----------------------------
class extendableOption(Option):
# -----------------------------
# used for definition of new option parser action 'extend', which enables to take multiple option arguments
# taken from online tutorial http://docs.python.org/library/optparse.html
ACTIONS = Option.ACTIONS + ("extend",)
STORE_ACTIONS = Option.STORE_ACTIONS + ("extend",)
TYPED_ACTIONS = Option.TYPED_ACTIONS + ("extend",)
ALWAYS_TYPED_ACTIONS = Option.ALWAYS_TYPED_ACTIONS + ("extend",)
def take_action(self, action, dest, opt, value, values, parser):
if action == "extend":
lvalue = value.split(",")
values.ensure_value(dest, []).extend(lvalue)
else:
Option.take_action(self, action, dest, opt, value, values, parser)
# --------------------------------------------------------------------
# MAIN
# --------------------------------------------------------------------
parser = OptionParser(option_class=extendableOption, usage='%prog options [file[s]]', description = """
Add column(s) containing Cauchy stress based on given column(s) of
deformation gradient and first Piola--Kirchhoff stress.
""" + string.replace('$Id$','\n','\\n')
)
parser.add_option('-l','--left', dest='left', type='float', nargs=3, \
help='left color [%default]')
parser.add_option('-r','--right', dest='right', type='float', nargs=3, \
help='right color [%default]')
parser.add_option('-c','--colormodel', dest='colormodel', \
help='colormodel of left and right "RGB","HSL","XYZ","CIELAB","MSH" [%default]')
parser.add_option('-f','--format', dest='format', \
help='output file format "paraview","gmsh","raw" [%default]')
parser.add_option('-s','--steps', dest='steps', type='int', nargs = 1, \
help='no of interpolation steps [%default]')
parser.add_option('-t','--trim', dest='trim', type='float', nargs = 2, \
help='trim the colormap w.r.t the given values [%default]')
parser.set_defaults(colormodel = 'RGB')
parser.set_defaults(outtype = 'paraview')
parser.set_defaults(steps = 10)
parser.set_defaults(trim = [-1.0,1.0])
parser.set_defaults(left = [1.0,1.0,1.0])
parser.set_defaults(right = [0.0,0.0,0.0])
(options,filenames) = parser.parse_args()
# ------------------------------------------ setup file handles ---------------------------------------
files = []
if filenames == []:
files.append({'name':'STDIN', 'input':sys.stdin, 'output':sys.stdout})
# -----------------------------------------------------------------------------------------------------
leftColor = Color(options.colormodel.upper(),list(options.left))
rightColor = Color(options.colormodel.upper(),list(options.right))
myColormap = Colormap(leftColor,rightColor)
outColormap = myColormap.export(filenames[0],options.format.lower(),options.steps,list(options.trim))
if options.format.lower() == 'paraview':
if filenames[0].endswith('.xml'):
outFile = open('%s'%filenames[0],'w')
else:
outFile = open('%s.xml'%filenames[0],'w')
elif options.format.lower() == 'gmsh':
if filenames[0].endswith('.msh'):
outFile = open('%s'%filenames[0],'w')
else:
outFile = open('%s.msh'%filenames[0],'w')
elif options.format.lower() == 'raw':
if filenames[0].endswith('.txt'):
outFile = open('%s'%filenames[0],'w')
else:
outFile = open('%s.txt'%filenames[0],'w')
outFile.write(outColormap)
outFile.close()