Interface for the constructor of the network type.
Constructor for the network type. It initializes the number of nodes and edges, and allocates memory for the nodes and edges arrays. @param net The network object to be initialized. @param num_nodes The number of nodes in the network. @param num_edges The number of edges in the network.
Note
This subroutine allocates memory for the nodes and edges arrays based on the provided sizes.
Note
The arrays are allocated with the sizes specified by num_nodes and num_edges.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=i4), | intent(in) | :: | num_nodes | |||
integer(kind=i4), | intent(in) | :: | num_edges |
Interface for the constructor of the hyperedge type. It receives the order OR a list of nodes and returns a new hyperedge object.
Constructor for the hyperedge type. It initializes the ID and order of the hyperedge, and allocates memory for the nodes array. @param order The order of the hyperedge.
Note
This subroutine allocates memory for the nodes array based on the provided size.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=i4), | intent(in) | :: | order |
Constructor for the hyperedge type from a list of nodes.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=i4), | intent(in) | :: | nodes(:) |
Hyperedge object to represent a hyperedge in the network. It contains an ID, order m, and list of m + 1 nodes belonging to the hyperedge.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=i4), | public | :: | order | = | -1 | ||
integer(kind=i4), | public, | allocatable | :: | nodes(:) | |||
integer(kind=i4), | public, | allocatable | :: | dual_edges(:) |
Node object to represent a node in the network. It contains an ID, degree, and list of hyperedges that the node belongs to.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=i4), | public | :: | degree | = | 0 | ||
integer(kind=i4), | public, | allocatable | :: | edges(:) | |||
integer(kind=i4), | public, | allocatable | :: | dual_nodes(:) |
Network object to represent the entire hypergraph. It contains the number of nodes, number of edges, and arrays of nodes and edges objects.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=i4), | public | :: | num_nodes | = | 0 | ||
integer(kind=i4), | public | :: | num_edges | = | 0 | ||
integer(kind=i4), | public | :: | max_order | = | 0 | ||
type(node_t), | public, | allocatable | :: | nodes(:) | |||
type(hyperedge_t), | public, | allocatable | :: | edges(:) | |||
type(network_props_t), | public | :: | props | ||||
type(fixed_list_t), | public, | allocatable | :: | nodes_per_degree(:) | |||
type(fixed_list_t), | public, | allocatable | :: | edges_per_order(:) |
final :: network_finalizer |
procedure, public :: init => network_init | |
procedure, public :: build_edges_from_nodes => network_build_edges_from_nodes | |
procedure, public :: build_nodes_from_edges => network_build_nodes_from_edges | |
procedure, public :: print_nodes_and_edges => network_print_nodes_and_edges | |
procedure, public :: clear_null_edges => network_clear_null_edges | |
procedure, public :: check_topology_consistency => network_check_topology_consistency | |
procedure, public :: remove_invalid_nodes_and_edges => network_remove_invalid_nodes_and_edges | |
procedure, public :: clear_and_check_all => network_clear_and_check_all | |
procedure, public :: reset_props => network_reset_props | |
procedure, public :: destroy => network_destroy |