Mesh Oriented datABase  (version 5.5.1)
An array-based unstructured mesh library
adjacency.c File Reference
#include <H5Tpublic.h>
#include <H5Gpublic.h>
#include <H5Ppublic.h>
#include "mhdf.h"
#include "util.h"
#include "file-handle.h"
#include "status.h"
#include "names-and-paths.h"
+ Include dependency graph for adjacency.c:

Go to the source code of this file.

Functions

int mhdf_haveAdjacency (mhdf_FileHandle file, const char *elem_group, mhdf_Status *status)
 Check if adjacency data is present in the file for the specified element group. More...
 
hid_t mhdf_createAdjacency (mhdf_FileHandle file, const char *elem_handle, long adj_list_size, mhdf_Status *status)
 Create adjacency data table for nodes, elements, polys, etc. More...
 
hid_t mhdf_openAdjacency (mhdf_FileHandle file, const char *elem_handle, long *adj_list_size_out, mhdf_Status *status)
 Open adjacency data table for nodes, elements, polys, etc. More...
 
void mhdf_writeAdjacency (hid_t table_id, long offset, long count, hid_t type, const void *data, mhdf_Status *status)
 Write node/element adjacency data. More...
 
void mhdf_writeAdjacencyWithOpt (hid_t table_id, long offset, long count, hid_t type, const void *data, hid_t prop, mhdf_Status *status)
 
void mhdf_readAdjacency (hid_t table_id, long offset, long count, hid_t type, void *data, mhdf_Status *status)
 Read node/element adjacency data. More...
 
void mhdf_readAdjacencyWithOpt (hid_t table_id, long offset, long count, hid_t type, void *data, hid_t prop, mhdf_Status *status)
 

Function Documentation

◆ mhdf_createAdjacency()

hid_t mhdf_createAdjacency ( mhdf_FileHandle  file_handle,
const char *  elem_handle,
long  adj_list_size,
mhdf_Status status 
)

Create adjacency data table for nodes, elements, polys, etc.

Adjacency data.

Adjacency data is formated as a sequence of integer groups where the first entry in each group is the ID of the element for which adjacencies are being specified, the second value is the count of adjacent entities, and the remainder of the group is the list of IDs of the adjacent entities.

Create file object for adjacency data for a nodes or a specified element group.

Adjacency data is formated as a sequence of integer groups where the first entry in each group is the ID of the element for which adjacencies are being specified, the second value is the count of adjacent entities, and the remainder of the group is the list of IDs of the adjacent entities.

Parameters
file_handleThe file.
elem_handleThe element group (or the result of mhdf_node_type_handle for nodes) for which the adjacency data is to be specified.
adj_list_sizeThe total number of integer values contained in the adjacency data for the specified element group.
statusPassed back status of API call.
Returns
The HDF5 handle to the connectivity data.

Definition at line 61 of file adjacency.c.

62 {
63  FileHandle* file_ptr;
64  hid_t elem_id, table_id;
65  hsize_t dim = (hsize_t)adj_list_size;
66  API_BEGIN;
67 
68  file_ptr = (FileHandle*)( file );
69  if( !mhdf_check_valid_file( file_ptr, status ) ) return -1;
70 
71  if( adj_list_size < 1 )
72  {
73  mhdf_setFail( status, "Invalid argument.\n" );
74  return -1;
75  }
76 
77  if( elem_handle == mhdf_node_type_handle() )
78  {
79  table_id = mhdf_create_table( file_ptr->hdf_handle, NODE_ADJCY_PATH, file_ptr->id_type, 1, &dim, status );
80  }
81  else
82  {
83  elem_id = mhdf_elem_group_from_handle( file_ptr, elem_handle, status );
84  if( elem_id < 0 ) return -1;
85 
86  table_id = mhdf_create_table( elem_id, ADJACENCY_NAME, file_ptr->id_type, 1, &dim, status );
87  H5Gclose( elem_id );
88  }
89 
90  API_END_H( 1 );
91  return table_id;
92 }

References ADJACENCY_NAME, API_BEGIN, API_END_H, dim, struct_FileHandle::hdf_handle, struct_FileHandle::id_type, mhdf_check_valid_file(), mhdf_create_table(), mhdf_elem_group_from_handle(), mhdf_node_type_handle(), mhdf_setFail(), and NODE_ADJCY_PATH.

Referenced by moab::WriteHDF5Parallel::create_adjacency_tables(), and moab::WriteHDF5::serial_create_file().

◆ mhdf_haveAdjacency()

int mhdf_haveAdjacency ( mhdf_FileHandle  file,
const char *  elem_group,
mhdf_Status status 
)

Check if adjacency data is present in the file for the specified element group.

MOAB, a Mesh-Oriented datABase, is a software component for creating, storing and accessing finite element mesh data.

Copyright 2004 Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain rights in this software.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

Definition at line 25 of file adjacency.c.

26 {
27  FileHandle* file_ptr;
28  hid_t elem_id;
29  int result;
30  API_BEGIN;
31 
32  file_ptr = (FileHandle*)( file );
33  if( !mhdf_check_valid_file( file_ptr, status ) ) return -1;
34 
35  if( elem_group == mhdf_node_type_handle() )
36  {
37 #if defined( H5Gopen_vers ) && H5Gopen_vers > 1
38  elem_id = H5Gopen( file_ptr->hdf_handle, NODE_GROUP, H5P_DEFAULT );
39 #else
40  elem_id = H5Gopen( file_ptr->hdf_handle, NODE_GROUP );
41 #endif
42  if( elem_id < 0 )
43  {
44  mhdf_setFail( status, "H5Gopen( \"%s\" ) failed.\n", NODE_GROUP );
45  return -1;
46  }
47  }
48  else
49  {
50  elem_id = mhdf_elem_group_from_handle( file_ptr, elem_group, status );
51  if( elem_id < 0 ) return -1;
52  }
53 
54  result = mhdf_is_in_group( elem_id, ADJACENCY_NAME, status );
55  H5Gclose( elem_id );
56  mhdf_setOkay( status );
57  API_END;
58  return result;
59 }

References ADJACENCY_NAME, API_BEGIN, API_END, struct_FileHandle::hdf_handle, mhdf_check_valid_file(), mhdf_elem_group_from_handle(), mhdf_is_in_group(), mhdf_node_type_handle(), mhdf_setFail(), mhdf_setOkay(), and NODE_GROUP.

Referenced by get_elem_desc().

◆ mhdf_openAdjacency()

hid_t mhdf_openAdjacency ( mhdf_FileHandle  file_handle,
const char *  elem_handle,
long *  adj_list_size,
mhdf_Status status 
)

Open adjacency data table for nodes, elements, polys, etc.

Open the file object containing adjacency data for a nodes or a specified element group.

Adjacency data is formated as a sequence of integer groups where the first entry in each group is the ID of the element for which adjacencies are being specified, the second value is the count of adjacent entities, and the remainder of the group is the list of IDs of the adjacent entities.

Parameters
file_handleThe file.
elem_handleThe element group (or the result of mhdf_node_type_handle for nodes) for which the adjacency data is to be specified.
adj_list_sizeThe total number of integer values contained in the adjacency data for the specified element group.
statusPassed back status of API call.
Returns
The HDF5 handle to the connectivity data.

Definition at line 94 of file adjacency.c.

96 {
97  FileHandle* file_ptr;
98  hid_t elem_id, table_id;
99  hsize_t dim;
100  API_BEGIN;
101 
102  file_ptr = (FileHandle*)( file );
103  if( !mhdf_check_valid_file( file_ptr, status ) ) return -1;
104 
105  if( !adj_list_size_out )
106  {
107  mhdf_setFail( status, "Invalid argument.\n" );
108  return -1;
109  }
110 
111  if( elem_handle == mhdf_node_type_handle() )
112  {
113  table_id = mhdf_open_table( file_ptr->hdf_handle, NODE_ADJCY_PATH, 1, &dim, status );
114  }
115  else
116  {
117  elem_id = mhdf_elem_group_from_handle( file_ptr, elem_handle, status );
118  if( elem_id < 0 ) return -1;
119  table_id = mhdf_open_table( elem_id, ADJACENCY_NAME, 1, &dim, status );
120  H5Gclose( elem_id );
121  }
122 
123  *adj_list_size_out = (long)dim;
124  API_END_H( 1 );
125  return table_id;
126 }

