#!/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()