Data I/O Routines#
cgio_read_data_type#
- C Signature:
-
int cgio_read_data_type(int cgio_num, double id, const cgsize_t *s_start, const cgsize_t *s_end, const cgsize_t *s_stride, const char *m_data_type, int m_num_dims, const cgsize_t *m_dims, const cgsize_t *m_start, const cgsize_t *m_end, const cgsize_t *m_stride, void *data)#
-
int cgio_read_data_type(int cgio_num, double id, const cgsize_t *s_start, const cgsize_t *s_end, const cgsize_t *s_stride, const char *m_data_type, int m_num_dims, const cgsize_t *m_dims, const cgsize_t *m_start, const cgsize_t *m_end, const cgsize_t *m_stride, void *data)#
- Fortran Signature:
- subroutine cgio_read_data_type_f(cgio_num, id, s_start, s_end, s_stride, m_data_type, m_num_dims, m_dims, m_start, m_end, m_stride, data, ier)#
- Parameters:
cgio_num
IN: Database identifier.
id
Node identifier.
s_start
Starting indices for data in the database. Fortran indexing is used (starting at 1).
s_end
Ending indices for data in the database. Fortran indexing is used (starting at 1).
s_stride
Step increment for data in the database.
m_num_dims
Number of dimensions for data in memory.
m_dims
Dimension values for data in memory.
m_start
Starting indices for data in memory. Fortran indexing is used (starting at 1).
m_end
Ending indices for data in memory. Fortran indexing is used (starting at 1).
m_stride
Step increment for data in memory.
m_data_type
Type of data being used for data in memory. One of “I4”, “I8”, “U4”, “U8”, “R4”, “R8”, “C1”, or “B1”.
data
Array of data to be read.
- Returns:
ier
- Error status- Modes:
r w m
- Description:
This routine provides general purpose read capabilities from the node identified by
id
in the database given bycgio_num
. It allows for a general specification of the starting location within the data as well as fixed step lengths (strides) through the data from the initial position. This capability works for both the data on disk and the data being stored in memory. One set of vectors (s_start
,s_end
ands_stride
) are used to describe the mapping of the data within the node, and a second set of vectors (m_start
,m_end
andm_stride
) are used to describe the mapping of the desired data within memory.The memory dimensions are given by
m_num_dims
andm_dims
. There is no requirement that the node dimensions and memory dimensions match, only that the total number of values to be read are the same for the node and memory specifications.The data are stored in both memory and on disk in “Fortran ordering”. That is, the first index varies the fastest, and indexing starts at 1. Negative indexing is not allowed.
Be careful when writing data using
cgio_write_all_data()
and then usingcgio_read_data_type()
to randomly access the data.cgio_write_all_data_type()
takes a starting address in memory and writes N words to disk, making no assumption as to the order of the data.cgio_read_data_type()
assumes that the data have Fortran-like ordering to navigate through the data in memory and on disk. It assumes that the first dimension varies the fastest. It would be easy for a C program to use the default array ordering (last dimension varying fastest) and write the data out usingcgio_write_all_data_type()
. Then another program might usecgio_read_data_type()
to access a subsection of the data, and the routine would not return what was expected.There can be a significant performance penalty for using
cgio_read_data_type()
when compared withcgio_read_all_data_type()
. If performance is a major consideration, it is best to organize data to take advantage of the speed ofcgio_read_all_data_type()
.The function returns 0 on success, else an error code.
cgio_read_all_data_type#
- C Signature:
-
int cgio_read_all_data_type(int cgio_num, double id, const char *m_data_type, void *data)#
-
int cgio_read_all_data_type(int cgio_num, double id, const char *m_data_type, void *data)#
- Fortran Signature:
- subroutine cgio_read_all_data_type_f(cgio_num, id, m_data_type, data, ier)#
- Parameters:
cgio_num
Database identifier.
id
Node identifier.
m_data_type
Type of data being used for data in memory. One of “I4”, “I8”, “U4”, “U8”, “R4”, “R8”, “C1”, or “B1”.
data
Array of data to be read.
- Returns:
ier
- Error status- Modes:
r w m
- Description:
Reads all the data from the node identified by
id
in the database given bycgio_num
. On success, the function returns 0 and the data indata
, else an error code is returned. Note: Data is returned in Fortran indexing order.
cgio_read_block_data_type#
- C Signature:
-
int cgio_read_block_data_type(int cgio_num, double id, cgsize_t b_start, cgsize_t b_end, const char *m_data_type, void *data)#
-
int cgio_read_block_data_type(int cgio_num, double id, cgsize_t b_start, cgsize_t b_end, const char *m_data_type, void *data)#
- Fortran Signature:
- subroutine cgio_read_block_data_type_f(cgio_num, id, b_start, b_end, m_data_type, data, ier)#
- Parameters:
cgio_num
Database identifier.
id
Node identifier.
b_start
Starting offset (index) for the data in the database. Fortran indexing is used (starting at 1).
b_end
Ending offset (index) for the data in the database. Fortran indexing is used (starting at 1).
m_data_type
Type of data being used for data in memory. One of “I4”, “I8”, “U4”, “U8”, “R4”, “R8”, “C1”, or “B1”.
data
Array of data to be read.
- Returns:
ier
- Error status- Modes:
r w m
- Description:
Reads a contiguous block of data from the node identified by
id
in the database given bycgio_num
. On success, the function returns 0 and the data indata
, else an error code is returned. The starting index is given byb_start
and the end byb_end
. Note: Fortran indexing order for multi-dimensional data is used when computing the starting and ending locations.
cgio_write_data#
- C Signature:
-
int cgio_write_data(int cgio_num, double id, const cgsize_t *s_start, const cgsize_t *s_end, const cgsize_t *s_stride, int m_num_dims, const cgsize_t *m_dims, const cgsize_t *m_start, const cgsize_t *m_end, const cgsize_t *m_stride, void *data)#
-
int cgio_write_data(int cgio_num, double id, const cgsize_t *s_start, const cgsize_t *s_end, const cgsize_t *s_stride, int m_num_dims, const cgsize_t *m_dims, const cgsize_t *m_start, const cgsize_t *m_end, const cgsize_t *m_stride, void *data)#
- Fortran Signature:
- subroutine cgio_write_data_f(cgio_num, id, s_start, s_end, s_stride, m_num_dims, m_dims, m_start, m_end, m_stride, data, ier)#
- Parameters:
cgio_num
Database identifier.
id
Node identifier.
s_start
Starting indices for data in the database. Fortran indexing is used (starting at 1).
s_end
Ending indices for data in the database. Fortran indexing is used (starting at 1).
s_stride
Step increment for data in the database.
m_num_dims
Number of dimensions for data in memory.
m_dims
Dimension values for data in memory.
m_start
Starting indices for data in memory. Fortran indexing is used (starting at 1).
m_end
Ending indices for data in memory. Fortran indexing is used (starting at 1).
m_stride
Step increment for data in memory.
data
Array of data to be read or written.
- Returns:
ier
- Error status- Modes:
- w m
- Description:
This function is similar to
cgio_read_data_type()
, but writes the data from memory to the node.
cgio_write_data_type#
- C Signature:
-
int cgio_write_data_type(int cgio_num, double id, const cgsize_t *s_start, const cgsize_t *s_end, const cgsize_t *s_stride, const char *m_data_type, int m_num_dims, const cgsize_t *m_dims, const cgsize_t *m_start, const cgsize_t *m_end, const cgsize_t *m_stride, void *data)#
-
int cgio_write_data_type(int cgio_num, double id, const cgsize_t *s_start, const cgsize_t *s_end, const cgsize_t *s_stride, const char *m_data_type, int m_num_dims, const cgsize_t *m_dims, const cgsize_t *m_start, const cgsize_t *m_end, const cgsize_t *m_stride, void *data)#
- Fortran Signature:
- subroutine cgio_write_data_type_f(cgio_num, id, s_start, s_end, s_stride, m_data_type, m_num_dims, m_dims, m_start, m_end, m_stride, data, ier)#
- Parameters:
cgio_num
Database identifier.
id
Node identifier.
s_start
Starting indices for data in the database. Fortran indexing is used (starting at 1).
s_end
Ending indices for data in the database. Fortran indexing is used (starting at 1).
s_stride
Step increment for data in the database.
m_num_dims
Number of dimensions for data in memory.
m_dims
Dimension values for data in memory.
m_start
Starting indices for data in memory. Fortran indexing is used (starting at 1).
m_end
Ending indices for data in memory. Fortran indexing is used (starting at 1).
m_stride
Step increment for data in memory.
m_data_type
Type of data being used for data in memory. One of “I4”, “I8”, “U4”, “U8”, “R4”, “R8”, “C1”, or “B1”.
data
Array of data to be read or written.
- Returns:
ier
- Error status- Modes:
- w m
- Description:
This function is similar to
cgio_read_data_type()
, but writes the data from memory to the node.
cgio_write_all_data#
- C Signature:
-
int cgio_write_all_data(int cgio_num, double id, void *data)#
-
int cgio_write_all_data(int cgio_num, double id, void *data)#
- Fortran Signature:
- subroutine cgio_write_all_data_f(cgio_num, id, data, ier)#
- Parameters:
cgio_num
Database identifier.
id
Node identifier.
data
Array of data to be written.
- Returns:
ier
- Error status- Modes:
- w m
- Description:
This function is similar to
cgio_read_all_data_type()
, but writes the data from memory to the node.
cgio_write_all_data_type#
- C Signature:
-
int cgio_write_all_data_type(int cgio_num, double id, const char *m_data_type, void *data)#
-
int cgio_write_all_data_type(int cgio_num, double id, const char *m_data_type, void *data)#
- Fortran Signature:
- subroutine cgio_write_all_data_type_f(cgio_num, id, m_data_type, data, ier)#
- Parameters:
cgio_num
Database identifier.
id
Node identifier.
m_data_type
Type of data being used for data in memory. One of “I4”, “I8”, “U4”, “U8”, “R4”, “R8”, “C1”, or “B1”.
data
Array of data to be written.
- Returns:
ier
- Error status- Modes:
- w m
- Description:
This function is similar to
cgio_read_all_data_type()
, but writes the data from memory to the node.
cgio_write_block_data#
- C Signature:
-
int cgio_write_block_data(int cgio_num, double id, cgsize_t b_start, cgsize_t b_end, void *data)#
-
int cgio_write_block_data(int cgio_num, double id, cgsize_t b_start, cgsize_t b_end, void *data)#
- Fortran Signature:
- subroutine cgio_write_block_data_f(cgio_num, id, b_start, b_end, data, ier)#
- Parameters:
cgio_num
Database identifier.
id
Node identifier.
b_start
Starting offset (index) for the data in the database. Fortran indexing is used (starting at 1).
b_end
Ending offset (index) for the data in the database. Fortran indexing is used (starting at 1).
data
Array of data to be written.
- Returns:
ier
- Error status- Modes:
- w m
- Description:
This function is similar to
cgio_read_block_data_type()
, but writes the data from memory to the node.