write wannier90 parameters to stdout
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(atom_data_type), | intent(in) | :: | atom_data | |||
| type(band_plot_type), | intent(in) | :: | band_plot | |||
| type(dis_control_type), | intent(in) | :: | dis_control | |||
| type(dis_spheres_type), | intent(in) | :: | dis_spheres | |||
| real(kind=dp), | intent(in), | allocatable | :: | fermi_energy_list(:) | ||
| type(fermi_surface_plot_type), | intent(in) | :: | fermi_surface_data | |||
| real(kind=dp), | intent(in) | :: | kpt_latt(:,:) | |||
| type(output_file_type), | intent(in) | :: | output_file | |||
| type(wvfn_read_type), | intent(in) | :: | wvfn_read | |||
| type(wann_control_type), | intent(in) | :: | wann_control | |||
| type(proj_type), | intent(in), | allocatable | :: | proj(:) | ||
| type(proj_type), | intent(in), | allocatable | :: | proj_input(:) | ||
| type(real_space_ham_type), | intent(in) | :: | real_space_ham | |||
| type(select_projection_type), | intent(in) | :: | select_proj | |||
| type(kpoint_path_type), | intent(in) | :: | kpoint_path | |||
| type(transport_type), | intent(in) | :: | tran | |||
| type(print_output_type), | intent(in) | :: | print_output | |||
| type(wannier_data_type), | intent(in) | :: | wannier_data | |||
| type(wannier_plot_type), | intent(in) | :: | wann_plot | |||
| type(w90_calculation_type), | intent(in) | :: | w90_calculation | |||
| real(kind=dp), | intent(in) | :: | real_lattice(3,3) | |||
| real(kind=dp), | intent(in) | :: | symmetrize_eps | |||
| integer, | intent(in) | :: | mp_grid(3) | |||
| integer, | intent(in) | :: | num_bands | |||
| integer, | intent(in) | :: | num_kpts | |||
| integer, | intent(in) | :: | num_proj | |||
| integer, | intent(in) | :: | num_wann | |||
| integer, | intent(in) | :: | optimisation | |||
| logical, | intent(in) | :: | cp_pp | |||
| logical, | intent(in) | :: | gamma_only | |||
| logical, | intent(in) | :: | lsitesymmetry | |||
| logical, | intent(in) | :: | spinors | |||
| logical, | intent(in) | :: | use_bloch_phases | |||
| integer, | intent(in) | :: | stdout |
subroutine w90_wannier90_readwrite_write(atom_data, band_plot, dis_control, dis_spheres, & fermi_energy_list, fermi_surface_data, kpt_latt, & output_file, wvfn_read, wann_control, proj, proj_input, & real_space_ham, select_proj, kpoint_path, tran, & print_output, wannier_data, wann_plot, w90_calculation, & real_lattice, symmetrize_eps, mp_grid, num_bands, & num_kpts, num_proj, num_wann, optimisation, cp_pp, & gamma_only, lsitesymmetry, spinors, use_bloch_phases, & stdout) !================================================! ! !! write wannier90 parameters to stdout ! !================================================ use w90_utility, only: utility_recip_lattice_base, utility_inverse_mat, utility_cart_to_frac, & utility_frac_to_cart implicit none !passed vaiables type(w90_calculation_type), intent(in) :: w90_calculation type(output_file_type), intent(in) :: output_file type(real_space_ham_type), intent(in) :: real_space_ham type(wvfn_read_type), intent(in) :: wvfn_read type(print_output_type), intent(in) :: print_output type(band_plot_type), intent(in) :: band_plot type(wann_control_type), intent(in) :: wann_control type(wannier_data_type), intent(in) :: wannier_data type(dis_control_type), intent(in) :: dis_control type(dis_spheres_type), intent(in) :: dis_spheres type(fermi_surface_plot_type), intent(in) :: fermi_surface_data type(transport_type), intent(in) :: tran type(atom_data_type), intent(in) :: atom_data type(select_projection_type), intent(in) :: select_proj type(proj_type), allocatable, intent(in) :: proj_input(:) type(kpoint_path_type), intent(in) :: kpoint_path type(wannier_plot_type), intent(in) :: wann_plot type(proj_type), allocatable, intent(in) :: proj(:) integer, intent(in) :: num_bands integer, intent(in) :: num_wann integer, intent(in) :: stdout integer, intent(in) :: mp_grid(3) integer, intent(in) :: num_proj integer, intent(in) :: num_kpts integer, intent(in) :: optimisation real(kind=dp), intent(in) :: real_lattice(3, 3) real(kind=dp), intent(in) :: symmetrize_eps real(kind=dp), intent(in) :: kpt_latt(:, :) real(kind=dp), allocatable, intent(in) :: fermi_energy_list(:) ! RS: symmetry-adapted Wannier functions logical, intent(in) :: lsitesymmetry logical, intent(in) :: cp_pp, use_bloch_phases logical, intent(in) :: gamma_only logical, intent(in) :: spinors ! local variables character(len=4) :: one_dim_axis integer :: i, nkp, loop, nat, nsp, bands_num_spec_points logical :: disentanglement real(kind=dp) :: ccentres_frac(3) real(kind=dp) :: cell_volume real(kind=dp) :: recip_lattice(3, 3), inv_lattice(3, 3), pos_frac(3), kpt_cart(3), volume disentanglement = (num_bands > num_wann) ! `one_dim_axis` is only meaningful when the system is treated as reduced- ! dimensional, but it is printed unconditionally below (for any run with ! transport enabled or iprint > 2). Without a default it would be written ! while undefined whenever the input does not set `one_dim_axis`. one_dim_axis = 'none' if (real_space_ham%one_dim_dir == 1) one_dim_axis = 'x' if (real_space_ham%one_dim_dir == 2) one_dim_axis = 'y' if (real_space_ham%one_dim_dir == 3) one_dim_axis = 'z' call utility_inverse_mat(real_lattice, inv_lattice) ! skip most printout if (w90_calculation%transport .and. tran%read_ht); continues with transport at end if (print_output%iprint > 0 .and. .not. (w90_calculation%transport .and. tran%read_ht)) then ! System write (stdout, *) write (stdout, '(36x,a6)') '------' write (stdout, '(36x,a6)') 'SYSTEM' write (stdout, '(36x,a6)') '------' write (stdout, *) if (trim(print_output%length_unit) == 'Ang') then write (stdout, '(30x,a21)') 'Lattice Vectors (Ang)' else write (stdout, '(28x,a22)') 'Lattice Vectors (Bohr)' end if write (stdout, 101) 'a_1', (real_lattice(1, I)*print_output%lenconfac, i=1, 3) write (stdout, 101) 'a_2', (real_lattice(2, I)*print_output%lenconfac, i=1, 3) write (stdout, 101) 'a_3', (real_lattice(3, I)*print_output%lenconfac, i=1, 3) write (stdout, *) cell_volume = real_lattice(1, 1)*(real_lattice(2, 2)*real_lattice(3, 3) - real_lattice(3, 2)*real_lattice(2, 3)) + & real_lattice(1, 2)*(real_lattice(2, 3)*real_lattice(3, 1) - real_lattice(3, 3)*real_lattice(2, 1)) + & real_lattice(1, 3)*(real_lattice(2, 1)*real_lattice(3, 2) - real_lattice(3, 1)*real_lattice(2, 2)) write (stdout, '(19x,a17,3x,f11.5)', advance='no') & 'Unit Cell Volume:', cell_volume*print_output%lenconfac**3 if (trim(print_output%length_unit) == 'Ang') then write (stdout, '(2x,a7)') '(Ang^3)' else write (stdout, '(2x,a8)') '(Bohr^3)' end if write (stdout, *) if (trim(print_output%length_unit) == 'Ang') then write (stdout, '(24x,a33)') 'Reciprocal-Space Vectors (Ang^-1)' else write (stdout, '(22x,a34)') 'Reciprocal-Space Vectors (Bohr^-1)' end if call utility_recip_lattice_base(real_lattice, recip_lattice, volume) write (stdout, 101) 'b_1', (recip_lattice(1, I)/print_output%lenconfac, i=1, 3) write (stdout, 101) 'b_2', (recip_lattice(2, I)/print_output%lenconfac, i=1, 3) write (stdout, 101) 'b_3', (recip_lattice(3, I)/print_output%lenconfac, i=1, 3) write (stdout, *) ' ' ! Atoms if (atom_data%num_atoms > 0) then write (stdout, '(1x,a)') '*----------------------------------------------------------------------------*' if (trim(print_output%length_unit) == 'Ang') then write (stdout, '(1x,a)') '| Site Fractional Coordinate Cartesian Coordinate (Ang) |' else write (stdout, '(1x,a)') '| Site Fractional Coordinate Cartesian Coordinate (Bohr) |' end if write (stdout, '(1x,a)') '+----------------------------------------------------------------------------+' do nsp = 1, atom_data%num_species do nat = 1, atom_data%species_num(nsp) call utility_cart_to_frac(atom_data%pos_cart(:, nat, nsp), pos_frac, inv_lattice) write (stdout, '(1x,a1,1x,a2,1x,i3,3F10.5,3x,a1,1x,3F10.5,4x,a1)') & & '|', atom_data%symbol(nsp), nat, pos_frac(:),& & '|', atom_data%pos_cart(:, nat, nsp)*print_output%lenconfac, '|' end do end do write (stdout, '(1x,a)') '*----------------------------------------------------------------------------*' else write (stdout, '(25x,a)') 'No atom positions specified' end if ! Constrained centres if (wann_control%constrain%selective_loc .and. & wann_control%constrain%constrain) then write (stdout, *) ' ' write (stdout, '(1x,a)') '*----------------------------------------------------------------------------*' write (stdout, '(1x,a)') '| Wannier# Original Centres Constrained centres |' write (stdout, '(1x,a)') '+----------------------------------------------------------------------------+' do i = 1, wann_control%constrain%slwf_num call utility_cart_to_frac(wann_control%constrain%centres(i, :), ccentres_frac, inv_lattice) ! note, this printout is in crystal coordinates; not sure why wannier_centres are printed here?? write (stdout, '(1x,a1,2x,i3,2x,3F10.5,3x,a1,1x,3F10.5,4x,a1)') & & '|', i, ccentres_frac(:), '|', wannier_data%centres(:, i), '|' end do write (stdout, '(1x,a)') '*----------------------------------------------------------------------------*' end if ! Projections if (print_output%iprint > 1 .and. allocated(proj_input)) then write (stdout, '(32x,a)') '-----------' write (stdout, '(32x,a)') 'PROJECTIONS' write (stdout, '(32x,a)') '-----------' write (stdout, *) ' ' write (stdout, '(1x,a)') '+----------------------------------------------------------------------------+' write (stdout, '(1x,a)') '| Frac. Coord. l mr r z-axis x-axis Z/a |' write (stdout, '(1x,a)') '+----------------------------------------------------------------------------+' do nsp = 1, num_proj write (stdout, '(1x,a1,3(1x,f5.2),1x,i2,1x,i2,1x,i2,3(1x,f6.3),3(1x,f6.3),2x,f4.1,1x,a1)') & '|', proj_input(nsp)%site(1), proj_input(nsp)%site(2), & proj_input(nsp)%site(3), proj_input(nsp)%l, & proj_input(nsp)%m, proj_input(nsp)%radial, & proj_input(nsp)%z(1), proj_input(nsp)%z(2), & proj_input(nsp)%z(3), proj_input(nsp)%x(1), & proj_input(nsp)%x(2), proj_input(nsp)%x(3), & proj_input(nsp)%zona, '|' end do write (stdout, '(1x,a)') '+----------------------------------------------------------------------------+' write (stdout, *) ' ' end if if (print_output%iprint > 1 .and. select_proj%lselproj .and. & allocated(wann_control%guiding_centres%centres)) then write (stdout, '(30x,a)') '--------------------' write (stdout, '(30x,a)') 'SELECTED PROJECTIONS' write (stdout, '(30x,a)') '--------------------' write (stdout, *) ' ' write (stdout, '(1x,a)') '+----------------------------------------------------------------------------+' write (stdout, '(1x,a)') '| Frac. Coord. l mr r z-axis x-axis Z/a |' write (stdout, '(1x,a)') '+----------------------------------------------------------------------------+' do nsp = 1, num_wann if (select_proj%proj2wann_map(nsp) < 0) cycle write (stdout, '(1x,a1,3(1x,f5.2),1x,i2,1x,i2,1x,i2,3(1x,f6.3),3(1x,f6.3),2x,f4.1,1x,a1)')& & '|', wann_control%guiding_centres%centres(1, nsp), & wann_control%guiding_centres%centres(2, nsp), & wann_control%guiding_centres%centres(3, nsp), proj(nsp)%l, & proj(nsp)%m, proj(nsp)%radial, & proj(nsp)%z(1), proj(nsp)%z(2), proj(nsp)%z(3), proj(nsp)%x(1), & proj(nsp)%x(2), proj(nsp)%x(3), proj(nsp)%zona, '|' end do write (stdout, '(1x,a)') '+----------------------------------------------------------------------------+' write (stdout, *) ' ' end if ! K-points write (stdout, '(32x,a)') '------------' write (stdout, '(32x,a)') 'K-POINT GRID' write (stdout, '(32x,a)') '------------' write (stdout, *) ' ' write (stdout, '(13x,a,i3,1x,a1,i3,1x,a1,i3,6x,a,i5)') 'Grid size =', mp_grid(1), 'x', mp_grid(2), 'x', mp_grid(3), & 'Total points =', num_kpts write (stdout, *) ' ' if (print_output%iprint > 1) then write (stdout, '(1x,a)') '*----------------------------------------------------------------------------*' if (trim(print_output%length_unit) == 'Ang') then write (stdout, '(1x,a)') '| k-point Fractional Coordinate Cartesian Coordinate (Ang^-1) |' else write (stdout, '(1x,a)') '| k-point Fractional Coordinate Cartesian Coordinate (Bohr^-1) |' end if write (stdout, '(1x,a)') '+----------------------------------------------------------------------------+' do nkp = 1, num_kpts call utility_frac_to_cart(kpt_latt(:, nkp), kpt_cart, recip_lattice) write (stdout, '(1x,a1,i6,1x,3F10.5,3x,a1,1x,3F10.5,4x,a1)') '|', nkp, kpt_latt(:, nkp), '|', & kpt_cart(:)/print_output%lenconfac, '|' end do write (stdout, '(1x,a)') '*----------------------------------------------------------------------------*' write (stdout, *) ' ' end if ! Main write (stdout, *) ' ' write (stdout, '(1x,a78)') '*---------------------------------- MAIN ------------------------------------*' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Number of Wannier Functions :', num_wann, '|' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Number of Objective Wannier Functions :', & wann_control%constrain%slwf_num, '|' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Number of input Bloch states :', num_bands, '|' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Output verbosity (1=low, 5=high) :', print_output%iprint, '|' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Timing Level (1=low, 5=high) :', print_output%timing_level, '|' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Optimisation (0=memory, 3=speed) :', optimisation, '|' write (stdout, '(1x,a46,10x,a8,13x,a1)') '| Length Unit :', trim(print_output%length_unit), '|' write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Post-processing setup (write *.nnkp) :', & w90_calculation%postproc_setup, '|' write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Using Gamma-only branch of algorithms :', gamma_only, '|' !YN: RS: if (lsitesymmetry) then write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Using symmetry-adapted WF mode :', lsitesymmetry, '|' write (stdout, '(1x,a46,8x,E10.3,13x,a1)') '| Tolerance for symmetry condition on U :', symmetrize_eps, '|' end if if (cp_pp .or. print_output%iprint > 2) & write (stdout, '(1x,a46,10x,L8,13x,a1)') '| CP code post-processing :', & cp_pp, '|' if (w90_calculation%wannier_plot .or. print_output%iprint > 2) then if (wvfn_read%formatted) then write (stdout, '(1x,a46,9x,a9,13x,a1)') '| Wavefunction (UNK) file-type :', 'formatted', '|' else write (stdout, '(1x,a46,7x,a11,13x,a1)') '| Wavefunction (UNK) file-type :', 'unformatted', '|' end if if (wvfn_read%spin_channel == 1) then write (stdout, '(1x,a46,16x,a2,13x,a1)') '| Wavefunction spin channel :', 'up', '|' else write (stdout, '(1x,a46,14x,a4,13x,a1)') '| Wavefunction spin channel :', 'down', '|' end if end if write (stdout, '(1x,a78)') '*----------------------------------------------------------------------------*' ! Wannierise write (stdout, '(1x,a78)') '*------------------------------- WANNIERISE ---------------------------------*' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Total number of iterations :', & wann_control%num_iter, '|' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Number of CG steps before reset :', & wann_control%num_cg_steps, '|' if (wann_control%lfixstep) then write (stdout, '(1x,a46,10x,f8.3,13x,a1)') '| Fixed step length for minimisation :', & wann_control%fixed_step, '|' else write (stdout, '(1x,a46,10x,f8.3,13x,a1)') '| Trial step length for line search :', & wann_control%trial_step, '|' end if write (stdout, '(1x,a46,8x,E10.3,13x,a1)') '| Convergence tolerence :', & wann_control%conv_tol, '|' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Convergence window :', & wann_control%conv_window, '|' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Iterations between writing output :', & wann_control%num_print_cycles, '|' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Iterations between backing up to disk :', & wann_control%num_dump_cycles, '|' write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Write r^2_nm to file :', & output_file%write_r2mn, '|' write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Write xyz WF centres to file :', & output_file%write_xyz, '|' write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Write on-site energies <0n|H|0n> to file :', & output_file%write_hr_diag, '|' write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Use guiding centre to control phases :', & wann_control%guiding_centres%enable, '|' write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Use phases for initial projections :', & use_bloch_phases, '|' if (wann_control%guiding_centres%enable .or. print_output%iprint > 2) then write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Iterations before starting guiding centres:', & wann_control%guiding_centres%num_no_guide_iter, '|' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Iterations between using guiding centres :', & wann_control%guiding_centres%num_guide_cycles, '|' end if if (wann_control%constrain%selective_loc .or. print_output%iprint > 2) then write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Perform selective localization :', & wann_control%constrain%selective_loc, '|' end if if (wann_control%constrain%constrain .or. print_output%iprint > 2) then write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Use constrains in selective localization :', & wann_control%constrain%constrain, '|' write (stdout, '(1x,a46,8x,E10.3,13x,a1)') '| Value of the Lagrange multiplier :',& &wann_control%constrain%lambda, '|' end if write (stdout, '(1x,a78)') '*----------------------------------------------------------------------------*' ! ! Disentanglement ! if (disentanglement .or. print_output%iprint > 2) then write (stdout, '(1x,a78)') '*------------------------------- DISENTANGLE --------------------------------*' write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Using band disentanglement :', & disentanglement, '|' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Total number of iterations :', dis_control%num_iter, '|' write (stdout, '(1x,a46,10x,F8.3,13x,a1)') '| Mixing ratio :', dis_control%mix_ratio, '|' write (stdout, '(1x,a46,8x,ES10.3,13x,a1)') '| Convergence tolerence :', dis_control%conv_tol, '|' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Convergence window :', dis_control%conv_window, '|' ! GS-start if (dis_spheres%num .gt. 0) then write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Number of spheres in k-space :', dis_spheres%num, '|' do nkp = 1, dis_spheres%num write (stdout, '(1x,a13,I4,a2,2x,3F8.3,a15,F8.3,9x,a1)') & '| center n.', nkp, ' :', dis_spheres%spheres(1:3, nkp), ', radius =', dis_spheres%spheres(4, nkp), '|' end do write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Index of first Wannier band :', & dis_spheres%first_wann, '|' end if ! GS-end write (stdout, '(1x,a78)') '*----------------------------------------------------------------------------*' end if ! ! Plotting ! if (w90_calculation%wannier_plot .or. w90_calculation%bands_plot .or. w90_calculation%fermi_surface_plot & .or. output_file%write_hr .or. print_output%iprint > 2) then ! write (stdout, '(1x,a78)') '*-------------------------------- PLOTTING ----------------------------------*' ! if (w90_calculation%wannier_plot .or. print_output%iprint > 2) then write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Plotting Wannier functions :', & w90_calculation%wannier_plot, '|' write (stdout, '(1x,a46,1x,I5,a1,I5,a1,I5,13x,a1)') & '| Size of supercell for plotting :', & wann_plot%supercell(1), 'x', wann_plot%supercell(2), 'x', wann_plot%supercell(3), '|' if (real_space_ham%translate_home_cell) then write (stdout, '(1x,a46,10x,L8,13x,a1)') & '| Translating WFs to home cell :', real_space_ham%translate_home_cell, '|' end if write (stdout, '(1x,a46,10x,a8,13x,a1)') '| Plotting mode (molecule or crystal) :', & trim(wann_plot%mode), '|' if (spinors) then write (stdout, '(1x,a46,10x,a8,13x,a1)') '| Plotting mode for spinor WFs :', & trim(wann_plot%spinor_mode), '|' write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Include phase for spinor WFs :', & wann_plot%spinor_phase, '|' end if write (stdout, '(1x,a46,10x,a8,13x,a1)') '| Plotting format :', & trim(wann_plot%format), '|' if (index(wann_plot%format, 'cub') > 0 .or. print_output%iprint > 2) then write (stdout, '(1x,a46,10x,F8.3,13x,a1)') '| Plot radius :', & wann_plot%radius, '|' write (stdout, '(1x,a46,10x,F8.3,13x,a1)') '| Plot scale :', & wann_plot%scale, '|' end if write (stdout, '(1x,a78)') '*----------------------------------------------------------------------------*' end if ! if (w90_calculation%fermi_surface_plot .or. print_output%iprint > 2) then write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Plotting Fermi surface :', & w90_calculation%fermi_surface_plot, '|' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Number of plotting points (along b_1) :', & fermi_surface_data%num_points, '|' write (stdout, '(1x,a46,10x,a8,13x,a1)') '| Plotting format :', & trim(fermi_surface_data%plot_format), '|' write (stdout, '(1x,a78)') '*----------------------------------------------------------------------------*' end if ! if (w90_calculation%bands_plot .or. print_output%iprint > 2) then write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Plotting interpolated bandstructure :', w90_calculation%bands_plot, '|' bands_num_spec_points = 0 if (allocated(kpoint_path%labels)) bands_num_spec_points = size(kpoint_path%labels) if (kpoint_path%bands_kpt_explicit) then write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Number of high-symmetry points :', bands_num_spec_points, '|' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Total number of points along K-path :', & size(kpoint_path%bands_kpt_frac, 2), '|' else write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Number of K-path sections :', & bands_num_spec_points/2, '|' write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Divisions along first K-path section :', & kpoint_path%num_points_first_segment, '|' end if write (stdout, '(1x,a46,10x,a8,13x,a1)') '| Output format :', & trim(band_plot%format), '|' write (stdout, '(1x,a46,10x,a8,13x,a1)') '| Output mode :', & trim(band_plot%mode), '|' if (index(band_plot%mode, 'cut') .ne. 0) then write (stdout, '(1x,a46,10x,I8,13x,a1)') '| Dimension of the system :', & real_space_ham%system_dim, '|' if (real_space_ham%system_dim .eq. 1) & write (stdout, '(1x,a46,10x,a8,13x,a1)') '| System extended in :', & adjustr(one_dim_axis), '|' if (real_space_ham%system_dim .eq. 2) & write (stdout, '(1x,a46,10x,a8,13x,a1)') '| System confined in :', & adjustr(one_dim_axis), '|' write (stdout, '(1x,a46,10x,F8.3,13x,a1)') '| Hamiltonian cut-off value :', & real_space_ham%hr_cutoff, '|' write (stdout, '(1x,a46,10x,F8.3,13x,a1)') '| Hamiltonian cut-off distance :', & real_space_ham%dist_cutoff, '|' write (stdout, '(1x,a46,10x,a8,13x,a1)') '| Hamiltonian cut-off distance mode :', & trim(real_space_ham%dist_cutoff_mode), '|' end if write (stdout, '(1x,a78)') '*----------------------------------------------------------------------------*' if (kpoint_path%bands_kpt_explicit) then write (stdout, '(1x,a78)') '| K-space path high symmetry points: |' else write (stdout, '(1x,a78)') '| K-space path sections: |' end if if (bands_num_spec_points == 0) then write (stdout, '(1x,a78)') '| None defined |' else if (kpoint_path%bands_kpt_explicit) then do loop = 1, bands_num_spec_points write (stdout, '(1x,a5,a5,1x,3F7.3,a46)') '| ', kpoint_path%labels(loop), & (kpoint_path%points(i, loop), i=1, 3), ' |' end do else do loop = 1, bands_num_spec_points, 2 write (stdout, '(1x,a10,1x,a5,1x,3F7.3,5x,a3,1x,a5,1x,3F7.3,3x,a1)') '| From:', & kpoint_path%labels(loop), (kpoint_path%points(i, loop), i=1, 3), & 'To:', kpoint_path%labels(loop + 1), (kpoint_path%points(i, loop + 1), i=1, 3), '|' end do end if end if write (stdout, '(1x,a78)') '*----------------------------------------------------------------------------*' end if ! if (output_file%write_hr .or. print_output%iprint > 2) then write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Plotting Hamiltonian in WF basis :', output_file%write_hr, '|' write (stdout, '(1x,a78)') '*----------------------------------------------------------------------------*' end if if (output_file%write_vdw_data .or. print_output%iprint > 2) then write (stdout, '(1x,a46,10x,L8,13x,a1)') '| Writing data for Van der Waals post-proc :', & output_file%write_vdw_data, '|' write (stdout, '(1x,a78)') '*----------------------------------------------------------------------------*' end if ! end if end if !iprint > 0 and not (transport && read_ht) ! ! Transport ! if (w90_calculation%transport .or. print_output%iprint > 2) then ! write (stdout, '(1x,a78)') '*------------------------------- TRANSPORT ----------------------------------*' ! write (stdout, '(1x,a46,10x,a8,13x,a1)') '| Transport mode :', trim(tran%mode), '|' ! if (tran%read_ht) then ! write (stdout, '(1x,a46,10x,a8,13x,a1)') '| Hamiltonian from external files :', 'T', '|' ! else ! write (stdout, '(1x,a46,10x,a8,13x,a1)') '| Hamiltonian from external files :', 'F', '|' write (stdout, '(1x,a46,10x,a8,13x,a1)') '| System extended in :', & adjustr(one_dim_axis), '|' ! end if write (stdout, '(1x,a78)') '| Centre of the unit cell to which WF are translated (fract. coords): |' write (stdout, '(1x,a1,35x,F12.6,a1,F12.6,a1,F12.6,3x,a1)') '|', real_space_ham%translation_centre_frac(1), ',', & real_space_ham%translation_centre_frac(2), ',', & real_space_ham%translation_centre_frac(3), '|' if (size(fermi_energy_list) == 1) then write (stdout, '(1x,a46,10x,f8.3,13x,a1)') '| Fermi energy (eV) :', fermi_energy_list(1), '|' else write (stdout, '(1x,a21,I8,a12,f8.3,a4,f8.3,a3,13x,a1)') '| Fermi energy :', size(fermi_energy_list), & ' steps from ', fermi_energy_list(1), ' to ', & fermi_energy_list(size(fermi_energy_list)), ' eV', '|' end if ! write (stdout, '(1x,a78)') '*----------------------------------------------------------------------------*' ! end if 101 format(20x, a3, 2x, 3F11.6) end subroutine w90_wannier90_readwrite_write