PROGRAM Time_MST USE Precision USE Error_Handling USE System_Monitors USE Random_Numbers USE Sorting_Ranking USE Initialization_Termination USE Network_Data_Structures USE Lattice_Geometry USE Network_Geometry USE Network_Graphics USE Lattice_Network_Optimization USE Graph_Algorithms USE Network_Spanning_Trees USE Power_Cost_Parameters IMPLICIT NONE REAL(KIND=r_wp),DIMENSION(:),ALLOCATABLE::weights_changes,arcs_weights INTEGER(KIND=i_wp)::arc,node,head,tail,n_pivoted REAL(KIND=r_wp)::disorder,total_weight CALL StartProgram CALL InitializeLatticeNetworkProblem CALL CreateLatticeNetworkProblem ALLOCATE(arcs_weights(-n_special_arcs:n_arcs),weights_changes(-n_special_arcs:n_arcs)) debug_graph_algs=.TRUE. OPEN(FILE="MST.dat",UNIT=101,STATUS="UNKNOWN",ACTION="WRITE",POSITION="APPEND") OPEN(FILE="MST.total.dat",UNIT=201,STATUS="UNKNOWN",ACTION="WRITE",POSITION="APPEND") WRITE(UNIT=101,FMT="(2I5,I15)",ADVANCE="NO")lengths,PRODUCT(lengths) WRITE(UNIT=201,FMT="(I15)",ADVANCE="NO")PRODUCT(lengths) arcs_weights=arcs_cost_parameters(1,:) CALL ResetTimer(1) CALL StartTimer(1) CALL CreateSpanningTree(tree_type=min_cost_tree,arcs_weights=arcs_weights,& weights_distribution=costs_distribution,& tree_timer=2,thread_timer=3) CALL StopTimer(1) WRITE(*,*)"Making the MST tree from scratch took:",ReadTimer(1) WRITE(*,*)"____________________ Tree bulding:",ReadTimer(2) WRITE(*,*)"____________________ Thread building:",ReadTimer(3) WRITE(UNIT=101,FMT="(3E10.3)",ADVANCE="NO")ReadTimer(2),ReadTimer(3),ReadTimer(1) WRITE(UNIT=201,FMT="(E10.3)",ADVANCE="NO")ReadTimer(1) WRITE(*,*)"Enter the disorder:" READ(*,*)disorder WRITE(UNIT=101,FMT="(F6.2)",ADVANCE="NO")disorder CALL RandomUniform(weights_changes,range=(/1.0_r_wp-disorder,1.0_r_wp+disorder/)) arcs_weights=weights_changes*arcs_weights CALL ResetTimer(10) CALL StartTimer(10) CALL UpdateSpanningTree(tree_type=min_cost_tree,arcs_weights=arcs_weights,& n_pivots=n_pivoted,tree_timer=15,thread_timer=16) CALL StopTimer(10) WRITE(*,*)"Rebuilding the MST tree took :",ReadTimer(10) WRITE(*,*)"____________________ Tree rebuilding:",ReadTimer(15) WRITE(*,*)"____________________ Thread building:",ReadTimer(16) WRITE(UNIT=101,FMT="(3E10.3,I10)",ADVANCE="NO")& ReadTimer(15),ReadTimer(16),ReadTimer(10),n_pivoted WRITE(UNIT=201,FMT="(1E10.3)",ADVANCE="NO")ReadTimer(10) WRITE(101,*) CLOSE(UNIT=101) WRITE(201,*) CLOSE(UNIT=201) CALL DestroyLatticeNetworkProblem CALL EndProgram END PROGRAM Time_MST