mirror of https://gitlab.com/QEF/q-e.git
377 lines
17 KiB
Plaintext
377 lines
17 KiB
Plaintext
*** FILE AUTOMATICALLY CREATED: DO NOT EDIT, CHANGES WILL BE LOST ***
|
|
|
|
------------------------------------------------------------------------
|
|
INPUT FILE DESCRIPTION
|
|
|
|
Program: all_currents.x / QEHeat / Quantum ESPRESSO (version: 7.4)
|
|
------------------------------------------------------------------------
|
|
|
|
|
|
Program to compute energy current given the atomic configuration and the velocities of the atoms.
|
|
|
|
Note that a very small conv_thr must be given in the ELECTRONS namelist, in the order of 1.D-11.
|
|
The numerical derivative is very sensitive to this parameter and to "delta_t". Careful convergence
|
|
tests are needed. Note that if too relaxed values are chosen, the result can depend on the algorithm
|
|
used to diagonalize the hamiltonian a lot (the 4th/3rd digit can be wrong). Options that allows
|
|
estimating the variance are provided, to reinitialize the wavefunctions and repeat each step many
|
|
times ( "n_repeat_every_step" "re_init_wfc_1" "re_init_wfc_2" "re_init_wfc_3" ).
|
|
Performance of the calculation can be tuned a little bit with the parameters "ethr_small_step"
|
|
and "ethr_big_step", that can avoid the waste of some iterations in the diagonalization of the
|
|
hamiltonian in the first scf step of every scf calculation (the program does 2 scf for each step).
|
|
Note that in order to read atomic velocities, in the namelist CONTROL you must set calculation='md',
|
|
and in the namelist IONS you must set ion_velocities='from_input'. Algorithm for computing finite
|
|
difference derivatives can be set with the option "three_point_derivative" .
|
|
|
|
This program implements
|
|
|
|
Marcolongo, A., Umari, P. & Baroni, S.
|
|
Microscopic theory and quantum simulation of atomic heat transport.
|
|
Nature Phys 12, 80-84 (2016). https://doi.org/10.1038/nphys3509
|
|
|
|
and was originally written by Aris Marcolongo in 2014 at SISSA for his PhD thesis
|
|
( https://iris.sissa.it/handle/20.500.11767/3897 )
|
|
The all_current driver program was rewritten from scratch by Riccardo Bertossa at SISSA in 2020.
|
|
Other contributions are from Davide Tisi (SISSA), Loris Ercole (SISSA - EPFL ) and Federico Grasselli (SISSA).
|
|
Details of the implementation are discussed in
|
|
Marcolongo, Bertossa, Tisi, Baroni, https://arxiv.org/abs/2104.06383 (2021)
|
|
|
|
All the namilist but "ENERGY_CURRENT" are the same as the program pw.x
|
|
|
|
Structure of the input data:
|
|
===============================================================================
|
|
|
|
&ENERGY_CURRENT
|
|
...
|
|
/
|
|
|
|
&CONTROL
|
|
MUST SET calculation='md'
|
|
...
|
|
/
|
|
|
|
&SYSTEM
|
|
...
|
|
/
|
|
|
|
&ELECTRONS
|
|
you may want startingwfc = 'random' (for better standard deviation estimation)
|
|
...
|
|
/
|
|
|
|
[ &IONS
|
|
MUST SET ion_velocities='from_input'
|
|
...
|
|
/ ]
|
|
|
|
[ &CELL
|
|
...
|
|
/ ]
|
|
|
|
ATOMIC_SPECIES
|
|
X Mass_X PseudoPot_X
|
|
Y Mass_Y PseudoPot_Y
|
|
Z Mass_Z PseudoPot_Z
|
|
|
|
ATOMIC_POSITIONS { alat | bohr | crystal | angstrom | crystal_sg }
|
|
X 0.0 0.0 0.0 {if_pos(1) if_pos(2) if_pos(3)}
|
|
Y 0.5 0.0 0.0
|
|
Z O.0 0.2 0.2
|
|
|
|
ATOMIC_VELOCITIES
|
|
X 0.0 0.0 0.0
|
|
Y 0.5 0.0 0.0
|
|
Z O.0 0.2 0.2
|
|
|
|
K_POINTS { gamma }
|
|
if (gamma)
|
|
nothing to read
|
|
|
|
[ CELL_PARAMETERS { alat | bohr | angstrom }
|
|
v1(1) v1(2) v1(3)
|
|
v2(1) v2(2) v2(3)
|
|
v3(1) v3(2) v3(3) ]
|
|
|
|
|
|
|
|
========================================================================
|
|
NAMELIST: &ENERGY_CURRENT
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: delta_t
|
|
|
|
Type: REAL
|
|
Default: 1.D0
|
|
Description: Small timestep used to do the numerical derivative needed
|
|
in order to compute some parts of the current. Note that is in the pw.x units.
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: file_output
|
|
|
|
Type: CHARACTER
|
|
Default: 'current_hz'
|
|
Description: The program will write the output in "file_output" and "file_output" + '.dat'.
|
|
In the latter file the format of the output is:
|
|
|
|
NSTEP t_ps J_x J_y J_z Jele_x Jele_y Jele_z v_cm(1)_x v_cm(1)_y v_cm(1)_z ...
|
|
|
|
where J_x, J_y, J_z are the three components of the DFT energy current,
|
|
and can be easily post-processed by other external programs.
|
|
Jele_* are the components of the electronic density current that may be used
|
|
for decorrelation and better data analysis or for calculating the electric current.
|
|
v_cm(1) ... v_cm(nsp) are the center of mass velocities for each atomic species.
|
|
|
|
If "n_repeat_every_step" > 1, an additional file "file_output" + '.stat' is
|
|
written with the following format:
|
|
|
|
NSTEP t_ps mean(J_x) mean(J_y) mean(J_z) std(J_x) std(J_y) std(J_z)
|
|
|
|
only one line per step is printed in this case (in the other output files you will
|
|
find every calculation, also repeated ones). std is the standard deviation.
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: trajdir
|
|
|
|
Type: CHARACTER
|
|
Default: ''
|
|
Description: Prefix of the cp.x trajectory. The program will try to open the files
|
|
"trajdir" .pos and "trajdir" .vel
|
|
The files, for n atoms, are formatted like this:
|
|
|
|
NSTEP1 t_ps1
|
|
x(1) y(1) z(2)
|
|
. . .
|
|
. . .
|
|
. . .
|
|
x(n) y(n) z(n)
|
|
NSTEP2 t_ps2
|
|
x(1) y(1) z(2)
|
|
. . .
|
|
. . .
|
|
. . .
|
|
x(n) y(n) z(n)
|
|
...
|
|
|
|
the order of the atomic types must be the same of the one provided in the input file.
|
|
If the files are not found, only the positions and the velocities from the input file will be used.
|
|
Note that the units are specified by the input file. The units of the velocities are the same of
|
|
the positions with time in atomic units. If a cp.x trajectory is provided (see "vel_input_units" )
|
|
a factor 2 can be used for the velocities.
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: vel_input_units
|
|
|
|
Type: CHARACTER
|
|
Default: 'PW'
|
|
Description:
|
|
This multiplies or not by a factor 2 the velocities given in the input.
|
|
Available options are:
|
|
|
|
'CP' :
|
|
assume velocities are given in cp.x time units (thus multiplying by 2 the velocities)
|
|
|
|
'PW' :
|
|
assume velocities are given in pw.x time units
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: eta
|
|
|
|
Type: REAL
|
|
Default: 1.D0
|
|
Description: Convergence parameter for Ewald-like sums
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: n_max
|
|
|
|
Type: INTEGER
|
|
Default: 5
|
|
Description: Number of images in each direction used to converge some sums.
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: first_step
|
|
|
|
Type: INTEGER
|
|
Default: 0
|
|
Description: The program will start with step istep >= "first_step".
|
|
If greater than zero the input file's positions and velocities will be ignored.
|
|
Note that this is not a sequential index but refers to the indexes reported in
|
|
the input trajectory file. The index of 0 is assigned to the snapshot described
|
|
in the input namelist file.
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: last_step
|
|
|
|
Type: INTEGER
|
|
Default: 0
|
|
Description: The program will end with step istep <= "last_step".
|
|
If 0, it will stop at the end of the trajectory file
|
|
Note that this is not a sequential index but refers to the indexes reported in
|
|
the input trajectory file.
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: step_mul
|
|
|
|
Type: INTEGER
|
|
Default: 1
|
|
Description: The program will use the step only if
|
|
MOD(step, "step_mul") == "step_rem".
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: step_rem
|
|
|
|
Type: INTEGER
|
|
Default: 0
|
|
Description: The program will use the step only if
|
|
MOD(step, "step_mul") == "step_rem".
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: ethr_small_step
|
|
|
|
Type: REAL
|
|
Default: 1.D-7
|
|
Description: Diagonalization threshold after the small "delta_t" numerical derivative step.
|
|
(the system changed a very little)
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: ethr_big_step
|
|
|
|
Type: REAL
|
|
Default: 1.D-3
|
|
Description: Diagonalization threshold at the beginning of each step but the first,
|
|
for wich the pw.x input value is used.
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: restart
|
|
|
|
Type: LOGICAL
|
|
Default: .false.
|
|
Description: If true try to read "file_output" .dat and try to set "first_step" to the
|
|
last step in the file + 1
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: subtract_cm_vel
|
|
|
|
Type: LOGICAL
|
|
Default: .false.
|
|
Description: If true subtract from the velocities of all atoms for every step
|
|
the center of mass velocity for each atomic type.
|
|
It help to decorrelate a little the mass flux from the energy flux
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: add_i_current_b
|
|
|
|
Type: LOGICAL
|
|
Default: .false.
|
|
Description: If true adds to the energy current a part that is correctly implemented only for cubic cells.
|
|
This part is in the form of a sum over the atomic types of a constant time the center of mass velocity
|
|
of the atomic type. It does not change the value of the thermal conductivity when the formula for the
|
|
multicomponent case with the inverse of the Schur complement is used, and in the single component
|
|
or solid case this is a non-diffusive contribution.
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: save_dvpsi
|
|
|
|
Type: LOGICAL
|
|
Default: .false.
|
|
Description: If true allocate the space needed for saving the solution of the linear system betweew every calculation.
|
|
The iterative algorithm will always start from there. By default it starts always from scratch.
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: re_init_wfc_1
|
|
|
|
Type: LOGICAL
|
|
Default: .false.
|
|
Description: If true initializes, as specified in the ELECTRON namelist of the PW section, the wavefunctions
|
|
before the first ground state calculation, then compute the charge density.
|
|
Otherwise use the last calculated wavefunctions.
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: re_init_wfc_2
|
|
|
|
Type: LOGICAL
|
|
Default: .false.
|
|
Description: If true initializes, as specified in the ELECTRON namelist of the PW section, the wavefunctions
|
|
before the second ground state calculation, then compute the charge density.
|
|
Otherwise use the last calculated wavefunctions.
|
|
Note that if "three_point_derivative" is false, this has no effect.
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: re_init_wfc_3
|
|
|
|
Type: LOGICAL
|
|
Default: .false.
|
|
Description: If true initializes, as specified in the ELECTRON namelist of the PW section, the wavefunctions
|
|
before the third ground state calculation, then compute the charge density.
|
|
Otherwise use the last calculated wavefunctions.
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: three_point_derivative
|
|
|
|
Type: LOGICAL
|
|
Default: .true.
|
|
Description: If true calculates three ground stated: one at t - "delta_t" /2, one at t and one at t + "delta_t"/2.
|
|
Obviously it needs more computer time, but the derivative should be better.
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: n_repeat_every_step
|
|
|
|
Type: INTEGER
|
|
Default: 1
|
|
Description: Number of repetition of the full current calculation for each step. If > 1, the file "file_output" + '.stat'
|
|
is written with some statistics. Note that if you don't specify at least "re_init_wfc_1" ,this may be useless.
|
|
You may want to specify startingwfc = 'random' in the ELECTRONS namelist.
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: n_workers
|
|
|
|
Type: INTEGER
|
|
Default: 0
|
|
Description: The calculation over all the trajectory is splitted in "n_workers" chunks. Then to run the code over all
|
|
the trajectory you must run "n_workers" input files each one with a different "worker_id",
|
|
from 0 to "n_workers" - 1 . Those inputs can run at the same time in the same folder. The "worker_id"
|
|
will be appended to the outdir folder and to the "file_output" input variables, so you can safely run all
|
|
the inputs in the same directory at the same time.
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: worker_id
|
|
|
|
Type: INTEGER
|
|
Default: 0
|
|
Description: See "n_workers" variable
|
|
+--------------------------------------------------------------------
|
|
|
|
+--------------------------------------------------------------------
|
|
Variable: continue_not_converged
|
|
|
|
Type: LOGICAL
|
|
Default: .false.
|
|
Description: If it is not possible to find a ground state for a given frame of the trajectory, go to the next one.
|
|
You will not find this step in the output file(s).
|
|
+--------------------------------------------------------------------
|
|
|
|
===END OF NAMELIST======================================================
|
|
|
|
|
|
This file has been created by helpdoc utility on Wed Oct 16 19:26:53 CEST 2024
|