ANSYS ICEM CFD™ Domain (Native Mesh Node and Element Data) Library Description
Last revised on Jan 20 2000.
Contents:
Introduction
This section describes a software interface for creating, modifying, and reading files containing mesh node and element data. Each file is called a domain file. Each domain file contains information describing nodes (locations) and elements (volumes, shells or trusses). Additionally, each file contains one or more subdomains. A domain is a zero, one, two, or three dimensional collection of nodes or elements. Note that all coordinate values are written in double precision. Each domain is identified within the file by a domain name which is a character string of arbitrary length. It should not be necessary for a developer writing a mesh generator or an output processor to know the internal layout of the data within the domain file. All information within the domain files should be accessed via a set of routines known as the domain file library. This document described the different functions of the domain library.
The domain library domainlib.a is located in the directory : $ICEM_ACN/icemcfd/output-interfaces/lib. It contains interface routines for C and FORTRAN interfaces. To use these routines, the user must include the header file domain.h in C or C++ routines, or fdom.h in Fortran routines. These include files are located in the directory $ICEM_ACN/icemcfd/output-interfaces/include.
Error Handling
| C |
error_message = char *df_error() |
| FORTRAN |
call dfgterr(error_message), call domexit() |
When the domain 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 df_error() may be called. The return value of the function is a pointer to a string describing the error.
The error handling in the fortran interface is a bit different than for the C interface. In the Fortran interface, each function holds an additional argument, ier, which contain the error code (integer). Errors are indicated with ier set to -1 except where otherwise noted. The Fortran function dfgterr(error_message) returns a message describing the error, while domexit() prints the error message to the standard output and exits the program.
Open and Close a Domain File
Open a Domain File
| C |
int file_no = df_open(char *filename, int mode, int type) |
| FORTRAN |
call dfopen(filename, len, mode, type, file_no) |
| filename |
char |
domain file name |
| len |
int |
length of domain file name |
| mode |
int |
opening mode where:
MODE_READ = 0
MODE_WRITE = 1
MODE_MODIFY = 2 |
type/
type |
int |
domain type where:
GLOBAL_DOMAIN = 0
STRUCTURED_DOMAIN =1
UNSTRUCTURED_DOMAIN=2 |
| file_no |
int |
file index identifier |
This function opens a domain file with one of the modes and returns an integer which is used to identify the file to the domain file library in subsequent calls. If the mode is MODE_WRITE the argument type is used to set the type of the grid in the file.
Close a Domain File
| C |
ier = int df_close(int file_no) |
| FORTRAN |
call dfclose(file_no, ier) |
| file_no |
int |
file index identifier |
| ier |
int |
error code |
This function flushes all buffers maintained by the domain file library associated with the domain file and closes the file. When the domain file is opened in reading mode, this function creates the domain file on disk prior to releasing the memory. If omitted, the domain file is not written.
General Functions
| C |
ier = int df_type(int file_no, int *type) |
| FORTRAN |
call dftype(file_no, type, ier) |
| file_no |
int |
file index identifier |
| type |
int |
domain type where:
GLOBAL_DOMAIN = 0
STRUCTURED_DOMAIN = 1
UNSTRUCTURED_DOMAIN = 2 |
| ier |
int |
error code |
This function returns the type of domain contained in the domain file
| C |
ier = int df_date(int file_no, int *mod_date) |
| FORTRAN |
call dfdate(file_no, mod_date, ier) |
| file_no |
int |
file index identifier |
| mod_date |
int |
modification date |
| ier |
int |
error code |
This function returns the modification date in the variable mod_date. The modification date is given in seconds since 00:00:00 GMT, January 1, 1970 (Standard manner of representing time in the UNIX world).
| C |
ier = int df_coordinate_system(int file_no, int *) |
| FORTRAN |
call dfcosys(file_no, c_system, ier) |
| file_no |
int |
file index identifier |
| c_system |
int |
coordinate system where:
CARTESIAN_SYSTEM = 0
CYLINDRICAL_SYSTEM = 1
SPHERICAL_SYSTEM = 2 |
| ier |
int |
error code |
This function returns the coordinate system in the variable c_system.
| C |
ier = int df_n_domain(intfile_no, int *) |
| FORTRAN |
call dfndom(file_no, n_domain, ier) |
| file_no |
int |
file index identifier |
| n_domain |
int |
number of subdomains |
| ier |
int |
error code |
This function returns the number of subdomains in the domain file.
| C |
ier = int df_get_domain(int file_no, char *subdom_name,
int *subdom_no) |
| FORTRAN |
call dfgtdom(file_no, subdom_name,subdom_no, ier) |
| file_no |
int |
file index identifier |
| subdom_name |
char |
name of a subdomain |
| subdom_no |
int |
subdomain's number |
| ier |
int |
error code |
This function determines whether the subdomain specified by subdom_name exists in the specified file. If so, it sets subdomain to a value which may be used to make further inquiries about the domain.
| C |
ier = int df_domain_name(int file_no, int subdom_no,
char **subdom_name) |
| FORTRAN |
call dfdname(file_no, subdom_no,subdom_name, ier) |
| file_no |
int |
file index identifier |
| subdom_no |
int |
subdomain's number |
| subdom_name |
char |
subdomain's name |
| ier |
int |
error code |
This function returns the name of the subdomain specified by file_no and subdom_no.
Functions Specific to Structured Domain Files
| C |
ier = int df_add_primary_domain(int file_no,
char *subdom_name, int imin[3], int imax[3]) |
| FORTRAN |
call dfaprid(file_no, subdom_name, imin, imax, ier) |
| file_no |
int |
file index identifier |
| subdom_name |
int |
subdomain's name |
| imin(3), imax(3) |
char |
node range of subdomain |
| ier |
int |
error code |
This function must be called before writing any nodes to a structured domain file. It defines the primary domain and the range of the nodes in the file.
| C |
ier = int df_add_secondary_domain(int file_no,
char *subdom_name, int imin[3], int imax[3]) |
| FORTRAN |
call dfasecd(file_no, subdom_name, imin, imax, ier) |
| file_no |
int |
file index identifier |
| subdom_name |
int |
subdomain's name |
| imin(3), imax(3) |
char |
node range of subdomain |
| ier |
int |
error code |
This function defines a secondary domain within a file such as a face.
| C |
ier = int DF_Add_Secondary_Domain(int file_no,
char *subdom_name, int imin[3], int imax[3], int pid) |
| FORTRAN |
(not supported) |
| file_no |
int |
file index identifier |
| subdom_name |
int |
subdomain's name |
| imin(3), imax(3) |
int[] |
node range of subdomain |
| pid |
int |
property ID |
| ier |
int |
error code |
This function defines also a secondary domain , with the given property ID.
| C |
ier = int df_struct_write_nodes(int file_no, int npnts,
double *pnt) |
| FORTRAN |
call dfswrn(file_no, npnts, pnts,ier) |
| file_no |
int |
file index identifier |
| npnts |
int |
number of nodes |
| pnt |
double[] |
coordinate array |
| ier |
int |
error code |
This function writes the nodes into the structured domain file. Using this interface, all property IDs are set to 1. Nodes must be written to the file in the order :
(imin[0], imin[1], imin[2])
(imin[0]+1, imin[1], imin[2]), ...
(imax[0], imin[1], imin[2]),
(imin[0], imin[1]+1, imin[2]), ...
(imax[0], imax[1], imax[2])
| C |
ier = int DF_Struct_Write_Nodes(int file_no, int npnts,
double *pnt, int *ext_no) |
| FORTRAN |
(not available) |
| file_no |
int |
file index identifier |
| npnts |
int |
number of nodes |
| pnt |
double[] |
node coordinates array |
| ext_no |
int[] |
array of node external numbers |
| ier |
int |
error code |
Writes the nodes into the structured domain file. Using this interface, each node's external number is set according to the value given in array ext_no. The nodes must be written to the file in the same order as for the function df_struct_write_nodes.
| C |
ier = int df_struct_domain_range(int file_no, int subdom_no,
int imin[3], int imax[3]) |
| FORTRAN |
call dfsdorg(file_no, subdom_no, imin, imax, ier) |
| file_no |
int |
file index identifier |
| subdom_no |
int |
subdomain's number |
| imin(3), imax(3) |
int[] |
node range of subdomain |
| ier |
int |
error code |
This function returns the range of the nodes in a particular subdomain. Using subdomain number 0, it returns the dimension of the block (primary domain).
| C |
ier = int df_struct_read_nodes(int file_no, int subdom_no,
int imin[3], int imax[3], double *pnts) |
| FORTRAN |
call dfsrdn(file_no, subdom_no, imin, imax, pnts, ier) |
| file_no |
int |
file index identifier |
| subdom_no |
int |
subdomain's number |
| imin(3), imax(3) |
int[] |
range of node to read |
| pnts |
double[] |
array of node coordinates |
| ier |
int |
error code |
This function reads all of the nodes (contiguously) within the prescribed range.
| C |
ier = int DF_Struct_Read_Nodes(int file_no, int subdom_no, int imin[3],
int imax[3], double *pnts, int *ext_no) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| subdom_no |
int |
subdomain's number |
| imin(3), imax(3) |
int[] |
range of node to read |
| pnts |
double[] |
array of node coordinates |
| ext_no |
int[] |
array of node external numbers |
| ier |
int |
error code |
This function reads all the nodes coordinates and property ids (contiguously) within the prescribed range.
| C |
ier = int df_struct_degree (int file_no, int *degree) |
| FORTRAN |
call dfstdeg(file_no, degree, ier) |
| file_no |
int |
file index identifier |
| degree |
int |
degree of structured domain |
| ier |
int |
error code |
This function reads the degree of the structured domain.
Unstructured Domain Files
Unstructured domain file content:
In an unstructured domain file, the nodes are numbered internally from 0 to n-1 where n is the number of nodes. Each node consists of three double precision coordinates and one external number. This external number may be any value. No checks are performed for external node number uniqueness.
The elements are numbered from n to n + m - 1 where m is the number of elements. An element consists of the element's external number, its property id and its node connectivity.
Consecutively numbered elements of the same type are called sections. Element types are defined in the files element.h (C) or felem.h (FORTRAN), which are both located in the directory /$ICEM_ACN/icemcfd/output-interfaces/include.
Example of an unstructured file:
(node definition)
| 0 |
xn(0) |
x(0) |
y(0) |
z(0) |
| 1 |
xn(1) |
x(1) |
y(1) |
z(1) |
| 2 |
xn(2) |
x(2) |
y(2) |
z(2) |
| ... |
|
|
|
|
| n-1 |
xn(n-1) |
x(n-1) |
y(n-1) |
z(n-1) |
(Section 1: m elements, each with k nodes)
| n |
pid(n) |
node(n,1) |
node(n,2) |
... |
node(n,k) |
| n+1 |
pid(n+1) |
node(n+1,1) |
node(n+1,2) |
... |
node(n+1,k) |
| n+2 |
pid(n+2) |
node(n+2,1) |
node(n+2,2) |
... |
node(n+2,k) |
| ... |
|
|
|
|
|
| n+m-1 |
pid(n+m-1) |
node(n+m-1,1) |
node(n+m-1,2) |
... |
node(n+m-1,k) |
(Section 2: p elements each with j nodes)
| n +m |
pid(n+m) |
node(n+m,1) |
node(n+m,2) |
... |
node(n+m,j) |
| n+m+1 |
pid(n+m+1) |
node(n+m+1,1) |
node(n+m+1,2) |
... |
node(n+m+1,j) |
| n+m+2 |
pid(n+m+2) |
node(n+m+2,1) |
node(n+m+2,2) |
... |
node(n+m+2,j) |
| ... |
|
|
|
|
|
| n+m+p-1 |
pid(n+m+p-1) |
node(n+m+p-1,1) |
node(n+m+p-1,2) |
... |
node(n+m+p-1,j) |
The variable pid is the property id of the element. If the unstructured domainfile is generated from a multi-block,structured domain file, the element pid contains the edge, subface or domain number, for bar, shell and volume elements respectively. For unstructured domain files based on family entities, the property id number contains the family number.
Unstructured element types:
The element types currently supported by ICEM CFD are:
| 0D |
NODE |
|
|
|
| 1D |
BAR_2 |
BAR_3 |
|
|
| 2D |
TRI_3 |
TRI_6 |
QUAD_4 |
QUAD_8, QUAD_9 |
| 3D |
TETRA_4 |
PYRA_5 |
PENTA_6 |
HEXA_8 |
|
TETRA_10 |
PYRA_14 |
PENTA_15, PENTA_18 |
HEXA_20 , HEXA_27 |
The node connectivity of these element types follows NASTRAN's conventions.
Topological entities:
These definitions are true only for unstructured grid create with the utility str->unstr. Topological entities (domains, subfaces, edges, and vertices) are represented in unstructured domain files as follows:
- Domains: Each domain is represented by the set of volume elements in a domain file with the property id equal to the domain number. Additionally, the elements are contiguous in the file and grouped together using df_add_unstruct_domain.
- Subfaces: Each subface is represented by the set of face elements in a domain file with the property id equal to the subface number. Additionally, the elements are contiguous in the file and grouped together using df_add_unstruct_domain.
- Free-subfaces: Each free subface is represented by the set of face elements in a domain file with the property id equal to the free subface number. In addition, the elements are contiguous in the file and grouped using df_add_unstruct_domain.
- Edges: Each edge is represented by the ordered set of nodes in the edge grouped together with df_add_unstruct_domain and df_add_domain_members. The name of the unstructured domain is the same as the edge name. If the elements are quadratic then end and middle nodes should both be included. The order set of nodes should be {end, middle, end, middle, .... , middle, end}.
- Vertices: Each vertex (i.e. a node with a boundary condition) is represented using df_add_unstruct_domain to create a subdomain with one member (one node).
Functions Specific to Unstructured Domain Files
| C |
ier = int df_unstruct_write_nodes(int file_no, int npnts,
double *pnt) |
| FORTRAN |
call dfuwrn(file_no, npnts, pnt,ier) |
| file_no |
int |
file index identifier |
| npnts |
int |
number of nodes |
| pnt |
double[] |
array of nodes coordinates |
| ier |
int |
error code |
This function write the node coordinates to an unstructured domain file. The nodes are numbered consecutively, starting with 0.
| C |
ier = int DF_Unstruct_Write_Nodes(int file_no, int npnts,
double *pnt, int ext_no) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| npnts |
int |
number of nodes |
| pnt |
double[] |
array of nodes coordinates |
| ext_no |
int[] |
array of nodes external numbers |
| ier |
int |
error code |
Write the node coordinates and external numbers to an unstructured domain file.
| C |
ier = int df_add_unstruct_domain(int file_no, char *subdom_name,
int ndim, int start, int end) |
| FORTRAN |
call dfaddud(file_no, subdom_name, ndim, start, end, ier) |
| file_no |
int |
file index identifier |
| subdom_name |
char[] |
name of subdomain |
| ndim |
int |
dimension of model (1,2 or 3) |
| start |
int |
start index |
| end |
int |
end index |
| ier |
int |
error code |
Add an unstructured subdomain to an unstructured domain file. It begins with the creation of a list of nodes or elements in a domain file. If start index <= end index, then the domain definition is completed with this call, otherwise df_add_members() must be called to create the explicit list of members (nodes or elements) of the domain.
| C |
ier = int df_add_domain_members(int file_no, int subdom_no,
int nmembers, int *members) |
| FORTRAN |
call dfadmb(file_no, subdom_no, nmembers, members, ier) |
| file_no |
int |
file index identifier |
| subdom_no |
int |
subdomain's number |
| nmembers |
int |
number of members |
| members |
int[] |
list of members |
| ier |
int |
error code |
This function add members to a subdomain in an unstructured domain file.
| C |
element_no = int df_write_elements(int file_no, int nelements,
int *data, int type) |
| FORTRAN |
call dfwrel(file_no, nelements, data, type, element_no) |
| file_no |
int |
file index identifier |
| nelements |
int |
number of elements |
| data |
int[] |
element array |
| type |
int |
element type |
| element_no |
int |
First element number. If error, element_no=-1 |
This function write elements to an unstructured domain file. The information in a array data containing n elements of m nodes is organized as follow:
| data[...]= |
pid(1), |
node(1,1), |
node(2,1),... |
node(m,1), |
|
pid(2), |
node(1,2), |
node(2,2),... |
node(m,2), |
| ... |
pid(n), |
node(1,n), |
node(2,n),... |
node(m,n) |
| C |
element_no = int DF_Write_Elements(int file_no, int nelements, int *data,
int numbered, int type) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| nelements |
int |
number of elements |
| data |
int[] |
element array |
| type |
int |
element type |
| numbered |
int |
flag to indicate that the elements are externally numbered |
| element_no |
int |
First element number. If error, element_no=-1 |
This function writes the elements to an unstructured domain file. If the flag numbered equals 0, then the data should be passed as for df_write_elements. Otherwise the data should be given as:
| data[...]= |
ext_no(1) |
pid(1), |
node(1,1), |
node(2,1),... |
node(m,1), |
|
ext_no(2) |
pid(2), |
node(1,2), |
node(2,2),... |
node(m,2), ... |
| ... |
ext_no(n) |
pid(n), |
node(1,n), |
node(2,n),... |
node(m,n) |
| C |
element_type = int df_read_elements(int file_no, int element_no,
int nelements, int *data) |
| FORTRAN |
call dfrdel(file_no, element_no, nelements,data, element_type) |
| file_no |
int |
file index identifier |
| element_no |
int |
starting element number |
| nelements |
int |
number of elements |
| data |
int[] |
array of elements |
| element_type |
int |
Element type. If error, element_type = -1 |
This function reads nelements consecutive elements, starting with element element_no, from an unstructured domain file. The information in the array data is as described in function df_write_elements.
| C |
element_type = int DF_Read_Elements(int file_no, int element_no, int nelements,
int *data, int numbered) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| element_no |
int |
starting element number |
| nelements |
int |
number of elements |
| data |
int[] |
array of elements |
| numbered |
int |
flag to request the element number |
| element_type |
int |
Element type. If error, element_type = -1 |
This function reads the elements from an unstructured domain file. If the flag numbered equals 0, then the data is passed as for df_read_elements. Otherwise the data is given described for function DF_Write_Elements.
| C |
ier = int df_unstruct_read_nodes(int file_no, int start,
int npnts, double *pnt) |
| FORTRAN |
call dfurdn(file_no, start, npnts,pnt, ier) |
| file_no |
int |
file index identifier |
| start |
int |
starting node number |
| npnts |
int |
number of nodes to read |
| pnt |
double[] |
array of node coordinates |
| ier |
int |
error code |
This function reads the nodes from an unstructured domain.
| C |
ier = int DF_Unstruct_Read_Nodes(int file_no, int start, int npnts,
double *pnt, int *ext_no) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| start |
int |
starting node number |
| npnts |
int |
number of nodes to read |
| pnt |
double[] |
array of nodes coordinates |
| ext_no |
int[] |
array of nodes external numbers |
| ier |
int |
error code |
This function reads the nodes coordinates and external numbers from an unstructured domain file.
| C |
ier = int df_domain_dimensions(int file_no, int subdom_no,
int *dimension) |
| FORTRAN |
call dfdodim(file_no, subdom_no, dimension, ier) |
| file_no |
int |
file index identifier |
| subdom_no |
int |
subdomain's number |
| dimension |
int |
dimension of subdomain |
| ier |
int |
error code |
This functions reads the dimension of a subdomain comprised in the unstructured domain file.
| C |
ier = int df_n_nodes(int file_no, int *nnodes) |
| FORTRAN |
call dfnnod(file_no, nnodes, ier) |
| file_no |
int |
file index identifier |
| nnodes |
int |
number of nodes |
| ier |
int |
error code |
This function returns the number of nodes in an unstructured domain file.
| C |
ier = int df_n_elements(int file_no, int *nelements) |
| FORTRAN |
call dfnelem(file_no, nelements, ier) |
| file_no |
int |
file index identifier |
| elements |
int |
number of elements |
| ier |
int |
error code |
This function returns the number of elements in an unstructured domain file.
| C |
ier = int df_n_sections(int file_no, int *nsections) |
| FORTRAN |
call dfnsect(file_no, nsections, ier) |
| file_no |
int |
file index identifier |
| nsections |
int |
number of elements sections |
| ier |
int |
error code |
This function returns the number of sections in an unstructured domain file.
| C |
ier = int df_section_info(int file_no, int section_no,
int *start, int *end, int *type) |
| FORTRAN |
call dfscinf(file_no, section_no,start, end, type, ier) |
| file_no |
int |
file index identifier |
| section_no |
int |
section number |
| start |
int |
index of first element |
| end |
int |
index of last element |
| type |
int |
element type |
| ier |
int |
error code |
This function returns the first and last element index and the type of elements of a section in the unstructured domain file.
| C |
ier = int df_domain_type(int file_no, int subdom_no,
int *type) |
| FORTRAN |
call dfdmtyp (file_no, subdom_no,type) |
| file_no |
int |
file index identifier |
| subdom_no |
int |
subdomain's number |
| type |
int |
subdomain's type:
RANGE_DOMAIN = 0
EXPLICIT DOMAIN = 1
REAL_RESULTS = 2
DOUBLE_RESULTS = 3
BY_PID = 4
STRING_DOMAIN = 5 |
| ier |
int |
error code |
The subdomain can be either described by a range or by a list of elements. In the C include file domain.h these types are defined by the key words: "RANGE_DOMAIN" (=0) and "EXPLICIT_DOMAIN" (=1) ,etc. In the FORTRAN include file "fdom.h", they are defined with the key words "dfrang" (=0) and "dfexpl" (=1).
| C |
ier = int df_get_range(int file_no, int subdom_no,
int *start, int *end) |
| FORTRAN |
call dfgtrg(file_no, subdom_no, start, end, ier) |
| file_no |
int |
file index identifier |
| subdom_no |
int |
subdomain's number |
| start |
int |
start index of a range domain |
| end |
int |
end index of a range domain |
| ier |
int |
error code |
This function returns the range (start and end index) of a subdomain type "RANGE" in the unstructured domain file.
| C |
ier = int df_n_members(int file_no, int subdom_no,
int nmembers) |
| FORTRAN |
call dfgtmb(file_no, subdom_no, nmembers, ier) |
| file_no |
int |
file index identifier |
| subdom_no |
int |
subdomain's number |
| nmembers |
int |
number of members (nodes or elements) |
| ier |
int |
error code |
This function returns the number of members in an subdomain type "EXPLICIT" of an unstructured domain file.
| C |
ier = int df_get_members(int file_no, int subdom_no, int start,
int nmembers, int *members) |
| FORTRAN |
call dfgtmb(file_no, subdom_no, start, nmembers,members, ier) |
| file_no |
int |
file index identifier |
| subdom_no |
int |
subdomain's number |
| start |
int |
index of first member requested |
| nmembers |
int |
number of members requested |
| members |
int[] |
list of members |
| ier |
int |
error code |
This function returns the members of a subdomain type "EXPLICIT" in unstructured domain file.
| C |
ier = int df_create_connectivity(int file_no) |
| FORTRAN |
call dfcrconn(file_no, ier) |
| file_no |
int |
file index identifier |
| ier |
int |
error code |
Although the domain files do not contain any connectivity information between elements, this information can be created and accessed by the domain library.
| C |
ier = int df_delete_connectivity(int file_no) |
| FORTRAN |
call dfdelconn(file_no, ier) |
| file_no |
int |
file index identifier |
| ier |
int |
error code |
The function df_delete_connectivity can be called to delete the connectivity information created by the function df_create_connectivity. This call has no effect on the domain file itself.
| C |
nneighbors = int df_neighbors(int file_no, int eltype, int max_ret,
int elnodes[], int neighbors[]) |
| FORTRAN |
call dfneigh (file_no, eltype, max_ret, elnodes, neighbors, nneighbors) |
| file_no |
int |
file index identifier |
| eltype |
int |
face type of the element given |
| max_ret |
int |
maximum no of neighbors to return |
| elnodes |
int[] |
nodes of the given element |
| neighbors |
int[] |
list of elements touching the given element |
| nneighbors |
int |
no of neighbors found for the given element |
| ier |
int |
error code |
This function finds the edge, face and volume elements containing a node; the face and volume elements containing an edge; and the volume elements containing a face. The face type can be any of the following: NODE, BAR_2, BAR_3, QUAD_4, QUAD_8, QUAD_9, TRI_3 and TRI_6. The element given need not be an element that exists in the domain file. Thus, the hexahedron neighbor of a known hexahedron can be found by giving the four nodes from the appropriate face. The function will return two elements, the known hexahedron plus the neighbor. The variable max_ret is the maximum number of elements that this routine will place in neighbors. The actual number will be the return value of the function. The function will return -1 if an error occurred. This function can only be used after creating the connectivity table (with df_create_connectivity).
| C |
npe = int df_nodes_per_element(int eltype) |
| FORTRAN |
call dfnpel (eltype, npe) |
| eltype |
int |
element type |
| npe |
int |
number of nodes in this element |
This function returns the number of nodes, or zero if an error occurred.
| C |
ier = int df_set_family_pid(int file_no, char *name, int pid) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| name |
char |
family name |
| pid |
int |
property ID |
| ier |
int |
error code |
This function adds a subdomain to a unstructured file and writes the family name and its corresponding PID. A subdomain
type = BY_PID is automatically added to the domain file previously open in MODE_WRITE or MODE_MODIFY.
| C |
ier = int df_get_family_pid(int file_no, char *name, int *pid) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| name |
char |
family name |
| pid |
int |
property ID |
| ier |
int |
error code |
Knowing the subdomain family name, this function returns the subdomain PID number. The subdomain
must be of type = BY_PID and the file must have been open in MODE_READ.
| C |
ier = int df_get_pid_family(int file_no, int pid, char **name) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| name |
char |
family name |
| pid |
int |
property ID |
| ier |
int |
error code |
Knowing the subdomain PID number, this function returns the subdomain family name. The subdomain
must be of type = BY_PID and the file must have been open in MODE_READ.
| C |
ier = int df_get_pid_of_domain(int file_no, int domain_no, int *pid) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| domain_no |
char |
domain number |
| pid |
int |
property ID |
| ier |
int |
error code |
Knowing the subdomain number, this function returns the subdomain PID number. The subdomain
must be of type = BY_PID and the file must have been open in MODE_READ.
| C |
ier = int df_add_string_domain(int file_no, char *name, char *string) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| name |
char |
name of the subdomain |
| string |
char |
string |
| ier |
int |
error code |
This function creates a subdomain of type = STRING_DOMAIN and writes a string in that subdomain.
The file must have been open in MODE_WRITE or MODE_MODIFY.
| C |
ier = int df_get_string(int file_no, int domain_no, char **value) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| domain_no |
int |
subdomain number |
| value |
char |
string |
| ier |
int |
error code |
Knowing the subdomain number, this function returns the corresponding string. The subdomain must
be of type = STRING_DOMAIN and the file must have been open in MODE_READ.
| C |
ier = int df_result_data_type(int file_no, int domain_no, int *type) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| domain_no |
int |
subdomain number |
| type |
int |
subdomain type |
| ier |
int |
error code |
Knowing the subdomain number, this function returns the corresponding subdomain type number. The subdomain must
be of type = REAL_RESULTS or type = DOUBLE_RESULTS and the file must have been open in MODE_READ.
| C |
ier = int df_read_result(int file_no, int domain_no, void *data) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| domain_no |
int |
subdomain number |
| data |
void |
array of data |
| ier |
int |
error code |
Knowing the subdomain number, this function returns the corresponding results. The subdomain must be of
type = REAL_RESULTS or type = DOUBLE_RESULTS and the file must have been open in MODE_READ.
| C |
ier = int df_add_unstruc_result_data(int file_no, char *name, int start,
int end, int type, void *data) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| name |
char |
data name |
| start |
int |
nodes or elements starting index |
| end |
int |
nodes or elements ending index |
| type |
int |
result type |
| data |
void |
array of data |
| ier |
int |
error code |
This function writes the corresponding results for an unstructured mesh. For nodal data, it records one solution value per node, and the start
and end indices must be set to the first and last node number of the mesh. For cell centered data, it records one solution value per element,
and the start and end indices must correspond to the first and last element of the mesh (partial range is not allowed).The subdomain created
is of type = REAL_RESULTS or type = DOUBLE_RESULTS and the file must have been open in MODE_WRITE or MODE_MODIFY.
Functions Specific to Cartesian Mesh Files Generated by the GLOBAL Mesher
| C |
ier = int df_set_global_grid_type(int file_no, int type) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| type |
int |
global grid type |
| ier |
int |
error code |
This function sets the type of the global grid.
| C |
ier = int df_write_stations(int file_no, int dimension,
int n_stations, double *stations) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| dimension |
int |
dimension of station |
| n_stations |
int[] |
number of stations |
| stations |
double[] |
array of stations |
| ier |
int |
error code |
This function writes the stations to the global domain file.
| C |
ier = int df_global_nijk(int file_no, int nijk[3]) |
| FORTRAN |
not available |
| file_no |
int |
file index identifier |
| nijk[3] |
int[] |
number of stations in each direction |
| ier |
int |
error code |
This function returns the number of stations in each direction.