forked from abinit/abinit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvariables_anaddb.py
2359 lines (2144 loc) · 87.8 KB
/
variables_anaddb.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# coding: utf-8
from __future__ import print_function, division, unicode_literals, absolute_import
executable = "anaddb"
from abimkdocs.variables import ValueWithUnit, MultipleValue, Range
#from abipy.abio.abivar_database.variables import ValueWithUnit, MultipleValue, Range, ValueWithConditions
ValueWithConditions = dict
Variable=dict
variables = [
Variable(
abivarname="a2fsmear@anaddb",
varset="anaddb",
vartype="real",
topics=['ElPhonTransport_useful'],
dimensions="scalar",
defaultval=2e-05,
mnemonics="Alpha2F SMEARing factor",
characteristics=['[[ENERGY]]'],
added_in_version="before_v9",
text=r"""
Smearing width for the Eliashberg $\\alpha^2$F function (similar to a phonon DOS),
which is sampled on a finite q and k grid. The Dirac delta functions in energy
are replaced by Gaussians of width **a2fsmear** (by default in Hartree).
""",
),
Variable(
abivarname="alphon@anaddb",
varset="anaddb",
vartype="integer",
topics=['nonlinear_basic'],
dimensions="scalar",
defaultval=0,
mnemonics="ALign PHONon mode eigendisplacements",
added_in_version="before_v9",
text=r"""
In case **alphon** is set to 1, ANADDB will compute linear combinations of the
eigendisplacements of modes that are degenerate (twice or three times), in
order to align the mode effective charges along the cartesian axes. This
option is useful in the mode-by-mode decomposition of the electrooptic tensor,
and to compute the Raman susceptibilities of individual phonon modes. In case
of uniaxial crystals, the z-axis should be chosen along the optical axis.
""",
),
Variable(
abivarname="asr@anaddb",
varset="anaddb",
vartype="integer",
topics=['Phonons_basic', 'PhononBands_basic'],
dimensions="scalar",
defaultval=1,
mnemonics="Acoustic Sum Rule",
commentdefault="was 0 before v5.3",
added_in_version="before_v9",
text=r"""
Governs the imposition of the Acoustic Sum Rule (ASR).
* 0 --> no ASR for interatomic force constants is imposed.
* 1 or 2 --> the ASR for interatomic force constants is imposed by modifying
the on-site interatomic force constants, in a symmetric way ( **asr** =2),
or in the more general case, unconstrained way ( **asr** =1).
More detailed explanations: the total energy should be invariant under
translation of the crystal as a whole. This would guarantee that the three
lowest phonon modes at Gamma have zero frequency (Acoustic Sum Rule - ASR).
Unfortunately, the way the DDB is generated (presence of a discrete grid of
points for the evaluation of the exchange-correlation potential and energy)
slightly breaks the translational invariance. Well, in some pathological
cases, the breaking can be rather important.
Two quantities are affected: the interatomic forces (or dynamical matrices),
and the effective charges. The ASR for the effective charges is called the
charge neutrality sum rule, and will be dealt with by the variable
[[anaddb:chneut]]. The ASR for the interatomic forces can be restored, by
modifying the interatomic force of the atom on itself, (called self-IFC), as
soon as the dynamical matrix at Gamma is known. This quantity should be equal
to minus the sum of all interatomic forces generated by all others atoms
(action-reaction law!), which is determined by the dynamical matrix at Gamma.
So, if **asr** is non-zero, the correction to the self-force will be
determined, and the self-force will be imposed to be consistent with the ASR.
This correction will work if IFCs are computed ([[anaddb:ifcflag]]/=0), as
well as if the IFCs are not computed ([[anaddb:ifcflag]]==0). In both cases,
the phonon frequencies will not be the same as the ones determined by the
output of abinit, RF case. If you want to check that the DDB is correct, by
comparing phonon frequencies from abinit and anaddb, you should turn off both
**asr** and [[anaddb:chneut]].
Until now, we have not explained the difference between **asr** =1 and **asr**
=2. This is rather subtle. In some local low-symmetry cases (basically the
effective charges should be anisotropic), when the dipole-dipole contribution
is evaluated and subtracted, the ASR cannot be imposed without breaking the
symmetry of the on-site interatomic forces. That explains why two options are
given: the second case ( **asr** =2, sym) does not entirely impose the ASR,
but simply the part that keeps the on-site interatomic forces symmetric (which
means that the acoustic frequencies do not go to zero exactly), the first case
( **asr** =1, asym) imposes the ASR, but breaks the symmetry. **asr** =2 is to
be preferred for the analysis of the interatomic force constant in real space,
while **asr** =1 should be used to get the phonon band structure.
(NOTE: in order to confuse even more the situation, it seems that the acoustic
phonon frequencies generated by the code for both the sym and asym options are
exactly the same likely due to an extra symmetrisation in the
diagonalisation routine. Of course, when the matrix at Gamma has been
generated from IFCs coming from dynamical matrices none of which are Gamma,
the breaking of the ASR is rather severe. In order to clear the situation, one
should use a diagonalisation routine for non-hermitian matrices. So, at the
present status of understanding, one should always use the **asr** =2 option
).
""",
),
Variable(
abivarname="atifc@anaddb",
varset="anaddb",
vartype="integer",
topics=['PhononBands_basic'],
dimensions=['[[anaddb:natifc]]'],
defaultval=0,
mnemonics="AToms for IFC analysis",
added_in_version="before_v9",
text=r"""
The actual numbers of the atoms for which the interatomic force constant have
to be written and eventually analysed.
WARNING: there will be an in-place change of meaning of atifc (this is
confusing, and should be taken away in one future version - sorry for this).
""",
),
#FIXME NOTE XG20170811: apparently no effective test for this input variable. Also,
# the description is strange ...!
Variable(
abivarname="band_gap@anaddb",
varset="anaddb",
vartype="real",
topics=['ElPhonTransport_expert'],
dimensions="scalar",
defaultval=999.0,
mnemonics="BAND GAP",
characteristics=['[[ENERGY]]'],
added_in_version="before_v9",
text=r"""
Allow setting the target band gap, in eV. ([[anaddb:elphflag]]=1).
""",
),
Variable(
abivarname="brav@anaddb",
varset="anaddb",
vartype="integer",
topics=['PhononBands_useful'],
dimensions="scalar",
defaultval=1,
mnemonics="BRAVais",
added_in_version="before_v9",
text=r"""
Allows to specify the Bravais lattice of the crystal, in order to help to
generate a grid of special q points.
* 1 --> all the lattices (including FCC, BCC and hexagonal)
* 2 --> specific for Face Centered lattices
* 3 --> specific for Body Centered lattices
* 4 --> specific for the Hexagonal lattice
Note that in the latter case, the [[rprim]] of the unit cell has to be
1.0 0.0 0.0
-.5 sqrt(3)/2 0.0
0.0 0.0 1.0
in order for the code to work properly.
Warning: the generation of q-points in anaddb is rather old-fashioned, and
should be replaced by routines used by the main abinit code.
Warning:
The value **brav** = -1 is also possible. It is used for backwards compatibility:
it corresponds to **brav** = 1, with the weights for the
interpolation of the phonon band structure determined by another (now obsolete) algorithm
than the default **brav** = 1 algorithm
based on Wigner-Seitz cells (new as v8.7). The default algorithm has a correct treatment of symmetries.
""",
),
Variable(
abivarname="chneut@anaddb",
varset="anaddb",
vartype="integer",
topics=['Phonons_useful'],
dimensions="scalar",
defaultval=0,
mnemonics="Integer for CHarge NEUTrality treatment",
added_in_version="before_v9",
text=r"""
Set the treatment of the Charge Neutrality requirement for the effective charges.
* chneut=0 --> no ASR for effective charges is imposed
* chneut=1 --> the ASR for effective charges is imposed by giving to each atom
an equal portion of the missing charge. See Eq.(48) in [[cite:Gonze1997a]].
* chneut=2 --> the ASR for effective charges is imposed by giving to each atom a portion
of the missing charge proportional to the screening charge already present.
See Eq.(49) in [[cite:Gonze1997a]].
More detailed explanation: the sum of the effective charges in the unit cell
should be equal to zero. It is not the case in the DDB, and this sum rule is
sometimes strongly violated. In particular, this will make the lowest
frequencies at Gamma non-zero. There is no "best" way of imposing the ASR on effective charges.
""",
),
Variable(
abivarname="dieflag@anaddb",
varset="anaddb",
vartype="integer",
topics=['Phonons_basic'],
dimensions="scalar",
defaultval=0,
mnemonics="DIElectric FLAG",
added_in_version="before_v9",
text=r"""
Frequency-dependent dielectric tensor flag.
* 0 --> No dielectric tensor is calculated.
* 1 --> The frequency-dependent dielectric tensor is calculated.
Requirements for preceding response-function DDB generation run: electric-field and full atomic-displacement responses.
Set [[rfstrs]] = 1, 2, or 3 (preferably 3). Set [[rfatpol]] and [[rfdir]] to do a full calculation of phonons at Q=0.
The frequencies are defined by the [[anaddb:nfreq]], [[anaddb:frmin]], [[anaddb:frmax]] variables.
Also, the generalized Lyddane-Sachs-Teller relation will be used as an independent check of the dielectric tensor
at zero frequency (this for the directions defined in the phonon list 2. See [[anaddb:nph2l]].
* 2 --> Only the electronic dielectric tensor is calculated. It corresponds to a zero-frequency homogeneous field,
with quenched atomic positions. For large band gap materials, this quantity is measurable because the
highest phonon frequency is on the order of a few tenths of eV, and the band gap is larger than 5eV.
Requirements for preceding response-function DDB generation: electric-field response.
Set [[rfelfd]] = 1 or 3 (preferably 3). Note that the same information on the electronic dielectric tensor
will be printed in the .out file of the [[rfelfd]] run.
* 3 --> Compute and print the relaxed-ion dielectric tensor.
Requirements for preceding response-function DDB generation run:
electric-field and full atomic-displacement responses. Set [[rfstrs]] = 1, 2, or 3 (preferably 3).
Set [[rfatpol]] and [[rfdir]] to do a full calculation of phonons at Q=0
(needed because the inverse of force-constant tensor is required). Furthermore, in the anaddb input file
the variable [[anaddb:nph2l]] must be nonzero in order to initiate computation of atomic displacements.
If only the dielectric response is needed it is sufficient to set [[anaddb:nph2l]] to 1 and leave [[anaddb:qph2l]]
at its default value (the Gamma point). Note that the relaxed-ion dielectric tensor computed here can also be obtained
as the zero-frequency limit of the frequency-dependent dielectric tensor using input variables **dieflag** =1 and [[anaddb:frmin]]=0.0.
(The results obtained using these two approaches should agree to good numerical precision.)
The ability to compute and print the static dielectric tensor here is provided for completeness
and consistency with the other tensor quantities that are computed in this section of the code.
* 4 --> Calculate dielectric tensor of both relaxed ion and free stress.
We need information of internal strain and elastic tensor (relaxed ion) in this computation.
So please set: [[anaddb:elaflag]]=2,3,4 or 5 and [[anaddb:instrflag]]=1
""",
),
Variable(
abivarname="dipdip@anaddb",
varset="anaddb",
vartype="integer",
topics=['PhononBands_basic'],
dimensions="scalar",
defaultval=1,
mnemonics="DIPole-DIPole interaction",
added_in_version="before_v9",
text=r"""
* 0 --> the dipole-dipole interaction is not handled separately in the treatment of the interatomic forces.
This option is available for testing purposes or if effective charge and/or dielectric tensor is not available
in the derivative database. It gives results much less accurate than **dipdip** =1.
* 1 --> the dipole-dipole interaction is subtracted from the dynamical matrices before Fourier transform,
so that only the short-range part is handled in real space. Of course, it is reintroduced analytically
when the phonon spectrum is interpolated, or if the interatomic force constants have to be analysed in real space.
The abinit input variable [[dipdip]] has a similar meaning.
""",
),
Variable(
abivarname="dipquad@anaddb",
varset="anaddb",
vartype="integer",
topics=['longwave_basic'],
dimensions="scalar",
defaultval=0,
mnemonics="DIPole-QUADdrupole interaction",
characteristics=['[[DEVELOP]]'],
added_in_version="v9",
text=r"""
* 0 --> the dipole-quadrupole interaction is not handled separately in the treatment of the interatomic forces.
* 1 --> the dipole-quadrupole interaction is subtracted from the dynamical matrices before Fourier transform,
so that only the short-range part is handled in real space. Of course, it is reintroduced analytically
when the phonon spectrum is interpolated. Requires a preceding generation of 3rd order DDB with a [[lw_qdrpl]] = 1
or a [[lw_flexo]] = 1 or 2 run.
""",
),
Variable(
abivarname="quadquad@anaddb",
varset="anaddb",
vartype="integer",
topics=['longwave_basic'],
dimensions="scalar",
defaultval=0,
mnemonics="QUADdrupole-QUADdrupole interaction",
characteristics=['[[DEVELOP]]'],
added_in_version="v9",
text=r"""
* 0 --> the quadrupole-quadrupole interaction is not handled separately in the treatment of the interatomic forces.
* 1 --> the quadrupole-quadrupole interaction is subtracted from the dynamical matrices before Fourier transform,
so that only the short-range part is handled in real space. Of course, it is reintroduced analytically
when the phonon spectrum is interpolated. Requires a preceding generation of 3rd order DDB with a [[lw_qdrpl]] = 1
or a [[lw_flexo]] = 1 or 2 run.
""",
),
Variable(
abivarname="dosdeltae@anaddb",
varset="anaddb",
vartype="real",
topics=['PhononBands_useful'],
dimensions="scalar",
defaultval="4.5E-06 Hartree = 1 cm$^{-1}$",
mnemonics="DOS DELTA in Energy",
added_in_version="before_v9",
text=r"""
The input variable **dosdeltae** is used to define the step of the frequency
grid used to calculate the phonon density of states when [[anaddb:prtdos]] = 1.
""",
),
Variable(
abivarname="dossmear@anaddb",
varset="anaddb",
vartype="real",
topics=['PhononBands_useful'],
dimensions="scalar",
defaultval="4.5E-05 Hartree = 10 cm$^{-1}$",
mnemonics="DOS SMEARing value",
characteristics=['[[ENERGY]]'],
added_in_version="before_v9",
text=r"""
**dossmear** defines the gaussian broadening used to calculate the phonon
density of states when [[anaddb:prtdos]] = 1.
""",
),
Variable(
abivarname="dossum@anaddb",
varset="anaddb",
vartype="integer",
topics=['PhononBands_basic'],
dimensions="scalar",
defaultval=0,
mnemonics="DOS SUM",
added_in_version="before_v9",
text=r"""
Set the flag to 1 to calculate the two phonon dos density of states. Sum and
Difference for the Gamma point. The DOS is converged and based on that, the
sum and difference are reported in the output file.
""",
),
Variable(
abivarname="dostol@anaddb",
varset="anaddb",
vartype="real",
topics=['PhononBands_useful'],
dimensions="scalar",
defaultval=0.25,
mnemonics="DOS TOLerance",
added_in_version="before_v9",
text=r"""
The relative tolerance on the phonon density of state. This number will
determine when the series of grids with which the DOS is calculated can be
stopped, i.e. the mean of the relative change going from one grid to the next
bigger is smaller than **dostol**.
""",
),
Variable(
abivarname="eivec@anaddb",
varset="anaddb",
vartype="integer",
topics=['Phonons_useful', 'PhononBands_useful'],
dimensions="scalar",
defaultval=0,
mnemonics="EIgenVECtors",
added_in_version="before_v9",
text=r"""
* 0 --> do not write the phonon eigenvectors;
* 1 or 2 --> write the phonon eigenvectors;
* 4 --> generate output files for band2eps (drawing tool for the phonon band structure);
""",
),
Variable(
abivarname="elaflag@anaddb",
varset="anaddb",
vartype="integer",
topics=['Elastic_basic'],
dimensions="scalar",
defaultval=0,
mnemonics="ELAstic tensor FLAG",
added_in_version="before_v9",
text=r"""
Flag for calculation of elastic and compliance tensors
* 0 --> No elastic or compliance tensor will be calculated.
* 1 --> Only clamped-ion elastic and compliance tensors will be calculated.
Requirements for preceding response-function DDB generation run: Strain perturbation.
Set [[rfstrs]] to 1, 2, or 3. Note that [[rfstrs]]=3 is recommended so that responses
to both uniaxial and shear strains will be computed.
* 2 --> Both relaxed- and clamped-ion elastic and compliance tensor will be calculated,
but only the relaxed-ion quantities will be printed. The input variable [[anaddb:instrflag]] should also be set to 1,
because the internal-strain tensor is needed to compute the relaxed-ion corrections.
Requirements for preceding response-function DDB generation run:
Strain and atomic-displacement responses at Q=0. Set [[rfstrs]] = 1, 2, or 3 (preferably 3).
Set [[rfatpol]] and [[rfdir]] to do a full calculation of phonons at Q=0
(needed because the inverse of force-constant tensor is required).
* 3 --> Both relaxed and clamped-ion elastic and compliance tensors will be printed out.
The input variable [[anaddb:instrflag]] should also be set to 1.
Requirements for preceding response-function DDB generation run: Same as for **elaflag** =2.
* 4 --> Calculate the elastic and compliance tensors (relaxed ion) at fixed displacement field,
the relaxed-ion tensors at fixed electric field will be printed out too, for comparison.
When **elaflag** =4, we need the information of internal strain and relaxed-ion dielectric tensor
to build the whole tensor, so we need set [[anaddb:instrflag]]=1 and [[anaddb:dieflag]]=3 or 4 .
* 5 --> Calculate the relaxed ion elastic and compliance tensors, considering the stress left inside cell.
At the same time, bare relaxed ion tensors will still be printed out for comparison.
In this calculation, stress tensor is needed to compute the correction term, so one is supposed
to merge the first order derivative data base (DDB file) with the second order derivative data base (DDB file)
into a new DDB file, which can contain both information. And the program will also check for the users.
""",
),
Variable(
abivarname="elph_fermie@anaddb",
varset="anaddb",
vartype="real",
topics=['ElPhonTransport_useful'],
dimensions="scalar",
defaultval=0.0,
mnemonics="ELectron-PHonon FERMI Energy",
characteristics=['[[ENERGY]]'],
added_in_version="before_v9",
text=r"""
If non-zero, will fix artificially the value of the Fermi energy (e.g. for semiconductors),
in the electron-phonon case. Note that [[anaddb:elph_fermie]] and [[anaddb:ep_extrael]] should not be used at the same time.
([[anaddb:elphflag]]=1).
""",
),
Variable(
abivarname="elphflag@anaddb",
varset="anaddb",
vartype="integer",
topics=['PhononWidth_compulsory', 'ElPhonTransport_compulsory'],
dimensions="scalar",
defaultval=0,
mnemonics="ELectron-PHonon FLAG",
added_in_version="before_v9",
text=r"""
If **elphflag** is 1, anaddb performs an analysis of the electron-phonon coupling.
""",
),
Variable(
abivarname="elphsmear@anaddb",
varset="anaddb",
vartype="real",
topics=['ElPhonTransport_useful'],
dimensions="scalar",
defaultval="0.01 Hartree",
mnemonics="ELectron-PHonon SMEARing factor",
characteristics=['[[ENERGY]]'],
added_in_version="before_v9",
text=r"""
Smearing width for the Fermi surface integration (in Hartree by default).
""",
),
Variable(
abivarname="enunit@anaddb",
varset="anaddb",
vartype="integer",
topics=['Phonons_useful', 'PhononBands_useful'],
dimensions="scalar",
defaultval=0,
mnemonics="ENergy UNITs",
added_in_version="before_v9",
text=r"""
Give the energy for the phonon frequency output (in the output file, not in
the console log file, for which Hartree units are used).
* 0 --> Hartree and cm$^{-1}$;
* 1 --> meV and Thz;
* 2 --> Hartree, cm$^{-1}$, meV, Thz, and Kelvin.
""",
),
Variable(
abivarname="ep_b_max@anaddb",
varset="anaddb",
vartype="integer",
topics=['ElPhonTransport_useful'],
dimensions="scalar",
defaultval=0,
mnemonics="Electron Phonon integration Band MAXimum",
added_in_version="before_v9",
text=r"""
When set, and [[anaddb:telphint]] is equal to 2, this variable determines the
k-point integration weights which are used in the electron-phonon part of the
code. Instead of weighting according to a distance from the Fermi surface, an
equal weight is given to all k-points, for all bands between
[[anaddb:ep_b_min]] and **ep_b_max**.
""",
),
Variable(
abivarname="ep_b_min@anaddb",
varset="anaddb",
vartype="integer",
topics=['ElPhonTransport_useful'],
dimensions="scalar",
defaultval=0,
mnemonics="Electron Phonon integration Band MINimum",
added_in_version="before_v9",
text=r"""
As for [[anaddb:ep_b_max]], but **ep_b_min** is the lower bound on the band
integration, instead of the upper bound. See also [[anaddb:telphint]].
""",
),
Variable(
abivarname="ep_extrael@anaddb",
varset="anaddb",
vartype="real",
topics=['ElPhonTransport_useful'],
dimensions="scalar",
defaultval=0.0,
mnemonics="Electron-Phonon EXTRA ELectrons",
added_in_version="before_v9",
text=r"""
If non-zero, will fix artificially the number of extra electrons per unit cell
(positive for electron doping), according to a doped case. (e.g. for
semiconductors), in the electron-phonon case. This field can also be filled
with doping concentration, in the units of cm$^{-3}$ (negative for electron
doping). Note that **ep_extrael** and [[anaddb:elph_fermie]] should not be
used at the same time. ([[anaddb:elphflag]]=1).
""",
),
Variable(
abivarname="ep_int_gkk@anaddb",
varset="anaddb",
vartype="integer",
topics=['PhononWidth_useful'],
dimensions="scalar",
defaultval=0,
mnemonics="Electron-Phonon INTerpolation of GKK",
added_in_version="before_v9",
text=r"""
This flag determines whether the interpolation of the electron-phonon matrix
elements over the coarse k-grid is done ( **ep_int_gkk** 1) before summing
with appropriate Fermi Surface weights. In this way, the two integration
weights are treated symmetrically.
""",
),
Variable(
abivarname="ep_keepbands@anaddb",
varset="anaddb",
vartype="integer",
topics=['ElPhonTransport_basic'],
dimensions="scalar",
defaultval=0,
mnemonics="Electron-Phonon KEEP dependence on electron BANDS",
added_in_version="before_v9",
text=r"""
This flag determines whether the dependency of the electron-phonon matrix
elements on the electron band index is kept ( **ep_keepbands** 1), or whether
it is summed over immediately with appropriate Fermi Surface weights. For
transport calculations **ep_keepbands** must be set to 1.
""",
),
Variable(
abivarname="ep_nqpt@anaddb",
varset="anaddb",
vartype="integer",
topics=['ElPhonTransport_expert'],
dimensions="scalar",
defaultval=0,
mnemonics="Electron Phonon Number of Q PoinTs",
added_in_version="before_v9",
text=r"""
In case a non-uniform grid of q-points is being used, for direct calculation
of the electron-phonon quantities without interpolation, this specifies the
number of q-points to be found in the GKK file, independently of the normal anaddb input (ngqpt)
""",
),
Variable(
abivarname="ep_nspline@anaddb",
varset="anaddb",
vartype="integer",
topics=['ElPhonTransport_useful'],
dimensions="scalar",
defaultval=20,
mnemonics="Electron Phonon Number for SPLINE interpolation",
added_in_version="before_v9",
text=r"""
The scale factor for cubic spline interpolation, only used in the relaxation
time approximation ([[anaddb:ifltransport]]=3).
""",
),
Variable(
abivarname="ep_prt_yambo@anaddb",
varset="anaddb",
vartype="integer",
topics=['ElPhonInt_expert'],
dimensions="scalar",
defaultval=0,
mnemonics="Electron Phonon PRinTout YAMBO data",
added_in_version="before_v9",
text=r"""
For electron-phonon calculations, print out matrix elements for use by the yambo code.
""",
),
Variable(
abivarname="ep_qptlist@anaddb",
varset="anaddb",
vartype="real",
topics=['PhononWidth_useful'],
dimensions=[3, '[[anaddb:ep_nqpt]]'],
defaultval="(3*[[anaddb:ep_nqpt]])*0",
mnemonics="Electron Phonon Q PoinT LIST",
added_in_version="before_v9",
text=r"""
In case a non-uniform grid of q-points is being used, for direct calculation
of the electron-phonon quantities without interpolation, this specifies the
q-points to be found in the GKK file, independently of the normal anaddb input
(ngqpt), in reduced coordinates of the reciprocal space lattice.
""",
),
Variable(
abivarname="ep_scalprod@anaddb",
varset="anaddb",
vartype="integer",
topics=['PhononWidth_useful'],
dimensions="scalar",
defaultval=0,
mnemonics="DO SCALar PRODuct for gkk matrix elements",
added_in_version="before_v9",
text=r"""
The input variable **ep_scalprod** is a flag determining whether the scalar
product of the electron-phonon matrix elements (gkk) with the phonon
displacement vectors is done before or after interpolation. Doing so before (
**ep_scalprod** 1) makes phonon linewidths smoother but introduces an error,
as the interpolated phonons and gkk are not diagonalized in the same basis.
Doing so afterwards ( **ep_scalprod** 0) eliminates the diagonalization error,
but sometimes gives small spikes in the phonon linewidths near band crossings
or high symmetry points. I do not know why...
""",
),
Variable(
abivarname="flexoflag@anaddb",
varset="anaddb",
vartype="integer",
topics=['longwave_basic'],
dimensions="scalar",
defaultval=0,
mnemonics="FLEXOelectric tensor FLAG",
characteristics=['[[DEVELOP]]'],
added_in_version="v9",
text=r"""
Flag for calculation of bulk flexoelectrics tensors
* 0 --> No flexoelectric tensor is calculated.
* 1 --> All the contributions to the bulk flexoelectric tensor (clamped-ion, mixed and lattice-mediated) and
related quantities (piezoelectric and flexoelectric internal strain tensors and Lagrange elastic tensors)
are calculated. Requires a preceding generation of 2nd and 3rd order DDB with a [[lw_flexo]] = 1 run.
* 2 --> The clamped-ion flexoelectric tensor is printed. Requires a preceding generation of 2nd and 3rd order
DDB with a [[lw_flexo]] = 1 or 2 run.
* 3 --> The mixed flexoelectric tensor is calculated and printed along with the piezoelectric internal strain tensors.
Requires a preceding generation of 2nd and 3rd order DDB with a [[lw_flexo]] = 1 or 3 run.
* 4 --> The lattice-mediated flexoelectric tensor is calculated and printed along with the piezoelectric and flexoelectric
internal strain tensors and the Lagrange elastic tensors.
Requires a preceding generation of 2nd and 3rd order DDB with a [[lw_flexo]] = 1 or 4 run.
""",
),
Variable(
abivarname="freeze_displ@anaddb",
varset="anaddb",
vartype="real",
topics=['PhononBands_expert'],
dimensions="scalar",
defaultval=0.0,
mnemonics="FREEZE DISPLacement of phonons into supercells",
added_in_version="before_v9",
text=r"""
If different from zero, **freeze_displ** will be used as the amplitude of a
phonon displacement. For each q-point and mode in the [[anaddb:qph1l]] list, a
file will be created containing a supercell of atoms with the corresponding
phonon displacements frozen in. This is typically useful to freeze a soft
phonon mode, then let it relax in abinit afterwards.
**freeze_displ** is unitless, but has a physical meaning: it is related to the
Bose distribution $n_B$ and the frequency $\omega_{qs}$ of the phonon mode. At a given
temperature T, **freeze_displ** will give the mean square displacement of
atoms (along with the displacement vectors, which are in Bohr). In atomic
units **freeze_displ** = $\sqrt{(0.5 + n_B(\omega_{qs}/kT) / \omega_{qs}}$.
Typical values are 50-200 for a frequency of a few hundred cm$^{-1}$ and room temperature.
If all you want is to break the symmetry in the right direction, any reasonable value
(10-50) should be ok.
**WARNING**: this will create a _lot_ of files (3*natom*nph1l), so it should
be used with a small number [[anaddb:nph1l]] of q-points for interpolation.
""",
),
Variable(
abivarname="frmax@anaddb",
varset="anaddb",
vartype="real",
topics=['Phonons_useful'],
dimensions="scalar",
defaultval=10.0,
mnemonics="FRequency MAXimum",
added_in_version="before_v9",
text=r"""
Value of the largest frequency for the frequency-dependent dielectric tensor, in Hartree.
""",
),
Variable(
abivarname="frmin@anaddb",
varset="anaddb",
vartype="real",
topics=['Phonons_useful'],
dimensions="scalar",
defaultval=0.0,
mnemonics="FRequency MINimum",
added_in_version="before_v9",
text=r"""
Value of the lowest frequency for the frequency-dependent dielectric tensor, in Hartree.
""",
),
Variable(
abivarname="gkqwrite@anaddb",
varset="anaddb",
vartype="integer",
topics=['ElPhonInt_useful'],
dimensions="scalar",
defaultval=0,
mnemonics="GKk for input Q grid to be WRITtEn to disk",
added_in_version="before_v9",
text=r"""
Flag to write out the reciprocal space matrix elements to a disk file named
gkqfile. This reduces strongly the memory needed for an electron-phonon run.
""",
),
Variable(
abivarname="gruns_ddbs@anaddb",
varset="anaddb",
vartype="string",
topics=['Temperature_useful'],
dimensions=['[[anaddb:gruns_nddbs]]'],
defaultval="Empty",
mnemonics="GRUNeiSen DDBS",
added_in_version="before_v9",
text=r"""
List of strings with the paths of the DDB files used for the calculation of
the Gruneisen parameters. Each string must be enclosed by quotation marks. The
number of DDB files is defined by [[anaddb:gruns_nddbs]] (possible values are:
3,5,7,9) The DDB files correspond to phonon calculations performed at
different volumes (usually ± 1% of the equilibrium volume). The DDB files must
be ordered according to the volume of the unit cell (the DDB with smallest
volume comes first) and the volume increment must be constant. The code
computes the derivative of the dynamical matrix wrt the volume using central finite difference.
""",
),
Variable(
abivarname="gruns_nddbs@anaddb",
varset="anaddb",
vartype="integer",
topics=['Temperature_basic'],
dimensions="scalar",
defaultval=0,
mnemonics="GRUNeiSen Number of DDB files",
added_in_version="before_v9",
text=r"""
This variable defines the number of DDB files (read from [[anaddb:gruns_ddbs]])
used for the calculation of the Gruneisen parameters.
""",
),
Variable(
abivarname="iatfix@anaddb",
varset="anaddb",
vartype="integer",
topics=['ConstrainedPol_useful'],
dimensions=['[[anaddb:natfix]]'],
defaultval=0,
mnemonics="Indices of the AToms that are FIXed",
added_in_version="before_v9",
text=r"""
Indices of the atoms that are fixed during a structural relaxation at
constrained polarization. See [[anaddb:polflag]].
""",
),
Variable(
abivarname="iatprj_bs@anaddb",
varset="anaddb",
vartype="integer",
topics=['PhononBands_useful'],
dimensions=['[[anaddb:natprj_bs]]'],
defaultval="0*'[[anaddb:natprj_bs]]'",
mnemonics="Indices of the AToms for the PRoJection of the phonon Band Structure",
added_in_version="before_v9",
text=r"""
Indices of the atoms that are chosen for projection of the phonon
eigenvectors, giving a weighted phonon band structure file.
""",
),
Variable(
abivarname="ifcana@anaddb",
varset="anaddb",
vartype="integer",
topics=['PhononBands_useful'],
dimensions="scalar",
defaultval=0,
mnemonics="IFC ANAlysis",
added_in_version="before_v9",
text=r"""
* 0 --> no analysis of interatomic force constants;
* 1 --> analysis of interatomic force constants.
If the analysis is activated, one get the trace of the matrices between pairs
of atoms, if [[anaddb:dipdip]] is 1, get also the trace of the short-range and
electrostatic part, and calculate the ratio with the full matrix; then define
a local coordinate reference (using the next-neighbour coordinates), and
express the interatomic force constant matrix between pairs of atoms in that
local coordinate reference (the first vector is along the bond; the second
vector is along the perpendicular force exerted on the generic atom by a
longitudinal displacement of the neighbouring atom - in case it does not
vanish; the third vector is perpendicular to the two other) also calculate
ratios with respect to the longitudinal force constant ( the (1,1) element of
the matrix in local coordinates).
""",
),
Variable(
abivarname="ifcflag@anaddb",
varset="anaddb",
vartype="integer",
topics=['PhononBands_compulsory'],
dimensions="scalar",
defaultval=0,
mnemonics="Interatomic Force Constants FLAG",
added_in_version="before_v9",
text=r"""
* 0 --> do all calculations directly from the DDB, without the use of the interatomic force constant.
* 1 --> calculate and use the interatomic force constants for interpolating the phonon spectrum
and dynamical matrices at every q wavevector, and eventually analyse the interatomic force constants,
according to the informations given by [[anaddb:atifc]], [[anaddb:dipdip]], [[anaddb:ifcana]], [[anaddb:ifcout]],
[[anaddb:natifc]], [[anaddb:nsphere]], [[anaddb:rifcsph]]
More detailed explanations: if the dynamical matrices are known on a regular
set of wavevectors, they can be used to get the interatomic forces, which are
simply their Fourier transform. When non-analyticities can been removed by the
use of effective charge at Gamma (option offered by putting [[anaddb:dipdip]] to 1),
the interatomic forces are known to decay rather fast (in real space).
The interatomic forces generated from a small set of dynamical matrices could
be of sufficient range to allow the remaining interatomic forces to be
neglected. This gives a practical way to interpolate the content of a small
set of dynamical matrices, because dynamical matrices can everywhere be
generated starting from this set of interatomic force constants. It is
suggested to always use **ifcflag** =1. The **ifcflag** =0 option is available
for checking purpose, and if there is not enough information in the DDB.
""",
),
Variable(
abivarname="ifcout@anaddb",
varset="anaddb",
vartype="integer",
topics=['PhononBands_useful'],
dimensions="scalar",
defaultval=0,
mnemonics="IFC OUTput",
added_in_version="before_v9",
text=r"""
For each atom in the list [[anaddb:atifc]] (generic atoms), **ifcout** give
the number of neighbouring atoms for which the ifc's will be output (written)
and eventually analysed. The neighbouring atoms are selected by decreasing
distance with respect to the generic atom.
""",
),
Variable(
abivarname="ifltransport@anaddb",
varset="anaddb",
vartype="integer",
topics=['ElPhonTransport_basic'],
dimensions="scalar",
defaultval=0,
mnemonics="IFLag for TRANSPORT",
added_in_version="before_v9",
text=r"""
if **ifltransport** =1 (LOVA) or **ifltransport** =2 (non-LOVA), anaddb calculates the
transport properties: electrical and thermal resistivities from electron-
phonon interactions in the variational approach. If **ifltransport** =3, anaddb
calculates the k-dependent relaxation time. (needs [[anaddb:elphflag]] = 1)
""",
),
Variable(
abivarname="instrflag@anaddb",
varset="anaddb",
vartype="integer",
topics=['Elastic_basic'],
dimensions="scalar",
defaultval=0,
mnemonics="INternal STRain FLAG",
added_in_version="before_v9",
text=r"""
Internal strain tensor flag.
* 0 --> No internal-strain calculation.
* 1 --> Print out both force-response and displacement-response internal-strain tensor.
Requirements for preceding response-function DDB generation run: Strain and full atomic-displacement responses.
Set [[rfstrs]] = 1, 2, or 3 (preferably 3). Set [[rfatpol]] and [[rfdir]] to do a full calculation of phonons at Q=0.
""",
),
Variable(
abivarname="istrfix@anaddb",
varset="anaddb",
vartype="integer",
topics=['ConstrainedPol_useful'],
dimensions=['[[anaddb:nstrfix]]'],
defaultval=0,
mnemonics="Index of STRain FIXed",
added_in_version="before_v9",
text=r"""
Indices of the elements of the strain tensor that are fixed during a
structural relaxation at constrained polarisation:
* 0 --> No elastic or compliance tensor will be calculated.
* 1 --> Only clamped-ion elastic and compliance tensors will be calculated. Requirements for
preceding response-function DDB generation run: Strain perturbation. Set [[rfstrs]] to 1, 2, or 3.
Note that [[rfstrs]]>=3 is recommended so that responses to both uniaxial and shear strains will be computed.
* 2 --> Both relaxed- and clamped-ion elastic and compliance tensor will be calculated, but only
the relaxed-ion quantities will be printed. The input variable [[anaddb:instrflag]] should also be set to 1,
because the internal-strain tensor is needed to compute the relaxed-ion corrections.
Requirements for preceding response-function DDB generation run: Strain and atomic-displacement responses at Q=0.
Set [[rfstrs]] = 1, 2, or 3 (preferably 3). Set [[rfatpol]] and [[rfdir]] to do a full calculation
of phonons at Q=0 (needed because the inverse of force-constant tensor is required).
* 3 --> Both relaxed and clamped-ion elastic and compliance tensors will be printed out.
The input variable [[anaddb:instrflag]] should also be set to 1.
Requirements for preceding response-function DDB generation run: Same as for [[anaddb:elaflag]]=2.
* 4 --> Calculate the elastic and compliance tensors (relaxed ion) at fixed displacement field,
the relaxed-ion tensors at fixed electric field will be printed out too, for comparison.
When [[anaddb:elaflag]]=4, we need the information of internal strain and relaxed-ion dielectric tensor
to build the whole tensor, so we need to set [[anaddb:instrflag]]=1 and [[anaddb:dieflag]]=3 or 4.
* 5 --> Calculate the relaxed ion elastic and compliance tensors, considering the stress left inside cell.
At the same time, bare relaxed ion tensors will still be printed out for comparison.
In this calculation, stress tensor is needed to compute the correction term, so one supposed
to merge the first order derivative data base (DDB file) with the second order derivative data base (DDB file)
into a new DDB file, which can contain both information. And the program will also check for the users.
See [[anaddb:polflag]].
""",
),
Variable(
abivarname="kptrlatt@anaddb",
varset="anaddb",
vartype="integer",
topics=['ElPhonTransport_basic', 'PhononWidth_basic'],
dimensions=[3, 3],
defaultval="9*0",
mnemonics="K PoinT Reciprocal LATTice",