hyperSIS_network_mod Module


Uses

  • module~~hypersis_network_mod~~UsesGraph module~hypersis_network_mod hyperSIS_network_mod datastructs_mod datastructs_mod module~hypersis_network_mod->datastructs_mod module~hypersis_kinds_mod hyperSIS_kinds_mod module~hypersis_network_mod->module~hypersis_kinds_mod iso_fortran_env iso_fortran_env module~hypersis_kinds_mod->iso_fortran_env

Used by

  • module~~hypersis_network_mod~~UsedByGraph module~hypersis_network_mod hyperSIS_network_mod module~hypersis_dynamics_base_mod hyperSIS_dynamics_base_mod module~hypersis_dynamics_base_mod->module~hypersis_network_mod module~hypersis_dynamics_hb_oga_mod hyperSIS_dynamics_HB_OGA_mod module~hypersis_dynamics_hb_oga_mod->module~hypersis_network_mod module~hypersis_dynamics_hb_oga_mod->module~hypersis_dynamics_base_mod module~hypersis_dynamics_nb_oga_mod hyperSIS_dynamics_NB_OGA_mod module~hypersis_dynamics_nb_oga_mod->module~hypersis_network_mod module~hypersis_dynamics_nb_oga_mod->module~hypersis_dynamics_base_mod module~hypersis_network_io_mod hyperSIS_network_io_mod module~hypersis_network_io_mod->module~hypersis_network_mod module~hypersis_program_common_mod hyperSIS_program_common_mod module~hypersis_program_common_mod->module~hypersis_network_mod module~hypersis_program_common_mod->module~hypersis_network_io_mod module~hypersis_dynamics_mod hyperSIS_dynamics_mod module~hypersis_program_common_mod->module~hypersis_dynamics_mod module~hypersis_dynamics_chooser_mod hyperSIS_dynamics_chooser_mod module~hypersis_dynamics_chooser_mod->module~hypersis_dynamics_base_mod module~hypersis_dynamics_mod->module~hypersis_dynamics_base_mod module~hypersis_dynamics_mod->module~hypersis_dynamics_chooser_mod proc~net_state_choose net_state_choose proc~net_state_choose->module~hypersis_dynamics_hb_oga_mod proc~net_state_choose->module~hypersis_dynamics_nb_oga_mod

Interfaces

public interface network

Interface for the constructor of the network type.

  • private function network_new(num_nodes, num_edges) result(net)

    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.

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=i4), intent(in) :: num_nodes
    integer(kind=i4), intent(in) :: num_edges

    Return Value type(network_t)

public interface hyperedge

Interface for the constructor of the hyperedge type. It receives the order OR a list of nodes and returns a new hyperedge object.

  • private elemental function hyperedge_new(order) result(edge)

    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.

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=i4), intent(in) :: order

    Return Value type(hyperedge_t)

  • private function hyperedge_new_from_nodes_list(nodes) result(edge)

    Constructor for the hyperedge type from a list of nodes.

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=i4), intent(in) :: nodes(:)

    Return Value type(hyperedge_t)


Derived Types

type, public ::  hyperedge_t

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.

Components

Type Visibility Attributes Name Initial
integer(kind=i4), public :: order = -1
integer(kind=i4), public, allocatable :: nodes(:)
integer(kind=i4), public, allocatable :: dual_edges(:)

type, public ::  node_t

Node object to represent a node in the network. It contains an ID, degree, and list of hyperedges that the node belongs to.

Components

Type Visibility Attributes Name Initial
integer(kind=i4), public :: degree = 0
integer(kind=i4), public, allocatable :: edges(:)
integer(kind=i4), public, allocatable :: dual_nodes(:)

type, public ::  network_t

Network object to represent the entire hypergraph. It contains the number of nodes, number of edges, and arrays of nodes and edges objects.

Components

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(:)

Finalizations Procedures

final :: network_finalizer

Type-Bound Procedures

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