Element adjacency properties are not immediately accessible from standard finite element node connectivity lists. As an example, traditionally, it has been a long standing problem to efficiently compute the external faces of a finite element grid for rendering, contouring, etc. In addition, modern visualization techniques require other adjacency related queries to be answered efficiently to propagate derived features such as streamlines or cutting planes throughout a finite element grid. The Connect module generates and maintains a data structure, termed the connection "kernel", which is approximately the same size as the element node connectivity list. This single data structure provides efficient query of all the above mentioned adjacency related data. The Connect object can manage the adjacency kernel information in one of two ways, 1) statically, optimized for unchanging element connections such as in post-processing and 2) dynamically, optimized for a frequently changing element connections such as can occur in pre-processing.
The Connect module may optionally allocate and manage the basic element node connectivities or access this information from host application data structures via a GridFun object. This feature gives the software designer the option of retaining element node connectivity data structures within the host application or yielding the management of this data to a Connect object. The functions associated with a Connect object are the following.
*vis_ConnectBegin - create an instance of a Connect object vis_ConnectEnd - destroy an instance of a Connect object vis_ConnectError - return Connect object error flag vis_ConnectCopy - copy a Connect vis_ConnectPre - specify precision of node coordinates
vis_ConnectAddElemAssoc - add element association vis_ConnectAddElemEntAssoc - add element entity association vis_ConnectAddNodeAssoc - add node association vis_ConnectAllElemAssoc - query all element associations vis_ConnectAllElemEntAssoc - query all element entity associations vis_ConnectAllNodeAssoc - query all node associations vis_ConnectAppend - append a Connect object vis_ConnectCoords - get node coordinates vis_ConnectDef - define number of nodes and elements Inq - inquire number of nodes and elements vis_ConnectDelElem - delete an element vis_ConnectDelNode - delete a node vis_ConnectDelElemAssoc - delete added element associations vis_ConnectDelElemEntAssoc - delete added element entity associations vis_ConnectDelNodeAssoc - delete added node associations vis_ConnectDemo - create "demo" finite element model vis_ConnectDimension - determine spatial dimension vis_ConnectEdgeGroup - (parallel) derive sets of element edges vis_ConnectElemAdj - get elements adjacent to element vis_ConnectElemAdjEnt - get elements entities adjacent to element vis_ConnectElemAssoc - get element association vis_ConnectElemCon - get element face or edge node connectivity vis_ConnectElemCnn - get element face or edge connection number vis_ConnectElemCorn - get element corner connection number vis_ConnectElemEntAssoc - get element entity association vis_ConnectElemGroup - (parallel) derive sets of elements vis_ConnectElemIdTran - derive element regions vis_ConnectElemIndex - get element index given user id vis_ConnectElemNode - get element node connectivity vis_ConnectElemNorm - get or compute element face normals vis_ConnectElemTang - get or compute element edge tangents vis_ConnectElemNum - get number of element faces, edges, nodes vis_ConnectElemTopo - get element face or edge topology vis_ConnectExtent - get node coordinate extent vis_ConnectExtentLoc - get node coordinate extent and indices vis_ConnectCoordSysExtentLoc - get node coordinate extent and indices vis_ConnectFaceGroup - (parallel) derive sets of element faces vis_ConnectGenElem - generate an element vis_ConnectGenNode - generate a node vis_ConnectGridFun - fill GridFun object vis_ConnectIsElem - query for element defined vis_ConnectIsElemNorm - query if set element face normal vis_ConnectIsElemTang - query if set element edge tangent vis_ConnectIsNode - query for node defined vis_ConnectKernel - generate connection kernel vis_ConnectClearKernel - clear connection kernel vis_ConnectMaxElemNode - get maximum nodes connected to element vis_ConnectMaxNodeElem - get maximum elements connected to node vis_ConnectMerge - merge coincident nodes vis_ConnectMode - set static or dynamic mode vis_ConnectNodeAdj - get elements adjacent to nodes vis_ConnectNodeAssoc - get node association vis_ConnectNodeElem - get elements connected to node vis_ConnectNodeGroup - derive sets of nodes vis_ConnectNodeIndex - get node index given user id vis_ConnectNumber - get number of entities vis_ConnectNumElemNode - get number of nodes connected to element vis_ConnectNumNodeElem - get number of elements connected to node vis_ConnectNumElemAssoc - get number of element associations vis_ConnectNumElemEntAssoc - get number of element entity associations vis_ConnectNumEIP - get number of element integration points vis_ConnectNumNodeAssoc - get number of node associations vis_ConnectNumPartIJK - get number of part IJK blocks vis_ConnectIthPartIJK - get specific part IJK blocks vis_ConnectPartIJK - get part IJK block vis_ConnectNumPartName - get number of partnames vis_ConnectIthPartName - get specific partname vis_ConnectPartName - get part name string vis_ConnectRead - read model from simple file formats vis_ConnectWrite - write model to simple file formats vis_ConnectSetCoords - set node coordinates vis_ConnectSetDimension - set spatial dimension vis_ConnectSetElemAssoc - set element association vis_ConnectSetElemEntAssoc - set element entity association vis_ConnectSetElemNode - set element node connectivity vis_ConnectSetElemNorm - set element face node normals vis_ConnectSetElemTang - set element edge node tangents vis_ConnectSetGroupObject - set group derivation object vis_ConnectSetGroupParam - set group derivation parameters vis_ConnectSetNodeAssoc - set node association vis_ConnectSetNumEIP - set number of element integration points vis_ConnectSetObject - set pointers to attribute objects. GetObject - get pointers to attribute objects. vis_ConnectSetParamf - set floating point parameters vis_ConnectSetParami - set integer parameters vis_ConnectSetPartIJK - set part IJK block vis_ConnectSetPartName - set part name string vis_ConnectSetTopology - set element topology vis_ConnectSizeElemdv - compute element sizes vis_ConnectSplitElem - split simplex elements vis_ConnectSubset - extract a subset of a Connect object vis_ConnectTess - tesselate a collection of lines vis_ConnectTopology - get element topology
The primary data managed by the Connect object is element topology and connectivity and node coordinates. The Connect object can obtain access to this data in two ways: (1) implement a set of GridFun element connectivity and node coordinate query functions and set this as an attribute object using vis_ConnectSetObject or (2) load element topology, connectivity and node coordinates directly into the Connect object using vis_ConnectSetTopology, vis_ConnectSetElemNode and vis_ConnectSetCoords respectively. The first option requires that the host application "own" the element connectivity and geometry, the Connect object allocates no memory for it. All element connectivity information required by the Connect object is obtained from the host application via the GridFun query functions. The second option requires that the host application load element topology, connectivity and node coordinates into the Connect object. Once Connect has access to the primary element and node information the functions vis_ConnectTopology, vis_ConnectElemNode and vis_ConnectCoords which query element connectivity and node coordinate information may be called.
In the dynamic mode, the Connect object supports element and node editing using the functions vis_ConnectDelElem, vis_ConnectIsElem, vis_ConnectGenElem and corresponding functions for nodes, vis_ConnectDelNode, vis_ConnectIsNode, vis_ConnectGenNode. Deleting an element or node sets the VIS_FEATYPE association to VIS_ELEM_UNDEFINED or VIS_NODE_UNDEFINED respectively, and releases internal memory for use to define other elements or nodes. By default an element is undefined until it is entered using vis_ConnectSetTopology or queried using vis_ConnectGenElem. A node is undefined until it is entered explicitly using vis_ConnectSetCoords or vis_ConnectSetCoordsdv, referenced in the element connectivity list of an element using vis_ConnectSetElemNode or queried using vis_ConnectGenNode. The functions vis_ConnectIsElem and vis_ConnectIsNode return a flag indicating whether an element or node has been defined. The functions vis_ConnectGenElem and vis_ConnectGenNode return an available undefined element or node index and in the process change its status to a defined element or node. Elements and nodes may be redefined by calling vis_ConnectSetTopology and vis_ConnectSetCoords or vis_ConnectSetCoordsdv respectively.
In addition to the primary element and node information, the Connect object can derive element adjacency information from the primary element connectivity. Providing element adjacency information requires additional memory and processing effort. The data structure used to provide the adjacency information is termed the "kernel". In the static mode, the kernel must be generated explicitly using vis_ConnectKernel. This function allocates a quantity of memory approximately equal to the number of entries in the element node connection list. This function also is the most compute intensive Connect method. The algorithm to create the connection kernel has the quality of being linear with respect to the number of elements. In the dynamic mode, the kernel is maintained implicitly as each element or node is generated and/or deleted. The function call to vis_ConnectKernel is not required.
Once the kernel is created, adjacency requests may be made. Use vis_ConnectElemAdj to return a list of elements adjacent to a given element through a face, edge or node. Use vis_ConnectElemAdjEnt to return a list of elements and their associated edges or faces adjacent to a given element through a face, edge or node. Use vis_ConnectNodeAdj to return a list of elements adjacent to a given set of nodes. Sets of element edges and faces with important properties (external faces, free edges or unique edges) may be returned for any element subset encoded in a Group object using vis_ConnectEdgeGroup and vis_ConnectFaceGroup respectively.
Associations may be set for individual element edges and faces. This type of association is termed an element entity association. This type of association is set uing vis_ConnectSetElemEntAssoc and is queried using vis_ConnectElemEntAssoc. Element edge and face associations are most often used to associate these features with underlying geometry edge and face identifiers.
It is possible to specify multiple associations of a particular type. In the case of node associations, multiple node associations are managed using vis_ConnectAddNodeAssoc, vis_ConnectDelNodeAssoc, vis_ConnectNumNodeAssoc and vis_ConnectAllNodeAssoc. The multiple associations for The function vis_ConnectAddNodeAssoc will specify associations at a node in addition to the single association (which may have a value of 0) always present at a node. Any additional node associations may be deleted using vis_ConnectDelNodeAssoc. This function only affects node associations added using vis_ConnectAddNodeAssoc. The total number of associations of a type specified at a node may be queried using vis_ConnectNumNodeAssoc. The number returned is 1 plus the number of associations added using vis_ConnectAddNodeAssoc. All associations defined at a node may be queried using vis_ConnectAllNodeAssoc. The function returns the single association set using vis_ConnectSetNodeAssoc and all additional associations specified using vis_ConnectAddNodeAssoc.
The VIS_PARTID association is designed to be used with the naming capability of the Connect object. The function vis_ConnectSetPartName can be used to associate a character string with each VIS_PARTID value. Use vis_ConnectPartName to retrieve the name character string given the VIS_PARTID value. It is also possible to specify the block IJK structure of a part. Use the function vis_ConnectSetPartIJK to associate a block IJK structure with each VIS_PARTID value. Use vis_ConnectPartIJK to retrieve the IJK block structure given the VIS_PARTID value. If a part has a block IJK structure the nodes and elements of the block will be sequentially ordered in the I direction first, followed by the J and K directions respectively.
A particularly useful set of element face and element edge operations prepare sets of element faces and element edges for graphical display purposes. These operations access a specified element association type which is used to partition the full set of elements.
Arcs are specified as 3-noded lines. Rather than computing a parabola through these 3 points as the line's topology indicates, 3-noded lines are instead interpreted as arcs for the purpose of computing the intersection with other arcs or straight segments.
Prior to the computation of the intersections, two major steps are internally performed: all nodes whose relative distance is within the tolerance set with the floating-point parameter CONNECT_TOLERANCE are merged together. In addition, all arcs are decomposed into straight lines whose length is given by the floating-point parameter CONNECT_SIZE.
As intersections are computed and lines split they inherit all element associations from the original element.
Table of Contents+ vis_ConnectEdgeGroup + vis_ConnectElemGroup + vis_ConnectFaceGroup
The Connect object calls the following grid functions set in the GridFun attribute object.
*vis_ConnectBegin - create an instance of an Connect object
vis_Connect *vis_ConnectBegin ()
None
Destroy an instance of a Connect object using
void vis_ConnectEnd (vis_Connect *connect)
Return the current value of a Connect object error flag using
Vint vis_ConnectError (vis_Connect *connect)
Make a copy of a Connect object. The private data from the fromconnect object is copied to the Connect object. Any previous private data in connect is lost.
void vis_ConnectCopy (vis_Connect *connect, vis_Connect *fromconnect)
vis_ConnectPre - specify precision of node coordinates
void vis_ConnectPre (vis_Connect *connect, Vint pre)
connect Pointer to Connect object. pre Precision of node coordinates =SYS_FLOAT Single precision =SYS_DOUBLE Double precision
None
vis_ConnectAddElemAssoc - add element association
void vis_ConnectAddElemAssoc (vis_Connect *connect, Vint type, Vint index, Vint aid)
connect Pointer to Connect object. type Type of association index Element index aid Association
None
vis_ConnectAddElemEntAssoc - add element entity association
void vis_ConnectAddElemEntAssoc (vis_Connect *connect, Vint type, Vint enttype, Vint index, Vint no, Vint aid)
connect Pointer to Connect object. type Type of association enttype Type of element entity. =SYS_EDGE Element edge =SYS_FACE Element face index Element index no Element face or edge number aid Association
None
vis_ConnectAddNodeAssoc - add node association
void vis_ConnectAddNodeAssoc (vis_Connect *connect, Vint type, Vint index, Vint aid)
connect Pointer to Connect object. type Type of association index Node index aid Association
None
vis_ConnectAllElemAssoc - query all element associations
void vis_ConnectAllElemAssoc (vis_Connect *connect, Vint type, Vint index, Vint *num, Vint aids[])
connect Pointer to Connect object. type Type of association index Element index
num Total number of element associations aids Associations
vis_ConnectAllElemEntAssoc - query all element entity associations
void vis_ConnectAllElemEntAssoc (vis_Connect *connect, Vint type, Vint enttype, Vint index, Vint no, Vint *num, Vint aids[])
connect Pointer to Connect object. type Type of association enttype Type of element entity. =SYS_EDGE Element edge =SYS_FACE Element face index Element index no Element face or edge number
num Total number of element associations aids Associations
vis_ConnectAllNodeAssoc - query all node associations
void vis_ConnectAllNodeAssoc (vis_Connect *connect, Vint type, Vint index, Vint *num, Vint aids[])
connect Pointer to Connect object. type Type of association index Node index
num Total number of node associations aids Associations
vis_ConnectAppend - append a Connect object
void vis_ConnectAppend (vis_Connect *connect, vis_Connect *fromconnect)
connect Pointer to Connect object. fromconnect Pointer to Connect object.
None
vis_ConnectCoords - get node coordinates
void vis_ConnectCoords (const vis_Connect *connect, Vint nix, Vint ix[], Vfloat x[][3]) void vis_ConnectCoordsdv (const vis_Connect *connect, Vint nix, Vint ix[], Vdouble x[][3])
connect Pointer to Connect object. nix Number of nodes ix Array of node indices
x Array of world coordinates of nodes (x,y,z)
vis_ConnectDef - define number of nodes and elements
void vis_ConnectDef (vis_Connect *connect, Vint numnode, Vint numelem)
connect Pointer to Connect object. numnode Number of nodes numelem Number of elements
None
Inquire of defined numnode or numelem as output arguments using
void vis_ConnectInq (const vis_Connect *connect, Vint *numnode, Vint *numelem)
vis_ConnectDelElem - delete an element
void vis_ConnectDelElem (vis_Connect *connect, Vint index)
connect Pointer to Connect object. index Element index to delete
None
vis_ConnectDelNode - delete a node
void vis_ConnectDelNode (vis_Connect *connect, Vint index)
connect Pointer to Connect object. index Node index to delete
None
vis_ConnectDelElemAssoc - delete added element associations
void vis_ConnectDelElemAssoc (vis_Connect *connect, Vint type, Vint index)
connect Pointer to Connect object. type Type of association index Element index
None
vis_ConnectDelElemEntAssoc - delete added element entity associations
void vis_ConnectDelElemEntAssoc (vis_Connect *connect, Vint type, Vint enttype, Vint index, Vint no)
connect Pointer to Connect object. type Type of association enttype Type of element entity. =SYS_EDGE Element edge =SYS_FACE Element face index Element index no Element face or edge number
None
vis_ConnectDelNodeAssoc - delete added node associations
void vis_ConnectDelNodeAssoc (vis_Connect *connect, Vint type, Vint index)
connect Pointer to Connect object. type Type of association index Node index
None
vis_ConnectDemo - create "demo" finite element model
void vis_ConnectDemo (vis_Connect *connect, Vint oper, Vfloat f, Vint shape, Vint numi, Vint numj, Vint numk)
connect Pointer to Connect object. oper Operation specified to create finite element model =CONNECT_DEMO_CUBE Create cube model =CONNECT_DEMO_CYLINDER Create cylinder model =CONNECT_DEMO_SPHERE Create sphere model f Floating point size factor. shape Cell shape parameter =VIS_SHAPELINE Line =VIS_SHAPETRI Triangle =VIS_SHAPEQUAD Quadrilateral =VIS_SHAPETET Tetrahedron =VIS_SHAPEWED Wedge =VIS_SHAPEHEX Hexahedron numi The number of points along the i direction. numj The number of points along the j direction. numk The number of points along the k direction.
None
If 1D elements are implied by the cell shape, then elements are generated along the i direction only at j = 1 and k = 1. If 2D elements are implied by the cell shape, then elements are generated along the i direction first and j direction second only at k = 1.
The i,j,k directions for a cube are along the global x,y and z axes; for a cylinder, along the circumferential direction (global x,y plane), the global z axis and the radial direction; and for a sphere, along the circumferential direction (global x,y plane), the azimuthal direction and the radial direction;
vis_ConnectDimension - determine spatial dimension
void vis_ConnectDimension (vis_Connect *connect, Vint *ndim)
connect Pointer to Connect object.
ndim Number of spatial dimensions
The dimension of the model may be set specifically using vis_ConnectSetDimension. If the dimension has not been explicitly set to a positive value, then the dimensionality of the model is determined by checking the shape topology of solid, shell and beam element types.
vis_ConnectEdgeGroup - (parallel) derive groups of element edges
void vis_ConnectEdgeGroup (vis_Connect *connect, Vint oper, vis_Group *group, vis_Group *groupdst)
connect Pointer to Connect object. oper Operation specified to derive group =CONNECT_ASSOC Edge with an association value =CONNECT_ASSOCANY Edge with any association value =CONNECT_ASSOCDIFF Edge with differing associations =CONNECT_CONNECTED Edge connections to nodes =CONNECT_CONTAINED Edge contained entirely by nodes =CONNECT_CURVATURE Curvature discontinuity edges =CONNECT_ELEM Edge of 1D element =CONNECT_FEATURE Feature edges =CONNECT_FREE Free edges =CONNECT_NONMAN Non-manifold edges =CONNECT_SEED Adjacent edge containing seed =CONNECT_SILHOUETTE Silhouette edges =CONNECT_UNIQUE Unique edges =CONNECT_UNIQUEASSOC Unique edges in each association value =CONNECT_UNIQUEASSOCDIFF Unique edges differing associations =CONNECT_FEATUREASSOCDIFF Feature edges differing associations =CONNECT_USE Edge use by elements group Pointer to source Group object of elements, element faces or nodes. If NULL, then all elements are assumed.
groupdst Pointer to derived Group object of element edges.
The CONNECT_ASSOC operation is only valid for source element groups. The association type and id are specified using vis_ConnectSetGroupParami.
The CONNECT_ASSOCANY operation is only valid for source element groups. The association type is specified using vis_ConnectSetGroupParami. Any non-zero value of the specified association type will flag the edge.
The CONNECT_ASSOCDIFF operation is only valid for source element groups. The association type is specified using vis_ConnectSetGroupParami. If any elements connected to an edge have differing association values the edge will be flagged. An option may be enabled to include free edges in the edge group. Enable this option using vis_ConnectSetGroupParami with type CONNECT_ASSOCFREE.
The CONNECT_CONNECTED and CONNECT_CONTAINED operations are only valid for source node groups. The CONNECT_CONNECTED operation selects an element edge if it is connected to a specified number of nodes. The number of node connections is specified using vis_ConnectSetGroupParami with a parameter type of CONNECT_NUMBER The CONNECT_CONTAINED operation selects an element edge if all of its nodes exist in the source node group.
The CONNECT_CURVATURE, CONNECT_FEATURE and CONNECT_SILHOUETTE operations are only valid for source element face groups. The curvature discontinuity tolerance is specified using vis_ConnectSetGroupParamf with a parameter type of CONNECT_CURVATURECHANGE. The feature angle tolerance is specified using vis_ConnectSetGroupParamf with a parameter type of CONNECT_FEATUREANGLE. The model view matrix for silhouette edges is specified using vis_ConnectSetGroupParamfv with a parameter type of CONNECT_MODELVIEWMATRIX.
The CONNECT_FEATUREASSOCDIFF operation is valid for source element face groups. All edges are flagged which satisfy the feature angle specifications connected to element faces sharing each association value.
The CONNECT_ELEM operation is only valid for source element groups. An element edge is selected if it is the edge of a 1D element. A 1D element is any element with a shape of SYS_SHAPELINE.
The CONNECT_FREE operation is valid for source element and element face groups. An element edge is selected if it connected to only one element or element face respectively.
The CONNECT_UNIQUE operation is valid for source element and element face groups. An element edge is selected if it connected to exactly two element faces.
The CONNECT_UNIQUEASSOC operation is valid for source element groups. All unique edges are flagged connected to elements sharing each association value.
The CONNECT_UNIQUEASSOCDIFF operation is valid for source element face groups. All unique edges are flagged connected to element faces sharing each association value.
The CONNECT_SEED operation is valid for source element edge groups. An element edge is selected if it connected to the specified seed node or seed element edge or is adjacent to a selected edge and is in the source edge group. The edge adjacency neighborhood is bounded by a specified node seed group. A seed node is specified using vis_ConnectSetGroupParami with a parameter type of CONNECT_SEEDNODE A seed element edge is specified using vis_ConnectSetGroupParami with a parameter types of CONNECT_SEEDELEM and CONNECT_SEEDEDGE. A non-zero specified seed node takes priority over a specified element edge. The bounding node group is specified using vis_ConnectSetGroupObject with a type of CONNECT_SEEDGROUP
The CONNECT_UNIQUE operation is valid for source element and element face groups. The first occurrence of each element edge is selected. If two or more element edges are connected to the same nodes then only the element edge of the lower numbered element is selected.
The CONNECT_USE operation is only valid for source element groups. An element edge is selected if it connected (used) to (by) a specified number of elements. The number of element uses is specified using vis_ConnectSetGroupParami with a parameter type of CONNECT_NUMBER
vis_ConnectElemAdj - get elements adjacent to a given element
void vis_ConnectElemAdj (const vis_Connect *connect, Vint type, Vint index, Vint no, Vint *nix, Vint ix[])
connect Pointer to Connect object. type Type of element feature. =SYS_FACE Element face =SYS_EDGE Element edge =SYS_NODE Element node index Element index to get connected elements no Element face, edge or node number
nix Number of elements connected to specified element ix Vector of connected elements.
If vis_ConnectKernel has not been previously called then nix is returned as zero. If an improper element feature, type, is input then nix is returned as zero. If an improper element index or no is input then the operation of this function is undefined.
vis_ConnectElemAdjEnt - get elements entities adjacent to element
void vis_ConnectElemAdjEnt (const vis_Connect *connect, Vint type, Vint index, Vint no, Vint *nix, Vint ixadj[], Vint noadj[])
connect Pointer to Connect object. type Type of element feature. =SYS_FACE Element face =SYS_EDGE Element edge =SYS_NODE Element node index Element index to get connected elements no Element face, edge or node number
nix Number of elements connected to specified element ixadj Vector of connected elements. noadj Vector of connected element entities
vis_ConnectElemAssoc - get element associations
void vis_ConnectElemAssoc (vis_Connect *connect, Vint type, Vint nix, Vint ix[], Vint aids[])
connect Pointer to Connect object. type Type of element association nix Number of element indices to get associations ix Vector of element indices.
aids Vector of element associations
vis_ConnectElemCon - get element face or edge connectivity
void vis_ConnectElemCon (const vis_Connect *connect, Vint type, Vint index, Vint no, Vint *nix, Vint ix[])
connect Pointer to Connect object. type Type of element feature. =SYS_ELEM Element =SYS_FACE Element face =SYS_EDGE Element edge =SYS_NODE Element node index Element index to get connected nodes no Element face, edge or node number
nix Number of nodes connected to specified element entity ix Vector of connected nodes.
The value of no is ignored if type is SYS_ELEM. In this case the complete element connectivity is returned. If type is SYS_NODE then the value of no is the node connection number. The first position in the element node connectivity has node a connection number of 1.
vis_ConnectElemCnn - get element face or edge node connection number
void vis_ConnectElemCnn (const vis_Connect *connect, Vint type, Vint index, Vint no, Vint *nix, Vint in[])
connect Pointer to Connect object. type Type of element feature. =SYS_ELEM Element =SYS_FACE Element face =SYS_EDGE Element edge index Element index to get node connection numbers no Element face or edge number
nix Number of nodes connected to specified element face or edge in Vector of node connection numbers.
vis_ConnectElemCorn - get element corner connection number
void vis_ConnectElemCorn (const vis_Connect *connect, Vint type, Vint index, Vint no, Vint *nix, Vint in[])
connect Pointer to Connect object. type Type of element feature. =SYS_ELEM Element =SYS_FACE Element face =SYS_EDGE Element edge index Element index to get corner node connection numbers no Element face or edge number
nix Number of corner nodes in Vector of corner node connection numbers.
vis_ConnectElemEntAssoc - get element entity association
void vis_ConnectElemEntAssoc (vis_Connect *connect, Vint type, Vint enttype, Vint index, Vint no Vint *aid)
connect Pointer to Connect object. type Type of element association enttype Type of element entity. =SYS_EDGE Element edge =SYS_FACE Element face index Element index no Element face or edge number
aid Element entity association
vis_ConnectElemGroup - (parallel) derive groups of elements
void vis_ConnectElemGroup (vis_Connect *connect, Vint oper, vis_Group *group, vis_Group *groupdst)
connect Pointer to Connect object. oper Operation specified to derive group =CONNECT_ASSOC Elements with an association value =CONNECT_ASSOCANY Elements with any association value =CONNECT_CONNECTED Element connections to nodes =CONNECT_CONTAINED Element contained entirely by nodes =CONNECT_DIMENSION Elements of a given dimensionality =CONNECT_EXTENT Elements lying in a coordinate box =CONNECT_INCONSISTENT Inconsistent connectivity =CONNECT_INTERSECT Intersecting elements =CONNECT_SAMPLE Sample elements =CONNECT_SHAPE Elements of a given shape group Pointer to source Group object of elements or nodes. If NULL, then all elements are assumed.
groupdst Pointer to derived Group object of elements.
The CONNECT_ASSOC, CONNECT_DIMENSION, CONNECT_EXTENT and CONNECT_SHAPE operations are only valid for source element groups. The association type and id are specified using vis_ConnectSetGroupParami. The element dimension is specified using vis_ConnectSetGroupParami. The element shape is specified using vis_ConnectSetGroupParami. The element centroid is used to check against extent limits. The extent limits are specified using vis_ConnectSetGroupParamfv
The CONNECT_ASSOCANY operation is only valid for source element groups. The association type is specified using vis_ConnectSetGroupParami. Any non-zero value of the specified association type will flag the element.
The CONNECT_CONNECTED and CONNECT_CONTAINED operations are only valid for source node groups. The CONNECT_CONNECTED operation selects an element if it is connected to a specified number of nodes. The number of node connections is specified using vis_ConnectSetGroupParami with a parameter type of CONNECT_NUMBER The CONNECT_CONTAINED operation selects an element if all of its nodes exist in the source node group.
The CONNECT_INCONSISTENT operation checks for inconsistent connectivity of 2D elements (triangles and quadrilaterals). Inconsistent connectivity is detected by checking each edge shared by two 2D elements. The connectivity of the two attached elements must traverse the edge in opposite directions, otherwise an inconsistency is flagged. The first 2D element encountered is assumed to be consistently oriented.
The CONNECT_INTERSECT operation checks for intersections of element edges with element faces. Any element containing an edge which intersects with another element face which is not topologically connected to it is flagged.
The CONNECT_SAMPLE operation is only valid for element groups. Elements are selected so that no two element centroids are closer than an approximate sample distance. This operation is useful for selecting elements for drawing markers or icons of some type so that the display does not become too dense in regions of closely spaced elements. The sample distance is specified using vis_ConnectSetGroupParamf with a parameter type of CONNECT_SAMPLEDISTANCE.
vis_ConnectElemIdTran - derive element regions
void vis_ConnectElemIdTran (vis_Connect *connect, Vint oper, vis_Group *group, vis_IdTran *idtran)
connect Pointer to Connect object. oper Operation specified to derive group =CONNECT_FREEBODY Unconnected regions =CONNECT_TOPOBODY Topologically similar regions =CONNECT_MAP Mappable regions group Pointer to source Group object of elements or nodes. If NULL, then all elements are assumed.
idtran Pointer to IdTran of element regions
The CONNECT_FREEBODY operation creates regions of connected elements which are not connected to any elements in any other region. The CONNECT_TOPOBODY operation creates regions of connected elements which are connected to topologically similar elements.
The CONNECT_MAP operation creates regions of connected elements which are suitable for averaging element based result quantities to nodes. Each region contains topologically similar, simply connected elements with identical VIS_PROPID element associations.
vis_ConnectElemIndex - get element index given user id
void vis_ConnectElemIndex (vis_Connect *connect, Vint id, Vint *index)
connect Pointer to Connect object. id User identifier
index Element index
vis_ConnectElemNode - get nodes connected to an element
void vis_ConnectElemNode (const vis_Connect *connect, Vint index, Vint *nix, Vint ix[])
connect Pointer to Connect object. index Element index to get connected nodes.
nix Number of nodes connected to element. ix Vector of connected nodes.
vis_ConnectElemNorm - get element face normals
void vis_ConnectElemNorm (const vis_Connect *connect, Vint index, Vint no Vfloat v[][3]) void vis_ConnectElemNormdv (const vis_Connect *connect, Vint index, Vint no Vdouble v[][3])
connect Pointer to Connect object. index Element index no Element face number
v Normal vectors at face nodes
vis_ConnectElemTang - get element edge tangents
void vis_ConnectElemTang (const vis_Connect *connect, Vint index, Vint no Vfloat v[][3]) void vis_ConnectElemTangdv (const vis_Connect *connect, Vint index, Vint no Vdouble v[][3])
connect Pointer to Connect object. index Element index no Element edge number
v Tangent vectors at edge nodes
vis_ConnectElemNum - get number of faces, edges or nodes in an element
void vis_ConnectElemNum (const vis_Connect *connect, Vint type, Vint index, Vint *num)
connect Pointer to Connect object. type Type of element feature. =SYS_FACE Element face =SYS_EDGE Element edge =SYS_NODE Element node index Element index to get number of faces, edges or nodes
num Number of faces, edges or nodes in element.
vis_ConnectElemTopo - get element face or edge topology
void vis_ConnectElemTopo (const vis_Connect *connect, Vint type, Vint index, Vint no, Vint *shape, Vint *maxi, Vint *maxj)
connect Pointer to Connect object. type Type of element feature. =SYS_FACE Element face =SYS_EDGE Element edge index Element index to get topology of faces or edges. no Element face or edge number
shape Face shape parameter maxi The number of points along the i direction. maxj The number of points along the j direction.
vis_ConnectExtent - compute node coordinate extent
void vis_ConnectExtent (vis_Connect *connect, vis_Group *group, Vfloat extent[2][3]) void vis_ConnectExtentdv (vis_Connect *connect, vis_Group *group, Vdouble extent[2][3])
connect Pointer to Connect object. group Pointer to Group object of nodes. If NULL, then all nodes are assumed.
extent World coordinates of points at minimum x,y,z and maximum x,y,z.
vis_ConnectExtentLoc - get node coordinate extent and indices
void vis_ConnectExtentLoc (vis_Connect *connect, vis_Group *group, Vfloat extent[2][3], Vint ix[2][3])
connect Pointer to Connect object. group Pointer to Group object of nodes. If NULL, then all nodes are assumed.
extent World coordinates of points at minimum x,y,z and maximum x,y,z. ix Node indices
vis_ConnectCoordSysExtentLoc - get node coordinate extent and indices
void vis_ConnectCoordSysExtentLoc (vis_Connect *connect, vis_Group *group, vis_CoordSys *coordsys, Vfloat extent[2][3], Vint ix[2][3])
connect Pointer to Connect object. group Pointer to Group object of nodes. If NULL, then all nodes are assumed. coordsys Pointer to CoordSys object.
extent World coordinates of points at minimum x,y,z and maximum x,y,z. ix Node indices
vis_ConnectFaceGroup - (parallel) derive groups of element faces
void vis_ConnectFaceGroup (vis_Connect *connect, Vint oper, vis_Group *group, vis_Group *groupdst)
connect Pointer to Connect object. oper Operation specified to derive group =CONNECT_ASSOC Face with an association value =CONNECT_ASSOCANY Face with any association value =CONNECT_ASSOCDIFF Face with differing associations =CONNECT_CONNECTED Face connection to nodes =CONNECT_CONTAINED Face contained entirely by nodes =CONNECT_ELEM Face of 2D element =CONNECT_FREE Free faces =CONNECT_SEED Adjacent faces containing seed =CONNECT_UNIQUE Unique faces =CONNECT_USE Face use by elements group Pointer to source Group object of elements or nodes. If NULL, then all elements are assumed.
groupdst Pointer to derived Group object of element faces.
The CONNECT_ASSOC operation is only valid for source element groups. The association type and id are specified using vis_ConnectSetGroupParami.
The CONNECT_ASSOCANY operation is only valid for source element groups. The association type is specified using vis_ConnectSetGroupParami. Any non-zero value of the specified association type will flag the face.
The CONNECT_ASSOCDIFF operation is only valid for source element groups. The association type is specified using vis_ConnectSetGroupParami. If any elements connected to a face have differing association values the face will be flagged. An option may be enabled to include free faces in the face group. Enable this option using vis_ConnectSetGroupParami with type CONNECT_ASSOCFREE.
The CONNECT_CONNECTED and CONNECT_CONTAINED operations are only valid for source node groups. The CONNECT_CONNECTED operation selects an element face if it is connected to a specified number of nodes. The number of node connections is specified using vis_ConnectSetGroupParami with a parameter type of CONNECT_NUMBER The CONNECT_CONTAINED operation selects an element face if all of its nodes exist in the source node group.
The CONNECT_ELEM operation is only valid for source element groups. An element face is selected if it is the face of a 2D element. A 2D element is any element with a shape of SYS_SHAPETRI or SYS_SHAPEQUAD.
The CONNECT_FREE operation is valid for source element groups. An element face is selected if it connected to only one element.
The CONNECT_SEED operation is valid for source element face groups. An element face is selected if it connected to the specified seed node or seed element face or is adjacent to a selected face and is in the source face group. The face adjacency neighborhood is bounded by a specified element edge seed group. A seed node is specified using vis_ConnectSetGroupParami with a parameter type of CONNECT_SEEDNODE A seed element face is specified using vis_ConnectSetGroupParami with a parameter types of CONNECT_SEEDELEM and CONNECT_SEEDFACE. A non-zero specified seed node takes priority over a specified element face. The bounding element edge group is specified using vis_ConnectSetGroupObject with a type of CONNECT_SEEDGROUP
The CONNECT_UNIQUE operation is valid for source element groups. The first occurrence of each element face is selected. If two or more element faces are connected to the same nodes then only the element face of the lower numbered element is selected.
The CONNECT_USE operation is only valid for source element groups. An element face is selected if it connected (used) to (by) a specified number of elements. The number of element uses is specified using vis_ConnectSetGroupParami with a parameter type of CONNECT_NUMBER
vis_ConnectGenElem - generate an element
void vis_ConnectGenElem (vis_Connect *connect, Vint *index)
connect Pointer to Connect object.
index Generated element index
vis_ConnectGenNode - generate a node
void vis_ConnectGenNode (vis_Connect *connect, Vint *index)
connect Pointer to Connect object.
index Generated node index
vis_ConnectGridFun - return pointers to grid functions
void vis_ConnectGridFun (vis_Connect *connect, vis_GridFun *gridfun)
connect Pointer to Connect object. gridfun Pointer to GridFun object to be filled with grid functions
None
vis_ConnectIsElem - query for element defined
void vis_ConnectIsElem (vis_Connect *connect, Vint index, Vint *flag)
connect Pointer to Connect object. index Element index
flag Defined flag
vis_ConnectIsElemNorm - query if set element face normal
void vis_ConnectIsElemNorm (vis_Connect *connect, Vint index, Vint no, Vint *flag)
connect Pointer to Connect object. index Element index no Element face number
flag Defined flag
vis_ConnectIsElemTang - query if set element edge tangent
void vis_ConnectIsElemTang (vis_Connect *connect, Vint index, Vint no, Vint *flag)
connect Pointer to Connect object. index Element index no Element edge number
flag Define flag
vis_ConnectIsNode - query for node defined
void vis_ConnectIsNode (vis_Connect *connect, Vint index, Vint *flag)
connect Pointer to Connect object. index Element index
flag Defined flag
vis_ConnectKernel - generate connection kernel
void vis_ConnectKernel (vis_Connect *connect, Vint flag)
connect Pointer to Connect object. flag Not used
None
The connection kernel is a data structure which allows for efficient query of adjacency information derived from the basic element node connectivity. The generation of the connection kernel is a computationally intensive operation. If the kernel exists and no new nodes have been defined and no existing element connectivity changed or new element connectivity added, then this function will return without regenerating the kernel. Use vis_ConnectClearKernel to clear and deallocate a connecttion kernel.
vis_ConnectClearKernel - clear connection kernel
void vis_ConnectClearKernel (vis_Connect *connect)
connect Pointer to Connect object.
None
vis_ConnectMaxElemNode - get maximum nodes connected to element
void vis_ConnectMaxElemNode (const vis_Connect *connect, Vint *maxnum)
connect Pointer to Connect object.
maxnum Maximum number of nodes connected to any element.
vis_ConnectMaxNodeElem - get maximum elements connected to node
void vis_ConnectMaxNodeElem (vis_Connect *connect, Vint *maxnum)
connect Pointer to Connect object.
maxnum Maximum number of elements connected to any node.
vis_ConnectMerge - merge coincident nodes
void vis_ConnectMerge (vis_Connect *connect, vis_Group *group)
connect Pointer to Connect object. group Pointer to Group object of nodes. If NULL, then all nodes are assumed.
None
vis_ConnectMode - set static or dynamic mode
void vis_ConnectMode (vis_Connect *connect, Vint mode)
connect Pointer to Connect object. mode Set static or dynamic mode =CONNECT_DYNAMIC Dynamic mode =CONNECT_STATIC Static mode
groupdst Pointer to derived Group object of element faces.
vis_ConnectNumPartIJK - get number of part IJK blocks
void vis_ConnectNumPartIJK (const vis_Connect *connect, Vint *numpartijk)
connect Pointer to Connect object.
numpartijk Number of part IJK blocks
vis_ConnectIthPartIJK - get specific part IJK block
void vis_ConnectIthPartIJK (const vis_Connect *connect, Vint ith, Vint *partid, Vint ijk[3])
connect Pointer to Connect object. ith Ith part IJK block 1 <= ith <= numpartijk
partid Part identifier ijk[3] IJK block parameters
vis_ConnectPartIJK - get part IJK block
void vis_ConnectPartIJK (const vis_Connect *connect, Vint partid, Vint ijk[3])
connect Pointer to Connect object. partid Part identifier
ijk IJK block parameters
vis_ConnectNumPartName - get number of partnames
void vis_ConnectNumPartName (const vis_Connect *connect, Vint numpartname)
connect Pointer to Connect object.
numpartname Number of part names
vis_ConnectIthPartName - get specific partname
void vis_ConnectIthPartName (const vis_Connect *connect, Vint ith, Vint *partid, Vchar name[])
connect Pointer to Connect object. ith Ith part name 1 <= ith <= numpartname
partid Part identifier name Name string
vis_ConnectPartName - get part name string
void vis_ConnectPartName (const vis_Connect *connect, Vint partid, Vchar name[])
connect Pointer to Connect object. partid Part identifier
name Name string
vis_ConnectNodeAdj - get elements adjacent to nodes
void vis_ConnectNodeAdj (const vis_Connect *connect, Vint nindices, Vint indices[], Vint *nix, Vint ix[])
connect Pointer to Connect object. nindices Number of node indicies indices Vector of node indices
nix Number of elements connected to specified nodes ix Vector of connected elements.
If vis_ConnectKernel has not been previously called then nix is returned as zero.
vis_ConnectNodeAssoc - get node associations
void vis_ConnectNodeAssoc (vis_Connect *connect, Vint type, Vint nix, Vint ix[], Vint aids[])
connect Pointer to Connect object. type Type of node association nix Number of node indices to get associations ix Vector of node indices.
aids Vector of node associations
vis_ConnectNodeElem - get elements connected to a node
void vis_ConnectNodeElem (const vis_Connect *connect, Vint index, Vint *nix, Vint ix[])
connect Pointer to Connect object. index Node index to get connected elements
nix Number of elements connected to node. ix Vector of connected elements.
If vis_ConnectKernel has not been previously called then nix is returned as zero. If an improper node index is input then the operation of this function is undefined.
vis_ConnectNodeGroup - derive groups of nodes
void vis_ConnectNodeGroup (vis_Connect *connect, Vint oper, vis_Group *group, vis_Group *groupdst)
connect Pointer to Connect object. oper Operation specified to derive group =CONNECT_ASSOC Nodes with an association value =CONNECT_ASSOCANY Nodes with any association value =CONNECT_CORNER Node on element corner =CONNECT_ELEM Node of 0D element =CONNECT_EXTENT Nodes lying in a coordinate box =CONNECT_FEATURE Feature nodes =CONNECT_FREE Free nodes =CONNECT_SAMPLE Sample nodes =CONNECT_UNIQUE Unique nodes =CONNECT_USE Node use group Pointer to source Group object of elements, element faces, element edges or nodes. If NULL, then all elements or nodes are assumed depending upon the operation.
groupdst Pointer to derived Group object of nodes.
The CONNECT_ASSOC and CONNECT_EXTENT operations are only valid for source node groups. The association type and id are specified using vis_ConnectSetGroupParami. The extent limits are specified using vis_ConnectSetGroupParamfv
The CONNECT_ASSOCANY operation is only valid for source node groups. The association type is specified using vis_ConnectSetGroupParami. Any non-zero value of the specified association type will flag the node.
The CONNECT_CORNER operation is valid for source element, element face and element edge groups. A node is selected if it connected to the corner (as opposed to midside, midface or midbody) of a element, element face or element edge respectively. All nodes of linear elements are assumed to be corners.
The CONNECT_ELEM operation is only valid for source element groups. A node is selected if it is connected to a 0D element. A 0D element is any element with a shape of SYS_SHAPEPOINT.
The CONNECT_FEATURE operation is only valid for source element edge groups. The feature angle tolerance is specified using vis_ConnectSetGroupParamf with a parameter type of CONNECT_FEATUREANGLE.
The CONNECT_FREE operation is valid for source element, element face and element edge groups. A node is selected if it connected to only one element, element face or element edge respectively.
The CONNECT_SAMPLE operation is only valid for source node groups. Nodes are selected so that no two nodes are closer than an approximate sample distance. This operation is useful for selecting nodes for drawing markers or icons of some type so that the display does not become too dense in regions of closely spaced nodes. The sample distance is specified using vis_ConnectSetGroupParamf with a parameter type of CONNECT_SAMPLEDISTANCE.
The CONNECT_UNIQUE operation is valid for source element, element face and element edge groups. A node is selected if it connected to any element, element face or element edge respectively.
The CONNECT_USE operation is only valid for source element groups. The number of node uses is specified using vis_ConnectSetGroupParami with a parameter type of CONNECT_NUMBER
vis_ConnectNodeIndex - get node index given user id
void vis_ConnectNodeIndex (vis_Connect *connect, Vint id, Vint *index)
connect Pointer to Connect object. id User identifier
index Node index
vis_ConnectNumber - get number of entities
void vis_ConnectNumber (const vis_Connect *connect, Vint type, Vint *numentity)
connect Pointer to Connect object. type Entity type =SYS_ELEM Element =SYS_NODE Node
numentity Number of entities of requested type
vis_ConnectNumElemNode - get number of nodes connected to element
void vis_ConnectNumElemNode (const vis_Connect *connect, Vint index, Vint *nix)
connect Pointer to Connect object. index Element index to get connected nodes.
nix Number of nodes connected to element.
vis_ConnectNumNodeElem - get number of elements connected to node
void vis_ConnectNumNodeElem (const vis_Connect *connect, Vint index, Vint *nix)
connect Pointer to Connect object. index Node index to get connected elements.
nix Number of elements connected to node.
vis_ConnectNumElemAssoc - query total number of element associations
void vis_ConnectNumElemAssoc (vis_Connect *connect, Vint type, Vint index, Vint *num)
connect Pointer to Connect object. type Type of association index Element index
num Total number of element associations
vis_ConnectNumElemEntAssoc - query total number of element entity associations
void vis_ConnectNumElemEntAssoc (vis_Connect *connect, Vint type, Vint enttype, Vint index, Vint no, Vint *num)
connect Pointer to Connect object. type Type of association enttype Type of element entity. =SYS_EDGE Element edge =SYS_FACE Element face index Element index no Element face or edge number
num Total number of element associations
vis_ConnectNumEIP - get number of element integration points
void vis_ConnectNumEIP (vis_Connect *connect, Vint index, Vint *numeip)
connect Pointer to Connect object. index Element index
numeip Number of element integration points
vis_ConnectNumNodeAssoc - query total number of node associations
void vis_ConnectNumNodeAssoc (vis_Connect *connect, Vint type, Vint index, Vint *num)
connect Pointer to Connect object. type Type of association index Node index
num Total number of node associations
vis_ConnectSetCoords - set node coordinates
void vis_ConnectSetCoords (vis_Connect *connect, Vint index, Vfloat x[3]) void vis_ConnectSetCoordsdv (vis_Connect *connect, Vint index, Vdouble x[3])
connect Pointer to Connect object. index Node index to set coordinates x World coordinates of node (x,y,z)
None
vis_ConnectSetDimension - set spatial dimension
void vis_ConnectSetDimension (vis_Connect *connect, Vint ndim)
connect Pointer to Connect object. ndim Spatial dimension
None
vis_ConnectSetElemAssoc - set element associations
void vis_ConnectSetElemAssoc (vis_Connect *connect, Vint type, Vint index, Vint aid)
connect Pointer to Connect object. type Type of element association =VIS_COLORID Color identifier =VIS_CMATID Material coordinate system identifier =VIS_CMATFLAG Material coordinate system flag =VIS_CSYSID Solution coordinate system identifier =VIS_DOMAIN Domain decomposition regions =VIS_ENDACON Element end A connection =VIS_ENDBCON Element end B connection =VIS_ENDATOPO Element end A topology =VIS_ENDBTOPO Element end B topology =VIS_EXTNAMEA Element external name, first 4 char =VIS_EXTNAMEB Element external name, second 4 char =VIS_FEATECH Element technology =VIS_FEATYPE Element generic type =VIS_FEASPEC Element specific type =VIS_FEATWOD Element two dimension type =VIS_GEOVERT Geometry vertex =VIS_GEOEDGE Geometry edge =VIS_GEOFACE Geometry face =VIS_GEOBODY Geometry body =VIS_MATLID Material identifier =VIS_MISCID Miscellaneous identifier =VIS_MISCID0 Miscellaneous identifier 0 =VIS_MISCID1 Miscellaneous identifier 1 =VIS_MISCID2 Miscellaneous identifier 2 =VIS_MISCID3 Miscellaneous identifier 3 =VIS_MISCID4 Miscellaneous identifier 4 =VIS_MISCID5 Miscellaneous identifier 5 =VIS_MISCID6 Miscellaneous identifier 6 =VIS_MISCID7 Miscellaneous identifier 7 =VIS_MISCID8 Miscellaneous identifier 8 =VIS_ORIENTINDEX Orientation node index =VIS_PARTID Part identifier =VIS_PINFLAGS Element pin flags =VIS_PROPID Property identifier =VIS_SEID Superelement identifier =VIS_SYMMID Symmetry group identifier =VIS_USERID User element identifier index Element index to set association aid Element association
None
The end topology, VIS_ENDATOPO or VIS_ENDATOPO, associations are designed to be used with certain point and line connections. They should be set to one of the following constants.
SYS_TOPO_POINT1 SYS_TOPO_LINE2 SYS_TOPO_LINE3 SYS_TOPO_TRI3 SYS_TOPO_TRI6SER SYS_TOPO_TRI6LAG SYS_TOPO_QUAD4SER SYS_TOPO_QUAD4LAG SYS_TOPO_QUAD8 SYS_TOPO_QUAD9
The end connection, VIS_ENDACON or VIS_ENDBCON, associations specify certain point and line connections. These associations are required if the geometric location of an element end point is offset in some respect from the geometric location of the node connectivity at which the degrees of freedom are located. An example would be beam element offset vectors. A positive value indicates a node number. A zero value means that the element end point is colocated with the node connectivity A negative value is identified by one of the following constants.
SYS_ELEMEND_POSITION, position vector SYS_ELEMEND_OFFSET, offset vector
The external name, VIS_EXTNAMEA and VIS_EXTNAMEB, associations contain the character name of the element in Hollerith format. Association VIS_EXTNAMEA contains the first 4 characters of the name and VIS_EXTNAMEB contains the second 4 characters of the name. If the character name is less than 8 characters then trailing blank characters will appear.
The element type, VIS_FEATYPE, association should be set to one of the following constants.
SYS_ELEM_UNDEFINED SYS_ELEM_SOLID SYS_ELEM_SHELL SYS_ELEM_MEMBRANE SYS_ELEM_BEAM SYS_ELEM_TRUSS SYS_ELEM_GAP SYS_ELEM_SPRINGDASHPOT SYS_ELEM_RIGID SYS_ELEM_CONSTRAINT SYS_ELEM_PLOT SYS_ELEM_MASS SYS_ELEM_INTER SYS_ELEM_SUPER
The specific element type, VIS_FEASPEC, association should be set to one of the following constants depending upon the element type.
VIS_FEATYPE = SYS_ELEM_SOLID SYS_SOLID_SOLID, solid (as opposed to fluid) region SYS_SOLID_FLUID, fluid region SYS_SOLID_SHELL, continuum shell: ABAQUS SC6R, SC8R VIS_FEATYPE = SYS_ELEM_MEMBRANE SYS_MEMBRANE_STAN, plane stress membrane: ABAQUS M3Dx SYS_MEMBRANE_SHEAR, shear panel: NASTRAN CSHEAR SYS_MEMBRANE_FACE, geometry face facet. VIS_FEATYPE = SYS_ELEM_BEAM SYS_BEAM_STAN, standard beam: NASTRAN CBEAM SYS_BEAM_ROD, axial force and torque: NASTRAN CROD VIS_FEATYPE = SYS_ELEM_TRUSS SYS_TRUSS_STAN, standard truss: ABAQUS T3D3 SYS_TRUSS_EDGE, geometry edge segment. VIS_FEATYPE = SYS_ELEM_INTER SYS_INTER_NONE, no known specific type SYS_INTER_CONTACT, contact SYS_INTER_WALL, wall SYS_INTER_INLET, pressure inlet SYS_INTER_OUTLET, pressure outlet SYS_INTER_SURF, surface SYS_INTER_SURF_ENVIRONMENT, surface with environment surface SYS_INTER_SYMMETRY, symmetry SYS_INTER_PERIODIC_SHADOW, periodic shadow SYS_INTER_PRESSURE_FARFIELD, pressure far field SYS_INTER_INLET_VELOCITY, velocity inlet SYS_INTER_PERIODIC, periodic SYS_INTER_FAN, fan SYS_INTER_INLET_MASSFLOW, mass flow inlet SYS_INTER_INTERFACE, interface SYS_INTER_PARENT, parent SYS_INTER_OUTFLOW, outflow SYS_INTER_AXIS, axis SYS_INTER_USER_DEFINED, user defined SYS_INTER_DEGENERATE_LINE, degenerate line SYS_INTER_DIRICHLET, Dirichlet SYS_INTER_FARFIELD, far field SYS_INTER_NEUMANN, Neumann SYS_INTER_GENERAL, general SYS_INTER_INFLOW_SUBSONIC, inflow subsonic SYS_INTER_OUTFLOW_SUBSONIC, outflow subsonic SYS_INTER_INFLOW_SUPERSONIC, inflow supersonic SYS_INTER_OUTFLOW_SUPERSONIC, outflow supersonic SYS_INTER_TUNNEL_INFLOW, tunnel inflow SYS_INTER_TUNNEL_OUTFLOW, tunnel outflow SYS_INTER_SYMMETRY_POLAR, polar symmetry SYS_INTER_WALL_VISCOUS, wall viscous SYS_INTER_WALL_VISCOUS_HEAT_FLUX, wall viscous heat flux SYS_INTER_WALL_VISCOUS_ISOTHERMAL, wall viscous isothermal SYS_INTER_WALL_INVISCID, wall inviscid SYS_INTER_GASKET, gasket SYS_INTER_COHESIVE, cohesive VIS_FEATYPE = SYS_ELEM_SPRINGDASHPOT SYS_SPRINGDASHPOT_SCALAR, scalar stiffness and damping: NASTRAN CELASx, CDAMPx SYS_SPRINGDASHPOT_VECTOR, vector stiffness and damping: ABAQUS SPRING2 SYS_SPRINGDASHPOT_WELD, weld: NASTRAN CWELD SYS_SPRINGDASHPOT_BUSH, bushing: NASTRAN CBUSH SYS_SPRINGDASHPOT_LINK, link: ABAQUS SPRINGA SYS_SPRINGDASHPOT_SCALARDAMP, scalar damping: NASTRAN CDAMPx SYS_SPRINGDASHPOT_LINKDAMP, damper: ABAQUS DASHPOTA VIS_FEATYPE = SYS_ELEM_RIGID SYS_RIGID_KINE, kinematic coupling: NASTRAN RBE1, RBE2, RBAR SYS_RIGID_DIST, distributing coupling: ABAQUS DCOUP3D. SYS_RIGID_LINK, inextensional coupling: NASTRAN RROD SYS_RIGID_MPC, multipoint constraint: NASTRAN MPC, ABAQUS *EQUATION SYS_RIGID_RBE3, interpolation constraint: NASTRAN RBE3. SYS_RIGID_SPLINE, spline constraint: NASTRAN RSPLINE. SYS_RIGID_JOINT, coincident node joint: NASTRAN RJOINT. VIS_FEATYPE = SYS_ELEM_MASS SYS_MASS_SCALAR, scalar mass: NASTRAN CMASSx SYS_MASS_LUMP, translational mass and moments of inertia: NASTRAN CONM2 SYS_MASS_MATRIX, mass matrix: NASTRAN CONM1 SYS_MASS_VERTEX, geometry vertex point.
For 2-D elements, the element two dimension type, VIS_FEATWOD, association should be set to one of the following non-zero constants. Any element which is not a 2-D element will have an association value of zero.
SYS_PLANESTRAIN SYS_PLANESTRESS SYS_AXISYMMETRIC SYS_AXISYMFOURIER
The element technology, VIS_FEATECH, association is designed to be set to one of the following constants.
SYS_TECH_ISOP SYS_TECH_BBAR SYS_TECH_URED SYS_TECH_KIRCHHOFF SYS_TECH_MIXED SYS_TECH_ENHANCED SYS_TECH_ANS
vis_ConnectSetElemEntAssoc - set element entity association
void vis_ConnectSetElemEntAssoc (vis_Connect *connect, Vint type, Vint enttype, Vint index, Vint no, Vint aid)
connect Pointer to Connect object. type Type of element association enttype Type of element entity. =SYS_EDGE Element edge =SYS_FACE Element face index Element index no Element face or edge number aid Element entity association
None
vis_ConnectSetElemNode - set element node connectivity
void vis_ConnectSetElemNode (vis_Connect *connect, Vint index, Vint ix[])
connect Pointer to Connect object. index Element index to set connected nodes ix Vector of connected node indices.
None
vis_ConnectSetElemNorm - set element face normals
void vis_ConnectSetElemNorm (vis_Connect *connect, Vint index, Vint no Vfloat v[][3]) void vis_ConnectSetElemNormdv (vis_Connect *connect, Vint index, Vint no Vdouble v[][3])
connect Pointer to Connect object. index Element index no Element face number v Normal vectors at face nodes
None
vis_ConnectSetElemTang - set element edge tangents
void vis_ConnectSetElemTang (vis_Connect *connect, Vint index, Vint no Vfloat v[][3]) void vis_ConnectSetElemTangdv (vis_Connect *connect, Vint index, Vint no Vdouble v[][3])
connect Pointer to Connect object. index Element index no Element edge number v Tangent vectors at edge nodes
None
vis_ConnectSetGroupObject - set group derivation object
void vis_ConnectSetGroupObject (vis_Connect *connect, Vint type, Vobject *object)
connect Pointer to Connect object. type Type of group parameter to set =CONNECT_SEEDGROUP Group seed group object Pointer to the object to be set.
None
The CONNECT_SEEDGROUP object is a Group object which bounds a CONNECT_SEED operation. The Group must be an element edge group when performing a face group derivation with vis_ConnectFaceGroup. The Group must be a node group when performing an edge group derivation with vis_ConnectEdgeGroup.
vis_ConnectSetGroupParam - set group derivation parameters
void vis_ConnectSetGroupParamf (vis_Connect *connect, Vint ptype, Vfloat param) void vis_ConnectSetGroupParamfv (vis_Connect *connect, Vint ptype, Vfloat vparam[]) void vis_ConnectSetGroupParami (vis_Connect *connect, Vint ptype, Vint iparam)
connect Pointer to Connect object. ptype Type of group parameter to set =CONNECT_ASSOCID Association id, iparam =CONNECT_ASSOCTYPE Association type, iparam =CONNECT_CURVATURECHANGE Curvature change, param =CONNECT_DIMENSION Dimension value, iparam =CONNECT_EXTENT Coordinate extent, vparam =CONNECT_FEATUREANGLE Feature angle, param =CONNECT_FEATURENONMAN Feature nonmanifold, iparam =CONNECT_FEATURESENSE Feature sense, iparam =CONNECT_MODELVIEWMATRIX Model view matrix, param =CONNECT_NUMBER Use number, iparam =CONNECT_SEEDELEM Seed element, iparam =CONNECT_SEEDEDGE Seed edge number, iparam =CONNECT_SEEDFACE Seed face number, iparam =CONNECT_SEEDNODE Seed node, iparam =CONNECT_SHAPE Shape value, iparam =CONNECT_SAMPLEDISTANCE Sample distance, param =CONNECT_TOLERANCE Merge tolerance, param param Specifies the float value that ptype will be set to. vparam Specifies the float values that ptype will be set to. iparam Specifies the integer value that ptype will be set to.
None
The CONNECT_ASSOCID and CONNECT_ASSOCTYPE parameters are integer values which affect the generation of node and element groups by matching an association id of a particular type. The parameter CONNECT_ASSOCTYPE must match one of the standard association types (see the type argument of either vis_ConnectSetElemAssoc or vis_ConnectSetNodeAssoc) and CONNECT_ASSOCID specifies the association id to match.
The CONNECT_DIMENSION parameter is an integer value specifying element dimension of 0, 1, 2 or 3. The CONNECT_SHAPE parameter is an integer value specifying element shape (see the shape argument of vis_ConnectSetTopology).
The CONNECT_EXTENT parameters are six float values specifying coordinate extent, minimum x,y,z followed by maximum x,y,z. The extent check includes the extreme values.
The CONNECT_CURVATURECHANGE parameter is a float value which affects the generation of edges due to curvature discontinuity across the edge. An edge is determined to be a curvature discontinuity edge if the curvature change in the direction perpendicular to the edge between the faces connected to the edge is greater than the specified curvature change.
The CONNECT_FEATUREANGLE parameter is a float value, specified in degrees, which affects the generation of feature edges and feature nodes. The default feature angle is 30 degrees. An edge is determined to be a feature if the angle of discontinuity between the faces connected to the edge is greater than the feature angle. In addition, if anything other than 2 faces are connected to an edge it is a feature edge. Similarly a node is a feature node if the discontinuity between the connected edges is greater than the feature angle or if anything other than 2 edges are connected to a node.
The CONNECT_FEATURENONMAN parameter is an integer value which determines whether non-manifold edges are always flagged as a feature edge. In this case a non-manifold element edge refers to an edge which is shared by more than 2 element faces. By default CONNECT_FEATURENONMAN is set to VIS_ON.
The CONNECT_FEATURESENSE parameter is an integer value which determines whether the senses of the normals of adjacent entities are taken into account in determining features. By default CONNECT_FEATURESENSE is set to VIS_OFF.
The CONNECT_MODELVIEWMATRIX model view matrix is a 4 by 4 matrix which specifies the eye coordinate system relative to the world coordinate system.
The CONNECT_NUMBER parameter is an integer value which determines the number of elements an entity is "used" by or attached to. By default CONNECT_NUMBER is set to 1.
The CONNECT_SAMPLEDISTANCE parameter is a float value which affects the sample density when generating CONNECT_SAMPLE groups using vis_ConnectNodeGroup or vis_ConnectElemGroup. Nodes or elements are sampled so that no two nodes or element centroids in a sampled group are closer, approximately, than the current sample distance. By default CONNECT_SAMPLEDISTANCE is set to 1.
The CONNECT_TOLERANCE parameter is a float value which is used to check for coincident node locations when using vis_ConnectMerge. By default CONNECT_TOLERANCE is set to 1.e-12.
vis_ConnectSetPartIJK - set part IJK block parameters
void vis_ConnectSetPartIJK (vis_Connect *connect, Vint partid, Vint ijk[3])
connect Pointer to Connect object. partid Part identifier ijk IJK block parameters
None
vis_ConnectSetPartName - set part name string
void vis_ConnectSetPartName (vis_Connect *connect, Vint partid, Vchar *name)
connect Pointer to Connect object. partid Part identifier name Name string
None
vis_ConnectSetNodeAssoc - set node associations
void vis_ConnectSetNodeAssoc (vis_Connect *connect, Vint type, Vint index, Vint aid)
connect Pointer to Connect object. type Type of node association =VIS_COLORID Color identifier =VIS_CREFID Reference coordinate system identifier =VIS_CSYSID Solution coordinate system identifier =VIS_FEATYPE Node type =VIS_IBLANK Iblank code =VIS_MISCID Miscellaneous identifier =VIS_MISCID0 Miscellaneous identifier 0 =VIS_MISCID1 Miscellaneous identifier 1 =VIS_MISCID2 Miscellaneous identifier 2 =VIS_MISCID3 Miscellaneous identifier 3 =VIS_MISCID4 Miscellaneous identifier 4 =VIS_MISCID5 Miscellaneous identifier 5 =VIS_MISCID6 Miscellaneous identifier 6 =VIS_MISCID7 Miscellaneous identifier 7 =VIS_MISCID8 Miscellaneous identifier 8 =VIS_PARTID Part identifier =VIS_SPCFLAGS Node single point constraint flags =VIS_USERID User node identifier index Node index to set association aid Node association
None
VIS_NODE_UNDEFINED VIS_NODE_GRID VIS_NODE_SCALAR
vis_ConnectSetNumEIP - set number of element integration points
void vis_ConnectSetNumEIP (vis_Connect *connect, Vint index, Vint numeip)
connect Pointer to Connect object. index Element index numeip Number of element integration points
None
vis_ConnectSetObject - set pointers to attribute objects
void vis_ConnectSetObject (vis_Connect *connect, Vint objecttype, Vobject *object)
connect Pointer to Connect object. objecttype The name of the object type to be set. =VIS_GRIDFUN GridFun object =VIS_STATE State object object Pointer to the object to be set.
None
If a State attribute object is set then the node coordinates are assumed to be defined as a vector quantity in the State object. All node coordinate queries performed using vis_ConnectCoords will access the State attribute object. In the case where both GridFun and State attribute objects have been set, the State object is used.
Get object as an output argument using
void vis_ConnectGetObject (vis_Connect *connect, Vint objecttype, Vobject **object)
vis_ConnectSetParamf - set floating point parameters
void vis_ConnectSetParamf (vis_Connect *connect, Vint ptype, Vfloat param)
connect Pointer to Connect object. ptype Type of parameter to set =CONNECT_TOLERANCE Node merge tolerance =CONNECT_SIZE Arc length param Specifies the value that ptype will be set to.
None
The parameter CONNECT_TOLERANCE is used to control the distance tolerance for merging coincident nodes using vis_ConnectMerge. It is also used in vis_ConnectTess for merging nodes and closely spaced lines. The default value is .0001 .
Use parameter CONNECT_SIZE to set the arc length used to tesselate arcs with the function vis_ConnectTess. The default value is 1.
vis_ConnectSetParami - set integer parameters
void vis_ConnectSetParami (vis_Connect *connect, Vint ptype, Vint iparam)
connect Pointer to Connect object. ptype Type of parameter to set =CONNECT_EXACTADJACENCY Exact adjacency computations =CONNECT_ZEROUSERID Return 0 valued user id iparam Specifies the value that ptype will be set to.
None
The parameter CONNECT_EXACTADJACENCY is used to control algorithm used for element adjacency calculations, in particular the element adjacency calculations across element faces. If not enabled then an element is said to be adjacent to a given element face if it contains all the nodes of the given element face. If enabled then an element is said to be adjacent to a given element face if a face contains only the nodes of the given element face. Enabling this option can result in a significant performance penalty. The default value is off.
The parameter CONNECT_ZEROUSERID is used to toggle the value returned for a zero valued node or element VIS_USERID association. If enabled a zero valued user id association is returned as zero. If not enabled (off) a zero valuled user id association is returned equal to the node or element index value. The default value is off.
vis_ConnectSetTopology - set element topologies
void vis_ConnectSetTopology (vis_Connect *connect, Vint index, Vint shape, Vint maxi, Vint maxj, Vint maxk)
connect Pointer to Connect object. index Element index to set topology shape Cell shape parameter =VIS_SHAPEUNDEFINED Undefined =VIS_SHAPEPOINT Point =VIS_SHAPELINE Line =VIS_SHAPETRI Triangle =VIS_SHAPEQUAD Quadrilateral =VIS_SHAPETET Tetrahedron =VIS_SHAPEPYR Pyramid =VIS_SHAPEWED Wedge =VIS_SHAPEHEX Hexahedron =VIS_SHAPEPOLYGON Polygon =VIS_SHAPEPOLYHED Polyhedron maxi Topology parameters maxj maxk
None
vis_ConnectTopology - get element topology
void vis_ConnectTopology (const vis_Connect *connect, Vint index, Vint *shape, Vint *maxi, Vint *maxj, Vint *maxk)
connect Pointer to Connect object. index Element index to get topology
shape Cell shape parameter maxi The number of points along the i direction. maxj The number of points along the j direction. maxk The number of points along the k direction.
vis_ConnectSizeElemdv - compute element sizes
void vis_ConnectSizeElemdv (vis_Connect *connect, Vint type, Vint index, Vint no, Vdouble *s)
connect Pointer to Connect object. type Type of element feature. =SYS_ELEM Element =SYS_FACE Element face =SYS_EDGE Element edge index Element index no Element face or edge number
s Element size
vis_ConnectSplitElem - split simplex elements
void vis_ConnectSplitElem (vis_Connect *connect, Vint type, Vint index, Vint no, Vint nind)
connect Pointer to Connect object. type Type of element feature. =SYS_ELEM Element =SYS_FACE Element face =SYS_EDGE Element edge index Element index to split no Element face or edge number nind Node index used to split element
None
If the element is split then for lines one additional line element is generated, for triangles two additional triangle elements are generated, and for tetrahedra three additional tetrahedral elements are generated.
If the element edge is split then all elements adjacent to element index across the specified edge are split. An adjacent element is not split if the element is not a simplex of the same shape.
vis_ConnectRead - read model from simple file formats
void vis_ConnectRead (vis_Connect *connect, Vint type, const Vchar *path)
connect Pointer to Connect object. type File type =SYS_ASCII ASCII format =SYS_BINARY Binary format =SYS_FILE_STL Read triangles from ASCII STL file =SYS_FILE_STLBIN Read triangles from binary STL file =SYS_FILE_OBJ Read triangles from OBJ file path File path
None
The SYS_ASCII and SYS_BINARY formats are VKI internal formats. Use vis_ConnectWrite to write connect data to a file format.
There are a number of additional file formats which are supported, please contact us for details.
vis_ConnectSubset - extract a subset of a Connect object
void vis_ConnectSubset (vis_Connect *connect, vis_Group *group, vis_Connect *subconnect, vis_IdTran *idtrannode)
connect Pointer to Connect object. group Pointer to source Group object of elements. subconnect Pointer to subset Connect object. idtrannode Pointer to node IdTran object of parent node indices.
None
vis_ConnectTess - tesselate a collection of lines
void vis_ConnectTess (vis_Connect *connect, vis_Connect *input)
connect Pointer to resulting Connect object. input Pointer to input Connect object
None
None
vis_ConnectWrite - write model to simple file formats
void vis_ConnectWrite (vis_Connect *connect, Vint type, const Vchar *path)
connect Pointer to Connect object. type File type =SYS_ASCII ASCII format =SYS_BINARY Binary format =SYS_ABAQUS_INPUT Write to ABAQUS input file =SYS_ANSYS_INPUT Write to ANSYS input file =SYS_LSTC_INPUT Write to LS-DYNA input file =SYS_NASTRAN_BULKDATA Write to NASTRAN Bulk Data file =SYS_PATRAN_NEUTRAL Write to Patran Neutral file =SYS_SDRC_UNIVERSAL Write to SDRC Universal file path File path
None
There are a number of additional file formats which are supported, please contact Visual Kinematics, Inc. for details.
*vis_GridFunBegin - create an instance of a GridFun object vis_GridFunEnd - destroy an instance of a GridFun object vis_GridFunError - return GridFun object error flag vis_GridFunCopy - make a copy of a GridFun object
vis_GridFunSet - set function pointers Get - get function pointers vis_GridFunSetObj - set auxiliary object GetObj - get auxiliary object
*vis_GridFunBegin - create an instance of a GridFun object
vis_GridFun *vis_GridFunBegin ()
None
Destroy an instance of a GridFun object using
void vis_GridFunEnd (vis_GridFun *gridfun)
Return the current value of a GridFun object error flag using
Vint vis_GridFunError (vis_GridFun *gridfun)
Make a copy of a GridFun object. The private data from the fromgridfun object is copied to the gridfun object. Any previous private data in gridfun is lost.
void vis_GridFunCopy (vis_GridFun *gridfun, vis_GridFun *fromgridfun)
vis_GridFunSet - set pointer to grid function
void vis_GridFunSet (vis_GridFun *gridfun, Vint type, void (*function)())
gridfun Pointer to GridFun object. type Function type being set =GRIDFUN_COORDS Set Coords function =GRIDFUN_COORDSDV Set Coordsdv function =GRIDFUN_ELEMADJ Set ElemAdj function =GRIDFUN_ELEMASSOC Set ElemAssoc function =GRIDFUN_ELEMCON Set ElemCon function =GRIDFUN_ELEMCNN Set ElemCnn function =GRIDFUN_ELEMCORN Set ElemCorn function =GRIDFUN_ELEMNODE Set ElemNode function =GRIDFUN_ELEMNUM Set ElemNum function =GRIDFUN_ELEMTOPO Set ElemTopo function =GRIDFUN_EXTENT Set Extent function =GRIDFUN_ITHPARTNAME Set IthPartName function =GRIDFUN_MAXELEMNODE Set MaxElemNode function =GRIDFUN_MAXNODELEM Set MaxNodeElem function =GRIDFUN_NODEADJ Set NodeAdj function =GRIDFUN_NODEASSOC Set NodeAssoc function =GRIDFUN_NODEELEM Set NodeElem function =GRIDFUN_NUMBER Set Number function =GRIDFUN_NUMELEMNODE Set NumElemNode function =GRIDFUN_NUMNODEELEM Set NumNodeElem function =GRIDFUN_NUMPARTNAME Set NumPartName function =GRIDFUN_PARTNAME Set PartName function =GRIDFUN_TOPOLOGY Set Topology function function Pointer to grid function
None
Get function as an output argument using
void vis_GridFunGet (vis_GridFun *gridfun, Vint type, void (**function)())
vis_GridFunSetObj - set pointer to auxiliary object
void vis_GridFunSetObj (vis_GridFun *gridfun, Vobject *obj)
gridfun Pointer to GridFun object. obj Pointer to auxiliary object
None
Get obj as an output argument using
void vis_GridFunGetObj (vis_GridFun *gridfun, Vobject **obj)