
Last revised on August 6 2003.
Contents:
The topological information characterizing structured meshes of one or more blocks is written in a file named topo_mulcad_out. This file contains information such as the number of blocks in the model, the block size, the block-to-block connectivity, etc.
The topology library topolib.a contains routines to access the information present in the topology file. To use these routines, application codes must be linked to the topology library located in the directory /$ICEM_ACN/icemcfd/output-interfaces/lib..
This chapter describes the functions of the topology library. Unless otherwise specified, the return code ier is equal to zero when the function is executed successfully. Most functions are available for both the FORTRAN and C programming interface.
| C | ier = tp_open(filename); |
| FORTRAN | call topopen(filename, len, iunit, ier) |
| filename | char | filename of topology file |
| len | int | length of string filename |
| iunit | int | FORTRAN unit number |
| ier | int | return code |
| C | tp_close(); |
| FORTRAN | call topclse(iunit) |
| iunit | int | FORTRAN unit number |
| C | ier = tp_read(); |
| FORTRAN | call topreas(iunit, ier) |
| iunit | int | FORTRAN unit number |
| ier | int | return code |
| C | ier = tp_init(filename); |
| FORTRAN | call topinit(filename, len, ier) |
| filename | char | filename of topology file |
| len | int | length of string filename |
| ier | int | return code |
Number of entities of each topological type
Use the functions listed in the following table to request the number of entities of each topological type.
| Number of domains, ndom | ndom = tp_ndom(); | ndom = gtndom() |
| Number of faces, nfac | nfac = tp_nfac(); | nfac = gtnfac() |
| Number of subfaces,nsfac | nsfac = tp_nsfac(); | nsfac = gtnsfac() |
| Number of edge entities, nar | nar = tp_nar(); | nar = gtnar() |
| Number of vertices, nvert | nvert = tp_nvert(); | nvert = gtvtx() |
| Number of free subfaces, nfsf | nfsf = tp_nfsf(); | nfsf = gtnfsf() |
| C | type_deg = tp_domain_type(domain); |
| FORTRAN | type_deg = nytpdeg (domain) |
| domain | int | domain number |
| type_deg | int | type of domain degeneration |
This function returns the type of degenerated domain, type_deg.
The types of domain degeneration are:
Range of a structured domain, imin(3), imax(3):
| C | ier = tp_domain_range(domain, imin, imax); |
| FORTRAN | call dmrange(domain,imin, imax, ier) |
| domain | int | domain number |
| imin(3) | int | minimum i, j, k indices |
| imax(3) | int | maximum i, j, k indices |
| ier | int | return code |
Edge entities of a structured domain, edgees:
| C | nedgee = tp_edges_of_domain(domain, edgees); |
| FORTRAN | call edgofdm(domain,nedgee, edgees, ier) |
| domain | int | domain number |
| edgee | int | number of edge entities in domain |
| edgees | int | list of edge entities |
| ier | int | return code |
Vertices of a structured domain, vertices:
| C | ier = tp_vertex_of_domain(domain, vertices); |
| FORTRAN | call vtofdm(domain, vertices, ier) |
| domain | int | domain number |
| vertices | int | list of vertice numbers |
| ier | int | return code |
(1, 1, 1), (NI, 1, 1), (1, NJ, 1), (NI, NJ, 1), (1, 1, NK), (NI, 1, NK), (1, NJ, NK), (NI, NJ, NK)
Global face number face_no of a domain face:
| C | face_no = tp_dom(domain, face); |
| FORTRAN | face_no = gtdom(domain, face) |
| domain | int | domain number |
| face | int | face index, 1 <= face <= 6 |
| face_no | int | 1<= face_no <=ndom*6 |
Coordinate type for a face of a domain,tcor:
| C | ier = tp_face_side(domain, face, tcor); |
| FORTRAN | call gtfside(domain, face, tcor, ier) |
| domain | int | domain number |
| face | int | face index, 1<=face<=6 |
| tcor | int | -1=IMIN, -2=JMIN, -3=KMIN, +1=IMAX, +2=JMAX, +3KMAX |
| ier | int | return code |
Coordinate type for a face of a domain,tcor. This function is similar to tp_face_side except that it does not return the error code.
| C | tcor = tp_tcor(face, domain); |
| FORTRAN | tcor = ntcor(face, domain) |
| domain | int | domain number |
| face | int | face index, 1 <= face <= 6 |
| face_no | int | -1=IMIN, -2=JMIN, -3=KMIN, +1=IMAX, +2=JMAX, +3=KMAX |
Range of a face of a structured domain,imin(3), imax(3):
| C | ier = tp_f_domain_face_range(domain, face_type, imin, imax); |
| FORTRAN | call gtfside(domain, face_type, imin, imax, ier) |
| domain | int | domain number |
| face_type | int | 1<= face_type<=6 for IMIN to IMAX |
| imin(3) | int | minimum i, j, k indices |
| imax(3) | int | maximum i, j, k indices |
| ier | int | return code |
List of subfaces composing the face of coordinate type face_type, within a domain:
| C | nsub = tp_subface_of_face(domain, face_type, subfaces); |
| FORTRAN | call sfoface(domain, face_type, nsub, subfaces, ier) |
| domain | int | domain number |
| face_type | int | 1<= face_type<=6 for IMIN to IMAX |
| nsub | int | number of subfaces on face |
| subfaces(*) | int | array of subfaces |
| ier | int | return code |
input: integer domain domain number integer face_type 1<=face_type<=6, for face IMIN to KMAX output: integer nsub number of subfaces on face integer subfaces(*) array of subfaces integer ier return code
Dimension of a subface, dimension(2):
| C | ier = tp_subface_dimension(subface, dimension); |
| FORTRAN | call gtsfacd(subface, dimension, ier) |
| subface | int | subface number |
| dimension(2) | int | dimension of a subface |
| ier | int | return code |
Range of a subface within a structured domain, imin(3), imax(3):
| C | ier = tp_subface_range(domain, subface, imin, imax); |
| FORTRAN | call gtsreg(domain, subface, imin, imax, ier) |
| domain | int | domain number |
| subface | int | subface number |
| imin(3) | int | minimum i, j, k indices |
| imax(3) | int | maximum i, j, k indices |
| ier | int | return code |
Region of a subface within a structured domain, first(3), last(3):
| C | ier = tp_subface_points(domain, subface, first, last); |
| FORTRAN | call sregion(domain, subface, first, last, ier) |
| domain | int | domain number |
| subface | int | subface number |
| first(3) | int | i, j, k coordinates of first point |
| last(3) | int | i, j, k coordinates of last point |
| ier | int | return code |
According to the orientation definition, it is not necessary that ifirst(n)<=ilast(n).
Three points of a subface within a structured domain, p1(3), p2(3), p3(3):
The three points are transformed from the local subface coordinates (1,1), (m,1), (1,n), where m*n is the dimension of the subface.
| C | ier = tp_subface_3_points(domain, subface, p1, p2, p3); |
| FORTRAN | call sfspann(domain, subface, p1, p2, p3, ier) |
| domain | int | domain number |
| subface | int | subface number |
| p1(3) | int | i, j, k coordinates of first point |
| p2(3) | int | i, j, k coordinates of second point |
| p3(3) | int | i, j, k coordinates of third point |
| ier | int | return code |
The three points are transformed from the local subface coordinates (1,1), (m,1), (1,n), where m*n is the dimension of the subface. The first and last points of the subface may be found from these 3 points:
first = p1 last = p1 + (p2-p1) + (p3-p1)
Node dimension vector ndim of a subface within a domain:
| C | ier = tp_gsfdims(domain, subface, ndim[3][3]); |
| FORTRAN | call gsfdims(domain, subface, ndim, ier) |
| domain | int | domain number |
| subface | int | subface number |
| ndim(3,3) | int | ndim (dir, 1) index of 1st node in direction dir: 1<=dir<=3 ndim (dir, 2) number of points in direction dir: 1<=dir<=3 ndim(dir, 3) coordinates type for direction dir: -1, 1 means direction -i, i -2, 2 means direction -j, j -3, 3 means direction -k, k |
| ier | int | return code |
Cell dimension vector cdim of a subface within a domain:
| C | ier = tp_gcldims(domain, subface, cdim[3][3]); |
| FORTRAN | call gcldims(domain, subface, cdim, ier) |
| domain | int | domain number |
| subface | int | subface number |
| cdim(3,3) | int | cdim (dir, 1) index of 1st cell in direction dir: 1<=dir<=3 cdim (dir, 2) number of cells in direction dir: 1<=dir<=3 cdim(dir, 3) coordinate type for direction dir: -1, 1 means direction -i, i -2, 2 means direction -j, j -3, 3 means direction -k, k |
| ier | int | return code |
List of edge entities composing an edge of a subface:
| C | ier = tp_edge_of_subface(subface, edge, nedgee, edgees); |
| FORTRAN | call edgofsf(subface, edge, nedgee, edgees, ier) |
| subface | int | subface number |
| edge | int | edge of subface (1<=edge<=4) |
| nedgee | int | number of edge entities |
| edgees | int | array of edge entities |
| ier | int | return code |
The sign of the edge entity numbers in the list determine the flow direction of the edge entities within the edges. The convention for edge numbering and directions are shown below.
(... Figure missing... )
Coordinate type of a subface within a domain:
| C | ier = tp_subface_side(domain, subface, tcor); |
| FORTRAN | call gtside(domain, subface, tcor, ier) |
| domain | int | domain number |
| subface | int | subface number |
| tcor | int | coordinates type -1=IMIN, -2=JMIN, -3=KMIN +1=IMAX, +2=JMAX, +3=KMAX |
| ier | int | return code |
__________________________
Coordinate type name for a subface of a domain:
| C | ier = tp_face_name(domain, subface, coorname); |
| FORTRAN | call gtside(domain, subface, coorname, ier) |
| domain | int | domain number |
| subface | int | subface number |
| coorname | char*4 | coordinate type name: IMIN, IMAX, JMIN, JMAX, KMIN, KMAX |
| ier | int | return code |
List of domain(s) sharing a subface:
| C | ier = tp_domains_of_subface(subface, ndom, domains); |
| FORTRAN | call gtdomnr(subface, ndom, domains, ier) |
| subface | int | subface number |
| ndom | int | number of domains sharing the subface (1 means wall, 2 means block interface) |
| domains(2) | int | list of domain numbers |
| ier | int | return code |
Boundary condition code of a subface, bc_code:
| C | ier = tp_subface_bc_code(subface, bc_code); |
| FORTRAN | call gtsfcode(subface, bc_code, ier) |
| subface | int | domain number |
| bc_code | int | boundary condition code |
| ier | int | return code |
Name of an edge entity, entname:
| C | ier = tp_entity_name(edgee, entname); |
| FORTRAN | call entname(edgee, entname, ier) |
| edgee | int | edge entity number |
| entname | char* | edge entity name |
| ier | int | return code |
__________________________
Number of an edge entity, edgee:
| C | edgee = tp_entity_number(edgee, entname); |
| FORTRAN | call entnumber(entname, edgee) |
| entname | char* | edge entity name |
| edgee | int | edge entity number |
________________________
Range of an edge entity within a structured domain, imin(3), imax(3):
| C | ier = tp_edge_entity_range(domain, edgee, imin, imax); |
| FORTRAN | call edgrnge(domain, edgee, imin, imax, ier) |
| domain | int | domain number |
| edgee | int | edge entity number |
| imin(3) | int | minimum i, j, k indices |
| imax(3) | int | maximum i, j, k indices |
| ier | int | return code |
Region of an edge entity within a structured domain, ifirst(3), ilast(3):
| C | ier = tp_edge_points(domain, edgee, first, last); |
| FORTRAN | call edgpnts(domain, edgee, first, last, ier) |
| domain | int | domain number |
| edgee | int | edge entity number |
| first(3) | int | i, j, k coordinates of first point |
| last(3) | int | i, j, k coordinates of last point |
| ier | int | return code |
Dimension vector ndim of an edge entity within a domain:
| C | ier = tp_edgdims(domain, subface, edgee, ndim[3][3]); |
| FORTRAN | call edgdims(domain, subface, edgee, ndim, ier) |
| domain | int | domain number wherein lies the subface |
| subface | int | subface number wherein lies the edge entity |
| edgee | int | edge entity number |
| ndim(3)(3) | int | ndim (dir, 1): index of first node in direction dir, 1<=dir<=3 ndim (dir, 2): number of points in direction dir, 1<= dir<=3 ndim (dir, 3): coordinate type for direction dir: -1,1 means direction -i, i -2, 2 means direction -j, j -3, 3 means direction -k, k |
| ier | int | return code |
In C, the indices must be reversed, so the coordinate types are in ndim[2][dir], the indices of the 1st node in ndim[0][dir] and the number of points in ndim[1][dir]. Note that only the first direction is meaningful here since edge entities are one-dimensional.
Dimension vector ndim of an edge entity within a subface:
| C | ier = tp_edge_in_subface(subface, edgee, ndim[3][2]); |
| FORTRAN | call edginsf(subface, edgee, ndim, ier) |
| subface | int | subface number wherein lies the edge entity |
| edgee | int | edge entity number |
| ndim(2)(3) | int | ndim (dir, 1): index of first node in direction dir, 1<=dir<=2 ndim (dir, 2): number of points in direction dir, 1<= dir<=2 ndim (dir, 3): coordinate type for direction dir: -1,1 means direction -u, u -2, 2 means direction -v, v |
| ier | int | return code |
( figure missing ... )
Vertices of an edge entity, vertex:
| C | ier = tp_vertex(edgee, vertex[2]); |
| FORTRAN | call vertex(edgee, vertex, ier) |
| edgee | int | edge entity number |
| vertex(2) | int | vertices of an edge entity |
| ier | int | return code |
Start or end vertex of an edge entity, vertex:
| C | vertex = tp_get_vertex(index, edgee); |
| FORTRAN | vertex = gtvertx(index, edgee) |
| index | int | 1 for start, 2 for end |
| edgee | int | edge entity number |
| vertex | int | start or end vertex |
| ier | int | return code |
List of subfaces sharing an edge entity, subfaces:
| C | nsub = tp_subface_of_edge(edgee, subfaces); |
| FORTRAN | call sfofed(edgee, nsub, subfaces, ier) |
| edgee | int | edge entity number |
| nsub | int | number of subfaces |
| subfaces | int | array of subfaces sharing edgee |
| ier | int | return code |
List of domains sharing an edge entity, domains:
| C | ndom = tp_domains_of_edge(edgee, domains); |
| FORTRAN | not available |
| edgee | int | edge entity number |
| domains | int | array of domains sharing edgee |
Coordinates i,j,k, of a vertex in a domain,ijk(3):
| C | ier = tp_vertex_pnt(domain, vertex, ijk); |
| FORTRAN | call vtxpnt(domain, vertex, ijk, ier) |
| domain | int | domain number |
| vertex | int | vertex number |
| ijk(3) | int | coordinates i, j, k of vertex no. vertex |
| ier | int | return code: -1: error code -2: not a vertex of the domain |
Description of a vertex within and edge entity, ndim(2):
| C | ier = tp_vertex_in_edge(domain, vertex, ndim); |
| FORTRAN | call vtxined(domain, vertex, ndim, ier) |
| domain | int | domain number |
| vertex | int | vertex number |
| ndim(2) | int | ndim(0): index of first node ndim(1): coordinate type: -1,1 means direction -s, s |
| ier | int | return code |
Global (not merged) node number of a node in a certain domain, nod_posit:
| C | nod_posit = tp_node_position(domain,i,j,k); |
| FORTRAN | nod_posit = ndposit(domain,i,j,k) |
| domain | int | domain number |
| i, j, k | int | indices of the node |
| nod_posit | int | 1<=nod_posit<=nnodes in_model |
Number of loops, nloop:
| C | nloop = tp_nloop(); |
| FORTRAN | nloop = gtnloop() |
Number of prescribed curves, ncurve:
| C | ncurve = tp_npc(); |
| FORTRAN | ncurve = gtnpc() |
Number of prescribed points, npoint:
| C | npoint = tp_npp(); |
| FORTRAN | npoint = gtnpp() |
Number of edge entities for the outer loop of a free subface, nedgee:
| C | nedgee = tp_fsf_edge_numbers(free_subface); |
| FORTRAN | nedgee = gtneds(free_subface) |
| free_subface | int | free subface number |
Edge entity number for an edge of the outer loop of a free subface, edgee:
| C | edgee = tp_fsf_entl(free_subface, edge_index); |
| FORTRAN | edgee = gtentl(free_subface, edge_index) |
| free_subface | int | free subface number |
| edge_index | int | rank in list of edges |
Array of loop numbers for a free subface, loops:
| C | ier = tp_fsf_loop_numbes(free_subface, loops); |
| FORTRAN | call gtfsflo(free_subface, loops, ier) |
| free_subface | int | free subface number |
| loops(*) | int | array of loop numbers |
| ier | int | return code |
Free subfaces data:
| C | ier = tp_fsf_data(free_subface,info_no, data); |
| FORTRAN | call gtfsfda(free_subface, info_no,data, ier) |
| free_subface | int | free subface number |
| info_no | int | 1<=info_no<=3 |
| data | int | information requested |
| ier | int | return code |
info_no data 1 number of loops in the free subface 2 number of prescribed curves in the free subface 3 number of prescribed points in the free subface
Array of loop status for a free subface, status:
| C | ier = tp_fsf_loop_status(free_subface,status); |
| FORTRAN | call gtfsfls(free_subface, status, ier) |
| free_subface | int | subface number |
| status(*) | int | status of all loops on the free subface |
| ier | int | return code |
Array of prescribed curve numbers for a free subface, curve:
| C | ier= tp_fsf_curve_numbers(free_subface,curve); |
| FORTRAN | call gtfsfpc(free_subface, curve, ier) |
| free_subface | int | free subface number |
| curve(*) | int | array of prescribed curve numbers |
| ier | int | return code |
Array of prescribed point coordinates for a free subface, coord:
| C | ier= tp_fsf_point_data(free_subface,coord); |
| FORTRAN | call gtfsfpp(free_subface, coord, ier) |
| free_subface | int | free subface number |
| coord(*) | int | prescribed point's 3D coordinates |
| ier | int | return code |
Number of shared subfaces (block interfaces) in the entire mesh:
| C | nshared = tp_n_shared_sf(); |
| FORTRAN | not available |
| nshared | int | number of shared subfaces |
List of shared subfaces (block interfaces) in the entire mesh:
| C | ier= tp_shared_sf(subfaces); |
| FORTRAN | call blintsf(nshared, subfaces, ier) |
| nshared | int | number of shared subfaces |
| subfaces(*) | int | array of shared subfaces |
| ier | int | return code |
Number of subface(s) of a domain shared with other domain(s), nadsub:
| C | nadsub= tp_ndomad(domain,ier); |
| FORTRAN | nadsub = gndomad(domain, ier) |
| domain | int | domain number |
| ier | int | return code |
Number of edge entity(ies) of a domain shared with other domain(s), nedge:
| C | nedgee= tp_nsubad(domain,ier); |
| FORTRAN | nedgee = gnsubad(domain, ier) |
| domain | int | domain number |
| ier | int | return code |
Sum of subface(s) and edge entity(ies) of a domain shared with other domain(s), ndomad:
| C | ndomad= tp_ndom_nsub_ad(domain); |
| FORTRAN | ndomad = ndomad(domain, ier) |
| domain | int | domain number |
| ier | int | return code |
Face and subface numbers of block interfaces of a given domain, domface, subface: The arrays are allocated to nadsub, the number of interfaces for this domain. The value of nadsub is found using the function tp_ndomad.
| C | ier = tp_gsdomad(domain, face, subface); |
| FORTRAN | call gsdomad(domain,nadsub,face,subface,ier) |
| domain | int | domain number |
| nadsub | int | number of shared subfaces |
| face(nadsub) | int | array of face index [1,6] in domain |
| subface(nadsub) | int | array of subface numbers |
| ier | int | return code |
One-to-one face connectivity of a domain: All arrays are allocated to nadsub, the number of interfaces for this domain. The value of nadsub is found using function tp_ndomad.
| C | ier = tp_domad(domain, dimension, face, adj_domain, adj_face, subface); |
| FORTRAN | call gdomad(domain, nadsub, face, subface, adj_domain, adj_face, ier) |
| domain | int | domain number |
| dummy | int | unused parameter |
| dimension | int | dimension of connecting objects (=3) |
| face(nadsub) | int | face of domain wherein lies subface |
| subface(nadsub) | int | list of shared subfaces |
| adj_domain(nadsub) | int | adjacent domains |
| adj_face(nadsub) | int | face of adj_domain wherein lies subface |
| ier | int | return code |
Connectivity information, domad_record(5): For each domain the connectivity information is stored in the array domad(5,ndomad), where ndomad is the return value of the function tp_ndom_nsub_ad(domain). The following function returns the connectivity information for one interface of a domain:
| C | ier=tp_domad_record(domain,irec,domad_record); |
| FORTRAN | call domadv(domain, irec, domad_record, ier) |
| domain | int | domain number |
| irec | int | record index, 1<=irec<=ndomad |
| domad_record(5) | int | connectivity information |
| ier | int | return code |
The meaning of domad_record(5) is different for face connectivity and edge connectivity:
Face Edge |
||
One-to-one edge entity connectivity of a domain: All arrays are allocated to nedgee, the number of shared edge entities for this domain. The value of nedgee is found using function tp_nsubad.
| C | ier=tp_domad(domain,dimension,subface,adj_domain,adj_subface,edgee); |
| FORTRAN | call gsubfad(domain, dummy, subface, adj_domain, adj_subface, edgee, ier) |
| domain | int | domain number |
| dummy | int | unused parameter |
| dimension | int | dimension of connecting objects (=2) |
| subface(nadsub) | int | subfaces of domain wherein lies edgee |
| adj_domain(nadsub) | int | adjacent domains |
| adj_subface(nadsub) | int | subface of adj_domain wherein lies subface |
| edgee(nedgee) | int | shared edge entities |
| ier | int | return code |
Global coordinates of a 3D domain within a 3D superdomain:
| C | ier=tp_global_coord(domain,global_coord,dimension); |
| FORTRAN | call gloco(domain, global_coord, ier) |
| domain | int | domain number |
| dimension | int | domain dimension (=3) |
| global_coord(3) | int | i, j, k coordinates of first domain point |
| ier | int | return code |
Global coordinates of a 2D domain within a 2D superdomain:
| C | ier=tp_global_coord(domain,global_coord,dimension); |
| FORTRAN | call gloco2d(domain, global_coord, ier) |
| domain | int | domain number |
| dimension | int | domain dimension (=2) |
| global_coord(3) | int | i, j, k coordinates of first domain point |
| ier | int | return code |
Number of edge entities in the linear domain, nedgee:
| C | nedgee=tp_nedge_of_lin_domain(domain); |
| FORTRAN | not available |
| domain | int | domain number |
List of edge entities in the linear domain, edgees:
| C | nedgee=tp_nedge_of_lin_domain(domain, edgees); |
| FORTRAN | call edofldm(domain,nedgee, edgees, ier) |
| domain | int | domain number |
| edgee | int | number of edge entities |
| edgees(*) | int | list of edge entities |
| ier | int | return code |
List of edge entities in the linear domain, vertices:
| C | ier=tp_vtx_of_lin_domain(domain, vertices); |
| FORTRAN | call edofldm(domain, vertices, ier) |
| domain | int | domain number |
| vertices(*) | int | list of vertices |
| ier | int | return code |
Update the topology information (in memory) to be consistent with a quadratic mesh:
| C | (void) tp_quad_elements(); |
| FORTRAN | call topquad() |
C: (void)tp_quad_elements();
FORTRAN: call topquad()
The topology file is always written for a linear mesh even if the mesh is saved with the option "quadratic". For a linear structured mesh of NI*NJ*NK nodes, the corresponding quadratic mesh has (2*NI -1) * (2*NJ -1) * (2*NK -1) nodes. However, the distinction between linear and quadratic is not included in the topology file. As a result, functions such as tp_domain_rangereturn the size of the linear grid, even if the mesh is quadratic.
This problem is easily corrected by callingtp_quad_elements, immediately after reading the topology file ( tp_read). The function tp_quad_elementsupdates the topology information (the in-memory copy) to reflect the higher order elements. If the function tp_domain_range is called after updating the topology, the correct range of (2*NI-1), (2*NJ-1), (2*NK-1) will be found.
When the topology library detects an error, it records the error message and returns an error code in the form of an integer smaller than zero. Only the last detected error message is recorded. To obtain the error message, the C function tp_error_print()may be called. It prints the error message to the standard output (stdout). Similarly, the functiontp_error_exit() prints the error message to the standard output and exit the program.
The error handling in the fortran interface is a bit different than for the C interface. In the Fortran interface the topology library returns and error code integer smaller than zero, and automatically prints the error message to the standard output.
Group number of a topological entity, group_number:
| C | ier=tp_entity_group(entity_type,entity_number,group_number); |
| FORTRAN | call gtentgr(entity_type, entity_number, group_number, ier) |
| entity_type | int | domain=1, subface=2, edge ent.=3 |
| entity_number | int | domain subface or edge ent. number |
| group_number | int | group number |
| ier | int | return code |
List of twin edge entities of an edge,edge_twins: The twin edge entities are defined as edge entities having the same entity name and the same geometry, but different edge entity number and possibly different number of nodes. Twin edges belong to different entity groups.
| C | ier=tp_twin_edges(edgee, ntwin, edge_twins); |
| FORTRAN | call gttwedg(edgee, ntwin, edge_twins, ier) |
| edgee | int | edge entity number |
| ntwin | int | number of twin edges of edgee |
| edge_twins | int | list of twin edges of edgee |
| ier | int | return code |
List of twin subfaces of a subface, sf_twins: The twin subfaces are defined as subfaces with the same geometrical edges but belonging to different entity groups. Twin subfaces have the same intrinsic orientation.
| C | ier=tp_twin _subfaces(subface,ntwin,sf_twins); |
| FORTRAN | call gtttwsf(subface, ntwin, sf_twins, ier) |
| subface | int | subface number |
| ntwin | int | number of twin subfaces of subface |
| sf_twins | int | list of twin subfaces of subface |
| ier | int | return code |
Number of periodic pairs of a topological entity type, npair:
| C | npair=tp_n_periodic_pair(entity_type); |
| FORTRAN | call gtnpair(entity_type, npair, ier) |
| entity_type | int | subface=2, edge ent.=3, vertex=4 |
| npair | int | number of periodic pairs |
| ier | int | return code |
Lists of periodic data of a topological entity type, list1, list2:
| C | ier=tp_periodic_data(entity_type, npair, list1, list2); |
| FORTRAN | call gtperdt(entity_type, npair, list1, list2, ier) |
| entity_type | int | subface=2, edge ent.=3, vertex=4 |
| npair | int | number of periodic pairs |
| list1(*) | int | list of entities |
| list2(*) | int | list of periodic twins of list1 |
| ier | int | return code |