Source code for tecplot.data.face_neighbors
import logging
from ctypes import c_int32, c_int64, c_void_p, POINTER
from ..tecutil import _tecutil
from ..constant import *
from ..exception import *
from ..tecutil import lock, log_setattr
log = logging.getLogger(__name__)
@log_setattr
[docs]class FaceNeighbors(c_void_p):
"""Face neighbor definition and control.
Face neighbor access in PyTecplot is a work in progress. While we provide
some functionality, it sould be considered "beta" quality at best.
"""
def __init__(self, zone):
self.zone = zone
super().__init__(self._native_reference())
@lock()
def _native_reference(self):
return _tecutil.DataFaceNbrGetReadableRef(self.zone.index + 1)
def __eq__(self, other):
self_addr = addressof(cast(self, POINTER(c_int64)).contents)
other_addr = addressof(cast(other, POINTER(c_int64)).contents)
return self_addr == other_addr
def __ne__(self, other):
return not (self == other)
@property
def c_type(self):
_ctypes = {
OffsetDataType.OffsetDataType_32Bit: c_int32,
OffsetDataType.OffsetDataType_64Bit: c_int64}
data_type = _tecutil.DataFaceNbrRawItemType(self)
return _ctypes[data_type]
@property
def mode(self):
"""Face neighbor mode.
:type: `FaceNeighborMode`
Possible values: `FaceNeighborMode.LocalOneToOne`,
`FaceNeighborMode.LocalOneToMany`,
`FaceNeighborMode.GlobalOneToOne`,
`FaceNeighborMode.GlobalOneToMany`.
Example usage::
>>> print(zone.face_neighbors.mode)
FaceNeighborMode.LocalOneToMany
"""
return FaceNeighborMode(_tecutil.DataFaceNbrGetModeByRef(self))
[docs] def set_connection(element, face, neighbors, zones=None, obscure=False):
"""Connect boundary of an element's face to a neighboring face.
This sets the boundary connection face neighbors within an open face
neighbor assignment sequence for the specified element and face.
Parameters:
element (`int`): The element number (zero-based).
face (`int`): The face number on the element (zero-based).
neighbors (`list` of `integers <int>`): List of zero-based indices
of the neighboring faces.
zones (`list` of `PolyFEZone` objects, optional): List of zones for
global neighbors. This must be the same length as
``neighbors``. Use `None` to indicate these are local
neighbors. (default: `None`)
obscure (`boolean <bool>`, optional): Indicates that the neighbors
completely obscure the face. (default: `False`)
"""
if __debug__:
if zones is not None:
if len(neighbors) != len(zones):
msg = 'neighbors and zones must be the same length'
raise TecplotLogicError(msg)
_dispatch = {
c_int32: _tecutil.DataFaceNbrAssignByRef,
c_int64: _tecutil.DataFaceNbrAssignByRef64}
int_type = self.c_type
n = len(neighbors)
neighbors_arr = (int_type*n)(neighbors)
zones_arr = None if zones is None else (c_int32*n)(zones)
if not _dispatch[int_type](self, element, face, obscure, n,
neighbors_arr, zones_arr):
raise TecplotSystemError()