changed meshing routine from python to fortran (f2py)
This commit is contained in:
parent
2dc3b35725
commit
333445be8b
|
@ -106,47 +106,6 @@ def transliterateToFloat(x):
|
|||
except:
|
||||
return 0.0
|
||||
|
||||
|
||||
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
def mesh(res,geomdim,defgrad_av,centroids):
|
||||
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
neighbor = numpy.array([[0, 0, 0],
|
||||
[1, 0, 0],
|
||||
[1, 1, 0],
|
||||
[0, 1, 0],
|
||||
[0, 0, 1],
|
||||
[1, 0, 1],
|
||||
[1, 1, 1],
|
||||
[0, 1, 1]])
|
||||
|
||||
wrappedCentroids = numpy.zeros([res[0]+2,res[1]+2,res[2]+2,3],'d')
|
||||
nodes = numpy.zeros([res[0]+1,res[1]+1,res[2]+1,3],'d')
|
||||
wrappedCentroids[1:-1,1:-1,1:-1] = centroids
|
||||
diag = numpy.ones(3,'i')
|
||||
shift = numpy.zeros(3,'i')
|
||||
lookup = numpy.zeros(3,'i')
|
||||
|
||||
for k in range(res[2]+2):
|
||||
for j in range(res[1]+2):
|
||||
for i in range(res[0]+2):
|
||||
if (k==0 or k==res[2]+1 or \
|
||||
j==0 or j==res[1]+1 or \
|
||||
i==0 or i==res[0]+1 ):
|
||||
me = numpy.array([i,j,k],'i')
|
||||
shift = numpy.sign(res+diag-2*me)*(numpy.abs(res+diag-2*me)/(res+diag))
|
||||
lookup = me-diag+shift*res
|
||||
wrappedCentroids[i,j,k] = centroids[lookup[0],lookup[1],lookup[2]]- \
|
||||
numpy.dot(defgrad_av, shift*geomdim)
|
||||
for k in range(res[2]+1):
|
||||
for j in range(res[1]+1):
|
||||
for i in range(res[0]+1):
|
||||
for n in range(8):
|
||||
nodes[i,j,k] += wrappedCentroids[i+neighbor[n,0],j+neighbor[n,1],k+neighbor[n,2]]
|
||||
nodes[:,:,:] /= 8.0
|
||||
|
||||
return nodes
|
||||
|
||||
# ++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
def vtk_writeASCII_mesh(mesh,data,res):
|
||||
# ++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
@ -424,12 +383,11 @@ for filename in args:
|
|||
numpy.reshape(values[:,column['tensor'][options.defgrad]:
|
||||
column['tensor'][options.defgrad]+9],
|
||||
(res[0],res[1],res[2],3,3)))
|
||||
print defgrad_av
|
||||
centroids = postprocessingMath.deformed_fft(res[0],res[1],res[2],dim,\
|
||||
numpy.reshape(values[:,column['tensor'][options.defgrad]:
|
||||
column['tensor'][options.defgrad]+9],
|
||||
(res[0],res[1],res[2],3,3)),defgrad_av,1.0)
|
||||
ms = mesh(res,dim,defgrad_av,centroids)
|
||||
ms = postprocessingMath.mesh(res[0],res[1],res[2],dim,defgrad_av,centroids)
|
||||
|
||||
fields = {\
|
||||
'tensors': {},\
|
||||
|
|
Loading…
Reference in New Issue