using specialized class
This commit is contained in:
parent
6989679d3b
commit
5b7139dc22
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
from io import StringIO
|
||||||
from optparse import OptionParser
|
from optparse import OptionParser
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
from io import StringIO
|
||||||
from optparse import OptionParser
|
from optparse import OptionParser
|
||||||
|
|
||||||
import numpy as np
|
|
||||||
from scipy import ndimage
|
from scipy import ndimage
|
||||||
|
|
||||||
import damask
|
import damask
|
||||||
|
|
|
@ -65,7 +65,8 @@ for name in filenames:
|
||||||
outname = os.path.join(os.path.dirname(name),
|
outname = os.path.join(os.path.dirname(name),
|
||||||
prefix+os.path.basename(name)) if name else name,
|
prefix+os.path.basename(name)) if name else name,
|
||||||
buffered = False)
|
buffered = False)
|
||||||
except: continue
|
except IOError:
|
||||||
|
continue
|
||||||
damask.util.report(scriptName,name)
|
damask.util.report(scriptName,name)
|
||||||
|
|
||||||
# ------------------------------------------ read header ------------------------------------------
|
# ------------------------------------------ read header ------------------------------------------
|
||||||
|
@ -95,7 +96,7 @@ for name in filenames:
|
||||||
table.data_readArray()
|
table.data_readArray()
|
||||||
|
|
||||||
if (options.grid is None or options.size is None):
|
if (options.grid is None or options.size is None):
|
||||||
grid,size = damask.util.coordGridAndSize(table.data[:,table.label_indexrange(options.pos)])
|
grid,size,origin = damask.grid_filters.cell_coord0_2_DNA(table.data[:,table.label_indexrange(options.pos)])
|
||||||
else:
|
else:
|
||||||
grid = np.array(options.grid,'i')
|
grid = np.array(options.grid,'i')
|
||||||
size = np.array(options.size,'d')
|
size = np.array(options.size,'d')
|
||||||
|
|
|
@ -55,7 +55,8 @@ for name in filenames:
|
||||||
outname = os.path.join(os.path.dirname(name),
|
outname = os.path.join(os.path.dirname(name),
|
||||||
prefix+os.path.basename(name)) if name else name,
|
prefix+os.path.basename(name)) if name else name,
|
||||||
buffered = False)
|
buffered = False)
|
||||||
except: continue
|
except IOError:
|
||||||
|
continue
|
||||||
damask.util.report(scriptName,name)
|
damask.util.report(scriptName,name)
|
||||||
|
|
||||||
# ------------------------------------------ read header ------------------------------------------
|
# ------------------------------------------ read header ------------------------------------------
|
||||||
|
@ -82,7 +83,7 @@ for name in filenames:
|
||||||
table.data_readArray(options.pos)
|
table.data_readArray(options.pos)
|
||||||
table.data_rewind()
|
table.data_rewind()
|
||||||
|
|
||||||
grid,size = damask.util.coordGridAndSize(table.data)
|
grid,size,origin = damask.grid_filters.cell_coord0_2_DNA(table.data)
|
||||||
|
|
||||||
packing = np.array(options.packing,'i')
|
packing = np.array(options.packing,'i')
|
||||||
outSize = grid*packing
|
outSize = grid*packing
|
||||||
|
|
|
@ -219,7 +219,7 @@ def cell_coord0_2_DNA(coord0,ordered=True):
|
||||||
|
|
||||||
def coord0_check(coord0):
|
def coord0_check(coord0):
|
||||||
"""
|
"""
|
||||||
Check whether coordinates lie on a regular grid
|
Check whether coordinates lie on a regular grid.
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
|
|
|
@ -119,30 +119,6 @@ def execute(cmd,
|
||||||
if process.returncode != 0: raise RuntimeError('{} failed with returncode {}'.format(cmd,process.returncode))
|
if process.returncode != 0: raise RuntimeError('{} failed with returncode {}'.format(cmd,process.returncode))
|
||||||
return out,error
|
return out,error
|
||||||
|
|
||||||
def coordGridAndSize(coordinates):
|
|
||||||
"""Determines grid count and overall physical size along each dimension of an ordered array of coordinates."""
|
|
||||||
dim = coordinates.shape[1]
|
|
||||||
coords = [np.unique(coordinates[:,i]) for i in range(dim)]
|
|
||||||
mincorner = np.array(list(map(min,coords)))
|
|
||||||
maxcorner = np.array(list(map(max,coords)))
|
|
||||||
grid = np.array(list(map(len,coords)),'i')
|
|
||||||
size = grid/np.maximum(np.ones(dim,'d'), grid-1.0) * (maxcorner-mincorner) # size from edge to edge = dim * n/(n-1)
|
|
||||||
size = np.where(grid > 1, size, min(size[grid > 1]/grid[grid > 1])) # spacing for grid==1 equal to smallest among other ones
|
|
||||||
delta = size/grid
|
|
||||||
|
|
||||||
N = grid.prod()
|
|
||||||
|
|
||||||
if N != len(coordinates):
|
|
||||||
raise ValueError('Data count {} does not match grid {}.'.format(len(coordinates),' x '.join(map(repr,grid))))
|
|
||||||
|
|
||||||
if np.any(np.abs(np.log10((coords[0][1:]-coords[0][:-1])/delta[0])) > 0.01) \
|
|
||||||
or np.any(np.abs(np.log10((coords[1][1:]-coords[1][:-1])/delta[1])) > 0.01):
|
|
||||||
raise ValueError('regular grid spacing {} violated.'.format(' x '.join(map(repr,delta))))
|
|
||||||
if dim==3 and np.any(np.abs(np.log10((coords[2][1:]-coords[2][:-1])/delta[2])) > 0.01):
|
|
||||||
raise ValueError('regular grid spacing {} violated.'.format(' x '.join(map(repr,delta))))
|
|
||||||
|
|
||||||
return grid,size
|
|
||||||
|
|
||||||
# -----------------------------
|
# -----------------------------
|
||||||
class extendableOption(Option):
|
class extendableOption(Option):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue