Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Source Code
subroutine update_saturation(current_saturation,node_id,graph,coloring)integer(int32),intent(out)::current_saturationinteger(int32),intent(in)::node_idtype(type_crs_adjacency_element),intent(in)::graphtype(type_coloring),intent(in)::coloringinteger(int32),allocatable::neighbors(:)integer(int32),allocatable::distinct_colors(:)integer(int32)::i,j,num_distinctlogical::foundneighbors=graph%get_neighbors(node_id)if(size(neighbors)==0)thencurrent_saturation=0call deallocate_array(neighbors)return end if allocate(distinct_colors(size(neighbors)))num_distinct=0do i=1,size(neighbors)if(coloring%color(neighbors(i))/=0)thenfound=.false.do j=1,num_distinctif(coloring%color(neighbors(i))==distinct_colors(j))thenfound=.true.exit end if end do if(.not.found)thennum_distinct=num_distinct+1distinct_colors(num_distinct)=coloring%color(neighbors(i))end if end if end docurrent_saturation=num_distinctcall deallocate_array(neighbors)call deallocate_array(distinct_colors)end subroutine update_saturation