mirror of
https://github.com/ParticulateFlow/LPP.git
synced 2025-12-08 06:37:46 +00:00
python 3 compatibility for src/*.py files
move imports to top of files add from __future__ import commands module -> subprocesses module print statement -> print() function exec statement -> exec() function xrange -> range map() -> list(map()) StandardError -> Exception integer division: / -> // x.has_key(y) -> y in x sort(): use functools.cmp_to_key type(x) is y -> isinstance(x, y) raw_input -> input change variable names 'list' to avoid clashes with list class
This commit is contained in:
120
src/mdump.py
120
src/mdump.py
@ -8,6 +8,14 @@
|
||||
|
||||
# mdump tool
|
||||
|
||||
# Imports and external programs
|
||||
|
||||
from __future__ import absolute_import
|
||||
import sys, subprocess, re, glob, types
|
||||
import functools
|
||||
from os import popen
|
||||
from math import * # any function could be used by set()
|
||||
|
||||
oneline = "Read, write, manipulate mesh dump files"
|
||||
|
||||
docstr = """
|
||||
@ -124,12 +132,6 @@ m.etype = "color" set column returned as "type" by viz
|
||||
# nevalues = # of node values
|
||||
# evalues[i][j] = 2d array of floats, i = 0 to Nel-1, j = 0 to Ncol
|
||||
|
||||
# Imports and external programs
|
||||
|
||||
import sys, commands, re, glob, types
|
||||
from os import popen
|
||||
from math import * # any function could be used by set()
|
||||
|
||||
try:
|
||||
import numpy as np
|
||||
oldnumeric = False
|
||||
@ -160,7 +162,7 @@ class mdump:
|
||||
self.flist = []
|
||||
for word in words: self.flist += glob.glob(word)
|
||||
if len(self.flist) == 0 and len(list) == 1:
|
||||
raise StandardError,"no dump file specified"
|
||||
raise Exception("no dump file specified")
|
||||
|
||||
if len(list) == 1:
|
||||
self.increment = 0
|
||||
@ -185,16 +187,16 @@ class mdump:
|
||||
snap = self.read_snapshot(f)
|
||||
while snap:
|
||||
self.snaps.append(snap)
|
||||
print snap.time,
|
||||
print(snap.time, end=' ')
|
||||
sys.stdout.flush()
|
||||
snap = self.read_snapshot(f)
|
||||
|
||||
f.close()
|
||||
print
|
||||
print()
|
||||
|
||||
# sort entries by timestep, cull and combine duplicates
|
||||
|
||||
self.snaps.sort(self.compare_time)
|
||||
self.snaps.sort(key = functools.cmp_to_key(self.compare_time))
|
||||
self.cull()
|
||||
|
||||
# sort all node, element, nvalue, evalue arrays by ID
|
||||
@ -204,25 +206,25 @@ class mdump:
|
||||
array = snap.nodes
|
||||
ids = array[:,0]
|
||||
ordering = np.argsort(ids)
|
||||
for i in xrange(len(array[0])):
|
||||
for i in range(len(array[0])):
|
||||
array[:,i] = np.take(array[:,i],ordering)
|
||||
if snap.eflag:
|
||||
array = snap.elements
|
||||
ids = array[:,0]
|
||||
ordering = np.argsort(ids)
|
||||
for i in xrange(len(array[0])):
|
||||
for i in range(len(array[0])):
|
||||
array[:,i] = np.take(array[:,i],ordering)
|
||||
if snap.nvalueflag:
|
||||
array = snap.nvalues
|
||||
ids = array[:,0]
|
||||
ordering = np.argsort(ids)
|
||||
for i in xrange(len(array[0])):
|
||||
for i in range(len(array[0])):
|
||||
array[:,i] = np.take(array[:,i],ordering)
|
||||
if snap.evalueflag:
|
||||
array = snap.evalues
|
||||
ids = array[:,0]
|
||||
ordering = np.argsort(ids)
|
||||
for i in xrange(len(array[0])):
|
||||
for i in range(len(array[0])):
|
||||
array[:,i] = np.take(array[:,i],ordering)
|
||||
|
||||
# reference definitions of nodes and elements in previous timesteps
|
||||
@ -230,7 +232,7 @@ class mdump:
|
||||
self.reference()
|
||||
|
||||
self.nsnaps = len(self.snaps)
|
||||
print "read %d snapshots" % self.nsnaps
|
||||
print("read %d snapshots" % self.nsnaps)
|
||||
|
||||
# select all timesteps and elements
|
||||
|
||||
@ -241,7 +243,7 @@ class mdump:
|
||||
|
||||
def next(self):
|
||||
|
||||
if not self.increment: raise StandardError,"cannot read incrementally"
|
||||
if not self.increment: raise Exception("cannot read incrementally")
|
||||
|
||||
# read next snapshot in current file using eof as pointer
|
||||
# if fail, try next file
|
||||
@ -271,7 +273,7 @@ class mdump:
|
||||
snap.tselect = 1
|
||||
snap.nselect = snap.nelements
|
||||
if snap.eflag:
|
||||
for i in xrange(snap.nelements): snap.eselect[i] = 1
|
||||
for i in range(snap.nelements): snap.eselect[i] = 1
|
||||
self.nsnaps += 1
|
||||
self.nselect += 1
|
||||
|
||||
@ -295,7 +297,7 @@ class mdump:
|
||||
elif "NUMBER OF CUBES" in str: snap.eflag = 4
|
||||
elif "NUMBER OF NODE VALUES" in str: snap.nvalueflag = 1
|
||||
elif "NUMBER OF ELEMENT VALUES" in str: snap.evalueflag = 1
|
||||
else: raise StandardError,"unrecognized snapshot in dump file"
|
||||
else: raise Exception("unrecognized snapshot in dump file")
|
||||
n = int(f.readline())
|
||||
|
||||
if snap.eflag: snap.eselect = np.zeros(n)
|
||||
@ -313,14 +315,14 @@ class mdump:
|
||||
if n:
|
||||
words = f.readline().split()
|
||||
ncol = len(words)
|
||||
for i in xrange(1,n):
|
||||
for i in range(1,n):
|
||||
words += f.readline().split()
|
||||
floats = map(float,words)
|
||||
floats = list(map(float,words))
|
||||
if oldnumeric: values = np.zeros((n,ncol),np.Float)
|
||||
else: values = np.zeros((n,ncol),np.float)
|
||||
start = 0
|
||||
stop = ncol
|
||||
for i in xrange(n):
|
||||
for i in range(n):
|
||||
values[i] = floats[start:stop]
|
||||
start = stop
|
||||
stop += ncol
|
||||
@ -343,7 +345,7 @@ class mdump:
|
||||
|
||||
def map(self,*pairs):
|
||||
if len(pairs) % 2 != 0:
|
||||
raise StandardError, "mdump map() requires pairs of mappings"
|
||||
raise Exception("mdump map() requires pairs of mappings")
|
||||
for i in range(0,len(pairs),2):
|
||||
j = i + 1
|
||||
self.names[pairs[j]] = pairs[i]-1
|
||||
@ -360,15 +362,15 @@ class mdump:
|
||||
self.nsnaps -= 1
|
||||
ndel += 1
|
||||
else: i += 1
|
||||
print "%d snapshots deleted" % ndel
|
||||
print "%d snapshots remaining" % self.nsnaps
|
||||
print("%d snapshots deleted" % ndel)
|
||||
print("%d snapshots remaining" % self.nsnaps)
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
# sort elements by ID in all selected timesteps or one timestep
|
||||
|
||||
def sort(self,*list):
|
||||
if len(list) == 0:
|
||||
print "Sorting selected snapshots ..."
|
||||
print("Sorting selected snapshots ...")
|
||||
id = self.names["id"]
|
||||
for snap in self.snaps:
|
||||
if snap.tselect: self.sort_one(snap,id)
|
||||
@ -385,7 +387,7 @@ class mdump:
|
||||
atoms = snap.atoms
|
||||
ids = atoms[:,id]
|
||||
ordering = np.argsort(ids)
|
||||
for i in xrange(len(atoms[0])):
|
||||
for i in range(len(atoms[0])):
|
||||
atoms[:,i] = np.take(atoms[:,i],ordering)
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
@ -406,10 +408,10 @@ class mdump:
|
||||
def vecs(self,n,*list):
|
||||
snap = self.snaps[self.findtime(n)]
|
||||
if not snap.evalues:
|
||||
raise StandardError, "snapshot has no element values"
|
||||
raise Exception("snapshot has no element values")
|
||||
|
||||
if len(list) == 0:
|
||||
raise StandardError, "no columns specified"
|
||||
raise Exception("no columns specified")
|
||||
columns = []
|
||||
values = []
|
||||
for name in list:
|
||||
@ -418,9 +420,9 @@ class mdump:
|
||||
ncol = len(columns)
|
||||
|
||||
m = 0
|
||||
for i in xrange(len(snap.evalues)):
|
||||
for i in range(len(snap.evalues)):
|
||||
if not snap.eselect[i]: continue
|
||||
for j in xrange(ncol):
|
||||
for j in range(ncol):
|
||||
values[j][m] = snap.evalues[i][columns[j]]
|
||||
m += 1
|
||||
|
||||
@ -482,9 +484,9 @@ class mdump:
|
||||
# if not, point it at most recent shapshot that does
|
||||
|
||||
def reference(self):
|
||||
for i in xrange(len(self.snaps)):
|
||||
for i in range(len(self.snaps)):
|
||||
if not self.snaps[i].nflag:
|
||||
for j in xrange(i,-1,-1):
|
||||
for j in range(i,-1,-1):
|
||||
if self.snaps[j].nflag:
|
||||
self.snaps[i].nflag = self.snaps[j].nflag
|
||||
self.snaps[i].nnodes = self.snaps[j].nnodes
|
||||
@ -497,9 +499,9 @@ class mdump:
|
||||
self.snaps[i].zhi = self.snaps[j].zhi
|
||||
break
|
||||
if not self.snaps[i].nflag:
|
||||
raise StandardError,"no nodal coords found in previous snapshots"
|
||||
raise Exception("no nodal coords found in previous snapshots")
|
||||
if not self.snaps[i].eflag:
|
||||
for j in xrange(i,-1,-1):
|
||||
for j in range(i,-1,-1):
|
||||
if self.snaps[j].eflag:
|
||||
self.snaps[i].eflag = self.snaps[j].eflag
|
||||
self.snaps[i].nelements = self.snaps[j].nelements
|
||||
@ -507,7 +509,7 @@ class mdump:
|
||||
self.snaps[i].eselect = self.snaps[j].eselect
|
||||
break
|
||||
if not self.snaps[i].eflag:
|
||||
raise StandardError,"no elem connections found in previous snapshots"
|
||||
raise Exception("no elem connections found in previous snapshots")
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
# iterate over selected snapshots
|
||||
@ -515,7 +517,7 @@ class mdump:
|
||||
def iterator(self,flag):
|
||||
start = 0
|
||||
if flag: start = self.iterate + 1
|
||||
for i in xrange(start,self.nsnaps):
|
||||
for i in range(start,self.nsnaps):
|
||||
if self.snaps[i].tselect:
|
||||
self.iterate = i
|
||||
return i,self.snaps[i].time,1
|
||||
@ -550,7 +552,7 @@ class mdump:
|
||||
|
||||
tris = []
|
||||
nodes = snap.nodes
|
||||
for i in xrange(snap.nelements):
|
||||
for i in range(snap.nelements):
|
||||
if not snap.eselect[i]: continue
|
||||
element = snap.elements[i]
|
||||
if snap.evalueflag: evalue = snap.evalues[i]
|
||||
@ -699,9 +701,9 @@ class mdump:
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
def findtime(self,n):
|
||||
for i in xrange(self.nsnaps):
|
||||
for i in range(self.nsnaps):
|
||||
if self.snaps[i].time == n: return i
|
||||
raise StandardError, "no step %d exists" % n
|
||||
raise Exception("no step %d exists" % n)
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
# return maximum box size across all selected snapshots
|
||||
@ -751,7 +753,7 @@ class tselect:
|
||||
snap.tselect = 1
|
||||
data.nselect = len(data.snaps)
|
||||
data.eselect.all()
|
||||
print "%d snapshots selected out of %d" % (data.nselect,data.nsnaps)
|
||||
print("%d snapshots selected out of %d" % (data.nselect,data.nsnaps))
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
@ -763,7 +765,7 @@ class tselect:
|
||||
data.snaps[i].tselect = 1
|
||||
data.nselect = 1
|
||||
data.eselect.all()
|
||||
print "%d snapshots selected out of %d" % (data.nselect,data.nsnaps)
|
||||
print("%d snapshots selected out of %d" % (data.nselect,data.nsnaps))
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
@ -772,7 +774,7 @@ class tselect:
|
||||
for snap in data.snaps:
|
||||
snap.tselect = 0
|
||||
data.nselect = 0
|
||||
print "%d snapshots selected out of %d" % (data.nselect,data.nsnaps)
|
||||
print("%d snapshots selected out of %d" % (data.nselect,data.nsnaps))
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
@ -788,7 +790,7 @@ class tselect:
|
||||
snap.tselect = 0
|
||||
data.nselect -= 1
|
||||
data.eselect.all()
|
||||
print "%d snapshots selected out of %d" % (data.nselect,data.nsnaps)
|
||||
print("%d snapshots selected out of %d" % (data.nselect,data.nsnaps))
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
@ -797,14 +799,16 @@ class tselect:
|
||||
snaps = data.snaps
|
||||
cmd = "flag = " + teststr.replace("$t","snaps[i].time")
|
||||
ccmd = compile(cmd,'','single')
|
||||
for i in xrange(data.nsnaps):
|
||||
for i in range(data.nsnaps):
|
||||
if not snaps[i].tselect: continue
|
||||
exec ccmd
|
||||
ldict = {'data':data,'snaps':snaps,'i':i}
|
||||
exec(ccmd,globals(),ldict)
|
||||
flag = ldict['flag']
|
||||
if not flag:
|
||||
snaps[i].tselect = 0
|
||||
data.nselect -= 1
|
||||
data.eselect.all()
|
||||
print "%d snapshots selected out of %d" % (data.nselect,data.nsnaps)
|
||||
print("%d snapshots selected out of %d" % (data.nselect,data.nsnaps))
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
# element selection class
|
||||
@ -821,12 +825,12 @@ class eselect:
|
||||
if len(args) == 0: # all selected timesteps
|
||||
for snap in data.snaps:
|
||||
if not snap.tselect: continue
|
||||
for i in xrange(snap.nelements): snap.eselect[i] = 1
|
||||
for i in range(snap.nelements): snap.eselect[i] = 1
|
||||
snap.nselect = snap.nelements
|
||||
else: # one timestep
|
||||
n = data.findtime(args[0])
|
||||
snap = data.snaps[n]
|
||||
for i in xrange(snap.nelements): snap.eselect[i] = 1
|
||||
for i in range(snap.nelements): snap.eselect[i] = 1
|
||||
snap.nselect = snap.nelements
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
@ -849,29 +853,29 @@ class eselect:
|
||||
if len(args) == 0: # all selected timesteps
|
||||
for snap in data.snaps:
|
||||
if not snap.tselect: continue
|
||||
for i in xrange(snap.nelements):
|
||||
for i in range(snap.nelements):
|
||||
if not snap.eselect[i]: continue
|
||||
exec ccmd
|
||||
exec(ccmd)
|
||||
if not flag:
|
||||
snap.eselect[i] = 0
|
||||
snap.nselect -= 1
|
||||
for i in xrange(data.nsnaps):
|
||||
for i in range(data.nsnaps):
|
||||
if data.snaps[i].tselect:
|
||||
print "%d atoms of %d selected in first step %d" % \
|
||||
(data.snaps[i].nselect,data.snaps[i].nelements,data.snaps[i].time)
|
||||
print("%d atoms of %d selected in first step %d" % \
|
||||
(data.snaps[i].nselect,data.snaps[i].nelements,data.snaps[i].time))
|
||||
break
|
||||
for i in xrange(data.nsnaps-1,-1,-1):
|
||||
for i in range(data.nsnaps-1,-1,-1):
|
||||
if data.snaps[i].tselect:
|
||||
print "%d atoms of %d selected in last step %d" % \
|
||||
(data.snaps[i].nselect,data.snaps[i].nelements,data.snaps[i].time)
|
||||
print("%d atoms of %d selected in last step %d" % \
|
||||
(data.snaps[i].nselect,data.snaps[i].nelements,data.snaps[i].time))
|
||||
break
|
||||
|
||||
else: # one timestep
|
||||
n = data.findtime(args[0])
|
||||
snap = data.snaps[n]
|
||||
for i in xrange(snap.nelements):
|
||||
for i in range(snap.nelements):
|
||||
if not snap.eselect[i]: continue
|
||||
exec ccmd
|
||||
exec(ccmd)
|
||||
if not flag:
|
||||
snap.eselect[i] = 0
|
||||
snap.nselect -= 1
|
||||
|
||||
Reference in New Issue
Block a user