PROGRAM Test_LSNNO USE Precision USE Error_Handling USE System_Monitors USE Initialization_Termination USE Network_Data_Structures USE Lattice_Geometry USE Network_Geometry USE Simple_Graphics USE Network_Graphics USE Network_Spanning_Trees USE power_Cost_Parameters USE power_Cost_Functions USE LSNNO_Interface USE Lattice_Network_Optimization IMPLICIT NONE INTEGER::arc,node REAL(KIND=r_wp),DIMENSION(2)::potential_mismatch,flow_mismatch REAL::temp CHARACTER(LEN=35)::title,plot_title(2) CHARACTER(LEN=10)::file_type,file_extension WRITE(*,*)"Enter file output type (CONS, XWIN, PNG, POST, PSCL)" READ(*,*)file_type SELECT CASE(file_type) CASE("POST","PSCL") file_extension="ps" CASE("PNG") file_extension="png" CASE DEFAULT file_extension=".dummy" ENDSELECT CALL StartProgram CALL InitializeLatticeNetworkProblem CALL CreateLatticeNetworkProblem CALL InitializeLSNNO CALL CreateLSNNO CALL ResetTimer(30) CALL StartTimer(30) IF(initial_flow/='I'.OR.initial_flow/='i')CALL CalculateFeasibleFlow CALL CallLSNNO(ElementalCosts=powerElementalCosts) CALL DestroyLSNNO CALL CalculateLSNNOPotentials(ElementalCosts=PowerElementalCosts,& potential_mismatch=potential_mismatch,flow_mismatch=flow_mismatch) CALL StopTimer(30) WRITE(message_log_unit,"(A,F10.3)")"Solving the NO problem in LSNNO took (s) :",ReadTimer(30) WRITE(message_print_unit,*)"The norms of the mismatches are (2-Norm, Inf-Norm):" WRITE(message_print_unit,"(A,2E10.3)")"_________ Voltages: ",potential_mismatch WRITE(message_print_unit,"(A,2E10.3)")"_____ Excess flows: ",flow_mismatch arcs_mask=.FALSE. DO arc=-n_special_arcs,n_arcs arcs_mask(arc)=(arcs_mask(arc).AND.(arcs_status(arc)/=periodic_bc_arc)) END DO WRITE(title,"(A,F4.2,A)")"Potentials for $\alpha=",alpha,"$" plot_title(1)=TRIM(title) plot_title(2)="Optimization done with LSNNO" CALL InitNetworkGraphics(file="Potentials."//TRIM(file_extension),file_type=TRIM(file_type),& plot_title=plot_title,& x_label="Current flow \Huge{$\rightarrow$}",& page_size=(/5000,5000/),label_format="5F0",& color_table="RAIN",colorbar_position="Horizontal",& axis_labels_format=(/"NAME","NONE","NONE","NONE"/)) CALL PlotNetwork2D(heads_tails=heads_tails,& node_offset=n_special_nodes,node_coords=nodes_coords,& node_mask=nodes_mask,arc_mask=arcs_mask,& node_values=nodes_potentials,& resize_nodes=.TRUE.,resize_arcs=.FALSE.,& color_nodes=.TRUE.,color_arcs=.FALSE.,& node_size_range=(/-HUGE(1.0_r_wp)/25,HUGE(1.0_r_wp)/10/),& node_colorbar_format="5E1",arc_colorbar_format="5E1",& vector_type=0,axis=(/0.0,0.0,REAL(lengths+1)/)) CALL EndNetworkGraphics() arcs_mask=.TRUE. DO arc=-n_special_arcs,n_arcs arcs_mask(arc)=(arcs_mask(arc).AND.(arcs_status(arc)/=periodic_bc_arc)) END DO nodes_mask=.FALSE. WRITE(title,"(A,F4.2,A)")"Flows for $\alpha=",alpha,"$" plot_title(1)=TRIM(title) plot_title(2)="Optimization done with LSNNO" CALL InitNetworkGraphics(file="Flows."//TRIM(file_extension),file_type=TRIM(file_type),& plot_title=plot_title,& x_label="Current flow \Huge{$\rightarrow$}",& page_size=(/5000,5000/),label_format="5F0",& color_table="RAIN",colorbar_position="Horizontal",& axis_labels_format=(/"NONE","NONE","NAME","NONE"/)) CALL PlotNetwork2D(heads_tails=heads_tails,& node_offset=n_special_nodes,node_coords=nodes_coords,& node_mask=nodes_mask,arc_mask=arcs_mask,& arc_values=arcs_flows,& resize_nodes=.FALSE.,resize_arcs=.TRUE.,& color_nodes=.FALSE.,color_arcs=.TRUE.,& arc_size_range=(/-HUGE(1.0_r_wp)/25,HUGE(1.0_r_wp)/10/),& node_colorbar_format="5E1",arc_colorbar_format="5E1",& vector_type=0,axis=(/0.0,0.0,REAL(lengths+1)/)) CALL EndNetworkGraphics() CALL InitGraphics(file="V_x."//TRIM(file_extension),file_type=TRIM(file_type),& n_plots=1,tick_labels="4E1",legend_position="UL",& plot_title=(/"Node potentials along the current direction"/),& x_label="$x_i$",y_label="$V_i$") CALL Plot2D(x=nodes_coords(1,1:n_nodes),y=REAL(nodes_potentials(1:n_nodes)),& plot_spec="SCR",legend="Interior nodes") CALL EndGraphics() OPEN(UNIT=100,FILE="Potentials.dat",ACTION="WRITE",STATUS="UNKNOWN") DO node=1,n_nodes WRITE(UNIT=100,FMT="(I10,2F10.1,E15.3)")& node,nodes_coords(1:n_dim,node),nodes_potentials(node) END DO CALL DestroyLatticeNetworkProblem CALL EndProgram END PROGRAM Test_LSNNO