References ADJACENCY_NAME, API_BEGIN, API_END_H, dim, struct_FileHandle::hdf_handle, mhdf_check_valid_file(), mhdf_elem_group_from_handle(), mhdf_node_type_handle(), mhdf_open_table(), mhdf_setFail(), and NODE_ADJCY_PATH.

Referenced by check_valid_adjacencies(), moab::ReadHDF5::load_file_impl(), moab::ReadHDF5::load_file_partial(), and moab::WriteHDF5::write_adjacencies().

◆ mhdf_readAdjacency()

void mhdf_readAdjacency ( hid_t  data_handle,
long  offset,
long  count,
hid_t  hdf_integer_type,
void *  adj_list_data_out,
mhdf_Status status 
)

Read node/element adjacency data.

Read adjacency data.

Adjacency data is formated as a sequence of integer groups where the first entry in each group is the ID of the element for which adjacencies are being specified, the second value is the count of adjacent entities, and the remainder of the group is the list of IDs of the adjacent entities.

Parameters
data_handleHandle returned from mhdf_createAdjacency or mhdf_openAdjacency.
offsetList position at which to start reading. Offset is from the count if integer values written, NOT a count of the number of elements for which adjacency data is written.
countNumber of integer values to reading.
hdf_integer_typeThe type of the integer data in adj_list_data_out. Typically H5T_NATIVE_INT or N5T_NATIVE_LONG as defined in H5Tpublic.h. The HDF class of this type object must be H5T_INTEGER
adj_list_data_outPointer to memory at which to write adjacency data.
statusPassed back status of API call.

Definition at line 148 of file adjacency.c.

149 {
150  API_BEGIN;
151  mhdf_read_data( table_id, offset, count, type, data, H5P_DEFAULT, status );
152  API_END;
153 }

References API_BEGIN, API_END, and mhdf_read_data().

Referenced by check_valid_adjacencies().

◆ mhdf_readAdjacencyWithOpt()

void mhdf_readAdjacencyWithOpt ( hid_t  table_id,
long  offset,
long  count,
hid_t  type,
void *  data,
hid_t  prop,
mhdf_Status status 
)

Definition at line 154 of file adjacency.c.

161 {
162  API_BEGIN;
163  mhdf_read_data( table_id, offset, count, type, data, prop, status );
164  API_END;
165 }

References API_BEGIN, API_END, and mhdf_read_data().

Referenced by moab::ReadHDF5::read_adjacencies().

◆ mhdf_writeAdjacency()

void mhdf_writeAdjacency ( hid_t  data_handle,
long  offset,
long  count,
hid_t  hdf_integer_type,
const void *  adj_list_data,
mhdf_Status status 
)

Write node/element adjacency data.

Write adjacency data.

Adjacency data is formated as a sequence of integer groups where the first entry in each group is the ID of the element for which adjacencies are being specified, the second value is the count of adjacent entities, and the remainder of the group is the list of IDs of the adjacent entities.

Parameters
data_handleHandle returned from mhdf_createAdjacency or mhdf_openAdjacency.
offsetList position at which to start writing. Offset is from the count if integer values written, NOT a count of the number of elements for which adjacency data is written.
countNumber of integer values to write.
hdf_integer_typeThe type of the integer data in adj_list_data. Typically H5T_NATIVE_INT or N5T_NATIVE_LONG as defined in H5Tpublic.h. The HDF class of this type object must be H5T_INTEGER
adj_list_dataAdjacency data to write.
statusPassed back status of API call.

Definition at line 128 of file adjacency.c.

129 {
130  API_BEGIN;
131  mhdf_write_data( table_id, offset, count, type, data, H5P_DEFAULT, status );
132  API_END;
133 }

References API_BEGIN, API_END, and mhdf_write_data().

◆ mhdf_writeAdjacencyWithOpt()

void mhdf_writeAdjacencyWithOpt ( hid_t  table_id,
long  offset,
long  count,
hid_t  type,
const void *  data,
hid_t  prop,
mhdf_Status status 
)

Definition at line 135 of file adjacency.c.

142 {
143  API_BEGIN;
144  mhdf_write_data( table_id, offset, count, type, data, prop, status );
145  API_END;
146 }

References API_BEGIN, API_END, and mhdf_write_data().

Referenced by moab::WriteHDF5::write_adjacencies().