diff --git a/src/plot.F90 b/src/plot.F90 index 38e28d646..10cf05edc 100644 --- a/src/plot.F90 +++ b/src/plot.F90 @@ -20,7 +20,7 @@ module w90_plot_mod !! This module handles various plots - use w90_comms, only: comms_reduce, w90_comm_type, mpisize, mpirank + use w90_comms, only: comms_reduce, w90_comm_type, mpisize, mpirank, comms_array_split implicit none @@ -49,7 +49,6 @@ subroutine plot_main(atom_data, band_plot, dis_manifold, fermi_energy_list, ferm use w90_constants, only: eps6, dp use w90_hamiltonian, only: hamiltonian_get_hr, hamiltonian_write_hr, hamiltonian_setup, & hamiltonian_write_rmn, hamiltonian_write_tb - use w90_hamiltonian, only: hamiltonian_setup, hamiltonian_get_hr use w90_io, only: io_stopwatch_start, io_stopwatch_stop use w90_types, only: kmesh_info_type, wannier_data_type, atom_data_type, dis_manifold_type, & kpoint_path_type, print_output_type, ws_region_type, ws_distance_type, timer_list_type, & @@ -137,10 +136,41 @@ subroutine plot_main(atom_data, band_plot, dis_manifold, fermi_energy_list, ferm if (allocated(error)) return endif + call utility_recip_lattice_base(real_lattice, recip_lattice, volume) + + if (w90_calculation%bands_plot .or. w90_calculation%fermi_surface_plot .or. & + output_file%write_hr .or. output_file%write_tb) then + ! Check if the kmesh includes the gamma point + have_gamma = .false. + do nkp = 1, num_kpts + if (all(abs(kpt_latt(:, nkp)) < eps6)) have_gamma = .true. + end do + if (.not. have_gamma) & + write (stdout, '(1x,a)') '!!!! Kpoint grid does not include Gamma. '// & + & ' Interpolation may be incorrect. !!!!' + ! Transform Hamiltonian to WF basis + + call hamiltonian_setup(ham_logical, print_output, ws_region, w90_calculation, ham_k, ham_r, & + real_lattice, wannier_centres_translated, irvec, mp_grid, ndegen, & + num_kpts, num_wann, nrpts, rpt_origin, band_plot%mode, stdout, & + timer, error, transport_mode, comm) + if (allocated(error)) return + + call hamiltonian_get_hr(atom_data, dis_manifold, ham_logical, real_space_ham, print_output, & + ham_k, ham_r, u_matrix, u_matrix_opt, eigval, kpt_latt, & + real_lattice, wannier_data%centres, wannier_centres_translated, & + irvec, shift_vec, nrpts, num_bands, num_kpts, num_wann, & + have_disentangled, stdout, timer, error, lsitesymmetry, comm) + if (allocated(error)) return + + bands_num_spec_points = 0 + + if (allocated(kpoint_path%labels)) bands_num_spec_points = size(kpoint_path%labels) + endif + if (on_root) then if (print_output%timing_level > 0) call io_stopwatch_start('plot: main', timer) - call utility_recip_lattice_base(real_lattice, recip_lattice, volume) ! Print the header only if there is something to plot if (w90_calculation%bands_plot .or. w90_calculation%fermi_surface_plot .or. & output_file%write_hr .or. w90_calculation%wannier_plot .or. output_file%write_u_matrices & @@ -153,42 +183,16 @@ subroutine plot_main(atom_data, band_plot, dis_manifold, fermi_energy_list, ferm if (w90_calculation%bands_plot .or. w90_calculation%fermi_surface_plot .or. & output_file%write_hr .or. output_file%write_tb) then - ! Check if the kmesh includes the gamma point - have_gamma = .false. - do nkp = 1, num_kpts - if (all(abs(kpt_latt(:, nkp)) < eps6)) have_gamma = .true. - end do - if (.not. have_gamma) & - write (stdout, '(1x,a)') '!!!! Kpoint grid does not include Gamma. '// & - & ' Interpolation may be incorrect. !!!!' - ! Transform Hamiltonian to WF basis - - call hamiltonian_setup(ham_logical, print_output, ws_region, w90_calculation, ham_k, ham_r, & - real_lattice, wannier_centres_translated, irvec, mp_grid, ndegen, & - num_kpts, num_wann, nrpts, rpt_origin, band_plot%mode, stdout, & - timer, error, transport_mode, comm) - if (allocated(error)) return - - call hamiltonian_get_hr(atom_data, dis_manifold, ham_logical, real_space_ham, print_output, & - ham_k, ham_r, u_matrix, u_matrix_opt, eigval, kpt_latt, & - real_lattice, wannier_data%centres, wannier_centres_translated, & - irvec, shift_vec, nrpts, num_bands, num_kpts, num_wann, & - have_disentangled, stdout, timer, error, lsitesymmetry, comm) - if (allocated(error)) return - - bands_num_spec_points = 0 - - if (allocated(kpoint_path%labels)) bands_num_spec_points = size(kpoint_path%labels) - if (w90_calculation%bands_plot) then - call plot_interpolate_bands(mp_grid, real_lattice, band_plot, kpoint_path, & - real_space_ham, ws_region, print_output, recip_lattice, & - num_wann, wannier_data, ham_r, irvec, ndegen, nrpts, & - wannier_centres_translated, ws_distance, & - bands_num_spec_points, stdout, seedname, timer, error, & - comm) - if (allocated(error)) return - endif + ! if (w90_calculation%bands_plot) then + ! call plot_interpolate_bands(mp_grid, real_lattice, band_plot, kpoint_path, & + ! real_space_ham, ws_region, print_output, recip_lattice, & + ! num_wann, wannier_data, ham_r, irvec, ndegen, nrpts, & + ! wannier_centres_translated, ws_distance, & + ! bands_num_spec_points, stdout, seedname, timer, error, & + ! comm) + ! if (allocated(error)) return + ! endif if (w90_calculation%fermi_surface_plot) then call plot_fermi_surface(fermi_energy_list, recip_lattice, fermi_surface_plot, num_wann, & @@ -282,6 +286,16 @@ subroutine plot_main(atom_data, band_plot, dis_manifold, fermi_energy_list, ferm endif end if !on_root + if (w90_calculation%bands_plot) then + call plot_interpolate_bands(mp_grid, real_lattice, band_plot, kpoint_path, & + real_space_ham, ws_region, print_output, recip_lattice, & + num_wann, wannier_data, ham_r, irvec, ndegen, nrpts, & + wannier_centres_translated, ws_distance, & + bands_num_spec_points, stdout, seedname, timer, error, & + comm) + if (allocated(error)) return + endif + if (w90_calculation%wannier_plot) then call plot_wannier(wannier_plot, wvfn_read, wannier_data, print_output, u_matrix_opt, & dis_manifold, real_lattice, atom_data, kpt_latt, u_matrix, num_kpts, & @@ -396,16 +410,33 @@ subroutine plot_interpolate_bands(mp_grid, real_lattice, band_plot, kpoint_path, character(len=10), allocatable :: xlabel(:) character(len=10), allocatable :: ctemp(:) + ! mpi variables + integer :: my_node_id, num_nodes, size_rdist, size_ndeg + logical :: on_root + integer, allocatable :: counts(:) + integer, allocatable :: displs(:) + + num_nodes = mpisize(comm) + my_node_id = mpirank(comm) + + on_root = .false. + if (my_node_id == 0) on_root = .true. + + allocate (counts(0:num_nodes - 1)) + allocate (displs(0:num_nodes - 1)) ! - if (print_output%timing_level > 1) then - call io_stopwatch_start('plot: interpolate_bands', timer) - endif - ! - time0 = io_time() + if (on_root) then + if (print_output%timing_level > 1) then + call io_stopwatch_start('plot: interpolate_bands', timer) + endif + ! + time0 = io_time() + + write (stdout, *) + write (stdout, '(1x,a)') 'Calculating interpolated band-structure' + write (stdout, *) + endif ! on_root call utility_metric(recip_lattice, recip_metric) - write (stdout, *) - write (stdout, '(1x,a)') 'Calculating interpolated band-structure' - write (stdout, *) ! allocate (ham_pack((num_wann*(num_wann + 1))/2), stat=ierr) if (ierr /= 0) then @@ -582,26 +613,28 @@ subroutine plot_interpolate_bands(mp_grid, real_lattice, band_plot, kpoint_path, ! ! Write out the kpoints in the path ! - open (newunit=bndunit, file=trim(seedname)//'_band.kpt', form='formatted') - write (bndunit, *) total_pts - do loop_spts = 1, total_pts - write (bndunit, '(3f12.6,3x,a)') (plot_kpoint(loop_i, loop_spts), loop_i=1, 3), "1.0" - end do - close (bndunit) - ! - ! Write out information on high-symmetry points in the path - ! - open (newunit=bndunit, file=trim(seedname)//'_band.labelinfo.dat', form='formatted') - do loop_spts = 1, bands_num_spec_points - if ((MOD(loop_spts, 2) .eq. 1) .and. & - (kpath_print_first_point((loop_spts + 1)/2) .eqv. .false.)) cycle - write (bndunit, '(a,3x,I10,3x,4f18.10)') & - kpoint_path%labels(loop_spts), & - idx_special_points(loop_spts), & - xval_special_points(loop_spts), & - (plot_kpoint(loop_i, idx_special_points(loop_spts)), loop_i=1, 3) - end do - close (bndunit) + if (on_root) then + open (newunit=bndunit, file=trim(seedname)//'_band.kpt', form='formatted') + write (bndunit, *) total_pts + do loop_spts = 1, total_pts + write (bndunit, '(3f12.6,3x,a)') (plot_kpoint(loop_i, loop_spts), loop_i=1, 3), "1.0" + end do + close (bndunit) + ! + ! Write out information on high-symmetry points in the path + ! + open (newunit=bndunit, file=trim(seedname)//'_band.labelinfo.dat', form='formatted') + do loop_spts = 1, bands_num_spec_points + if ((MOD(loop_spts, 2) .eq. 1) .and. & + (kpath_print_first_point((loop_spts + 1)/2) .eqv. .false.)) cycle + write (bndunit, '(a,3x,I10,3x,4f18.10)') & + kpoint_path%labels(loop_spts), & + idx_special_points(loop_spts), & + xval_special_points(loop_spts), & + (plot_kpoint(loop_i, idx_special_points(loop_spts)), loop_i=1, 3) + end do + close (bndunit) + endif ! on_root ! ! Cut H matrix in real-space ! @@ -631,15 +664,20 @@ subroutine plot_interpolate_bands(mp_grid, real_lattice, band_plot, kpoint_path, return endif endif - + if (on_root .and. print_output%timing_level > 2) then + call io_stopwatch_start('plot: interpolate_bands: loop_kpoints', timer) + endif ! [lp] the s-k and cut codes are very similar when use_ws_distance is used, a complete ! merge after this point is not impossible - do loop_kpt = 1, total_pts + call comms_array_split(total_pts, counts, displs, comm) + ! Don't worry about serial run, it is OK to call comms_array_split! + do loop_kpt = displs(my_node_id) + 1, displs(my_node_id) + counts(my_node_id) + ! do loop_kpt = 1, total_pts ham_kprm = cmplx_0 ! if (index(band_plot%mode, 's-k') .ne. 0) then do irpt = 1, nrpts -! [lp] Shift the WF to have the minimum distance IJ, see also ws_distance.F90 + ! [lp] Shift the WF to have the minimum distance IJ, see also ws_distance.F90 if (ws_region%use_ws_distance) then do j = 1, num_wann do i = 1, num_wann @@ -653,7 +691,7 @@ subroutine plot_interpolate_bands(mp_grid, real_lattice, band_plot, kpoint_path, enddo enddo else -! [lp] Original code, without IJ-dependent shift: + ! [lp] Original code, without IJ-dependent shift: rdotk = twopi*dot_product(plot_kpoint(:, loop_kpt), irvec(:, irpt)) fac = cmplx(cos(rdotk), sin(rdotk), dp)/real(ndegen(irpt), dp) ham_kprm = ham_kprm + fac*ham_r(:, :, irpt) @@ -662,7 +700,7 @@ subroutine plot_interpolate_bands(mp_grid, real_lattice, band_plot, kpoint_path, ! end of s-k mode elseif (index(band_plot%mode, 'cut') .ne. 0) then do irpt = 1, nrpts_cut -! [lp] Shift the WF to have the minimum distance IJ, see also ws_distance.F90 + ! [lp] Shift the WF to have the minimum distance IJ, see also ws_distance.F90 if (ws_region%use_ws_distance) then do j = 1, num_wann do i = 1, num_wann @@ -674,10 +712,10 @@ subroutine plot_interpolate_bands(mp_grid, real_lattice, band_plot, kpoint_path, enddo enddo enddo -! [lp] Original code, without IJ-dependent shift: + ! [lp] Original code, without IJ-dependent shift: else rdotk = twopi*dot_product(plot_kpoint(:, loop_kpt), irvec_cut(:, irpt)) -!~[aam] check divide by ndegen? + !~[aam] check divide by ndegen? fac = cmplx(cos(rdotk), sin(rdotk), dp) ham_kprm = ham_kprm + fac*ham_r_cut(:, :, irpt) endif ! end of use_ws_distance @@ -715,22 +753,31 @@ subroutine plot_interpolate_bands(mp_grid, real_lattice, band_plot, kpoint_path, end if ! end do + + call comms_reduce(eig_int(1, 1), num_wann*total_pts, 'SUM', error, comm) + call comms_reduce(bands_proj(1, 1), num_wann*total_pts, 'SUM', error, comm) + + if (on_root .and. print_output%timing_level > 2) then + call io_stopwatch_stop('plot: interpolate_bands: loop_kpoints', timer) + endif ! ! Interpolation Finished! ! Now we write plotting files ! - emin = minval(eig_int) - 1.0_dp - emax = maxval(eig_int) + 1.0_dp + if (on_root) then + emin = minval(eig_int) - 1.0_dp + emax = maxval(eig_int) + 1.0_dp - if (index(band_plot%format, 'gnu') > 0) then - call plot_interpolate_gnuplot(band_plot, kpoint_path, bands_num_spec_points, num_wann) - endif - if (index(band_plot%format, 'xmgr') > 0) then - call plot_interpolate_xmgrace(kpoint_path, bands_num_spec_points, num_wann) + if (index(band_plot%format, 'gnu') > 0) then + call plot_interpolate_gnuplot(band_plot, kpoint_path, bands_num_spec_points, num_wann) + endif + if (index(band_plot%format, 'xmgr') > 0) then + call plot_interpolate_xmgrace(kpoint_path, bands_num_spec_points, num_wann) + endif + write (stdout, '(1x,a,f11.3,a)') & + 'Time to calculate interpolated band structure ', io_time() - time0, ' (sec)' + write (stdout, *) endif - write (stdout, '(1x,a,f11.3,a)') & - 'Time to calculate interpolated band structure ', io_time() - time0, ' (sec)' - write (stdout, *) if (allocated(ham_r_cut)) then deallocate (ham_r_cut, stat=ierr) diff --git a/test-suite/tests/jobconfig b/test-suite/tests/jobconfig index 20eb5a6e3..6422e752b 100644 --- a/test-suite/tests/jobconfig +++ b/test-suite/tests/jobconfig @@ -28,6 +28,12 @@ program = WANNIER90_LABELINFO inputs_args = ('silicon.win', '') output = silicon_band.labelinfo.dat +# Silicon, 4 valence bands + 4 conduction bands; interpolated bandstructure only, checking the band.dat file +[testw90_example03_bands_plot] +program = WANNIER90_BANDS_PLOT +inputs_args = ('silicon.win', '') +output = silicon_band.dat + # Copper, states around the Fermi level; Fermi surface [testw90_example04] program = WANNIER90_WOUT_OK diff --git a/test-suite/tests/testw90_example03_bands_plot/.gitignore b/test-suite/tests/testw90_example03_bands_plot/.gitignore new file mode 100644 index 000000000..dca5048ac --- /dev/null +++ b/test-suite/tests/testw90_example03_bands_plot/.gitignore @@ -0,0 +1,5 @@ +silicon_band.dat +silicon_band.gnu +silicon_band.kpt +silicon_band.labelinfo.dat +silicon.wout \ No newline at end of file diff --git a/test-suite/tests/testw90_example03_bands_plot/Makefile b/test-suite/tests/testw90_example03_bands_plot/Makefile new file mode 100644 index 000000000..c1fbf97ab --- /dev/null +++ b/test-suite/tests/testw90_example03_bands_plot/Makefile @@ -0,0 +1,14 @@ +all: $(patsubst %.chk.fmt.bz2, %.chk, $(wildcard *.chk.fmt.bz2)) $(patsubst %.mmn.bz2, %.mmn, $(wildcard *.mmn.bz2)) + +%.chk: %.chk.fmt.bz2 + $(eval SEEDNAME:=$(patsubst %.chk.fmt.bz2, %, $<)) + echo $(SEEDNAME) + cat $< | bunzip2 - > $(SEEDNAME).chk.fmt && ../../../w90chk2chk.x -f2u $(SEEDNAME) && rm $(SEEDNAME).chk.fmt + +%.mmn: %.mmn.bz2 + $(eval SEEDNAME:=$(patsubst %.mmn.bz2, %, $<)) + echo $(SEEDNAME) + cat $< | bunzip2 - > $(SEEDNAME).mmn + + +.PHONY: all diff --git a/test-suite/tests/testw90_example03_bands_plot/benchmark.out.default.inp=silicon.win b/test-suite/tests/testw90_example03_bands_plot/benchmark.out.default.inp=silicon.win new file mode 100644 index 000000000..a268fea88 --- /dev/null +++ b/test-suite/tests/testw90_example03_bands_plot/benchmark.out.default.inp=silicon.win @@ -0,0 +1,416 @@ + 0.00000000E+00 -0.34309754E+01 + 0.10081144E+00 -0.35890591E+01 + 0.20162287E+00 -0.39437357E+01 + 0.30243431E+00 -0.43364374E+01 + 0.40324575E+00 -0.46968716E+01 + 0.50405718E+00 -0.50083518E+01 + 0.60486862E+00 -0.52738865E+01 + 0.70568006E+00 -0.54964783E+01 + 0.80649149E+00 -0.56703414E+01 + 0.90730293E+00 -0.57827822E+01 + 0.10081144E+01 -0.58218480E+01 + 0.11051202E+01 -0.57748351E+01 + 0.12021261E+01 -0.56422804E+01 + 0.12991319E+01 -0.54471371E+01 + 0.13961378E+01 -0.52182882E+01 + 0.14931436E+01 -0.49766857E+01 + 0.15901495E+01 -0.47224419E+01 + 0.16871553E+01 -0.44317935E+01 + 0.17841612E+01 -0.40676209E+01 + 0.18811670E+01 -0.35984639E+01 + 0.19781729E+01 -0.30157270E+01 + 0.20751787E+01 -0.23395731E+01 + 0.21721846E+01 -0.16099837E+01 + 0.21721846E+01 -0.16099837E+01 + 0.22750748E+01 -0.16586366E+01 + 0.23779650E+01 -0.17017011E+01 + 0.24808553E+01 -0.18005998E+01 + 0.25837455E+01 -0.20140090E+01 + 0.26866358E+01 -0.23603996E+01 + 0.27895260E+01 -0.28000360E+01 + 0.28924163E+01 -0.32727048E+01 + 0.29953065E+01 -0.37394309E+01 + 0.30981967E+01 -0.41730585E+01 + 0.32010870E+01 -0.45450701E+01 + 0.33039772E+01 -0.48431405E+01 + 0.34068675E+01 -0.50919691E+01 + 0.35097577E+01 -0.53321211E+01 + 0.36126479E+01 -0.55679905E+01 + 0.37155382E+01 -0.57516836E+01 + 0.38184284E+01 -0.58218480E+01 + 0.38184284E+01 -0.16099837E+01 + 0.39192399E+01 -0.20820207E+01 + 0.40200513E+01 -0.24665930E+01 + 0.41208627E+01 -0.27362183E+01 + 0.42216742E+01 -0.29146533E+01 + 0.43224856E+01 -0.30504517E+01 + 0.44232970E+01 -0.31779514E+01 + 0.45241085E+01 -0.32980191E+01 + 0.46249199E+01 -0.33852698E+01 + 0.47257314E+01 -0.34237870E+01 + 0.48265428E+01 -0.34309754E+01 + + 0.00000000E+00 -0.82982321E+00 + 0.10081144E+00 -0.61693082E+00 + 0.20162287E+00 -0.92297604E-01 + 0.30243431E+00 0.59833710E+00 + 0.40324575E+00 0.13947873E+01 + 0.50405718E+00 0.22754288E+01 + 0.60486862E+00 0.32178504E+01 + 0.70568006E+00 0.41842528E+01 + 0.80649149E+00 0.51139346E+01 + 0.90730293E+00 0.58874203E+01 + 0.10081144E+01 0.62285135E+01 + 0.11051202E+01 0.60184370E+01 + 0.12021261E+01 0.55136412E+01 + 0.12991319E+01 0.48798844E+01 + 0.13961378E+01 0.41913106E+01 + 0.14931436E+01 0.34732068E+01 + 0.15901495E+01 0.27399663E+01 + 0.16871553E+01 0.20073836E+01 + 0.17841612E+01 0.12866878E+01 + 0.18811670E+01 0.57579704E+00 + 0.19781729E+01 -0.13844754E+00 + 0.20751787E+01 -0.86800992E+00 + 0.21721846E+01 -0.16099837E+01 + 0.21721846E+01 -0.16099837E+01 + 0.22750748E+01 -0.15285758E+01 + 0.23779650E+01 -0.14040241E+01 + 0.24808553E+01 -0.12222363E+01 + 0.25837455E+01 -0.97938990E+00 + 0.26866358E+01 -0.67047850E+00 + 0.27895260E+01 -0.28231640E+00 + 0.28924163E+01 0.19197615E+00 + 0.29953065E+01 0.74063943E+00 + 0.30981967E+01 0.13489916E+01 + 0.32010870E+01 0.20244150E+01 + 0.33039772E+01 0.27857816E+01 + 0.34068675E+01 0.36351478E+01 + 0.35097577E+01 0.45219343E+01 + 0.36126479E+01 0.53063034E+01 + 0.37155382E+01 0.59263832E+01 + 0.38184284E+01 0.62285135E+01 + 0.38184284E+01 -0.16099837E+01 + 0.39192399E+01 -0.11131851E+01 + 0.40200513E+01 -0.65348315E+00 + 0.41208627E+01 -0.29163562E+00 + 0.42216742E+01 -0.11713455E+00 + 0.43224856E+01 -0.17975402E+00 + 0.44232970E+01 -0.38194814E+00 + 0.45241085E+01 -0.58657458E+00 + 0.46249199E+01 -0.72801372E+00 + 0.47257314E+01 -0.80512383E+00 + 0.48265428E+01 -0.82982321E+00 + + 0.00000000E+00 0.50150958E+01 + 0.10081144E+00 0.50439136E+01 + 0.20162287E+00 0.51206155E+01 + 0.30243431E+00 0.52235322E+01 + 0.40324575E+00 0.53355812E+01 + 0.50405718E+00 0.54582728E+01 + 0.60486862E+00 0.55855779E+01 + 0.70568006E+00 0.57614101E+01 + 0.80649149E+00 0.59707868E+01 + 0.90730293E+00 0.61536641E+01 + 0.10081144E+01 0.62285135E+01 + 0.11051202E+01 0.60942772E+01 + 0.12021261E+01 0.57834887E+01 + 0.12991319E+01 0.53767341E+01 + 0.13961378E+01 0.49625286E+01 + 0.14931436E+01 0.45966098E+01 + 0.15901495E+01 0.43045354E+01 + 0.16871553E+01 0.39591265E+01 + 0.17841612E+01 0.36850782E+01 + 0.18811670E+01 0.34993104E+01 + 0.19781729E+01 0.33924099E+01 + 0.20751787E+01 0.33407731E+01 + 0.21721846E+01 0.33255456E+01 + 0.21721846E+01 0.33255456E+01 + 0.22750748E+01 0.31139059E+01 + 0.23779650E+01 0.26777548E+01 + 0.24808553E+01 0.22278528E+01 + 0.25837455E+01 0.18623148E+01 + 0.26866358E+01 0.16685683E+01 + 0.27895260E+01 0.17044720E+01 + 0.28924163E+01 0.19645295E+01 + 0.29953065E+01 0.23894994E+01 + 0.30981967E+01 0.28792174E+01 + 0.32010870E+01 0.33443474E+01 + 0.33039772E+01 0.37853110E+01 + 0.34068675E+01 0.42694555E+01 + 0.35097577E+01 0.48398212E+01 + 0.36126479E+01 0.54886758E+01 + 0.37155382E+01 0.60292038E+01 + 0.38184284E+01 0.62285135E+01 + 0.38184284E+01 0.33255456E+01 + 0.39192399E+01 0.31727870E+01 + 0.40200513E+01 0.28383735E+01 + 0.41208627E+01 0.25314383E+01 + 0.42216742E+01 0.24325256E+01 + 0.43224856E+01 0.26241426E+01 + 0.44232970E+01 0.30319851E+01 + 0.45241085E+01 0.35604500E+01 + 0.46249199E+01 0.41536655E+01 + 0.47257314E+01 0.47275785E+01 + 0.48265428E+01 0.50150958E+01 + + 0.00000000E+00 0.50150958E+01 + 0.10081144E+00 0.50519031E+01 + 0.20162287E+00 0.51446098E+01 + 0.30243431E+00 0.52552852E+01 + 0.40324575E+00 0.53578570E+01 + 0.50405718E+00 0.54582728E+01 + 0.60486862E+00 0.56070555E+01 + 0.70568006E+00 0.57896850E+01 + 0.80649149E+00 0.59890030E+01 + 0.90730293E+00 0.61585162E+01 + 0.10081144E+01 0.62285135E+01 + 0.11051202E+01 0.61019414E+01 + 0.12021261E+01 0.57859765E+01 + 0.12991319E+01 0.54286434E+01 + 0.13961378E+01 0.50621297E+01 + 0.14931436E+01 0.46839545E+01 + 0.15901495E+01 0.43045354E+01 + 0.16871553E+01 0.40762645E+01 + 0.17841612E+01 0.38786269E+01 + 0.18811670E+01 0.36865275E+01 + 0.19781729E+01 0.35071195E+01 + 0.20751787E+01 0.33747086E+01 + 0.21721846E+01 0.33255456E+01 + 0.21721846E+01 0.33255456E+01 + 0.22750748E+01 0.33519964E+01 + 0.23779650E+01 0.34302613E+01 + 0.24808553E+01 0.35574597E+01 + 0.25837455E+01 0.37311333E+01 + 0.26866358E+01 0.39528090E+01 + 0.27895260E+01 0.42259866E+01 + 0.28924163E+01 0.45442294E+01 + 0.29953065E+01 0.48812789E+01 + 0.30981967E+01 0.51984680E+01 + 0.32010870E+01 0.54651915E+01 + 0.33039772E+01 0.56743424E+01 + 0.34068675E+01 0.58404944E+01 + 0.35097577E+01 0.59827869E+01 + 0.36126479E+01 0.61060097E+01 + 0.37155382E+01 0.61952867E+01 + 0.38184284E+01 0.62285135E+01 + 0.38184284E+01 0.33255456E+01 + 0.39192399E+01 0.33718010E+01 + 0.40200513E+01 0.34974330E+01 + 0.41208627E+01 0.36666048E+01 + 0.42216742E+01 0.38360841E+01 + 0.43224856E+01 0.39856278E+01 + 0.44232970E+01 0.41389548E+01 + 0.45241085E+01 0.43430303E+01 + 0.46249199E+01 0.46149078E+01 + 0.47257314E+01 0.48899253E+01 + 0.48265428E+01 0.50150958E+01 + + 0.00000000E+00 0.77906701E+01 + 0.10081144E+00 0.78295645E+01 + 0.20162287E+00 0.79316910E+01 + 0.30243431E+00 0.80643964E+01 + 0.40324575E+00 0.81999615E+01 + 0.50405718E+00 0.83315147E+01 + 0.60486862E+00 0.84700905E+01 + 0.70568006E+00 0.86234640E+01 + 0.80649149E+00 0.87668523E+01 + 0.90730293E+00 0.88251869E+01 + 0.10081144E+01 0.87993304E+01 + 0.11051202E+01 0.87214963E+01 + 0.12021261E+01 0.84928269E+01 + 0.12991319E+01 0.81666155E+01 + 0.13961378E+01 0.78233325E+01 + 0.14931436E+01 0.75290913E+01 + 0.15901495E+01 0.73077361E+01 + 0.16871553E+01 0.71430501E+01 + 0.17841612E+01 0.70078623E+01 + 0.18811670E+01 0.68900068E+01 + 0.19781729E+01 0.68019990E+01 + 0.20751787E+01 0.67775184E+01 + 0.21721846E+01 0.68599856E+01 + 0.21721846E+01 0.68599857E+01 + 0.22750748E+01 0.68593086E+01 + 0.23779650E+01 0.68985241E+01 + 0.24808553E+01 0.69923356E+01 + 0.25837455E+01 0.71820857E+01 + 0.26866358E+01 0.74932475E+01 + 0.27895260E+01 0.78939676E+01 + 0.28924163E+01 0.83074604E+01 + 0.29953065E+01 0.86601049E+01 + 0.30981967E+01 0.89016632E+01 + 0.32010870E+01 0.89984898E+01 + 0.33039772E+01 0.89741986E+01 + 0.34068675E+01 0.89233630E+01 + 0.35097577E+01 0.89291178E+01 + 0.36126479E+01 0.89100953E+01 + 0.37155382E+01 0.88253259E+01 + 0.38184284E+01 0.87993304E+01 + 0.38184284E+01 0.68599856E+01 + 0.39192399E+01 0.68577370E+01 + 0.40200513E+01 0.70097625E+01 + 0.41208627E+01 0.72139779E+01 + 0.42216742E+01 0.74324912E+01 + 0.43224856E+01 0.77014878E+01 + 0.44232970E+01 0.80632181E+01 + 0.45241085E+01 0.84475794E+01 + 0.46249199E+01 0.86072943E+01 + 0.47257314E+01 0.81549478E+01 + 0.48265428E+01 0.77906701E+01 + + 0.00000000E+00 0.95610606E+01 + 0.10081144E+00 0.96125963E+01 + 0.20162287E+00 0.97388443E+01 + 0.30243431E+00 0.98695663E+01 + 0.40324575E+00 0.99261034E+01 + 0.50405718E+00 0.98583406E+01 + 0.60486862E+00 0.96469856E+01 + 0.70568006E+00 0.93736685E+01 + 0.80649149E+00 0.91045548E+01 + 0.90730293E+00 0.88841568E+01 + 0.10081144E+01 0.87993305E+01 + 0.11051202E+01 0.89665227E+01 + 0.12021261E+01 0.93846288E+01 + 0.12991319E+01 0.98999934E+01 + 0.13961378E+01 0.10448436E+02 + 0.14931436E+01 0.10540411E+02 + 0.15901495E+01 0.10121825E+02 + 0.16871553E+01 0.94858117E+01 + 0.17841612E+01 0.87608787E+01 + 0.18811670E+01 0.80663074E+01 + 0.19781729E+01 0.74933129E+01 + 0.20751787E+01 0.70898533E+01 + 0.21721846E+01 0.68599873E+01 + 0.21721846E+01 0.68599878E+01 + 0.22750748E+01 0.73532107E+01 + 0.23779650E+01 0.85012603E+01 + 0.24808553E+01 0.98675742E+01 + 0.25837455E+01 0.11122918E+02 + 0.26866358E+01 0.12073911E+02 + 0.27895260E+01 0.12119010E+02 + 0.28924163E+01 0.11550989E+02 + 0.29953065E+01 0.11045502E+02 + 0.30981967E+01 0.10560272E+02 + 0.32010870E+01 0.10092301E+02 + 0.33039772E+01 0.96686323E+01 + 0.34068675E+01 0.93220374E+01 + 0.35097577E+01 0.90702424E+01 + 0.36126479E+01 0.89930502E+01 + 0.37155382E+01 0.88884076E+01 + 0.38184284E+01 0.87993305E+01 + 0.38184284E+01 0.68599873E+01 + 0.39192399E+01 0.72627655E+01 + 0.40200513E+01 0.81409587E+01 + 0.41208627E+01 0.92808964E+01 + 0.42216742E+01 0.10447784E+02 + 0.43224856E+01 0.11364997E+02 + 0.44232970E+01 0.11416966E+02 + 0.45241085E+01 0.10649469E+02 + 0.46249199E+01 0.98220407E+01 + 0.47257314E+01 0.95558982E+01 + 0.48265428E+01 0.95610606E+01 + + 0.00000000E+00 0.95612738E+01 + 0.10081144E+00 0.96193078E+01 + 0.20162287E+00 0.97605644E+01 + 0.30243431E+00 0.99004757E+01 + 0.40324575E+00 0.99488153E+01 + 0.50405718E+00 0.98587695E+01 + 0.60486862E+00 0.96654626E+01 + 0.70568006E+00 0.93914412E+01 + 0.80649149E+00 0.91054312E+01 + 0.90730293E+00 0.88949320E+01 + 0.10081144E+01 0.87993307E+01 + 0.11051202E+01 0.89726091E+01 + 0.12021261E+01 0.94010189E+01 + 0.12991319E+01 0.99868081E+01 + 0.13961378E+01 0.10637783E+02 + 0.14931436E+01 0.11241231E+02 + 0.15901495E+01 0.12015993E+02 + 0.16871553E+01 0.12791110E+02 + 0.17841612E+01 0.13669700E+02 + 0.18811670E+01 0.14617054E+02 + 0.19781729E+01 0.15504872E+02 + 0.20751787E+01 0.16147734E+02 + 0.21721846E+01 0.16383274E+02 + 0.21721846E+01 0.16383275E+02 + 0.22750748E+01 0.16102929E+02 + 0.23779650E+01 0.15389021E+02 + 0.24808553E+01 0.14544146E+02 + 0.25837455E+01 0.13654866E+02 + 0.26866358E+01 0.12810421E+02 + 0.27895260E+01 0.12659400E+02 + 0.28924163E+01 0.12669611E+02 + 0.29953065E+01 0.12381761E+02 + 0.30981967E+01 0.12168014E+02 + 0.32010870E+01 0.12115200E+02 + 0.33039772E+01 0.11530159E+02 + 0.34068675E+01 0.10608219E+02 + 0.35097577E+01 0.97881963E+01 + 0.36126479E+01 0.92114335E+01 + 0.37155382E+01 0.89765539E+01 + 0.38184284E+01 0.87993307E+01 + 0.38184284E+01 0.16383274E+02 + 0.39192399E+01 0.16126086E+02 + 0.40200513E+01 0.15443544E+02 + 0.41208627E+01 0.14529063E+02 + 0.42216742E+01 0.13547757E+02 + 0.43224856E+01 0.12642019E+02 + 0.44232970E+01 0.11830884E+02 + 0.45241085E+01 0.11072548E+02 + 0.46249199E+01 0.10359671E+02 + 0.47257314E+01 0.97907548E+01 + 0.48265428E+01 0.95612738E+01 + + 0.00000000E+00 0.13823821E+02 + 0.10081144E+00 0.13884401E+02 + 0.20162287E+00 0.14004301E+02 + 0.30243431E+00 0.14037221E+02 + 0.40324575E+00 0.13837990E+02 + 0.50405718E+00 0.13336825E+02 + 0.60486862E+00 0.12564838E+02 + 0.70568006E+00 0.11632210E+02 + 0.80649149E+00 0.10694772E+02 + 0.90730293E+00 0.99666279E+01 + 0.10081144E+01 0.97055504E+01 + 0.11051202E+01 0.98800457E+01 + 0.12021261E+01 0.10268850E+02 + 0.12991319E+01 0.10626180E+02 + 0.13961378E+01 0.10807382E+02 + 0.14931436E+01 0.11312009E+02 + 0.15901495E+01 0.12015993E+02 + 0.16871553E+01 0.12915023E+02 + 0.17841612E+01 0.13881854E+02 + 0.18811670E+01 0.14828689E+02 + 0.19781729E+01 0.15638385E+02 + 0.20751787E+01 0.16188127E+02 + 0.21721846E+01 0.16383275E+02 + 0.21721846E+01 0.16383275E+02 + 0.22750748E+01 0.16144997E+02 + 0.23779650E+01 0.15494795E+02 + 0.24808553E+01 0.14599039E+02 + 0.25837455E+01 0.13851013E+02 + 0.26866358E+01 0.13403127E+02 + 0.27895260E+01 0.13128300E+02 + 0.28924163E+01 0.13153687E+02 + 0.29953065E+01 0.13198531E+02 + 0.30981967E+01 0.12945870E+02 + 0.32010870E+01 0.12365502E+02 + 0.33039772E+01 0.12120190E+02 + 0.34068675E+01 0.11937061E+02 + 0.35097577E+01 0.11412791E+02 + 0.36126479E+01 0.10612455E+02 + 0.37155382E+01 0.98973135E+01 + 0.38184284E+01 0.97055504E+01 + 0.38184284E+01 0.16383275E+02 + 0.39192399E+01 0.16134492E+02 + 0.40200513E+01 0.15457556E+02 + 0.41208627E+01 0.14556423E+02 + 0.42216742E+01 0.13695076E+02 + 0.43224856E+01 0.13026037E+02 + 0.44232970E+01 0.12964944E+02 + 0.45241085E+01 0.13357065E+02 + 0.46249199E+01 0.13644870E+02 + 0.47257314E+01 0.13784913E+02 + 0.48265428E+01 0.13823821E+02 + diff --git a/test-suite/tests/testw90_example03_bands_plot/silicon.chk.fmt.bz2 b/test-suite/tests/testw90_example03_bands_plot/silicon.chk.fmt.bz2 new file mode 120000 index 000000000..866d98db1 --- /dev/null +++ b/test-suite/tests/testw90_example03_bands_plot/silicon.chk.fmt.bz2 @@ -0,0 +1 @@ +../../checkpoints/si_geninterp/silicon.chk.fmt.bz2 \ No newline at end of file diff --git a/test-suite/tests/testw90_example03_bands_plot/silicon.eig b/test-suite/tests/testw90_example03_bands_plot/silicon.eig new file mode 100644 index 000000000..5f1459e2e --- /dev/null +++ b/test-suite/tests/testw90_example03_bands_plot/silicon.eig @@ -0,0 +1,768 @@ + 1 1 -5.82184795595698 + 2 1 6.22851352806726 + 3 1 6.22851352806730 + 4 1 6.22851352806730 + 5 1 8.79933035559658 + 6 1 8.79933054461364 + 7 1 8.79933072556404 + 8 1 9.70555033956545 + 9 1 13.9976360773248 + 10 1 13.9976368312392 + 11 1 14.0125669847628 + 12 1 17.4551158815455 + 1 2 -5.00835175674957 + 2 2 2.27542882218500 + 3 2 5.45827284202603 + 4 2 5.45827284202610 + 5 2 8.27965683641076 + 6 2 9.74578558689111 + 7 2 9.74578563826205 + 8 2 13.1510839361805 + 9 2 13.4400892208538 + 10 2 13.4400909848465 + 11 2 15.1021143159274 + 12 2 17.9824078288854 + 1 3 -3.43097541339800 + 2 3 -0.829823208406647 + 3 3 5.01509582333461 + 4 3 5.01509582333463 + 5 3 7.79067033229976 + 6 3 9.56106050937395 + 7 3 9.56106089983952 + 8 3 13.8238211423743 + 9 3 16.7914351456189 + 10 3 16.7914412762764 + 11 3 17.5036730164544 + 12 3 17.6258989022800 + 1 4 -5.00835175674956 + 2 4 2.27542882218500 + 3 4 5.45827284202603 + 4 4 5.45827284202609 + 5 4 8.27965709796030 + 6 4 9.74578556862262 + 7 4 9.74578566761163 + 8 4 13.1510840662128 + 9 4 13.4400892540379 + 10 4 13.4400899787124 + 11 4 15.1021150925990 + 12 4 17.9823999764654 + 1 5 -5.00835175674958 + 2 5 2.27542882218502 + 3 5 5.45827284202599 + 4 5 5.45827284202606 + 5 5 8.27965696546126 + 6 5 9.74578558250224 + 7 5 9.74578561439551 + 8 5 13.1510841258942 + 9 5 13.4400900478124 + 10 5 13.4400908759419 + 11 5 15.1021145399330 + 12 5 17.9823944436615 + 1 6 -4.72244189801316 + 2 6 2.73996627981098 + 3 6 4.30453541765199 + 4 6 4.30453541765206 + 5 6 7.30773603219807 + 6 6 9.31799850973225 + 7 6 12.0159929891752 + 8 6 12.0159931899071 + 9 6 14.3183775129715 + 10 6 15.2145959294686 + 11 6 17.5532013300744 + 12 6 19.2295061574295 + 1 7 -3.05045169611992 + 2 7 -0.179754015032005 + 3 7 2.62414263207369 + 4 7 3.98562776588280 + 5 7 7.69294774604901 + 6 7 10.6429966043995 + 7 7 11.9998402110034 + 8 7 12.1684354226601 + 9 7 16.4170624959983 + 10 7 16.7865746356239 + 11 7 18.4374210435080 + 12 7 18.9069285628080 + 1 8 -3.73943087990982 + 2 8 0.740639425808402 + 3 8 2.38949937902047 + 4 8 4.88127893056906 + 5 8 8.66010493893309 + 6 8 11.0455018018482 + 7 8 11.3361307657665 + 8 8 12.3817607981486 + 9 8 12.6688436316767 + 10 8 15.8695319752367 + 11 8 18.7873842889674 + 12 8 19.4365842091636 + 1 9 -3.43097541339804 + 2 9 -0.829823208406633 + 3 9 5.01509582333462 + 4 9 5.01509582333465 + 5 9 7.79067000842105 + 6 9 9.56106052505992 + 7 9 9.56106080731625 + 8 9 13.8238212008359 + 9 9 16.7914202627925 + 10 9 16.7914222952381 + 11 9 17.5036719551924 + 12 9 17.6258967408136 + 1 10 -3.05045169611992 + 2 10 -0.179754015031995 + 3 10 2.62414263207368 + 4 10 3.98562776588279 + 5 10 7.69294777576086 + 6 10 10.6429967358059 + 7 10 11.9998402417384 + 8 10 12.1684353832631 + 9 10 16.4170629750601 + 10 10 16.7865748912428 + 11 10 18.4374165594951 + 12 10 18.9069223670913 + 1 11 -1.60998373235361 + 2 11 -1.60998368901575 + 3 11 3.32554562092928 + 4 11 3.32554562092933 + 5 11 6.85998568215995 + 6 11 6.85998780525920 + 7 11 16.3832745181727 + 8 11 16.3832754374594 + 9 11 17.1865705183116 + 10 11 17.1865707035746 + 11 11 18.8247942705432 + 12 11 18.8251414613105 + 1 12 -3.05045169611991 + 2 12 -0.179754015031952 + 3 12 2.62414263207365 + 4 12 3.98562776588283 + 5 12 7.69294787008566 + 6 12 10.6429966307836 + 7 12 11.9998402299411 + 8 12 12.1684354847114 + 9 12 16.4170624943141 + 10 12 16.7865749011470 + 11 12 18.4374163854626 + 12 12 18.9069224376762 + 1 13 -5.00835175674960 + 2 13 2.27542882218498 + 3 13 5.45827284202603 + 4 13 5.45827284202610 + 5 13 8.27965730110242 + 6 13 9.74578559495814 + 7 13 9.74578561243101 + 8 13 13.1510840172863 + 9 13 13.4400895138454 + 10 13 13.4400913739505 + 11 13 15.1021175903272 + 12 13 17.9823952096265 + 1 14 -3.73943087990984 + 2 14 0.740639425808351 + 3 14 2.38949937902049 + 4 14 4.88127893056905 + 5 14 8.66010486954983 + 6 14 11.0455022358402 + 7 14 11.3361307371576 + 8 14 12.3817608436448 + 9 14 12.6688444774452 + 10 14 15.8695319924779 + 11 14 18.7873764889742 + 12 14 19.4360779954775 + 1 15 -3.05045169611992 + 2 15 -0.179754015031988 + 3 15 2.62414263207369 + 4 15 3.98562776588281 + 5 15 7.69294778170168 + 6 15 10.6429966244522 + 7 15 11.9998402099873 + 8 15 12.1684354682397 + 9 15 16.4170624546280 + 10 15 16.7865748600423 + 11 15 18.4374169695971 + 12 15 18.9069298138424 + 1 16 -4.72244189801317 + 2 16 2.73996627981104 + 3 16 4.30453541765201 + 4 16 4.30453541765201 + 5 16 7.30773559846984 + 6 16 9.31799850459251 + 7 16 12.0159928807640 + 8 16 12.0159934685691 + 9 16 14.3183775043513 + 10 16 15.2145915619052 + 11 16 17.5532275352961 + 12 16 19.2296471223807 + 1 17 -5.00835175674954 + 2 17 2.27542882218502 + 3 17 5.45827284202606 + 4 17 5.45827284202614 + 5 17 8.27965720292890 + 6 17 9.74578558444191 + 7 17 9.74578563940226 + 8 17 13.1510841540022 + 9 17 13.4400898816633 + 10 17 13.4400907177086 + 11 17 15.1021151620475 + 12 17 17.9824299007859 + 1 18 -4.72244189801313 + 2 18 2.73996627981102 + 3 18 4.30453541765198 + 4 18 4.30453541765202 + 5 18 7.30773582875286 + 6 18 9.31799850867020 + 7 18 12.0159928956659 + 8 18 12.0159932755573 + 9 18 14.3183777321638 + 10 18 15.2145886086962 + 11 18 17.5532084539110 + 12 18 19.2294500682353 + 1 19 -3.05045169611988 + 2 19 -0.179754015031912 + 3 19 2.62414263207370 + 4 19 3.98562776588279 + 5 19 7.69294781135400 + 6 19 10.6429966117347 + 7 19 11.9998402068458 + 8 19 12.1684358061362 + 9 19 16.4170624876453 + 10 19 16.7865746230123 + 11 19 18.4374174068382 + 12 19 18.9069197331587 + 1 20 -3.73943087990981 + 2 20 0.740639425808364 + 3 20 2.38949937902045 + 4 20 4.88127893056904 + 5 20 8.66010483610222 + 6 20 11.0454995717606 + 7 20 11.3361307068679 + 8 20 12.3817606693710 + 9 20 12.6688434465410 + 10 20 15.8695310453703 + 11 20 18.7873750606591 + 12 20 19.4359967873386 + 1 21 -4.72244189801323 + 2 21 2.73996627981111 + 3 21 4.30453541765199 + 4 21 4.30453541765201 + 5 21 7.30773606368768 + 6 21 9.31799850969790 + 7 21 12.0159928948817 + 8 21 12.0159929692165 + 9 21 14.3183777983981 + 10 21 15.2145836516347 + 11 21 17.5532889865706 + 12 21 19.2295508645351 + 1 22 -5.00835175674959 + 2 22 2.27542882218501 + 3 22 5.45827284202605 + 4 22 5.45827284202612 + 5 22 8.27965692755995 + 6 22 9.74578558585933 + 7 22 9.74578563344331 + 8 22 13.1510843023912 + 9 22 13.4400894185777 + 10 22 13.4400914590268 + 11 22 15.1021146797354 + 12 22 17.9823939200149 + 1 23 -3.73943087990977 + 2 23 0.740639425808353 + 3 23 2.38949937902044 + 4 23 4.88127893056902 + 5 23 8.66010487894489 + 6 23 11.0455005871833 + 7 23 11.3361307493345 + 8 23 12.3817609543969 + 9 23 12.6688436504796 + 10 23 15.8695331874237 + 11 23 18.7873758243266 + 12 23 19.4359622842603 + 1 24 -3.05045169611994 + 2 24 -0.179754015032001 + 3 24 2.62414263207369 + 4 24 3.98562776588279 + 5 24 7.69294781781977 + 6 24 10.6429966334474 + 7 24 11.9998401865749 + 8 24 12.1684354224870 + 9 24 16.4170624090074 + 10 24 16.7865747242054 + 11 24 18.4374164381344 + 12 24 18.9069234254288 + 1 25 -3.05045169611994 + 2 25 -0.179754015031940 + 3 25 2.62414263207368 + 4 25 3.98562776588278 + 5 25 7.69294776425545 + 6 25 10.6429966157949 + 7 25 11.9998401813706 + 8 25 12.1684355454036 + 9 25 16.4170636805503 + 10 25 16.7865746237974 + 11 25 18.4374235608165 + 12 25 18.9069151071864 + 1 26 -3.73943087990981 + 2 26 0.740639425808323 + 3 26 2.38949937902047 + 4 26 4.88127893056905 + 5 26 8.66010504775919 + 6 26 11.0455016802298 + 7 26 11.3361307833164 + 8 26 12.3817610405091 + 9 26 12.6688444931633 + 10 26 15.8695335481985 + 11 26 18.7873788845202 + 12 26 19.4361852423827 + 1 27 -3.05045169611992 + 2 27 -0.179754015031929 + 3 27 2.62414263207369 + 4 27 3.98562776588283 + 5 27 7.69294775046784 + 6 27 10.6429966585847 + 7 27 11.9998402012447 + 8 27 12.1684354067574 + 9 27 16.4170626891171 + 10 27 16.7865747147975 + 11 27 18.4374164476273 + 12 27 18.9069264181780 + 1 28 -1.43169117082049 + 2 28 -1.43169112471623 + 3 28 2.27881757785550 + 4 28 2.27881759974405 + 5 28 10.4452472084692 + 6 28 10.4452473375708 + 7 28 11.2601968376259 + 8 28 11.2601976646551 + 9 28 16.8207248951830 + 10 28 16.8207302972869 + 11 28 19.2914407058199 + 12 28 19.2914469056331 + 1 29 -3.73943087990981 + 2 29 0.740639425808371 + 3 29 2.38949937902045 + 4 29 4.88127893056903 + 5 29 8.66010483751159 + 6 29 11.0454996349291 + 7 29 11.3361307088039 + 8 29 12.3817606691852 + 9 29 12.6688434745499 + 10 29 15.8695310575444 + 11 29 18.7873750938093 + 12 29 19.4359813083984 + 1 30 -3.05045169611994 + 2 30 -0.179754015031992 + 3 30 2.62414263207367 + 4 30 3.98562776588277 + 5 30 7.69294784876246 + 6 30 10.6429966284463 + 7 30 11.9998402123162 + 8 30 12.1684354087087 + 9 30 16.4170626286197 + 10 30 16.7865773132265 + 11 30 18.4374210886141 + 12 30 18.9073619162194 + 1 31 -1.43169117082052 + 2 31 -1.43169112471623 + 3 31 2.27881757785552 + 4 31 2.27881759974403 + 5 31 10.4452472150157 + 6 31 10.4452473307399 + 7 31 11.2601970581588 + 8 31 11.2601982259255 + 9 31 16.8207249563078 + 10 31 16.8207312113762 + 11 31 19.2914437330597 + 12 31 19.2914593684118 + 1 32 -3.05045169611992 + 2 32 -0.179754015031983 + 3 32 2.62414263207367 + 4 32 3.98562776588281 + 5 32 7.69294779311844 + 6 32 10.6429966717269 + 7 32 11.9998402203590 + 8 32 12.1684353867713 + 9 32 16.4170630674324 + 10 32 16.7865753956607 + 11 32 18.4374167014800 + 12 32 18.9069226851231 + 1 33 -3.43097541339806 + 2 33 -0.829823208406643 + 3 33 5.01509582333460 + 4 33 5.01509582333460 + 5 33 7.79067020471054 + 6 33 9.56106060866542 + 7 33 9.56106095190445 + 8 33 13.8238211279704 + 9 33 16.7914194169874 + 10 33 16.7914243959502 + 11 33 17.5036730501120 + 12 33 17.6259073889530 + 1 34 -3.05045169611994 + 2 34 -0.179754015031948 + 3 34 2.62414263207368 + 4 34 3.98562776588279 + 5 34 7.69294781221392 + 6 34 10.6429966038855 + 7 34 11.9998402063305 + 8 34 12.1684354123813 + 9 34 16.4170625577556 + 10 34 16.7865749482796 + 11 34 18.4374166434846 + 12 34 18.9069271127375 + 1 35 -1.60998373235361 + 2 35 -1.60998368901570 + 3 35 3.32554562092925 + 4 35 3.32554562092932 + 5 35 6.85998578680956 + 6 35 6.85998756580624 + 7 35 16.3832742827821 + 8 35 16.3832750423740 + 9 35 17.1865706488816 + 10 35 17.1865707421693 + 11 35 18.8247859287129 + 12 35 18.8248393700848 + 1 36 -3.05045169611991 + 2 36 -0.179754015031990 + 3 36 2.62414263207365 + 4 36 3.98562776588284 + 5 36 7.69294772336014 + 6 36 10.6429966134678 + 7 36 11.9998401816487 + 8 36 12.1684354697765 + 9 36 16.4170625630167 + 10 36 16.7865746653547 + 11 36 18.4374165790950 + 12 36 18.9069201204111 + 1 37 -3.05045169611995 + 2 37 -0.179754015031957 + 3 37 2.62414263207370 + 4 37 3.98562776588279 + 5 37 7.69294773668293 + 6 37 10.6429966375275 + 7 37 11.9998402020286 + 8 37 12.1684354172172 + 9 37 16.4170627424452 + 10 37 16.7865747641098 + 11 37 18.4374165420733 + 12 37 18.9069265374549 + 1 38 -3.73943087990982 + 2 38 0.740639425808376 + 3 38 2.38949937902043 + 4 38 4.88127893056906 + 5 38 8.66010491961149 + 6 38 11.0455016397106 + 7 38 11.3361307309728 + 8 38 12.3817610606128 + 9 38 12.6688439835655 + 10 38 15.8695322397633 + 11 38 18.7873758455379 + 12 38 19.4359614581295 + 1 39 -3.05045169611992 + 2 39 -0.179754015031964 + 3 39 2.62414263207366 + 4 39 3.98562776588282 + 5 39 7.69294772331500 + 6 39 10.6429966248835 + 7 39 11.9998402148503 + 8 39 12.1684353517565 + 9 39 16.4170625954789 + 10 39 16.7865749195650 + 11 39 18.4374168681751 + 12 39 18.9069287012520 + 1 40 -1.43169117082048 + 2 40 -1.43169112471619 + 3 40 2.27881757785554 + 4 40 2.27881759974402 + 5 40 10.4452472208045 + 6 40 10.4452473128089 + 7 40 11.2601968529736 + 8 40 11.2601976989088 + 9 40 16.8207284395531 + 10 40 16.8207327682754 + 11 40 19.2914417784422 + 12 40 19.2914456609443 + 1 41 -1.60998373235360 + 2 41 -1.60998368901570 + 3 41 3.32554562092924 + 4 41 3.32554562092929 + 5 41 6.85998559133216 + 6 41 6.85998734726787 + 7 41 16.3832743536446 + 8 41 16.3832752233307 + 9 41 17.1865704668743 + 10 41 17.1865710332053 + 11 41 18.8247796060664 + 12 41 18.8248064358765 + 1 42 -3.05045169611992 + 2 42 -0.179754015031995 + 3 42 2.62414263207367 + 4 42 3.98562776588279 + 5 42 7.69294785901042 + 6 42 10.6429966392994 + 7 42 11.9998401904121 + 8 42 12.1684354187607 + 9 42 16.4170626520219 + 10 42 16.7865746226098 + 11 42 18.4374179799903 + 12 42 18.9069253553001 + 1 43 -3.43097541339801 + 2 43 -0.829823208406623 + 3 43 5.01509582333459 + 4 43 5.01509582333462 + 5 43 7.79067003047558 + 6 43 9.56106054576303 + 7 43 9.56106080410473 + 8 43 13.8238212308535 + 9 43 16.7914226799852 + 10 43 16.7916749035184 + 11 43 17.5036720225729 + 12 43 17.6258996797220 + 1 44 -3.05045169611991 + 2 44 -0.179754015031939 + 3 44 2.62414263207367 + 4 44 3.98562776588280 + 5 44 7.69294779939549 + 6 44 10.6429966566297 + 7 44 11.9998401879849 + 8 44 12.1684354360333 + 9 44 16.4170624239700 + 10 44 16.7865746617511 + 11 44 18.4374163950789 + 12 44 18.9069185677468 + 1 45 -3.05045169611992 + 2 45 -0.179754015031958 + 3 45 2.62414263207368 + 4 45 3.98562776588279 + 5 45 7.69294777729305 + 6 45 10.6429966361906 + 7 45 11.9998401896154 + 8 45 12.1684354219131 + 9 45 16.4170626438136 + 10 45 16.7865752493153 + 11 45 18.4374163611183 + 12 45 18.9069380799664 + 1 46 -1.43169117082054 + 2 46 -1.43169112471621 + 3 46 2.27881757785552 + 4 46 2.27881759974395 + 5 46 10.4452472258293 + 6 46 10.4452473160397 + 7 46 11.2601969454932 + 8 46 11.2601979260337 + 9 46 16.8207282162182 + 10 46 16.8207344121495 + 11 46 19.2914451232593 + 12 46 19.2914500260949 + 1 47 -3.05045169611991 + 2 47 -0.179754015031965 + 3 47 2.62414263207367 + 4 47 3.98562776588280 + 5 47 7.69294781352625 + 6 47 10.6429966184259 + 7 47 11.9998402092122 + 8 47 12.1684354013784 + 9 47 16.4170624636392 + 10 47 16.7865746300553 + 11 47 18.4374164981663 + 12 47 18.9069201097476 + 1 48 -3.73943087990982 + 2 48 0.740639425808336 + 3 48 2.38949937902043 + 4 48 4.88127893056904 + 5 48 8.66010486954773 + 6 48 11.0455006086350 + 7 48 11.3361307319157 + 8 48 12.3817608484779 + 9 48 12.6688436219136 + 10 48 15.8695317394032 + 11 48 18.7873785455073 + 12 48 19.4363646942188 + 1 49 -5.00835175674958 + 2 49 2.27542882218498 + 3 49 5.45827284202606 + 4 49 5.45827284202613 + 5 49 8.27965702883815 + 6 49 9.74578558152046 + 7 49 9.74578564622079 + 8 49 13.1510841029393 + 9 49 13.4400893758361 + 10 49 13.4400908735562 + 11 49 15.1021147130482 + 12 49 17.9823949796446 + 1 50 -3.73943087990981 + 2 50 0.740639425808363 + 3 50 2.38949937902040 + 4 50 4.88127893056903 + 5 50 8.66010502696052 + 6 50 11.0455009761701 + 7 50 11.3361307456601 + 8 50 12.3817608550817 + 9 50 12.6688443192677 + 10 50 15.8695322920885 + 11 50 18.7873762330916 + 12 50 19.4359782355459 + 1 51 -3.05045169611992 + 2 51 -0.179754015032001 + 3 51 2.62414263207367 + 4 51 3.98562776588281 + 5 51 7.69294778450401 + 6 51 10.6429966185756 + 7 51 11.9998401852279 + 8 51 12.1684353952387 + 9 51 16.4170629944860 + 10 51 16.7865746289690 + 11 51 18.4374185942610 + 12 51 18.9069306646558 + 1 52 -4.72244189801326 + 2 52 2.73996627981110 + 3 52 4.30453541765200 + 4 52 4.30453541765204 + 5 52 7.30773552307417 + 6 52 9.31799850972462 + 7 52 12.0159929608713 + 8 52 12.0159932017940 + 9 52 14.3183791985899 + 10 52 15.2145847436512 + 11 52 17.5532942843914 + 12 52 19.2296117963077 + 1 53 -3.73943087990982 + 2 53 0.740639425808410 + 3 53 2.38949937902048 + 4 53 4.88127893056906 + 5 53 8.66010488890284 + 6 53 11.0455008547966 + 7 53 11.3361307438582 + 8 53 12.3817608870714 + 9 53 12.6688440327451 + 10 53 15.8695324005282 + 11 53 18.7873757520653 + 12 53 19.4359641885935 + 1 54 -3.05045169611993 + 2 54 -0.179754015031999 + 3 54 2.62414263207370 + 4 54 3.98562776588283 + 5 54 7.69294780537766 + 6 54 10.6429966624209 + 7 54 11.9998402133414 + 8 54 12.1684353981526 + 9 54 16.4170631558542 + 10 54 16.7865756881801 + 11 54 18.4374164056725 + 12 54 18.9069185655473 + 1 55 -1.43169117082056 + 2 55 -1.43169112471623 + 3 55 2.27881757785551 + 4 55 2.27881759974399 + 5 55 10.4452471862216 + 6 55 10.4452473266611 + 7 55 11.2601968892105 + 8 55 11.2601977264414 + 9 55 16.8207237306461 + 10 55 16.8207331280146 + 11 55 19.2914535665315 + 12 55 19.2914561658870 + 1 56 -3.05045169611990 + 2 56 -0.179754015031949 + 3 56 2.62414263207365 + 4 56 3.98562776588278 + 5 56 7.69294781063527 + 6 56 10.6429966113637 + 7 56 11.9998402099959 + 8 56 12.1684353881496 + 9 56 16.4170652605237 + 10 56 16.7865746350455 + 11 56 18.4374179740591 + 12 56 18.9069230774098 + 1 57 -3.05045169611992 + 2 57 -0.179754015031986 + 3 57 2.62414263207367 + 4 57 3.98562776588280 + 5 57 7.69294775408652 + 6 57 10.6429966635099 + 7 57 11.9998402147153 + 8 57 12.1684353690102 + 9 57 16.4170629511621 + 10 57 16.7865756763384 + 11 57 18.4374167340213 + 12 57 18.9069222608902 + 1 58 -1.43169117082054 + 2 58 -1.43169112471621 + 3 58 2.27881757785554 + 4 58 2.27881759974402 + 5 58 10.4452472071747 + 6 58 10.4452473122113 + 7 58 11.2601968231439 + 8 58 11.2601977330238 + 9 58 16.8207289523567 + 10 58 16.8207317950439 + 11 58 19.2914401447857 + 12 58 19.2914472394944 + 1 59 -3.05045169611992 + 2 59 -0.179754015032004 + 3 59 2.62414263207367 + 4 59 3.98562776588279 + 5 59 7.69294778240200 + 6 59 10.6429966899827 + 7 59 11.9998402235586 + 8 59 12.1684354286905 + 9 59 16.4170628495939 + 10 59 16.7865752083054 + 11 59 18.4374169477112 + 12 59 18.9069213958311 + 1 60 -3.73943087990982 + 2 60 0.740639425808404 + 3 60 2.38949937902044 + 4 60 4.88127893056906 + 5 60 8.66010493082112 + 6 60 11.0455016444359 + 7 60 11.3361307390958 + 8 60 12.3817609566385 + 9 60 12.6688435561049 + 10 60 15.8695320676787 + 11 60 18.7873873442651 + 12 60 19.4370428488266 + 1 61 -4.72244189801320 + 2 61 2.73996627981101 + 3 61 4.30453541765202 + 4 61 4.30453541765205 + 5 61 7.30773542976948 + 6 61 9.31799853652970 + 7 61 12.0159929140504 + 8 61 12.0159934003392 + 9 61 14.3183801900750 + 10 61 15.2145883210391 + 11 61 17.5532045951908 + 12 61 19.2294900883511 + 1 62 -3.05045169611991 + 2 62 -0.179754015031965 + 3 62 2.62414263207369 + 4 62 3.98562776588276 + 5 62 7.69294778467577 + 6 62 10.6429966595087 + 7 62 11.9998402039725 + 8 62 12.1684354200969 + 9 62 16.4170624477350 + 10 62 16.7865747885241 + 11 62 18.4374166232129 + 12 62 18.9069432425687 + 1 63 -3.73943087990984 + 2 63 0.740639425808377 + 3 63 2.38949937902047 + 4 63 4.88127893056905 + 5 63 8.66010488486142 + 6 63 11.0455014794720 + 7 63 11.3361307703604 + 8 63 12.3817608472501 + 9 63 12.6688435755154 + 10 63 15.8695331930024 + 11 63 18.7873875208469 + 12 63 19.4364239586863 + 1 64 -5.00835175674957 + 2 64 2.27542882218499 + 3 64 5.45827284202602 + 4 64 5.45827284202612 + 5 64 8.27965685312538 + 6 64 9.74578558869845 + 7 64 9.74578563277625 + 8 64 13.1510839535442 + 9 64 13.4400895849829 + 10 64 13.4400906994352 + 11 64 15.1021144733181 + 12 64 17.9823975464143 diff --git a/test-suite/tests/testw90_example03_bands_plot/silicon.win b/test-suite/tests/testw90_example03_bands_plot/silicon.win new file mode 100644 index 000000000..6ee471b4e --- /dev/null +++ b/test-suite/tests/testw90_example03_bands_plot/silicon.win @@ -0,0 +1,113 @@ +restart = plot +bands_plot = true +bands_num_points = 10 + +num_bands = 12 +num_wann = 8 +use_ws_distance = .false. +search_shells=12 + +dis_win_max = 17.0d0 +dis_froz_max = 6.4d0 +dis_num_iter = 120 +dis_mix_ratio = 1.d0 + +num_iter = 50 +num_print_cycles = 10 + +Begin Atoms_Frac +Si -0.25 0.75 -0.25 +Si 0.00 0.00 0.00 +End Atoms_Frac + +Begin Projections +Si : sp3 +End Projections + +begin kpoint_path +L 0.50000 0.50000 0.5000 G 0.00000 0.00000 0.0000 +G 0.00000 0.00000 0.0000 X 0.50000 0.00000 0.5000 +X 0.50000 -0.50000 0.0000 K 0.37500 -0.37500 0.0000 +K 0.37500 -0.37500 0.0000 G 0.00000 0.00000 0.0000 +X 0.50000 0.00000 0.5000 L 0.50000 0.50000 0.5000 +end kpoint_path + + +Begin Unit_Cell_Cart +-2.6988 0.0000 2.6988 + 0.0000 2.6988 2.6988 +-2.6988 2.6988 0.0000 +End Unit_Cell_Cart + + +mp_grid = 4 4 4 + + +begin kpoints +0.0000 0.0000 0.0000 +0.0000 0.2500 0.0000 +0.0000 0.5000 0.0000 +0.0000 0.7500 0.0000 +0.2500 0.0000 0.0000 +0.2500 0.2500 0.0000 +0.2500 0.5000 0.0000 +0.2500 0.7500 0.0000 +0.5000 0.0000 0.0000 +0.5000 0.2500 0.0000 +0.5000 0.5000 0.0000 +0.5000 0.7500 0.0000 +0.7500 0.0000 0.0000 +0.7500 0.2500 0.0000 +0.7500 0.5000 0.0000 +0.7500 0.7500 0.0000 +0.0000 0.0000 0.2500 +0.0000 0.2500 0.2500 +0.0000 0.5000 0.2500 +0.0000 0.7500 0.2500 +0.2500 0.0000 0.2500 +0.2500 0.2500 0.2500 +0.2500 0.5000 0.2500 +0.2500 0.7500 0.2500 +0.5000 0.0000 0.2500 +0.5000 0.2500 0.2500 +0.5000 0.5000 0.2500 +0.5000 0.7500 0.2500 +0.7500 0.0000 0.2500 +0.7500 0.2500 0.2500 +0.7500 0.5000 0.2500 +0.7500 0.7500 0.2500 +0.0000 0.0000 0.5000 +0.0000 0.2500 0.5000 +0.0000 0.5000 0.5000 +0.0000 0.7500 0.5000 +0.2500 0.0000 0.5000 +0.2500 0.2500 0.5000 +0.2500 0.5000 0.5000 +0.2500 0.7500 0.5000 +0.5000 0.0000 0.5000 +0.5000 0.2500 0.5000 +0.5000 0.5000 0.5000 +0.5000 0.7500 0.5000 +0.7500 0.0000 0.5000 +0.7500 0.2500 0.5000 +0.7500 0.5000 0.5000 +0.7500 0.7500 0.5000 +0.0000 0.0000 0.7500 +0.0000 0.2500 0.7500 +0.0000 0.5000 0.7500 +0.0000 0.7500 0.7500 +0.2500 0.0000 0.7500 +0.2500 0.2500 0.7500 +0.2500 0.5000 0.7500 +0.2500 0.7500 0.7500 +0.5000 0.0000 0.7500 +0.5000 0.2500 0.7500 +0.5000 0.5000 0.7500 +0.5000 0.7500 0.7500 +0.7500 0.0000 0.7500 +0.7500 0.2500 0.7500 +0.7500 0.5000 0.7500 +0.7500 0.7500 0.7500 +End Kpoints + + diff --git a/test-suite/tests/testw90_write_u_matrices_disent/.gitignore b/test-suite/tests/testw90_write_u_matrices_disent/.gitignore new file mode 100644 index 000000000..f101e1508 --- /dev/null +++ b/test-suite/tests/testw90_write_u_matrices_disent/.gitignore @@ -0,0 +1,2 @@ +wannier_u.mat +wannier.wout \ No newline at end of file diff --git a/test-suite/tests/userconfig b/test-suite/tests/userconfig index b6c05d0cc..99edece84 100644 --- a/test-suite/tests/userconfig +++ b/test-suite/tests/userconfig @@ -226,6 +226,12 @@ exe = ../../wannier90.x extract_fn = tools parsers.parse_wout.parse tolerance = ( (1.0e-6, 1.0e-6, 'omegaI')) +[WANNIER90_BANDS_PLOT] +exe = ../../wannier90.x +extract_fn = tools parsers.parse_w90_bands_dat.parse +tolerance = ( (1.0e-6, 1.0e-6, 'kpath'), + (1.0e-5, 1.0e-5, 'eigval')) + [user] # This is the string (or list of strings) that identifies sets of tests # to be run - one could have multiple ones diff --git a/test-suite/tools/parsers/parse_w90_bands_dat.py b/test-suite/tools/parsers/parse_w90_bands_dat.py new file mode 100644 index 000000000..6290b729b --- /dev/null +++ b/test-suite/tools/parsers/parse_w90_bands_dat.py @@ -0,0 +1,45 @@ +""" +Parser function parse() to parse the _band.dat output file of wannier90.x. + +""" +import inspect +from collections import defaultdict + +from . import show_output + +def parse(fname): + """ + Open the file, parses it and return the values. + """ + retdict = defaultdict(list) + + if show_output: + print("[{}.{}] Parsing file '{}'".format( + __name__, inspect.currentframe().f_code.co_name, fname)) + + with open(fname) as f: + lines = f.readlines() + + for lno, l in enumerate(lines): + + pieces = l.split() + + if len(pieces) == 0: # blank line + continue + + if len(pieces) == 2: # kpath eigval + retdict["kpath"].append(float(pieces[0])) + retdict["eigval"].append(float(pieces[1])) + else: + raise ValueError("Wrong line length ({}, instead of 2); line content: {}".format( + len(pieces), l)) + + retdict = dict(retdict) + if show_output: + for k in sorted(retdict): + print(" {}: {}".format(k, retdict[k])) + print("-"*72) + return retdict + + +