本文整理汇总了Python中mesh.Mesh.nplex方法的典型用法代码示例。如果您正苦于以下问题:Python Mesh.nplex方法的具体用法?Python Mesh.nplex怎么用?Python Mesh.nplex使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mesh.Mesh
的用法示例。
在下文中一共展示了Mesh.nplex方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: readTetgen
# 需要导入模块: from mesh import Mesh [as 别名]
# 或者: from mesh.Mesh import nplex [as 别名]
def readTetgen(fn):
"""Read and draw a tetgen file.
This is an experimental function for the geometry import menu.
"""
res = {}
base,ext = os.path.splitext(fn)
if ext == '.node':
nodes = readNodeFile(fn)[0]
res['tetgen'+ext] = nodes
elif ext in [ '.ele', '.face' ]:
nodes,nodenrs = readNodeFile(utils.changeExt(fn,'.node'))[:2]
if ext == '.ele':
elems = readEleFile(fn)[0]
elif ext == '.face':
elems = readFaceFile(fn)[0]
if nodenrs.min() == 1 and nodenrs.max()==nodenrs.size:
elems = elems-1
M = Mesh(nodes,elems,eltype=elems.eltype)
res['tetgen'+ext] = M
elif ext == '.smesh':
nodes,elems = readSmeshFile(fn)
ML = [ Mesh(nodes,elems[e]) for e in elems ]
res = dict([('Mesh-%s'%M.nplex(),M) for M in ML])
elif ext == '.poly':
nodes,elems = readPolyFile(fn)
ML = [ Mesh(nodes,elems[e]) for e in elems ]
res = dict([('Mesh-%s'%M.nplex(),M) for M in ML])
return res
示例2: areas
# 需要导入模块: from mesh import Mesh [as 别名]
# 或者: from mesh.Mesh import nplex [as 别名]
def areas(self):
"""area of elements
For surface element the faces' area is returned.
For volume elements the sum of the faces'areas is returned.
"""
#In case of quadratic faces, the face's area should be
#the area inside the polygon of face vertices or
#the area of the equivalent linear face?
##this function would require some changes (here proposed inside the function as starting):
##create a _default_surfacetype to create quad8 instead of hex8 ?maybe also a _default_volumetype to create tet4 instead of quad4 ?
def defaultSurfacetype(nplex):
"""Default face type for a surface mesh with given plexitude.
For the most common cases of plexitudes, we define a default face
type. The full list of default types can be found in
mesh._default_facetype.
"""
return _default_surfacetype.get(nplex,None)
import geomtools
nfacperel= len(self.eltype.faces[1])#nfaces per elem
mf=Mesh(self.coords, self.getFaces())#mesh of all faces
mf.eltype = elementType(defaultSurfacetype(mf.nplex()))
ntriperfac= mf.select([0]).convert('tri3').nelems()#how many tri per face
elfacarea = geomtools.areaNormals( mf.convert('tri3').toFormex()[:])[0].reshape(self.nelems(), nfacperel*ntriperfac)#elems'faces'areas
return elfacarea.sum(axis=1)#elems'areas
示例3: convert2VPD
# 需要导入模块: from mesh import Mesh [as 别名]
# 或者: from mesh.Mesh import nplex [as 别名]
def convert2VPD(M,clean=False):
"""Convert pyFormex data to vtkPolyData.
Convert a pyFormex Mesh or Coords object into vtkPolyData.
This is limited to vertices, lines, and polygons.
Lines should already be ordered (with connectedLineElems for instance).
Parameters:
- `M`: a Mesh or Coords type. If M is a Coords type it will be saved as
VERTS. Else...
- `clean`: if True, the resulting vtkdata will be cleaned by calling
cleanVPD.
Returns a vtkPolyData.
"""
from vtk import vtkPolyData,vtkPoints,vtkIdTypeArray,vtkCellArray
print('STARTING CONVERSION FOR DATA OF TYPE %s '%type(M))
if type(M) == Coords:
M = Mesh(M,arange(M.ncoords()))
Nelems = M.nelems() # Number of elements
Ncxel = M.nplex() # # Number of nodes per element
# create a vtkPolyData variable
vpd=vtkPolyData()
# creating vtk coords
pts = vtkPoints()
ntype=gnat(pts.GetDataType())
coordsv = n2v(asarray(M.coords,order='C',dtype=ntype),deep=1) #.copy() # deepcopy array conversion for C like array of vtk, it is necessary to avoid memry data loss
pts.SetNumberOfPoints(M.ncoords())
pts.SetData(coordsv)
vpd.SetPoints(pts)
# create vtk connectivity
elms = vtkIdTypeArray()
ntype=gnat(vtkIdTypeArray().GetDataType())
elmsv = concatenate([Ncxel*ones(Nelems).reshape(-1,1),M.elems],axis=1)
elmsv = n2v(asarray(elmsv,order='C',dtype=ntype),deep=1) #.copy() # deepcopy array conversion for C like array of vtk, it is necessary to avoid memry data loss
elms.DeepCopy(elmsv)
# set vtk Cell data
datav = vtkCellArray()
datav.SetCells(Nelems,elms)
if Ncxel == 1:
try:
print("setting VERTS for data with %s maximum number of point for cell "%Ncxel)
vpd.SetVerts(datav)
except:
raise ValueError,"Error in saving VERTS"
elif Ncxel == 2:
try:
print ("setting LINES for data with %s maximum number of point for cell "%Ncxel)
vpd.SetLines(datav)
except:
raise ValueError,"Error in saving LINES"
else:
try:
print ("setting POLYS for data with %s maximum number of point for cell "%Ncxel)
vpd.SetPolys(datav)
except:
raise ValueError,"Error in saving POLYS"
vpd.Update()
if clean:
vpd=cleanVPD(vpd)
return vpd